/******/ (function(modules) { // webpackBootstrap /******/ // install a JSONP callback for chunk loading /******/ function webpackJsonpCallback(data) { /******/ var chunkIds = data[0]; /******/ var moreModules = data[1]; /******/ var executeModules = data[2]; /******/ /******/ // add "moreModules" to the modules object, /******/ // then flag all "chunkIds" as loaded and fire callback /******/ var moduleId, chunkId, i = 0, resolves = []; /******/ for(;i < chunkIds.length; i++) { /******/ chunkId = chunkIds[i]; /******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) { /******/ resolves.push(installedChunks[chunkId][0]); /******/ } /******/ installedChunks[chunkId] = 0; /******/ } /******/ for(moduleId in moreModules) { /******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) { /******/ modules[moduleId] = moreModules[moduleId]; /******/ } /******/ } /******/ if(parentJsonpFunction) parentJsonpFunction(data); /******/ /******/ while(resolves.length) { /******/ resolves.shift()(); /******/ } /******/ /******/ // add entry modules from loaded chunk to deferred list /******/ deferredModules.push.apply(deferredModules, executeModules || []); /******/ /******/ // run deferred modules when all chunks ready /******/ return checkDeferredModules(); /******/ }; /******/ function checkDeferredModules() { /******/ var result; /******/ for(var i = 0; i < deferredModules.length; i++) { /******/ var deferredModule = deferredModules[i]; /******/ var fulfilled = true; /******/ for(var j = 1; j < deferredModule.length; j++) { /******/ var depId = deferredModule[j]; /******/ if(installedChunks[depId] !== 0) fulfilled = false; /******/ } /******/ if(fulfilled) { /******/ deferredModules.splice(i--, 1); /******/ result = __webpack_require__(__webpack_require__.s = deferredModule[0]); /******/ } /******/ } /******/ /******/ return result; /******/ } /******/ /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // object to store loaded and loading chunks /******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched /******/ // Promise = chunk loading, 0 = chunk loaded /******/ var installedChunks = { /******/ "pages_common": 0 /******/ }; /******/ /******/ var deferredModules = []; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || []; /******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray); /******/ jsonpArray.push = webpackJsonpCallback; /******/ jsonpArray = jsonpArray.slice(); /******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]); /******/ var parentJsonpFunction = oldJsonpFunction; /******/ /******/ /******/ // run deferred modules from other chunks /******/ checkDeferredModules(); /******/ }) /************************************************************************/ /******/ ({ /***/ "./node_modules/@babel/runtime/helpers/assertThisInitialized.js": /***/ (function(module, exports) { function _assertThisInitialized(e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; } module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/classCallCheck.js": /***/ (function(module, exports) { function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); } module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/createClass.js": /***/ (function(module, exports, __webpack_require__) { var toPropertyKey = __webpack_require__("./node_modules/@babel/runtime/helpers/toPropertyKey.js"); function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o); } } function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; } module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/extends.js": /***/ (function(module, exports) { function _extends() { return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _extends.apply(null, arguments); } module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/getPrototypeOf.js": /***/ (function(module, exports) { function _getPrototypeOf(t) { return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { return t.__proto__ || Object.getPrototypeOf(t); }, module.exports.__esModule = true, module.exports["default"] = module.exports, _getPrototypeOf(t); } module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/inherits.js": /***/ (function(module, exports, __webpack_require__) { var setPrototypeOf = __webpack_require__("./node_modules/@babel/runtime/helpers/setPrototypeOf.js"); function _inherits(t, e) { if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && setPrototypeOf(t, e); } module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/objectWithoutProperties.js": /***/ (function(module, exports, __webpack_require__) { var objectWithoutPropertiesLoose = __webpack_require__("./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"); function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js": /***/ (function(module, exports) { function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js": /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__("./node_modules/@babel/runtime/helpers/typeof.js")["default"]; var assertThisInitialized = __webpack_require__("./node_modules/@babel/runtime/helpers/assertThisInitialized.js"); function _possibleConstructorReturn(t, e) { if (e && ("object" == _typeof(e) || "function" == typeof e)) return e; if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); return assertThisInitialized(t); } module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/setPrototypeOf.js": /***/ (function(module, exports) { function _setPrototypeOf(t, e) { return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _setPrototypeOf(t, e); } module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/toPrimitive.js": /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__("./node_modules/@babel/runtime/helpers/typeof.js")["default"]; function toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/toPropertyKey.js": /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__("./node_modules/@babel/runtime/helpers/typeof.js")["default"]; var toPrimitive = __webpack_require__("./node_modules/@babel/runtime/helpers/toPrimitive.js"); function toPropertyKey(t) { var i = toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@babel/runtime/helpers/typeof.js": /***/ (function(module, exports) { function _typeof(o) { "@babel/helpers - typeof"; return module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, module.exports.__esModule = true, module.exports["default"] = module.exports, _typeof(o); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /***/ "./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // CONCATENATED MODULE: ./node_modules/@emotion/memoize/dist/memoize.browser.esm.js function memoize(fn) { var cache = {}; return function (arg) { if (cache[arg] === undefined) cache[arg] = fn(arg); return cache[arg]; }; } /* harmony default export */ var memoize_browser_esm = (memoize); // CONCATENATED MODULE: ./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23 var index = memoize_browser_esm(function (prop) { return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 /* o */ && prop.charCodeAt(1) === 110 /* n */ && prop.charCodeAt(2) < 91; } /* Z+1 */ ); /* harmony default export */ var is_prop_valid_browser_esm = __webpack_exports__["a"] = (index); /***/ }), /***/ "./node_modules/@emotion/unitless/dist/unitless.browser.esm.js": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var unitlessKeys = { animationIterationCount: 1, borderImageOutset: 1, borderImageSlice: 1, borderImageWidth: 1, boxFlex: 1, boxFlexGroup: 1, boxOrdinalGroup: 1, columnCount: 1, columns: 1, flex: 1, flexGrow: 1, flexPositive: 1, flexShrink: 1, flexNegative: 1, flexOrder: 1, gridRow: 1, gridRowEnd: 1, gridRowSpan: 1, gridRowStart: 1, gridColumn: 1, gridColumnEnd: 1, gridColumnSpan: 1, gridColumnStart: 1, msGridRow: 1, msGridRowSpan: 1, msGridColumn: 1, msGridColumnSpan: 1, fontWeight: 1, lineHeight: 1, opacity: 1, order: 1, orphans: 1, tabSize: 1, widows: 1, zIndex: 1, zoom: 1, WebkitLineClamp: 1, // SVG-related properties fillOpacity: 1, floodOpacity: 1, stopOpacity: 1, strokeDasharray: 1, strokeDashoffset: 1, strokeMiterlimit: 1, strokeOpacity: 1, strokeWidth: 1 }; /* harmony default export */ __webpack_exports__["a"] = (unitlessKeys); /***/ }), /***/ "./node_modules/@splunk/charting-utils/Formatter.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 51); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 1: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /***/ 51: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Formatter(renderer) { this.renderer = renderer; this.ELLIPSIS = '...'; } Formatter.prototype = { ellipsize: function ellipsize(str, maxWidthInPixels, fontSize, css, ellipsisPlacement) { if ((0, _underscore2.default)(str).isArray()) { str = str.join(','); } str = _jquery2.default.trim(str); var strLen = str.length; if (!str || str === '') { return ''; } if (strLen <= 3 || !fontSize || isNaN(fontSize) || fontSize <= 0) { return str; } if (!maxWidthInPixels || isNaN(maxWidthInPixels) || maxWidthInPixels <= 0) { return this.ELLIPSIS; } var strWidth = this._predictLineWidth(str, fontSize, css); var excessWidth = strWidth - maxWidthInPixels; if (excessWidth > 0) { var ellipsisWidth = this._predictLineWidth(this.ELLIPSIS, fontSize, css); switch (ellipsisPlacement) { case 'end': return this.trimStringToWidth(str, maxWidthInPixels - ellipsisWidth, fontSize, css) + '...'; case 'start': return '...' + this.reverseString(this.trimStringToWidth(this.reverseString(str), maxWidthInPixels - ellipsisWidth, fontSize, css)); default: { // default to middle ellipsization var availableWidthPerSide = (maxWidthInPixels - ellipsisWidth) / 2; var leftSide = this.trimStringToWidth(str, availableWidthPerSide, fontSize, css); var rightSide = this.reverseString(this.trimStringToWidth(this.reverseString(str), availableWidthPerSide, fontSize, css)); return leftSide + '...' + rightSide; } } } else { // no need to ellipsize return str; } }, // NOTE: it is up to caller to test that the entire string does not already fit // even if it does, this method will do log N work and may or may not truncate the last character trimStringToWidth: function trimStringToWidth(text, width, fontSize, css) { var that = this; var binaryFindEndIndex = function binaryFindEndIndex(start, end) { var testIndex = void 0; while (end > start + 1) { testIndex = Math.floor((start + end) / 2); if (that.predictTextWidth(text.substr(0, testIndex), fontSize, css) > width) { end = testIndex; } else { start = testIndex; } } return start; }; var endIndex = binaryFindEndIndex(0, text.length); return text.substr(0, endIndex); }, reverseString: function reverseString(str) { return str.split('').reverse().join(''); }, // Returns width of string in px units predictTextWidth: function predictTextWidth(str, fontSize, css) { if ((0, _underscore2.default)(str).isArray()) { str = str.join(','); } if (!str || str === '' || !fontSize || isNaN(fontSize)) { return 0; } // split lines by break tag, trimming leading and trailing whitespaces var multilineArray = str.split(/\s*\s*/); var multilineArrayLen = multilineArray.length; if (multilineArrayLen > 1) { // if multiple lines are passed (
||
||
) then return width of widest line var maxWidth = 0; for (var i = 0; i < multilineArrayLen; i++) { if (multilineArray[i] && multilineArray[i] !== '') { var thisLineWidth = this._predictLineWidth(multilineArray[i], fontSize, css); if (thisLineWidth > maxWidth) { maxWidth = thisLineWidth; } } } return maxWidth; } // single line string var width = this._predictLineWidth(_jquery2.default.trim(str), fontSize, css); return width; }, _predictLineWidth: function _predictLineWidth(str, fontSize, css) { if (!str || !fontSize) { return 0; } var bBox = this.getTextBBox(str, fontSize, css); return bBox ? bBox.width : 0; }, predictTextHeight: function predictTextHeight(text, fontSize, css) { if ((0, _underscore2.default)(text).isArray()) { text = text.join(','); } if (!fontSize || !text) { return 0; } var bBox = this.getTextBBox(text, fontSize, css); return bBox ? bBox.height : 0; }, getTextBBox: function getTextBBox(text, fontSize, css) { // fontSize is required; css is any other styling that determines size (italics, bold, etc.) css = _jquery2.default.extend(css, { fontSize: fontSize + 'px' }); if (isNaN(parseFloat(fontSize, 10))) { return undefined; } if (this.textPredicter) { this.textPredicter.destroy(); } this.textPredicter = this.renderer.text(text, 0, 0).attr({ visibility: 'hidden' }).css(css).add(); return this.textPredicter.getBBox(); }, adjustLabels: function adjustLabels(originalLabels, width, minFont, maxFont, ellipsisMode) { var i = void 0; var fontSize = void 0; var shouldEllipsize = void 0; var labels = _jquery2.default.extend(true, [], originalLabels); var maxWidths = this.getMaxWidthForFontRange(labels, minFont, maxFont); // adjust font and try to fit longest if (maxWidths[maxFont] <= width) { shouldEllipsize = false; fontSize = maxFont; } else { shouldEllipsize = true; for (fontSize = maxFont - 1; fontSize > minFont; fontSize--) { if (maxWidths[fontSize] <= width) { shouldEllipsize = false; break; } } } if (shouldEllipsize && ellipsisMode !== 'none') { for (i = 0; i < labels.length; i++) { labels[i] = this.ellipsize(labels[i], width, fontSize, {}, ellipsisMode); } } return { labels: labels, fontSize: fontSize, areEllipsized: shouldEllipsize, longestWidth: maxWidths[fontSize] }; }, getMaxWidthForFontRange: function getMaxWidthForFontRange(labels, minFont, maxFont) { var longestLabelIndex = void 0; var fontSizeToWidthMap = {}; // find the longest label fontSizeToWidthMap[minFont] = 0; for (var i = 0; i < labels.length; i++) { var labelLength = this.predictTextWidth(labels[i] || '', minFont); if (labelLength > fontSizeToWidthMap[minFont]) { longestLabelIndex = i; fontSizeToWidthMap[minFont] = labelLength; } } // fill in the widths for the rest of the font sizes for (var fontSize = minFont + 1; fontSize <= maxFont; fontSize++) { fontSizeToWidthMap[fontSize] = this.predictTextWidth(labels[longestLabelIndex] || '', fontSize); } return fontSizeToWidthMap; }, bBoxesOverlap: function bBoxesOverlap(bBox1, bBox2, marginX, marginY) { marginX = marginX || 0; marginY = marginY || 0; var box1Left = bBox1.x - marginX; var box2Left = bBox2.x - marginX; var box1Right = bBox1.x + bBox1.width + 2 * marginX; var box2Right = bBox2.x + bBox2.width + 2 * marginX; var box1Top = bBox1.y - marginY; var box2Top = bBox2.y - marginY; var box1Bottom = bBox1.y + bBox1.height + 2 * marginY; var box2Bottom = bBox2.y + bBox2.height + 2 * marginY; return box1Left < box2Right && box1Right > box2Left && box1Top < box2Bottom && box1Bottom > box2Top; }, destroy: function destroy() { if (this.textPredicter) { this.textPredicter.destroy(); this.textPredicter = false; } } }; exports.default = Formatter; module.exports = exports['default']; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/async.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 52); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 1: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /***/ 52: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable func-names */ var asyncUtils = {}; asyncUtils.CANCELLED = 'cancelled'; // http://www.paulirish.com/2011/requestanimationframe-for-smart-animating asyncUtils.requestFrame = (0, _underscore2.default)(function () { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function (callback) { window.setTimeout(callback, 50); }; }()).bind(window); asyncUtils.cancelFrame = (0, _underscore2.default)(function () { return window.cancelAnimationFrame || window.mozCancelAnimationFrame || // SPL-76580, can't reference window.clearTimeout directly here, IE 7 and 8 might not have defined it yet function (id) { window.clearTimeout(id); }; }()).bind(window); asyncUtils.asyncEach = function (list, callback) { var pendingOperation = void 0; var cancelled = false; var listLength = list.length; var dfd = _jquery2.default.Deferred(); var callOnceAndWait = function callOnceAndWait(i) { // the cancel() method will try to de-queue the frame, but this is not always supported // so also logically cancel the work just to be safe if (cancelled) { return; } callback(list[i], i); // check if we just processed the last item in the list // if so, we're done, if not, queue up the next one if (i < listLength - 1) { pendingOperation = asyncUtils.requestFrame(function () { callOnceAndWait(i + 1); }); } else { dfd.resolve(); } }; dfd.cancel = function () { cancelled = true; if (pendingOperation) { asyncUtils.cancelFrame(pendingOperation); dfd.reject(asyncUtils.CANCELLED); } }; callOnceAndWait(0); return dfd; }; exports.default = asyncUtils; module.exports = exports['default']; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/color.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 32); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 1: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /***/ 32: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.interpolateColors = exports.getComputedOpacity = exports.getLuminance = exports.addAlphaToColor = exports.hexFromColor = exports.normalizeColor = exports.stripOutAlpha = exports.colorFromHex = undefined; var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // converts a hex number to its css-friendly counterpart, with optional alpha transparency field // returns null if the input is cannot be parsed to a valid number or if the number is out of range /* eslint-disable no-bitwise */ var colorFromHex = exports.colorFromHex = function colorFromHex(hexNum, alpha) { if (typeof hexNum !== 'number') { hexNum = parseInt(hexNum, 16); } if ((0, _underscore2.default)(hexNum).isNaN() || hexNum < 0x000000 || hexNum > 0xffffff) { return null; } var r = (hexNum & 0xff0000) >> 16; var g = (hexNum & 0x00ff00) >> 8; var b = hexNum & 0x0000ff; return alpha === undefined ? 'rgb(' + r + ',' + g + ',' + b + ')' : 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')'; }; // converts an rgba value to rgb by stripping out the alpha. willl return the unchanged parameter // if an rgb value is passed rather than rgba var stripOutAlpha = exports.stripOutAlpha = function stripOutAlpha(color) { var rgb = color.split(','); var thirdChar = rgb[0].charAt(3); if (thirdChar === 'a') { rgb[0] = rgb[0].replace('rgba', 'rgb'); rgb[rgb.length - 1] = ')'; rgb = rgb.join(); rgb = rgb.replace(',)', ')'); return rgb; } return color; }; /** * Take an RGB value and convert to HEX equivalent. * * @param {String} rgb A RGB value following rgb(XXX, XXX, XXX) convention. * @type String * @return A HEX equivalent for a given RGB value with a leading '#' character. */ var getHEX = function getHEX(rgb) { var parts = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); var hex = (parts[1] << 16 | parts[2] << 8 | parts[3]).toString(16); return '#' + Array(6 - hex.length).concat([hex]).toString().replace(/,/g, 0); }; /** * Take an arbitrary RGB or HEX in long or shorthand notation and normalize to standard long HEX form with leading '#' character. * * @param {String} color A RGB or HEX color value in long or short notation. * @type String or null * @return A fully qualified 6 character hexadecimal value or with leading '#' character or null if it can't be processed. */ var normalizeColor = exports.normalizeColor = function normalizeColor(color) { var normalizedColor = null; if (typeof color === 'string' && color.charAt(0) === '#') { if (color.length === 4) { normalizedColor = color + color.charAt(1) + color.charAt(2) + color.charAt(3); } else { normalizedColor = color; } } else { try { normalizedColor = getHEX(color); } catch (e) {} // eslint-disable-line no-empty } return normalizedColor; }; // coverts a color string in either hex (must be long form) or rgb format into its corresponding hex number // returns zero if the color string can't be parsed as either format // TODO: either add support for short form or emit an error var hexFromColor = exports.hexFromColor = function hexFromColor(color) { var normalizedColor = normalizeColor(color); return normalizedColor ? parseInt(normalizedColor.replace('#', '0x'), 16) : 0; }; // given a color string (in long-form hex or rgb form) or a hex number, // formats the color as an rgba string with the given alpha transparency // TODO: currently fails somewhat silently if an un-parseable or out-of-range input is given var addAlphaToColor = exports.addAlphaToColor = function addAlphaToColor(color, alpha) { var colorAsHex = typeof color === 'number' ? color : hexFromColor(color); return colorFromHex(colorAsHex, alpha); }; // calculate the luminance of a color based on its hex value // returns zero if the input is cannot be parsed to a valid number or if the number is out of range // equation for luminance found at http://en.wikipedia.org/wiki/Luma_(video) var getLuminance = exports.getLuminance = function getLuminance(hexNum) { if (typeof hexNum !== 'number') { hexNum = parseInt(hexNum, 16); } if (isNaN(hexNum) || hexNum < 0x000000 || hexNum > 0xffffff) { return 0; } var r = (hexNum & 0xff0000) >> 16; var g = (hexNum & 0x00ff00) >> 8; var b = hexNum & 0x0000ff; return Math.round(0.2126 * r + 0.7152 * g + 0.0722 * b); }; // compute the user-visible fill opacity of an SVG element // an opacity defined as part of the 'fill' color with rgba(...) syntax will take precedence over the 'fill-opacity' var getComputedOpacity = exports.getComputedOpacity = function getComputedOpacity(element) { var fill = _jquery2.default.trim(element.attr('fill')); var enforceValidOpacity = function enforceValidOpacity(opacityStr) { var parsed = parseFloat(opacityStr); return parsed >= 0 && parsed <= 1 ? parsed : 1; }; if (!/^rgba/.test(fill)) { return enforceValidOpacity(element.attr('fill-opacity')); } var rgba = fill.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)$/); return rgba && rgba.length > 4 ? enforceValidOpacity(rgba[4]) : 1; }; var interpolateColors = exports.interpolateColors = function interpolateColors(color1, color2, p) { var r1 = color1 >> 16 & 0xff; var g1 = color1 >> 8 & 0xff; var b1 = color1 & 0xff; var r2 = color2 >> 16 & 0xff; var g2 = color2 >> 8 & 0xff; var b2 = color2 & 0xff; var rInterp = r1 + Math.round((r2 - r1) * p); var gInterp = g1 + Math.round((g2 - g1) * p); var bInterp = b1 + Math.round((b2 - b1) * p); return rInterp << 16 | gInterp << 8 | bInterp; }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/dom.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 53); /******/ }) /************************************************************************/ /******/ ({ /***/ 1: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /***/ 53: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.showTickLabel = exports.hideTickLabel = exports.setLegendItemText = undefined; var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // a cross-renderer way to update a legend item's text content var setLegendItemText = exports.setLegendItemText = function setLegendItemText(legendItem, text) { if (legendItem.attr('text') === text) { return; } legendItem.added = true; // the SVG renderer needs this legendItem.attr({ text: text }); }; var hideTickLabel = exports.hideTickLabel = function hideTickLabel(tick) { var label = tick.label; var nodeName = tick.label.element.nodeName.toLowerCase(); if (nodeName === 'text') { label.hide(); } else { (0, _jquery2.default)(label.element).css('display', 'none'); } }; var showTickLabel = exports.showTickLabel = function showTickLabel(tick) { var label = tick.label; var nodeName = tick.label.element.nodeName.toLowerCase(); if (nodeName === 'text') { label.show(); } else { (0, _jquery2.default)(label.element).css('display', ''); } }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/field.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 54); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /* 1 */, /* 2 */ /***/ (function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func : Function('return this')(); if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(9)(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 5 */ /***/ (function(module, exports) { var core = module.exports = { version: '2.6.12' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(7); var createDesc = __webpack_require__(26); module.exports = __webpack_require__(4) ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(13); var IE8_DOM_DEFINE = __webpack_require__(34); var toPrimitive = __webpack_require__(35); var dP = Object.defineProperty; exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return dP(O, P, Attributes); } catch (e) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { var store = __webpack_require__(28)('wks'); var uid = __webpack_require__(21); var Symbol = __webpack_require__(2).Symbol; var USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function (name) { return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; /***/ }), /* 9 */ /***/ (function(module, exports) { module.exports = function (exec) { try { return !!exec(); } catch (e) { return true; } }; /***/ }), /* 10 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(2); var core = __webpack_require__(5); var ctx = __webpack_require__(12); var hide = __webpack_require__(6); var has = __webpack_require__(10); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { var IS_FORCED = type & $export.F; var IS_GLOBAL = type & $export.G; var IS_STATIC = type & $export.S; var IS_PROTO = type & $export.P; var IS_BIND = type & $export.B; var IS_WRAP = type & $export.W; var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); var expProto = exports[PROTOTYPE]; var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; var key, own, out; if (IS_GLOBAL) source = name; for (key in source) { // contains in native own = !IS_FORCED && target && target[key] !== undefined; if (own && has(exports, key)) continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function (C) { var F = function (a, b, c) { if (this instanceof C) { switch (arguments.length) { case 0: return new C(); case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if (IS_PROTO) { (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(24); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(3); module.exports = function (it) { if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /* 14 */ /***/ (function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil; var floor = Math.floor; module.exports = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }), /* 15 */ /***/ (function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(27); var defined = __webpack_require__(15); module.exports = function (it) { return IObject(defined(it)); }; /***/ }), /* 17 */ /***/ (function(module, exports) { module.exports = {}; /***/ }), /* 18 */ /***/ (function(module, exports) { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(14); var min = Math.min; module.exports = function (it) { return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(28)('keys'); var uid = __webpack_require__(21); module.exports = function (key) { return shared[key] || (shared[key] = uid(key)); }; /***/ }), /* 21 */ /***/ (function(module, exports) { var id = 0; var px = Math.random(); module.exports = function (key) { return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }), /* 22 */, /* 23 */ /***/ (function(module, exports) { module.exports = true; /***/ }), /* 24 */ /***/ (function(module, exports) { module.exports = function (it) { if (typeof it != 'function') throw TypeError(it + ' is not a function!'); return it; }; /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(3); var document = __webpack_require__(2).document; // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); module.exports = function (it) { return is ? document.createElement(it) : {}; }; /***/ }), /* 26 */ /***/ (function(module, exports) { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(18); // eslint-disable-next-line no-prototype-builtins module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(5); var global = __webpack_require__(2); var SHARED = '__core-js_shared__'; var store = global[SHARED] || (global[SHARED] = {}); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: core.version, mode: __webpack_require__(23) ? 'pure' : 'global', copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); /***/ }), /* 29 */ /***/ (function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }), /* 30 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(15); module.exports = function (it) { return Object(defined(it)); }; /***/ }), /* 31 */ /***/ (function(module, exports, __webpack_require__) { var ctx = __webpack_require__(12); var call = __webpack_require__(70); var isArrayIter = __webpack_require__(71); var anObject = __webpack_require__(13); var toLength = __webpack_require__(19); var getIterFn = __webpack_require__(72); var BREAK = {}; var RETURN = {}; var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); var f = ctx(fn, that, entries ? 2 : 1); var index = 0; var length, step, iterator, result; if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); // fast case for arrays with default iterator if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); if (result === BREAK || result === RETURN) return result; } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { result = call(iterator, f, step.value, entries); if (result === BREAK || result === RETURN) return result; } }; exports.BREAK = BREAK; exports.RETURN = RETURN; /***/ }), /* 32 */, /* 33 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var LIBRARY = __webpack_require__(23); var $export = __webpack_require__(11); var redefine = __webpack_require__(60); var hide = __webpack_require__(6); var Iterators = __webpack_require__(17); var $iterCreate = __webpack_require__(61); var setToStringTag = __webpack_require__(40); var getPrototypeOf = __webpack_require__(64); var ITERATOR = __webpack_require__(8)('iterator'); var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` var FF_ITERATOR = '@@iterator'; var KEYS = 'keys'; var VALUES = 'values'; var returnThis = function () { return this; }; module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { $iterCreate(Constructor, NAME, next); var getMethod = function (kind) { if (!BUGGY && kind in proto) return proto[kind]; switch (kind) { case KEYS: return function keys() { return new Constructor(this, kind); }; case VALUES: return function values() { return new Constructor(this, kind); }; } return function entries() { return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator'; var DEF_VALUES = DEFAULT == VALUES; var VALUES_BUG = false; var proto = Base.prototype; var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; var $default = $native || getMethod(DEFAULT); var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; var methods, key, IteratorPrototype; // Fix native if ($anyNative) { IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEF_VALUES && $native && $native.name !== VALUES) { VALUES_BUG = true; $default = function values() { return $native.call(this); }; } // Define iterator if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if (DEFAULT) { methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: $entries }; if (FORCED) for (key in methods) { if (!(key in proto)) redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; /***/ }), /* 34 */ /***/ (function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(4) && !__webpack_require__(9)(function () { return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(3); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (it, S) { if (!isObject(it)) return it; var fn, val; if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(37); var enumBugKeys = __webpack_require__(29); module.exports = Object.keys || function keys(O) { return $keys(O, enumBugKeys); }; /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(10); var toIObject = __webpack_require__(16); var arrayIndexOf = __webpack_require__(38)(false); var IE_PROTO = __webpack_require__(20)('IE_PROTO'); module.exports = function (object, names) { var O = toIObject(object); var i = 0; var result = []; var key; for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }), /* 38 */ /***/ (function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(16); var toLength = __webpack_require__(19); var toAbsoluteIndex = __webpack_require__(39); module.exports = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) if (IS_INCLUDES || index in O) { if (O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }), /* 39 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(14); var max = Math.max; var min = Math.min; module.exports = function (index, length) { index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }), /* 40 */ /***/ (function(module, exports, __webpack_require__) { var def = __webpack_require__(7).f; var has = __webpack_require__(10); var TAG = __webpack_require__(8)('toStringTag'); module.exports = function (it, tag, stat) { if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); }; /***/ }), /* 41 */, /* 42 */, /* 43 */, /* 44 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = __webpack_require__(13); var dPs = __webpack_require__(62); var enumBugKeys = __webpack_require__(29); var IE_PROTO = __webpack_require__(20)('IE_PROTO'); var Empty = function () { /* empty */ }; var PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function () { // Thrash, waste and sodomy: IE GC bug var iframe = __webpack_require__(25)('iframe'); var i = enumBugKeys.length; var lt = '<'; var gt = '>'; var iframeDocument; iframe.style.display = 'none'; __webpack_require__(63).appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; return createDict(); }; module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { Empty[PROTOTYPE] = anObject(O); result = new Empty(); Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : dPs(result, Properties); }; /***/ }), /* 45 */ /***/ (function(module, exports) { module.exports = function (done, value) { return { value: value, done: !!done }; }; /***/ }), /* 46 */ /***/ (function(module, exports, __webpack_require__) { var hide = __webpack_require__(6); module.exports = function (target, src, safe) { for (var key in src) { if (safe && target[key]) target[key] = src[key]; else hide(target, key, src[key]); } return target; }; /***/ }), /* 47 */ /***/ (function(module, exports) { module.exports = function (it, Constructor, name, forbiddenField) { if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { throw TypeError(name + ': incorrect invocation!'); } return it; }; /***/ }), /* 48 */ /***/ (function(module, exports, __webpack_require__) { // getting tag from 19.1.3.6 Object.prototype.toString() var cof = __webpack_require__(18); var TAG = __webpack_require__(8)('toStringTag'); // ES3 wrong here var ARG = cof(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (e) { /* empty */ } }; module.exports = function (it) { var O, T, B; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T // builtinTag case : ARG ? cof(O) // ES3 arguments fallback : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; }; /***/ }), /* 49 */ /***/ (function(module, exports, __webpack_require__) { var META = __webpack_require__(21)('meta'); var isObject = __webpack_require__(3); var has = __webpack_require__(10); var setDesc = __webpack_require__(7).f; var id = 0; var isExtensible = Object.isExtensible || function () { return true; }; var FREEZE = !__webpack_require__(9)(function () { return isExtensible(Object.preventExtensions({})); }); var setMeta = function (it) { setDesc(it, META, { value: { i: 'O' + ++id, // object ID w: {} // weak collections IDs } }); }; var fastKey = function (it, create) { // return primitive with prefix if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; if (!has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return 'F'; // not necessary to add metadata if (!create) return 'E'; // add missing metadata setMeta(it); // return object ID } return it[META].i; }; var getWeak = function (it, create) { if (!has(it, META)) { // can't set metadata to uncaught frozen object if (!isExtensible(it)) return true; // not necessary to add metadata if (!create) return false; // add missing metadata setMeta(it); // return hash weak collections IDs } return it[META].w; }; // add metadata on freeze-family methods calling var onFreeze = function (it) { if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); return it; }; var meta = module.exports = { KEY: META, NEED: false, fastKey: fastKey, getWeak: getWeak, onFreeze: onFreeze }; /***/ }), /* 50 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(3); module.exports = function (it, TYPE) { if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); return it; }; /***/ }), /* 51 */, /* 52 */, /* 53 */, /* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isOutlierField = exports.getOutlierFields = exports.isOutlierDataSet = exports.getRangeSeriesConfig = exports.isRangeSeriesDataSet = undefined; var _set = __webpack_require__(55); var _set2 = _interopRequireDefault(_set); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var isRangeSeriesDataSet = exports.isRangeSeriesDataSet = function isRangeSeriesDataSet(dataSet) { var allFields = dataSet.allFields(); return (0, _underscore2.default)(allFields).any(function (f) { return (/^_predicted/.test(f) ); }) && (0, _underscore2.default)(allFields).any(function (f) { return (/^_lower/.test(f) ); }) && (0, _underscore2.default)(allFields).any(function (f) { return (/^_upper/.test(f) ); }); }; var getRangeSeriesConfig = exports.getRangeSeriesConfig = function getRangeSeriesConfig(dataSet) { var predictedFields = (0, _underscore2.default)(dataSet.allFields()).filter(function (f) { return (/^_predicted/.test(f) ); }); return (0, _underscore2.default)(predictedFields).map(function (predictedField) { var sourceField = predictedField.replace(/^_predicted/, ''); var lowerField = '_lower' + sourceField; var upperField = '_upper' + sourceField; var predictedName = (0, _underscore2.default)(dataSet.getSeries(predictedField)).find(function (value) { return !!value; }); var lowerName = (0, _underscore2.default)(dataSet.getSeries(lowerField)).find(function (value) { return !!value; }); var upperName = (0, _underscore2.default)(dataSet.getSeries(upperField)).find(function (value) { return !!value; }); return { predicted: predictedName, lower: lowerName, upper: upperName }; }); }; var isOutlierDataSet = exports.isOutlierDataSet = function isOutlierDataSet(dataSet) { var allFields = dataSet.allFields(); return (0, _underscore2.default)(allFields).any(function (f) { return (/^isOutlier/.test(f) ); }) && (0, _underscore2.default)(allFields).any(function (f) { return (/^lowerBound/.test(f) ); }) && (0, _underscore2.default)(allFields).any(function (f) { return (/^upperBound/.test(f) ); }); }; var getOutlierFields = exports.getOutlierFields = function getOutlierFields(dataSet) { var actualField = (0, _underscore2.default)(dataSet.allFields()).filter(function (f) { return !/^isOutlier/.test(f) && !/^lowerBound/.test(f) && !/^upperBound/.test(f) && !/^_time/.test(f); }); return { lower: 'lowerBound', upper: 'upperBound', isOutlier: 'isOutlier', actual: '' + actualField }; }; var isOutlierField = exports.isOutlierField = function isOutlierField(fieldName) { var outlierFields = new _set2.default(['lowerBound', 'upperBound', 'isOutlier']); return outlierFields.has(fieldName); }; /***/ }), /* 55 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(56), __esModule: true }; /***/ }), /* 56 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(57); __webpack_require__(58); __webpack_require__(65); __webpack_require__(68); __webpack_require__(79); __webpack_require__(82); __webpack_require__(84); module.exports = __webpack_require__(5).Set; /***/ }), /* 57 */ /***/ (function(module, exports) { /***/ }), /* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var $at = __webpack_require__(59)(true); // 21.1.3.27 String.prototype[@@iterator]() __webpack_require__(33)(String, 'String', function (iterated) { this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() }, function () { var O = this._t; var index = this._i; var point; if (index >= O.length) return { value: undefined, done: true }; point = $at(O, index); this._i += point.length; return { value: point, done: false }; }); /***/ }), /* 59 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(14); var defined = __webpack_require__(15); // true -> String#at // false -> String#codePointAt module.exports = function (TO_STRING) { return function (that, pos) { var s = String(defined(that)); var i = toInteger(pos); var l = s.length; var a, b; if (i < 0 || i >= l) return TO_STRING ? '' : undefined; a = s.charCodeAt(i); return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; }; }; /***/ }), /* 60 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(6); /***/ }), /* 61 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var create = __webpack_require__(44); var descriptor = __webpack_require__(26); var setToStringTag = __webpack_require__(40); var IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() __webpack_require__(6)(IteratorPrototype, __webpack_require__(8)('iterator'), function () { return this; }); module.exports = function (Constructor, NAME, next) { Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); setToStringTag(Constructor, NAME + ' Iterator'); }; /***/ }), /* 62 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(7); var anObject = __webpack_require__(13); var getKeys = __webpack_require__(36); module.exports = __webpack_require__(4) ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = getKeys(Properties); var length = keys.length; var i = 0; var P; while (length > i) dP.f(O, P = keys[i++], Properties[P]); return O; }; /***/ }), /* 63 */ /***/ (function(module, exports, __webpack_require__) { var document = __webpack_require__(2).document; module.exports = document && document.documentElement; /***/ }), /* 64 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) var has = __webpack_require__(10); var toObject = __webpack_require__(30); var IE_PROTO = __webpack_require__(20)('IE_PROTO'); var ObjectProto = Object.prototype; module.exports = Object.getPrototypeOf || function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectProto : null; }; /***/ }), /* 65 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(66); var global = __webpack_require__(2); var hide = __webpack_require__(6); var Iterators = __webpack_require__(17); var TO_STRING_TAG = __webpack_require__(8)('toStringTag'); var DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' + 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' + 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' + 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' + 'TextTrackList,TouchList').split(','); for (var i = 0; i < DOMIterables.length; i++) { var NAME = DOMIterables[i]; var Collection = global[NAME]; var proto = Collection && Collection.prototype; if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME); Iterators[NAME] = Iterators.Array; } /***/ }), /* 66 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var addToUnscopables = __webpack_require__(67); var step = __webpack_require__(45); var Iterators = __webpack_require__(17); var toIObject = __webpack_require__(16); // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() module.exports = __webpack_require__(33)(Array, 'Array', function (iterated, kind) { this._t = toIObject(iterated); // target this._i = 0; // next index this._k = kind; // kind // 22.1.5.2.1 %ArrayIteratorPrototype%.next() }, function () { var O = this._t; var kind = this._k; var index = this._i++; if (!O || index >= O.length) { this._t = undefined; return step(1); } if (kind == 'keys') return step(0, index); if (kind == 'values') return step(0, O[index]); return step(0, [index, O[index]]); }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); /***/ }), /* 67 */ /***/ (function(module, exports) { module.exports = function () { /* empty */ }; /***/ }), /* 68 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var strong = __webpack_require__(69); var validate = __webpack_require__(50); var SET = 'Set'; // 23.2 Set Objects module.exports = __webpack_require__(74)(SET, function (get) { return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; }, { // 23.2.3.1 Set.prototype.add(value) add: function add(value) { return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); } }, strong); /***/ }), /* 69 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var dP = __webpack_require__(7).f; var create = __webpack_require__(44); var redefineAll = __webpack_require__(46); var ctx = __webpack_require__(12); var anInstance = __webpack_require__(47); var forOf = __webpack_require__(31); var $iterDefine = __webpack_require__(33); var step = __webpack_require__(45); var setSpecies = __webpack_require__(73); var DESCRIPTORS = __webpack_require__(4); var fastKey = __webpack_require__(49).fastKey; var validate = __webpack_require__(50); var SIZE = DESCRIPTORS ? '_s' : 'size'; var getEntry = function (that, key) { // fast case var index = fastKey(key); var entry; if (index !== 'F') return that._i[index]; // frozen object case for (entry = that._f; entry; entry = entry.n) { if (entry.k == key) return entry; } }; module.exports = { getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { var C = wrapper(function (that, iterable) { anInstance(that, C, NAME, '_i'); that._t = NAME; // collection type that._i = create(null); // index that._f = undefined; // first entry that._l = undefined; // last entry that[SIZE] = 0; // size if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); }); redefineAll(C.prototype, { // 23.1.3.1 Map.prototype.clear() // 23.2.3.2 Set.prototype.clear() clear: function clear() { for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { entry.r = true; if (entry.p) entry.p = entry.p.n = undefined; delete data[entry.i]; } that._f = that._l = undefined; that[SIZE] = 0; }, // 23.1.3.3 Map.prototype.delete(key) // 23.2.3.4 Set.prototype.delete(value) 'delete': function (key) { var that = validate(this, NAME); var entry = getEntry(that, key); if (entry) { var next = entry.n; var prev = entry.p; delete that._i[entry.i]; entry.r = true; if (prev) prev.n = next; if (next) next.p = prev; if (that._f == entry) that._f = next; if (that._l == entry) that._l = prev; that[SIZE]--; } return !!entry; }, // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) forEach: function forEach(callbackfn /* , that = undefined */) { validate(this, NAME); var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); var entry; while (entry = entry ? entry.n : this._f) { f(entry.v, entry.k, this); // revert to the last existing entry while (entry && entry.r) entry = entry.p; } }, // 23.1.3.7 Map.prototype.has(key) // 23.2.3.7 Set.prototype.has(value) has: function has(key) { return !!getEntry(validate(this, NAME), key); } }); if (DESCRIPTORS) dP(C.prototype, 'size', { get: function () { return validate(this, NAME)[SIZE]; } }); return C; }, def: function (that, key, value) { var entry = getEntry(that, key); var prev, index; // change existing entry if (entry) { entry.v = value; // create new entry } else { that._l = entry = { i: index = fastKey(key, true), // <- index k: key, // <- key v: value, // <- value p: prev = that._l, // <- previous entry n: undefined, // <- next entry r: false // <- removed }; if (!that._f) that._f = entry; if (prev) prev.n = entry; that[SIZE]++; // add to index if (index !== 'F') that._i[index] = entry; } return that; }, getEntry: getEntry, setStrong: function (C, NAME, IS_MAP) { // add .keys, .values, .entries, [@@iterator] // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 $iterDefine(C, NAME, function (iterated, kind) { this._t = validate(iterated, NAME); // target this._k = kind; // kind this._l = undefined; // previous }, function () { var that = this; var kind = that._k; var entry = that._l; // revert to the last existing entry while (entry && entry.r) entry = entry.p; // get next entry if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { // or finish the iteration that._t = undefined; return step(1); } // return step by kind if (kind == 'keys') return step(0, entry.k); if (kind == 'values') return step(0, entry.v); return step(0, [entry.k, entry.v]); }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); // add [@@species], 23.1.2.2, 23.2.2.2 setSpecies(NAME); } }; /***/ }), /* 70 */ /***/ (function(module, exports, __webpack_require__) { // call something on iterator step with safe closing on error var anObject = __webpack_require__(13); module.exports = function (iterator, fn, value, entries) { try { return entries ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch (e) { var ret = iterator['return']; if (ret !== undefined) anObject(ret.call(iterator)); throw e; } }; /***/ }), /* 71 */ /***/ (function(module, exports, __webpack_require__) { // check on default Array iterator var Iterators = __webpack_require__(17); var ITERATOR = __webpack_require__(8)('iterator'); var ArrayProto = Array.prototype; module.exports = function (it) { return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); }; /***/ }), /* 72 */ /***/ (function(module, exports, __webpack_require__) { var classof = __webpack_require__(48); var ITERATOR = __webpack_require__(8)('iterator'); var Iterators = __webpack_require__(17); module.exports = __webpack_require__(5).getIteratorMethod = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; /***/ }), /* 73 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var global = __webpack_require__(2); var core = __webpack_require__(5); var dP = __webpack_require__(7); var DESCRIPTORS = __webpack_require__(4); var SPECIES = __webpack_require__(8)('species'); module.exports = function (KEY) { var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY]; if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { configurable: true, get: function () { return this; } }); }; /***/ }), /* 74 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var global = __webpack_require__(2); var $export = __webpack_require__(11); var meta = __webpack_require__(49); var fails = __webpack_require__(9); var hide = __webpack_require__(6); var redefineAll = __webpack_require__(46); var forOf = __webpack_require__(31); var anInstance = __webpack_require__(47); var isObject = __webpack_require__(3); var setToStringTag = __webpack_require__(40); var dP = __webpack_require__(7).f; var each = __webpack_require__(75)(0); var DESCRIPTORS = __webpack_require__(4); module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { var Base = global[NAME]; var C = Base; var ADDER = IS_MAP ? 'set' : 'add'; var proto = C && C.prototype; var O = {}; if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { new C().entries().next(); }))) { // create collection constructor C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); redefineAll(C.prototype, methods); meta.NEED = true; } else { C = wrapper(function (target, iterable) { anInstance(target, C, NAME, '_c'); target._c = new Base(); if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target); }); each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) { var IS_ADDER = KEY == 'add' || KEY == 'set'; if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) { anInstance(this, C, KEY); if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false; var result = this._c[KEY](a === 0 ? 0 : a, b); return IS_ADDER ? this : result; }); }); IS_WEAK || dP(C.prototype, 'size', { get: function () { return this._c.size; } }); } setToStringTag(C, NAME); O[NAME] = C; $export($export.G + $export.W + $export.F, O); if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); return C; }; /***/ }), /* 75 */ /***/ (function(module, exports, __webpack_require__) { // 0 -> Array#forEach // 1 -> Array#map // 2 -> Array#filter // 3 -> Array#some // 4 -> Array#every // 5 -> Array#find // 6 -> Array#findIndex var ctx = __webpack_require__(12); var IObject = __webpack_require__(27); var toObject = __webpack_require__(30); var toLength = __webpack_require__(19); var asc = __webpack_require__(76); module.exports = function (TYPE, $create) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; var create = $create || asc; return function ($this, callbackfn, that) { var O = toObject($this); var self = IObject(O); var f = ctx(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var val, res; for (;length > index; index++) if (NO_HOLES || index in self) { val = self[index]; res = f(val, index, O); if (TYPE) { if (IS_MAP) result[index] = res; // map else if (res) switch (TYPE) { case 3: return true; // some case 5: return val; // find case 6: return index; // findIndex case 2: result.push(val); // filter } else if (IS_EVERY) return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; }; }; /***/ }), /* 76 */ /***/ (function(module, exports, __webpack_require__) { // 9.4.2.3 ArraySpeciesCreate(originalArray, length) var speciesConstructor = __webpack_require__(77); module.exports = function (original, length) { return new (speciesConstructor(original))(length); }; /***/ }), /* 77 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(3); var isArray = __webpack_require__(78); var SPECIES = __webpack_require__(8)('species'); module.exports = function (original) { var C; if (isArray(original)) { C = original.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return C === undefined ? Array : C; }; /***/ }), /* 78 */ /***/ (function(module, exports, __webpack_require__) { // 7.2.2 IsArray(argument) var cof = __webpack_require__(18); module.exports = Array.isArray || function isArray(arg) { return cof(arg) == 'Array'; }; /***/ }), /* 79 */ /***/ (function(module, exports, __webpack_require__) { // https://github.com/DavidBruant/Map-Set.prototype.toJSON var $export = __webpack_require__(11); $export($export.P + $export.R, 'Set', { toJSON: __webpack_require__(80)('Set') }); /***/ }), /* 80 */ /***/ (function(module, exports, __webpack_require__) { // https://github.com/DavidBruant/Map-Set.prototype.toJSON var classof = __webpack_require__(48); var from = __webpack_require__(81); module.exports = function (NAME) { return function toJSON() { if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic"); return from(this); }; }; /***/ }), /* 81 */ /***/ (function(module, exports, __webpack_require__) { var forOf = __webpack_require__(31); module.exports = function (iter, ITERATOR) { var result = []; forOf(iter, false, result.push, result, ITERATOR); return result; }; /***/ }), /* 82 */ /***/ (function(module, exports, __webpack_require__) { // https://tc39.github.io/proposal-setmap-offrom/#sec-set.of __webpack_require__(83)('Set'); /***/ }), /* 83 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // https://tc39.github.io/proposal-setmap-offrom/ var $export = __webpack_require__(11); module.exports = function (COLLECTION) { $export($export.S, COLLECTION, { of: function of() { var length = arguments.length; var A = new Array(length); while (length--) A[length] = arguments[length]; return new this(A); } }); }; /***/ }), /* 84 */ /***/ (function(module, exports, __webpack_require__) { // https://tc39.github.io/proposal-setmap-offrom/#sec-set.from __webpack_require__(85)('Set'); /***/ }), /* 85 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; // https://tc39.github.io/proposal-setmap-offrom/ var $export = __webpack_require__(11); var aFunction = __webpack_require__(24); var ctx = __webpack_require__(12); var forOf = __webpack_require__(31); module.exports = function (COLLECTION) { $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) { var mapFn = arguments[1]; var mapping, A, n, cb; aFunction(this); mapping = mapFn !== undefined; if (mapping) aFunction(mapFn); if (source == undefined) return new this(); A = []; if (mapping) { n = 0; cb = ctx(mapFn, arguments[2], 2); forOf(source, false, function (nextItem) { A.push(cb(nextItem, n++)); }); } else { forOf(source, false, A.push, A); } return new this(A); } }); }; /***/ }) /******/ ]); /***/ }), /***/ "./node_modules/@splunk/charting-utils/format.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 86); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 22: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable */ /* * Copied from js/stubs/i18n.js in the core UI repository, since the logic is unlikely to change and this saves * us the trouble of taking a dependency on the SplunkWebCore bower module. */ /* * monkey patches to the i18n library * see SPL-75565 */ // NOTE: this code block is duplicated in the util/test_i18n_patches.html unit test. // any changes made here must also be reflected there. if (window.locale_name() in { ko_KR: true, zh_CN: true, zh_TW: true }) { window._i18n_locale.date_formats['short'] = { pattern: 'yy/MM/dd', format: '%(yy)s/%(MM)s/%(dd)s' }; window._i18n_locale.date_formats['medium'] = { pattern: 'yyyy/MM/dd', format: '%(yyyy)s/%(MM)s/%(dd)s' }; window._i18n_locale.time_formats['short'] = { pattern: 'H:mm', format: '%(H)s:%(mm)s' }; window._i18n_locale.time_formats['medium'] = { pattern: 'H:mm:ss', format: '%(H)s:%(mm)s:%(ss)s' }; } var asianLanguageDateReplacements = [[/^ccc MMM d$/, 'M/d (ccc)'], [/^YYYY-MM/, 'YYYY/MM'], [/MM-dd/, 'MM/dd']]; // maintain a hash of locales where custom string replacements are needed to get correct translation var FORMAT_DATE_REPLACEMENTS = { ja_JP: asianLanguageDateReplacements, ko_KR: asianLanguageDateReplacements, zh_CN: asianLanguageDateReplacements, zh_TW: asianLanguageDateReplacements }; // maintain a list of replacements needed when a locale specifies that day comes before month var DAY_FIRST_FORMATS = [['MMM d', 'd MMM']]; var oldFormatDate = window.format_date; window.format_date = function (date, format) { format = format || 'medium'; var i, replacements, locale = window.locale_name(); if (format && typeof format === 'string' && window.locale_uses_day_before_month()) { replacements = DAY_FIRST_FORMATS; for (i = 0; i < replacements.length; i++) { format = format.replace(replacements[i][0], replacements[i][1]); } } if (format && typeof format === 'string' && locale in FORMAT_DATE_REPLACEMENTS) { replacements = FORMAT_DATE_REPLACEMENTS[locale]; for (i = 0; i < replacements.length; i++) { var replacement = replacements[i]; format = format.replace(replacement[0], replacement[1]); } } return oldFormatDate(date, format); }; exports.default = { _: window.gettext, ungettext: window.ungettext, format_decimal: window.format_decimal, format_number: window.format_number, format_percent: window.format_percent, format_scientific: window.format_scientific, format_date: window.format_date, format_datetime: window.format_datetime, format_time: window.format_time, format_datetime_microseconds: window.format_datetime_microseconds, format_time_microseconds: window.format_time_microseconds, locale_uses_day_before_month: window.locale_uses_day_before_month, format_datetime_range: window.format_datetime_range, locale_name: window.locale_name, DateTime: window.DateTime, moment_install: window.moment_install, numeral_install: window.numeral_install, jQuery_ui_datepicker_install: window.jQuery_ui_datepicker_install }; module.exports = exports['default']; /***/ }), /***/ 41: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = sprintf; /* eslint-disable */ /** * sprintf routine borrowed from http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_sprintf/ * Licensed under GPL and MIT licenses * * Modified by Gareth to add support for Python style argument specifiers: * sprintf("Hi %(name)s, welcome to %(application)s", { name: 'Gareth', app: 'Splunk }) */ // prettier-ignore function sprintf() { // Return a formatted string // // + discuss at: http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_sprintf/ // + version: 810.1015 // + original by: Ash Searle (http://hexmen.com/blog/) // + namespaced by: Michael White (http://getsprink.com) // + tweaked by: Jack // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // * example 1: sprintf("%01.2f", 123.1); // * returns 1: 123.10 var regex = /%%|%(\d+\$)?(\([^)]+\))?([-+#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g; var a = arguments, i = 0, format = a[i++]; // pad() var pad = function pad(str, len, chr, leftJustify) { var padding = str.length >= len ? '' : Array(1 + len - str.length >>> 0).join(chr); return leftJustify ? str + padding : padding + str; }; // justify() var justify = function justify(value, prefix, leftJustify, minWidth, zeroPad) { var diff = minWidth - value.length; if (diff > 0) { if (leftJustify || !zeroPad) { value = pad(value, minWidth, ' ', leftJustify); } else { value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length); } } return value; }; // formatBaseX() var formatBaseX = function formatBaseX(value, base, prefix, leftJustify, minWidth, precision, zeroPad) { // Note: casts negative numbers to positive ones var number = value >>> 0; prefix = prefix && number && { '2': '0b', '8': '0', '16': '0x' }[base] || ''; value = prefix + pad(number.toString(base), precision || 0, '0', false); return justify(value, prefix, leftJustify, minWidth, zeroPad); }; // formatString() var formatString = function formatString(value, leftJustify, minWidth, precision, zeroPad) { if (precision != null) { value = value.slice(0, precision); } return justify(value, '', leftJustify, minWidth, zeroPad); }; // finalFormat() var doFormat = function doFormat(substring, valueIndex, valueName, flags, minWidth, _, precision, type) { if (substring == '%%') return '%'; // parse flags var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false; var flagsl = flags.length; for (var j = 0; flags && j < flagsl; j++) { switch (flags.charAt(j)) { case ' ': positivePrefix = ' ';break; case '+': positivePrefix = '+';break; case '-': leftJustify = true;break; case '0': zeroPad = true;break; case '#': prefixBaseX = true;break; } } // parameters may be null, undefined, empty-string or real valued // we want to ignore null, undefined and empty-string values if (!minWidth) { minWidth = 0; } else if (minWidth == '*') { minWidth = +a[i++]; } else if (minWidth.charAt(0) == '*') { minWidth = +a[minWidth.slice(1, -1)]; } else { minWidth = +minWidth; } // Note: undocumented perl feature: if (minWidth < 0) { minWidth = -minWidth; leftJustify = true; } if (!isFinite(minWidth)) { throw new Error('sprintf: (minimum-)width must be finite'); } if (!precision) { precision = 'fFeE'.indexOf(type) > -1 ? 6 : type == 'd' ? 0 : void 0; } else if (precision == '*') { precision = +a[i++]; } else if (precision.charAt(0) == '*') { precision = +a[precision.slice(1, -1)]; } else { precision = +precision; } // grab value using valueIndex if required? if (valueName) { valueName = valueName.substr(1, valueName.length - 2); var value = a[1][valueName]; } else { var value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++]; } switch (type) { case 's': return formatString(String(value), leftJustify, minWidth, precision, zeroPad); case 'c': return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad); case 'b': return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad); case 'o': return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad); case 'x': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad); case 'X': return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase(); case 'u': return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad); case 'i': case 'd': { var number = parseInt(+value); var prefix = number < 0 ? '-' : positivePrefix; value = prefix + pad(String(Math.abs(number)), precision, '0', false); return justify(value, prefix, leftJustify, minWidth, zeroPad); } case 'e': case 'E': case 'f': case 'F': case 'g': case 'G': { var number = +value; var prefix = number < 0 ? '-' : positivePrefix; var method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())]; var textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2]; value = prefix + Math.abs(number)[method](precision); return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform](); } default: return substring; } }; return format.replace(regex, doFormat); } // }}} module.exports = exports['default']; /***/ }), /***/ 42: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.roundToDecimal = exports.valuesAreNumeric = exports.isCommaSeparatedNumber = exports.getDecimalPrecision = exports.degreeToRadian = exports.roundWithMinMax = exports.roundWithMin = exports.nearestPowerOfTen = exports.absPowerTen = exports.absLogBaseTen = exports.logBaseTen = exports.parseFloat = undefined; var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var HEX_REGEX = /^( )*(0x|-0x)/; var DECIMAL_OR_SCIENTIFIC_REGEX = /(^[-+]?[0-9]*[.]?[0-9]*$)|(^[-+]?[0-9][.]?[0-9]*e[-+]?[0-9][0-9]*$)/i; var COMMA_SEPARATED_NUMBER_REGEX = /(^[-+]?([0]|([1-9][0-9]{0,2})|(([1-9][0-9]{0,2}[,])([0-9]{3}[,])*[0-9]{3}))(([.][0-9]+)?)$)/; // an extended version of parseFloat that will handle numbers encoded in hex format (i.e. "0xff") // and is stricter than native JavaScript parseFloat for decimal numbers var strictParseFloat = function strictParseFloat(str) { // determine if the string is a hex number by checking if it begins with '0x' or '-0x', // in which case delegate to parseInt with a 16 radix if (HEX_REGEX.test(str)) { return parseInt(str, 16); } // if the number is not in decimal or scientific format, return NaN explicitly // instead of letting JavaScript do its loose parsing if (!DECIMAL_OR_SCIENTIFIC_REGEX.test(str)) { return NaN; } return parseFloat(str); }; exports.parseFloat = strictParseFloat; // shortcut for base-ten log, also rounds to four decimal points of precision to make pretty numbers var logBaseTen = exports.logBaseTen = function logBaseTen(num) { var result = Math.log(num) / Math.LN10; return Math.round(result * 10000) / 10000; }; // transforms numbers to a normalized log scale that can handle negative numbers // rounds to four decimal points of precision var absLogBaseTen = exports.absLogBaseTen = function absLogBaseTen(num) { if (typeof num !== 'number') { num = parseFloat(num); } if ((0, _underscore2.default)(num).isNaN()) { return num; } var isNegative = num < 0; if (isNegative) { num = -num; } if (num < 10) { num += (10 - num) / 10; } var result = logBaseTen(num); return isNegative ? -result : result; }; // reverses the transformation made by absLogBaseTen above // rounds to three decimal points of precision var absPowerTen = exports.absPowerTen = function absPowerTen(num) { if (typeof num !== 'number') { num = parseFloat(num); } if ((0, _underscore2.default)(num).isNaN()) { return num; } var isNegative = num < 0; var result = void 0; if (isNegative) { num = -num; } // eslint-disable-next-line no-restricted-properties result = Math.pow(10, num); if (result < 10) { result = 10 * (result - 1) / (10 - 1); } result = isNegative ? -result : result; return Math.round(result * 1000) / 1000; }; // calculates the power of ten that is closest to but not greater than the number // negative numbers are treated as their absolute value and the sign of the result is flipped before returning var nearestPowerOfTen = exports.nearestPowerOfTen = function nearestPowerOfTen(num) { if (typeof num !== 'number') { return NaN; } var isNegative = num < 0; num = isNegative ? -num : num; var log = logBaseTen(num); // eslint-disable-next-line no-restricted-properties var result = Math.pow(10, Math.floor(log)); return isNegative ? -result : result; }; var roundWithMin = exports.roundWithMin = function roundWithMin(value, min) { return Math.max(Math.round(value), min); }; var roundWithMinMax = exports.roundWithMinMax = function roundWithMinMax(value, min, max) { var roundVal = Math.round(value); if (roundVal < min) { return min; } if (roundVal > max) { return max; } return roundVal; }; var degreeToRadian = exports.degreeToRadian = function degreeToRadian(degree) { return degree * Math.PI / 180; }; // returns the number of digits of precision after the decimal point // optionally accepts a maximum number, after which point it will stop looking and return the max var getDecimalPrecision = exports.getDecimalPrecision = function getDecimalPrecision(num, max) { // By spec, toFixed will throw a RangeError if called with a precision greater than 20. max = Math.min(max || Infinity, 20); var precision = 0; while (precision < max && num.toFixed(precision) !== num.toString()) { precision += 1; } return precision; }; /** * Checks if the value passed in is some comma separated number * (e.g. "1,234", "300,000,000", and "12,345.67"). This function provides * a simple way to determine when a comma seperated value string should be * considered a number. * * @param {String} str - string to be checked * @returns {Boolean} - return true if (str) is a valid number grouped by either commas or decimals, false otherwise */ var isCommaSeparatedNumber = exports.isCommaSeparatedNumber = function isCommaSeparatedNumber(str) { return ( // if str is not a number grouped with either commas or decimals COMMA_SEPARATED_NUMBER_REGEX.test(str) ); }; /** * Checks if a list of values can be considered "numeric". * * Returns true if half or more of the non-null values can be parsed to a float. * * @param {Array} values * @return {Boolean} */ var valuesAreNumeric = exports.valuesAreNumeric = function valuesAreNumeric(values) { var numericCount = 0; var nonNullCount = 0; (0, _underscore2.default)(values).each(function (value) { // in the case of multivalue fields, use the first value if ((0, _underscore2.default)(value).isArray()) { value = value.length > 0 ? value[0] : null; } if ((0, _underscore2.default)(value).isNull()) { return; } nonNullCount++; var isNumber = !!strictParseFloat(value) || isCommaSeparatedNumber(value); if (isNumber) { numericCount++; } }); if (nonNullCount === 0) { return false; } return numericCount >= nonNullCount / 2; }; /** * * Rounds a number to a specifice exp base 10 * * @param {Number} value - number to round * @param {Number} exp - exp of base 10 of the decimal palce to round to * eg: exp=-1 rounds to the tenths place * exp=-2 rounds to the hundredth place * exp=0 rounds to the ones place * exp=1 rounds to the tens place * @return {Number|NaN} * * reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round */ var roundToDecimal = exports.roundToDecimal = function roundToDecimal(value, exp) { // If the exp is undefined or zero... if (typeof exp === 'undefined' || +exp === 0) { return Math.round(value); } value = +value; exp = +exp; // If the value is not a number or the exp is not an integer... if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { return NaN; } // Shift value = value.toString().split('e'); value = Math.round(+(value[0] + 'e' + (value[1] ? +value[1] - exp : -exp))); // Shift back value = value.toString().split('e'); return +(value[0] + 'e' + (value[1] ? +value[1] + exp : exp)); }; // TODO Remove default export exports.default = { parseFloat: strictParseFloat, logBaseTen: logBaseTen, absLogBaseTen: absLogBaseTen, absPowerTen: absPowerTen, nearestPowerOfTen: nearestPowerOfTen, roundWithMin: roundWithMin, roundWithMinMax: roundWithMinMax, degreeToRadian: degreeToRadian, getDecimalPrecision: getDecimalPrecision, valuesAreNumeric: valuesAreNumeric, roundToDecimal: roundToDecimal }; /***/ }), /***/ 86: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSIPower = exports.getSIUnit = exports.abbreviateByUnit = exports.abbreviateNumber = undefined; var _i18n = __webpack_require__(22); var _i18n2 = _interopRequireDefault(_i18n); var _sprintf = __webpack_require__(41); var _sprintf2 = _interopRequireDefault(_sprintf); var _math = __webpack_require__(42); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * A method to abbreviate number to a maximum of 4 digits */ var abbreviateValue = function abbreviateValue(number) { if (number < 1000) { // less than 1,000 return _i18n2.default.format_decimal(number); } else if (number < 10000) { // less than 10,000 return (0, _sprintf2.default)(_i18n2.default._('%sK'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000, -2))); } else if (number < 100000) { // less than 100,000 return (0, _sprintf2.default)(_i18n2.default._('%sK'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000, -1))); } else if (number < 999500) { // less than 999,500 return (0, _sprintf2.default)(_i18n2.default._('%sK'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000, 0))); } else if (number < 10000000) { // less than 10,000,000 return (0, _sprintf2.default)(_i18n2.default._('%sM'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000000, -2))); } else if (number < 100000000) { // less than 100,000,000 return (0, _sprintf2.default)(_i18n2.default._('%sM'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000000, -1))); } else if (number < 999500000) { // less than 999,500,000 return (0, _sprintf2.default)(_i18n2.default._('%sM'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000000, 0))); } else if (number < 10000000000) { // less than 10,000,000,000 return (0, _sprintf2.default)(_i18n2.default._('%sB'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000000000, -2))); } else if (number < 100000000000) { // less than 100,000,000,000 return (0, _sprintf2.default)(_i18n2.default._('%sB'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000000000, -1))); } // greater than or equal to 100,000,000,000 return (0, _sprintf2.default)(_i18n2.default._('%sB'), _i18n2.default.format_decimal((0, _math.roundToDecimal)(number / 1000000000, 0))); }; /** * Util package for formatting number. */ var abbreviateNumber = exports.abbreviateNumber = function abbreviateNumber(number) { if (number < 0) { return '-'.concat(abbreviateValue(Math.abs(number))); } return abbreviateValue(number); }; /** * A method to abbreviate number to an SI unit to a certain decimal place */ var abbreviateByUnit = exports.abbreviateByUnit = function abbreviateByUnit(number, unit, decimal) { var format = '###,###.'; var ending = ''; // concatonate decimal number of zeros to the ending of formatting string for (var i = 0; i < decimal; i++) { ending = ending + '0'; } format += ending; if (number === 0) { return '0'; } if (unit === '') { return _i18n2.default.format_decimal(number, format).toString(); } else if (unit === 'K') { return (0, _sprintf2.default)(_i18n2.default._('%sK'), _i18n2.default.format_decimal(number / 1000, format)); } else if (unit === 'M') { return (0, _sprintf2.default)(_i18n2.default._('%sM'), _i18n2.default.format_decimal(number / 1000000, format)); } else if (unit === 'B') { return (0, _sprintf2.default)(_i18n2.default._('%sB'), _i18n2.default.format_decimal(number / 1000000000, format)); } else if (unit === 'T') { return (0, _sprintf2.default)(_i18n2.default._('%sT'), _i18n2.default.format_decimal(number / 1000000000000, format)); } return undefined; }; /** * A method to return the largest SI suffix that is smaller than the number */ var getSIUnit = exports.getSIUnit = function getSIUnit(number) { if (number >= 1000000000000) { return 'T'; } else if (number >= 1000000000) { return 'B'; } else if (number >= 1000000) { return 'M'; } else if (number >= 1000) { return 'K'; } return ''; }; /** * A method to return the largest power asscoiated to an SI suffix that is smaller than the number */ var getSIPower = exports.getSIPower = function getSIPower(number) { if (number >= 1000000000000) { return 12; } else if (number >= 1000000000) { return 9; } else if (number >= 1000000) { return 6; } else if (number >= 1000) { return 3; } return 0; }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/i18n.js": /***/ (function(module, exports) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 22); /******/ }) /************************************************************************/ /******/ ({ /***/ 22: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable */ /* * Copied from js/stubs/i18n.js in the core UI repository, since the logic is unlikely to change and this saves * us the trouble of taking a dependency on the SplunkWebCore bower module. */ /* * monkey patches to the i18n library * see SPL-75565 */ // NOTE: this code block is duplicated in the util/test_i18n_patches.html unit test. // any changes made here must also be reflected there. if (window.locale_name() in { ko_KR: true, zh_CN: true, zh_TW: true }) { window._i18n_locale.date_formats['short'] = { pattern: 'yy/MM/dd', format: '%(yy)s/%(MM)s/%(dd)s' }; window._i18n_locale.date_formats['medium'] = { pattern: 'yyyy/MM/dd', format: '%(yyyy)s/%(MM)s/%(dd)s' }; window._i18n_locale.time_formats['short'] = { pattern: 'H:mm', format: '%(H)s:%(mm)s' }; window._i18n_locale.time_formats['medium'] = { pattern: 'H:mm:ss', format: '%(H)s:%(mm)s:%(ss)s' }; } var asianLanguageDateReplacements = [[/^ccc MMM d$/, 'M/d (ccc)'], [/^YYYY-MM/, 'YYYY/MM'], [/MM-dd/, 'MM/dd']]; // maintain a hash of locales where custom string replacements are needed to get correct translation var FORMAT_DATE_REPLACEMENTS = { ja_JP: asianLanguageDateReplacements, ko_KR: asianLanguageDateReplacements, zh_CN: asianLanguageDateReplacements, zh_TW: asianLanguageDateReplacements }; // maintain a list of replacements needed when a locale specifies that day comes before month var DAY_FIRST_FORMATS = [['MMM d', 'd MMM']]; var oldFormatDate = window.format_date; window.format_date = function (date, format) { format = format || 'medium'; var i, replacements, locale = window.locale_name(); if (format && typeof format === 'string' && window.locale_uses_day_before_month()) { replacements = DAY_FIRST_FORMATS; for (i = 0; i < replacements.length; i++) { format = format.replace(replacements[i][0], replacements[i][1]); } } if (format && typeof format === 'string' && locale in FORMAT_DATE_REPLACEMENTS) { replacements = FORMAT_DATE_REPLACEMENTS[locale]; for (i = 0; i < replacements.length; i++) { var replacement = replacements[i]; format = format.replace(replacement[0], replacement[1]); } } return oldFormatDate(date, format); }; exports.default = { _: window.gettext, ungettext: window.ungettext, format_decimal: window.format_decimal, format_number: window.format_number, format_percent: window.format_percent, format_scientific: window.format_scientific, format_date: window.format_date, format_datetime: window.format_datetime, format_time: window.format_time, format_datetime_microseconds: window.format_datetime_microseconds, format_time_microseconds: window.format_time_microseconds, locale_uses_day_before_month: window.locale_uses_day_before_month, format_datetime_range: window.format_datetime_range, locale_name: window.locale_name, DateTime: window.DateTime, moment_install: window.moment_install, numeral_install: window.numeral_install, jQuery_ui_datepicker_install: window.jQuery_ui_datepicker_install }; module.exports = exports['default']; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/lang.js": /***/ (function(module, exports) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 87); /******/ }) /************************************************************************/ /******/ ({ /***/ 87: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable import/prefer-default-export,func-names */ // very simple inheritance helper to set up the prototype chain var inherit = exports.inherit = function inherit(child, parent) { var F = function F() {}; F.prototype = parent.prototype; child.prototype = new F(); child.prototype.constructor = child; }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/logger.js": /***/ (function(module, exports) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 43); /******/ }) /************************************************************************/ /******/ ({ /***/ 43: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _console = window.console; var setLoggingConsole = exports.setLoggingConsole = function setLoggingConsole(newConsole) { _console = newConsole; }; var bindConsole = function bindConsole(fnName) { return function () { var _console2; (_console2 = _console)[fnName].apply(_console2, arguments); }; }; var debug = exports.debug = bindConsole('debug'); var info = exports.info = bindConsole('info'); var warn = exports.warn = bindConsole('warn'); var error = exports.error = bindConsole('error'); var log = exports.log = bindConsole('log'); var trace = exports.trace = bindConsole('trace'); exports.default = { setLoggingConsole: setLoggingConsole, debug: debug, info: info, warn: warn, error: error, log: log, trace: trace }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/math.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 42); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 42: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.roundToDecimal = exports.valuesAreNumeric = exports.isCommaSeparatedNumber = exports.getDecimalPrecision = exports.degreeToRadian = exports.roundWithMinMax = exports.roundWithMin = exports.nearestPowerOfTen = exports.absPowerTen = exports.absLogBaseTen = exports.logBaseTen = exports.parseFloat = undefined; var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var HEX_REGEX = /^( )*(0x|-0x)/; var DECIMAL_OR_SCIENTIFIC_REGEX = /(^[-+]?[0-9]*[.]?[0-9]*$)|(^[-+]?[0-9][.]?[0-9]*e[-+]?[0-9][0-9]*$)/i; var COMMA_SEPARATED_NUMBER_REGEX = /(^[-+]?([0]|([1-9][0-9]{0,2})|(([1-9][0-9]{0,2}[,])([0-9]{3}[,])*[0-9]{3}))(([.][0-9]+)?)$)/; // an extended version of parseFloat that will handle numbers encoded in hex format (i.e. "0xff") // and is stricter than native JavaScript parseFloat for decimal numbers var strictParseFloat = function strictParseFloat(str) { // determine if the string is a hex number by checking if it begins with '0x' or '-0x', // in which case delegate to parseInt with a 16 radix if (HEX_REGEX.test(str)) { return parseInt(str, 16); } // if the number is not in decimal or scientific format, return NaN explicitly // instead of letting JavaScript do its loose parsing if (!DECIMAL_OR_SCIENTIFIC_REGEX.test(str)) { return NaN; } return parseFloat(str); }; exports.parseFloat = strictParseFloat; // shortcut for base-ten log, also rounds to four decimal points of precision to make pretty numbers var logBaseTen = exports.logBaseTen = function logBaseTen(num) { var result = Math.log(num) / Math.LN10; return Math.round(result * 10000) / 10000; }; // transforms numbers to a normalized log scale that can handle negative numbers // rounds to four decimal points of precision var absLogBaseTen = exports.absLogBaseTen = function absLogBaseTen(num) { if (typeof num !== 'number') { num = parseFloat(num); } if ((0, _underscore2.default)(num).isNaN()) { return num; } var isNegative = num < 0; if (isNegative) { num = -num; } if (num < 10) { num += (10 - num) / 10; } var result = logBaseTen(num); return isNegative ? -result : result; }; // reverses the transformation made by absLogBaseTen above // rounds to three decimal points of precision var absPowerTen = exports.absPowerTen = function absPowerTen(num) { if (typeof num !== 'number') { num = parseFloat(num); } if ((0, _underscore2.default)(num).isNaN()) { return num; } var isNegative = num < 0; var result = void 0; if (isNegative) { num = -num; } // eslint-disable-next-line no-restricted-properties result = Math.pow(10, num); if (result < 10) { result = 10 * (result - 1) / (10 - 1); } result = isNegative ? -result : result; return Math.round(result * 1000) / 1000; }; // calculates the power of ten that is closest to but not greater than the number // negative numbers are treated as their absolute value and the sign of the result is flipped before returning var nearestPowerOfTen = exports.nearestPowerOfTen = function nearestPowerOfTen(num) { if (typeof num !== 'number') { return NaN; } var isNegative = num < 0; num = isNegative ? -num : num; var log = logBaseTen(num); // eslint-disable-next-line no-restricted-properties var result = Math.pow(10, Math.floor(log)); return isNegative ? -result : result; }; var roundWithMin = exports.roundWithMin = function roundWithMin(value, min) { return Math.max(Math.round(value), min); }; var roundWithMinMax = exports.roundWithMinMax = function roundWithMinMax(value, min, max) { var roundVal = Math.round(value); if (roundVal < min) { return min; } if (roundVal > max) { return max; } return roundVal; }; var degreeToRadian = exports.degreeToRadian = function degreeToRadian(degree) { return degree * Math.PI / 180; }; // returns the number of digits of precision after the decimal point // optionally accepts a maximum number, after which point it will stop looking and return the max var getDecimalPrecision = exports.getDecimalPrecision = function getDecimalPrecision(num, max) { // By spec, toFixed will throw a RangeError if called with a precision greater than 20. max = Math.min(max || Infinity, 20); var precision = 0; while (precision < max && num.toFixed(precision) !== num.toString()) { precision += 1; } return precision; }; /** * Checks if the value passed in is some comma separated number * (e.g. "1,234", "300,000,000", and "12,345.67"). This function provides * a simple way to determine when a comma seperated value string should be * considered a number. * * @param {String} str - string to be checked * @returns {Boolean} - return true if (str) is a valid number grouped by either commas or decimals, false otherwise */ var isCommaSeparatedNumber = exports.isCommaSeparatedNumber = function isCommaSeparatedNumber(str) { return ( // if str is not a number grouped with either commas or decimals COMMA_SEPARATED_NUMBER_REGEX.test(str) ); }; /** * Checks if a list of values can be considered "numeric". * * Returns true if half or more of the non-null values can be parsed to a float. * * @param {Array} values * @return {Boolean} */ var valuesAreNumeric = exports.valuesAreNumeric = function valuesAreNumeric(values) { var numericCount = 0; var nonNullCount = 0; (0, _underscore2.default)(values).each(function (value) { // in the case of multivalue fields, use the first value if ((0, _underscore2.default)(value).isArray()) { value = value.length > 0 ? value[0] : null; } if ((0, _underscore2.default)(value).isNull()) { return; } nonNullCount++; var isNumber = !!strictParseFloat(value) || isCommaSeparatedNumber(value); if (isNumber) { numericCount++; } }); if (nonNullCount === 0) { return false; } return numericCount >= nonNullCount / 2; }; /** * * Rounds a number to a specifice exp base 10 * * @param {Number} value - number to round * @param {Number} exp - exp of base 10 of the decimal palce to round to * eg: exp=-1 rounds to the tenths place * exp=-2 rounds to the hundredth place * exp=0 rounds to the ones place * exp=1 rounds to the tens place * @return {Number|NaN} * * reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round */ var roundToDecimal = exports.roundToDecimal = function roundToDecimal(value, exp) { // If the exp is undefined or zero... if (typeof exp === 'undefined' || +exp === 0) { return Math.round(value); } value = +value; exp = +exp; // If the value is not a number or the exp is not an integer... if (isNaN(value) || !(typeof exp === 'number' && exp % 1 === 0)) { return NaN; } // Shift value = value.toString().split('e'); value = Math.round(+(value[0] + 'e' + (value[1] ? +value[1] - exp : -exp))); // Shift back value = value.toString().split('e'); return +(value[0] + 'e' + (value[1] ? +value[1] + exp : exp)); }; // TODO Remove default export exports.default = { parseFloat: strictParseFloat, logBaseTen: logBaseTen, absLogBaseTen: absLogBaseTen, absPowerTen: absPowerTen, nearestPowerOfTen: nearestPowerOfTen, roundWithMin: roundWithMin, roundWithMinMax: roundWithMinMax, degreeToRadian: degreeToRadian, getDecimalPrecision: getDecimalPrecision, valuesAreNumeric: valuesAreNumeric, roundToDecimal: roundToDecimal }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/parsing.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 88); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 1: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /***/ 32: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.interpolateColors = exports.getComputedOpacity = exports.getLuminance = exports.addAlphaToColor = exports.hexFromColor = exports.normalizeColor = exports.stripOutAlpha = exports.colorFromHex = undefined; var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // converts a hex number to its css-friendly counterpart, with optional alpha transparency field // returns null if the input is cannot be parsed to a valid number or if the number is out of range /* eslint-disable no-bitwise */ var colorFromHex = exports.colorFromHex = function colorFromHex(hexNum, alpha) { if (typeof hexNum !== 'number') { hexNum = parseInt(hexNum, 16); } if ((0, _underscore2.default)(hexNum).isNaN() || hexNum < 0x000000 || hexNum > 0xffffff) { return null; } var r = (hexNum & 0xff0000) >> 16; var g = (hexNum & 0x00ff00) >> 8; var b = hexNum & 0x0000ff; return alpha === undefined ? 'rgb(' + r + ',' + g + ',' + b + ')' : 'rgba(' + r + ',' + g + ',' + b + ',' + alpha + ')'; }; // converts an rgba value to rgb by stripping out the alpha. willl return the unchanged parameter // if an rgb value is passed rather than rgba var stripOutAlpha = exports.stripOutAlpha = function stripOutAlpha(color) { var rgb = color.split(','); var thirdChar = rgb[0].charAt(3); if (thirdChar === 'a') { rgb[0] = rgb[0].replace('rgba', 'rgb'); rgb[rgb.length - 1] = ')'; rgb = rgb.join(); rgb = rgb.replace(',)', ')'); return rgb; } return color; }; /** * Take an RGB value and convert to HEX equivalent. * * @param {String} rgb A RGB value following rgb(XXX, XXX, XXX) convention. * @type String * @return A HEX equivalent for a given RGB value with a leading '#' character. */ var getHEX = function getHEX(rgb) { var parts = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); var hex = (parts[1] << 16 | parts[2] << 8 | parts[3]).toString(16); return '#' + Array(6 - hex.length).concat([hex]).toString().replace(/,/g, 0); }; /** * Take an arbitrary RGB or HEX in long or shorthand notation and normalize to standard long HEX form with leading '#' character. * * @param {String} color A RGB or HEX color value in long or short notation. * @type String or null * @return A fully qualified 6 character hexadecimal value or with leading '#' character or null if it can't be processed. */ var normalizeColor = exports.normalizeColor = function normalizeColor(color) { var normalizedColor = null; if (typeof color === 'string' && color.charAt(0) === '#') { if (color.length === 4) { normalizedColor = color + color.charAt(1) + color.charAt(2) + color.charAt(3); } else { normalizedColor = color; } } else { try { normalizedColor = getHEX(color); } catch (e) {} // eslint-disable-line no-empty } return normalizedColor; }; // coverts a color string in either hex (must be long form) or rgb format into its corresponding hex number // returns zero if the color string can't be parsed as either format // TODO: either add support for short form or emit an error var hexFromColor = exports.hexFromColor = function hexFromColor(color) { var normalizedColor = normalizeColor(color); return normalizedColor ? parseInt(normalizedColor.replace('#', '0x'), 16) : 0; }; // given a color string (in long-form hex or rgb form) or a hex number, // formats the color as an rgba string with the given alpha transparency // TODO: currently fails somewhat silently if an un-parseable or out-of-range input is given var addAlphaToColor = exports.addAlphaToColor = function addAlphaToColor(color, alpha) { var colorAsHex = typeof color === 'number' ? color : hexFromColor(color); return colorFromHex(colorAsHex, alpha); }; // calculate the luminance of a color based on its hex value // returns zero if the input is cannot be parsed to a valid number or if the number is out of range // equation for luminance found at http://en.wikipedia.org/wiki/Luma_(video) var getLuminance = exports.getLuminance = function getLuminance(hexNum) { if (typeof hexNum !== 'number') { hexNum = parseInt(hexNum, 16); } if (isNaN(hexNum) || hexNum < 0x000000 || hexNum > 0xffffff) { return 0; } var r = (hexNum & 0xff0000) >> 16; var g = (hexNum & 0x00ff00) >> 8; var b = hexNum & 0x0000ff; return Math.round(0.2126 * r + 0.7152 * g + 0.0722 * b); }; // compute the user-visible fill opacity of an SVG element // an opacity defined as part of the 'fill' color with rgba(...) syntax will take precedence over the 'fill-opacity' var getComputedOpacity = exports.getComputedOpacity = function getComputedOpacity(element) { var fill = _jquery2.default.trim(element.attr('fill')); var enforceValidOpacity = function enforceValidOpacity(opacityStr) { var parsed = parseFloat(opacityStr); return parsed >= 0 && parsed <= 1 ? parsed : 1; }; if (!/^rgba/.test(fill)) { return enforceValidOpacity(element.attr('fill-opacity')); } var rgba = fill.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)$/); return rgba && rgba.length > 4 ? enforceValidOpacity(rgba[4]) : 1; }; var interpolateColors = exports.interpolateColors = function interpolateColors(color1, color2, p) { var r1 = color1 >> 16 & 0xff; var g1 = color1 >> 8 & 0xff; var b1 = color1 & 0xff; var r2 = color2 >> 16 & 0xff; var g2 = color2 >> 8 & 0xff; var b2 = color2 & 0xff; var rInterp = r1 + Math.round((r2 - r1) * p); var gInterp = g1 + Math.round((g2 - g1) * p); var bInterp = b1 + Math.round((b2 - b1) * p); return rInterp << 16 | gInterp << 8 | bInterp; }; /***/ }), /***/ 88: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getRotation = exports.getYAxisProperties = exports.getXAxisProperties = exports.yAxisKeyIsTrumped = exports.xAxisKeyIsTrumped = exports.getLegendProperties = exports.arraysAreEquivalent = exports.stringToHexObject = exports.stringToHexArray = exports.capitalize = exports.stringToArray = exports.stringToFieldList = exports.stringToObject = exports.normalizeBoolean = exports.filterPropsByRegex = exports.escapeSVG = exports.escapeHtml = exports.unescapeChars = exports.escapeSafeSplit = exports.trimWhitespace = undefined; var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); var _color = __webpack_require__(32); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // TODO: replace with $.trim var trimWhitespace = exports.trimWhitespace = function trimWhitespace(str) { return str.replace(/^\s*/, '').replace(/\s*$/, ''); }; // Remove leading and trailing quotes (single or double) -- must be the first and last char. // ["'] matches a quote, \1 matches whichever type of quote was captured by the first match. /* eslint-disable no-continue */ var trimQuotes = function trimQuotes(str) { return str.replace(/^(["'])(.*)\1$/, '$2'); }; var escapeSafeSplit = exports.escapeSafeSplit = function escapeSafeSplit(str, delimiter, escapeChar) { escapeChar = escapeChar || '\\'; var unescapedPieces = str.split(delimiter); // the escaped pieces list initially contains the first element of the unescaped pieces list // we use shift() to also remove that element from the unescaped pieces var escapedPieces = [unescapedPieces.shift()]; // now loop over the remaining unescaped pieces // if the last escaped piece ends in an escape character, perform a concatenation to undo the split // otherwise append the new piece to the escaped pieces list (0, _underscore2.default)(unescapedPieces).each(function (piece) { var lastEscapedPiece = (0, _underscore2.default)(escapedPieces).last(); if ((0, _underscore2.default)(lastEscapedPiece).last() === escapeChar) { escapedPieces[escapedPieces.length - 1] += delimiter + piece; } else { escapedPieces.push(piece); } }); return escapedPieces; }; var unescapeChars = exports.unescapeChars = function unescapeChars(str, charList) { (0, _underscore2.default)(charList).each(function (chr) { // looks weird, but the first four slashes add a single escaped '\' to the regex // and the next two escape the character itself within the regex var regex = new RegExp('\\\\\\' + chr, 'g'); str = str.replace(regex, chr); }); return str; }; var escapeHtml = exports.escapeHtml = function escapeHtml(input) { return ('' + input).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); }; var escapeSVG = exports.escapeSVG = function escapeSVG(input) { return ('' + input).replace(//g, '>'); }; // uses the given regex to filter out any properties whose key doesn't match // will return an empty object if the props input is not a map var filterPropsByRegex = exports.filterPropsByRegex = function filterPropsByRegex(props, regex) { if (!(regex instanceof RegExp)) { return props; } var key = void 0; var filtered = {}; // eslint-disable-next-line no-restricted-syntax for (key in props) { // eslint-disable-next-line no-prototype-builtins if (props.hasOwnProperty(key) && regex.test(key)) { filtered[key] = props[key]; } } return filtered; }; // normalize a boolean, a default state can optionally be defined for when the value is undefined var normalizeBoolean = exports.normalizeBoolean = function normalizeBoolean(value, defaultState) { if ((0, _underscore2.default)(value).isUndefined()) { return !!defaultState; } if (typeof value === 'string') { value = value.toLowerCase(); } switch (value) { case true: case 1: case '1': case 'yes': case 'on': case 'true': return true; case false: case 0: case '0': case 'no': case 'off': case 'false': return false; default: return value; } }; // translates a JSON-style serialized map in to a primitive object // cannot handle nested objects // value strings should be un-quoted or double-quoted and will be stripped of leading/trailing whitespace // will not cast to numbers or booleans var stringToObject = exports.stringToObject = function stringToObject(str) { if (!str) { return false; } var i = void 0; var loopKv = void 0; var loopKey = void 0; var map = {}; str = trimWhitespace(str); var strLen = str.length; if (str.charAt(0) !== '{' || str.charAt(strLen - 1) !== '}') { return false; } if (/^{\s*}$/.test(str)) { return {}; } str = str.substr(1, strLen - 2); var propList = escapeSafeSplit(str, ','); for (i = 0; i < propList.length; i++) { loopKv = escapeSafeSplit(propList[i], ':'); if (loopKv.length !== 2) { return false; } loopKey = trimWhitespace(loopKv[0]); if (loopKey[0] === '"') { loopKey = loopKey.substring(1); } if ((0, _underscore2.default)(loopKey).last() === '"') { loopKey = loopKey.substring(0, loopKey.length - 1); } loopKey = unescapeChars(loopKey, ['{', '}', '[', ']', '(', ')', ',', ':', '"']); map[loopKey] = trimQuotes(trimWhitespace(loopKv[1])); } return map; }; /** * Deserializes a string into a field list. */ var stringToFieldList = exports.stringToFieldList = function stringToFieldList(strList) { if (typeof strList !== 'string' || !strList) return []; var items = []; var fieldNameBuffer = []; var inquote = false; var str = _jquery2.default.trim(strList); for (var i = 0, j = str.length; i < j; i++) { if (str.charAt(i) === '\\') { var nextidx = i + 1; if (j > nextidx && (str.charAt(nextidx) === '\\' || str.charAt(nextidx) === '"')) { fieldNameBuffer.push(str.charAt(nextidx)); i++; continue; } else { fieldNameBuffer.push(str.charAt(i)); continue; } } if (str.charAt(i) === '"') { if (!inquote) { inquote = true; continue; } else { inquote = false; items.push(fieldNameBuffer.join('')); fieldNameBuffer = []; continue; } } if (str.charAt(i) === ',' && !inquote) { if (fieldNameBuffer.length > 0) { items.push(fieldNameBuffer.join('')); } fieldNameBuffer = []; continue; } fieldNameBuffer.push(str.charAt(i)); } if (fieldNameBuffer.length > 0) items.push(fieldNameBuffer.join('')); return items.map(function (element) { return element.trim(); }); }; // translates a JSON-style serialized list in to a primitive array // cannot handle nested arrays var stringToArray = exports.stringToArray = function stringToArray(str) { if (!str) { return false; } str = trimWhitespace(str); var strLen = str.length; if (str.charAt(0) !== '[' || str.charAt(strLen - 1) !== ']') { return false; } if (/^\[\s*]$/.test(str)) { return []; } str = str.substr(1, strLen - 2); return stringToFieldList(str); }; /** * Changes the first letter of first word in a string to upper-case. * All other letters remain unchanged. * * @param str {String} - string to capitalize. * @returns {String} - Returns a string with the first letter of first word upper-case. */ var capitalize = exports.capitalize = function capitalize(str) { return str.charAt(0).toUpperCase() + str.slice(1); }; var looseParseColor = function looseParseColor(colorStr) { if (_underscore2.default.isNumber(colorStr)) { return colorStr; } if (colorStr.substring(0, 1) === '#') { return (0, _color.hexFromColor)(colorStr); } // For legacy reasons, assume that any string is a hex number representation, // regardless of whether it starts with a '0x' (SPL-124191) return parseInt(colorStr, 16); }; var stringToHexArray = exports.stringToHexArray = function stringToHexArray(colorStr) { var i = void 0; var hexColor = void 0; var colors = void 0; try { colors = JSON.parse(colorStr); } catch (e) { colors = stringToArray(colorStr); } if (!colors) { return false; } for (i = 0; i < colors.length; i++) { hexColor = looseParseColor(colors[i]); if (isNaN(hexColor)) { return false; } colors[i] = hexColor; } return colors; }; var stringToHexObject = exports.stringToHexObject = function stringToHexObject(colorStr) { var parsedInput = void 0; try { parsedInput = JSON.parse(colorStr); } catch (e) { parsedInput = stringToObject(colorStr); } if (!parsedInput) { return false; } var hexObject = {}; (0, _underscore2.default)(parsedInput).each(function (color, key) { hexObject[key] = looseParseColor(color) || 0; }); return hexObject; }; // a simple utility method for comparing arrays, assumes one-dimensional arrays of primitives, // performs strict comparisons var arraysAreEquivalent = exports.arraysAreEquivalent = function arraysAreEquivalent(array1, array2) { // make sure these are actually arrays if (!(array1 instanceof Array) || !(array2 instanceof Array)) { return false; } if (array1 === array2) { // true if they are the same object return true; } if (array1.length !== array2.length) { // false if they are different lengths return false; } // false if any of their elements don't match for (var i = 0; i < array1.length; i++) { if (array1[i] !== array2[i]) { return false; } } return true; }; var getLegendProperties = exports.getLegendProperties = function getLegendProperties(properties) { var remapped = {}; var legendProps = filterPropsByRegex(properties, /legend[.]/); (0, _underscore2.default)(legendProps).each(function (value, key) { remapped[key.replace(/^legend[.]/, '')] = value; }); return remapped; }; // checks if the given x-axis key is deprecated, and if so returns true if that key's // non-deprecated counterpart is set in the properties map, otherwise returns false var xAxisKeyIsTrumped = exports.xAxisKeyIsTrumped = function xAxisKeyIsTrumped(key, properties) { if (!/primaryAxis/.test(key)) { return false; } if (/primaryAxisTitle/.test(key)) { return properties[key.replace(/primaryAxisTitle/, 'axisTitleX')]; } return properties[key.replace(/primaryAxis/, 'axisX')]; }; // checks if the given y-axis key is deprecated, and if so returns true if that key's // non-deprecated counterpart is set in the properties map, otherwise returns false var yAxisKeyIsTrumped = exports.yAxisKeyIsTrumped = function yAxisKeyIsTrumped(key, properties) { if (!/secondaryAxis/.test(key)) { return false; } if (/secondaryAxisTitle/.test(key)) { return properties[key.replace(/secondaryAxisTitle/, 'axisTitleY')]; } return properties[key.replace(/secondaryAxis/, 'axisY')]; }; // returns a map of properties that apply either to the x-axis or to x-axis labels // all axis-related keys are renamed to 'axis' and all axis-label-related keys are renamed to 'axisLabels' var getXAxisProperties = exports.getXAxisProperties = function getXAxisProperties(properties) { var key = void 0; var newKey = void 0; var remapped = {}; var axisProps = filterPropsByRegex(properties, /(axisX|primaryAxis|axisLabelsX|axisTitleX|gridLinesX)/); // eslint-disable-next-line no-restricted-syntax for (key in axisProps) { // eslint-disable-next-line no-prototype-builtins if (axisProps.hasOwnProperty(key)) { if (!xAxisKeyIsTrumped(key, properties)) { newKey = key.replace(/(axisX|primaryAxis)/, 'axis'); newKey = newKey.replace(/axisLabelsX/, 'axisLabels'); newKey = newKey.replace(/axisTitleX/, 'axisTitle'); newKey = newKey.replace(/gridLinesX/, 'gridLines'); remapped[newKey] = axisProps[key]; } } } return remapped; }; // returns a map of properties that apply either to the y-axis or to y-axis labels // all axis-related keys are renamed to 'axis' and all axis-label-related keys are renamed to 'axisLabels' var getYAxisProperties = exports.getYAxisProperties = function getYAxisProperties(properties, axisIndex) { var key = void 0; var newKey = void 0; var remapped = {}; var axisProps = void 0; axisIndex = (properties && normalizeBoolean(properties['layout.splitSeries']) ? 0 : axisIndex) || 0; if (axisIndex === 0) { axisProps = filterPropsByRegex(properties, /(axisY[^2]|secondaryAxis|axisLabelsY(?!2.*|\.majorLabelStyle\.rotation|\.majorLabelStyle\.overflowMode)|axisTitleY[^2]|gridLinesY[^2])/); } else if (axisIndex === 1) { axisProps = filterPropsByRegex(properties, /(axisY2(?!\.enabled)|axisLabelsY2(?!\.majorLabelStyle\.rotation|\.majorLabelStyle\.overflowMode)|axisTitleY2|gridLinesY2)/); if (!axisProps['axisY2.scale'] || axisProps['axisY2.scale'] === 'inherit') { axisProps['axisY2.scale'] = properties ? properties['axisY.scale'] || 'linear' : 'linear'; } // An empty or invalid value for showing the grid lines for the second y-axis should map to hiding them. if (_underscore2.default.isUndefined(axisProps['gridLinesY2.showMajorLines']) || typeof normalizeBoolean(axisProps['gridLinesY2.showMajorLines']) !== 'boolean') { axisProps['gridLinesY2.showMajorLines'] = 0; } axisProps['axisLabelsY2.extendsAxisRange'] = properties ? properties['axisLabelsY.extendsAxisRange'] || true : true; } else { throw new Error('Axis index must be 0 or 1'); } // eslint-disable-next-line no-restricted-syntax for (key in axisProps) { // eslint-disable-next-line no-prototype-builtins if (axisProps.hasOwnProperty(key)) { if (!yAxisKeyIsTrumped(key, properties)) { newKey = key.replace(/(axisY2|axisY|secondaryAxis)/, 'axis'); newKey = newKey.replace(/axisLabelsY2|axisLabelsY/, 'axisLabels'); newKey = newKey.replace(/axisTitleY2|axisTitleY/, 'axisTitle'); newKey = newKey.replace(/gridLinesY2|gridLinesY/, 'gridLines'); remapped[newKey] = axisProps[key]; } } } return remapped; }; // gets axis label rotation var getRotation = exports.getRotation = function getRotation(rotationProperty) { var PERMITTED_ROTATIONS = [-90, -45, 0, 45, 90]; var DEFAULT_ROTATION = 0; var labelRotation = parseInt(rotationProperty, 10); if (_underscore2.default.indexOf(PERMITTED_ROTATIONS, labelRotation) === -1) { return DEFAULT_ROTATION; } return labelRotation; }; /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting-utils/testing.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 89); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /* 2 */ /***/ (function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func : Function('return this')(); if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(9)(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 5 */ /***/ (function(module, exports) { var core = module.exports = { version: '2.6.12' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(7); var createDesc = __webpack_require__(26); module.exports = __webpack_require__(4) ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(13); var IE8_DOM_DEFINE = __webpack_require__(34); var toPrimitive = __webpack_require__(35); var dP = Object.defineProperty; exports.f = __webpack_require__(4) ? Object.defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return dP(O, P, Attributes); } catch (e) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /* 8 */, /* 9 */ /***/ (function(module, exports) { module.exports = function (exec) { try { return !!exec(); } catch (e) { return true; } }; /***/ }), /* 10 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(2); var core = __webpack_require__(5); var ctx = __webpack_require__(12); var hide = __webpack_require__(6); var has = __webpack_require__(10); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { var IS_FORCED = type & $export.F; var IS_GLOBAL = type & $export.G; var IS_STATIC = type & $export.S; var IS_PROTO = type & $export.P; var IS_BIND = type & $export.B; var IS_WRAP = type & $export.W; var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); var expProto = exports[PROTOTYPE]; var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; var key, own, out; if (IS_GLOBAL) source = name; for (key in source) { // contains in native own = !IS_FORCED && target && target[key] !== undefined; if (own && has(exports, key)) continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function (C) { var F = function (a, b, c) { if (this instanceof C) { switch (arguments.length) { case 0: return new C(); case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if (IS_PROTO) { (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(24); module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(3); module.exports = function (it) { if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /* 14 */ /***/ (function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil; var floor = Math.floor; module.exports = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }), /* 15 */ /***/ (function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(27); var defined = __webpack_require__(15); module.exports = function (it) { return IObject(defined(it)); }; /***/ }), /* 17 */, /* 18 */ /***/ (function(module, exports) { var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(14); var min = Math.min; module.exports = function (it) { return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(28)('keys'); var uid = __webpack_require__(21); module.exports = function (key) { return shared[key] || (shared[key] = uid(key)); }; /***/ }), /* 21 */ /***/ (function(module, exports) { var id = 0; var px = Math.random(); module.exports = function (key) { return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }), /* 22 */, /* 23 */ /***/ (function(module, exports) { module.exports = true; /***/ }), /* 24 */ /***/ (function(module, exports) { module.exports = function (it) { if (typeof it != 'function') throw TypeError(it + ' is not a function!'); return it; }; /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(3); var document = __webpack_require__(2).document; // typeof document.createElement is 'object' in old IE var is = isObject(document) && isObject(document.createElement); module.exports = function (it) { return is ? document.createElement(it) : {}; }; /***/ }), /* 26 */ /***/ (function(module, exports) { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(18); // eslint-disable-next-line no-prototype-builtins module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(5); var global = __webpack_require__(2); var SHARED = '__core-js_shared__'; var store = global[SHARED] || (global[SHARED] = {}); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: core.version, mode: __webpack_require__(23) ? 'pure' : 'global', copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); /***/ }), /* 29 */ /***/ (function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }), /* 30 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(15); module.exports = function (it) { return Object(defined(it)); }; /***/ }), /* 31 */, /* 32 */, /* 33 */, /* 34 */ /***/ (function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(4) && !__webpack_require__(9)(function () { return Object.defineProperty(__webpack_require__(25)('div'), 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(3); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (it, S) { if (!isObject(it)) return it; var fn, val; if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(37); var enumBugKeys = __webpack_require__(29); module.exports = Object.keys || function keys(O) { return $keys(O, enumBugKeys); }; /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { var has = __webpack_require__(10); var toIObject = __webpack_require__(16); var arrayIndexOf = __webpack_require__(38)(false); var IE_PROTO = __webpack_require__(20)('IE_PROTO'); module.exports = function (object, names) { var O = toIObject(object); var i = 0; var result = []; var key; for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }), /* 38 */ /***/ (function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(16); var toLength = __webpack_require__(19); var toAbsoluteIndex = __webpack_require__(39); module.exports = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) if (IS_INCLUDES || index in O) { if (O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }), /* 39 */ /***/ (function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(14); var max = Math.max; var min = Math.min; module.exports = function (index, length) { index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }), /* 40 */, /* 41 */, /* 42 */, /* 43 */, /* 44 */, /* 45 */, /* 46 */, /* 47 */, /* 48 */, /* 49 */, /* 50 */, /* 51 */, /* 52 */, /* 53 */, /* 54 */, /* 55 */, /* 56 */, /* 57 */, /* 58 */, /* 59 */, /* 60 */, /* 61 */, /* 62 */, /* 63 */, /* 64 */, /* 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 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createGlobalReference = exports.gaugeAddTestingMetadata = exports.gaugeUpdate = exports.initializeTestingMetaData = exports.getPointCoordinates = undefined; var _keys = __webpack_require__(90); var _keys2 = _interopRequireDefault(_keys); var _jquery = __webpack_require__(1); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var sanitizeClassName = function sanitizeClassName(className) { // the className can potentially come from the search results, so make sure it is valid before // attempting to insert it... // first remove any leading white space className = className.replace(/\s/g, ''); // if the className doesn't start with a letter or a '-' followed by a letter, it should not be inserted if (!/^[-]?[A-Za-z]/.test(className)) { return ''; } // now filter out anything that is not a letter, number, '-', or '_' return className.replace(/[^A-Za-z0-9_-]/g, ''); }; var addClassToElement = function addClassToElement(elem, className) { if (!elem) { return; } className = sanitizeClassName(className); if (className === '') { return; } if (elem.className.baseVal) { elem.className.baseVal += ' ' + className; } else { elem.className.baseVal = className; } }; var getPointCoordinates = exports.getPointCoordinates = function getPointCoordinates(hcChart, seriesIndex, pointIndex) { var series = hcChart.series[seriesIndex]; var seriesType = series.type; var point = series.data[pointIndex]; var containerOffset = (0, _jquery2.default)(hcChart.container).offset(); if (seriesType in { line: true, area: true, scatter: true }) { // handle the chart overlay case for bar charts if (hcChart.inverted) { return { x: series.yAxis.translate(point.y) + containerOffset.left + hcChart.plotLeft, y: hcChart.plotHeight + hcChart.plotTop + containerOffset.top - series.xAxis.translate(point.x) }; } return { x: point.plotX + containerOffset.left + hcChart.plotLeft, y: point.plotY + containerOffset.top + hcChart.plotTop }; } if (seriesType === 'column') { var shapeArgs = point.shapeArgs; return { x: point.plotX + containerOffset.left + hcChart.plotLeft, y: point.plotY + containerOffset.top + hcChart.plotTop + shapeArgs.height / 2 }; } if (seriesType === 'bar') { return { x: containerOffset.left + hcChart.plotLeft + hcChart.plotWidth - point.shapeArgs.y - point.shapeArgs.height / 2, y: containerOffset.top + hcChart.plotTop + hcChart.plotHeight - series.xAxis.translate(point.x) - series.barW / 2 - series.pointXOffset }; } if (seriesType === 'pie') { var centerX = series.center[0]; var centerY = series.center[1]; var labelX = point.tooltipPos[0]; var labelY = point.tooltipPos[1]; return { x: (centerX + labelX) / 2 + containerOffset.left + hcChart.plotLeft, y: (centerY + labelY) / 2 + containerOffset.top + hcChart.plotTop }; } return {}; }; var addDataClasses = function addDataClasses(chart) { var seriesName = void 0; var dataElements = void 0; (0, _jquery2.default)('.highcharts-series', (0, _jquery2.default)(chart.container)).each(function (i, series) { seriesName = chart.series[i].name; (0, _jquery2.default)(series).attr('id', seriesName + '-series'); dataElements = (0, _jquery2.default)('rect, path', (0, _jquery2.default)(series)); dataElements.each(function (j, elem) { addClassToElement(elem, 'spl-display-object'); }); }); }; var addAxisClasses = function addAxisClasses(chart) { var labelElements = void 0; var i = void 0; (0, _underscore2.default)(chart.xAxis).each(function (axis, j) { var className = chart.inverted ? 'vertical-axis' : 'horizontal-axis'; addClassToElement(axis.axisGroup.element, className); addClassToElement(axis.labelGroup.element, className); addClassToElement(axis.gridGroup.element, 'x-axis-' + j + '-grid-group'); }); (0, _underscore2.default)(chart.yAxis).each(function (axis, j) { var className = chart.inverted ? 'horizontal-axis' : 'vertical-axis'; addClassToElement(axis.axisGroup.element, className); addClassToElement(axis.labelGroup.element, className); addClassToElement(axis.gridGroup.element, 'y-axis-' + j + '-grid-group'); }); (0, _jquery2.default)('.highcharts-axis, .highcharts-axis-labels', (0, _jquery2.default)(chart.container)).each(function (k, elem) { labelElements = (0, _jquery2.default)('text', (0, _jquery2.default)(elem)); labelElements.each(function (j, label) { addClassToElement(label, 'spl-text-label'); }); }); var labelAxisTickmarks = function labelAxisTickmarks(axis) { (0, _underscore2.default)(axis.ticks).each(function (tick) { if (tick.mark && tick.mark.element) { addClassToElement(tick.mark.element, 'highcharts-axis-tickmark'); } }); }; for (i = 0; i < chart.xAxis.length; i++) { if (chart.xAxis[i].axisTitle) { addClassToElement(chart.xAxis[i].axisTitle.element, 'x-axis-title'); } labelAxisTickmarks(chart.xAxis[i]); } for (i = 0; i < chart.yAxis.length; i++) { if (chart.yAxis[i].axisTitle) { addClassToElement(chart.yAxis[i].axisTitle.element, 'y-axis-title'); } labelAxisTickmarks(chart.yAxis[i]); } }; var addLegendClasses = function addLegendClasses(chart) { var loopSeriesName = void 0; if (chart.legend && chart.legend.down) { addClassToElement(chart.legend.down.element, 'page-down-button'); } if (chart.legend && chart.legend.up) { addClassToElement(chart.legend.up.element, 'page-up-button'); } (0, _jquery2.default)(chart.series).each(function (i, series) { if (!series.legendItem) { return; } loopSeriesName = series.legendItem.textStr; if (series.legendSymbol) { addClassToElement(series.legendSymbol.element, 'symbol'); addClassToElement(series.legendSymbol.element, loopSeriesName + '-symbol'); } if (series.legendLine) { addClassToElement(series.legendLine.element, 'symbol'); addClassToElement(series.legendLine.element, loopSeriesName + '-symbol'); } if (series.legendItem) { addClassToElement(series.legendItem.element, 'legend-label'); } }); }; var addTimeTooltipClasses = function addTimeTooltipClasses() { var i = void 0; var loopSplit = void 0; var toolTipCells = void 0; var $tooltip = (0, _jquery2.default)('.highcharts-tooltip'); var tooltipElements = (0, _jquery2.default)('tr', $tooltip); for (i = 0; i < tooltipElements.length; i++) { toolTipCells = (0, _jquery2.default)('td', tooltipElements[i]); if (i === 0) { (0, _jquery2.default)(toolTipCells[0]).addClass('time-value'); (0, _jquery2.default)(toolTipCells[0]).addClass('time'); } else { loopSplit = tooltipElements[i].textContent.split(':'); (0, _jquery2.default)(toolTipCells[0]).addClass('key'); (0, _jquery2.default)(toolTipCells[0]).addClass(sanitizeClassName(loopSplit[0] + '-key')); (0, _jquery2.default)(toolTipCells[1]).addClass('value'); (0, _jquery2.default)(toolTipCells[1]).addClass(sanitizeClassName(loopSplit[0] + '-value')); } } }; var addTooltipClasses = function addTooltipClasses() { var i = void 0; var loopSplit = void 0; var toolTipCells = void 0; var $tooltip = (0, _jquery2.default)('.highcharts-tooltip'); var tooltipElements = (0, _jquery2.default)('tr', $tooltip); for (i = 0; i < tooltipElements.length; i++) { toolTipCells = (0, _jquery2.default)('td', tooltipElements[i]); loopSplit = tooltipElements[i].textContent; (0, _jquery2.default)(toolTipCells[0]).addClass('key'); (0, _jquery2.default)(toolTipCells[0]).addClass(sanitizeClassName(loopSplit[0] + '-key')); (0, _jquery2.default)(toolTipCells[1]).addClass('value'); (0, _jquery2.default)(toolTipCells[1]).addClass(sanitizeClassName(loopSplit[0] + '-value')); } }; var initializeTestingMetaData = exports.initializeTestingMetaData = function initializeTestingMetaData(chartWrapper, xFields, type) { chartWrapper.$container.addClass('highcharts-wrapper'); // make sure the wrapper container has an id, this will be used in createGlobalReference if (!chartWrapper.$container.attr('id')) { chartWrapper.$container.attr('id', chartWrapper.id); } var chart = chartWrapper.hcChart; (0, _jquery2.default)(chart.container).addClass(type); addDataClasses(chart); addAxisClasses(chart); if (chart.options.legend.enabled) { addLegendClasses(chart); } if (chart.tooltip && chart.tooltip.refresh) { var tooltipRefresh = chart.tooltip.refresh; var decorateTooltip = _underscore2.default.find(xFields, function (field) { return field === '_time'; }) === '_time' ? addTimeTooltipClasses : addTooltipClasses; chart.tooltip.refresh = function (point) { tooltipRefresh.call(chart.tooltip, point); decorateTooltip(chart); }; } chart.getPointCoordinates = (0, _underscore2.default)(getPointCoordinates).bind(null, chart); }; // //////////////////////// // Gauge specific testing var gaugeUpdate = exports.gaugeUpdate = function gaugeUpdate(container, value) { container.attr('data-gauge-value', value); }; var gaugeAddTestingMetadata = exports.gaugeAddTestingMetadata = function gaugeAddTestingMetadata(gaugeWrapper, elements, typeName, value) { // make sure the wrapper container has an id, this will be used in createGlobalReference if (!gaugeWrapper.$container.attr('id')) { gaugeWrapper.$container.attr('id', gaugeWrapper.id); } var innerContainer = gaugeWrapper.$hcContainer; innerContainer.addClass(typeName); gaugeUpdate(innerContainer, value); if (elements.valueDisplay) { addClassToElement(elements.valueDisplay.element, 'gauge-value'); } var elementKeys = (0, _keys2.default)(elements); elementKeys.filter(function (key) { return (/^tickLabel_/.test(key) ); }).forEach(function (key) { addClassToElement(elements[key].element, 'gauge-tick-label'); }); elementKeys.filter(function (key) { return (/^colorBand/.test(key) ); }).forEach(function (key) { addClassToElement(elements[key].element, 'gauge-color-band'); }); (0, _jquery2.default)('.gauge-color-band').each(function addDataColorBand() { (0, _jquery2.default)(this).attr('data-band-color', (0, _jquery2.default)(this).attr('fill')); }); // this is bad OOP but I think it's better to keep all of this code in one method if (elements.fill) { (0, _jquery2.default)(elements.fill.element).attr('data-indicator-color', (0, _jquery2.default)(elements.fill.element).attr('fill')); } if (elements.needle) { addClassToElement(elements.needle.element, 'gauge-indicator'); } if (elements.markerLine) { addClassToElement(elements.markerLine.element, 'gauge-indicator'); } }; var createGlobalReference = exports.createGlobalReference = function createGlobalReference(wrapperObject, chartObject) { var Splunk = window.Splunk; if (!Splunk) { return; } Splunk.JSCharting = Splunk.JSCharting || {}; Splunk.JSCharting.chartByIdMap = Splunk.JSCharting.chartByIdMap || {}; var id = wrapperObject.$container.attr('id'); Splunk.JSCharting.chartByIdMap[id] = chartObject; }; /***/ }), /* 90 */ /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(91), __esModule: true }; /***/ }), /* 91 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(92); module.exports = __webpack_require__(5).Object.keys; /***/ }), /* 92 */ /***/ (function(module, exports, __webpack_require__) { // 19.1.2.14 Object.keys(O) var toObject = __webpack_require__(30); var $keys = __webpack_require__(36); __webpack_require__(93)('keys', function () { return function keys(it) { return $keys(toObject(it)); }; }); /***/ }), /* 93 */ /***/ (function(module, exports, __webpack_require__) { // most Object methods by ES6 should accept primitives var $export = __webpack_require__(11); var core = __webpack_require__(5); var fails = __webpack_require__(9); module.exports = function (KEY, exec) { var fn = (core.Object || {})[KEY] || Object[KEY]; var exp = {}; exp[KEY] = exec(fn); $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); }; /***/ }) /******/ ]); /***/ }), /***/ "./node_modules/@splunk/charting-utils/time.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 94); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /***/ 22: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable */ /* * Copied from js/stubs/i18n.js in the core UI repository, since the logic is unlikely to change and this saves * us the trouble of taking a dependency on the SplunkWebCore bower module. */ /* * monkey patches to the i18n library * see SPL-75565 */ // NOTE: this code block is duplicated in the util/test_i18n_patches.html unit test. // any changes made here must also be reflected there. if (window.locale_name() in { ko_KR: true, zh_CN: true, zh_TW: true }) { window._i18n_locale.date_formats['short'] = { pattern: 'yy/MM/dd', format: '%(yy)s/%(MM)s/%(dd)s' }; window._i18n_locale.date_formats['medium'] = { pattern: 'yyyy/MM/dd', format: '%(yyyy)s/%(MM)s/%(dd)s' }; window._i18n_locale.time_formats['short'] = { pattern: 'H:mm', format: '%(H)s:%(mm)s' }; window._i18n_locale.time_formats['medium'] = { pattern: 'H:mm:ss', format: '%(H)s:%(mm)s:%(ss)s' }; } var asianLanguageDateReplacements = [[/^ccc MMM d$/, 'M/d (ccc)'], [/^YYYY-MM/, 'YYYY/MM'], [/MM-dd/, 'MM/dd']]; // maintain a hash of locales where custom string replacements are needed to get correct translation var FORMAT_DATE_REPLACEMENTS = { ja_JP: asianLanguageDateReplacements, ko_KR: asianLanguageDateReplacements, zh_CN: asianLanguageDateReplacements, zh_TW: asianLanguageDateReplacements }; // maintain a list of replacements needed when a locale specifies that day comes before month var DAY_FIRST_FORMATS = [['MMM d', 'd MMM']]; var oldFormatDate = window.format_date; window.format_date = function (date, format) { format = format || 'medium'; var i, replacements, locale = window.locale_name(); if (format && typeof format === 'string' && window.locale_uses_day_before_month()) { replacements = DAY_FIRST_FORMATS; for (i = 0; i < replacements.length; i++) { format = format.replace(replacements[i][0], replacements[i][1]); } } if (format && typeof format === 'string' && locale in FORMAT_DATE_REPLACEMENTS) { replacements = FORMAT_DATE_REPLACEMENTS[locale]; for (i = 0; i < replacements.length; i++) { var replacement = replacements[i]; format = format.replace(replacement[0], replacement[1]); } } return oldFormatDate(date, format); }; exports.default = { _: window.gettext, ungettext: window.ungettext, format_decimal: window.format_decimal, format_number: window.format_number, format_percent: window.format_percent, format_scientific: window.format_scientific, format_date: window.format_date, format_datetime: window.format_datetime, format_time: window.format_time, format_datetime_microseconds: window.format_datetime_microseconds, format_time_microseconds: window.format_time_microseconds, locale_uses_day_before_month: window.locale_uses_day_before_month, format_datetime_range: window.format_datetime_range, locale_name: window.locale_name, DateTime: window.DateTime, moment_install: window.moment_install, numeral_install: window.numeral_install, jQuery_ui_datepicker_install: window.jQuery_ui_datepicker_install }; module.exports = exports['default']; /***/ }), /***/ 43: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _console = window.console; var setLoggingConsole = exports.setLoggingConsole = function setLoggingConsole(newConsole) { _console = newConsole; }; var bindConsole = function bindConsole(fnName) { return function () { var _console2; (_console2 = _console)[fnName].apply(_console2, arguments); }; }; var debug = exports.debug = bindConsole('debug'); var info = exports.info = bindConsole('info'); var warn = exports.warn = bindConsole('warn'); var error = exports.error = bindConsole('error'); var log = exports.log = bindConsole('log'); var trace = exports.trace = bindConsole('trace'); exports.default = { setLoggingConsole: setLoggingConsole, debug: debug, info: info, warn: warn, error: error, log: log, trace: trace }; /***/ }), /***/ 94: /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _underscore = __webpack_require__(0); var _underscore2 = _interopRequireDefault(_underscore); var _moment = __webpack_require__(95); var _moment2 = _interopRequireDefault(_moment); var _i18n = __webpack_require__(22); var _i18n2 = _interopRequireDefault(_i18n); var _logger = __webpack_require__(43); var logger = _interopRequireWildcard(_logger); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // //////////////////////////////////////////////////////////////////////////////////////////////////////////////// // TimeUtils var BD_TIME_REGEX_MILLIS = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d+)[+-]{1}\d{2}[:]?\d{2}$/; var BD_TIME_REGEX_NO_MILLIS = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})[+-]{1}\d{2}[:]?\d{2}$/; function BdTime(isoString) { var bdPieces = BD_TIME_REGEX_MILLIS.exec(isoString) || BD_TIME_REGEX_NO_MILLIS.exec(isoString); if (!bdPieces) { this.isInvalid = true; } else { this.year = parseInt(bdPieces[1], 10); this.month = parseInt(bdPieces[2], 10); this.day = parseInt(bdPieces[3], 10); this.hour = parseInt(bdPieces[4], 10); this.minute = parseInt(bdPieces[5], 10); this.second = parseInt(bdPieces[6], 10); this.millisecond = bdPieces.length > 7 ? parseInt(bdPieces[7], 10) : 0; } } var _extractBdTime = function _extractBdTime(timeString) { return new BdTime(timeString); }; var _calculateTimeFormat = function _calculateTimeFormat(time, spanSeries) { var span = parseFloat(spanSeries[0]); if (!(time instanceof BdTime)) { time = _extractBdTime(time); } if (!span) { return time.millisecond === 0 ? 'second' : 'millisecond'; } if (span >= 0 && span < 1 || time.millisecond !== 0) { return 'millisecond'; } if (span >= 1 && span < 60 || time.second !== 0) { return 'second'; } if (span >= 60 && span < 3600 || time.minute !== 0) { return 'minute'; } if (span >= 3600 && span <= 82800 || time.hour !== 0) { // 23 hour (82800) return 'hour'; } if (span > 82800 && span <= 2419200 || time.day !== 1) { // 1 day to 28 days return 'day'; } if (span > 2419200 && span <= 31535999 || time.month !== 1) { // 28 days - 1 year return 'month'; } if (span >= 31536000) { // year return 'year'; } logger.log('_span value (' + span + ') did not meet any time formatting condition'); return 'second'; }; var bdTimeToDateObject = function bdTimeToDateObject(bdTime) { var year = bdTime.year; var month = bdTime.month - 1; var day = bdTime.day; var hour = bdTime.hour; var minute = bdTime.minute; var second = bdTime.second; var millisecond = bdTime.millisecond; return new Date(year, month, day, hour, minute, second, millisecond); }; // Not used? // // const getTimezoneString = dateObj => { // const timezoneOffset = dateObj.getTimezoneOffset(); // const absoluteValueTimezoneOffset = Math.abs(timezoneOffset); // const hours = Math.floor(absoluteValueTimezoneOffset / 60); // const minutes = absoluteValueTimezoneOffset % 60; // const formattedHours = hours < 10 ? `0${hours}` : `${hours}`; // const formattedMinutes = minutes < 10 ? `0${minutes}` : `${minutes}`; // return `${(timezoneOffset > 0 ? '-' : '+') + formattedHours}:${formattedMinutes}`; // }; // // const isValidIsoTime = str => BD_TIME_REGEX_MILLIS.test(str) || BD_TIME_REGEX_NO_MILLIS.test(str); var TimeUtils = { SECS_PER_MIN: 60, SECS_PER_HOUR: 60 * 60, isoToDateObject: function isoToDateObject(isoString) { return (0, _moment2.default)(isoString).toDate(); }, // Returns the epoch seconds in string form. getEpochTimeFromISO: function getEpochTimeFromISO(timeString) { var millis = TimeUtils.isoToDateObject(timeString).getTime(); return (millis / 1000).toFixed(3); }, extractBdTime: function extractBdTime(timeString) { return _extractBdTime(timeString); }, determineLabelGranularity: function determineLabelGranularity(times, spanSeries) { if (!(times[0] instanceof BdTime)) { times = (0, _underscore2.default)(times).map(TimeUtils.extractBdTime); } times = (0, _underscore2.default)(times).filter(function (time) { return !time.isInvalid; }); if (times.length === 1 && (!spanSeries || spanSeries.length === 0)) { return times[0].millisecond === 0 ? 'second' : 'millisecond'; } if (times.length === 1 && spanSeries) { return _calculateTimeFormat(times[0], spanSeries); } var milliseconds = []; var seconds = []; var minutes = []; var hours = []; var days = []; var months = []; var allInListMatch = function allInListMatch(list, matchMe) { for (var i = 0; i < list.length; i++) { if (list[i] !== matchMe) { return false; } } return true; }; (0, _underscore2.default)(times).each(function (time) { milliseconds.push(time.millisecond); seconds.push(time.second); minutes.push(time.minute); hours.push(time.hour); days.push(time.day); months.push(time.month); }); if (!allInListMatch(milliseconds, 0)) { return 'millisecond'; } if (!allInListMatch(seconds, 0)) { return 'second'; } if (!allInListMatch(minutes, 0)) { return 'minute'; } if (!allInListMatch(hours, 0)) { return 'hour'; } if (!allInListMatch(days, 1)) { return 'day'; } if (!allInListMatch(months, 1)) { return 'month'; } return 'year'; }, formatBdTimeAsAxisLabel: function formatBdTimeAsAxisLabel(time, prevBdTime, granularity) { if (time.isInvalid) { return null; } var dateTime = bdTimeToDateObject(time); var showDay = granularity in { millisecond: true, second: true, minute: true, hour: true, day: true }; var showTimes = granularity in { millisecond: true, second: true, minute: true, hour: true }; var showSeconds = granularity in { millisecond: true, second: true }; var showMillis = granularity === 'millisecond'; var timeFormat = showSeconds ? 'medium' : 'short'; var dateFormat = showDay ? 'ccc MMM d' : 'MMMM'; var formatTime = function formatTime(dt, format) { if (showMillis) { return _i18n2.default.format_time_microseconds(dt, format); } return _i18n2.default.format_time(dt, format); }; if (granularity === 'year') { return [_i18n2.default.format_date(dateTime, 'YYYY')]; } if (prevBdTime && prevBdTime.year === time.year && time.month === prevBdTime.month && time.day === prevBdTime.day) { return [formatTime(dateTime, timeFormat)]; } var formattedPieces = showTimes ? [formatTime(dateTime, timeFormat), _i18n2.default.format_date(dateTime, dateFormat)] : [_i18n2.default.format_date(dateTime, dateFormat)]; if (!prevBdTime || time.year !== prevBdTime.year) { formattedPieces.push(_i18n2.default.format_date(dateTime, 'YYYY')); } return formattedPieces; } }; exports.default = TimeUtils; module.exports = exports['default']; /***/ }), /***/ 95: /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/moment/index.js"); /***/ }) /******/ }); /***/ }), /***/ "./node_modules/@splunk/charting/lib/index.js": /***/ (function(module, exports, __webpack_require__) { module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 112); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/jquery/dist/jquery.js"); /***/ }), /* 1 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/underscore/modules/index-all.js"); /***/ }), /* 2 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/lang.js"); /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/parsing.js"); /***/ }), /* 4 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/highcharts-themes/theme.js"); /***/ }), /* 5 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/math.js"); /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { var freeGlobal = __webpack_require__(68); /** Detect free variable `self`. */ var freeSelf = typeof self == 'object' && self && self.Object === Object && self; /** Used as a reference to the global object. */ var root = freeGlobal || freeSelf || Function('return this')(); module.exports = root; /***/ }), /* 7 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/color.js"); /***/ }), /* 8 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/highcharts/highcharts.js"); /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; exports.__esModule = true; var _assign = __webpack_require__(185); var _assign2 = _interopRequireDefault(_assign); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _assign2.default || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery = __webpack_require__(0); var _jquery2 = _interopRequireDefault(_jquery); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { on: function on(eventType, callback) { (0, _jquery2.default)(this).on(eventType, callback); }, off: function off(eventType, callback) { (0, _jquery2.default)(this).off(eventType, callback); }, trigger: function trigger(eventType, extraParams) { (0, _jquery2.default)(this).trigger(eventType, extraParams); } }; module.exports = exports['default']; /***/ }), /* 11 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/Formatter.js"); /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { var store = __webpack_require__(94)('wks'); var uid = __webpack_require__(96); var Symbol = __webpack_require__(19).Symbol; var USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function (name) { return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; /***/ }), /* 13 */ /***/ (function(module, exports) { /** * Checks if `value` is classified as an `Array` object. * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an array, else `false`. * @example * * _.isArray([1, 2, 3]); * // => true * * _.isArray(document.body.children); * // => false * * _.isArray('abc'); * // => false * * _.isArray(_.noop); * // => false */ var isArray = Array.isArray; module.exports = isArray; /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { var baseGetTag = __webpack_require__(23), isObjectLike = __webpack_require__(18); /** `Object#toString` result references. */ var symbolTag = '[object Symbol]'; /** * Checks if `value` is classified as a `Symbol` primitive or object. * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. * @example * * _.isSymbol(Symbol.iterator); * // => true * * _.isSymbol('abc'); * // => false */ function isSymbol(value) { return typeof value == 'symbol' || (isObjectLike(value) && baseGetTag(value) == symbolTag); } module.exports = isSymbol; /***/ }), /* 15 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/i18n.js"); /***/ }), /* 16 */ /***/ (function(module, exports) { /** * This method returns the first argument it receives. * * @static * @since 0.1.0 * @memberOf _ * @category Util * @param {*} value Any value. * @returns {*} Returns `value`. * @example * * var object = { 'a': 1 }; * * console.log(_.identity(object) === object); * // => true */ function identity(value) { return value; } module.exports = identity; /***/ }), /* 17 */ /***/ (function(module, exports) { /** * Checks if `value` is the * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) * * @static * @memberOf _ * @since 0.1.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is an object, else `false`. * @example * * _.isObject({}); * // => true * * _.isObject([1, 2, 3]); * // => true * * _.isObject(_.noop); * // => true * * _.isObject(null); * // => false */ function isObject(value) { var type = typeof value; return value != null && (type == 'object' || type == 'function'); } module.exports = isObject; /***/ }), /* 18 */ /***/ (function(module, exports) { /** * Checks if `value` is object-like. A value is object-like if it's not `null` * and has a `typeof` result of "object". * * @static * @memberOf _ * @since 4.0.0 * @category Lang * @param {*} value The value to check. * @returns {boolean} Returns `true` if `value` is object-like, else `false`. * @example * * _.isObjectLike({}); * // => true * * _.isObjectLike([1, 2, 3]); * // => true * * _.isObjectLike(_.noop); * // => false * * _.isObjectLike(null); * // => false */ function isObjectLike(value) { return value != null && typeof value == 'object'; } module.exports = isObjectLike; /***/ }), /* 19 */ /***/ (function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self // eslint-disable-next-line no-new-func : Function('return this')(); if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef /***/ }), /* 20 */ /***/ (function(module, exports) { var core = module.exports = { version: '2.6.12' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), /* 21 */ /***/ (function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(47)(function () { return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; }); /***/ }), /* 22 */ /***/ (function(module, exports, __webpack_require__) { var baseIsNative = __webpack_require__(126), getValue = __webpack_require__(133); /** * Gets the native function at `key` of `object`. * * @private * @param {Object} object The object to query. * @param {string} key The key of the method to get. * @returns {*} Returns the function if it's native, else `undefined`. */ function getNative(object, key) { var value = getValue(object, key); return baseIsNative(value) ? value : undefined; } module.exports = getNative; /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { var Symbol = __webpack_require__(39), getRawTag = __webpack_require__(128), objectToString = __webpack_require__(129); /** `Object#toString` result references. */ var nullTag = '[object Null]', undefinedTag = '[object Undefined]'; /** Built-in value references. */ var symToStringTag = Symbol ? Symbol.toStringTag : undefined; /** * The base implementation of `getTag` without fallbacks for buggy environments. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } return (symToStringTag && symToStringTag in Object(value)) ? getRawTag(value) : objectToString(value); } module.exports = baseGetTag; /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { var baseCreate = __webpack_require__(40), isObject = __webpack_require__(17); /** * Creates a function that produces an instance of `Ctor` regardless of * whether it was invoked as part of a `new` expression or by `call` or `apply`. * * @private * @param {Function} Ctor The constructor to wrap. * @returns {Function} Returns the new wrapped function. */ function createCtor(Ctor) { return function() { // Use a `switch` statement to work with class constructors. See // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist // for more details. var args = arguments; switch (args.length) { case 0: return new Ctor; case 1: return new Ctor(args[0]); case 2: return new Ctor(args[0], args[1]); case 3: return new Ctor(args[0], args[1], args[2]); case 4: return new Ctor(args[0], args[1], args[2], args[3]); case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); } var thisBinding = baseCreate(Ctor.prototype), result = Ctor.apply(thisBinding, args); // Mimic the constructor's `return` behavior. // See https://es5.github.io/#x13.2.2 for more details. return isObject(result) ? result : thisBinding; }; } module.exports = createCtor; /***/ }), /* 25 */ /***/ (function(module, exports) { /** Used as the internal argument placeholder. */ var PLACEHOLDER = '__lodash_placeholder__'; /** * Replaces all `placeholder` elements in `array` with an internal placeholder * and returns an array of their indexes. * * @private * @param {Array} array The array to modify. * @param {*} placeholder The placeholder to replace. * @returns {Array} Returns the new array of placeholder indexes. */ function replaceHolders(array, placeholder) { var index = -1, length = array.length, resIndex = 0, result = []; while (++index < length) { var value = array[index]; if (value === placeholder || value === PLACEHOLDER) { array[index] = PLACEHOLDER; result[resIndex++] = index; } } return result; } module.exports = replaceHolders; /***/ }), /* 26 */ /***/ (function(module, exports) { module.exports = function(module) { if(!module.webpackPolyfill) { module.deprecate = function() {}; module.paths = []; // module.parent = undefined by default if(!module.children) module.children = []; Object.defineProperty(module, "loaded", { enumerable: true, get: function() { return module.l; } }); Object.defineProperty(module, "id", { enumerable: true, get: function() { return module.i; } }); module.webpackPolyfill = 1; } return module; }; /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = __webpack_require__(9); var _extends3 = _interopRequireDefault(_extends2); var _jquery = __webpack_require__(0); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(1); var _underscore2 = _interopRequireDefault(_underscore); var _sortedLastIndex = __webpack_require__(197); var _sortedLastIndex2 = _interopRequireDefault(_sortedLastIndex); var _moment = __webpack_require__(85); var _moment2 = _interopRequireDefault(_moment); var _bowser = __webpack_require__(53); var _bowser2 = _interopRequireDefault(_bowser); var _highcharts = __webpack_require__(8); var _highcharts2 = _interopRequireDefault(_highcharts); var _lang = __webpack_require__(2); var _testing = __webpack_require__(98); var testingUtils = _interopRequireWildcard(_testing); var _parsing = __webpack_require__(3); var parsingUtils = _interopRequireWildcard(_parsing); var _color = __webpack_require__(7); var colorUtils = _interopRequireWildcard(_color); var _convertSplunkTimezone = __webpack_require__(200); var _convertSplunkTimezone2 = _interopRequireDefault(_convertSplunkTimezone); var _time = __webpack_require__(54); var _time2 = _interopRequireDefault(_time); var _async = __webpack_require__(201); var _field = __webpack_require__(86); var fieldUtils = _interopRequireWildcard(_field); var _math = __webpack_require__(5); var mathUtils = _interopRequireWildcard(_math); var _logger = __webpack_require__(64); var logger = _interopRequireWildcard(_logger); var _constants = __webpack_require__(32); var _theme = __webpack_require__(4); var _Visualization = __webpack_require__(99); var _Visualization2 = _interopRequireDefault(_Visualization); var _ColorPalette = __webpack_require__(44); var _ColorPalette2 = _interopRequireDefault(_ColorPalette); var _TimeAxis = __webpack_require__(202); var _TimeAxis2 = _interopRequireDefault(_TimeAxis); var _CategoryAxis = __webpack_require__(203); var _CategoryAxis2 = _interopRequireDefault(_CategoryAxis); var _NumericAxis = __webpack_require__(56); var _NumericAxis2 = _interopRequireDefault(_NumericAxis); var _Legend = __webpack_require__(205); var _Legend2 = _interopRequireDefault(_Legend); var _Tooltip = __webpack_require__(241); var _Tooltip2 = _interopRequireDefault(_Tooltip); var _SelectionWindow = __webpack_require__(242); var _SelectionWindow2 = _interopRequireDefault(_SelectionWindow); var _PanButtons = __webpack_require__(244); var _PanButtons2 = _interopRequireDefault(_PanButtons); var _ZoomOutButton = __webpack_require__(247); var _ZoomOutButton2 = _interopRequireDefault(_ZoomOutButton); var _HoverEventThrottler = __webpack_require__(36); var _HoverEventThrottler2 = _interopRequireDefault(_HoverEventThrottler); var _CartesianDataLabels = __webpack_require__(248); var _CartesianDataLabels2 = _interopRequireDefault(_CartesianDataLabels); var _series_factory = __webpack_require__(249); var _series_factory2 = _interopRequireDefault(_series_factory); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var MULTISERIES_MODE = 'seriesCompare'; function Chart(container, properties) { _Visualization2.default.call(this, container, properties); } (0, _lang.inherit)(Chart, _Visualization2.default); _jquery2.default.extend(Chart.prototype, { HOVER_DELAY: 160, EXPORT_WIDTH: 600, EXPORT_HEIGHT: 400, FALLBACK_HEIGHT: 250, FALLBACK_WIDTH: 600, PROGRESSIVE_DRAW_THRESHOLD: 1000, ANNOTATION_COLORS: ['#E19747', '#5F7395', '#3E9887', '#784772', '#A24940'].map(colorUtils.hexFromColor), hasLegend: true, hasTooltip: true, hasXAxis: true, hasYAxis: true, legendMode: 'standard', requiresExternalColors: true, externalPaletteMapping: {}, externalPaletteSize: 0, prepare: function prepare(dataSet, properties) { this.benchmark('Prepare Started'); var wasEmpty = this.isEmpty(); var hadTimeXAxis = this.hasTimeXAxis(); _Visualization2.default.prototype.prepare.call(this, dataSet, properties); if (this.showLabels === 'all' || this.showLabels === 'minmax') { this.initializeDataLabels(); } this.initializeFields(); this.isiOS = !!_bowser2.default.ios; var isEmpty = this.isEmpty(); var hasTimeXAxis = this.hasTimeXAxis(); if (isEmpty !== wasEmpty || hadTimeXAxis !== hasTimeXAxis) { this._isDirty = true; } this.resetHighlight(); if (this.shouldUpdateInPlace()) { this.updateSeriesProperties(); this.updateAxisProperties(); if (!isEmpty) { this.setAllSeriesData(); } } else { if (!isEmpty) { this.initializeColorPalette(); } this.initializeSeriesList(); // Determine orientation based on the chart type, not the series types (SPL-86199). this.axesAreInverted = this.type === 'bar'; if (this.hasXAxis) { this.initializeXAxisList(); } if (this.hasYAxis) { this.initializeYAxisList(); } if (isEmpty) { if (this.legend) { this.legend.destroy(); this.legend = null; } if (this.tooltip) { this.tooltip.destroy(); this.tooltip = null; } } else { if (this.hasLegend) { this.initializeLegend(); } if (this.hasTooltip) { this.initializeTooltip(); } this.setAllSeriesData(); this.bindSeriesEvents(); } } }, initializeDataLabels: function initializeDataLabels() { this.dataLabels = new _CartesianDataLabels2.default({ showLabels: this.showLabels, splitSeries: this.splitSeries }); }, getFieldList: function getFieldList() { return (0, _underscore2.default)(this.seriesList).chain().invoke('getFieldList').flatten(true).compact().value(); }, setExternalColorPalette: function setExternalColorPalette(fieldIndexMap, paletteTotalSize) { this.externalPaletteMapping = _jquery2.default.extend({}, fieldIndexMap); this.externalPaletteSize = paletteTotalSize; }, handleDraw: function handleDraw(callback) { logger.debug('drawing a chart with dimensions:', { width: this.width, height: this.height }); logger.debug('drawing a chart with properties:', this.properties); logger.debug('drawing a chart with data:', this.dataSet.toJSON()); this.benchmark('Draw Started'); this.applyColorPalette(); // if there is already a draw in progress, cancel it this.cancelPendingDraw(); if (this.shouldUpdateInPlace()) { this.redrawInPlace(callback); return; } this.hcConfig = this.getConfig(); logger.debug('config object to be sent to highcharts:', this.hcConfig); if (this.hcChart) { this.destroy(); this.bindSeriesEvents(); if (this.legend) { this.bindLegendEvents(); } } if (this.shouldProgressiveDraw()) { this.hcConfig.firstRenderOverride = (0, _underscore2.default)(this.firstRenderOverride).bind(this); this.hcConfig.renderOverride = (0, _underscore2.default)(this.renderOverride).bind(this); } var that = this; // eslint-disable-next-line no-new new _highcharts2.default.Chart(this.hcConfig, function (chart) { that.hcChart = chart; if (that.testMode) { testingUtils.initializeTestingMetaData(that, that.xFields, that.getClassName()); testingUtils.createGlobalReference(that, chart); } that.onChartLoad(chart); that.onChartLoadOrRedraw(chart); if (that.hasTooltip && !that.isEmpty()) { that.enableTooltip(chart); } that.cacheDrawnDimensions(); that.benchmark('Draw Finished'); callback(that, that.benchmarks); // DEBUGGING // window.chart = that }); }, redrawInPlace: function redrawInPlace(callback) { var _this = this; logger.debug('in place redraw!'); if (!this.hcChart) { throw new Error('Cannot call redrawInPlace if chart does not already exist'); } // redraw all series in the list (0, _underscore2.default)(this.seriesList).invoke('redraw', false); var existingChartSeries = this.hcChart.series; var incomingSeriesConfigs = this.getSeriesConfigList(); // if there are more existing series than incoming, remove the extras if (existingChartSeries.length > incomingSeriesConfigs.length) { (0, _underscore2.default)(existingChartSeries.slice(incomingSeriesConfigs.length)).invoke('remove', false); } else if (existingChartSeries.length < incomingSeriesConfigs.length) { // if there are more incoming series than existing, add the new ones (0, _underscore2.default)(incomingSeriesConfigs.slice(existingChartSeries.length)).each(function (seriesConfig) { _this.hcChart.addSeries(seriesConfig, false, false); }); } var preUpdateExtremes = void 0; var postUpdateExtremes = void 0; var xAxis = this.xAxisList[0]; var axisWasZoomed = xAxis.isZoomed; if (axisWasZoomed) { preUpdateExtremes = this.hcChart.xAxis[0].getExtremes(); preUpdateExtremes.max -= xAxis.hasTickmarksBetween() ? 0 : 1; } else if (this.selectionWindow) { preUpdateExtremes = this.selectionWindow.getExtremes(); preUpdateExtremes.min += xAxis.hasTickmarksBetween() ? 1 : 0; } if (preUpdateExtremes) { postUpdateExtremes = this.calculatePostUpdateExtremes(preUpdateExtremes); } // redraw the axes (0, _underscore2.default)(this.xAxisList).invoke('redraw', false); (0, _underscore2.default)(this.yAxisList).invoke('redraw', false); if (axisWasZoomed) { if (postUpdateExtremes.min === null || postUpdateExtremes.max === null) { this.hcChart.xAxis[0].zoom(); } else { postUpdateExtremes.max += xAxis.hasTickmarksBetween() ? 0 : 1; this.hcChart.xAxis[0].zoom(postUpdateExtremes.min, postUpdateExtremes.max, postUpdateExtremes.dataMax, postUpdateExtremes.dataMin); } } else if (this.selectionWindow) { if (postUpdateExtremes.max === null) { this.selectionWindow.destroy(); this.selectionWindow = null; } else { postUpdateExtremes.min = (postUpdateExtremes.min || 0) - (xAxis.hasTickmarksBetween() ? 1 : 0); this.selectionWindow.setExtremes(postUpdateExtremes); } } // force Highcharts to redraw this.hcChart.redraw(); this.benchmark('Series Redraw Finished'); callback(this, this.benchmarks); }, cancelPendingDraw: function cancelPendingDraw() { if (this.pendingDraw && this.pendingDraw.state() === 'pending') { this.pendingDraw.cancel(); // TODO [sff] do we need to do anything with the deferred that draw() returned? currently it just stays pending } }, setSize: function setSize(width, height) { if (!this.hcChart) { return; } var xAxis = this.hcChart.xAxis[0]; // SPL-80149: userMin and userMax should always be set if chart is zoomed if (xAxis && this.xAxisList[0].isZoomed) { xAxis.userMin = xAxis.userMin || xAxis.oldUserMin; xAxis.userMax = xAxis.userMax || xAxis.oldUserMax; } this.hcChart.setSize(width, height, false); this.cacheDrawnDimensions(); }, destroy: function destroy() { this.cancelPendingDraw(); if (this.hcChart) { this.onChartDestroy(); // SPL-85851, for some reason the default Highcharts destroy routine does not remove listeners added // by the Pointer object, so we explicitly remove them here. if (this.hcChart.pointer) { this.hcChart.pointer.reset(); } this.hcChart.destroy(); this.hcChart = null; } }, getSVG: function getSVG() { var chart = this.hcChart; if (this.hcConfig.legend.enabled) { if (chart.legend.nav) { chart.legend.nav.destroy(); } } (0, _jquery2.default)(chart.series).each(function (i, loopSeries) { // If the area has been set to zero opacity, just remove the element entirely (SPL-80429 and SPL-84442). if (loopSeries.area && colorUtils.getComputedOpacity(loopSeries.area) === 0) { loopSeries.area.destroy(); delete loopSeries.area; } }); var $svg = (0, _jquery2.default)('.highcharts-container').find('svg'); $svg.siblings().remove(); $svg.find('.highcharts-tracker').remove(); // SPL-65745, remove the clip path that is being applied to the legend, or it will cause labels to be hidden $svg.find('.highcharts-legend g[clip-path]').each(function removeClipPath() { (0, _jquery2.default)(this).removeAttr('clip-path'); }); return $svg.parent().html(); }, highlight: function highlight(xValue, seriesName) { if (!(typeof xValue === 'string' || typeof xValue === 'number') || typeof seriesName !== 'string') { return; } if (this.isMouseInteractionActive) { return; } var targetSeries = this.getSeriesByName(seriesName); if (!targetSeries) { return; } var targetPoint = this.getTargetPoint(xValue, targetSeries); if (!targetPoint) { return; } this.highlighted = { targetPoint: targetPoint, targetSeries: targetSeries, value: xValue, seriesName: seriesName }; (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.matchesName(seriesName)) { series.highlightPoint(targetPoint); } else { series.unHighlight(); } }); if (this.legend) { this.legend.selectField(targetSeries.getLegendKey()); } }, unHighlight: function unHighlight() { if (this.isMouseInteractionActive || this.highlighted === null) { return; } var targetSeries = this.highlighted.targetSeries; var seriesName = this.highlighted.seriesName; var point = this.highlighted.targetPoint; (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.matchesName(seriesName)) { series.unHighlightPoint(point); } else { series.highlight(); } }); if (this.legend) { this.legend.unSelectField(targetSeries.getLegendKey()); } this.highlighted = null; }, // /////////////////////////////////////////////////////////////////////////////////////// // [end of public interface] processProperties: function processProperties() { var _this2 = this; _Visualization2.default.prototype.processProperties.call(this); // handle enabling chart/legend clicks, there are an annoying number of different ways to specify this // the "drilldown" property trumps all others // eslint-disable-next-line no-prototype-builtins if (this.properties.hasOwnProperty('drilldown')) { // eslint-disable-next-line no-multi-assign this.chartClickEnabled = this.legendClickEnabled = this.properties['drilldown'] === 'all'; } else { // eslint-disable-next-line no-prototype-builtins if (this.properties.hasOwnProperty('chart.clickEnabled')) { this.chartClickEnabled = parsingUtils.normalizeBoolean(this.properties['chart.clickEnabled']); } else { this.chartClickEnabled = parsingUtils.normalizeBoolean(this.properties['enableChartClick']); } // eslint-disable-next-line no-prototype-builtins if (this.properties.hasOwnProperty('chart.legend.clickEnabled')) { this.legendClickEnabled = parsingUtils.normalizeBoolean(this.properties['chart.legend.clickEnabled']); } else { this.legendClickEnabled = parsingUtils.normalizeBoolean(this.properties['enableLegendClick']); } } if (this.properties['showTooltip'] !== undefined) { this.hasTooltip = parsingUtils.normalizeBoolean(this.properties['showTooltip']); } var metricsChartTypes = ['line', 'area']; this.legendMode = (0, _underscore2.default)(metricsChartTypes).indexOf(this.type) === -1 ? 'standard' : _jquery2.default.trim(this.properties['legend.mode']); if (this.legendMode !== MULTISERIES_MODE && this.properties['legend.placement'] === 'none') { this.hasLegend = false; } if (this.hasXAxis || this.hasYAxis) { this.axisColorScheme = { 'axis.foregroundColorSoft': this.axisColorSoft, 'axis.foregroundColorSofter': this.axisColorSofter, 'axis.fontColor': this.properties['chart.fontColor'] || this.properties.fontColor }; } if ( // eslint-disable-next-line no-prototype-builtins this.properties.hasOwnProperty('legend.masterLegend') && (!this.properties['legend.masterLegend'] || _jquery2.default.trim(this.properties['legend.masterLegend']) === 'null')) { this.requiresExternalColors = false; } this.stackMode = this.properties['chart.stackMode'] || 'default'; this.shouldColorizeTooltipData = parsingUtils.normalizeBoolean(this.properties['shouldColorizeTooltipData'], true); this.legendLabels = parsingUtils.stringToArray(this.properties['legend.labels'] || '[]'); this.showHideMode = this.properties['data.fieldListMode'] === 'show_hide'; this.fieldHideList = _underscore2.default.union(this.properties['fieldHideList'] || [], parsingUtils.stringToArray(this.properties['data.fieldHideList']) || []); this.fieldShowList = parsingUtils.stringToArray(this.properties['data.fieldShowList']) || []; var seriesColorsSetting = this.properties['chart.seriesColors'] || this.properties['seriesColors']; this.seriesColors = parsingUtils.stringToHexArray(seriesColorsSetting) || null; var fieldColorsSetting = this.properties['chart.fieldColors'] || this.properties['fieldColors']; this.internalFieldColors = parsingUtils.stringToHexObject(fieldColorsSetting || '{}'); var annotationCategoryColorsSettings = this.properties['annotation.categoryColors']; this.annotationCategoryColors = parsingUtils.stringToHexObject(annotationCategoryColorsSettings || '{}'); this.overlayFields = parsingUtils.stringToFieldList(this.properties['chart.overlayFields']); this.seriesTypeMapping = {}; (0, _underscore2.default)(this.overlayFields).each(function (field) { // @TODO(pwied): should we support line smoothing for overlay fields as well? _this2.seriesTypeMapping[field] = 'line'; }); this.yAxisMapping = {}; var secondYAxis = parsingUtils.normalizeBoolean(this.properties['axisY2.enabled']); if (secondYAxis) { var secondYAxisFields = this.properties['axisY2.fields'] ? parsingUtils.stringToFieldList(this.properties['axisY2.fields']) : this.overlayFields; (0, _underscore2.default)(secondYAxisFields).each(function (field) { _this2.yAxisMapping[field] = 1; }); } this.enableAnimation = parsingUtils.normalizeBoolean(this.properties['enableAnimation'], false); var zoomTypes = ['x', 'y', 'xy', 'off']; if ((0, _underscore2.default)(zoomTypes).indexOf(this.properties['zoomType']) !== -1) { this.zoomType = this.properties['zoomType']; } this.showLabels = this.properties['chart.showDataLabels']; if (typeof this.showLabels === 'undefined') { this.showLabels = 'none'; } this.splitSeries = parsingUtils.normalizeBoolean(this.properties['layout.splitSeries'], false); this.splitSeriesAllowIndependentYRanges = parsingUtils.normalizeBoolean(this.properties['layout.splitSeries.allowIndependentYRanges'], false); if (this.properties['enableAccessibility'] === 'false') { this.enableAccessibility = parsingUtils.normalizeBoolean(this.properties['enableAccessibility']); } }, // prettier-ignore firstRenderOverride: function firstRenderOverride(chart) { // make this reference available here for testing this.hcChart = chart; var Pointer = _highcharts2.default.Pointer, fireEvent = _highcharts2.default.fireEvent, each = _highcharts2.default.each; var options = chart.options; /* eslint-disable */ // BEGIN: copied from Highcharts source Chart#firstRender // Check whether the chart is ready to render // Reference: https://github.com/highcharts/highcharts/blob/87f3d8b274cb5a01c8b1a4b939b6cb6f0da63caa/js/parts/Chart.js#L1954 if (chart.isReadyToRender && !chart.isReadyToRender()) { return; } // Create the container chart.getContainer(); // Run an early event after the container and renderer are established fireEvent(chart, 'init'); chart.resetMargins(); chart.setChartSize(); // Set the common chart properties (mainly invert) from the given series chart.propFromSeries(); // get axes chart.getAxes(); // Initialize the series each(options.series || [], function (serieOptions) { chart.initSeries(serieOptions); }); chart.linkSeries(); // Run an event after axes and series are initialized, but before render. At this stage, // the series data is indexed and cached in the xData and yData arrays, so we can access // those before rendering. Used in Highstock. fireEvent(chart, 'beforeRender'); // depends on inverted and on margins being set if (Pointer) { chart.pointer = new Pointer(chart, options); } // MODIFIED: treat render() an asynchronous method chart.render(function () { // RESUME: remainder of Highcharts Chart#firstRender source code // Fire the load event if there are no external images if (!chart.renderer.imgCount && chart.onload) { chart.onload(); } // If the chart was rendered outside the top container, put it back in (#3679) chart.temporaryDisplay(true); // END: Highcharts Chart#firstRender source code }); /* eslint-enable */ }, // prettier-ignore renderOverride: function renderOverride(chart, callback) { var each = _highcharts2.default.each; var axes = chart.axes, renderer = chart.renderer, options = chart.options; /* eslint-disable */ // BEGIN: copied from Highcharts source Chart#render var tempWidth, tempHeight, redoHorizontal, redoVertical; // Title chart.setTitle(); // Legend chart.legend = new _highcharts2.default.Legend(chart, options.legend); // Get stacks if (chart.getStacks) { chart.getStacks(); } // Get chart margins chart.getMargins(true); chart.setChartSize(); // Record preliminary dimensions for later comparison tempWidth = chart.plotWidth; tempHeight = chart.plotHeight = chart.plotHeight - 21; // 21 is the most common correction for X axis labels // Get margins by pre-rendering axes each(axes, function (axis) { axis.setScale(); }); chart.getAxisMargins(); // If the plot area size has changed significantly, calculate tick positions again redoHorizontal = tempWidth / chart.plotWidth > 1.1; redoVertical = tempHeight / chart.plotHeight > 1.05; // Height is more sensitive if (redoHorizontal || redoVertical) { each(axes, function (axis) { if (axis.horiz && redoHorizontal || !axis.horiz && redoVertical) { axis.setTickInterval(true); // update to reflect the new margins } }); chart.getMargins(); // second pass to check for new labels } // Draw the borders and backgrounds chart.drawChartBox(); // Axes if (chart.hasCartesianSeries) { each(axes, function (axis) { if (axis.visible) { axis.render(); } }); } // The series if (!chart.seriesGroup) { chart.seriesGroup = renderer.g('series-group').attr({ zIndex: 3 }).add(); } // MODIFIED: use an async loop to draw the series, body of iterator is the same as Highcharts Chart#renderSeries() this.pendingDraw = (0, _async.asyncEach)(chart.series, function (serie) { serie.translate(); serie.render(); }); this.pendingDraw.done(function () { // Labels chart.renderLabels(); // Credits chart.addCredits(); // Handle responsiveness if (chart.setResponsive) { chart.setResponsive(); } // Set flag chart.hasRendered = true; // END: Highcharts Chart#render source callback(); }); /* eslint-enable */ }, // //////////////////////////////////////////////////////////////////////////////////////////// // methods for initializing chart components initializeFields: function initializeFields() { // TODO: this is where user settings could determine the x-axis field(s) var baseFields = this.dataSet.getFieldData(); this.xFields = baseFields.xFields; this.yFields = baseFields.yFields; var fieldAllowList = _jquery2.default.extend([], this.fieldShowList); var fieldBlockList = _jquery2.default.extend([], this.fieldHideList); var intersection = _underscore2.default.intersection(fieldAllowList, fieldBlockList); if (this.showHideMode) { fieldBlockList = _underscore2.default.difference(fieldBlockList, intersection); } else { fieldAllowList = _underscore2.default.difference(fieldAllowList, intersection); } this.yFields = _underscore2.default.difference(this.yFields, fieldBlockList); if (fieldAllowList.length > 0) { this.yFields = _underscore2.default.intersection(this.yFields, fieldAllowList); } // handle the user-specified legend labels if (this.yFields.length > 0 && this.legendLabels.length > 0) { this.yFields = _underscore2.default.union(this.legendLabels, this.yFields); } }, isEmpty: function isEmpty() { return !this.yFields || this.yFields.length === 0; }, hasTimeXAxis: function hasTimeXAxis() { return (0, _underscore2.default)(this.xFields || []).any(this.seriesIsTimeBased, this); }, // Assume that the presence of an _span field in the data set means we are dealing with a binned and sorted // time series. Otherwise the time series is assumed to be un-ordered an un-evenly distributed. hasBinnedTimeXAxis: function hasBinnedTimeXAxis() { return this.hasTimeXAxis() && this.dataSet.hasField('_span'); }, shouldProgressiveDraw: function shouldProgressiveDraw() { if (this.isEmpty()) { return false; } var totalPoints = this.yFields.length * this.dataSet.getSeries(this.yFields[0]).length; return totalPoints > this.PROGRESSIVE_DRAW_THRESHOLD; }, shouldUpdateInPlace: function shouldUpdateInPlace() { return this.hcChart && !this.isDirty(); }, initializeColorPalette: function initializeColorPalette() { this.colorPalette = new _ColorPalette2.default(this.seriesColors); this.annotationColorPalette = new _ColorPalette2.default(this.ANNOTATION_COLORS, true); }, initializeSeriesList: function initializeSeriesList() { this.seriesList = (0, _underscore2.default)(this.initializeSeriesPropertiesList()).map(function (properties) { return _series_factory2.default.create(properties); }); }, updateSeriesProperties: function updateSeriesProperties() { var _this3 = this; var propsList = this.initializeSeriesPropertiesList(); var reinitializeSeriesList = false; // compare the type of every series from seriesList with the propsList // if there is at least one mismatch then re-initialize the seriesList _underscore2.default.each(this.seriesList, function (series, i) { if (propsList[i] && series.getType() !== propsList[i].type) { reinitializeSeriesList = true; } }); if (!reinitializeSeriesList) { // if there are more existing series that in the props list, loop through and remove the extras // while updating the remaining ones if (this.seriesList.length > propsList.length) { this.seriesList = (0, _underscore2.default)(this.seriesList).filter(function (series, i) { if (i >= propsList.length) { series.destroy(); return false; } series.update(propsList[i]); return true; }, this); } else if (this.seriesList.length <= propsList.length) { // if there are less existing series than in the props list (or the same amount), // loop through and create the new ones while updating the existing ones this.seriesList = (0, _underscore2.default)(propsList).map(function (props, i) { if (i < _this3.seriesList.length) { _this3.seriesList[i].update(props); return _this3.seriesList[i]; } var newSeries = _series_factory2.default.create(props); _this3.bindIndividualSeries(newSeries); return newSeries; }); } } else { this.seriesList = null; this._isDirty = true; this.initializeSeriesList(); } }, initializeSeriesPropertiesList: function initializeSeriesPropertiesList() { var _this4 = this; if (this.isEmpty()) { return [{ type: this.type }]; } var rangeFieldNames = void 0; var isRangeSeriesMode = fieldUtils.isRangeSeriesDataSet(this.dataSet); var rangeSeriesConfig = isRangeSeriesMode ? fieldUtils.getRangeSeriesConfig(this.dataSet) : []; var isOutlierMode = fieldUtils.isOutlierDataSet(this.dataSet); var outlierFieldNames = isOutlierMode ? fieldUtils.getOutlierFields(this.dataSet) : []; var dashStyle = this.getDashStyle(); var markerStyle = this.properties['lineMarkerStyle'] || 'normal'; if (isRangeSeriesMode) { rangeFieldNames = (0, _underscore2.default)(rangeSeriesConfig).pluck('predicted'); } return (0, _underscore2.default)(this.yFields).map(function (field) { // TODO: this is where user settings could determine series type and/or axis mappings var customType = void 0; if (rangeFieldNames && (0, _underscore2.default)(rangeFieldNames).contains(field)) { customType = 'range'; } else if (outlierFieldNames && (0, _underscore2.default)(outlierFieldNames).contains(field)) { customType = 'outlier'; // eslint-disable-next-line no-prototype-builtins } else if (_this4.seriesTypeMapping.hasOwnProperty(field)) { customType = _this4.seriesTypeMapping[field]; } var pointPlacement = null; if (_this4.hasTimeXAxis() && _this4.type !== 'column' && _this4.type !== 'bar') { pointPlacement = 'on'; } var properties = _jquery2.default.extend(true, {}, _this4.properties, { type: customType || _this4.type, name: field, pointPlacement: pointPlacement, stacking: isRangeSeriesMode || isOutlierMode ? 'default' : _this4.stackMode, // TODO [sff] should we just deal with this in the chart click handler? clickEnabled: _this4.chartClickEnabled, dashStyle: dashStyle, markerStyle: markerStyle }); if (customType === 'range') { properties.names = (0, _underscore2.default)(rangeSeriesConfig).findWhere({ predicted: field }); } // allow series to be assigned to y-axes via the 'yAxisMapping' property // eslint-disable-next-line no-prototype-builtins if (_this4.yAxisMapping.hasOwnProperty(field)) { properties.yAxis = _this4.yAxisMapping[field]; } return properties; }); }, initializeXAxisList: function initializeXAxisList() { var _this5 = this; var isEmpty = this.isEmpty(); // TODO: this is where user settings could specify multiple x-axes // TODO: this is where the x-axis type can be inferred from the series types attached to each axis this.xAxisList = (0, _underscore2.default)(this.xFields).map(function (field, i) { var tickmarksBetween = (0, _underscore2.default)(_this5.seriesList).any(function (series) { return series.getXAxisIndex() === i && // eslint-disable-next-line no-prototype-builtins { column: true, bar: true }.hasOwnProperty(series.getType()); }); var axisProperties = _jquery2.default.extend(parsingUtils.getXAxisProperties(_this5.properties), _this5.axisColorScheme, { 'axis.orientation': _this5.axesAreInverted ? 'vertical' : 'horizontal', isEmpty: isEmpty, crosshair: _this5.getXAxisCrosshair() }); axisProperties['axisTitle.text'] = _this5._getComputedXAxisTitle(axisProperties, field); if (_this5.seriesIsTimeBased(field)) { axisProperties['axisLabels.tickmarkPlacement'] = tickmarksBetween ? 'between' : 'on'; var maximumValue = _this5._getComputedTimeAxisMaxValue(tickmarksBetween); if (maximumValue !== null) { axisProperties['axis.maximumValue'] = maximumValue; } if (_this5.isAnnotationSupported()) { var _getAnnotationsAndPlo = _this5.getAnnotationsAndPlotBands(), plotBands = _getAnnotationsAndPlo.plotBands, lineAnnotations = _getAnnotationsAndPlo.lineAnnotations; axisProperties['axis.annotations'] = lineAnnotations; axisProperties['axis.plotBands'] = plotBands; } return new _TimeAxis2.default(axisProperties); } axisProperties['axis.categories'] = _this5.dataSet.getSeries(field); axisProperties['axisLabels.tickmarkPlacement'] = 'between'; return new _CategoryAxis2.default(axisProperties); }); }, initializeYAxisList: function initializeYAxisList() { // TODO: this is where user settings could specify multiple y-axes var that = this; var isEmpty = this.isEmpty(); this.yAxisList = []; var maxAxisIndex = (0, _underscore2.default)(this.seriesList).chain().invoke('getYAxisIndex').max().value(); (0, _underscore2.default)(maxAxisIndex + 1).times(function (i) { that._initializeYAxis(i, isEmpty); }); }, _initializeYAxis: function _initializeYAxis(yAxisIndex, isEmpty) { var axisProperties = this.initializeYAxisProperties(yAxisIndex, isEmpty); // FIXME: we should do something more intelligent here // currently if there is only one series for an axis, use that series's name as the default title axisProperties['axisTitle.text'] = this._getComputedYAxisTitle(axisProperties, yAxisIndex); // log scale is not respected if the chart has stacking if (this.stackMode !== 'default') { axisProperties['axis.scale'] = 'linear'; } var yAxesShareRanges = this.splitSeries && !this.splitSeriesAllowIndependentYRanges; if (this.yFieldsAreOverlayFields() && this.splitSeriesAllowIndependentYRanges && this.stackMode === 'stacked100' && this.isStackable()) { axisProperties['sharedMin'] = this.properties['axisY2.minimumNumber'] ? this.properties['axisY2.minimumNumber'] : 0; axisProperties['sharedMax'] = this.properties['axisY2.maximumNumber'] ? this.properties['axisY2.maximumNumber'] : 100; } else if (this.stackMode === 'stacked100' && this.isStackable() && (yAxesShareRanges || yAxisIndex === 0)) { axisProperties['sharedMin'] = 0; axisProperties['sharedMax'] = 100; } this.yAxisList.push(new _NumericAxis2.default(axisProperties)); }, initializeYAxisProperties: function initializeYAxisProperties(yAxisIndex, isEmpty) { var opposite = yAxisIndex % 2 !== 0; var axisProperties = _jquery2.default.extend(parsingUtils.getYAxisProperties(this.properties, yAxisIndex), this.axisColorScheme, { 'axis.orientation': this.axesAreInverted ? 'horizontal' : 'vertical', isEmpty: isEmpty, opposite: opposite, sharedMax: opposite ? this.properties.overlayAxisMax : this.properties.yAxisMax, sharedMin: opposite ? this.properties.overlayAxisMin : this.properties.yAxisMin }); return axisProperties; }, yFieldsAreOverlayFields: function yFieldsAreOverlayFields() { var match = _underscore2.default.difference(this.yFields, this.overlayFields); return match.length === 0; }, getXAxisCrosshair: function getXAxisCrosshair() { var isSeriesCompareForBarAndColumn = this.properties['legend.mode'] === 'seriesCompare' && (this.type === 'bar' || this.type === 'column'); return this.legendMode === MULTISERIES_MODE || isSeriesCompareForBarAndColumn; }, updateAxisProperties: function updateAxisProperties() { var _this6 = this; // make sure the x-axis gets updated categories, if needed // TODO [sff] remove assumption that there is only one x-axis if (this.hasXAxis) { var xAxis = this.xAxisList[0]; var xField = this.xFields[0]; if (xAxis instanceof _CategoryAxis2.default) { xAxis.setCategories(this.dataSet.getSeries(xField)); } else if (xAxis instanceof _TimeAxis2.default) { var tickmarksBetween = xAxis.hasTickmarksBetween(); var maximumValue = this._getComputedTimeAxisMaxValue(tickmarksBetween); if (maximumValue !== null) { xAxis.setMaximumValue(maximumValue); } if (this.isAnnotationSupported()) { var _getAnnotationsAndPlo2 = this.getAnnotationsAndPlotBands(), plotBands = _getAnnotationsAndPlo2.plotBands, lineAnnotations = _getAnnotationsAndPlo2.lineAnnotations; xAxis.setAnnotations(lineAnnotations); xAxis.setPlotBands(plotBands); } } xAxis.crosshair = this.getXAxisCrosshair(); var xAxisProperties = parsingUtils.getXAxisProperties(this.properties); xAxis.setTitle(this._getComputedXAxisTitle(xAxisProperties, xField)); } // check if we need to draw two y-axis on the chart if (this.hasYAxis) { var maxAxisIndex = (0, _underscore2.default)(this.seriesList).chain().invoke('getYAxisIndex').max().value(); if (this.yAxisList.length < maxAxisIndex + 1) { this.initializeYAxisList(); this._isDirty = true; } } _underscore2.default.each(this.yAxisList, function (yAxis, i) { var yAxisProperties = parsingUtils.getYAxisProperties(_this6.properties, i); yAxis.setTitle(_this6._getComputedYAxisTitle(yAxisProperties, i)); }); }, getAnnotationsAndPlotBands: function getAnnotationsAndPlotBands() { var _filterLineAndSpanAnn = this.filterLineAndSpanAnnotations(this.dataSet.getAnnotations()), plotBands = _filterLineAndSpanAnn.plotBands, annotations = _filterLineAndSpanAnn.annotations; return { plotBands: this.getFormattedPlotBands(plotBands), lineAnnotations: this.getFormattedAnnotations(annotations) }; }, isAnnotationSpanValid: function isAnnotationSpanValid(annotation) { var span = annotation.span; if (span) { var parsed = parseInt(span, 10); return !isNaN(parsed) && parsed >= 0; } return true; }, filterLineAndSpanAnnotations: function filterLineAndSpanAnnotations(initAnnotations) { var _this7 = this; // filter out invalid annotations and plot bands var validAnnotations = _underscore2.default.filter(initAnnotations, function (annotation) { return annotation.time && (0, _moment2.default)(annotation.time).isValid() && _this7.isAnnotationSpanValid(annotation); }); var plotBands = validAnnotations.filter(function (annotation) { return annotation.span; }); return { plotBands: plotBands, annotations: validAnnotations }; }, setFallbackColor: function setFallbackColor(annotationCategory, uniqCategories) { // no color specify, try get color from settings or color palette // eslint-disable-next-line no-prototype-builtins if (this.annotationCategoryColors.hasOwnProperty(annotationCategory)) { return colorUtils.colorFromHex(this.annotationCategoryColors[annotationCategory]); } return this.annotationColorPalette.getColorAsRgb(annotationCategory, uniqCategories.indexOf(annotationCategory), uniqCategories.length); }, createEndDateFromSpan: function createEndDateFromSpan(time, span) { return (0, _moment2.default)(time).add(span, 'seconds').toDate(); }, getFormattedPlotBands: function getFormattedPlotBands(annotations) { var _this8 = this; var uniqCategories = _underscore2.default.uniq(_underscore2.default.pluck(annotations, 'category')); return _underscore2.default.map(annotations, function (annotation) { var category = annotation.category, span = annotation.span, time = annotation.time; var color = annotation.color; var from = (0, _moment2.default)(time).toDate(); var to = _this8.createEndDateFromSpan(time, span); if (!color) { color = _this8.setFallbackColor(category, uniqCategories); } return { from: from, to: to, color: color, label: annotation.label }; }); }, getFormattedAnnotations: function getFormattedAnnotations(annotations) { var _this9 = this; var uniqCategories = _underscore2.default.uniq(_underscore2.default.pluck(annotations, 'category')); return annotations.map(function (annotation) { var category = annotation.category, time = annotation.time, span = annotation.span, label = annotation.label; var initFormattedAnnotation = { category: category, label: label, value: (0, _moment2.default)(time).toDate() }; if (span) { initFormattedAnnotation.span = _this9.createEndDateFromSpan(time, span); } var color = annotation.color; if (!color) { color = _this9.setFallbackColor(category, uniqCategories); } return (0, _extends3.default)({}, initFormattedAnnotation, { color: color }); }); }, _getComputedXAxisTitle: function _getComputedXAxisTitle(axisProperties, field) { return _underscore2.default.isUndefined(axisProperties['axisTitle.text']) || axisProperties['axisTitle.text'] === '' ? this._getDefaultXAxisTitleFromField(field) : axisProperties['axisTitle.text']; }, _getComputedYAxisTitle: function _getComputedYAxisTitle(axisProperties, yAxisIndex) { return _underscore2.default.isUndefined(axisProperties['axisTitle.text']) || axisProperties['axisTitle.text'] === '' ? this._getDefaultYAxisTitle(yAxisIndex) : axisProperties['axisTitle.text']; }, _getDefaultXAxisTitleFromField: function _getDefaultXAxisTitleFromField(field) { return field; }, _getDefaultYAxisTitle: function _getDefaultYAxisTitle(yAxisIndex) { var axisSeries = (0, _underscore2.default)(this.seriesList).filter(function (series) { return series.getYAxisIndex() === yAxisIndex; }); return axisSeries.length === 1 ? axisSeries[0].getName() : undefined; }, _getComputedTimeAxisMaxValue: function _getComputedTimeAxisMaxValue(tickmarksBetween) { // If the axis has tickmarks on points, pad the axis maximum by one point span // to create more room for the last axis label. if (!tickmarksBetween && this.hasBinnedTimeXAxis()) { var timeSeries = this.dataSet.getSeriesAsEpochTimes(this.xFields[0]); var spanSeries = this.dataSet.getSeriesAsFloats('_span'); return _underscore2.default.last(timeSeries) + _underscore2.default.last(spanSeries) * 1000; } return null; }, getTargetPoint: function getTargetPoint(value, targetSeries) { // compute different parts targetPoint var targetPoint = void 0; var xInfo = this.getSeriesXInfo(targetSeries); var xSeries = this.dataSet.getSeries(xInfo.fieldName); var xIndex = xSeries.indexOf(value); var data = targetSeries.getData(); if (xIndex > -1 && xIndex < data.length) { targetPoint = { index: xIndex, originalIndex: xIndex, seriesName: targetSeries.getName(), y: data[xIndex] }; } return targetPoint; }, resetHighlight: function resetHighlight() { if (this.highlighted) { this.unHighlight(); } this.isMouseInteractionActive = false; this.highlighted = null; }, initializeLegend: function initializeLegend() { var legendProps = parsingUtils.getLegendProperties(this.properties); if ((0, _underscore2.default)(legendProps['clickEnabled']).isUndefined()) { legendProps['clickEnabled'] = this.legendClickEnabled; } _jquery2.default.extend(legendProps, { fontColor: (0, _theme.getThemeProperty)('LEGEND_FONT_COLOR') || this.fontColor, isMultiSeries: this.legendMode === MULTISERIES_MODE, isExportMode: this.exportMode }); // Setup data for Outlier count var outlierSeries = this.seriesList[0]; if (outlierSeries.actualSeries) { legendProps.legendOptions = outlierSeries.actualSeries.properties.legendOptions; var isOutlierFieldIdx = this.dataSet.fields.indexOf('isOutlier'); var isOutlierList = this.dataSet.seriesList[isOutlierFieldIdx]; var isOutlier = '1'; var outlierCount = 0; (0, _underscore2.default)(isOutlierList).each(function (isOutlierFlag, i) { if (isOutlierFlag === isOutlier && ( // 0/undefined 1 0 isOutlierList[i - 1] !== isOutlier && isOutlierList[i + 1] !== isOutlier || // 1 1 0/undefined isOutlierList[i - 1] === isOutlier && isOutlierList[i + 1] !== isOutlier)) { outlierCount++; } }); legendProps.legendOptions.labelFormatter = legendProps.legendOptions.labelFormatter(outlierCount); } this.legend = new _Legend2.default(legendProps); this.bindLegendEvents(); }, bindLegendEvents: function bindLegendEvents() { var that = this; var properties = { highlightDelay: 125, unhighlightDelay: 50, onMouseOver: function onMouseOver(fieldName) { that.handleLegendMouseOver(fieldName); }, onMouseOut: function onMouseOut(fieldName) { that.handleLegendMouseOut(fieldName); } }; var throttle = new _HoverEventThrottler2.default(properties); this.legend.on('mouseover', function (e, fieldName) { throttle.mouseOverHappened(fieldName); }); this.legend.on('mouseout', function (e, fieldName) { throttle.mouseOutHappened(fieldName); }); this.legend.on('click', function (e, fieldName) { that.handleLegendClick(e, fieldName); }); }, initializeTooltip: function initializeTooltip() { var tooltipProps = { borderColor: this.foregroundColorSoft, mode: this.legendMode }; this.tooltip = new _Tooltip2.default(tooltipProps); }, setAllSeriesData: function setAllSeriesData() { var _this10 = this; (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.getType() === 'range') { _this10.setRangeSeriesData(series); } else if (series.getType() === 'outlier') { _this10.setOutlierSeriesData(series); } else { _this10.setBasicSeriesData(series); } }); }, setBasicSeriesData: function setBasicSeriesData(series) { var xInfo = this.getSeriesXInfo(series); var yInfo = this.getSeriesYInfo(series); var seriesType = series.getType(); if (xInfo.axis instanceof _NumericAxis2.default) { series.setData({ x: this.formatNumericAxisData(xInfo.axis, xInfo.fieldName, seriesType), y: this.formatNumericAxisData(yInfo.axis, yInfo.fieldName, seriesType) }); } else if (xInfo.axis instanceof _TimeAxis2.default) { series.setData({ x: this.formatTimeAxisData(xInfo.axis, xInfo.fieldName), y: this.formatNumericAxisData(yInfo.axis, yInfo.fieldName, seriesType) }, { sortXValues: !this.hasBinnedTimeXAxis() }); } else { series.setData({ y: this.formatNumericAxisData(yInfo.axis, yInfo.fieldName, seriesType) }); } }, setRangeSeriesData: function setRangeSeriesData(series) { var xInfo = this.getSeriesXInfo(series); var yInfo = this.getSeriesYInfo(series); var rangeConfig = (0, _underscore2.default)(fieldUtils.getRangeSeriesConfig(this.dataSet)).findWhere({ predicted: series.getName() }); var rangeData = { predicted: this.formatNumericAxisData(yInfo.axis, rangeConfig.predicted), lower: this.formatNumericAxisData(yInfo.axis, rangeConfig.lower), upper: this.formatNumericAxisData(yInfo.axis, rangeConfig.upper) }; if (xInfo.axis instanceof _NumericAxis2.default) { rangeData.x = this.formatNumericAxisData(xInfo.axis, xInfo.fieldName); } else if (xInfo.axis instanceof _TimeAxis2.default) { rangeData.x = this.formatTimeAxisData(xInfo.axis, xInfo.fieldName); } series.setData(rangeData); }, setOutlierSeriesData: function setOutlierSeriesData(series) { var xInfo = this.getSeriesXInfo(series); var yInfo = this.getSeriesYInfo(series); var outlierFields = fieldUtils.getOutlierFields(this.dataSet); var outlierData = { actual: this.formatNumericAxisData(yInfo.axis, outlierFields.actual), lower: this.formatNumericAxisData(yInfo.axis, outlierFields.lower), upper: this.formatNumericAxisData(yInfo.axis, outlierFields.upper), isOutlier: this.formatNumericAxisData(yInfo.axis, outlierFields.isOutlier) }; if (xInfo.axis instanceof _NumericAxis2.default) { outlierData.x = this.formatNumericAxisData(xInfo.axis, xInfo.fieldName); } else if (xInfo.axis instanceof _TimeAxis2.default) { outlierData.x = this.formatTimeAxisData(xInfo.axis, xInfo.fieldName); } series.setData(outlierData); }, bindSeriesEvents: function bindSeriesEvents() { var that = this; this.throttle = new _HoverEventThrottler2.default({ highlightDelay: 125, unhighlightDelay: 50, onMouseOver: function onMouseOver(point, series) { if (that.legendMode !== MULTISERIES_MODE) { that.handlePointMouseOver(point, series); } }, onMouseOut: function onMouseOut(point, series) { if (that.legendMode !== MULTISERIES_MODE) { that.handlePointMouseOut(point, series); } else if (that.legend) { that.legend.resetLegend(); } } }); (0, _underscore2.default)(this.seriesList).each(this.bindIndividualSeries, this); }, bindIndividualSeries: function bindIndividualSeries(series) { var that = this; series.on('mouseover', function (e, targetPoint, targetSeries) { that.throttle.mouseOverHappened(targetPoint, targetSeries); }); series.on('mouseout', function (e, targetPoint, targetSeries) { that.throttle.mouseOutHappened(targetPoint, targetSeries); }); series.on('keydown', function (e, targetPoint, targetSeries) { that.handleKeyDown(targetSeries); }); series.on('click', function (e, targetPoint, targetSeries) { that.handlePointClick(e, targetPoint, targetSeries); }); }, getPointEventContext: function getPointEventContext(point, series) { var _this11 = this; var pointIndex = _underscore2.default.has(point, 'originalIndex') ? point.originalIndex : point.index; var pointInfo = this.getSeriesPointInfo(series, point); var value = void 0; var _span = void 0; var rowContext = {}; if (pointInfo.xAxisIsTime) { var isoTimeString = this.dataSet.getSeries(pointInfo.xAxisName)[pointIndex]; value = _time2.default.getEpochTimeFromISO(isoTimeString); rowContext['row.' + pointInfo.xAxisName] = value; if (this.hasBinnedTimeXAxis()) { _span = this.dataSet.getSeriesAsFloats('_span')[pointIndex]; } else { _span = 0.001; // 1ms } } else { value = pointInfo.xValue; rowContext['row.' + pointInfo.xAxisName] = pointInfo.xValue; } (0, _underscore2.default)(this.yFields).each(function (fieldName) { rowContext['row.' + fieldName] = _this11.dataSet.getSeries(fieldName)[pointIndex]; }); return { name: pointInfo.xAxisName, name2: pointInfo.yAxisName, value: value, value2: pointInfo.yValue, rowContext: rowContext, _span: _span }; }, getTooltipPosition: function getTooltipPosition(point) { return { tooltipX: point.plotX + this.hcChart.plotLeft, tooltipY: point.plotY + this.hcChart.plotTop }; }, handlePointClick: function handlePointClick(event, point, series) { var pointClickEvent = (0, _extends3.default)({ type: 'pointClick', modifierKey: event.modifierKey }, this.getPointEventContext(point, series)); this.trigger(pointClickEvent); }, handleKeyDown: function handleKeyDown(targetSeries) { (0, _underscore2.default)(this.seriesList).each(function (series) { series.hcSeries.points.forEach(function (p) { p.select(false); }); series.highlight(); }); if (this.legend) { this.legend.unSelectField(targetSeries.getLegendKey()); } }, handlePointMouseOver: function handlePointMouseOver(targetPoint, targetSeries) { this.isMouseInteractionActive = true; (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.matchesName(targetSeries.getName())) { series.handlePointMouseOver(targetPoint); } else { series.unHighlight(); } }); if (this.legend) { this.legend.selectField(targetSeries.getLegendKey()); } var pointMouseOverEvent = (0, _extends3.default)({ type: 'pointMouseOver' }, this.getPointEventContext(targetPoint, targetSeries), { tooltipContext: this.getTooltipPosition(targetPoint) }); this.trigger(pointMouseOverEvent); }, handlePointMouseOut: function handlePointMouseOut(targetPoint, targetSeries) { (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.matchesName(targetSeries.getName())) { series.handlePointMouseOut(targetPoint); } else { series.highlight(); } }); if (this.legend) { this.legend.unSelectField(targetSeries.getLegendKey()); } this.isMouseInteractionActive = false; var pointMouseOutEvent = (0, _extends3.default)({ type: 'pointMouseOut' }, this.getPointEventContext(targetPoint, targetSeries), { tooltipContext: this.getTooltipPosition(targetPoint) }); this.trigger(pointMouseOutEvent); }, handleLegendClick: function handleLegendClick(event, fieldName) { var legendClickEvent = { type: 'legendClick', modifierKey: event.modifierKey, name2: fieldName }; this.trigger(legendClickEvent); }, handleLegendMouseOver: function handleLegendMouseOver(fieldName) { this.isMouseInteractionActive = true; (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.matchesName(fieldName)) { series.handleLegendMouseOver(fieldName); } else { series.unHighlight(); } }); }, handleLegendMouseOut: function handleLegendMouseOut(fieldName) { (0, _underscore2.default)(this.seriesList).each(function (series) { if (series.matchesName(fieldName)) { series.handleLegendMouseOut(fieldName); } else { series.highlight(); } }); this.isMouseInteractionActive = false; }, applyColorPalette: function applyColorPalette() { var _this12 = this; if (this.isEmpty()) { return; } var colorMapping = {}; (0, _underscore2.default)(this.getFieldList()).each(function (field, i, fieldList) { colorMapping[field] = _this12.computeFieldColor(field, i, fieldList); }); (0, _underscore2.default)(this.seriesList).invoke('applyColorMapping', colorMapping); }, // //////////////////////////////////////////////////////////////////////////////// // methods for generating config objects from chart objects getConfig: function getConfig() { var that = this; var config = _jquery2.default.extend(true, { chart: { animation: this.enableAnimation }, plotOptions: { series: { animation: this.enableAnimation } }, tooltip: { animation: this.enableAnimation, // Disable followTouchMove for zoomable charts so that the single-finger drag pans the chart. followTouchMove: !this.isZoomable() } }, this.BASE_CONFIG, { chart: this.getChartConfig(), series: this.getSeriesConfigList(), xAxis: this.getXAxisConfig(), yAxis: this.getYAxisConfig(), legend: this.getLegendConfig(), tooltip: this.getTooltipConfig(), plotOptions: this.getPlotOptionsConfig(), pointerDragStartPreHook: (0, _underscore2.default)(this.pointerDragStartPreHook).bind(this), pointerDragOverride: (0, _underscore2.default)(this.pointerDragOverride).bind(this), pointerDropPreHook: (0, _underscore2.default)(this.pointerDropPreHook).bind(this), pointerDropPostHook: (0, _underscore2.default)(this.pointerDropPostHook).bind(this), pointerPinchOverride: (0, _underscore2.default)(this.pointerPinchOverride).bind(this) }); if (this.exportMode) { if (this.seriesIsTimeBased(this.xFields)) { (0, _underscore2.default)(config.xAxis).each(function (xAxis) { var xAxisMargin = void 0; if (that.axesAreInverted) { xAxisMargin = -50; } else { var spanSeries = that.dataSet.getSeriesAsFloats('_span'); var span = spanSeries && spanSeries.length > 0 ? parseInt(spanSeries[0], 10) : 1; var secsPerDay = 60 * 60 * 24; var secsPerYear = secsPerDay * 365; if (span >= secsPerYear) { xAxisMargin = 15; } else if (span >= secsPerDay) { xAxisMargin = 25; } else { xAxisMargin = 35; } } xAxis.title.margin = xAxisMargin; }); } _jquery2.default.extend(true, config, { plotOptions: { series: { enableMouseTracking: false, shadow: false } } }); } if (this.properties.hasOwnProperty('time.serializedTz') || // eslint-disable-line no-prototype-builtins this.properties.hasOwnProperty('time.timezoneOffset') || // eslint-disable-line no-prototype-builtins this.properties.hasOwnProperty('time.ianaTimezone') // eslint-disable-line no-prototype-builtins ) { // only specify the highcharts time config properties if the custom time overrides are present in properties _jquery2.default.extend(true, config, { time: this.getTimeConfig() }); } return config; }, getSeriesConfigList: function getSeriesConfigList() { return (0, _underscore2.default)(this.seriesList).chain().invoke('getConfig').flatten(true).value(); }, // For Line extend x axis config to contain plot band config // if annotation data is passed with annotationSpan field getXAxisConfig: function getXAxisConfig() { if (!this.hasXAxis) { return []; } return (0, _underscore2.default)(this.xAxisList).map(function (axis, i) { var config = axis.getConfig(); if (i > 0) { config.offset = 40; } return config; }, this); }, getYAxisConfig: function getYAxisConfig() { if (!this.hasYAxis) { return []; } return (0, _underscore2.default)(this.yAxisList).map(function (axis) { return axis.getConfig(); }); }, getLegendConfig: function getLegendConfig() { if (!this.hasLegend || !this.legend) { return {}; } return this.legend.getConfig(); }, getTimeConfig: function getTimeConfig() { var _this13 = this; // this is the default global time config inside splunk-time-axis var timeConfig = { useUTC: false }; // we only want to use either the custom callback, the ianaTimezone, or the static offset, and the callback takes precedence // eslint-disable-next-line no-prototype-builtins if (this.properties.hasOwnProperty('time.serializedTz')) { timeConfig.useUTC = true; var parsedTz = (0, _convertSplunkTimezone2.default)(this.properties['time.serializedTz']); timeConfig.getTimezoneOffset = function (millis) { var untilsIndex = (0, _sortedLastIndex2.default)(parsedTz.untils, millis); return parsedTz.offsets[untilsIndex]; }; // eslint-disable-next-line no-prototype-builtins } else if (this.properties.hasOwnProperty('time.timezoneOffset')) { timeConfig.timezoneOffset = mathUtils.parseFloat(this.properties['time.timezoneOffset']); timeConfig.useUTC = true; // eslint-disable-next-line no-prototype-builtins } else if (this.properties.hasOwnProperty('time.ianaTimezone')) { // https://api.highcharts.com/highcharts/time.moment // we don't have access to the Highcharts 8.2.0 API which allows for passing a moment.js instance as an option // if we were on 8.2.0, we could do the following instead: /* time.moment = momentTz; time.timezone = this.properties['time.ianaTimezone']; */ // as a workaround, invoke momentTz to return the utcOffset in minutes timeConfig.useUTC = true; timeConfig.getTimezoneOffset = function (millis) { return _moment2.default.tz.zone(_this13.properties['time.ianaTimezone']).utcOffset(millis); }; } return timeConfig; }, getTooltipConfig: function getTooltipConfig() { if (!this.tooltip) { return {}; } return _jquery2.default.extend(this.tooltip.getConfig(), { // initially disable the tooltip, it will be re-enabled when the draw has completed // this is to support progressive draw where some content is visible but the chart is not yet interactive formatter: function formatter() { return false; } }); }, formatTooltip: function formatTooltip(series, hcPoint, useStackValue) { var _this14 = this; var pointInfo = this.getSeriesPointInfo(series, hcPoint); // in metrics legend mode, we have a single common tooltip showing only // the x-axis value if (this.legendMode === MULTISERIES_MODE) { return _underscore2.default.escape(pointInfo.xValueDisplay); } var allPointInformation = void 0; if (useStackValue) { allPointInformation = []; var color = void 0; var text = void 0; var yValueDisplay = void 0; this.seriesList.forEach(function (seriesNext) { color = seriesNext.getColor(); text = seriesNext.getName(); yValueDisplay = _this14.getSeriesPointInfo(seriesNext, seriesNext.hcSeries.points[hcPoint.index]).yValueDisplay; allPointInformation.push([{ color: color, text: text }, yValueDisplay]); }); } var isSeriesCompareForBarAndColumn = this.properties['legend.mode'] === 'seriesCompare' && (this.type === 'bar' || this.type === 'column'); return series.getTooltipHtml(pointInfo, this.hcChart, allPointInformation, isSeriesCompareForBarAndColumn); }, getChartConfig: function getChartConfig() { var that = this; var config = { type: this.type, renderTo: this.container, backgroundColor: this.backgroundColor, borderColor: this.backgroundColor, events: { redraw: function redraw() { // Highcharts calls this handler in the scope of the current chart object var chart = this; that.onChartRedraw(chart); that.onChartLoadOrRedraw(chart); }, endResize: this.onChartResize.bind(this), tooltipRefresh: this.onTooltipRefresh.bind(this) } }; if (this.hasXAxis) { config.events.selection = this.onChartSelection.bind(this); } // in export mode we need to set explicit width and height // we'll honor the width and height of the parent node, unless they are zero if (this.exportMode) { config.width = this.width || this.EXPORT_WIDTH; config.height = this.height || this.EXPORT_HEIGHT; } else if (!this.$container.is(':visible')) { // If the container is not visible as the chart is being drawn, set some default dimensions // so that the chart will resize correctly when made visible (SPL-101997) config.width = this.FALLBACK_WIDTH; config.height = this.FALLBACK_HEIGHT; } // allow zoom for column, line, area charts only if (this.isZoomable()) { if (this.zoomType !== 'off') { config.zoomType = this.zoomType || 'x'; } } // don't align the ticks when we have multiple y-axis in the chart and at least one of the axes has either explicit min or explicit max (SPL-113709) // similarly, trying to align log axes will often create empty space at the top end of the axis, so disable alignment if any axis has log scale if (this.yAxisList && this.yAxisList.length > 1) { var hasExplicitMinOrMax = _underscore2.default.find(this.yAxisList, function (yAxis) { return yAxis.hasExplicitMin || yAxis.hasExplicitMax; }); var hasLogAxis = _underscore2.default.any(this.yAxisList, function (yAxis) { return yAxis.isLogScale(); }); if (hasExplicitMinOrMax || hasLogAxis) { config.alignTicks = false; } } return config; }, getDataLabelConfig: function getDataLabelConfig() { if (this.showLabels === 'none' || typeof this.dataLabels === 'undefined') { return { enabled: false }; } var that = this; var dataLabelsWithFormatter = _jquery2.default.extend(true, {}, this.dataLabels.getConfig(), { formatter: function formatter() { for (var i = 0; i < that.seriesList.length; i++) { var seriesId = this.series.options.id; var splunkSeriesId = that.seriesList[i].id; // To use helper, we need to identity the associated splunk series. if (seriesId === splunkSeriesId) { var pointInfo = that.getSeriesPointInfo(that.seriesList[i], this.point); if (pointInfo) { return pointInfo.yValueDisplay; } } } return undefined; } }); return dataLabelsWithFormatter; }, getPlotOptionsConfig: function getPlotOptionsConfig() { // SPL-74520, track-by-area only works well if the series do not overlap eachother, // so it is disabled for a non-stacked chart or a range series chart var trackByArea = this.stackMode !== 'default' && !fieldUtils.isRangeSeriesDataSet(this.dataSet); var showMarkerHalo = parsingUtils.normalizeBoolean(this.properties['showMarkerHalo'], true); return _jquery2.default.extend(true, {}, this.BASE_PLOT_OPTIONS_CONFIG, { series: { cursor: this.chartClickEnabled ? 'pointer' : 'default', dataLabels: this.getDataLabelConfig() }, area: { enableMouseTracking: !fieldUtils.isOutlierDataSet(this.dataSet), trackByArea: trackByArea }, line: { states: { hover: (0, _extends3.default)({}, !showMarkerHalo && { halo: 0 }) } }, column: { grouping: this.properties['columnGrouping'] !== 'overlay', minPointLength: this.properties['chart.nullValueMode'] !== 'zero' ? 2 : 0 } }); }, isAnnotationSupported: function isAnnotationSupported() { return _underscore2.default.indexOf(['area', 'line', 'column'], this.type) >= 0; }, isZoomable: function isZoomable() { return this.type === 'area' || this.type === 'line' || this.type === 'column'; }, isStackable: function isStackable() { return this.type !== 'line'; }, shouldSetSeriesZerosToNull: function shouldSetSeriesZerosToNull(seriesType) { return this.type === 'column' && this.properties['chart.nullValueMode'] !== 'zero' && seriesType === 'column'; }, // ////////////////////////////////////////////////////////////////////////////////////// // methods for managing event handlers and effects enableTooltip: function enableTooltip(hcChart, useStackValue) { var that = this; hcChart.tooltip.options.formatter = function tooltipFormatter() { // now with the shared tooltip functionality, we need to determine if this is an array of points // or a single point var curPoint = this.points && this.points.length ? this.points[0] : this; // need to look up the instance of Splunk.JSCharting.BaseSeries, not the HighCharts series var series = curPoint.series.splSeries; return that.formatTooltip(series, curPoint.point, useStackValue); }; }, onTooltipRefresh: function onTooltipRefresh() { var _this15 = this; if (this.legend && this.legendMode === MULTISERIES_MODE) { var points = this.hcChart.hoverPoints.map(function (hcPoint) { var series = _this15.getSeriesByName(hcPoint.series.name); var pointInfo = _this15.getSeriesPointInfo(series, hcPoint); return { seriesIndex: hcPoint.series.index, value: pointInfo.yValue, formattedValue: pointInfo.yValueDisplay }; }); this.legend.updateLegend(points); } }, onChartLoad: function onChartLoad(chart) { if (this.legend) { this.legend.onChartLoad(chart); } if (this.dataLabels) { this.dataLabels.onChartLoad(chart); } (0, _underscore2.default)(this.xAxisList).invoke('onChartLoad', chart); (0, _underscore2.default)(this.yAxisList).invoke('onChartLoad', chart); (0, _underscore2.default)(this.seriesList).invoke('onChartLoad', chart); if (this.isZoomable() && !this.shouldRemoveRangeSelectOnLoad()) { this.triggerRangeSelectionEvent(); } }, onChartRedraw: function onChartRedraw(chart) { var that = this; if (this.selectionWindow) { this.selectionWindow.onChartRedraw(chart); } else if (this.isZoomable() && !this.isiOS) { var xAxis = this.xAxisList[0]; if (xAxis && xAxis.isZoomed) { if (!this.resetZoomButton) { this.resetZoomButton = new _ZoomOutButton2.default(this.hcChart); } if (this.panButtons) { this.panButtons.onChartRedraw(chart); } else { this.panButtons = new _PanButtons2.default(this.hcChart, this.panDistanceResolver.bind(this)); this.panButtons.on('pan', function () { that.triggerRangeSelectionEvent(); }); } } else { if (this.resetZoomButton) { this.resetZoomButton.destroy(); this.resetZoomButton = null; } if (this.panButtons) { this.panButtons.destroy(); this.panButtons = null; } } } // When search zoom is enabled, we are removing panning and reset // This means until reset is enabled, we do not need this range selection event. if (this.isZoomable() && !this.selectionTriggeredBeforeRedraw && !this.shouldEnableSearchZoom()) { var skipNormalization = !this.selectionWindow || this.updateHasRebinned; this.triggerRangeSelectionEvent(null, { skipNormalization: skipNormalization }); } this.selectionTriggeredBeforeRedraw = false; }, onChartLoadOrRedraw: function onChartLoadOrRedraw(chart) { var _this16 = this; if (this.legend) { this.legend.onChartLoadOrRedraw(chart); } if (this.dataLabels) { this.dataLabels.onChartLoadOrRedraw(chart); } (0, _underscore2.default)(this.xAxisList).invoke('onChartLoadOrRedraw', chart); (0, _underscore2.default)(this.yAxisList).invoke('onChartLoadOrRedraw', chart); (0, _underscore2.default)(this.seriesList).invoke('onChartLoadOrRedraw', chart); var isSeriesCompareForBarAndColumn = this.properties['legend.mode'] === 'seriesCompare' && (this.type === 'bar' || this.type === 'column'); if (isSeriesCompareForBarAndColumn) { if (chart.customImages) { chart.customImages.forEach(function (el) { el.destroy(); }); chart.customImages.length = 0; } else { chart.customImages = []; } var that = this; var shape = void 0; var XYCache = {}; chart.series.forEach(function (series, seriesIndex) { series.points.forEach(function (point, index) { shape = point.shapeArgs; if (point.y) { var x = void 0; var y = void 0; var width = void 0; var height = void 0; if (_this16.type === 'bar') { x = chart.plotLeft; y = chart.plotTop + chart.plotHeight - shape.x - shape.width; width = chart.plotWidth; height = shape.width; } else if (_this16.type === 'column') { // column x = shape.x + chart.plotLeft; y = chart.plotTop; width = shape.width; height = chart.plotHeight; } var key = x + '-' + y + '-' + width + '-' + height; if (!XYCache[key]) { XYCache[key] = true; // these custom images are used to handle mouse events chart.customImages.push(chart.renderer.image('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=', x, y, width, height).on('mouseover', function () { that.enableTooltip(chart, true); chart.tooltip.refresh(chart.series[seriesIndex].points[index]); }).on('mouseout', function () { chart.tooltip.hide(); that.enableTooltip(chart, false); }).on('click', function () { var pointEventContext = that.getPointEventContext(_this16.seriesList[seriesIndex].hcSeries.points[index], _this16.seriesList[seriesIndex]); var pointClickEvent = (0, _extends3.default)({ type: 'pointClick' }, pointEventContext); delete pointClickEvent['name2']; delete pointClickEvent['value2']; _this16.trigger(pointClickEvent); }).attr('data-test-customImage', chart.customImages.length).add()); } } }); }); } }, onChartDestroy: function onChartDestroy() { if (this.legend) { this.legend.destroy(); } if (this.dataLabels) { this.dataLabels.destroy(); } (0, _underscore2.default)(this.xAxisList).invoke('destroy'); (0, _underscore2.default)(this.yAxisList).invoke('destroy'); (0, _underscore2.default)(this.seriesList).invoke('destroy'); if (this.selectionWindow) { this.selectionWindow.destroy(); this.selectionWindow = null; } if (this.panButtons) { this.panButtons.destroy(); this.panButtons = undefined; } if (this.highlighted) { this.resetHighlight(); } }, onChartSelection: function onChartSelection(originalEvent) { // We want to remove reset, panning and the visual only zoom when search zoom is enabled // This can be done by using preventDefault, which will remove the visual-only zoom effects if (this.shouldEnableSearchZoom()) { originalEvent.preventDefault(); } var xAxis = this.xAxisList[0]; if (!originalEvent.resetSelection) { var xAxisInfo = originalEvent.xAxis[0]; var normalizedExtremes = this.getNormalizedAxisExtremes(xAxisInfo.min, xAxisInfo.max); // TODO [sff] maybe this should be handled elsewhere? xAxisInfo.min = normalizedExtremes.min; xAxisInfo.max = normalizedExtremes.max; if (!this.hasTimeXAxis()) { xAxisInfo.max += xAxis.hasTickmarksBetween() ? 0 : 1; } // This is the one place where the range selection event if triggered with explicit extremes, // at this stage in the event lifecycle the new extremes have not yet been applied to the axis. var rangeSelectionEvent = this.triggerRangeSelectionEvent(normalizedExtremes); if (rangeSelectionEvent.isDefaultPrevented()) { originalEvent.preventDefault(); // cancel a pending range reset event since we are creating a new selection window this.hasPendingRangeResetEvent = false; if (xAxis.getZoomed(xAxisInfo.min, xAxisInfo.max)) { this.selectionWindow = new _SelectionWindow2.default(this.hcChart, this.xAxisValueSnapper.bind(this)); var that = this; this.selectionWindow.on('rangeSelect', function () { that.triggerRangeSelectionEvent(); }); } } else { // Since we are triggering the event before the chart redraws, set a flag that will suppress what // would be a duplicate event trigger in onChartRedraw. this.selectionTriggeredBeforeRedraw = true; } } }, onChartResize: function onChartResize(chart) { if (this.panButtons) { this.panButtons.onChartResize(chart); } if (this.highlighted) { // onChart Resize we want to persist highlight // you need to redraw it since the rendered highlight size has changed. var existingHighlight = this.highlighted; this.resetHighlight(); this.highlight(existingHighlight.value, existingHighlight.seriesName); } }, // Will be called by components like the pan buttons to determine how far an individual panning action should shift the axis. // Returns an object with `min` and `max` to indicate a value change for both extremes panDistanceResolver: function panDistanceResolver(axis, direction) { // For a category axis, always shift the axis by one category at a time. if (!this.hasTimeXAxis()) { return { min: 1, max: 1 }; } // For an un-binned time axis, shift the axis by one tick interval at a time. if (!this.hasBinnedTimeXAxis()) { var tickInterval = axis.dateTime.normalizeTimeTickInterval(axis.tickInterval, axis.options.units).unitRange; return { min: tickInterval, max: tickInterval }; } // For a binned time axis, we can use the span information to shift one point at a time. var extremes = axis.getExtremes(); var timeSeries = this.dataSet.getSeriesAsEpochTimes(this.xFields[0]); var spanSeries = this.dataSet.getSeriesAsFloats('_span'); var previousMinIndex = this.findNearestTimeBinIndex(extremes.min, timeSeries); var previousMaxIndex = this.findNearestTimeBinIndex(extremes.max, timeSeries); // When panning to the left, compute the span of the previous point to each extreme, and shift that far. if (direction === 'left') { if (previousMinIndex === 0) { return { min: 0, max: 0 }; } return { min: spanSeries[previousMinIndex - 1] * 1000, max: spanSeries[previousMaxIndex - 1] * 1000 }; } // When panning to the right, compute the span of the current point at each extreme, and shift that far. if (direction === 'right') { if (previousMaxIndex >= spanSeries.length) { return { min: 0, max: 0 }; } return { min: spanSeries[previousMinIndex] * 1000, max: spanSeries[previousMaxIndex] * 1000 }; } return undefined; }, // Called by components like the selection window to have a raw x-axis value snapped to align with the nearest data point. // In addition to the raw value, accepts a "snap strategy", which can be "round", "floor", or "ceil". // Returns the snapped x-axis value. xAxisValueSnapper: function xAxisValueSnapper(value, snapStrategy) { snapStrategy = snapStrategy || 'round'; // For a category axis, snap to integer values. if (!this.hasTimeXAxis()) { return Math[snapStrategy](value); } // For an un-binned time axis the point distribution is unknown, so punt and don't even try to snap. if (!this.hasBinnedTimeXAxis()) { return value; } // For a binned time axis, find the nearest time bin to the raw value. var timeSeries = this.dataSet.getSeriesAsEpochTimes(this.xFields[0]); var binIndex = this.findNearestTimeBinIndex(value, timeSeries); var roundedTimeValue = timeSeries[binIndex]; // The `findNearestTimeBinIndex` performs a rounding operation, // so adjust for that if the strategy is "floor" or "ceil". if (snapStrategy === 'floor' && value < roundedTimeValue && binIndex > 0) { binIndex--; } else if (snapStrategy === 'ceil' && value > roundedTimeValue) { binIndex++; } // It's allowed to snap past the last data point, by using its span value to find where the next point would be. if (binIndex === timeSeries.length) { return timeSeries[binIndex - 1] + this.dataSet.getSeriesAsFloats('_span')[binIndex - 1] * 1000; } return timeSeries[binIndex]; }, getNormalizedAxisExtremes: function getNormalizedAxisExtremes(min, max) { var hcAxis = this.hcChart.xAxis[0]; var axisMax = hcAxis.dataMax; var axisMin = hcAxis.dataMin; var enforceAxisBounds = function enforceAxisBounds(extreme) { if (extreme > axisMax) { extreme = axisMax; } if (extreme < axisMin) { extreme = axisMin; } return extreme; }; min = enforceAxisBounds(min); max = enforceAxisBounds(max); if (this.hasTimeXAxis()) { return this.getNormalizedTimeAxisExtremes(min, max); } return this.getNormalizedCategoryAxisExtremes(min, max); }, getNormalizedTimeAxisExtremes: function getNormalizedTimeAxisExtremes(min, max) { if (!this.hasBinnedTimeXAxis()) { return { min: min, max: max }; } var axis = this.xAxisList[0]; var timeSeries = this.dataSet.getSeriesAsEpochTimes(this.xFields[0]); var spanSeries = this.dataSet.getSeriesAsFloats('_span'); var minIndex = this.findNearestTimeBinIndex(min, timeSeries); var maxIndex = this.findNearestTimeBinIndex(max, timeSeries); return { min: timeSeries[minIndex], max: timeSeries[maxIndex] + (axis.hasTickmarksBetween() ? 0 : spanSeries[maxIndex] * 1000) }; }, getNormalizedCategoryAxisExtremes: function getNormalizedCategoryAxisExtremes(min, max) { var axis = this.xAxisList[0]; var hcAxis = this.hcChart.xAxis[0]; var axisMax = hcAxis.dataMax; var normalizedMin = Math.round(min); var normalizedMax = Math.round(max); var isTouch = this.isiOS && this.hcChart.pointer.selectionMarker; var isTouchPan = isTouch && this.hcChart.pointer.selectionMarker.width === this.hcChart.plotWidth; var isTouchZoom = isTouch && this.hcChart.pointer.selectionMarker.width !== this.hcChart.plotWidth; if (isTouchPan && normalizedMax > normalizedMin && normalizedMax !== axisMax) { // If max and min are not equal, and if the event was a touch pan, normalize the max for non-column charts. // Except when panning to the end of the chart. normalizedMax -= axis.hasTickmarksBetween() ? 0 : 1; } if (isTouchZoom && max - min < 1 && !axis.hasTickmarksBetween()) { // User is zoomed in on 1 point. Do not let them zoom in further normalizedMax = normalizedMin; } return { min: normalizedMin, max: normalizedMax }; }, findNearestTimeBinIndex: function findNearestTimeBinIndex(timeValue, timeSeries) { var index = _underscore2.default.sortedIndex(timeSeries, timeValue); if (index === 0) { return 0; } var distanceFromPrevious = timeValue - timeSeries[index - 1]; var distanceFromNext = timeSeries[index] - timeValue; return distanceFromPrevious < distanceFromNext ? index - 1 : index; }, calculatePostUpdateExtremes: function calculatePostUpdateExtremes(preUpdateExtremes) { var xAxis = this.xAxisList[0]; if (!this.hasTimeXAxis()) { var updatedCategories = xAxis.getCategories(); return updatedCategories.length > preUpdateExtremes.max ? preUpdateExtremes : { min: null, max: null }; } if (!this.hasBinnedTimeXAxis()) { return preUpdateExtremes; } var timeSeries = this.dataSet.getSeriesAsEpochTimes(this.xFields[0]); var spanSeries = this.dataSet.getSeriesAsFloats('_span'); var incomingExtremes = { min: timeSeries[0], max: _underscore2.default.last(timeSeries) + _underscore2.default.last(spanSeries) * 1000 }; if (incomingExtremes.max < preUpdateExtremes.max || incomingExtremes.min > preUpdateExtremes.min) { return { min: null, max: null }; } var lastTimeValue = timeSeries[timeSeries.length - 1]; var min = timeSeries[this.findNearestTimeBinIndex(preUpdateExtremes.min, timeSeries)]; var max = preUpdateExtremes.max > lastTimeValue ? lastTimeValue : timeSeries[this.findNearestTimeBinIndex(preUpdateExtremes.max, timeSeries)]; if (timeSeries.indexOf(preUpdateExtremes.min) === -1 || timeSeries.indexOf(preUpdateExtremes.max) === -1) { this.updateHasRebinned = true; } return { min: min, max: max }; }, triggerRangeSelectionEvent: function triggerRangeSelectionEvent(extremes, options) { var e = void 0; var xAxis = this.xAxisList[0]; // The range is being reset if there are no explicit extremes, there is no selection window, // and the axis is not zoomed. var isReset = !extremes && !this.selectionWindow && !xAxis.isZoomed; if (!extremes) { if (this.selectionWindow) { extremes = this.selectionWindow.getExtremes(); extremes.min += xAxis.hasTickmarksBetween() ? 1 : 0; } else { extremes = this.hcChart.xAxis[0].getExtremes(); if (xAxis.isZoomed) { extremes.max -= xAxis.hasTickmarksBetween() ? 0 : 1; } } if (!options || !options.skipNormalization) { extremes = this.getNormalizedAxisExtremes(extremes.min, extremes.max); } } if (this.hasTimeXAxis()) { var timeSeries = this.dataSet.getSeriesAsEpochTimes(this.xFields[0]); var span = 0; var endXIndex = _underscore2.default.sortedIndex(timeSeries, extremes.max); if (this.hasBinnedTimeXAxis() && xAxis.hasTickmarksBetween() && !this.selectionWindow) { var spanSeries = this.dataSet.getSeriesAsFloats('_span'); span = spanSeries[endXIndex]; } else if (this.hasBinnedTimeXAxis() && (!xAxis.hasTickmarksBetween() || this.selectionWindow)) { endXIndex--; } e = _jquery2.default.Event('chartRangeSelect', { startXIndex: _underscore2.default.sortedIndex(timeSeries, extremes.min), endXIndex: endXIndex, startXValue: extremes.min / 1000, endXValue: extremes.max / 1000 + span, isReset: !!isReset }); } else { var categories = this.dataSet.getSeries(this.xFields[0]); e = _jquery2.default.Event('chartRangeSelect', { startXIndex: extremes.min, endXIndex: extremes.max, startXValue: categories[extremes.min], endXValue: categories[extremes.max], isReset: !!isReset }); } this.trigger(e); return e; }, pointerDragStartPreHook: function pointerDragStartPreHook(pointer, e) { this.isMouseInteractionActive = true; if (this.selectionWindow) { var handled = this.selectionWindow.handleDragStartEvent(e); if (!handled) { this.destroySelectionWindow(); } } }, /* * Override the default behavior of the Highcharts Pointer#pinch method, so that we can remap * gestures into manipulations of the range selection window (if it's there) as opposed to axis zoom/pan. */ pointerPinchOverride: function pointerPinchOverride(pointer, e, originalFn) { if (this.selectionWindow) { if (e.type === 'touchstart') { // For touchstart, the original function needs to run because it sets some stateful reference // co-ordinates that are used later to compute drag distances. We can prevent Highcharts from // doing any axis zoom work by disabling the zoomEnabled flag for the x-axis. this.hcChart.xAxis[0].zoomEnabled = false; originalFn.call(pointer, e); var handled = this.selectionWindow.handleDragStartEvent(e); if (!handled) { this.destroySelectionWindow(); } this.hcChart.xAxis[0].zoomEnabled = true; } else if (e.type === 'touchmove') { this.selectionWindow.handleDragEvent(e); } else if (e.type === 'touchend') { this.selectionWindow.handleDropEvent(e); } } else { originalFn.call(pointer, e); } }, destroySelectionWindow: function destroySelectionWindow() { if (this.selectionWindow) { this.selectionWindow.destroy(); this.selectionWindow = null; // note that a range reset event is pending, to be handled in pointerDropPostHook // this can potentially be cancelled if the current drag event results in creating a new selected range this.hasPendingRangeResetEvent = true; } }, pointerDragOverride: function pointerDragOverride(pointer, e, originalFn) { if (this.selectionWindow) { this.selectionWindow.handleDragEvent(e); } else { originalFn.call(pointer, e); if (this.hcChart.pointer.selectionMarker) { this.hcChart.pointer.selectionMarker.attr({ 'stroke-width': 2, stroke: this.foregroundColorSofter }); } } }, pointerDropPreHook: function pointerDropPreHook(pointer, e) { if (this.selectionWindow) { this.selectionWindow.handleDropEvent(e); } }, pointerDropPostHook: function pointerDropPostHook() { if (this.hasPendingRangeResetEvent) { this.triggerRangeSelectionEvent(); this.hasPendingRangeResetEvent = false; } this.isMouseInteractionActive = false; }, // /////////////////////////////////////////////////////////////////////////////////// // re-usable helpers getSeriesByName: function getSeriesByName(name) { return (0, _underscore2.default)(this.seriesList).find(function (series) { return series.hcSeries.name === name; }); }, getSeriesXInfo: function getSeriesXInfo(series) { var xIndex = series.getXAxisIndex(); return { axis: this.xAxisList[xIndex], fieldName: this.xFields[xIndex] }; }, getSeriesYInfo: function getSeriesYInfo(series) { return { axis: this.yAxisList[series.getYAxisIndex()], fieldName: series.getName() }; }, getSeriesPointInfo: function getSeriesPointInfo(series, hcPoint) { var pointIndex = _underscore2.default.has(hcPoint, 'originalIndex') ? hcPoint.originalIndex : hcPoint.index; var xInfo = this.getSeriesXInfo(series); var yInfo = this.getSeriesYInfo(series); var categories = this.dataSet.getSeries(xInfo.fieldName); var ySeries = this.dataSet.getSeries(yInfo.fieldName); return { pointIndex: pointIndex, xAxisIsTime: xInfo.axis instanceof _TimeAxis2.default, xAxisName: xInfo.fieldName, xValue: categories[pointIndex], xValueDisplay: xInfo.axis.formatValue(categories[pointIndex], hcPoint), yAxisName: yInfo.fieldName, yValue: ySeries[pointIndex], yValueDisplay: yInfo.axis.formatValue(ySeries[pointIndex], hcPoint), shouldColorizeTooltipData: this.shouldColorizeTooltipData }; }, getDashStyle: function getDashStyle() { // convert first char to upper case as HighCharts expects options to have this convention var dashStyle = this.properties['lineDashStyle']; if (dashStyle) { return parsingUtils.capitalize(dashStyle); } return undefined; }, // by convention, we consider a series to be time-based if it is called _time seriesIsTimeBased: function seriesIsTimeBased(fieldName) { return (/^_time/.test(fieldName) ); }, formatNumericAxisData: function formatNumericAxisData(axis, fieldName, seriesType) { if (!this.dataSet.hasField(fieldName)) { return []; } return this.dataSet.getSeriesAsFloats(fieldName, { scale: axis.isLogScale() ? 'log' : 'linear', nullValueMode: this.properties['chart.nullValueMode'], zerosToNull: this.shouldSetSeriesZerosToNull(seriesType) }); }, formatTimeAxisData: function formatTimeAxisData(axis, fieldName) { if (!this.dataSet.hasField(fieldName)) { return []; } return this.dataSet.getSeriesAsEpochTimes(fieldName); }, computeFieldColor: function computeFieldColor(field, index, fieldList) { // eslint-disable-next-line no-prototype-builtins if (this.internalFieldColors.hasOwnProperty(field)) { return colorUtils.colorFromHex(this.internalFieldColors[field]); } var useExternalPalette = !this.seriesColors && !(0, _underscore2.default)(this.externalPaletteMapping).isEmpty(); var paletteIndex = useExternalPalette ? this.externalPaletteMapping[field] : index; var paletteSize = useExternalPalette ? this.externalPaletteSize : fieldList.length; return this.colorPalette.getColorAsRgb(field, paletteIndex, paletteSize); }, shouldEnableSearchZoom: function shouldEnableSearchZoom() { return this.dataSet.chartDataOptions.enableSearchZoom; }, shouldRemoveRangeSelectOnLoad: function shouldRemoveRangeSelectOnLoad() { return this.dataSet.chartDataOptions.removeRangeSelectOnLoad; }, // /////////////////////////////////////////////////////////////////////////////////// // templates and default settings BASE_CONFIG: { chart: { showAxes: true, reflow: false, selectionMarkerFill: 'rgba(0,0,0,0)', spacingTop: 16, style: { fontFamily: _constants.FONT_FAMILY, fontSize: _constants.FONT_SIZE } }, credits: { enabled: false }, legend: { enabled: false }, plotOptions: { series: { states: { // series start out with their hover state disabled, it is enabled after draw is complete hover: { enabled: false }, inactive: { opacity: 0.4 } }, events: { legendItemClick: function legendItemClick() { return false; } }, borderWidth: 0, shadow: false, turboThreshold: 0 } }, title: { text: null }, tooltip: { enabled: false, useHTML: true } }, BASE_PLOT_OPTIONS_CONFIG: { line: { stickyTracking: true, states: { hover: { marker: { enabled: true, radius: 6 } } }, marker: { enabled: false, radius: 2, symbol: 'circle' } }, area: { stickyTracking: true, lineWidth: 1, states: { hover: { marker: { enabled: true, radius: 6 } } }, marker: { symbol: 'circle', radius: 2, enabled: false } }, column: { markers: { enabled: false }, stickyTracking: false, fillOpacity: 1, trackByArea: true }, bar: { markers: { enabled: false }, stickyTracking: false, fillOpacity: 1, trackByArea: true } } }); exports.default = Chart; module.exports = exports['default']; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { var dP = __webpack_require__(29); var createDesc = __webpack_require__(48); module.exports = __webpack_require__(21) ? function (object, key, value) { return dP.f(object, key, createDesc(1, value)); } : function (object, key, value) { object[key] = value; return object; }; /***/ }), /* 29 */ /***/ (function(module, exports, __webpack_require__) { var anObject = __webpack_require__(30); var IE8_DOM_DEFINE = __webpack_require__(189); var toPrimitive = __webpack_require__(190); var dP = Object.defineProperty; exports.f = __webpack_require__(21) ? Object.defineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return dP(O, P, Attributes); } catch (e) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; /***/ }), /* 30 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(46); module.exports = function (it) { if (!isObject(it)) throw TypeError(it + ' is not an object!'); return it; }; /***/ }), /* 31 */ /***/ (function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; /***/ }), /* 32 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/highcharts-themes/constants.js"); /***/ }), /* 33 */ /***/ (function(module, exports, __webpack_require__) { var getNative = __webpack_require__(22); /* Built-in method references that are verified to be native. */ var nativeCreate = getNative(Object, 'create'); module.exports = nativeCreate; /***/ }), /* 34 */ /***/ (function(module, exports, __webpack_require__) { var eq = __webpack_require__(224); /** * Gets the index at which the `key` is found in `array` of key-value pairs. * * @private * @param {Array} array The array to inspect. * @param {*} key The key to search for. * @returns {number} Returns the index of the matched value, else `-1`. */ function assocIndexOf(array, key) { var length = array.length; while (length--) { if (eq(array[length][0], key)) { return length; } } return -1; } module.exports = assocIndexOf; /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { var isKeyable = __webpack_require__(230); /** * Gets the data for `map`. * * @private * @param {Object} map The map to query. * @param {string} key The reference key. * @returns {*} Returns the map data. */ function getMapData(map, key) { var data = map.__data__; return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; } module.exports = getMapData; /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery = __webpack_require__(0); var _jquery2 = _interopRequireDefault(_jquery); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Throttler(properties) { properties = properties || {}; this.highlightDelay = properties.highlightDelay || 200; this.unhighlightDelay = properties.unhighlightDelay || 100; this.timer = null; this.timer2 = null; this.mouseStatus = 'over'; this.isSelected = false; this.onMouseOver = properties.onMouseOver; this.onMouseOut = properties.onMouseOut; } _jquery2.default.extend(Throttler.prototype, { setMouseStatus: function setMouseStatus(status) { this.mouseStatus = status; }, getMouseStatus: function getMouseStatus() { return this.mouseStatus; }, mouseOverHappened: function mouseOverHappened() { var _this = this; for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (Throttler._synchronousBehavior) { this.onMouseOver.apply(null, args); return; } this.mouseOverFn = function () { _this.onMouseOver.apply(null, args); }; clearTimeout(this.timer); clearTimeout(this.timer2); this.setMouseStatus('over'); this.timeOutManager(); }, mouseOutHappened: function mouseOutHappened() { var _this2 = this; for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { args[_key2] = arguments[_key2]; } if (Throttler._synchronousBehavior) { this.onMouseOut.apply(null, args); return; } this.mouseOutFn = function () { _this2.onMouseOut.apply(null, args); }; this.setMouseStatus('out'); this.timeOutManager(); }, timeOutManager: function timeOutManager() { var that = this; clearTimeout(this.timer); if (this.isSelected) { if (this.getMouseStatus() === 'over') { this.mouseEventManager(); } else { this.timer2 = setTimeout(function () { that.setMouseStatus('out'); that.mouseEventManager(); }, that.unhighlightDelay); } } else { this.timer = setTimeout(function () { that.isSelected = true; that.mouseEventManager(); }, that.highlightDelay); } }, mouseEventManager: function mouseEventManager() { if (this.getMouseStatus() === 'over') { this.mouseOverFn(); this.isSelected = true; this.setMouseStatus('out'); } else { this.mouseOutFn(); this.isSelected = false; this.setMouseStatus('over'); } } }); _jquery2.default.extend(Throttler, { _synchronousBehavior: false, useSynchronousBehavior: function useSynchronousBehavior() { Throttler._synchronousBehavior = true; }, restoreDefaultBehavior: function restoreDefaultBehavior() { Throttler._synchronousBehavior = false; } }); exports.default = Throttler; module.exports = exports['default']; /***/ }), /* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _toConsumableArray2 = __webpack_require__(104); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _extends2 = __webpack_require__(9); var _extends3 = _interopRequireDefault(_extends2); var _jquery = __webpack_require__(0); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(1); var _underscore2 = _interopRequireDefault(_underscore); var _Formatter = __webpack_require__(11); var _Formatter2 = _interopRequireDefault(_Formatter); var _color = __webpack_require__(7); var _parsing = __webpack_require__(3); var _constants = __webpack_require__(32); var _theme = __webpack_require__(4); var _EventMixin = __webpack_require__(10); var _EventMixin2 = _interopRequireDefault(_EventMixin); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function Point(hcPoint) { this.index = hcPoint.index; // The original index is used track where the point appeared in the original data set, // which is not always the same as its index in the chart series (see setData below). this.originalIndex = _underscore2.default.has(hcPoint, 'originalIndex') ? hcPoint.originalIndex : this.index; this.seriesName = hcPoint.series.name; this.name = hcPoint.name; this.y = hcPoint.y; this.plotX = hcPoint.plotX; this.plotY = hcPoint.plotY; } function Series(properties) { this.properties = this.normalizeProperties(properties || {}); this.processProperties(); this.id = _underscore2.default.uniqueId('series_'); this.data = []; this._isDirty = false; this._dataIsDirty = false; this.UNHIGHLIGHTED_COLOR = (0, _color.addAlphaToColor)(this.UNHIGHLIGHTED_BASE_COLOR, this.UNHIGHLIGHTED_OPACITY); this.UNHIGHLIGHTED_BORDER_COLOR = (0, _color.addAlphaToColor)(this.UNHIGHLIGHTED_BORDER_BASE_COLOR, this.UNHIGHLIGHTED_OPACITY); } Series.prototype = _jquery2.default.extend({}, _EventMixin2.default, { STACK_MODE_MAP: { default: null, stacked: 'normal', stacked100: 'percent' }, CHART_PROPERTY_PREFIX_REGEX: /^chart\./, UNHIGHLIGHTED_OPACITY: 0.4, UNHIGHLIGHTED_BASE_COLOR: 'rgb(150, 150, 150)', UNHIGHLIGHTED_BORDER_BASE_COLOR: 'rgb(200, 200, 200)', DEFAULT_STACK_MODE: null, CHARTING_PROPERTY_WHITELIST: [], // a centralized normalization method for series properties, subclasses override or extend the // CHARTING_PROPERTY_WHITELIST with a list of property names (without the leading "chart.") // to be parsed from the chart properties passed to the constructor normalizeProperties: function normalizeProperties(rawProps) { var _this = this; var normalizedProps = _jquery2.default.extend(true, {}, rawProps); (0, _underscore2.default)(normalizedProps).each(function (value, key) { if (_this.CHART_PROPERTY_PREFIX_REGEX.test(key)) { delete normalizedProps[key]; var strippedKey = key.replace(_this.CHART_PROPERTY_PREFIX_REGEX, ''); if ((0, _underscore2.default)(_this.CHARTING_PROPERTY_WHITELIST).contains(strippedKey)) { normalizedProps[strippedKey] = value; } } }); return normalizedProps; }, // no-op to be overridden by sub-classes processProperties: function processProperties() {}, redraw: function redraw(redrawChart) { if (!this.hcSeries && (!this.nestedSeriesList || !this.nestedSeriesList.every(function (nestedSeries) { return nestedSeries.hcSeries; }))) { // this is not an error state, there are cases where a new series is added dynamically in an update return; } if (this.isDirty()) { if (this.hcSeries) { this.hcSeries.update(this.getConfig(), redrawChart); } else if (this.nestedSeriesList) { this.nestedSeriesList.forEach(function (nestedSeries) { nestedSeries.hcSeries.update(nestedSeries.getConfig(), redrawChart); }); } } else if (this.dataIsDirty()) { if (this.hcSeries) { this.hcSeries.setData(this.hasPrettyData ? this.prettyData : this.data, redrawChart); } else if (this.nestedSeriesList) { this.nestedSeriesList.forEach(function (nestedSeries) { nestedSeries.hcSeries.setData(nestedSeries.data, redrawChart); }); } } }, update: function update(properties) { var oldProperties = this.properties; this.properties = this.normalizeProperties(properties); if (!_underscore2.default.isEqual(this.properties, oldProperties)) { this.processProperties(); this._isDirty = true; } }, setData: function setData(inputData, options) { options = options || {}; var oldData = this.data; if (!_underscore2.default.isArray(inputData.y) || inputData.y.length === 0) { this.data = []; } else if ((0, _underscore2.default)(inputData.x).isUndefined()) { this.data = inputData.y; } else if (options.isOutlierField) { this.data = (0, _underscore2.default)(inputData.y).chain().map(function (v, i) { if (v.isOutlier) { return { x: inputData.x[i], y: v.y, marker: { enabled: true, radius: 4, fillColor: _constants.COLORS.SEMANTIC_WARNING } }; } return { x: inputData.x[i], y: v }; }).value(); } else if (options.sortXValues) { // If the x-values need to be sorted, first put them in a format that allows for tracking the original index. // We need to avoid the issue where we have a NaN x-value and non-NaN y-value. Highcharts interprets this as an // error and creates a blank SVG for the series. this.data = (0, _underscore2.default)(inputData.x).chain().map(function (value, i) { return { x: value, y: isNaN(value) ? null : inputData.y[i], originalIndex: i }; }).sortBy(function (datum) { return datum.x; }).value(); } else { this.data = (0, _underscore2.default)(inputData.x).map(function (value, i) { return [value, inputData.y[i]]; }); } if (!_underscore2.default.isEqual(this.data, oldData)) { this._dataIsDirty = true; } }, getData: function getData() { return this.data; }, isDirty: function isDirty() { return this._isDirty; }, dataIsDirty: function dataIsDirty() { return this._dataIsDirty; }, getXAxisIndex: function getXAxisIndex() { return this.properties.xAxis || 0; }, getYAxisIndex: function getYAxisIndex() { return this.properties.yAxis || 0; }, getName: function getName() { return this.properties.name; }, getLegendKey: function getLegendKey() { return this.properties.legendKey || this.getName(); }, getFieldList: function getFieldList() { return [this.getName()]; }, matchesName: function matchesName(name) { return name === this.getName(); }, applyColorMapping: function applyColorMapping(colorMapping) { var oldColor = this.color; this.color = colorMapping[this.getName()]; if (this.color !== oldColor) { this._isDirty = true; } }, getColor: function getColor() { return this.color; }, getStackMode: function getStackMode() { return this.STACK_MODE_MAP[this.properties['stacking']] || this.DEFAULT_STACK_MODE; }, getType: function getType() { return this.type; }, getConfig: function getConfig() { return { type: this.type, id: this.id, name: this.getName(), color: this.color, data: this.hasPrettyData ? this.prettyData : this.data, xAxis: this.getXAxisIndex(), yAxis: this.getYAxisIndex(), stacking: this.getStackMode() }; }, onChartLoad: function onChartLoad() {}, onChartLoadOrRedraw: function onChartLoadOrRedraw(chart) { this.hcSeries = chart.get(this.id); // create a back-reference so we can get from the HighCharts series to this object this.hcSeries.splSeries = this; this._isDirty = false; this._dataIsDirty = false; this.hcSeries.options.states.hover.enabled = true; this.addEventHandlers(this.hcSeries); }, addEventHandlers: function addEventHandlers(hcSeries) { var _this2 = this; hcSeries.options.point.events = hcSeries.options.point.events || {}; var that = this; var pointEvents = hcSeries.options.point.events; var container = hcSeries.chart.container; (0, _jquery2.default)(container).on('keydown', function (e) { if (e.keyCode === 9 && hcSeries.state === 'hover') { that.trigger('keydown', [_this2, that]); } }); pointEvents.mouseOver = function handleMouseOver() { var hcPoint = this; var point = new Point(hcPoint); that.trigger('mouseover', [point, that]); }; pointEvents.mouseOut = function handleMouseOut() { var hcPoint = this; var point = new Point(hcPoint); that.trigger('mouseout', [point, that]); }; if ((0, _parsing.normalizeBoolean)(this.properties['clickEnabled'])) { pointEvents.click = function handleClick(e) { var hcPoint = this; var point = new Point(hcPoint); var clickEvent = { type: 'click', modifierKey: e.ctrlKey || e.metaKey }; that.trigger(clickEvent, [point, that]); }; } }, destroy: function destroy() { this.off(); // remove the back-reference to avoid any reference loops that might confuse the GC if (this.hcSeries && this.hcSeries.splSeries) { this.hcSeries.splSeries = null; } this.hcSeries = null; }, handlePointMouseOver: function handlePointMouseOver() { this.bringToFront(); }, handleLegendMouseOver: function handleLegendMouseOver() { this.bringToFront(); this.highlight(); }, bringToFront: function bringToFront() { if (this.hcSeries.group) { this.hcSeries.group.toFront(); } if (this.hcSeries.trackerGroup) { this.hcSeries.trackerGroup.toFront(); } }, estimateMaxColumnWidths: function estimateMaxColumnWidths(hcChart, leftColData, rightColData) { var formatter = new _Formatter2.default(hcChart.renderer); var fontSize = hcChart.options.tooltip.style.fontSize.replace('px', ''); // Use the text in the columns to roughly estimate which column requires more space var maxLeftColWidth = -Infinity; var maxRightColWidth = -Infinity; _underscore2.default.each(leftColData, function (datum) { var colWidth = formatter.predictTextWidth(datum, fontSize); if (colWidth > maxLeftColWidth) { maxLeftColWidth = colWidth; } }); _underscore2.default.each(rightColData, function (datum) { var colWidth = formatter.predictTextWidth(datum, fontSize); if (colWidth > maxRightColWidth) { maxRightColWidth = colWidth; } }); formatter.destroy(); return { maxLeftColWidth: maxLeftColWidth, maxRightColWidth: maxRightColWidth }; }, // To be overridden by subclasses getTooltipRows: function getTooltipRows(info) { var rows = []; if (info.xAxisIsTime) { rows.push([info.xValueDisplay]); } else { rows.push([info.xAxisName, info.xValueDisplay]); } rows.push([(0, _extends3.default)({}, info.shouldColorizeTooltipData && { color: info.seriesColor }, { text: info.seriesName }), info.yValueDisplay]); return rows; }, // find a way to send the target series and target point to the handler just like a click event getTooltipHtml: function getTooltipHtml(info, hcChart, allPointInformation, isSeriesCompareForBarAndColumn) { info.seriesName = this.getName(); info.seriesColor = this.getColor(); var normalizeToText = function normalizeToText(cellInfo) { return (0, _underscore2.default)(cellInfo).isString() ? cellInfo : cellInfo.text; }; var normalizeToColor = function normalizeToColor(cellInfo) { return (0, _underscore2.default)(cellInfo).isString() ? null : cellInfo.color; }; var tooltipRows = this.getTooltipRows(info); if (allPointInformation) { tooltipRows = [tooltipRows[0]].concat((0, _toConsumableArray3.default)(allPointInformation)); } var maxTooltipWidth = hcChart.chartWidth - 50; var leftColData = (0, _underscore2.default)(tooltipRows).map(function (row) { return normalizeToText(row[0] || ''); }); var rightColData = (0, _underscore2.default)(tooltipRows).map(function (row) { return normalizeToText(row[1] || ''); }); var colResults = this.estimateMaxColumnWidths(hcChart, leftColData, rightColData); var leftColRatio = colResults.maxLeftColWidth / (colResults.maxLeftColWidth + colResults.maxRightColWidth); // Make sure one column doesn't completely dominate the other if (leftColRatio > 0.9) { leftColRatio = 0.9; } else if (leftColRatio < 0.1) { leftColRatio = 0.1; } info.scaledMaxLeftColWidth = leftColRatio * maxTooltipWidth + 'px'; info.scaledMaxRightColWidth = (1 - leftColRatio) * maxTooltipWidth + 'px'; info.willWrap = colResults.maxLeftColWidth + colResults.maxRightColWidth > maxTooltipWidth; info.totalStackValue = null; if (isSeriesCompareForBarAndColumn) { info.totalStackValue = hcChart.series.map(function (series) { return series.data[info.pointIndex].y; }).reduce(function (a, b) { return a + b; }).toLocaleString(); } return this.tooltipTemplate(_jquery2.default.extend(info, { rows: tooltipRows, normalizeToText: normalizeToText, normalizeToColor: normalizeToColor, getThemeProperty: _theme.getThemeProperty })); }, // stub methods to be overridden as needed by subclasses handlePointMouseOut: function handlePointMouseOut() {}, handleLegendMouseOut: function handleLegendMouseOut() {}, highlight: function highlight() {}, unHighlight: function unHighlight() {}, highlightPoint: function highlightPoint() {}, unHighlightPoint: function unHighlightPoint() {}, tooltipTemplate: (0, _underscore.template)('\n \n style="word-wrap: break-word; white-space: normal;"\n <% } %>>\n <% _(rows).each(function(row) { %>\n \n <% if(row.length === 1) { %>\n \n <% } else { %>\n \n \n <% } %>\n \n <% }); %>\n <% if(totalStackValue) { %>\n \n \n \n \n <% } %>\n
<%- normalizeToText(row[0]) %><%- normalizeToText(row[0]) %>:  <%- normalizeToText(row[1]) %>
Total:  <%- totalStackValue %>
\n ') }); Series.Point = Point; exports.default = Series; module.exports = exports['default']; /***/ }), /* 38 */ /***/ (function(module, exports) { /** * A faster alternative to `Function#apply`, this function invokes `func` * with the `this` binding of `thisArg` and the arguments of `args`. * * @private * @param {Function} func The function to invoke. * @param {*} thisArg The `this` binding of `func`. * @param {Array} args The arguments to invoke `func` with. * @returns {*} Returns the result of `func`. */ function apply(func, thisArg, args) { switch (args.length) { case 0: return func.call(thisArg); case 1: return func.call(thisArg, args[0]); case 2: return func.call(thisArg, args[0], args[1]); case 3: return func.call(thisArg, args[0], args[1], args[2]); } return func.apply(thisArg, args); } module.exports = apply; /***/ }), /* 39 */ /***/ (function(module, exports, __webpack_require__) { var root = __webpack_require__(6); /** Built-in value references. */ var Symbol = root.Symbol; module.exports = Symbol; /***/ }), /* 40 */ /***/ (function(module, exports, __webpack_require__) { var isObject = __webpack_require__(17); /** Built-in value references. */ var objectCreate = Object.create; /** * The base implementation of `_.create` without support for assigning * properties to the created object. * * @private * @param {Object} proto The object to inherit from. * @returns {Object} Returns the new object. */ var baseCreate = (function() { function object() {} return function(proto) { if (!isObject(proto)) { return {}; } if (objectCreate) { return objectCreate(proto); } object.prototype = proto; var result = new object; object.prototype = undefined; return result; }; }()); module.exports = baseCreate; /***/ }), /* 41 */ /***/ (function(module, exports, __webpack_require__) { var baseCreate = __webpack_require__(40), baseLodash = __webpack_require__(42); /** Used as references for the maximum length and index of an array. */ var MAX_ARRAY_LENGTH = 4294967295; /** * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. * * @private * @constructor * @param {*} value The value to wrap. */ function LazyWrapper(value) { this.__wrapped__ = value; this.__actions__ = []; this.__dir__ = 1; this.__filtered__ = false; this.__iteratees__ = []; this.__takeCount__ = MAX_ARRAY_LENGTH; this.__views__ = []; } // Ensure `LazyWrapper` is an instance of `baseLodash`. LazyWrapper.prototype = baseCreate(baseLodash.prototype); LazyWrapper.prototype.constructor = LazyWrapper; module.exports = LazyWrapper; /***/ }), /* 42 */ /***/ (function(module, exports) { /** * The function whose prototype chain sequence wrappers inherit from. * * @private */ function baseLodash() { // No operation performed. } module.exports = baseLodash; /***/ }), /* 43 */ /***/ (function(module, exports) { /** * Gets the argument placeholder value for `func`. * * @private * @param {Function} func The function to inspect. * @returns {*} Returns the placeholder value. */ function getHolder(func) { var object = func; return object.placeholder; } module.exports = getHolder; /***/ }), /* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _parsing = __webpack_require__(3); var parsingUtils = _interopRequireWildcard(_parsing); var _color = __webpack_require__(7); var colorUtils = _interopRequireWildcard(_color); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } var CATEGORICAL = ['#7B56DB', '#CB2196', '#008C80', '#9D6300', '#F6540B', '#FF969E', '#99B100', '#F4B649', '#AE8CFF', '#8CBCFF', '#813193', '#0051B5', '#009CEB', '#00CDAF', '#00490A', '#DD9900', '#465D00', '#FF677B', '#FF6ACE', '#00689D']; var baseColors = CATEGORICAL.map(colorUtils.hexFromColor); function ColorPalette(colors, useInterpolation) { this.setColors(colors); this.useInterpolation = parsingUtils.normalizeBoolean(useInterpolation, false); } ColorPalette.prototype = { setColors: function setColors(colors) { this.colors = colors || baseColors; }, getColor: function getColor(field, index, count) { var p = void 0; var numColors = this.colors.length; if (numColors === 0) { return 0x000000; } if (index < 0) { index = 0; } if (!this.useInterpolation) { return this.colors[index % numColors]; } if (count < 1) { count = 1; } if (index > count) { index = count; } p = count === 1 ? 0 : (numColors - 1) * (index / (count - 1)); var index1 = Math.floor(p); var index2 = Math.min(index1 + 1, numColors - 1); p -= index1; return colorUtils.interpolateColors(this.colors[index1], this.colors[index2], p); }, getColorAsRgb: function getColorAsRgb(field, index, count) { var hexColor = this.getColor(field, index, count); return colorUtils.colorFromHex(hexColor); } }; ColorPalette.setBaseColors = function (newBaseColors) { baseColors = newBaseColors.map(colorUtils.hexFromColor); }; exports.default = ColorPalette; module.exports = exports['default']; /***/ }), /* 45 */ /***/ (function(module, exports, __webpack_require__) { var global = __webpack_require__(19); var core = __webpack_require__(20); var ctx = __webpack_require__(87); var hide = __webpack_require__(28); var has = __webpack_require__(31); var PROTOTYPE = 'prototype'; var $export = function (type, name, source) { var IS_FORCED = type & $export.F; var IS_GLOBAL = type & $export.G; var IS_STATIC = type & $export.S; var IS_PROTO = type & $export.P; var IS_BIND = type & $export.B; var IS_WRAP = type & $export.W; var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); var expProto = exports[PROTOTYPE]; var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]; var key, own, out; if (IS_GLOBAL) source = name; for (key in source) { // contains in native own = !IS_FORCED && target && target[key] !== undefined; if (own && has(exports, key)) continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function (C) { var F = function (a, b, c) { if (this instanceof C) { switch (arguments.length) { case 0: return new C(); case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if (IS_PROTO) { (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }), /* 46 */ /***/ (function(module, exports) { module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }), /* 47 */ /***/ (function(module, exports) { module.exports = function (exec) { try { return !!exec(); } catch (e) { return true; } }; /***/ }), /* 48 */ /***/ (function(module, exports) { module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; /***/ }), /* 49 */ /***/ (function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; /***/ }), /* 50 */ /***/ (function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil; var floor = Math.floor; module.exports = function (it) { return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }), /* 51 */ /***/ (function(module, exports, __webpack_require__) { var shared = __webpack_require__(94)('keys'); var uid = __webpack_require__(96); module.exports = function (key) { return shared[key] || (shared[key] = uid(key)); }; /***/ }), /* 52 */ /***/ (function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(49); module.exports = function (it) { return Object(defined(it)); }; /***/ }), /* 53 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/bowser/src/bowser.js"); /***/ }), /* 54 */ /***/ (function(module, exports) { module.exports = __webpack_require__("./node_modules/@splunk/charting-utils/time.js"); /***/ }), /* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = __webpack_require__(9); var _extends3 = _interopRequireDefault(_extends2); var _jquery = __webpack_require__(0); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(1); var _underscore2 = _interopRequireDefault(_underscore); var _Formatter = __webpack_require__(11); var _Formatter2 = _interopRequireDefault(_Formatter); var _parsing = __webpack_require__(3); var parsingUtils = _interopRequireWildcard(_parsing); var _dom = __webpack_require__(100); var domUtils = _interopRequireWildcard(_dom); var _theme = __webpack_require__(4); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function AxisBase(properties) { this.properties = properties || {}; this.id = _underscore2.default.uniqueId('axis_'); this.isVertical = this.properties['axis.orientation'] === 'vertical'; this.isZoomed = false; this._titleIsDirty = false; if (!this.labelRotation) { this.labelRotation = this.isVertical ? 0 : parsingUtils.getRotation(this.properties['axisLabels.majorLabelStyle.rotation']); } } AxisBase.prototype = { getZoomed: function getZoomed(newMin, newMax, dataMax, dataMin) { var axis = this.hcAxis; var max = isNaN(axis.dataMax) ? dataMax : axis.dataMax; var min = isNaN(axis.dataMin) ? dataMin : axis.dataMin; if (axis.hasData()) { return newMin !== undefined && newMin > min || newMax !== undefined && newMax < (axis.options.tickmarkPlacement === 'between' ? max : max + 1); } if (axis.categories && axis.categories.length > 0) { return newMin !== undefined && newMin > 0 || newMax !== undefined && newMax < axis.categories.length - 1; } return undefined; }, clone: function clone() { return new this.constructor(_jquery2.default.extend(true, {}, this.properties)); }, getConfig: function getConfig() { var titleText = null; var that = this; if (!this.properties['isEmpty'] && this.properties['axisTitle.visibility'] !== 'collapsed' && !!this.properties['axisTitle.text'] && !/^\s+$/.test(this.properties['axisTitle.text'])) { titleText = parsingUtils.escapeSVG(this.properties['axisTitle.text']); } return _jquery2.default.extend(true, this.getOrientationDependentConfig(), { id: this.id, labels: { enabled: this.properties['axisLabels.majorLabelVisibility'] !== 'hide', formatter: function formatter() { var formatInfo = this; return that.formatLabel(formatInfo); }, style: { color: this.properties['axis.fontColor'] || (0, _theme.getThemeProperty)('AXIS_LABELS_FONT_COLOR') || (0, _theme.getThemeProperty)('DEFAULT_FONT_COLOR'), textOverflow: 'none' } }, title: { style: { color: this.properties['axis.fontColor'] || (0, _theme.getThemeProperty)('AXIS_TITLE_FONT_COLOR') || (0, _theme.getThemeProperty)('DEFAULT_FONT_COLOR'), fontSize: '12px', // Hack to make sure we can render literal '<' and '>' HcTextStroke: true, width: 'auto' }, text: titleText }, opposite: this.properties['opposite'], lineColor: this.properties['axis.foregroundColorSoft'] || (0, _theme.getThemeProperty)('DEFAULT_LINE_COLOR_SOFT'), lineWidth: this.properties['axisLabels.axisVisibility'] === 'hide' ? 0 : 1, gridLineColor: this.properties['axis.foregroundColorSofter'] || (0, _theme.getThemeProperty)('AXIS_GRID_LINE_COLOR') || (0, _theme.getThemeProperty)('DEFAULT_LINE_COLOR_SOFTER'), gridLineWidth: parsingUtils.normalizeBoolean(this.properties['gridLines.showMajorLines']) ? 1 : 0, tickLength: parseInt(this.properties['axisLabels.majorTickSize'], 10) || 6, tickColor: this.properties['axis.foregroundColorSoft'] || (0, _theme.getThemeProperty)('DEFAULT_LINE_COLOR_SOFT'), tickWidth: this.properties['axisLabels.majorTickVisibility'] === 'hide' ? 0 : 1, tickRenderPostHook: (0, _underscore2.default)(this.tickRenderPostHook).bind(this), getOffsetPreHook: (0, _underscore2.default)(this.getOffsetPreHook).bind(this), zoomPostHook: (0, _underscore2.default)(this.zoomPostHook).bind(this), getLabelSizeOverride: (0, _underscore2.default)(this.getLabelSizeOverride).bind(this) }); }, zoomPostHook: function zoomPostHook(axis, newMin, newMax, dataMax, dataMin) { this.isZoomed = this.getZoomed(newMin, newMax, dataMax, dataMin); // Prevent Highcharts from display the reset zoom button, since we have our own custom version. axis.displayBtn = false; }, getOrientationDependentConfig: function getOrientationDependentConfig() { if (this.isVertical) { return _jquery2.default.extend(true, {}, this.BASE_VERT_CONFIG, this.getVerticalConfig()); } return _jquery2.default.extend(true, {}, this.BASE_HORIZ_CONFIG, this.getHorizontalConfig()); }, onChartLoad: function onChartLoad() {}, redraw: function redraw(redrawChart) { if (!this.hcAxis) { throw new Error('cannot redraw an axis that has not been drawn yet'); } if (this.titleIsDirty()) { this.hcAxis.setTitle({ text: this.properties['axisTitle.text'] }, redrawChart); } }, titleIsDirty: function titleIsDirty() { return this._titleIsDirty; }, setTitle: function setTitle(title) { this.previousAxisTitle = this.properties['axisTitle.text']; this.properties['axisTitle.text'] = title; if (!_underscore2.default.isEqual(this.properties['axisTitle.text'], this.previousAxisTitle)) { this._titleIsDirty = true; } }, onChartLoadOrRedraw: function onChartLoadOrRedraw(chart) { this.hcAxis = chart.get(this.id); this.initializeTicks(); this._titleIsDirty = false; }, // convert the ticks to an array in ascending order by 'pos' initializeTicks: function initializeTicks() { var key = void 0; var ticks = this.hcAxis.ticks; var tickArray = []; // eslint-disable-next-line no-restricted-syntax for (key in ticks) { // eslint-disable-next-line no-prototype-builtins if (ticks.hasOwnProperty(key)) { tickArray.push(ticks[key]); } } tickArray.sort(function (t1, t2) { return t1.pos - t2.pos; }); this.ticks = tickArray; }, tickRenderPostHook: function tickRenderPostHook(tick) { // the purpose of this function is to show or hide data label // to prevent long label text or label close to the chart's boundary to overflow // https://confluence.splunk.com/display/~ftan/Splunk-charting+axis+label+overflow+calculation var axis = tick.axis; // If the tick has no label, then overflow calculations are not needed. if (!tick.label) { return; } // If there's only one tick, show it. // other conditions could refer to // https://confluence.splunk.com/display/~ftan/Splunk-charting+axis+label+overflow+calculation // Use early return to avoid calculation cost if (tick.isFirst && tick.isLast || !tick.isFirst && !tick.isLast || tick.isFirst && (axis.horiz || axis.reversed) || tick.isLast && !axis.horiz && !axis.reversed) { domUtils.showTickLabel(tick); return; } var tolerancePixel = 1; // allow 1 pixel or less slightly overflow the axis's boundary var isOutOfBoundary = false; if (axis.horiz && axis.reversed) { var boundaryPixelX = axis.left - tolerancePixel; var labelExtremesPixelX = this.getTickLabelExtremesX(tick)['left']; isOutOfBoundary = boundaryPixelX > labelExtremesPixelX; } else if (axis.horiz && !axis.reversed) { var _boundaryPixelX = axis.left + axis.len + tolerancePixel + 5; // Increases tolerance for boundaryPixelX to enable the last tick label on x-axis var _labelExtremesPixelX = this.getTickLabelExtremesX(tick)['right']; isOutOfBoundary = _labelExtremesPixelX > _boundaryPixelX; } else { var boundaryPixelY = axis.top + axis.len + tolerancePixel; var labelExtremesPixelY = this.getTickLabelExtremesY(tick)['bottom']; isOutOfBoundary = labelExtremesPixelY > boundaryPixelY; } if (isOutOfBoundary) { domUtils.hideTickLabel(tick); return; } // Make sure that previously hidden label will be re-shown if it shifts position (e.g. while panning) domUtils.showTickLabel(tick); }, getOffsetPreHook: function getOffsetPreHook(axis) { if (axis.userOptions.title.text) { var chart = axis.chart; var formatter = new _Formatter2.default(chart.renderer); var axisTitle = axis.userOptions.title.text; var fontSize = 12; var elidedTitle = void 0; if (axis.horiz) { elidedTitle = formatter.ellipsize(axisTitle, chart.chartWidth - 100, fontSize, { fontWeight: 'bold' }); } else { elidedTitle = formatter.ellipsize(axisTitle, chart.chartHeight - 100, fontSize, { fontWeight: 'bold' }); } axis.options.title.text = elidedTitle; if (axis.axisTitle) { axis.axisTitle.attr({ text: elidedTitle }); } formatter.destroy(); } }, hasTickmarksBetween: function hasTickmarksBetween() { return this.properties['axisLabels.tickmarkPlacement'] === 'between'; }, getTickLabelExtremesX: function getTickLabelExtremesX(tick) { var bBox = tick.label.getBBox(); var alignment = tick.axis.labelAlign; var labelX = tick.label.xy.x; var labelSize = bBox.width; var leftSide = void 0; if (alignment === 'left') { leftSide = labelX; } else if (alignment === 'center') { leftSide = labelX - labelSize * 0.5; } else { leftSide = labelX - labelSize; } return { left: leftSide, right: leftSide + labelSize }; }, getTickLabelExtremesY: function getTickLabelExtremesY(tick) { var labelBottom = tick.label.xy.y; return { top: labelBottom - tick.label.getBBox().height, bottom: labelBottom }; }, // An override of the Highcharts routine for determining a label size perpendicular to its axis, // which is used to set axis margins. getLabelSizeOverride: function getLabelSizeOverride(tick) { if (!tick.label) { return 0; } var isHoriz = this.properties['axis.orientation'] === 'horizontal'; tick.labelBBox = tick.label.getBBox(); // If this is the last visible tick of a horizontal axis of an area/line chart, then // the tick label is not visible (only the tick mark is rendered) so we return 0. if (isHoriz && this.properties['axisLabels.tickmarkPlacement'] === 'on' && tick.isLast && !tick.isFirst) { return 0; } return tick.labelBBox[isHoriz ? 'height' : 'width']; }, destroy: function destroy() { this.hcAxis = null; }, getVerticalConfig: function getVerticalConfig() { return { title: (0, _extends3.default)({}, this.properties['axisTitle.alignment'] && { align: this.properties['axisTitle.alignment'] }) }; }, getHorizontalConfig: function getHorizontalConfig() { return { labels: { rotation: this.labelRotation }, title: (0, _extends3.default)({}, this.properties['axisTitle.alignment'] && { align: this.properties['axisTitle.alignment'] }) }; }, BASE_HORIZ_CONFIG: { title: { margin: 6 }, labels: { y: 15 } }, BASE_VERT_CONFIG: { title: { margin: 6 } }, CROSSHAIR_CONFIG: { snap: false, color: '#cccccc', width: 1, zIndex: 10000 // arbitrarily high zIndex to ensure we are above all content } }; exports.default = AxisBase; module.exports = exports['default']; /***/ }), /* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _jquery = __webpack_require__(0); var _jquery2 = _interopRequireDefault(_jquery); var _underscore = __webpack_require__(1); var _underscore2 = _interopRequireDefault(_underscore); var _i18n = __webpack_require__(15); var _i18n2 = _interopRequireDefault(_i18n); var _Formatter = __webpack_require__(11); var _Formatter2 = _interopRequireDefault(_Formatter); var _parsing = __webpack_require__(3); var parsingUtils = _interopRequireWildcard(_parsing); var _lang = __webpack_require__(2); var langUtils = _interopRequireWildcard(_lang); var _math = __webpack_require__(5); var mathUtils = _interopRequireWildcard(_math); var _format = __webpack_require__(204); var formatNumberUtils = _interopRequireWildcard(_format); var _highcharts = __webpack_require__(8); var _highcharts2 = _interopRequireDefault(_highcharts); var _Axis = __webpack_require__(55); var _Axis2 = _interopRequireDefault(_Axis); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function NumericAxis(properties) { _Axis2.default.call(this, properties); // SPL-72638, always include zero if the axis has log scale this.includeZero = this.determineIncludeZero(); this.hasExplicitMin = this.validateNumericProperty('axis.minimumNumber'); this.hasExplicitMax = this.validateNumericProperty('axis.maximumNumber'); this.hasExplicitMajorUnit = this.validateNumericProperty('axisLabels.majorUnit'); this.extendAxisRange = !_underscore2.default.isUndefined(this.properties['axisLabels.extendsAxisRange']) ? parsingUtils.normalizeBoolean(this.properties['axisLabels.extendsAxisRange'], true) : true; this.startOnTick = this.hasExplicitMin ? false : this.extendAxisRange; this.endOnTick = this.hasExplicitMax ? false : this.extendAxisRange; if (properties) { this.sharedMin = properties.sharedMin; this.sharedMax = properties.sharedMax; this.abbreviation = properties['axis.abbreviation']; } } langUtils.inherit(NumericAxis, _Axis2.default); _jquery2.default.extend(NumericAxis.prototype, { getConfig: function getConfig() { var config = _Axis2.default.prototype.getConfig.call(this); var showMinorTicks = this.properties['axisLabels.minorTickVisibility'] === 'show'; var showMinorGridLines = parsingUtils.normalizeBoolean(this.properties['gridLines.showMinorLines']); _jquery2.default.extend(true, config, { tickInterval: this.properties['isEmpty'] && this.properties['axis.scale'] === 'log' ? 10 : this.properties['isEmpty'] ? 10 : parseFloat(this.properties['axisLabels.majorUnit']) || null, endOnTick: this.endOnTick, startOnTick: this.startOnTick, tickWidth: this.properties['axisLabels.majorTickVisibility'] === 'show' ? 1 : 0, allowDecimals: !parsingUtils.normalizeBoolean(this.properties['axisLabels.integerUnits']), minorTickColor: this.properties['axis.foregroundColorSoft'], minorTickLength: parseInt(this.properties['axisLabels.minorTickSize'], 10) || 10, minorTickInterval: showMinorTicks || showMinorGridLines ? 'auto' : null, minorTickWidth: showMinorTicks ? 1 : 0, minorGridLineWidth: showMinorGridLines ? 1 : 0, // FIXME: clear min/max up so that reader can understand why we check for 'isEmpty' min: this.properties['isEmpty'] ? 0 : null, max: this.properties['isEmpty'] && this.properties['axis.scale'] === 'log' ? 2 : this.properties['isEmpty'] ? 100 : null, // Override superclass behavior because gridlines are shown by default for numeric axes gridLineWidth: parsingUtils.normalizeBoolean(this.properties['gridLines.showMajorLines'], true) ? 1 : 0, setTickIntervalPreHook: (0, _underscore2.default)(this.setTickIntervalPreHook).bind(this), labels: { maxStaggerLines: 1 }, lineWidth: this.properties['axisLabels.axisVisibility'] === 'show' ? 1 : 0 }); this.addMinAndMaxToConfig(config); return config; }, validateNumericProperty: function validateNumericProperty(propName) { var value = this.properties[propName]; // Zero is the only falsy value that is a valid numeric property value, so get that out of the way. if (value === 0) { return true; } return !!value && !_underscore2.default.isNaN(parseFloat(value)); }, addMinAndMaxToConfig: function addMinAndMaxToConfig(config) { var min = this.hasExplicitMin ? parseFloat(this.properties['axis.minimumNumber']) : !_underscore2.default.isUndefined(this.sharedMin) ? this.sharedMin : -Infinity; var max = this.hasExplicitMax ? parseFloat(this.properties['axis.maximumNumber']) : !_underscore2.default.isUndefined(this.sharedMax) ? this.sharedMax : Infinity; if (min > max) { var temp = min; min = max; max = temp; } if (min > -Infinity) { this.addMinToConfig(config, min, this.includeZero); } if (max < Infinity) { this.addMaxToConfig(config, max, this.includeZero); } }, addMinToConfig: function addMinToConfig(config, min, includeZero) { if (includeZero && min > 0) { min = 0; } else if (this.isLogScale()) { min = mathUtils.absLogBaseTen(min); } config.min = min; config.minPadding = 0; config.startOnTick = this.startOnTick; }, addMaxToConfig: function addMaxToConfig(config, max, includeZero) { if (includeZero && max < 0) { max = 0; } else if (this.isLogScale()) { max = mathUtils.absLogBaseTen(max); } config.max = max; config.maxPadding = 0; config.endOnTick = this.endOnTick; }, getVerticalConfig: function getVerticalConfig() { var config = _Axis2.default.prototype.getVerticalConfig.call(this); var tickSizeOffset = parseInt(this.properties['axisLabels.majorTickSize'], 10) || 0; var xDelta = tickSizeOffset + 6; return _jquery2.default.extend(true, config, { labels: { x: this.properties['opposite'] === true ? xDelta : -xDelta, y: 4 } }); }, getHorizontalConfig: function getHorizontalConfig() { var config = _Axis2.default.prototype.getHorizontalConfig.call(this); var tickSizeOffset = parseInt(this.properties['axisLabels.majorTickSize'], 10) || 0; var xDelta = null; var yDelta = null; var alignment = void 0; // NOTE: Deltas are set here based on experimentation, // this code relies on the fact that fontSize for Numeric Axes // does not change. if (this.labelRotation === -45) { alignment = 'right'; xDelta = 5; yDelta = 10; } else if (this.labelRotation === -90) { alignment = 'right'; xDelta = 4; yDelta = 6; } else if (this.labelRotation === 45) { alignment = 'left'; xDelta = 0; yDelta = 10; } else if (this.labelRotation === 90) { alignment = 'left'; xDelta = -4; yDelta = 6; } else { alignment = 'center'; yDelta = 14; } return _jquery2.default.extend(true, config, { labels: { align: alignment, x: xDelta, y: this.properties['opposite'] === true ? -6 - tickSizeOffset // Measurements are a little different on the opposite side : yDelta + tickSizeOffset } }); }, formatLabel: function formatLabel(info) { if (this.isLogScale() && this.properties['stackMode'] !== 'stacked100') { if (this.abbreviation === 'auto') { return formatNumberUtils.abbreviateNumber(mathUtils.absPowerTen(info.value)); } return NumericAxis.formatNumber(mathUtils.absPowerTen(info.value)); } // we only want to abbreviate the labels if the maximum is equal or greater to 1000 var max = Math.max(info.axis.max, Math.abs(info.axis.min)); if (this.abbreviation === 'auto' && max >= 1000) { // special case: we set the decimal to 0, when there is only 1 tick // we want to calculated the number of decimals to retain in order to preserve precision var decimal = info.axis.tickPositions.length === 1 ? 0 : this.calculateDecimal(max, info.axis.tickInterval.toString()); // we get the unit of the maximum value on the scale to standardize by var unit = formatNumberUtils.getSIUnit(max); return formatNumberUtils.abbreviateByUnit(info.value, unit, decimal); } return NumericAxis.formatNumber(info.value); }, calculateDecimal: function calculateDecimal(max, tickInterval) { if (!max || !tickInterval) { return 0; } // calculate the number of decimals we need to round to // by counting how many significant digits of the tickInterval that are being cutoff by the SI suffix that we are abbreviatiing to // number of trailing zeros in the tickInterval var zeros = tickInterval.length - tickInterval.replace(/0+$/, '').length; // number of digits we are cutting by approximating var power = formatNumberUtils.getSIPower(max); // the difference of the two; the number of decimals we want to keep to maintain precision var decimal = power - zeros; if (decimal < 0) { return 0; } return decimal; }, formatValue: function formatValue(value) { // handle the edge case where the value is not a valid number but the nullValueMode property has rendered it as a zero var formatted = NumericAxis.formatNumber(value); return formatted !== 'NaN' ? formatted : _i18n2.default.format_decimal('0'); }, isLogScale: function isLogScale() { return this.properties['axis.scale'] === 'log'; }, /** * Get actual extremes for axis, most of the code is copied from highcharts.Axis.setTickInterval * @param {*} axis */ getExtremes: function getExtremes(axis) { var options = axis.options; var hardMin = _highcharts2.default.pick(axis.userMin, options.min); var hardMax = _highcharts2.default.pick(axis.userMax, options.max); var softThreshold = axis.softThreshold; var threshold = axis.threshold; var thresholdMin = void 0; var thresholdMax = void 0; // Adjust to hard threshold if (softThreshold && _highcharts2.default.defined(threshold)) { if (axis.dataMin >= threshold) { thresholdMin = threshold; } else if (axis.dataMax <= threshold) { thresholdMax = threshold; } } var extremes = { dataMin: axis.dataMin, dataMax: axis.dataMax, min: _highcharts2.default.pick(options.min, hardMin, thresholdMin, axis.dataMin), max: _highcharts2.default.pick(options.max, hardMax, thresholdMax, axis.dataMax) }; return extremes; }, setTickIntervalPreHook: function setTickIntervalPreHook(axis) { var options = axis.options; var extremes = this.getExtremes(axis); var chart = axis.chart; if (!this.properties['isEmpty']) { var formatter = new _Formatter2.default(chart.renderer); var tickInterval = void 0; // if we can't read a tickInterval from the options, estimate it from the tick pixel interval var range = Math.abs(extremes.max - extremes.min); if (this.isVertical) { tickInterval = options.tickInterval || options.tickPixelInterval / chart.plotHeight * range; } else { tickInterval = options.tickInterval || options.tickPixelInterval / chart.plotWidth * range; } if (this.isLogScale()) { if (_underscore2.default.isNumber(extremes.min) && _underscore2.default.isNumber(extremes.max) && extremes.min >= 0 && mathUtils.absPowerTen(extremes.max) < 1) { options.tickPositions = [0, mathUtils.absLogBaseTen(0.01), mathUtils.absLogBaseTen(0.1), mathUtils.absLogBaseTen(1)]; } else { // SPL-72638, always use tick interval of 1 if the axis has log scale, since we will force the axis to start at zero options.tickPositions = undefined; // Reset tickPositions back to default value so that the highcharts library can scale automatically options.tickInterval = 1; } } else { this.checkMajorUnitFit(tickInterval, extremes, options, formatter, chart); } if (this.includeZero) { this.enforceIncludeZero(options, extremes); } else { this.adjustAxisRange(options, extremes, tickInterval); } if (options.allowDecimals !== false) { this.enforceIntegerMajorUnit(options, extremes); } formatter.destroy(); } else { this.handleNoData(options); } }, checkMajorUnitFit: function checkMajorUnitFit(unit, extremes, options, formatter, chart) { var range = Math.abs(extremes.max - extremes.min); var axisLength = this.isVertical ? chart.plotHeight : chart.plotWidth; var tickSpacing = unit * axisLength / range; var largestExtreme = Math.max(Math.abs(extremes.min), Math.abs(extremes.max)); var tickLabelPadding = this.isVertical ? 5 : 15; var fontSize = parseInt(options.labels.style.fontSize.split('px')[0], 10); var getTickInterval = function getTickInterval(labelSize) { return labelSize * range / axisLength; }; if (this.isVertical) { var maxHeight = formatter.predictTextHeight(this.formatValue(largestExtreme), fontSize); if (tickSpacing < maxHeight + 2 * tickLabelPadding) { options.tickInterval = Math.ceil(getTickInterval(maxHeight + 2 * tickLabelPadding)); } } else { var maxWidth = formatter.predictTextWidth(this.formatValue(largestExtreme), fontSize) + 2 * tickLabelPadding; if (tickSpacing < maxWidth || tickSpacing > 2 * maxWidth) { var tickInterval = getTickInterval(maxWidth); // eslint-disable-next-line no-restricted-properties var magnitude = Math.pow(10, Math.floor(Math.log(tickInterval) / Math.LN10)); options.tickInterval = this.fitTickIntervalToWidth(tickInterval, null, magnitude, options.allowDecimals); } } }, determineIncludeZero: function determineIncludeZero() { if (parsingUtils.normalizeBoolean(this.properties['axis.includeZero'])) { return true; } // SPL-72638, always include zero if the axis has log scale, unless the user has explicitly set a min or max that contradicts if (this.isLogScale()) { var userMin = parseFloat(this.properties['axis.minimumNumber']); var userMax = parseFloat(this.properties['axis.maximumNumber']); if ((_underscore2.default.isNaN(userMin) || userMin <= 0) && (_underscore2.default.isNaN(userMax) || userMax >= 0)) { return true; } } return false; }, enforceIncludeZero: function enforceIncludeZero(options, extremes) { // if there are no extremes (i.e. no meaningful data was extracted), go with 0 to 100 if (!extremes.min && !extremes.max) { this.handleNoData(options); return; } if (extremes.min >= 0) { options.min = 0; options.minPadding = 0; } else if (extremes.max <= 0) { options.max = 0; options.maxPadding = 0; } }, // clean up various issues that can arise from the axis extremes adjustAxisRange: function adjustAxisRange(options, extremes, tickInterval) { // this method will add artificial min/max values that did not come from the user // clear them here so that each run will do the right thing if (!this.hasExplicitMin && _underscore2.default.isUndefined(this.sharedMin)) { delete options.min; } if (!this.hasExplicitMax && _underscore2.default.isUndefined(this.sharedMax)) { delete options.max; } // if there are no extremes (i.e. no meaningful data was extracted), go with 0 to 100 if (!extremes.dataMin && !extremes.dataMax && !this.hasExplicitMax && !this.hasExplicitMin) { this.handleNoData(options); return; } // if the min or max is such that no data makes it onto the chart, we hard-code some reasonable extremes if (extremes.min > extremes.dataMax && extremes.min > 0 && !this.hasExplicitMax) { options.max = this.isLogScale() ? extremes.min + 2 : extremes.min * 2; return; } if (extremes.max < extremes.dataMin && extremes.max < 0 && !this.hasExplicitMin) { options.min = this.isLogScale() ? extremes.max - 2 : extremes.max * 2; return; } // if either data extreme within one tick interval of zero, // remove the padding on that side so the axis doesn't extend beyond zero if (extremes.dataMin >= 0 && extremes.dataMin <= tickInterval) { if (!this.hasExplicitMin) { options.min = 0; } options.minPadding = 0; } if (extremes.dataMax <= 0 && extremes.dataMax >= -1 * tickInterval) { if (!this.hasExplicitMax) { options.max = 0; } options.maxPadding = 0; } }, handleNoData: function handleNoData(axisOptions) { var logScale = this.isLogScale(); axisOptions.min = !_underscore2.default.isUndefined(this.sharedMin) ? this.sharedMin : 0; axisOptions.max = !_underscore2.default.isUndefined(this.sharedMax) ? this.sharedMax : logScale ? 2 : 100; if (logScale) { axisOptions.tickInterval = 1; } }, enforceIntegerMajorUnit: function enforceIntegerMajorUnit(options, extremes) { var range = extremes.max - extremes.min; // if the axis range is ten or greater, require that the major unit be an integer if (range >= 10) { options.allowDecimals = false; } }, // This is a custom version of Highcharts' normalizeTickInterval method. For some reason, Highcharts // wasn't collapsing axis tick intervals early enough (SPL-72905), so we elected to choose one multiple // higher than what they would have recommended (e.g. choose 5,000,000 instead of 2,500,000). fitTickIntervalToWidth: function fitTickIntervalToWidth(interval, multiples, magnitude, allowDecimals) { var normalized = interval / magnitude; if (!multiples) { multiples = [1, 2, 2.5, 5, 10, 20]; // the allowDecimals option if (allowDecimals === false) { if (magnitude === 1) { multiples = [1, 2, 5, 10]; } else if (magnitude <= 0.1) { multiples = [1 / magnitude]; } } } if (multiples.length === 1) { interval = multiples[0]; } else { // normalize the interval to the nearest multiple for (var i = 0; i < multiples.length - 1; i++) { interval = multiples[i]; if (normalized <= (multiples[i] + (multiples[i + 1] || multiples[i])) / 2) { interval = multiples[i + 1]; break; } } } // multiply back to the correct magnitude interval *= magnitude; if (this.hasExplicitMajorUnit) { return Math.max(mathUtils.parseFloat(this.properties['axisLabels.majorUnit']), interval); } return interval; } }); _jquery2.default.extend(NumericAxis, { formatNumber: function formatNumber(value) { value = mathUtils.parseFloat(value); var absValue = Math.abs(value); if (absValue > 0 && absValue < 0.000001) { return _i18n2.default.format_scientific(value, '#.###E0'); } // Hackery to avoid floating point errors... // First calculate the decimal precision needed to display the number, then add that many characters after // the decimal point to the number format. Then add a small number to the value, which will be truncated // by the formatting logic but prevents a round-down due to floating point errors. var precision = mathUtils.getDecimalPrecision(value); var numberFormat = '#,##0.'; (0, _underscore2.default)(precision).times(function () { numberFormat += '#'; }); // eslint-disable-next-line no-restricted-properties value += Math.pow(10, -1 * precision - 1); return _i18n2.default.format_decimal(value, numberFormat); } }); exports.default = NumericAxis; module.exports = exports['default']; /***/ }), /* 57 */ /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a ');\n\n // SPL-98647: monkey patch the getParamString method to avoid an XSS vulnerability in our\n // version of Leaflet.\n // See https://github.com/Leaflet/Leaflet/pull/1317/files\n if (this.L && this.L.Util) {\n this.L.Util.getParamString = function (obj, existingUrl) {\n var params = [];\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n params.push(encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]));\n }\n }\n return (!existingUrl || existingUrl.indexOf('?') === -1 ? '?' : '&') + params.join('&');\n };\n }\n },\n },\n jg_global: {\n // export the dictionary of functions to a different variable, since in \"wrapShim\" mode require will\n // assign the return value from init to that global.\n exports: 'jg_globals',\n init: function () {\n this.jg_globals = {\n jg_namespace: this.jg_namespace,\n jg_extend: this.jg_extend,\n jg_static: this.jg_static,\n jg_mixin: this.jg_mixin,\n jg_has_mixin: this.jg_has_mixin,\n };\n return this.jg_globals;\n },\n },\n jgatt: {\n deps: ['jg_global'],\n exports: 'jgatt',\n },\n lowpro: {\n deps: ['jquery'],\n },\n sax: {\n exports: 'sax',\n },\n 'ace/ace': {\n exports: 'ace',\n },\n\n /* Start Splunk legacy */\n splunk: {\n exports: 'Splunk',\n },\n 'splunk.util': {\n deps: ['jquery', 'splunk', 'splunk.config', 'util/sprintf'],\n exports: 'Splunk.util',\n init: function ($, Splunk, config, sprintf) {\n return $.extend({ sprintf: sprintf }, Splunk.util);\n },\n },\n 'util/sprintf': {\n exports: 'sprintf',\n },\n 'splunk.legend': {\n deps: ['splunk'],\n exports: 'Splunk.Legend',\n },\n 'splunk.logger': {\n deps: ['splunk', 'splunk.util'],\n exports: 'Splunk.Logger',\n },\n 'splunk.error': {\n deps: ['jquery', 'splunk', 'splunk.logger'],\n exports: 'Splunk.Error',\n },\n 'splunk.pdf': {\n deps: ['splunk', 'splunk.util', 'jquery'],\n exports: 'Splunk.pdf',\n },\n strftime: {\n deps: [],\n },\n 'splunk.paginator': {\n deps: ['splunk'],\n exports: 'Splunk.paginator',\n },\n 'splunk.jquery.csrf': {\n deps: ['jquery', 'jquery.cookie', 'splunk.util'],\n },\n 'splunk.messenger': {\n deps: ['splunk', 'splunk.util', 'splunk.logger', 'splunk.i18n', 'lowpro'],\n exports: 'Splunk.Messenger',\n },\n 'splunk.time': {\n deps: ['jg_global', 'jgatt'],\n exports: 'splunk.time',\n },\n 'splunk.timerange': {\n deps: ['splunk', 'splunk.util', 'splunk.logger', 'splunk.i18n', 'splunk.time', 'lowpro'],\n exports: 'Splunk.Timerange',\n init: function (Splunk) {\n Splunk.namespace('Globals');\n if (!Splunk.Globals.timeZone) {\n Splunk.Globals.timeZone = new Splunk.TimeZone(Splunk.util.getConfigValue('SERVER_ZONEINFO'));\n }\n return Splunk.TimeRange;\n },\n },\n 'splunk.window': {\n deps: ['splunk', 'splunk.util', 'splunk.i18n'],\n exports: 'Splunk.window',\n },\n 'splunk.jabridge': {\n deps: ['splunk'],\n exports: 'Splunk.JABridge',\n },\n 'splunk.print': {\n deps: ['jquery', 'lowpro', 'splunk', 'splunk.logger'],\n exports: 'Splunk.Print',\n },\n 'splunk.session': {\n deps: ['lowpro', 'splunk', 'jquery', 'splunk.logger', 'splunk.util'],\n exports: 'Splunk.Session',\n },\n\n // shim handlers for the various versions of jquery\n\n 'contrib/jquery-2.1.0': {\n exports: 'jQuery',\n },\n 'contrib/jquery-1.10.2': {\n exports: 'jQuery',\n init: function () {\n if (this.console && typeof this.console.warn === 'function') {\n this.console.warn(\n 'You are using a deprecated version of jQuery, please upgrade to the latest version'\n );\n }\n return this.jQuery;\n },\n },\n 'contrib/jquery-1.8.2': {\n exports: 'jQuery',\n init: function () {\n if (this.console && typeof this.console.warn === 'function') {\n this.console.warn(\n 'You are using a deprecated version of jQuery, please upgrade to the latest version'\n );\n }\n return this.jQuery;\n },\n },\n 'contrib/jquery-1.8.3': {\n exports: 'jQuery',\n init: function () {\n if (this.console && typeof this.console.warn === 'function') {\n this.console.warn(\n 'You are using a deprecated version of jQuery, please upgrade to the latest version'\n );\n }\n return this.jQuery;\n },\n },\n },\n});\n"},1252:function(e,t){(function(t){e.exports={resolve:{alias:{coreAliases:t,jquery$:"shim/jquery",numeral:"shim/numeral",backbone_validation:"contrib/backbone-validation-amd",intro:"shim/intro","document-register-element":"contrib/polyfills/document-register-element.max.amd",strftime:"contrib/strftime",jg:"contrib/jg_lib",spin:"contrib/spin",sax:"contrib/sax","ace/ace$":"shim/ace-editor","ace/spl_tools":"shim/ace-spl_tools","ace/mode-spl":"shim/mode-spl",async:"splunkjs/contrib/requirejs-plugins/async",leaflet:"shim/leaflet",jg_global$:"shim/jg_global",jgatt$:"shim/jgatt",lowpro:"shim/lowpro",underscore:"require/underscore",backbone:"require/backbone",prettify:"shim/prettify",requirejs:"shim/requirejs","jquery.cookie$":"shim/jquery.cookie","jquery.ui.button":"shim/jquery.ui.button","jquery.ui.core":"shim/jquery.ui.core","jquery.ui.widget":"shim/jquery.ui.widget","jquery.ui.datepicker":"shim/jquery.ui.datepicker","jquery.ui.draggable":"shim/jquery.ui.draggable","jquery.ui.droppable":"shim/jquery.ui.droppable","jquery.ui.mouse":"shim/jquery.ui.mouse","jquery.ui.resizable":"shim/jquery.ui.resizable","jquery.ui.sortable":"shim/jquery.ui.sortable","tree.jquery":"shim/tree.jquery","jquery.resize":"shim/jquery.resize","jquery.ui.spinner":"shim/jquery.ui.spinner","jquery.sparkline$":"shim/jquery.sparkline","bootstrap.collapse":"shim/bootstrap.collapse","bootstrap.modal":"shim/bootstrap.modal","bootstrap.tab":"shim/bootstrap.tab","bootstrap.tooltip":"shim/bootstrap.tooltip","bootstrap.transition":"shim/bootstrap.transition",splunk$:"shim/splunk","splunk.i18n":"stubs/i18n","splunk.config":"stubs/splunk.config","splunk.legend":"shim/splunk.legend","splunk.logger":"shim/splunk.logger","splunk.messenger":"shim/splunk.messenger","splunk.paginator":"shim/splunk.paginator","splunk.print":"shim/splunk.print","splunk.session":"shim/splunk.session","splunk.time":"shim/splunk.time","splunk.timerange":"shim/splunk.timerange","splunk.util":"shim/splunk.util","splunk.window":"shim/splunk.window","splunkjs/splunk$":"shim/splunkjs"}}}}).call(this,"/index.js")},1253:function(e,t,n){var r=n("shim/jquery");Splunk.namespace("Splunk.Print");var i=window.navigator.userAgent,o=/msie/i.test(i),a=/msie 7\.0/i.test(i),s=/msie 8\.0/i.test(i);Splunk.Print=r.klass({START_EVENT:"PrintStart",END_EVENT:"PrintEnd",PAGE_EVENT:"PrintPage",PAGE_WIDTH:a||s?"700px":"800px",WINDOW_PRINT_END_EVENT_DELAY:1e3,initialize:function(){this.logger=Splunk.Logger.getLogger("Splunk.Print"),r(document).bind(this.START_EVENT,this.onPrintStart.bind(this)),r(document).bind(this.END_EVENT,this.onPrintEnd.bind(this)),r(document).bind(this.PAGE_EVENT,this.onPrintPage.bind(this)),this.bindPrintEvents()},onPrintEnd:function(e){this.logger.info("Splunk.Print.END_EVENT fired")},onPrintPage:function(e){var t=r("body")[0].style,n=window.pageXOffset,i=window.pageYOffset,a=function(){r("body").addClass("print").css({width:this.PAGE_WIDTH,"min-width":0}),window.scrollTo(0,document.body.offsetHeight)}.bind(this),s=function(){r("body").removeClass("print"),t.width="",t["min-width"]="",window.scrollTo(n,i)};if(this.logger.info("Splunk.Print.PAGE_EVENT fired"),o)a(),r(document).trigger(this.START_EVENT),window.print(),s(),r(document).trigger(this.END_EVENT);else if(this.isChromeThirteenPlus()){var l=!1;r(window).bind("blur.splunkPrint",function(){l=!0,r(window).bind("focus.splunkPrint",function(){s(),r(document).trigger(this.END_EVENT),r(window).unbind(".splunkPrint")}.bind(this))}.bind(this)),a(),setTimeout(function(){r(document).trigger(this.START_EVENT)}.bind(this),0),setTimeout(function(){window.print(),setTimeout(function(){l||(s(),r(window).unbind(".splunkPrint"),r(document).trigger(this.END_EVENT))}.bind(this),this.WINDOW_PRINT_END_EVENT_DELAY)}.bind(this),0)}else a(),setTimeout(function(){r(document).trigger(this.START_EVENT)}.bind(this),0),setTimeout(function(){window.print(),setTimeout(function(){s(),r(document).trigger(this.END_EVENT)}.bind(this),this.WINDOW_PRINT_END_EVENT_DELAY)}.bind(this),0)},onPrintStart:function(e){this.logger.info("Splunk.Print.START_EVENT fired")},bindPrintEvents:function(){var e=function(){r("body").css("width",this.PAGE_WIDTH),r(document).trigger(this.START_EVENT)}.bind(this),t=function(){r("body").css("width",""),r(document).trigger(this.END_EVENT)}.bind(this);if(void 0!==window.onbeforeprint)window.addEventListener?(window.addEventListener("beforeprint",e,!1),window.addEventListener("afterprint",t,!1)):window.attachEvent&&(window.attachEvent("onbeforeprint",e),window.attachEvent("onafterprint",t));else if(window.matchMedia){var n=window.matchMedia("print");n&&n.addListener&&n.addListener((function(n){n&&(n.matches?e():t())}))}},isChromeThirteenPlus:function(){var e=/chrome\/(\d+)/i.exec(navigator.userAgent);return!!(e&&parseInt(e[1],10)>=13)}}),Splunk.Print.instance=null,Splunk.Print.getInstance=function(){return Splunk.Print.instance||(Splunk.Print.instance=new Splunk.Print),Splunk.Print.instance}},1254:function(e,t,n){var r,i;n("shim/jquery");!function(){"use strict";void 0===(i="function"==typeof(r=["jquery","./data","./disable-selection","./focusable","./form","./ie","./keycode","./labels","./jquery-patch","./plugin","./safe-active-element","./safe-blur","./scroll-parent","./tabbable","./unique-id","./version"])?r.call(t,n,t,e):r)||(e.exports=i)}()},1255:function(e,t,n){var r,i,o;n("shim/jquery"); /*! * jQuery UI Mouse 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(a){"use strict";i=[n("shim/jquery"),n(841),n(121),n(425)],void 0===(o="function"==typeof(r=function(e){var t=!1;return e(document).on("mouseup",(function(){t=!1})),e.widget("ui.mouse",{version:"1.13.3",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.on("mousedown."+this.widgetName,(function(e){return t._mouseDown(e)})).on("click."+this.widgetName,(function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1})),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(n){if(!t){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(n),this._mouseDownEvent=n;var r=this,i=1===n.which,o=!("string"!=typeof this.options.cancel||!n.target.nodeName)&&e(n.target).closest(this.options.cancel).length;return!(i&&!o&&this._mouseCapture(n))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout((function(){r.mouseDelayMet=!0}),this.options.delay)),this._mouseDistanceMet(n)&&this._mouseDelayMet(n)&&(this._mouseStarted=!1!==this._mouseStart(n),!this._mouseStarted)?(n.preventDefault(),!0):(!0===e.data(n.target,this.widgetName+".preventClickEvent")&&e.removeData(n.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),n.preventDefault(),t=!0,!0))}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(n){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,n.target===this._mouseDownEvent.target&&e.data(n.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(n)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,t=!1,n.preventDefault()},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})})?r.apply(t,i):r)||(e.exports=o)}()},1256:function(e,t,n){var r=n("shim/jquery");(function(){ /*! * jQuery resize event - v1.1 - 3/14/2010 * http://benalman.com/projects/jquery-resize-plugin/ * * Copyright (c) 2010 "Cowboy" Ben Alman * Dual licensed under the MIT and GPL licenses. * http://benalman.com/about/license/ */ !function(e,t,n){var r,i=e([]),o=e.resize=e.extend(e.resize,{}),a="elementResize-special-event";o.delay=250,o.throttleWindow=!0,e.event.special.elementResize={setup:function(){if(!o.throttleWindow&&this.setTimeout)return!1;var n=e(this);i=i.add(n),e.data(this,a,{w:n.width(),h:n.height()}),1===i.length&&function n(){r=t.setTimeout((function(){i.each((function(){var t=e(this),n=t.width(),r=t.height(),i=e.data(this,a);n===i.w&&r===i.h||t.trigger("elementResize",[i.w=n,i.h=r])})),n()}),o.delay)}()},teardown:function(){if(!o.throttleWindow&&this.setTimeout)return!1;var t=e(this);i=i.not(t),t.removeData(a),i.length||clearTimeout(r)},add:function(t){if(!o.throttleWindow&&this.setTimeout)return!1;var n;function r(t,r,i){var o=e(this),s=e.data(this,a);s.w=void 0!==r?r:o.width(),s.h=void 0!==i?i:o.height(),n.apply(this,arguments)}if(e.isFunction(t))return n=t,r;n=t.handler,t.handler=r}}}(r,this)}).call(window)},1257:function(e,t,n){"use strict";t.byteLength=function(e){var t=c(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=c(e),a=r[0],s=r[1],l=new o(function(e,t,n){return 3*(t+n)/4-n}(0,a,s)),u=0,d=s>0?a-4:a;for(n=0;n>16&255,l[u++]=t>>8&255,l[u++]=255&t;2===s&&(t=i[e.charCodeAt(n)]<<2|i[e.charCodeAt(n+1)]>>4,l[u++]=255&t);1===s&&(t=i[e.charCodeAt(n)]<<10|i[e.charCodeAt(n+1)]<<4|i[e.charCodeAt(n+2)]>>2,l[u++]=t>>8&255,l[u++]=255&t);return l},t.fromByteArray=function(e){for(var t,n=e.length,i=n%3,o=[],a=0,s=n-i;as?s:a+16383));1===i?(t=e[n-1],o.push(r[t>>2]+r[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],o.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return o.join("")};for(var r=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var i,o,a=[],s=t;s>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},1258:function(e,t){ /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ t.read=function(e,t,n,r,i){var o,a,s=8*i-r-1,l=(1<>1,u=-7,d=n?i-1:0,p=n?-1:1,h=e[t+d];for(d+=p,o=h&(1<<-u)-1,h>>=-u,u+=s;u>0;o=256*o+e[t+d],d+=p,u-=8);for(a=o&(1<<-u)-1,o>>=-u,u+=r;u>0;a=256*a+e[t+d],d+=p,u-=8);if(0===o)o=1-c;else{if(o===l)return a?NaN:1/0*(h?-1:1);a+=Math.pow(2,r),o-=c}return(h?-1:1)*a*Math.pow(2,o-r)},t.write=function(e,t,n,r,i,o){var a,s,l,c=8*o-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,f=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=u):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),(t+=a+d>=1?p/l:p*Math.pow(2,1-d))*l>=2&&(a++,l/=2),a+d>=u?(s=0,a=u):a+d>=1?(s=(t*l-1)*Math.pow(2,i),a+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),a=0));i>=8;e[n+h]=255&s,h+=f,s/=256,i-=8);for(a=a<0;e[n+h]=255&a,h+=f,a/=256,c-=8);e[n+h-f]|=128*m}},1259:function(e,t,n){e.exports=i;var r=n(698).EventEmitter;function i(){r.call(this)}n(246)(i,r),i.Readable=n(699),i.Writable=n(1266),i.Duplex=n(1267),i.Transform=n(1268),i.PassThrough=n(1269),i.Stream=i,i.prototype.pipe=function(e,t){var n=this;function i(t){e.writable&&!1===e.write(t)&&n.pause&&n.pause()}function o(){n.readable&&n.resume&&n.resume()}n.on("data",i),e.on("drain",o),e._isStdio||t&&!1===t.end||(n.on("end",s),n.on("close",l));var a=!1;function s(){a||(a=!0,e.end())}function l(){a||(a=!0,"function"==typeof e.destroy&&e.destroy())}function c(e){if(u(),0===r.listenerCount(this,"error"))throw e}function u(){n.removeListener("data",i),e.removeListener("drain",o),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",c),e.removeListener("error",c),n.removeListener("end",u),n.removeListener("close",u),e.removeListener("close",u)}return n.on("error",c),e.on("error",c),n.on("end",u),n.on("close",u),e.on("close",u),e.emit("pipe",n),e}},126:function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},1260:function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},1261:function(e,t,n){"use strict";var r=n(427).Buffer,i=n(845);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t,n,i,o=r.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,n=o,i=s,t.copy(n,i),s+=a.data.length,a=a.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},1262:function(e,t,n){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(1263),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(42))},1263:function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,o,a,s,l=1,c={},u=!1,d=e.document,p=Object.getPrototypeOf&&Object.getPrototypeOf(e);p=p&&p.setTimeout?p:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){f(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){f(e.data)},r=function(e){o.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(i=d.documentElement,r=function(e){var t=d.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(f,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&f(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),r=function(t){e.postMessage(a+t,"*")}),p.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n0&&void 0!==arguments[0]?arguments[0]:{},t=e.messages;if(Array.isArray(t))return(0,r.default)(t,(function(e){var t=e.type;return"ERROR"===t||"FATAL"===t||"risky_command"===t}))}t.defaultFetchInit=s},1270:function(e,t){e.exports=function(e,t){if(null==e)return{};var n={};for(var r in e)if(Object.prototype.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n},e.exports.__esModule=!0,e.exports.default=e.exports},1271:function(e,t){e.exports="

\"><%=model.get('label')%>

\n
\" data-role=\"section-contents\">\n <% var addedItems = []; %>\n <% var label; %>\n <% _.each(this.model.get('items'), function(item, i){ %>\n <% if(_.indexOf(addedItems, item.entry.content.get('menu.label')) === -1) { %>\n <% label = _(item.entry.content.get('menu.label')).t() || _(item.entry.get('name')).t() || ''; %>\n \"\n class=\"<%=css.link%>\"\n data-entry=\"<%-item.entry.get('name')%>\"\n aria-label=\"<%-item.get('external') ? sprintf(_('Open %s in a new window').t(), label) : sprintf(_('Open %s').t(), label)%>\"\n <%=item.get('telemetryData') ? 'data-telemetry=\"' + item.get('telemetryData')+ '\"' : ''%>\n <%=item.get('external') ? 'target=\"_blank\"' : ''%>\n >\n <%-label%> \n <% if (item.get('external')) { %>\n \n <% } %>\n \n
\n <% addedItems.push(item.entry.content.get('menu.label')); %>\n <% } %>\n <% }); %>\n
\n"},1272:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---2R9om{color:#3c444d;display:inline-block;padding:10px;vertical-align:top;width:200px}.heading---enterprise---dev---2niIY{color:#5c6773;font-family:inherit;font-size:12px;font-weight:500;line-height:20px;margin:0 0 2px;text-rendering:optimizelegibility;text-transform:uppercase}.list---enterprise---dev---3w7Uw{margin:0}.link---enterprise---dev---78KMo{color:#006297;cursor:pointer;text-decoration:none}.link---enterprise---dev---78KMo:hover{color:#006297;text-decoration:underline}.link---enterprise---dev---78KMo:focus{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0}.link---enterprise---dev---78KMo:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.link---enterprise---dev---78KMo:focus{text-decoration:none}.link---enterprise---dev---78KMo:active{-webkit-box-shadow:none;box-shadow:none}.link---enterprise---dev---78KMo.disabled---enterprise---dev---3Ac9t{color:#6b7785}.link---enterprise---dev---78KMo{border-radius:3px;-webkit-box-shadow:none;box-shadow:none;display:inline-block;line-height:18px;margin-left:-2px;padding:2px 2px 2px 12px;text-indent:-10px}.link---enterprise---dev---78KMo i{display:inline}",""]),t.locals={view:"view---enterprise---dev---2R9om",heading:"heading---enterprise---dev---2niIY",list:"list---enterprise---dev---3w7Uw",link:"link---enterprise---dev---78KMo",disabled:"disabled---enterprise---dev---3Ac9t"}},1273:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(248),void 0),t.push([e.i,".pill---enterprise---dev---36DHX{color:#5c6773;font-size:20px;height:32px;line-height:32px;padding:0;text-align:center;width:32px}",""]),t.locals={pill:"pill---enterprise---dev---36DHX "+n(248).locals.pill}},1274:function(e,t){e.exports='<% if(userCanAddData || userCanExploreData || managementConsoleAvailable) { %>\n\n<% } %>\n\n
\n
\n
\n
\x3c!-- /.popdown-dialog-body --\x3e\n<% if(canShowMore) { %>\n
\n
\n<% } %>\n'},1275:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,'.view---enterprise---dev---2ycrO{background-color:#f2f4f5}.header---enterprise---dev---2KPQ3{background-color:#fff;padding:30px 20px 10px;width:420px}.sidebar---enterprise---dev---1HLHW+.header---enterprise---dev---2KPQ3{margin-left:150px}[data-menu-sections="1"]>.header---enterprise---dev---2KPQ3,[data-menu-sections="2"]>.header---enterprise---dev---2KPQ3{-webkit-columns:1;-moz-columns:1;column-count:1;width:200px}.body---enterprise---dev---C_mr_{background-color:#fff;-webkit-columns:2;-moz-columns:2;column-count:2;-webkit-column-gap:0;-moz-column-gap:0;column-gap:0;padding:10px;width:440px}.sidebar---enterprise---dev---1HLHW+.body---enterprise---dev---C_mr_{margin-left:150px}[data-menu-sections="1"]>.body---enterprise---dev---C_mr_,[data-menu-sections="2"]>.body---enterprise---dev---C_mr_{-webkit-columns:1;-moz-columns:1;column-count:1;width:220px}.sidebar---enterprise---dev---1HLHW{float:left;padding:0;width:150px}.sidebar---enterprise---dev---1HLHW>a{color:#5c6773;display:block;padding:15px;text-align:center;text-decoration:none}.sidebar---enterprise---dev---1HLHW>a:focus{border-collapse:separate;outline:0;text-decoration:none}.sidebar---enterprise---dev---1HLHW>a:focus,.sidebar---enterprise---dev---1HLHW>a:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.sidebar---enterprise---dev---1HLHW>a:focus{-webkit-box-shadow:inset 0 0 2px 1px #e1e6eb,inset 0 0 0 2px #00a4fd;box-shadow:inset 0 0 2px 1px #e1e6eb,inset 0 0 0 2px #00a4fd}.sidebar---enterprise---dev---1HLHW>a:hover{background:#e1e6eb}.sidebar---enterprise---dev---1HLHW svg{display:block;margin:10px auto 15px;width:60px}.fill---enterprise---dev---35b1V{fill:#818d99}.stroke---enterprise---dev---1ELoT{stroke:#818d99}.footer---enterprise---dev---FZOzw{text-align:right}',""]),t.locals={view:"view---enterprise---dev---2ycrO",header:"header---enterprise---dev---2KPQ3",sidebar:"sidebar---enterprise---dev---1HLHW",body:"body---enterprise---dev---C_mr_",fill:"fill---enterprise---dev---35b1V",stroke:"stroke---enterprise---dev---1ELoT",footer:"footer---enterprise---dev---FZOzw "+n(29).locals.footer}},1276:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.strictParseFloat=function(e){return a.test(e)?parseFloat(e):NaN},t.roundToDecimal=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(0,i.default)(e,-1*t)},t.floorPowerOfTen=function(e){return Math.pow(10,Math.floor(Math.log(e)/Math.LN10))},t.isLessThanMinSafeInt=function(e){if(!(0,r.default)(e))return!1;return e<=-9007199254740991},t.isGreaterThanMaxSafeInt=function(e){if(!(0,r.default)(e))return!1;return e>=9007199254740991};var r=o(n(275)),i=o(n(1277));function o(e){return e&&e.__esModule?e:{default:e}}var a=/(^[-+]?[0-9]*[.]?[0-9]*$)|(^[-+]?[0-9][.]?[0-9]*e[-+]?[0-9][0-9]*$)/i},1277:function(e,t,n){var r=n(1278)("round");e.exports=r},1278:function(e,t,n){var r=n(95),i=n(268),o=n(330),a=n(240),s=r.isFinite,l=Math.min;e.exports=function(e){var t=Math[e];return function(e,n){if(e=o(e),(n=null==n?0:l(i(n),292))&&s(e)){var r=(a(e)+"e").split("e"),c=t(r[0]+"e"+(+r[1]+n));return+((r=(a(c)+"e").split("e"))[0]+"e"+(+r[1]-n))}return t(e)}}},1279:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sprintfFormat=c,t.sprintfParse=d;var r=o(n(82)),i=o(n(1280));function o(e){return e&&e.__esModule?e:{default:e}}function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var s={notType:/[^T]/,notPrimitive:/[^v]/,number:/[diefg]/,numericArg:/[bcdiefguxX]/,json:/[j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,keyAccess:/^\.([a-z_][a-z_\d]*)/i,indexAccess:/^\[(\d+)\]/,sign:/^[+-]/};function l(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r=0),u.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,u.width?parseInt(u.width,10):0);break;case"e":n=u.precision?parseFloat(n).toExponential(u.precision):parseFloat(n).toExponential();break;case"f":n=u.precision?parseFloat(n).toFixed(u.precision):parseFloat(n);break;case"g":n=u.precision?String(Number(n.toPrecision(u.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=u.precision?n.substring(0,u.precision):n;break;case"t":n=String(!!n),n=u.precision?n.substring(0,u.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=u.precision?n.substring(0,u.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=u.precision?n.substring(0,u.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}s.json.test(u.type)?v+=n:(!s.number.test(u.type)||f&&!u.sign?m="":(m=f?"+":"-",n=n.toString().replace(s.sign,"")),p=u.padChar?"0"===u.padChar?"0":u.padChar.charAt(1):" ",h=u.width-(m+n).length,d=u.width&&h>0?(0,i.default)(p,h):"",v+=u.align?m+n+d:"0"===p?m+d+n:d+m+n)}return v}var u=Object.create(null);function d(e){if(u[e])return u[e];for(var t,n=e,r=0,i=[];n;){if(null!==(t=s.text.exec(n)))i.push(t[0]);else if(null!==(t=s.modulo.exec(n)))i.push("%");else{if(null===(t=s.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(t[2]){r|=1;var o=t[2],a=[],l=[];if(null===(a=s.key.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(l.push(a[1]);""!==(o=o.substring(a[0].length));)if(null!==(a=s.keyAccess.exec(o)))l.push(a[1]);else{if(null===(a=s.indexAccess.exec(o)))throw new SyntaxError("[sprintf] failed to parse named argument key");l.push(a[1])}t[2]=l}else r|=2;if(3===r)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");i.push({placeholder:t[0],paramNo:t[1],keys:t[2],sign:t[3],padChar:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}n=n.substring(t[0].length)}return u[e]=i,u[e]}},128:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=194)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},10:function(e,t){e.exports=n(82)},105:function(e,t){e.exports=n(129)},11:function(e,t,n){"use strict";function r(e,t){e&&("function"==typeof e?e(t):e.current=t)}n.d(t,"a",(function(){return r}))},14:function(e,t){e.exports=n(166)},164:function(e,t){e.exports=n(1241)},17:function(e,t){e.exports=n(53)},194:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Me}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(10),l=n.n(s),c=n(9),u=n.n(c),d=n(5),p=n.n(d),h=n(61),f=n.n(h),m=n(105),b=n(25),g=n.n(b),v=n(26),y=n.n(v),A=n(51),M=n.n(A),_=n(46),w=n.n(_),O=n(14),x=n.n(O),z=n(164),C=n.n(z),S=n(0),T=n(37),k=n(4),L=n(32),E=n.n(L);function P(){return(P=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ue(e,t){for(var n=0;n9007199254740991)return r;do{t%2&&(r+=e),(t=n(t/2))&&(e+=e)}while(t);return r}},1282:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=222)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},2:function(e,t){e.exports=n(1)},222:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return S}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(40),l=n(82),c=n.n(l),u=n(3),d=n.n(u),p=n(24),h=n(0),f=Object(u.css)(["",";position:fixed;top:0;right:0;bottom:0;left:0;"],h.mixins.reset("block")),m=d()(p.animated.div).withConfig({displayName:"ModalLayerStyles__StyledClickAwayOverlay",componentId:"sc-1sa3n1j-0"})(["",";background-color:",";z-index:",";"],f,h.variables.backgroundColorScrim,h.variables.zindexModalBackdrop);function b(e){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function g(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function v(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var h={elementRef:a.a.oneOfType([a.a.func,a.a.object]),orientation:a.a.oneOf(["horizontal","vertical"])};function f(e){var t=e.elementRef,n=e.orientation,r=void 0===n?"horizontal":n,o=p(e,["elementRef","orientation"]);return i.a.createElement(u,d({"data-test":"divider",ref:t,"aria-orientation":r,$orientation:r},o))}f.propTypes=h;var m=f},3:function(e,t){e.exports=n(13)}})},1284:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=215)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},2:function(e,t){e.exports=n(1)},215:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return _}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(25),l=n.n(s),c=n(26),u=n.n(c),d=n(0),p=n(4),h=n(3),f=n.n(h),m=n(62),b=n.n(m),g=f()(b.a).withConfig({displayName:"CloseButtonStyles__StyledButtonSimple",componentId:"b3h40f-0"})(["float:right;width:",";height:",";text-align:center;"],d.variables.inputHeight,d.variables.inputHeight);function v(){return(v=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var A={disabled:a.a.bool,elementRef:a.a.oneOfType([a.a.func,a.a.object]),screenReaderText:a.a.string};function M(e){var t=e.disabled,n=void 0!==t&&t,r=e.screenReaderText,o=void 0===r?Object(p._)("Close"):r,a=y(e,["disabled","screenReaderText"]),s=Object(d.useSplunkTheme)(),c=s.isEnterprise,h=s.isCompact?"20px":"24px";return i.a.createElement(g,v({appearance:"pill",disabled:n,"aria-label":o},a),c?i.a.createElement(u.a,{"data-test":"cross",inline:!1,screenReaderText:null,size:"13px"}):i.a.createElement(l.a,{"data-test":"cross",height:h,width:h}))}M.propTypes=A;var _=M},25:function(e,t){e.exports=n(273)},26:function(e,t){e.exports=n(157)},3:function(e,t){e.exports=n(13)},4:function(e,t){e.exports=n(3)},62:function(e,t){e.exports=n(694)}})},1285:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=221)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},100:function(e,t){e.exports=n(429)},101:function(e,t){e.exports=n(430)},12:function(e,t){e.exports=n(122)},14:function(e,t){e.exports=n(166)},2:function(e,t){e.exports=n(1)},221:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return ne}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(25),l=n.n(s),c=n(26),u=n.n(c),d=n(14),p=n.n(d),h=n(0),f=n(4),m=n(3),b=n.n(m),g=n(70),v=n.n(g),y=n(71),A=n.n(y),M=n(96),_=n.n(M),w=n(97),O=n.n(w),x=n(98),z=n.n(x),C=n(99),S=n.n(C),T=n(100),k=n.n(T),L=n(101),E=n.n(L),P=n(6),R=n.n(P),D=n(12),N=n.n(D),j=b.a.div.withConfig({displayName:"MessageBarStyles__MessageBarContent",componentId:"sc-1uyhzza-0"})(["",";color:inherit;padding:0 8px;text-align:center;margin-right:auto;& a{display:inline-block;color:inherit;text-decoration:underline;text-underline-position:under;padding:0 3px 2px 3px;&:not([disabled]):focus{border-radius:",";outline:0;box-shadow:",";}}"],h.mixins.reset("inline"),h.variables.borderRadius,Object(h.pick)({enterprise:{dark:Object(m.css)(["0 0 0 2px ",""],h.variables.gray80),light:Object(m.css)(["0 0 0 2px ",""],h.variables.gray25)},prisma:{light:Object(h.pickVariant)("$type",{info:Object(m.css)(["0 0 0 3px ",""],h.variables.black),warning:Object(m.css)(["0 0 0 3px ",""],h.variables.black),error:Object(m.css)(["0 0 0 3px ",""],h.variables.white),success:Object(m.css)(["0 0 0 3px ",""],h.variables.white)}),dark:Object(m.css)(["0 0 0 3px ",""],h.variables.black)}})),B=b()(N.a).withConfig({displayName:"MessageBarStyles__MessageBarCloseWrapper",componentId:"sc-1uyhzza-1"})(["",";border:1px solid transparent;border-radius:",";color:inherit;cursor:pointer;padding:",";"," &:hover,&:focus{background:",";border:",";color:",";}&:active{",";}",""],h.mixins.reset("flex"),h.variables.borderRadius,Object(h.pick)({enterprise:h.variables.spacingXSmall,prisma:"3px"}),Object(h.pick)({enterprise:Object(m.css)(["margin-top:1px;"])}),Object(h.pick)({prisma:h.variables.interactiveColorOverlayHover,enterprise:{dark:h.variables.gray30,light:h.variables.gray92}}),Object(h.pick)({prisma:Object(m.css)(["1px solid inherit"]),enterprise:Object(m.css)(["1px solid ",""],h.variables.gray80)}),Object(h.pick)({enterprise:{dark:h.variables.gray96,light:h.variables.linkColor}}),Object(h.pick)({prisma:Object(m.css)(["background:",";"],h.variables.interactiveColorOverlayActive),enterprise:Object(m.css)(["box-shadow:",";"],h.variables.focusShadow)}),Object(h.pick)({prisma:Object(m.css)(["&:focus{border-radius:",";box-shadow:",";}"],h.variables.borderRadius,Object(h.pick)({light:Object(h.pickVariant)("$type",{info:Object(m.css)(["0 0 0 3px ",""],h.variables.black),warning:Object(m.css)(["0 0 0 3px ",""],h.variables.black),error:Object(m.css)(["0 0 0 3px ",""],h.variables.white),success:Object(m.css)(["0 0 0 3px ",""],h.variables.white)}),dark:Object(m.css)(["0 0 0 3px ",""],h.variables.black)}))})),q=Object(m.css)(["margin-left:auto;"]),I=b()(v.a).withConfig({displayName:"MessageBarStyles__StyledCheckCircleIcon",componentId:"sc-1uyhzza-2"})(["",""],q),F=b()(A.a).withConfig({displayName:"MessageBarStyles__StyledExclamationCircleIcon",componentId:"sc-1uyhzza-3"})(["",""],q),W=b()(_.a).withConfig({displayName:"MessageBarStyles__StyledInformationCircleIcon",componentId:"sc-1uyhzza-4"})(["",""],q),H=b()(O.a).withConfig({displayName:"MessageBarStyles__StyledExclamationTriangleIcon",componentId:"sc-1uyhzza-5"})(["",""],q),V=b()(z.a).withConfig({displayName:"MessageBarStyles__StyledEnterpriseErrorIcon",componentId:"sc-1uyhzza-6"})([""," color:",";"],q,h.variables.errorColor),U=b()(S.a).withConfig({displayName:"MessageBarStyles__StyledEnterpriseInfoCircleIcon",componentId:"sc-1uyhzza-7"})([""," color:",";"],q,h.variables.infoColor),Y=b()(k.a).withConfig({displayName:"MessageBarStyles__StyledEnterpriseSuccessIcon",componentId:"sc-1uyhzza-8"})([""," color:",";"],q,h.variables.successColor),$=b()(E.a).withConfig({displayName:"MessageBarStyles__StyledEnterpriseWarningIcon",componentId:"sc-1uyhzza-9"})([""," color:",";"],q,h.variables.warningColor),X=b()(R.a).withConfig({displayName:"MessageBarStyles__MessageBarWrapper",componentId:"sc-1uyhzza-10"})(["",";display:flex;align-items:center;justify-content:center;min-height:40px;margin-bottom:",";",";word-wrap:break-word;color:",";",";"],h.mixins.reset("block"),h.variables.spacingSmall,(function(e){return e.$hasCloseButton?Object(m.css)(["",""],Object(h.pick)({prisma:Object(m.css)(["padding:0 8px 0 32px;"]),enterprise:Object(m.css)(["padding:0 8px 0 38px;"])})):Object(m.css)(["",""],Object(h.pick)({prisma:Object(m.css)(["padding:0 33px 0 32px;"]),enterprise:Object(m.css)(["padding:0 26px 0 32px;"])}))}),Object(h.pick)({prisma:Object(h.pickVariant)("$type",{info:{light:h.variables.contentColorActive,dark:h.variables.contentColorInverted},success:h.variables.contentColorInverted,warning:h.variables.black,error:h.variables.contentColorInverted}),enterprise:{dark:h.variables.gray96,light:h.variables.gray25}}),Object(h.pickVariant)("$type",{info:Object(m.css)(["background-color:",";"],Object(h.pick)({prisma:{dark:h.variables.white,light:h.variables.neutral200},enterprise:{dark:h.mixins.colorWithAlpha(h.variables.infoColor,.5),light:h.variables.infoColorL50}})),success:Object(m.css)(["background-color:",";"],Object(h.pick)({prisma:h.variables.accentColorPositive,enterprise:{dark:h.mixins.colorWithAlpha(h.variables.successColor,.5),light:h.variables.successColorL50}})),warning:Object(m.css)(["background-color:",";"],Object(h.pick)({prisma:h.variables.accentColorWarning,enterprise:{dark:h.mixins.colorWithAlpha(h.variables.warningColor,.5),light:h.variables.warningColorL50}})),error:Object(m.css)(["background-color:",";"],Object(h.pick)({prisma:h.variables.accentColorNegative,enterprise:{dark:h.mixins.colorWithAlpha(h.variables.errorColor,.5),light:h.variables.errorColorL50}}))}));function G(){return(G=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var K={children:a.a.node.isRequired,onRequestClose:a.a.func,type:a.a.oneOf(["info","success","warning","error"]).isRequired},Z=Object.freeze({info:Object(f._)("Info"),warning:Object(f._)("Warning"),error:Object(f._)("Alert"),success:Object(f._)("Success")}),J=Object.freeze({info:U,warning:$,error:V,success:Y}),ee=Object.freeze({info:W,warning:H,error:F,success:I});function te(e){var t,n=e.children,r=e.type,o=e.onRequestClose,a=Q(e,["children","type","onRequestClose"]),s=Object(h.useSplunkTheme)().isEnterprise,c=s&&"error"===r?"22px":"24px",d=s&&"warning"===r?"21px":"24px";if(s){var m=J[r];t=i.a.createElement(m,{height:d,width:c,hideDefaultTooltip:!0,screenReaderText:null,"aria-hidden":!0,"data-test":"icon"})}else{var b=ee[r];t=i.a.createElement(b,{height:"24px",width:"24px",variant:"filled","aria-hidden":!0,"data-test":"icon"})}return i.a.createElement(X,G({$type:r,"data-test":"message-bar","data-test-type":r},a,{role:"region",$hasCloseButton:Boolean(o)}),t,i.a.createElement(p.a,null,Z[r]),i.a.createElement(j,{$type:r,"data-test":"content"},n),o&&i.a.createElement(B,{$type:r,onClick:o},s?i.a.createElement(u.a,{height:"12px",hideDefaultTooltip:!0,screenReaderText:null,width:"12px"}):i.a.createElement(l.a,{height:"19px",style:{margin:-.5},width:"19px"}),i.a.createElement(p.a,null,Object(f._)("Close"))))}te.propTypes=K;var ne=te},25:function(e,t){e.exports=n(273)},26:function(e,t){e.exports=n(157)},3:function(e,t){e.exports=n(13)},4:function(e,t){e.exports=n(3)},6:function(e,t){e.exports=n(97)},70:function(e,t){e.exports=n(848)},71:function(e,t){e.exports=n(849)},96:function(e,t){e.exports=n(850)},97:function(e,t){e.exports=n(851)},98:function(e,t){e.exports=n(702)},99:function(e,t){e.exports=n(852)}})},1286:function(e,t){e.exports=function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return s}},e.exports.__esModule=!0,e.exports.default=e.exports},1287:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=242)}({2:function(e,t){e.exports=n(1)},242:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return i}));var r=n(2);var i=function(e){var t=Object(r.useRef)();return Object(r.useEffect)((function(){t.current=e}),[e]),t.current}}})},1288:function(e,t,n){var r=n(854);e.exports=function(e){if(Array.isArray(e))return r(e)},e.exports.__esModule=!0,e.exports.default=e.exports},1289:function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")},e.exports.__esModule=!0,e.exports.default=e.exports},129:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=197)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},14:function(e,t){e.exports=n(166)},19:function(e,t){e.exports=n(244)},197:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return G})),n.d(t,"ControlGroupContext",(function(){return k}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(52),l=n.n(s),c=n(19),u=n.n(c),d=n(0),p=n(8),h=n(6),f=n.n(h),m=n(14),b=n.n(m),g=n(3),v=n.n(g),y=n(42),A=n.n(y),M=v()(f.a).withConfig({displayName:"ControlGroupStyles__StyledBox",componentId:"wjnyif-0"})([""," "," max-width:600px;margin-bottom:",";"," color:",";",""],d.mixins.reset("block"),d.mixins.clearfix(),Object(d.pick)({enterprise:Object(g.css)(["calc("," * 0.75)"],d.variables.spacing),prisma:{comfortable:"16px",compact:"12px"}}),Object(d.pick)({prisma:{comfortable:Object(g.css)(["&:first-child{margin-top:",";}&:last-child{margin-bottom:",";}"],d.variables.spacingMedium,d.variables.spacingMedium),compact:Object(g.css)(["&:first-child{margin-top:",";}&:last-child{margin-bottom:",";}"],d.variables.spacingSmall,d.variables.spacingSmall)}}),Object(d.pick)({enterprise:d.variables.textColor,prisma:d.variables.contentColorMuted}),(function(e){return e.$error&&Object(g.css)(["color:",";"],Object(d.pick)({enterprise:{light:d.variables.errorColorD10,dark:d.variables.errorColorL20},prisma:d.variables.accentColorNegative}))})),_=v()(f.a).withConfig({displayName:"ControlGroupStyles__StyledControlsStackBox",componentId:"wjnyif-1"})(["flex-direction:column;"]),w=v.a.div.withConfig({displayName:"ControlGroupStyles__StyledLabelWrapper",componentId:"wjnyif-2"})(["display:inline-flex;align-items:center;"," ",""],Object(d.pick)({enterprise:Object(g.css)(["justify-content:flex-end;"])}),(function(e){return"top"===e.$labelPosition?Object(g.css)(["",""],Object(d.pick)({prisma:Object(g.css)(["height:24px;padding-bottom:",";"],d.variables.spacingXSmall)})):Object(g.css)(["",""],Object(d.pick)({prisma:Object(g.css)(["min-height:",";"],d.variables.inputHeight)}))})),O=v()(w).withConfig({displayName:"ControlGroupStyles__StyledLabelWrapperLeft",componentId:"wjnyif-3"})(["float:left;"]),x=v.a.label.withConfig({displayName:"ControlGroupStyles__StyledLabel",componentId:"wjnyif-4"})(["padding:",";word-wrap:break-word;color:inherit;text-align:",";"],Object(d.pick)({enterprise:{comfortable:"6px 0",compact:"4px 0"}}),Object(d.pick)({enterprise:"right",prisma:"left"})),z=v()(A.a).withConfig({displayName:"ControlGroupStyles__StyledTooltip",componentId:"wjnyif-5"})(["",""],(function(e){return"top"===e.$labelPosition&&Object(g.css)(["button{","}"],Object(d.pick)({prisma:Object(g.css)(["svg{width:20px;height:20px;}padding:4px;"])}))})),C=v.a.div.withConfig({displayName:"ControlGroupStyles__StyledHelp",componentId:"wjnyif-6"})(["",";font-size:",";color:",";margin-top:",";",""],d.mixins.reset("block"),d.variables.fontSizeSmall,d.variables.contentColorMuted,Object(d.pick)({enterprise:"2px",prisma:"4px"}),(function(e){return e.$error&&Object(g.css)(["color:inherit;"])})),S=v.a.div.withConfig({displayName:"ControlGroupStyles__StyledErrorText",componentId:"wjnyif-7"})(["",";font-size:",";[aria-invalid] > &{color:inherit;}",""],d.mixins.reset("block"),d.variables.fontSizeSmall,(function(e){return!e.$help&&Object(g.css)(["margin-top:",";"],Object(d.pick)({enterprise:"2px",prisma:"4px"}))})),T=v.a.span.withConfig({displayName:"ControlGroupStyles__StyledAsterisk",componentId:"wjnyif-8"})(["color:inherit;margin-right:2px;"]),k=i.a.createContext({});function L(e){return(L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function E(){return(E=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function N(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(e)))return;var n=[],r=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return j(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&(i.prepend=!0),n1&&(i.inline=!0),"stack"===o&&(i.inline=!1,n{let n=h(e);t+=n.weight,this._keys.push(n),this._keyMap[n.id]=n,t+=n.weight}),this._keys.forEach(e=>{e.weight/=t})}get(e){return this._keyMap[e]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}}function h(e){let t=null,n=null,o=null,a=1,s=null;if(i(e)||r(e))o=e,t=f(e),n=m(e);else{if(!d.call(e,"name"))throw new Error((e=>`Missing ${e} property in key`)("name"));const r=e.name;if(o=r,d.call(e,"weight")&&(a=e.weight,a<=0))throw new Error((e=>`Property 'weight' in key '${e}' must be a positive integer`)(r));t=f(r),n=m(r),s=e.getFn}return{path:t,id:n,weight:a,src:o,getFn:s}}function f(e){return r(e)?e:e.split(".")}function m(e){return r(e)?e.join("."):e}var b={isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:(e,t)=>e.score===t.score?e.idx{if(l(e))if(t[u]){const d=e[t[u]];if(!l(d))return;if(u===t.length-1&&(i(d)||o(d)||a(d)))n.push(function(e){return null==e?"":function(e){if("string"==typeof e)return e;let t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}(d));else if(r(d)){s=!0;for(let e=0,n=d.length;e{this._keysMap[e.id]=t})}create(){!this.isCreated&&this.docs.length&&(this.isCreated=!0,i(this.docs[0])?this.docs.forEach((e,t)=>{this._addString(e,t)}):this.docs.forEach((e,t)=>{this._addObject(e,t)}),this.norm.clear())}add(e){const t=this.size();i(e)?this._addString(e,t):this._addObject(e,t)}removeAt(e){this.records.splice(e,1);for(let t=e,n=this.size();t{let a=t.getFn?t.getFn(e):this.getFn(e,t.path);if(l(a))if(r(a)){let e=[];const t=[{nestedArrIndex:-1,value:a}];for(;t.length;){const{nestedArrIndex:n,value:o}=t.pop();if(l(o))if(i(o)&&!c(o)){let t={v:o,i:n,n:this.norm.get(o)};e.push(t)}else r(o)&&o.forEach((e,n)=>{t.push({nestedArrIndex:n,value:e})})}n.$[o]=e}else if(i(a)&&!c(a)){let e={v:a,n:this.norm.get(a)};n.$[o]=e}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}}function y(e,t,{getFn:n=b.getFn,fieldNormWeight:r=b.fieldNormWeight}={}){const i=new v({getFn:n,fieldNormWeight:r});return i.setKeys(e.map(h)),i.setSources(t),i.create(),i}function A(e,{errors:t=0,currentLocation:n=0,expectedLocation:r=0,distance:i=b.distance,ignoreLocation:o=b.ignoreLocation}={}){const a=t/e.length;if(o)return a;const s=Math.abs(r-n);return i?a+s/i:s?1:a}function M(e,t,n,{location:r=b.location,distance:i=b.distance,threshold:o=b.threshold,findAllMatches:a=b.findAllMatches,minMatchCharLength:s=b.minMatchCharLength,includeMatches:l=b.includeMatches,ignoreLocation:c=b.ignoreLocation}={}){if(t.length>32)throw new Error((e=>`Pattern length exceeds max of ${e}.`)(32));const u=t.length,d=e.length,p=Math.max(0,Math.min(r,d));let h=o,f=p;const m=s>1||l,g=m?Array(d):[];let v;for(;(v=e.indexOf(t,f))>-1;){let e=A(t,{currentLocation:v,expectedLocation:p,distance:i,ignoreLocation:c});if(h=Math.min(e,h),f=v+u,m){let e=0;for(;e=l;o-=1){let a=o-1,s=n[e.charAt(a)];if(m&&(g[a]=+!!s),v[o]=(v[o+1]<<1|1)&s,r&&(v[o]|=(y[o+1]|y[o])<<1|1|y[o+1]),v[o]&w&&(M=A(t,{errors:r,currentLocation:a,expectedLocation:p,distance:i,ignoreLocation:c}),M<=h)){if(h=M,f=a,f<=p)break;l=Math.max(1,2*p-f)}}if(A(t,{errors:r+1,currentLocation:p,expectedLocation:p,distance:i,ignoreLocation:c})>h)break;y=v}const O={isMatch:f>=0,score:Math.max(.001,M)};if(m){const e=function(e=[],t=b.minMatchCharLength){let n=[],r=-1,i=-1,o=0;for(let a=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}(g,s);e.length?l&&(O.indices=e):O.isMatch=!1}return O}function _(e){let t={};for(let n=0,r=e.length;n{this.chunks.push({pattern:e,alphabet:_(e),startIndex:t})},u=this.pattern.length;if(u>32){let e=0;const t=u%32,n=u-t;for(;e{const{isMatch:f,score:m,indices:b}=M(e,t,p,{location:r+h,distance:i,threshold:o,findAllMatches:a,minMatchCharLength:s,includeMatches:n,ignoreLocation:l});f&&(d=!0),u+=m,f&&b&&(c=[...c,...b])});let p={isMatch:d,score:d?u/this.chunks.length:1};return d&&n&&(p.indices=c),p}}class O{constructor(e){this.pattern=e}static isMultiMatch(e){return x(e,this.multiRegex)}static isSingleMatch(e){return x(e,this.singleRegex)}search(){}}function x(e,t){const n=e.match(t);return n?n[1]:null}class z extends O{constructor(e,{location:t=b.location,threshold:n=b.threshold,distance:r=b.distance,includeMatches:i=b.includeMatches,findAllMatches:o=b.findAllMatches,minMatchCharLength:a=b.minMatchCharLength,isCaseSensitive:s=b.isCaseSensitive,ignoreLocation:l=b.ignoreLocation}={}){super(e),this._bitapSearch=new w(e,{location:t,threshold:n,distance:r,includeMatches:i,findAllMatches:o,minMatchCharLength:a,isCaseSensitive:s,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(e){return this._bitapSearch.searchIn(e)}}class C extends O{constructor(e){super(e)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(e){let t,n=0;const r=[],i=this.pattern.length;for(;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);const o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}const S=[class extends O{constructor(e){super(e)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(e){const t=e===this.pattern;return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}},C,class extends O{constructor(e){super(e)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(e){const t=e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,this.pattern.length-1]}}},class extends O{constructor(e){super(e)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(e){const t=!e.startsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}},class extends O{constructor(e){super(e)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(e){const t=!e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}},class extends O{constructor(e){super(e)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(e){const t=e.endsWith(this.pattern);return{isMatch:t,score:t?0:1,indices:[e.length-this.pattern.length,e.length-1]}}},class extends O{constructor(e){super(e)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(e){const t=-1===e.indexOf(this.pattern);return{isMatch:t,score:t?0:1,indices:[0,e.length-1]}}},z],T=S.length,k=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/;const L=new Set([z.type,C.type]);class E{constructor(e,{isCaseSensitive:t=b.isCaseSensitive,includeMatches:n=b.includeMatches,minMatchCharLength:r=b.minMatchCharLength,ignoreLocation:i=b.ignoreLocation,findAllMatches:o=b.findAllMatches,location:a=b.location,threshold:s=b.threshold,distance:l=b.distance}={}){this.query=null,this.options={isCaseSensitive:t,includeMatches:n,minMatchCharLength:r,findAllMatches:o,ignoreLocation:i,location:a,threshold:s,distance:l},this.pattern=t?e:e.toLowerCase(),this.query=function(e,t={}){return e.split("|").map(e=>{let n=e.trim().split(k).filter(e=>e&&!!e.trim()),r=[];for(let e=0,i=n.length;e!(!e[D]&&!e[N]),I=e=>({[D]:Object.keys(e).map(t=>({[t]:e[t]}))});function F(e,t,{auto:n=!0}={}){const o=e=>{let a=Object.keys(e);const l=(e=>!!e[j])(e);if(!l&&a.length>1&&!q(e))return o(I(e));if((e=>!r(e)&&s(e)&&!q(e))(e)){const r=l?e[j]:a[0],o=l?e[B]:e[r];if(!i(o))throw new Error((e=>"Invalid value for key "+e)(r));const s={keyId:m(r),pattern:o};return n&&(s.searcher=R(o,t)),s}let c={children:[],operator:a[0]};return a.forEach(t=>{const n=e[t];r(n)&&n.forEach(e=>{c.children.push(o(e))})}),c};return q(e)||(e=I(e)),o(e)}function W(e,t){const n=e.matches;t.matches=[],l(n)&&n.forEach(e=>{if(!l(e.indices)||!e.indices.length)return;const{indices:n,value:r}=e;let i={indices:n,value:r};e.key&&(i.key=e.key.src),e.idx>-1&&(i.refIndex=e.idx),t.matches.push(i)})}function H(e,t){t.score=e.score}class V{constructor(e,t={},n){this.options={...b,...t},this.options.useExtendedSearch,this._keyStore=new p(this.options.keys),this.setCollection(e,n)}setCollection(e,t){if(this._docs=e,t&&!(t instanceof v))throw new Error("Incorrect 'index' type");this._myIndex=t||y(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(e){l(e)&&(this._docs.push(e),this._myIndex.add(e))}remove(e=(()=>!1)){const t=[];for(let n=0,r=this._docs.length;n{let n=1;e.matches.forEach(({key:e,norm:r,score:i})=>{const o=e?e.weight:null;n*=Math.pow(0===i&&o?Number.EPSILON:i,(o||1)*(t?1:r))}),e.score=n})}(c,{ignoreFieldNorm:l}),a&&c.sort(s),o(t)&&t>-1&&(c=c.slice(0,t)),function(e,t,{includeMatches:n=b.includeMatches,includeScore:r=b.includeScore}={}){const i=[];return n&&i.push(W),r&&i.push(H),e.map(e=>{const{idx:n}=e,r={item:t[n],refIndex:n};return i.length&&i.forEach(t=>{t(e,r)}),r})}(c,this._docs,{includeMatches:n,includeScore:r})}_searchStringList(e){const t=R(e,this.options),{records:n}=this._myIndex,r=[];return n.forEach(({v:e,i:n,n:i})=>{if(!l(e))return;const{isMatch:o,score:a,indices:s}=t.searchIn(e);o&&r.push({item:e,idx:n,matches:[{score:a,value:e,norm:i,indices:s}]})}),r}_searchLogical(e){const t=F(e,this.options),n=(e,t,r)=>{if(!e.children){const{keyId:n,searcher:i}=e,o=this._findMatches({key:this._keyStore.get(n),value:this._myIndex.getValueForItemAtKeyId(t,n),searcher:i});return o&&o.length?[{idx:r,item:t,matches:o}]:[]}const i=[];for(let o=0,a=e.children.length;o{if(l(e)){let a=n(t,e,r);a.length&&(i[r]||(i[r]={idx:r,item:e,matches:[]},o.push(i[r])),a.forEach(({matches:e})=>{i[r].matches.push(...e)}))}}),o}_searchObjectList(e){const t=R(e,this.options),{keys:n,records:r}=this._myIndex,i=[];return r.forEach(({$:e,i:r})=>{if(!l(e))return;let o=[];n.forEach((n,r)=>{o.push(...this._findMatches({key:n,value:e[r],searcher:t}))}),o.length&&i.push({idx:r,item:e,matches:o})}),i}_findMatches({key:e,value:t,searcher:n}){if(!l(t))return[];let i=[];if(r(t))t.forEach(({v:t,i:r,n:o})=>{if(!l(t))return;const{isMatch:a,score:s,indices:c}=n.searchIn(t);a&&i.push({score:s,key:e,value:t,idx:r,norm:o,indices:c})});else{const{v:r,n:o}=t,{isMatch:a,score:s,indices:l}=n.searchIn(r);a&&i.push({score:s,key:e,value:r,norm:o,indices:l})}return i}}V.version="6.6.2",V.createIndex=y,V.parseIndex=function(e,{getFn:t=b.getFn,fieldNormWeight:n=b.fieldNormWeight}={}){const{keys:r,records:i}=e,o=new v({getFn:t,fieldNormWeight:n});return o.setKeys(r),o.setIndexRecords(i),o},V.config=b,V.parseQuery=F,function(...e){P.push(...e)}(E)},1291:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=o(n(1)),l=a(n(13)),c=a(n(50)),u=n(22),d=a(n(74)),p=a(n(1292)),h=n(3),f=n(857),m=l.default.div` padding: ${c.default.spacingSmall}; background-color: ${c.default.neutral200}; display: flex; align-items: center; flex-direction: row; margin: ${c.default.spacingSmall} 0 ${c.default.spacingMedium} 0; `,b=(0,l.default)(d.default)` position: relative; top: 2px; `,g=(0,l.default)(p.default).attrs({width:24,height:24,tabIndex:-1})` color: ${c.default.linkColor}; margin: ${c.default.spacingSmall} ${c.default.spacingSmall} ${c.default.spacingSmall} 0; `;t.default=({redirectLink:e,isConverged:t})=>{const n=(0,s.useCallback)(()=>{(0,f.trackEvent)({type:"page.interact",data:{action:"New Data Management Experience: Clicking on DMX link in the settings dropdown menu",app:u.app,custom:{isConverged:t.toString()}}})},[t]);return s.default.createElement(m,{"data-role":"data-manager-experience-menu-content-wrapper"},s.default.createElement(g,null),s.default.createElement(b,{onClick:n,to:e,openInNewContext:!0},(0,h._)("Data Management experience")))}},1292:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=375)}({0:function(e,t){e.exports=n(1)},1:function(e,t){e.exports=n(103)},2:function(e,t){e.exports=n(104)},375:function(e,t,n){"use strict";n.r(t);var r=n(0),i=n.n(r),o=n(1),a=n.n(o),s=n(2);function l(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=new Map;c.set("outlined",(function(){return i.a.createElement(i.a.Fragment,null,i.a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2C9.98341 2 8.1144 2.29032 6.71392 2.79049C6.01803 3.03902 5.38405 3.35829 4.90494 3.76283C4.43048 4.16346 4 4.74631 4 5.5V17.5C4 19.0493 5.22998 20.1828 6.60304 20.8693C8.03591 21.5857 9.94542 22 12 22C13.1917 22 14.3345 21.8606 15.3639 21.6038L13.6539 19.8938C13.1308 19.9626 12.5766 20 12 20C10.1886 20 8.5981 19.6308 7.49747 19.0804C6.33702 18.5002 6 17.8837 6 17.5V7.91726C6.22738 8.02403 6.46674 8.12123 6.71392 8.20951C8.1144 8.70968 9.98341 9 12 9C14.0166 9 15.8856 8.70968 17.2861 8.20951C17.5333 8.12123 17.7726 8.02403 18 7.91726V14.7927L20 16.7927V5.5C20 4.74631 19.5695 4.16346 19.0951 3.76283C18.616 3.35829 17.982 3.03902 17.2861 2.79049C15.8856 2.29032 14.0166 2 12 2ZM6.19525 5.29094C6.07042 5.39634 6.02321 5.46681 6.00633 5.5C6.02321 5.53319 6.07042 5.60366 6.19525 5.70906C6.42458 5.9027 6.81573 6.12215 7.38659 6.32603C8.5196 6.73067 10.1506 7 12 7C13.8494 7 15.4804 6.73067 16.6134 6.32603C17.1843 6.12215 17.5754 5.9027 17.8048 5.70906C17.9296 5.60366 17.9768 5.53319 17.9937 5.5C17.9768 5.46681 17.9296 5.39634 17.8048 5.29094C17.5754 5.0973 17.1843 4.87785 16.6134 4.67397C15.4804 4.26933 13.8494 4 12 4C10.1506 4 8.5196 4.26933 7.38659 4.67397C6.81573 4.87785 6.42458 5.0973 6.19525 5.29094Z"}),i.a.createElement("path",{d:"M20.4647 20.179C20.4427 20.0976 20.3997 20.0208 20.3358 19.9569L16.0356 15.657C15.9177 15.5391 15.8684 15.3705 15.89 15.2051C16.0215 14.1984 15.805 13.0574 15.2404 12.4927C14.7069 11.9593 13.6589 11.7365 12.6957 11.8245C12.3216 11.8587 12.2049 12.3 12.4705 12.5657L13.7024 13.7975C13.8977 13.9928 13.8977 14.3094 13.7024 14.5047L12.9881 15.219C12.7928 15.4142 12.4763 15.4142 12.281 15.219L11.0491 13.987C10.7834 13.7214 10.3421 13.8381 10.3079 14.2122C10.2199 15.1754 10.4427 16.2235 10.9761 16.757C11.5408 17.3216 12.6818 17.5381 13.6885 17.4066C13.8539 17.385 14.0225 17.4343 14.1404 17.5522L18.4403 21.8521C18.6356 22.0474 18.9521 22.0474 19.1474 21.8521L20.3355 20.664C20.4668 20.5327 20.51 20.3462 20.4647 20.179Z"}))})),c.set("filled",(function(){return i.a.createElement(i.a.Fragment,null,i.a.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2C9.98341 2 8.1144 2.29032 6.71392 2.79049C6.01803 3.03902 5.38405 3.35829 4.90494 3.76283C4.43048 4.16346 4 4.74631 4 5.5V17.5C4 19.0493 5.22998 20.1828 6.60304 20.8693C8.03591 21.5857 9.94542 22 12 22C13.1915 22 14.3343 21.8607 15.3635 21.6039L13.2027 19.4431C12.708 19.4502 12.2065 19.4017 11.7278 19.2941C11.0338 19.1381 10.2066 18.816 9.56174 18.1711C8.5597 17.1691 8.28906 15.6924 8.28906 14.6248C8.28906 13.5572 8.5597 12.0805 9.56174 11.0785C10.5638 10.0764 12.0405 9.80579 13.1081 9.80579C14.1757 9.80579 15.6524 10.0764 16.6544 11.0785C17.2993 11.7233 17.6214 12.5505 17.7774 13.2445C17.885 13.7232 17.9335 14.2247 17.9264 14.7195L20 16.7931V5.5C20 4.74631 19.5695 4.16346 19.0951 3.76283C18.616 3.35829 17.982 3.03902 17.2861 2.79049C15.8856 2.29032 14.0166 2 12 2ZM6.19525 5.29094C6.07042 5.39634 6.02321 5.46681 6.00633 5.5C6.02321 5.53319 6.07042 5.60366 6.19525 5.70906C6.42458 5.9027 6.81573 6.12215 7.38659 6.32603C8.5196 6.73067 10.1506 7 12 7C13.8494 7 15.4804 6.73067 16.6134 6.32603C17.1843 6.12215 17.5754 5.9027 17.8048 5.70906C17.9296 5.60366 17.9768 5.53319 17.9937 5.5C17.9768 5.46681 17.9296 5.39634 17.8048 5.29094C17.5754 5.0973 17.1843 4.87785 16.6134 4.67397C15.4804 4.26933 13.8494 4 12 4C10.1506 4 8.5196 4.26933 7.38659 4.67397C6.81573 4.87785 6.42458 5.0973 6.19525 5.29094Z"}),i.a.createElement("path",{d:"M13.688 17.4065C12.6813 17.5381 11.5403 17.3215 10.9757 16.7569C10.4422 16.2234 10.2194 15.1753 10.3075 14.2122C10.3417 13.838 10.7829 13.7213 11.0486 13.987L12.2805 15.2189C12.4758 15.4142 12.7924 15.4142 12.9876 15.2189L13.7019 14.5046C13.8972 14.3093 13.8972 13.9928 13.7019 13.7975L12.47 12.5656C12.2044 12.2999 12.3211 11.8587 12.6952 11.8245C13.6584 11.7365 14.7064 11.9592 15.2399 12.4927C15.8045 13.0573 16.021 14.1983 15.8895 15.2051C15.8679 15.3704 15.9172 15.539 16.0351 15.657L20.335 19.9568C20.5303 20.1521 20.5303 20.4687 20.335 20.6639L19.1469 21.852C18.9517 22.0473 18.6351 22.0473 18.4398 21.852L14.1399 17.5522C14.022 17.4343 13.8534 17.3849 13.688 17.4065Z"}))}));var u=["default","outlined","filled"],d=function(e){return"default"===e||e&&!function(e){return u.indexOf(e)>=0}(e)?"outlined":e},p=function(e){var t=e.children,n=e.variant,o=l(e,["children","variant"]),u=d(n),p="cylinderwrench-".concat(u),h=Object(r.useContext)(s.IconContext),f=c.get(u);if(h&&f){var m=h.toRender;if((0,h.addIcon)(p,f()),!m)return null}return i.a.createElement(a.a,o,t,h?i.a.createElement("use",{href:"#".concat(p)}):!!f&&f())};p.defaultProps={variant:"default"},t.default=p}})},1293:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=207)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},10:function(e,t){e.exports=n(82)},120:function(e,t){e.exports=n(1294)},2:function(e,t){e.exports=n(1)},207:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return j})),n.d(t,"Panel",(function(){return x}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(10),l=n.n(s),c=n(9),u=n.n(c),d=n(5),p=n.n(d),h=n(8),f=n(120),m=n.n(f),b=n(3),g=n.n(b),v=n(0),y=g.a.div.withConfig({displayName:"TabLayoutStyles__StyledPanel",componentId:"lf0quy-0"})(["",""],v.mixins.reset("block")),A=g.a.div.withConfig({displayName:"TabLayoutStyles__Styled",componentId:"lf0quy-1"})(["text-align:center;margin-top:",";",""],v.variables.spacingLarge,(function(e){return"vertical"===e.$layout&&Object(b.css)(["display:flex;& > [role='tablist']{flex:0 0 auto;}& > ","{width:100%;}"],y)}));function M(){return(M=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var w={children:a.a.node,count:a.a.number,disabled:a.a.bool,elementRef:a.a.oneOfType([a.a.func,a.a.object]),icon:a.a.node,label:a.a.oneOfType([a.a.string,a.a.element]),panelId:a.a.string.isRequired,tooltip:a.a.node};function O(e){var t=e.children,n=(e.disabled,e.elementRef),r=e.panelId,o=_(e,["children","disabled","elementRef","panelId"]);return i.a.createElement(y,M({"data-test-panel-id":r,"data-test":"panel",ref:n,role:"tabpanel"},p()(o,["icon","label","tooltip"])),t)}O.propTypes=w;var x=O;function z(e){return(z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function C(){return(C=Object.assign||function(e){for(var t=1;t &&{background-color:",";",";}",":hover:not([disabled]) > &&{",";}"],Object(u.pick)({enterprise:Object(l.css)(["background:",";"],u.variables.borderLightColor)}),Object(u.pickVariant)("$layout",{horizontal:Object(l.css)(["height:0;box-sizing:border-box;width:",";"," transition:height 0.2s;"],Object(u.pick)({enterprise:Object(l.css)(["calc(100% - 20px * 2)"]),prisma:{comfortable:Object(l.css)(["calc(100% - 20px * 2)"]),compact:Object(l.css)(["calc(100% - 16px * 2)"])}}),Object(u.pick)({enterprise:Object(l.css)(["bottom:-1px;"])})),vertical:{enterprise:Object(l.css)(["width:0;height:calc(100% - 10px * 2);top:10px;right:-1px;transition:width 0.2s;"]),prisma:Object(l.css)(["width:1px;height:calc(100% - 10px * 2);top:10px;right:-1px;transition:width 0.2s;box-sizing:border-box;"])}}),Object(u.pick)({enterprise:u.variables.accentColor,prisma:u.variables.contentColorActive}),Object(u.pickVariant)("$layout",{horizontal:{enterprise:Object(l.css)(["height:3px;"]),prisma:Object(u.pickVariant)("$withUnderline",{true:Object(l.css)(["height:1px;"])})},vertical:{enterprise:Object(l.css)(["width:3px;"]),prisma:Object(l.css)(["width:1px;"])}}),y,Object(u.pickVariant)("$layout",{horizontal:{enterprise:Object(l.css)(["height:3px;"])},vertical:{enterprise:Object(l.css)(["width:3px;"])}})),M=c.a.span.withConfig({displayName:"TabStyles__StyledIcon",componentId:"sc-1ry8mzj-2"})(["",";"],Object(u.pickVariant)("$iconSize",{inline:Object(l.css)([""," text-align:left;padding-right:",";> svg{transform:translateY(-1px);}"],Object(u.pick)({prisma:Object(l.css)(["display:inline-block;width:16px;height:16px;"])}),Object(u.pick)({enterprise:"0.4em",prisma:"8px"})),small:Object(l.css)(["font-size:24px;height:24px;text-align:center;display:block;padding:4px 0;"]),large:Object(l.css)(["font-size:48px;height:48px;text-align:center;display:block;padding:8px 0 0;"])})),_=c.a.div.withConfig({displayName:"TabStyles__StyledLabel",componentId:"sc-1ry8mzj-3"})(["overflow:hidden;text-overflow:ellipsis;min-width:10px;margin:",";"],Object(u.pick)({enterprise:"0",prisma:{comfortable:"16px 0",compact:"10px 0"}})),w=c.a.div.withConfig({displayName:"TabStyles__StyledCount",componentId:"sc-1ry8mzj-4"})([""," display:inline-block;border-radius:18px;color:",";font-size:",";line-height:10px;padding:4px 6px;margin-left:",";"," &[disabled]{background:",";color:",";}"],u.mixins.reset("inlne-block"),u.variables.contentColorDefault,Object(u.pick)({enterprise:"inherit",prisma:"10px"}),Object(u.pick)({enterprise:"0",prisma:"8px"}),Object(u.pick)({enterprise:Object(l.css)(["&::before{content:'(';}&::after{content:')';}"]),prisma:Object(l.css)(["background:",";"],u.variables.neutral100)}),u.variables.interactiveColorBackgroundDisabled,u.variables.contentColorDisabled),O=c.a.div.withConfig({displayName:"TabStyles__StyledTooltipContent",componentId:"sc-1ry8mzj-5"})(["padding:8px;font-size:",";"],u.variables.fontSizeSmall),x=Object(r.createContext)({});x.displayName="TabBar";var z=x,C=n(11);function S(e){return(S="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function T(){return(T=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function L(e,t){for(var n=0;nt?"".concat(t,"+"):e}(r,c):r)),i.a.createElement(A,{$layout:D,$withUnderline:"navigation"===x}),!o&&d&&i.a.createElement(f.a,{anchor:m,appearance:"inverted",closeReasons:[],defaultPlacement:"vertical"===D?"right":"above",id:this.popoverId,open:!!m&&g},i.a.createElement(O,null,d)),d&&i.a.createElement(b.a,null,d))}}])&&L(t.prototype,n),r&&L(t,r),a}(r.Component);j(q,"propTypes",B),j(q,"defaultProps",{active:!1}),j(q,"contextType",z);var I=q,F=n(57);function W(){return(W=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var V={autoActivate:a.a.bool,activeTabId:a.a.string,appearance:a.a.oneOf(["navigation","context"]),children:a.a.node,disabled:a.a.bool,elementRef:a.a.oneOfType([a.a.func,a.a.object]),iconSize:a.a.oneOf(["inline","small","large"]),layout:a.a.oneOf(["horizontal","vertical"]),onChange:a.a.func,tabWidth:a.a.number};function U(e){var t=e.activeTabId,n=e.autoActivate,o=e.appearance,a=void 0===o?"navigation":o,l=e.children,c=e.disabled,u=void 0!==c&&c,p=e.elementRef,h=e.iconSize,f=void 0===h?"inline":h,m=e.layout,b=void 0===m?"horizontal":m,g=e.onChange,v=e.tabWidth,y=H(e,["activeTabId","autoActivate","appearance","children","disabled","elementRef","iconSize","layout","onChange","tabWidth"]),A=Object(r.useRef)(0),M=[],_=Object(r.useMemo)((function(){return"vertical"===b?"down":"right"}),[b]),w=Object(r.useMemo)((function(){return"vertical"===b?"up":"left"}),[b]),O=0,x=r.Children.toArray(l).filter(r.isValidElement).map((function(e){if("string"==typeof e.type||e.type.name!==I.name)return e;var n=i.a.createRef();M.push(n);var o={active:t===e.props.tabId,tabKey:O,ref:n};return O+=1,Object(r.cloneElement)(e,o)})),C=v&&v>50?v:null;return i.a.createElement(d,W({"data-tab-layout":b,"data-test-active-tab-id":t,"data-test":"tab-bar",role:"tablist",ref:p,$layout:b,$withUnderline:"navigation"===a,onKeyDown:function(e){var t,n,r=Object(s.keycode)(e.nativeEvent);(r===_?t=Object(F.a)(M,A.current,A.current+1):r===w?t=Object(F.b)(M,A.current,A.current-1):"home"===r?t=Object(F.a)(M,A.current,0):"end"===r&&(t=Object(F.b)(M,A.current,M.length-1)),null!=t)&&(null===(n=t.current)||void 0===n||n.focus(),e.preventDefault())}},y),i.a.createElement(z.Provider,{value:{appearance:a,disabled:u,iconSize:f,layout:b,onClick:function(e,t){null==g||g(e,{selectedTabId:t.tabId})},onFocus:function(e,t){var r=t.tabKey;null!=r&&(A.current=r),n&&(null==g||g(e,{selectedTabId:t.tabId}))},width:C}},x))}U.propTypes=V,U.Tab=I;var Y=U},2:function(e,t){e.exports=n(1)},21:function(e,t){e.exports=n(194)},3:function(e,t){e.exports=n(13)},57:function(e,t,n){"use strict";function r(e,t,n){for(var r=0;r0;r-=1){var i,o=(r+n)%e.length;if(!0!==(null===(i=e[o].current)||void 0===i?void 0:i.props.disabled))return e[o]}return e[t]}n.d(t,"a",(function(){return r})),n.d(t,"b",(function(){return i}))},7:function(e,t){e.exports=n(96)},8:function(e,t){e.exports=n(72)}})},1295:function(e,t,n){n(274)(n(1296))},1296:function(e,t){e.exports='/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = "ace";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != "undefined") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== "undefined")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== "string") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error("dropping module because define wasn\\\'t a string.");\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === "string") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === "[object Array]") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require("", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf("!") !== -1) {\n var chunks = moduleName.split("!");\n return normalizeModule(parentId, chunks[0]) + "!" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == ".") {\n var base = parentId.split("/").slice(0, -1).join("/");\n moduleName = base + "/" + moduleName;\n\n while(moduleName.indexOf(".") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, "/").replace(/[^\\/]+\\/\\.\\.\\//, "");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === \'function\') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: \'\',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define("ace/lib/regexp",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\n var real = {\n exec: RegExp.prototype.exec,\n test: RegExp.prototype.test,\n match: String.prototype.match,\n replace: String.prototype.replace,\n split: String.prototype.split\n },\n compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups\n compliantLastIndexIncrement = function () {\n var x = /^/g;\n real.test.call(x, "");\n return !x.lastIndex;\n }();\n\n if (compliantLastIndexIncrement && compliantExecNpcg)\n return;\n RegExp.prototype.exec = function (str) {\n var match = real.exec.apply(this, arguments),\n name, r2;\n if ( typeof(str) == \'string\' && match) {\n if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) {\n r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", ""));\n real.replace.call(str.slice(match.index), r2, function () {\n for (var i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined)\n match[i] = undefined;\n }\n });\n }\n if (this._xregexp && this._xregexp.captureNames) {\n for (var i = 1; i < match.length; i++) {\n name = this._xregexp.captureNames[i - 1];\n if (name)\n match[name] = match[i];\n }\n }\n if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n }\n return match;\n };\n if (!compliantLastIndexIncrement) {\n RegExp.prototype.test = function (str) {\n var match = real.exec.call(this, str);\n if (match && this.global && !match[0].length && (this.lastIndex > match.index))\n this.lastIndex--;\n return !!match;\n };\n }\n\n function getNativeFlags (regex) {\n return (regex.global ? "g" : "") +\n (regex.ignoreCase ? "i" : "") +\n (regex.multiline ? "m" : "") +\n (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3\n (regex.sticky ? "y" : "");\n }\n\n function indexOf (array, item, from) {\n if (Array.prototype.indexOf) // Use the native array method if available\n return array.indexOf(item, from);\n for (var i = from || 0; i < array.length; i++) {\n if (array[i] === item)\n return i;\n }\n return -1;\n }\n\n});\n\nace.define("ace/lib/es5-shim",["require","exports","module"], function(require, exports, module) {\n\nfunction Empty() {}\n\nif (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) { // .length is 1\n var target = this;\n if (typeof target != "function") {\n throw new TypeError("Function.prototype.bind called on incompatible " + target);\n }\n var args = slice.call(arguments, 1); // for normal call\n var bound = function () {\n\n if (this instanceof bound) {\n\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n if(target.prototype) {\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n return bound;\n };\n}\nvar call = Function.prototype.call;\nvar prototypeOfArray = Array.prototype;\nvar prototypeOfObject = Object.prototype;\nvar slice = prototypeOfArray.slice;\nvar _toString = call.bind(prototypeOfObject.toString);\nvar owns = call.bind(prototypeOfObject.hasOwnProperty);\nvar defineGetter;\nvar defineSetter;\nvar lookupGetter;\nvar lookupSetter;\nvar supportsAccessors;\nif ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) {\n defineGetter = call.bind(prototypeOfObject.__defineGetter__);\n defineSetter = call.bind(prototypeOfObject.__defineSetter__);\n lookupGetter = call.bind(prototypeOfObject.__lookupGetter__);\n lookupSetter = call.bind(prototypeOfObject.__lookupSetter__);\n}\nif ([1,2].splice(0).length != 2) {\n if(function() { // test IE < 9 to splice bug - see issue #138\n function makeArray(l) {\n var a = new Array(l+2);\n a[0] = a[1] = 0;\n return a;\n }\n var array = [], lengthBefore;\n \n array.splice.apply(array, makeArray(20));\n array.splice.apply(array, makeArray(26));\n\n lengthBefore = array.length; //46\n array.splice(5, 0, "XXX"); // add one element\n\n lengthBefore + 1 == array.length\n\n if (lengthBefore + 1 == array.length) {\n return true;// has right splice implementation without bugs\n }\n }()) {//IE 6/7\n var array_splice = Array.prototype.splice;\n Array.prototype.splice = function(start, deleteCount) {\n if (!arguments.length) {\n return [];\n } else {\n return array_splice.apply(this, [\n start === void 0 ? 0 : start,\n deleteCount === void 0 ? (this.length - start) : deleteCount\n ].concat(slice.call(arguments, 2)))\n }\n };\n } else {//IE8\n Array.prototype.splice = function(pos, removeCount){\n var length = this.length;\n if (pos > 0) {\n if (pos > length)\n pos = length;\n } else if (pos == void 0) {\n pos = 0;\n } else if (pos < 0) {\n pos = Math.max(length + pos, 0);\n }\n\n if (!(pos+removeCount < length))\n removeCount = length - pos;\n\n var removed = this.slice(pos, pos+removeCount);\n var insert = slice.call(arguments, 2);\n var add = insert.length; \n if (pos === length) {\n if (add) {\n this.push.apply(this, insert);\n }\n } else {\n var remove = Math.min(removeCount, length - pos);\n var tailOldPos = pos + remove;\n var tailNewPos = tailOldPos + add - remove;\n var tailCount = length - tailOldPos;\n var lengthAfterRemove = length - remove;\n\n if (tailNewPos < tailOldPos) { // case A\n for (var i = 0; i < tailCount; ++i) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } else if (tailNewPos > tailOldPos) { // case B\n for (i = tailCount; i--; ) {\n this[tailNewPos+i] = this[tailOldPos+i];\n }\n } // else, add == remove (nothing to do)\n\n if (add && pos === lengthAfterRemove) {\n this.length = lengthAfterRemove; // truncate array\n this.push.apply(this, insert);\n } else {\n this.length = lengthAfterRemove + add; // reserves space\n for (i = 0; i < add; ++i) {\n this[pos+i] = insert[i];\n }\n }\n }\n return removed;\n };\n }\n}\nif (!Array.isArray) {\n Array.isArray = function isArray(obj) {\n return _toString(obj) == "[object Array]";\n };\n}\nvar boxedString = Object("a"),\n splitString = boxedString[0] != "a" || !(0 in boxedString);\n\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function forEach(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n thisp = arguments[1],\n i = -1,\n length = self.length >>> 0;\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(); // TODO message\n }\n\n while (++i < length) {\n if (i in self) {\n fun.call(thisp, self[i], i, object);\n }\n }\n };\n}\nif (!Array.prototype.map) {\n Array.prototype.map = function map(fun /*, thisp*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n length = self.length >>> 0,\n result = Array(length),\n thisp = arguments[1];\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(fun + " is not a function");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self)\n result[i] = fun.call(thisp, self[i], i, object);\n }\n return result;\n };\n}\nif (!Array.prototype.filter) {\n Array.prototype.filter = function filter(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n length = self.length >>> 0,\n result = [],\n value,\n thisp = arguments[1];\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(fun + " is not a function");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self) {\n value = self[i];\n if (fun.call(thisp, value, i, object)) {\n result.push(value);\n }\n }\n }\n return result;\n };\n}\nif (!Array.prototype.every) {\n Array.prototype.every = function every(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(fun + " is not a function");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && !fun.call(thisp, self[i], i, object)) {\n return false;\n }\n }\n return true;\n };\n}\nif (!Array.prototype.some) {\n Array.prototype.some = function some(fun /*, thisp */) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n length = self.length >>> 0,\n thisp = arguments[1];\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(fun + " is not a function");\n }\n\n for (var i = 0; i < length; i++) {\n if (i in self && fun.call(thisp, self[i], i, object)) {\n return true;\n }\n }\n return false;\n };\n}\nif (!Array.prototype.reduce) {\n Array.prototype.reduce = function reduce(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(fun + " is not a function");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError("reduce of empty array with no initial value");\n }\n\n var i = 0;\n var result;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i++];\n break;\n }\n if (++i >= length) {\n throw new TypeError("reduce of empty array with no initial value");\n }\n } while (true);\n }\n\n for (; i < length; i++) {\n if (i in self) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n }\n\n return result;\n };\n}\nif (!Array.prototype.reduceRight) {\n Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) {\n var object = toObject(this),\n self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n object,\n length = self.length >>> 0;\n if (_toString(fun) != "[object Function]") {\n throw new TypeError(fun + " is not a function");\n }\n if (!length && arguments.length == 1) {\n throw new TypeError("reduceRight of empty array with no initial value");\n }\n\n var result, i = length - 1;\n if (arguments.length >= 2) {\n result = arguments[1];\n } else {\n do {\n if (i in self) {\n result = self[i--];\n break;\n }\n if (--i < 0) {\n throw new TypeError("reduceRight of empty array with no initial value");\n }\n } while (true);\n }\n\n do {\n if (i in this) {\n result = fun.call(void 0, result, self[i], i, object);\n }\n } while (i--);\n\n return result;\n };\n}\nif (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) {\n Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) {\n var self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n\n var i = 0;\n if (arguments.length > 1) {\n i = toInteger(arguments[1]);\n }\n i = i >= 0 ? i : Math.max(0, length + i);\n for (; i < length; i++) {\n if (i in self && self[i] === sought) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) {\n Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) {\n var self = splitString && _toString(this) == "[object String]" ?\n this.split("") :\n toObject(this),\n length = self.length >>> 0;\n\n if (!length) {\n return -1;\n }\n var i = length - 1;\n if (arguments.length > 1) {\n i = Math.min(i, toInteger(arguments[1]));\n }\n i = i >= 0 ? i : length - Math.abs(i);\n for (; i >= 0; i--) {\n if (i in self && sought === self[i]) {\n return i;\n }\n }\n return -1;\n };\n}\nif (!Object.getPrototypeOf) {\n Object.getPrototypeOf = function getPrototypeOf(object) {\n return object.__proto__ || (\n object.constructor ?\n object.constructor.prototype :\n prototypeOfObject\n );\n };\n}\nif (!Object.getOwnPropertyDescriptor) {\n var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " +\n "non-object: ";\n Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) {\n if ((typeof object != "object" && typeof object != "function") || object === null)\n throw new TypeError(ERR_NON_OBJECT + object);\n if (!owns(object, property))\n return;\n\n var descriptor, getter, setter;\n descriptor = { enumerable: true, configurable: true };\n if (supportsAccessors) {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n\n var getter = lookupGetter(object, property);\n var setter = lookupSetter(object, property);\n object.__proto__ = prototype;\n\n if (getter || setter) {\n if (getter) descriptor.get = getter;\n if (setter) descriptor.set = setter;\n return descriptor;\n }\n }\n descriptor.value = object[property];\n return descriptor;\n };\n}\nif (!Object.getOwnPropertyNames) {\n Object.getOwnPropertyNames = function getOwnPropertyNames(object) {\n return Object.keys(object);\n };\n}\nif (!Object.create) {\n var createEmpty;\n if (Object.prototype.__proto__ === null) {\n createEmpty = function () {\n return { "__proto__": null };\n };\n } else {\n createEmpty = function () {\n var empty = {};\n for (var i in empty)\n empty[i] = null;\n empty.constructor =\n empty.hasOwnProperty =\n empty.propertyIsEnumerable =\n empty.isPrototypeOf =\n empty.toLocaleString =\n empty.toString =\n empty.valueOf =\n empty.__proto__ = null;\n return empty;\n }\n }\n\n Object.create = function create(prototype, properties) {\n var object;\n if (prototype === null) {\n object = createEmpty();\n } else {\n if (typeof prototype != "object")\n throw new TypeError("typeof prototype["+(typeof prototype)+"] != \'object\'");\n var Type = function () {};\n Type.prototype = prototype;\n object = new Type();\n object.__proto__ = prototype;\n }\n if (properties !== void 0)\n Object.defineProperties(object, properties);\n return object;\n };\n}\n\nfunction doesDefinePropertyWork(object) {\n try {\n Object.defineProperty(object, "sentinel", {});\n return "sentinel" in object;\n } catch (exception) {\n }\n}\nif (Object.defineProperty) {\n var definePropertyWorksOnObject = doesDefinePropertyWork({});\n var definePropertyWorksOnDom = typeof document == "undefined" ||\n doesDefinePropertyWork(document.createElement("div"));\n if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) {\n var definePropertyFallback = Object.defineProperty;\n }\n}\n\nif (!Object.defineProperty || definePropertyFallback) {\n var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: ";\n var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: "\n var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " +\n "on this javascript engine";\n\n Object.defineProperty = function defineProperty(object, property, descriptor) {\n if ((typeof object != "object" && typeof object != "function") || object === null)\n throw new TypeError(ERR_NON_OBJECT_TARGET + object);\n if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null)\n throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor);\n if (definePropertyFallback) {\n try {\n return definePropertyFallback.call(Object, object, property, descriptor);\n } catch (exception) {\n }\n }\n if (owns(descriptor, "value")) {\n\n if (supportsAccessors && (lookupGetter(object, property) ||\n lookupSetter(object, property)))\n {\n var prototype = object.__proto__;\n object.__proto__ = prototypeOfObject;\n delete object[property];\n object[property] = descriptor.value;\n object.__proto__ = prototype;\n } else {\n object[property] = descriptor.value;\n }\n } else {\n if (!supportsAccessors)\n throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED);\n if (owns(descriptor, "get"))\n defineGetter(object, property, descriptor.get);\n if (owns(descriptor, "set"))\n defineSetter(object, property, descriptor.set);\n }\n\n return object;\n };\n}\nif (!Object.defineProperties) {\n Object.defineProperties = function defineProperties(object, properties) {\n for (var property in properties) {\n if (owns(properties, property))\n Object.defineProperty(object, property, properties[property]);\n }\n return object;\n };\n}\nif (!Object.seal) {\n Object.seal = function seal(object) {\n return object;\n };\n}\nif (!Object.freeze) {\n Object.freeze = function freeze(object) {\n return object;\n };\n}\ntry {\n Object.freeze(function () {});\n} catch (exception) {\n Object.freeze = (function freeze(freezeObject) {\n return function freeze(object) {\n if (typeof object == "function") {\n return object;\n } else {\n return freezeObject(object);\n }\n };\n })(Object.freeze);\n}\nif (!Object.preventExtensions) {\n Object.preventExtensions = function preventExtensions(object) {\n return object;\n };\n}\nif (!Object.isSealed) {\n Object.isSealed = function isSealed(object) {\n return false;\n };\n}\nif (!Object.isFrozen) {\n Object.isFrozen = function isFrozen(object) {\n return false;\n };\n}\nif (!Object.isExtensible) {\n Object.isExtensible = function isExtensible(object) {\n if (Object(object) === object) {\n throw new TypeError(); // TODO message\n }\n var name = \'\';\n while (owns(object, name)) {\n name += \'?\';\n }\n object[name] = true;\n var returnValue = owns(object, name);\n delete object[name];\n return returnValue;\n };\n}\nif (!Object.keys) {\n var hasDontEnumBug = true,\n dontEnums = [\n "toString",\n "toLocaleString",\n "valueOf",\n "hasOwnProperty",\n "isPrototypeOf",\n "propertyIsEnumerable",\n "constructor"\n ],\n dontEnumsLength = dontEnums.length;\n\n for (var key in {"toString": null}) {\n hasDontEnumBug = false;\n }\n\n Object.keys = function keys(object) {\n\n if (\n (typeof object != "object" && typeof object != "function") ||\n object === null\n ) {\n throw new TypeError("Object.keys called on a non-object");\n }\n\n var keys = [];\n for (var name in object) {\n if (owns(object, name)) {\n keys.push(name);\n }\n }\n\n if (hasDontEnumBug) {\n for (var i = 0, ii = dontEnumsLength; i < ii; i++) {\n var dontEnum = dontEnums[i];\n if (owns(object, dontEnum)) {\n keys.push(dontEnum);\n }\n }\n }\n return keys;\n };\n\n}\nif (!Date.now) {\n Date.now = function now() {\n return new Date().getTime();\n };\n}\nvar ws = "\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003" +\n "\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028" +\n "\\u2029\\uFEFF";\nif (!String.prototype.trim || ws.trim()) {\n ws = "[" + ws + "]";\n var trimBeginRegexp = new RegExp("^" + ws + ws + "*"),\n trimEndRegexp = new RegExp(ws + ws + "*$");\n String.prototype.trim = function trim() {\n return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, "");\n };\n}\n\nfunction toInteger(n) {\n n = +n;\n if (n !== n) { // isNaN\n n = 0;\n } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) {\n n = (n > 0 || -1) * Math.floor(Math.abs(n));\n }\n return n;\n}\n\nfunction isPrimitive(input) {\n var type = typeof input;\n return (\n input === null ||\n type === "undefined" ||\n type === "boolean" ||\n type === "number" ||\n type === "string"\n );\n}\n\nfunction toPrimitive(input) {\n var val, valueOf, toString;\n if (isPrimitive(input)) {\n return input;\n }\n valueOf = input.valueOf;\n if (typeof valueOf === "function") {\n val = valueOf.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n toString = input.toString;\n if (typeof toString === "function") {\n val = toString.call(input);\n if (isPrimitive(val)) {\n return val;\n }\n }\n throw new TypeError();\n}\nvar toObject = function (o) {\n if (o == null) { // this matches both null and undefined\n throw new TypeError("can\'t convert "+o+" to object");\n }\n return Object(o);\n};\n\n});\n\nace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"], function(require, exports, module) {\n"use strict";\n\nrequire("./regexp");\nrequire("./es5-shim");\n\n});\n\nace.define("ace/lib/dom",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nvar XHTML_NS = "http://www.w3.org/1999/xhtml";\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className || "").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += " " + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(" ");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(" ");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n\n if (doc.createStyleSheet && (sheets = doc.styleSheets)) {\n while (index < sheets.length)\n if (sheets[index++].owningElement.id === id) return true;\n } else if ((sheets = doc.getElementsByTagName("style"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id) return true;\n }\n\n return false;\n};\n\nexports.importCssString = function importCssString(cssText, id, doc) {\n doc = doc || document;\n if (id && exports.hasCssString(id, doc))\n return null;\n \n var style;\n \n if (id)\n cssText += "\\n/*# sourceURL=ace/css/" + id + " */";\n \n if (doc.createStyleSheet) {\n style = doc.createStyleSheet();\n style.cssText = cssText;\n if (id)\n style.owningElement.id = id;\n } else {\n style = exports.createElement("style");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n exports.getDocumentHead(doc).appendChild(style);\n }\n};\n\nexports.importCssStylsheet = function(uri, doc) {\n if (doc.createStyleSheet) {\n doc.createStyleSheet(uri);\n } else {\n var link = exports.createElement(\'link\');\n link.rel = \'stylesheet\';\n link.href = uri;\n\n exports.getDocumentHead(doc).appendChild(link);\n }\n};\n\nexports.getInnerWidth = function(element) {\n return (\n parseInt(exports.computedStyle(element, "paddingLeft"), 10) +\n parseInt(exports.computedStyle(element, "paddingRight"), 10) + \n element.clientWidth\n );\n};\n\nexports.getInnerHeight = function(element) {\n return (\n parseInt(exports.computedStyle(element, "paddingTop"), 10) +\n parseInt(exports.computedStyle(element, "paddingBottom"), 10) +\n element.clientHeight\n );\n};\n\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement("ace_inner");\n inner.style.width = "100%";\n inner.style.minWidth = "0px";\n inner.style.height = "200px";\n inner.style.display = "block";\n\n var outer = exports.createElement("ace_outer");\n var style = outer.style;\n\n style.position = "absolute";\n style.left = "-10000px";\n style.overflow = "hidden";\n style.width = "200px";\n style.minWidth = "0px";\n style.height = "150px";\n style.display = "block";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = "scroll";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nif (typeof document == "undefined") {\n exports.importCssString = function() {};\n return;\n}\n\nif (window.pageYOffset !== undefined) {\n exports.getPageScrollTop = function() {\n return window.pageYOffset;\n };\n\n exports.getPageScrollLeft = function() {\n return window.pageXOffset;\n };\n}\nelse {\n exports.getPageScrollTop = function() {\n return document.body.scrollTop;\n };\n\n exports.getPageScrollLeft = function() {\n return document.body.scrollLeft;\n };\n}\n\nif (window.getComputedStyle)\n exports.computedStyle = function(element, style) {\n if (style)\n return (window.getComputedStyle(element, "") || {})[style] || "";\n return window.getComputedStyle(element, "") || {};\n };\nelse\n exports.computedStyle = function(element, style) {\n if (style)\n return element.currentStyle[style];\n return element.currentStyle;\n };\nexports.setInnerHtml = function(el, innerHtml) {\n var element = el.cloneNode(false);//document.createElement("div");\n element.innerHTML = innerHtml;\n el.parentNode.replaceChild(element, el);\n return element;\n};\n\nif ("textContent" in document.documentElement) {\n exports.setInnerText = function(el, innerText) {\n el.textContent = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.textContent;\n };\n}\nelse {\n exports.setInnerText = function(el, innerText) {\n el.innerText = innerText;\n };\n\n exports.getInnerText = function(el) {\n return el.innerText;\n };\n}\n\nexports.getParentWindow = function(document) {\n return document.defaultView || document.parentWindow;\n};\n\n});\n\nace.define("ace/lib/oop",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define("ace/lib/keys",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop"], function(require, exports, module) {\n"use strict";\n\nrequire("./fixoldbrowsers");\n\nvar oop = require("./oop");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: \'Shift\', 17: \'Ctrl\', 18: \'Alt\', 224: \'Meta\'\n },\n\n KEY_MODS: {\n "ctrl": 1, "alt": 2, "option" : 2, "shift": 4,\n "super": 8, "meta": 8, "command": 8, "cmd": 8\n },\n\n FUNCTION_KEYS : {\n 8 : "Backspace",\n 9 : "Tab",\n 13 : "Return",\n 19 : "Pause",\n 27 : "Esc",\n 32 : "Space",\n 33 : "PageUp",\n 34 : "PageDown",\n 35 : "End",\n 36 : "Home",\n 37 : "Left",\n 38 : "Up",\n 39 : "Right",\n 40 : "Down",\n 44 : "Print",\n 45 : "Insert",\n 46 : "Delete",\n 96 : "Numpad0",\n 97 : "Numpad1",\n 98 : "Numpad2",\n 99 : "Numpad3",\n 100: "Numpad4",\n 101: "Numpad5",\n 102: "Numpad6",\n 103: "Numpad7",\n 104: "Numpad8",\n 105: "Numpad9",\n \'-13\': "NumpadEnter",\n 112: "F1",\n 113: "F2",\n 114: "F3",\n 115: "F4",\n 116: "F5",\n 117: "F6",\n 118: "F7",\n 119: "F8",\n 120: "F9",\n 121: "F10",\n 122: "F11",\n 123: "F12",\n 144: "Numlock",\n 145: "Scrolllock"\n },\n\n PRINTABLE_KEYS: {\n 32: \' \', 48: \'0\', 49: \'1\', 50: \'2\', 51: \'3\', 52: \'4\', 53: \'5\',\n 54: \'6\', 55: \'7\', 56: \'8\', 57: \'9\', 59: \';\', 61: \'=\', 65: \'a\',\n 66: \'b\', 67: \'c\', 68: \'d\', 69: \'e\', 70: \'f\', 71: \'g\', 72: \'h\',\n 73: \'i\', 74: \'j\', 75: \'k\', 76: \'l\', 77: \'m\', 78: \'n\', 79: \'o\',\n 80: \'p\', 81: \'q\', 82: \'r\', 83: \'s\', 84: \'t\', 85: \'u\', 86: \'v\',\n 87: \'w\', 88: \'x\', 89: \'y\', 90: \'z\', 107: \'+\', 109: \'-\', 110: \'.\',\n 186: \';\', 187: \'=\', 188: \',\', 189: \'-\', 190: \'.\', 191: \'/\', 192: \'`\',\n 219: \'[\', 220: \'\\\\\',221: \']\', 222: "\'", 111: \'/\', 106: \'*\'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret["return"];\n ret.escape = ret.esc;\n ret.del = ret["delete"];\n ret[173] = \'-\';\n \n (function() {\n var mods = ["cmd", "ctrl", "alt", "shift"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join("-") + "-";\n }\n })();\n\n ret.KEY_MODS[0] = "";\n ret.KEY_MODS[-1] = "input-";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != "string")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define("ace/lib/useragent",["require","exports","module"], function(require, exports, module) {\n"use strict";\nexports.OS = {\n LINUX: "LINUX",\n MAC: "MAC",\n WINDOWS: "WINDOWS"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nif (typeof navigator != "object")\n return;\n\nvar os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase();\nvar ua = navigator.userAgent;\nexports.isWin = (os == "win");\nexports.isMac = (os == "mac");\nexports.isLinux = (os == "linux");\nexports.isIE = \n (navigator.appName == "Microsoft Internet Explorer" || navigator.appName.indexOf("MSAppHost") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === "Gecko";\nexports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv\\:(\\d+)/)||[])[1], 10) < 4;\nexports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]";\nexports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined;\n\nexports.isAIR = ua.indexOf("AdobeAIR") >= 0;\n\nexports.isIPad = ua.indexOf("iPad") >= 0;\n\nexports.isTouchPad = ua.indexOf("TouchPad") >= 0;\n\nexports.isChromeOS = ua.indexOf(" CrOS ") >= 0;\n\n});\n\nace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) {\n"use strict";\n\nvar keys = require("./keys");\nvar useragent = require("./useragent");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nexports.addListener = function(elem, type, callback) {\n if (elem.addEventListener) {\n return elem.addEventListener(type, callback, false);\n }\n if (elem.attachEvent) {\n var wrapper = function() {\n callback.call(elem, window.event);\n };\n callback._wrapper = wrapper;\n elem.attachEvent("on" + type, wrapper);\n }\n};\n\nexports.removeListener = function(elem, type, callback) {\n if (elem.removeEventListener) {\n return elem.removeEventListener(type, callback, false);\n }\n if (elem.detachEvent) {\n elem.detachEvent("on" + type, callback._wrapper || callback);\n }\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n else\n e.cancelBubble = true;\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n else\n e.returnValue = false;\n};\nexports.getButton = function(e) {\n if (e.type == "dblclick")\n return 0;\n if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n if (e.preventDefault) {\n return e.button;\n }\n else {\n return {1:0, 2:2, 4:1}[e.button];\n }\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n exports.removeListener(document, "mousemove", eventHandler, true);\n exports.removeListener(document, "mouseup", onMouseUp, true);\n exports.removeListener(document, "dragstart", onMouseUp, true);\n }\n\n exports.addListener(document, "mousemove", eventHandler, true);\n exports.addListener(document, "mouseup", onMouseUp, true);\n exports.addListener(document, "dragstart", onMouseUp, true);\n \n return onMouseUp;\n};\n\nexports.addTouchMoveListener = function (el, callback) {\n if ("ontouchmove" in el) {\n var startx, starty;\n exports.addListener(el, "touchstart", function (e) {\n var touchObj = e.changedTouches[0];\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n });\n exports.addListener(el, "touchmove", function (e) {\n var factor = 1,\n touchObj = e.changedTouches[0];\n\n e.wheelX = -(touchObj.clientX - startx) / factor;\n e.wheelY = -(touchObj.clientY - starty) / factor;\n\n startx = touchObj.clientX;\n starty = touchObj.clientY;\n\n callback(e);\n });\n } \n};\n\nexports.addMouseWheelListener = function(el, callback) {\n if ("onmousewheel" in el) {\n exports.addListener(el, "mousewheel", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n });\n } else if ("onwheel" in el) {\n exports.addListener(el, "wheel", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n });\n } else {\n exports.addListener(el, "DOMMouseScroll", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n });\n }\n};\n\nexports.addMultiMouseDownListener = function(el, timeouts, eventHandler, callbackName) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: "dblclick",\n 3: "tripleclick",\n 4: "quadclick"\n };\n\n exports.addListener(el, "mousedown", function(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName]("mousedown", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n });\n\n if (useragent.isOldIE) {\n exports.addListener(el, "dblclick", function(e) {\n clicks = 2;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null}, timeouts[clicks - 1] || 600);\n eventHandler[callbackName]("mousedown", e);\n eventHandler[callbackName](eventNames[clicks], e);\n });\n }\n};\n\nvar getModifierHash = useragent.isMac && useragent.isOpera && !("KeyboardEvent" in window)\n ? function(e) {\n return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0);\n }\n : function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n };\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (pressedKeys.OSKey)\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = "location" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n\n if (hashId & 8 && (keyCode === 91 || keyCode === 92)) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = "location" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback) {\n var addListener = exports.addListener;\n if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, "keydown", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n });\n addListener(el, "keypress", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n });\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, "keydown", function(e) {\n var keyCode = e.keyCode;\n pressedKeys[keyCode] = (pressedKeys[keyCode] || 0) + 1;\n if (keyCode == 91 || keyCode == 92) {\n pressedKeys.OSKey = true;\n } else if (pressedKeys.OSKey) {\n if (e.timeStamp - pressedKeys.lastT > 200 && pressedKeys.count == 1)\n resetPressedKeys();\n }\n if (pressedKeys[keyCode] == 1)\n pressedKeys.count++;\n pressedKeys.lastT = e.timeStamp;\n var result = normalizeCommandKeys(callback, e, keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n });\n\n addListener(el, "keypress", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n });\n\n addListener(el, "keyup", function(e) {\n var keyCode = e.keyCode;\n if (!pressedKeys[keyCode]) {\n resetPressedKeys();\n } else {\n pressedKeys.count = Math.max(pressedKeys.count - 1, 0);\n }\n if (keyCode == 91 || keyCode == 92) {\n pressedKeys.OSKey = false;\n }\n pressedKeys[keyCode] = null;\n });\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, "focus", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n pressedKeys.count = 0;\n pressedKeys.lastT = 0;\n}\n\nif (typeof window == "object" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = "zero-timeout-message-" + postMessageId;\n exports.addListener(win, "message", function listener(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n exports.removeListener(win, "message", listener);\n callback();\n }\n });\n win.postMessage(messageName, "*");\n };\n}\n\n\nexports.nextFrame = typeof window == "object" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define("ace/lib/lang",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split("").reverse().join("");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = \'\';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, \'\');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, \'\');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n editor.$blockScrolling++;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle("ace_selecting");\n this.setState("select");\n editor.$blockScrolling--;\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n editor.$blockScrolling++;\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.$blockScrolling--;\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle("ace_selecting");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState("select");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState("selectByWords");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState("selectByLines");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState("selectAll");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n\n var t = ev.domEvent.timeStamp;\n var dt = t - (this.$lastScrollTime||0);\n \n var editor = this.editor;\n var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n if (isScrolable || dt < 200) {\n this.$lastScrollTime = t;\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n \n this.onTouchMove = function (ev) {\n var t = ev.domEvent.timeStamp;\n var dt = t - (this.$lastScrollTime || 0);\n\n var editor = this.editor;\n var isScrolable = editor.renderer.isScrollableBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n if (isScrolable || dt < 200) {\n this.$lastScrollTime = t;\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar dom = require("./lib/dom");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement("div");\n this.$element.className = "ace_tooltip";\n this.$element.style.display = "none";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n dom.setInnerText(this.getElement(), text);\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + "px";\n this.getElement().style.top = y + "px";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = "block";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = "none";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"], function(require, exports, module) {\n"use strict";\nvar dom = require("../lib/dom");\nvar oop = require("../lib/oop");\nvar event = require("../lib/event");\nvar Tooltip = require("../tooltip").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == "foldWidgets")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState("selectByLines");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join("
");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor.on("mousewheel", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = gutter.$cells[editor.session.documentToScreenRow(row, 0)].element;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + "px";\n style.top = rect.bottom + "px";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor.removeEventListener("mousewheel", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, "ace_fold-widget"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, "mouseout", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n });\n \n editor.on("changeSession", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) {\n"use strict";\n\nvar event = require("../lib/event");\nvar useragent = require("../lib/useragent");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module) {\n"use strict";\n\nvar dom = require("../lib/dom");\nvar event = require("../lib/event");\nvar useragent = require("../lib/useragent");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var blankImage = dom.createElement("img");\n blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";\n if (useragent.isOpera)\n blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;";\n\n var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.addEventListener("mousedown", this.onMouseDown.bind(mouseHandler));\n\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove";\n if (useragent.isOpera) {\n editor.container.appendChild(blankImage);\n blankImage.scrollTop = 0;\n }\n dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0);\n if (useragent.isOpera) {\n editor.container.removeChild(blankImage);\n }\n dataTransfer.clearData();\n dataTransfer.setData("Text", editor.session.getTextRange());\n\n isInternal = true;\n this.setState("drag");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == "move")\n editor.session.remove(editor.getSelectionRange());\n editor.renderer.$cursorLayer.setBlinking(true);\n }\n this.editor.unsetStyle("ace_dragging");\n this.editor.renderer.setCursorStyle("");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case "move":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case "copy":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData(\'Text\');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler));\n event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler));\n event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler));\n event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler));\n event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler));\n event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler));\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.$blockScrolling += 1;\n editor.moveCursorToPosition(cursor);\n editor.$blockScrolling -= 1;\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, "mousemove", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.$blockScrolling += 1;\n editor.selection.fromOrientedRange(range);\n editor.$blockScrolling -= 1;\n if (editor.isFocused() && !isInternal)\n editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly());\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, "mousemove", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == \'text/plain\' || type == \'Text\';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = [\'copy\', \'copymove\', \'all\', \'uninitialized\'];\n var moveAllowed = [\'move\', \'copymove\', \'linkmove\', \'all\', \'uninitialized\'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = "uninitialized";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = "none";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = "copy";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = "move";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = "copy";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly());\n this.editor.unsetStyle("ace_dragging");\n this.editor.renderer.setCursorStyle("");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle("ace_dragging");\n var cursorStyle = useragent.isWin ? "default" : "move";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState("dragReady");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == "dragReady") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === "dragWait") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if ("unselectable" in eventTarget)\n eventTarget.unselectable = "on";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState("dragWait");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module) {\n"use strict";\nvar dom = require("./dom");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open(\'GET\', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement(\'script\');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement(\'a\');\n a.href = url;\n return a.href;\n}\n\n});\n\nace.define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != "object" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + "Path"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == "/") {\n component = sep = "";\n }\n if (path && path.slice(-1) != "/")\n path += "/";\n return path + component + sep + base + this.get("suffix");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = require(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n require([moduleName], function(module) {\n exports._emit("load.module", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get("packaged"))\n return afterLoad();\n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n};\ninit(true);function init(packaged) {\n\n options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged);\n\n if (!global.document)\n return "";\n\n var scriptOptions = {};\n var scriptUrl = "";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName("script");\n for (var i=0; i [" + this.end.row + "/" + this.end.column + "]");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == "object") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == "object") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n };\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0)\n else\n return new Range(this.start.row, 0, this.end.row, 0)\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar lang = require("./lib/lang");\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar Range = require("./range").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.lead = this.selectionLead = this.doc.createAnchor(0, 0);\n this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);\n\n var self = this;\n this.lead.on("change", function(e) {\n self._emit("changeCursor");\n if (!self.$isEmpty)\n self._emit("changeSelection");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.selectionAnchor.on("change", function() {\n if (!self.$isEmpty)\n self._emit("changeSelection");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return (this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n ));\n };\n this.isMultiLine = function() {\n if (this.isEmpty()) {\n return false;\n }\n\n return this.getRange().isMultiLine();\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.anchor.setPosition(row, column);\n\n if (this.$isEmpty) {\n this.$isEmpty = false;\n this._emit("changeSelection");\n }\n };\n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n else\n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.shiftSelection = function(columns) {\n if (this.$isEmpty) {\n this.moveCursorTo(this.lead.row, this.lead.column + columns);\n return;\n }\n\n var anchor = this.getSelectionAnchor();\n var lead = this.getSelectionLead();\n\n var isBackwards = this.isBackwards();\n\n if (!isBackwards || anchor.column !== 0)\n this.setSelectionAnchor(anchor.row, anchor.column + columns);\n\n if (isBackwards || lead.column !== 0) {\n this.$moveSelection(function() {\n this.moveCursorTo(lead.row, lead.column + columns);\n });\n }\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.isEmpty())\n return Range.fromPoints(lead, lead);\n\n if (this.isBackwards()) {\n return Range.fromPoints(lead, anchor);\n }\n else {\n return Range.fromPoints(anchor, lead);\n }\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit("changeSelection");\n }\n };\n this.selectAll = function() {\n var lastRow = this.doc.getLength() - 1;\n this.setSelectionAnchor(0, 0);\n this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n if (reverse) {\n this.setSelectionAnchor(range.end.row, range.end.column);\n this.selectTo(range.start.row, range.start.column);\n } else {\n this.setSelectionAnchor(range.start.row, range.start.column);\n this.selectTo(range.end.row, range.end.column);\n }\n if (this.getRange().isEmpty())\n this.$isEmpty = true;\n this.$desiredColumn = null;\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == "undefined") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == "number" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(" ").length-1 == tabSize)\n this.moveCursorBy(0, -tabSize);\n else\n this.moveCursorBy(0, -1);\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(" ").length-1 == tabSize)\n this.moveCursorBy(0, tabSize);\n else\n this.moveCursorBy(0, 1);\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (match = this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n var match;\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (match = this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (match = this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var match, index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (match = this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = "";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = "";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n if (chars === 0) {\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n\n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n if (this.session.lineWidgets && this.session.lineWidgets[docPos.row])\n docPos.row++;\n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n this.session = this.doc = null;\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func.call(null, this);\n var end = this.getCursor();\n return Range.fromPoints(start,end);\n } catch(e) {\n return Range.fromPoints(start,start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else\n data = data[0];\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define("ace/tokenizer",["require","exports","module","ace/config"], function(require, exports, module) {\n"use strict";\n\nvar config = require("./config");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: "text"};\n var flag = "g";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = "gi";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError("number of classes and regexp groups doesn\'t match", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == "function" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return "\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != "string")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push("$");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === "string")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n },\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return "text";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\[(?:\\\\.|[^\\]])*?\\]|\\\\.|\\(\\?[:=!]|(\\()/g,\n function(x, y) {return y ? "(?:" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf("(?=") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != "]";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != "^") src = "^" + src;\n if (src.charAt(src.length - 1) != "$") src += "$";\n \n return new RegExp(src, (flag||"").replace("g", ""));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != "string") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === "#tmp") {\n stack.shift()\n startState = stack.shift()\n }\n } else\n var stack = [];\n\n var currentState = startState || "start";\n var state = this.states[currentState];\n if (!state) {\n currentState = "start";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: ""};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == "string") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError("state doesn\'t exist", currentState);\n currentState = "start";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n break;\n }\n\n if (value) {\n if (typeof type === "string") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: ""};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError("infinite loop with in ace tokenizer", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 2000),\n type: "overflow"\n };\n }\n currentState = "start";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift("#tmp", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"], function(require, exports, module) {\n"use strict";\n\nvar lang = require("../lib/lang");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n "start" : [{\n token : "empty_line",\n regex : \'^$\'\n }, {\n defaultToken : "text"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == "string") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == "function"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? "push" : "unshift"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != "start" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || "start";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + ".end",\n regex: rule.end || rule.start,\n next: "pop"\n });\n rule.token = rule.token + ".start";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != "string")\n stateName = stateName[0] || "";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == "pop") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n if (rule.include || typeof rule == "string") {\n var includeName = rule.include || rule;\n var toInsert = rules[includeName];\n } else if (Array.isArray(rule))\n toInsert = rule;\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n toInsert = null;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n if (ignoreCase)\n a = a.toLowerCase();\n var list = a.split(splitChar || "|");\n for (var i = list.length; i--; )\n keywords[list[i]] = className;\n });\n if (Object.getPrototypeOf(keywords)) {\n keywords.__proto__ = null;\n }\n this.$keywordList = Object.keys(keywords);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken }\n : function(value) {return keywords[value] || defaultToken };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n }\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n }\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n }\n \n this.inherit = function (mode, filter) {\n if (typeof mode === "function") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n }\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {}\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n }\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define("ace/unicode",["require","exports","module"], function(require, exports, module) {\n"use strict";\nexports.packages = {};\n\naddUnicodePackage({\n L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",\n Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",\n Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",\n Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",\n Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",\n M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",\n Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",\n Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",\n Me: "0488048906DE20DD-20E020E2-20E4A670-A672",\n N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",\n Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",\n No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",\n P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",\n Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",\n Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",\n Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",\n Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",\n Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21",\n Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F",\n Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",\n S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",\n Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",\n Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",\n Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",\n So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",\n Z: "002000A01680180E2000-200A20282029202F205F3000",\n Zs: "002000A01680180E2000-200A202F205F3000",\n Zl: "2028",\n Zp: "2029",\n C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",\n Cc: "0000-001F007F-009F",\n Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",\n Co: "E000-F8FF",\n Cs: "D800-DFFF",\n Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"\n});\n\nfunction addUnicodePackage (pack) {\n var codePoint = /\\w{4}/g;\n for (var name in pack)\n exports.packages[name] = pack[name].replace(codePoint, "\\\\u$&");\n};\n\n});\n\nace.define("ace/token_iterator",["require","exports","module"], function(require, exports, module) {\n"use strict";\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n \n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.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(require, exports, module) {\n"use strict";\n\nvar Tokenizer = require("../tokenizer").Tokenizer;\nvar TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;\nvar Behaviour = require("./behaviour").Behaviour;\nvar unicode = require("../unicode");\nvar lang = require("../lib/lang");\nvar TokenIterator = require("../token_iterator").TokenIterator;\nvar Range = require("../range").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n this.$behaviour = new Behaviour();\n};\n\n(function() {\n\n this.tokenRe = new RegExp("^["\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + "\\\\$_]+", "g"\n );\n\n this.nonTokenRe = new RegExp("^(?:[^"\n + unicode.packages.L\n + unicode.packages.Mn + unicode.packages.Mc\n + unicode.packages.Nd\n + unicode.packages.Pc + "\\\\$_]|\\\\s])+", "g"\n );\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules();\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = "";\n this.blockComment = "";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp("^(\\\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")");\n var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\\\s*$");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \'comment\')\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp("^(\\\\s*)(?:" + regexpStart + ") ?");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + " ";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == " ")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == " ")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n return true;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n this.$embeds.push(i);\n this.$modes[i] = new mapping[i]();\n }\n }\n\n var delegations = [\'toggleBlockComment\', \'toggleCommentLines\', \'getNextLineIndent\', \n \'checkOutdent\', \'autoOutdent\', \'transformAction\', \'getCompletions\'];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n } (this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0];\n if (typeof state != "string")\n state = state[0];\n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === "string") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === "object") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: "keyword"\n };\n });\n };\n\n this.$id = "ace/mode/text";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define("ace/apply_delta",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nfunction throwDeltaError(delta, errorText){\n console.log("Invalid Delta:", delta);\n throw "Invalid Delta: " + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != "insert" && delta.action != "remove")\n throwDeltaError(delta, "delta.action must be \'insert\' or \'remove\'");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, "delta.lines must be an Array");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, "delta.start/end must be an present");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, "delta.start must be contained in document");\n var end = delta.end;\n if (delta.action == "remove" && !positionInDocument(docLines, end))\n throwDeltaError(delta, "delta.end must contained in document for \'remove\' actions");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, "delta.range must match delta lines");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || "";\n switch (delta.action) {\n case "insert":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case "remove":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n}\n});\n\nace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == "undefined")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == "insert";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal("change", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.removeEventListener("change", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on("change", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar applyDelta = require("./apply_delta").applyDelta;\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar Range = require("./range").Range;\nvar Anchor = require("./anchor").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [""];\n if (textOrLines.length === 0) {\n this.$lines = [""];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if ("aaa".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, "\\n").split("\\n");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : "\\n";\n this._signal("changeNewLineMode");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case "windows":\n return "\\r\\n";\n case "unix":\n return "\\n";\n default:\n return this.$autoNewLine || "\\n";\n }\n };\n\n this.$autoNewLine = "";\n this.$newLineMode = "auto";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal("changeNewLineMode");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == "\\r\\n" || text == "\\r" || text == "\\n");\n };\n this.getLine = function(row) {\n return this.$lines[row] || "";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || "").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead.");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead.");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, [\\\'\\\', \\\'\\\']) instead.");\n return this.insertMergedLines(position, ["", ""]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: "insert",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([""]);\n column = 0;\n } else {\n lines = [""].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: "insert",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: "remove",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: "remove",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: "remove",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: "remove",\n lines: ["", ""]\n });\n }\n };\n this.replace = function(range, text) {\n if (!range instanceof Range)\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == "insert";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000)\n this.$splitAndapplyLargeDelta(delta, 20000);\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal("change", delta);\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length;\n var row = delta.start.row; \n var column = delta.start.column;\n var from = 0, to = 0;\n do {\n from = to;\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n if (to > l) {\n delta.lines = chunk;\n delta.start.row = row + from;\n delta.start.column = column;\n break;\n }\n chunk.push("");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n } while(true);\n };\n this.revertDelta = function(delta) {\n this.applyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == "insert" ? "remove" : "insert"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: lines[l-1].length};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { \n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal("update", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n }\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == "remove") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || "start";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + "" !== data.state + "") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar lang = require("./lib/lang");\nvar oop = require("./lib/oop");\nvar Range = require("./range").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || "text";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+"" == regExp+"")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : "";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar Range = require("../range").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error("Can\'t add a fold to this FoldLine as it has no connection");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error("Trying to add fold to FoldRow that doesn\'t have a matching row");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: "after"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: "inside"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == "inside"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == "inside")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + ": [" ];\n\n this.folds.forEach(function(fold) {\n ret.push(" " + fold.toString());\n });\n ret.push("]");\n return ret.join("\\n");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module) {\n"use strict";\nvar Range = require("./range").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.call(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on(\'change\', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener(\'change\', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n if (delta.action == "insert"){\n var start = delta.start;\n var end = delta.end;\n } else {\n var end = delta.start;\n var start = delta.end;\n }\n var startRow = start.row;\n var endRow = end.row;\n var lineDif = endRow - startRow;\n\n var colDiff = -start.column + end.column;\n var ranges = this.ranges;\n\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row < startRow)\n continue;\n if (r.start.row > startRow)\n break;\n\n if (r.start.row == startRow && r.start.column >= start.column ) {\n if (r.start.column == start.column && this.$insertRight) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$insertRight) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) { \n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"], function(require, exports, module) {\n"use strict";\n\nvar Range = require("../range").Range;\nvar RangeList = require("../range_list").RangeList;\nvar oop = require("../lib/oop")\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return \'"\' + this.placeholder + \'" \' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n\n if (!this.range.containsRange(fold))\n throw new Error("A fold can\'t intersect already existing fold" + fold.range + this.range);\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n\n if (cmp == 0)\n return afterStart.addSubFold(fold);\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterEnd = this.subFolds[j];\n\n if (cmp == 0)\n throw new Error("A fold can\'t intersect already existing fold" + fold.range + this.range);\n\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"], function(require, exports, module) {\n"use strict";\n\nvar Range = require("../range").Range;\nvar FoldLine = require("./fold_line").FoldLine;\nvar Fold = require("./fold").Fold;\nvar TokenIterator = require("../token_iterator").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var fold = folds[i];\n if (fold.range.contains(row, column)) {\n if (side == 1 && fold.range.isEnd(row, column)) {\n continue;\n } else if (side == -1 && fold.range.isStart(row, column)) {\n continue;\n }\n return fold;\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n if (!(startRow < endRow || \n startRow == endRow && startColumn <= endColumn - 2))\n throw new Error("The range has to be at least 2 characters width");\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal("changeFold", { data: fold, action: "add" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal("changeFold", { data: fold, action: "remove" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n expandInner = true;\n } else if (typeof location == "number")\n range = new Range(location, 0, location, this.getLine(location).length);\n else if ("row" in location)\n range = Range.fromPoints(location, location);\n else\n range = location;\n \n folds = this.getFoldsInRangeList(range);\n if (expandInner) {\n this.removeFolds(folds);\n } else {\n var subFolds = folds;\n while (subFolds.length) {\n this.expandFolds(subFolds);\n subFolds = this.getFoldsInRangeList(range);\n }\n }\n if (folds.length)\n return folds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = "";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = "...";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + "..";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n if (token && /^comment|string/.test(token.type)) {\n var range = new Range();\n var re = new RegExp(token.type.replace(/\\..*/, "\\\\."));\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n do {\n token = iterator.stepForward();\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn\'t hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn\'t support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != "start")\n continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n try {\n var fold = this.addFold("...", range);\n if (fold)\n fold.collapseChildren = depth;\n } catch(e) {}\n }\n }\n };\n this.$foldStyles = {\n "manual": 1,\n "markbegin": 1,\n "markbeginend": 1\n };\n this.$foldStyle = "markbegin";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == "manual")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off(\'change\', this.$updateFoldWidgets);\n this.off(\'tokenizerUpdate\', this.$tokenizerUpdateFoldWidgets);\n this._signal("changeAnnotation");\n \n if (!foldMode || this.$foldStyle == "manual") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on(\'change\', this.$updateFoldWidgets);\n this.on(\'tokenizerUpdate\', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == "start") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += " ace_invalid";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === "end" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold("...", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold("...", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == \'remove\') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar TokenIterator = require("../token_iterator").TokenIterator;\nvar Range = require("../range").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == "") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column-1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n\n this.$brackets = {\n ")": "(",\n "(": ")",\n "]": "[",\n "[": "]",\n "{": "}",\n "}": "{"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n "(\\\\.?" +\n token.type.replace(".", "\\\\.").replace("rparen", ".paren")\n .replace(/\\b(?:end)\\b/, "(?:start|begin|end)")\n + ")+"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n "(\\\\.?" +\n token.type.replace(".", "\\\\.").replace("lparen", ".paren")\n .replace(/\\b(?:start|begin)\\b/, "(?:start|begin|end)")\n + ")+"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.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(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar lang = require("./lib/lang");\nvar config = require("./config");\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar Selection = require("./selection").Selection;\nvar TextMode = require("./mode/text").Mode;\nvar Range = require("./range").Range;\nvar Document = require("./document").Document;\nvar BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer;\nvar SearchHighlight = require("./search_highlight").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.$foldData.toString = function() {\n return this.join("\\n");\n };\n this.on("changeFold", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != "object" || !text.getLine)\n text = new Document(text);\n\n this.setDocument(text);\n this.selection = new Selection(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal("session", this);\n};\n\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.removeListener("change", this.$onChange);\n\n this.doc = doc;\n doc.on("change", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager && !delta.ignore) {\n this.$deltasDoc.push(delta);\n if (removedFolds && removedFolds.length != 0) {\n this.$deltasFold.push({\n action: "removeFolds",\n folds: removedFolds\n });\n }\n\n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal("change", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n this.$deltas = [];\n this.$deltasDoc = [];\n this.$deltasFold = [];\n\n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n\n if (undoManager) {\n var self = this;\n\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n\n if (self.$deltasFold.length) {\n self.$deltas.push({\n group: "fold",\n deltas: self.$deltasFold\n });\n self.$deltasFold = [];\n }\n\n if (self.$deltasDoc.length) {\n self.$deltas.push({\n group: "doc",\n deltas: self.$deltasDoc\n });\n self.$deltasDoc = [];\n }\n\n if (self.$deltas.length > 0) {\n undoManager.execute({\n action: "aceupdate",\n args: [self.$deltas, self],\n merge: self.mergeUndoDeltas\n });\n }\n self.mergeUndoDeltas = false;\n self.$deltas = [];\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n reset: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(" ", this.getTabSize());\n } else {\n return "\\t";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption("useSoftTabs", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption("tabSize", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption("overwrite", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = "";\n this.$decorations[row] += " " + className;\n this._signal("changeBreakpoint", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, "");\n this._signal("changeBreakpoint", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption("useWorker", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal("tokenizerUpdate", e);\n };\n\n this.$modes = {};\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === "object") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || "ace/mode/text";\n }\n if (!this.$modes["ace/mode/text"])\n this.$modes["ace/mode/text"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule(["mode", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes["ace/mode/text"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.addEventListener !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.addEventListener("update", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.addEventListener("update", function(e) {\n _self._signal("tokenizerUpdate", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit("changeMode");\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn("Could not load worker", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal("changeScrollTop", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal("changeScrollLeft", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.group == "doc") {\n this.doc.revertDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, true, lastUndoRange);\n } else {\n delta.deltas.forEach(function(foldDelta) {\n this.addFolds(foldDelta.folds);\n }, this);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n var lastUndoRange = null;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.group == "doc") {\n this.doc.applyDeltas(delta.deltas);\n lastUndoRange =\n this.$getUndoSelection(delta.deltas, false, lastUndoRange);\n }\n }\n this.$fromUndo = false;\n lastUndoRange &&\n this.$undoSelect &&\n !dontSelect &&\n this.selection.setSelectionRange(lastUndoRange);\n return lastUndoRange;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) {\n function isInsert(delta) {\n return isUndo ? delta.action !== "insert" : delta.action === "insert";\n }\n\n var delta = deltas[0];\n var range, point;\n var lastDeltaIsInsert = false;\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n lastDeltaIsInsert = true;\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n lastDeltaIsInsert = false;\n }\n\n for (var i = 1; i < deltas.length; i++) {\n delta = deltas[i];\n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n lastDeltaIsInsert = true;\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n lastDeltaIsInsert = false;\n }\n }\n if (lastUndoRange != null) {\n if (Range.comparePoints(lastUndoRange.start, range.start) === 0) {\n lastUndoRange.start.column += range.end.column - range.start.column;\n lastUndoRange.end.column += range.end.column - range.start.column;\n }\n\n var cmp = lastUndoRange.compareRange(range);\n if (cmp == 1) {\n range.setStart(lastUndoRange.start);\n } else if (cmp == -1) {\n range.setEnd(lastUndoRange.end);\n }\n }\n\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != \' \')\n break;\n if (j < size && line.charAt(j) == \'\\t\') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal("changeWrapMode");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n if (this.$useWrapMode)\n this._signal("changeWrapMode");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal("changeWrapLimit");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === "remove") {\n this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === "remove") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error("doc.getLength() and $wrapData.length have to be the same!");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var displayed = tokens.slice(lastSplit, screenPos);\n var len = displayed.length;\n displayed.join("").\n replace(/12/g, function() {\n len -= 1;\n }).\n replace(/2/g, function() {\n len -= 1;\n });\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n if (this.lineWidgets)\n var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n }\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - screenColumn % this.$tabSize;\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n var splitIndex = Math.floor(screenRow - row);\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === "undefined")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = "";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === "\\t") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n };\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n };\n\n}).call(EditSession.prototype);\n\nrequire("./edit_session/folding").Folding.call(EditSession.prototype);\nrequire("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, "session", {\n wrap: {\n set: function(value) {\n if (!value || value == "off")\n value = false;\n else if (value == "free")\n value = true;\n else if (value == "printMargin")\n value = -1;\n else if (typeof value == "string")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == "number" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return "printMargin";\n if (!this.getWrapLimitRange().min)\n return "free";\n return this.$wrap;\n }\n return "off";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == "auto"\n ? this.$mode.type != "text"\n : val != "text";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$modified = true;\n this.$resetRowCache(0);\n this.$updateWrapData(0, this.getLength() - 1);\n }\n }\n },\n initialValue: "auto"\n },\n indentedSoftWrap: { initialValue: true },\n firstLineNumber: {\n set: function() {this._signal("changeBreakpoint");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n if (isNaN(tabSize) || this.$tabSize === tabSize) return;\n\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal("changeTabSize");\n },\n initialValue: 4,\n handlesSet: true\n },\n overwrite: {\n set: function(val) {this._signal("changeOverwrite");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val)},\n get: function() {return this.doc.getNewLineMode()},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val) },\n get: function() { return this.$modeId }\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar lang = require("./lib/lang");\nvar oop = require("./lib/oop");\nvar Range = require("./range").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(range, row, offset) {\n if (!range.start) {\n var column = range.offset + (offset || 0);\n firstRange = new Range(row, column, row, column + range.length);\n if (!range.length && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n } else\n firstRange = range;\n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split("");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join("");\n }\n \n return replacement;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n\n var callback;\n if (options.$isMultiLine) {\n var len = re.length;\n var matchIterator = function(line, row, offset) {\n var startIndex = line.search(re[0]);\n if (startIndex == -1)\n return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(row + i);\n if (line.search(re[i]) == -1)\n return;\n }\n\n var endIndex = line.match(re[len - 1])[0].length;\n\n var range = new Range(row, startIndex, row + len - 1, endIndex);\n if (re.offset == 1) {\n range.start.row--;\n range.start.column = Number.MAX_VALUE;\n } else if (offset)\n range.start.column += offset;\n\n if (callback(range))\n return true;\n };\n } else if (options.backwards) {\n var matchIterator = function(line, row, startIndex) {\n var matches = lang.getMatchOffsets(line, re);\n for (var i = matches.length-1; i >= 0; i--)\n if (callback(matches[i], row, startIndex))\n return true;\n };\n } else {\n var matchIterator = function(line, row, startIndex) {\n var matches = lang.getMatchOffsets(line, re);\n for (var i = 0; i < matches.length; i++)\n if (callback(matches[i], row, startIndex))\n return true;\n };\n }\n \n var lineIterator = this.$lineIterator(session, options);\n\n return {\n forEach: function(_callback) {\n callback = _callback;\n lineIterator.forEach(matchIterator);\n }\n };\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = "\\\\b" + needle + "\\\\b";\n\n var modifier = options.caseSensitive ? "gm" : "gmi";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, "$\\n^").split("\\n");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n if (parts[0] == "") {\n re.shift();\n re.offset = 1;\n } else {\n re.offset = 0;\n }\n return re;\n };\n\n this.$lineIterator = function(session, options) {\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? "end" : "start"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? "end" : "start"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n\n var forEach = backwards ? function(callback) {\n var row = start.row;\n\n var line = session.getLine(row).substring(0, start.column);\n if (callback(line, row))\n return;\n\n for (row--; row >= firstRow; row--)\n if (callback(session.getLine(row), row))\n return;\n\n if (options.wrap == false)\n return;\n\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (callback(session.getLine(row), row))\n return;\n } : function(callback) {\n var row = start.row;\n\n var line = session.getLine(row).substr(start.column);\n if (callback(line, row, start.column))\n return;\n\n for (row = row+1; row <= lastRow; row++)\n if (callback(session.getLine(row), row))\n return;\n\n if (options.wrap == false)\n return;\n\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (callback(session.getLine(row), row))\n return;\n };\n \n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nexports.Search = Search;\n});\n\nace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) {\n"use strict";\n\nvar keyUtil = require("../lib/keys");\nvar useragent = require("../lib/useragent");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? "mac" : "win");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === \'string\' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == "object") {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == "function")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split("|").forEach(function(keyPart) {\n var chain = "";\n if (keyPart.indexOf(" ") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? " " : "") + id;\n this._addCommandToBinding(chain, "chainKeys");\n }, this);\n chain += " ";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == "object" && command.bindKey\n && command.bindKey.position || 0;\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n\n if (typeof position != "number") {\n if (position || command.isDefault)\n position = -100;\n else\n position = getPosition(command);\n }\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === "string")\n return this.bindKey(command, name);\n\n if (typeof command === "function")\n command = { exec: command };\n\n if (typeof command !== "object")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == "shift")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != "undefined")\n console.error("invalid modifier " + parts[i] + " in " + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += " " + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == "chainKeys" || command[command.length - 1] == "chainKeys") {\n data.$keyChain = data.$keyChain || key;\n return {command: "null"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = ""; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || "";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("../lib/oop");\nvar MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler;\nvar EventEmitter = require("../lib/event_emitter").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler("exec", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n \n if (typeof command === "string")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit("exec", e);\n this._signal("afterExec", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit("changeStatus");\n if (this.recording) {\n this.macro.pop();\n this.removeEventListener("exec", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on("exec", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == "string")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != "string")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar lang = require("../lib/lang");\nvar config = require("../config");\nvar Range = require("../range").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: "showSettingsMenu",\n bindKey: bindKey("Ctrl-,", "Command-,"),\n exec: function(editor) {\n config.loadModule("ace/ext/settings_menu", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: "goToNextError",\n bindKey: bindKey("Alt-E", "Ctrl-E"),\n exec: function(editor) {\n config.loadModule("ace/ext/error_marker", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: "animate",\n readOnly: true\n}, {\n name: "goToPreviousError",\n bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"),\n exec: function(editor) {\n config.loadModule("ace/ext/error_marker", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: "animate",\n readOnly: true\n}, {\n name: "selectall",\n bindKey: bindKey("Ctrl-A", "Command-A"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: "centerselection",\n bindKey: bindKey(null, "Ctrl-L"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: "gotoline",\n bindKey: bindKey("Ctrl-L", "Command-L"),\n exec: function(editor) {\n var line = parseInt(prompt("Enter line number:"), 10);\n if (!isNaN(line)) {\n editor.gotoLine(line);\n }\n },\n readOnly: true\n}, {\n name: "fold",\n bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: "forEach",\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "unfold",\n bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: "forEach",\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "toggleFoldWidget",\n bindKey: bindKey("F2", "F2"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: "forEach",\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "toggleParentFoldWidget",\n bindKey: bindKey("Alt-F2", "Alt-F2"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: "forEach",\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "foldall",\n bindKey: bindKey(null, "Ctrl-Command-Option-0"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "foldOther",\n bindKey: bindKey("Alt-0", "Command-Option-0"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "unfoldall",\n bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "findnext",\n bindKey: bindKey("Ctrl-K", "Command-G"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: "forEach",\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "findprevious",\n bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: "forEach",\n scrollIntoView: "center",\n readOnly: true\n}, {\n name: "selectOrFindNext",\n bindKey: bindKey("Alt-K", "Ctrl-G"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: "selectOrFindPrevious",\n bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: "find",\n bindKey: bindKey("Ctrl-F", "Command-F"),\n exec: function(editor) {\n config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor)});\n },\n readOnly: true\n}, {\n name: "overwrite",\n bindKey: "Insert",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: "selecttostart",\n bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: "forEach",\n readOnly: true,\n scrollIntoView: "animate",\n aceCommandGroup: "fileJump"\n}, {\n name: "gotostart",\n bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: "forEach",\n readOnly: true,\n scrollIntoView: "animate",\n aceCommandGroup: "fileJump"\n}, {\n name: "selectup",\n bindKey: bindKey("Shift-Up", "Shift-Up"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "golineup",\n bindKey: bindKey("Up", "Up|Ctrl-P"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selecttoend",\n bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: "forEach",\n readOnly: true,\n scrollIntoView: "animate",\n aceCommandGroup: "fileJump"\n}, {\n name: "gotoend",\n bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: "forEach",\n readOnly: true,\n scrollIntoView: "animate",\n aceCommandGroup: "fileJump"\n}, {\n name: "selectdown",\n bindKey: bindKey("Shift-Down", "Shift-Down"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "golinedown",\n bindKey: bindKey("Down", "Down|Ctrl-N"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectwordleft",\n bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "gotowordleft",\n bindKey: bindKey("Ctrl-Left", "Option-Left"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selecttolinestart",\n bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "gotolinestart",\n bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectleft",\n bindKey: bindKey("Shift-Left", "Shift-Left"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "gotoleft",\n bindKey: bindKey("Left", "Left|Ctrl-B"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectwordright",\n bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "gotowordright",\n bindKey: bindKey("Ctrl-Right", "Option-Right"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selecttolineend",\n bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "gotolineend",\n bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectright",\n bindKey: bindKey("Shift-Right", "Shift-Right"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "gotoright",\n bindKey: bindKey("Right", "Right|Ctrl-F"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectpagedown",\n bindKey: "Shift-PageDown",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: "pagedown",\n bindKey: bindKey(null, "Option-PageDown"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: "gotopagedown",\n bindKey: bindKey("PageDown", "PageDown|Ctrl-V"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: "selectpageup",\n bindKey: "Shift-PageUp",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: "pageup",\n bindKey: bindKey(null, "Option-PageUp"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: "gotopageup",\n bindKey: "PageUp",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: "scrollup",\n bindKey: bindKey("Ctrl-Up", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: "scrolldown",\n bindKey: bindKey("Ctrl-Down", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: "selectlinestart",\n bindKey: "Shift-Home",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectlineend",\n bindKey: "Shift-End",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "togglerecording",\n bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: "replaymacro",\n bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: "jumptomatching",\n bindKey: bindKey("Ctrl-P", "Ctrl-P"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: "forEach",\n scrollIntoView: "animate",\n readOnly: true\n}, {\n name: "selecttomatching",\n bindKey: bindKey("Ctrl-Shift-P", "Ctrl-Shift-P"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: "forEach",\n scrollIntoView: "animate",\n readOnly: true\n}, {\n name: "expandToMatching",\n bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: "forEach",\n scrollIntoView: "animate",\n readOnly: true\n}, {\n name: "passKeysToBrowser",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: "copy",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: "cut",\n exec: function(editor) {\n var range = editor.getSelectionRange();\n editor._emit("cut", range);\n\n if (!editor.selection.isEmpty()) {\n editor.session.remove(range);\n editor.clearSelection();\n }\n },\n scrollIntoView: "cursor",\n multiSelectAction: "forEach"\n}, {\n name: "paste",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: "cursor"\n}, {\n name: "removeline",\n bindKey: bindKey("Ctrl-D", "Command-D"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: "cursor",\n multiSelectAction: "forEachLine"\n}, {\n name: "duplicateSelection",\n bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: "cursor",\n multiSelectAction: "forEach"\n}, {\n name: "sortlines",\n bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: "selection",\n multiSelectAction: "forEachLine"\n}, {\n name: "togglecomment",\n bindKey: bindKey("Ctrl-/", "Command-/"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: "forEachLine",\n scrollIntoView: "selectionPart"\n}, {\n name: "toggleBlockComment",\n bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: "forEach",\n scrollIntoView: "selectionPart"\n}, {\n name: "modifyNumberUp",\n bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: "cursor",\n multiSelectAction: "forEach"\n}, {\n name: "modifyNumberDown",\n bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: "cursor",\n multiSelectAction: "forEach"\n}, {\n name: "replace",\n bindKey: bindKey("Ctrl-H", "Command-Option-F"),\n exec: function(editor) {\n config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor, true)});\n }\n}, {\n name: "undo",\n bindKey: bindKey("Ctrl-Z", "Command-Z"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: "redo",\n bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: "copylinesup",\n bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: "cursor"\n}, {\n name: "movelinesup",\n bindKey: bindKey("Alt-Up", "Option-Up"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: "cursor"\n}, {\n name: "copylinesdown",\n bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: "cursor"\n}, {\n name: "movelinesdown",\n bindKey: bindKey("Alt-Down", "Option-Down"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: "cursor"\n}, {\n name: "del",\n bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"),\n exec: function(editor) { editor.remove("right"); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "backspace",\n bindKey: bindKey(\n "Shift-Backspace|Backspace",\n "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"\n ),\n exec: function(editor) { editor.remove("left"); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "cut_or_delete",\n bindKey: bindKey("Shift-Delete", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove("left");\n } else {\n return false;\n }\n },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "removetolinestart",\n bindKey: bindKey("Alt-Backspace", "Command-Backspace"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "removetolineend",\n bindKey: bindKey("Alt-Delete", "Ctrl-K"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "removewordleft",\n bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "removewordright",\n bindKey: bindKey("Ctrl-Delete", "Alt-Delete"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "outdent",\n bindKey: bindKey("Shift-Tab", "Shift-Tab"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: "forEach",\n scrollIntoView: "selectionPart"\n}, {\n name: "indent",\n bindKey: bindKey("Tab", "Tab"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: "forEach",\n scrollIntoView: "selectionPart"\n}, {\n name: "blockoutdent",\n bindKey: bindKey("Ctrl-[", "Ctrl-["),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: "forEachLine",\n scrollIntoView: "selectionPart"\n}, {\n name: "blockindent",\n bindKey: bindKey("Ctrl-]", "Ctrl-]"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: "forEachLine",\n scrollIntoView: "selectionPart"\n}, {\n name: "insertstring",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "inserttext",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || "", args.times || 1));\n },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "splitline",\n bindKey: bindKey(null, "Ctrl-O"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "transposeletters",\n bindKey: bindKey("Ctrl-T", "Ctrl-T"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: "cursor"\n}, {\n name: "touppercase",\n bindKey: bindKey("Ctrl-U", "Ctrl-U"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "tolowercase",\n bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor"\n}, {\n name: "expandtoline",\n bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: "forEach",\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "joinlines",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, " ").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = " " + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: "forEach",\n readOnly: true\n}, {\n name: "invertSelection",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: "none"\n}];\n\n});\n\nace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator"], function(require, exports, module) {\n"use strict";\n\nrequire("./lib/fixoldbrowsers");\n\nvar oop = require("./lib/oop");\nvar dom = require("./lib/dom");\nvar lang = require("./lib/lang");\nvar useragent = require("./lib/useragent");\nvar TextInput = require("./keyboard/textinput").TextInput;\nvar MouseHandler = require("./mouse/mouse_handler").MouseHandler;\nvar FoldHandler = require("./mouse/fold_handler").FoldHandler;\nvar KeyBinding = require("./keyboard/keybinding").KeyBinding;\nvar EditSession = require("./edit_session").EditSession;\nvar Search = require("./search").Search;\nvar Range = require("./range").Range;\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar CommandManager = require("./commands/command_manager").CommandManager;\nvar defaultCommands = require("./commands/default_commands").commands;\nvar config = require("./config");\nvar TokenIterator = require("./token_iterator").TokenIterator;\nvar Editor = function(renderer, session) {\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n\n this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands);\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.keyBinding = new KeyBinding(this);\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n\n this.$blockScrolling = 0;\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on("exec", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal("input", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on("change", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || new EditSession(""));\n config.resetOptions(this);\n config._signal("editor", this);\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n function last(a) {return a[a.length - 1]}\n\n this.selections = [];\n this.commands.on("exec", this.startOperation.bind(this), true);\n this.commands.on("afterExec", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this));\n\n this.on("change", function() {\n this.curOp || this.startOperation();\n this.curOp.docChanged = true;\n }.bind(this), true);\n\n this.on("changeSelection", function() {\n this.curOp || this.startOperation();\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commadEvent) {\n if (this.curOp) {\n if (!commadEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commadEvent) {\n this.previousCommand = null;\n commadEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = {\n command: commadEvent.command || {},\n args: commadEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined)\n this.$blockScrolling++;\n };\n\n this.endOperation = function(e) {\n if (this.curOp) {\n if (e && e.returnValue === false)\n return this.curOp = null;\n this._signal("beforeEndOperation");\n var command = this.curOp.command;\n if (command.name && this.$blockScrolling > 0)\n this.$blockScrolling--;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case "center-animate":\n scrollIntoView = "animate";\n case "center":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case "animate":\n case "cursor":\n this.renderer.scrollCursorIntoView();\n break;\n case "selectionPart":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == "animate")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n \n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = ["backspace", "del", "insertstring"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == "insertstring") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != "always"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === "string") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule(["keybinding", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.removeEventListener("change", this.$onDocumentChange);\n this.session.removeEventListener("changeMode", this.$onChangeMode);\n this.session.removeEventListener("tokenizerUpdate", this.$onTokenizerUpdate);\n this.session.removeEventListener("changeTabSize", this.$onChangeTabSize);\n this.session.removeEventListener("changeWrapLimit", this.$onChangeWrapLimit);\n this.session.removeEventListener("changeWrapMode", this.$onChangeWrapMode);\n this.session.removeEventListener("onChangeFold", this.$onChangeFold);\n this.session.removeEventListener("changeFrontMarker", this.$onChangeFrontMarker);\n this.session.removeEventListener("changeBackMarker", this.$onChangeBackMarker);\n this.session.removeEventListener("changeBreakpoint", this.$onChangeBreakpoint);\n this.session.removeEventListener("changeAnnotation", this.$onChangeAnnotation);\n this.session.removeEventListener("changeOverwrite", this.$onCursorChange);\n this.session.removeEventListener("changeScrollTop", this.$onScrollTopChange);\n this.session.removeEventListener("changeScrollLeft", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.removeEventListener("changeCursor", this.$onCursorChange);\n selection.removeEventListener("changeSelection", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.addEventListener("change", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.addEventListener("changeMode", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.addEventListener("tokenizerUpdate", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.addEventListener("changeTabSize", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.addEventListener("changeWrapLimit", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.addEventListener("changeWrapMode", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.addEventListener("changeFold", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.addEventListener("changeFrontMarker", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.addEventListener("changeBackMarker", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.addEventListener("changeBreakpoint", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.addEventListener("changeAnnotation", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.addEventListener("changeOverwrite", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.addEventListener("changeScrollTop", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.addEventListener("changeScrollLeft", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.addEventListener("changeCursor", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.addEventListener("changeSelection", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.$blockScrolling += 1;\n this.onCursorChange();\n this.$blockScrolling -= 1;\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal("changeSession", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal("changeEditor", {oldEditor: this});\n session && session._signal("changeEditor", {editor: this});\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption("fontSize") ||\n dom.computedStyle(this.container, "fontSize");\n };\n this.setFontSize = function(size) {\n this.setOption("fontSize", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.session.$bracketHighlight) {\n this.session.removeMarker(this.session.$bracketHighlight);\n this.session.$bracketHighlight = null;\n }\n\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function() {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n var pos = session.findMatchingBracket(self.getCursorPosition());\n if (pos) {\n var range = new Range(pos.row, pos.column, pos.row, pos.column + 1);\n } else if (session.$mode.getMatching) {\n var range = session.$mode.getMatching(self.session);\n }\n if (range)\n session.$bracketHighlight = session.addMarker(range, "ace_bracket", "text");\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf("tag-open") != -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value == \'<\'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n \n if (token && token.value === tag && token.type.indexOf(\'tag-name\') !== -1) {\n if (prevToken.value === \'<\'){\n depth++;\n } else if (prevToken.value === \'= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n \n if (token && token.value === tag && token.type.indexOf(\'tag-name\') !== -1) {\n if (prevToken.value === \'<\') {\n depth++;\n } else if (prevToken.value === \' 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, "ace_active-line", "screenLine");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal("changeBackMarker");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, "ace_selection", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal("changeSelection");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startOuter = selection.start.column - 1;\n var endOuter = selection.end.column + 1;\n var line = session.getLine(selection.start.row);\n var lineCols = line.length;\n var needle = line.substring(Math.max(startOuter, 0),\n Math.min(endOuter, lineCols));\n if ((startOuter >= 0 && /^[\\w\\d]/.test(needle)) ||\n (endOuter <= lineCols && /[\\w\\d]$/.test(needle)))\n return;\n\n needle = line.substring(selection.start.column, selection.end.column);\n if (!/^[\\w\\d]+$/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n\n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit("changeMode", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n this._signal("copy", text);\n return text;\n };\n this.onCopy = function() {\n this.commands.exec("copy", this);\n };\n this.onCut = function() {\n this.commands.exec("cut", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec("paste", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == "string") \n e = {text: e};\n this._signal("paste", e);\n var text = e.text;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n this.insert(text);\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n if (lines.length > ranges.length || lines.length < 2 || !lines[1])\n return this.commands.exec("insertstring", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n this.session.remove(range);\n \n this.session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), \'insertion\', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n this.session.mergeUndoDeltas = false;\n this.$mergeNextCommand = false;\n }\n text = transform.text;\n\n }\n }\n \n if (text == "\\t")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite()) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == "\\n" || text == "\\r\\n") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n var end = session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n };\n\n this.onTextInput = function(text) {\n this.keyBinding.onTextInput(text);\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption("scrollSpeed", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption("scrollSpeed");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption("dragDelay", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption("dragDelay");\n };\n this.setSelectionStyle = function(val) {\n this.setOption("selectionStyle", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption("selectionStyle");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption("highlightActiveLine", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption("highlightActiveLine");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption("highlightGutterLine", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption("highlightGutterLine");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption("highlightSelectedWord", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption("readOnly", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption("readOnly");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption("behavioursEnabled", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption("behavioursEnabled");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption("wrapBehavioursEnabled", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption("wrapBehavioursEnabled");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption("showFoldWidgets", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption("showFoldWidgets");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption("fadeFoldWidgets", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption("fadeFoldWidgets");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == "left")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, \'deletion\', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == "\\n") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert("\\n");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, "\\t");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, "\\t");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(" ", count);\n } else {\n var count = column % size;\n while (line[range.start.column] == " " && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = "\\t";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, "\\t");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(text) {\n this.renderer.showComposition(this.getCursorPosition());\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n this.$blockScrolling++;\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n this.$blockScrolling--;\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.$blockScrolling += 1;\n this.selection.selectAll();\n this.$blockScrolling -= 1;\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n ")": "(",\n "(": "(",\n "]": "[",\n "[": "[",\n "{": "{",\n "}": "{"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + \'.\' + token.type.replace("rparen", "lparen");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case \'(\':\n case \'[\':\n case \'{\':\n depth[bracketType]++;\n break;\n case \')\':\n case \']\':\n case \'}\':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = \'bracket\';\n found = true;\n }\n break;\n }\n }\n }\n else if (token && token.type.indexOf(\'tag-name\') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === \'<\') {\n depth[token.value]++;\n }\n else if (prevToken.value === \'= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n this.$blockScrolling -= 1;\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == "string" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == "object")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.$blockScrolling += 1;\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n this.$blockScrolling -= 1;\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().undo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.$blockScrolling++;\n this.session.getUndoManager().redo();\n this.$blockScrolling--;\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n this.renderer.destroy();\n this._signal("destroy", this);\n if (this.session) {\n this.session.destroy();\n }\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement("div");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = "position:absolute";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on("changeSelection", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on("beforeRender", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on("afterRender", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + "px";\n scrollAnchor.style.left = pos.left + "px";\n scrollAnchor.style.height = config.lineHeight + "px";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.removeEventListener("changeSelection", onChangeSelection);\n this.renderer.removeEventListener("afterRender", onAfterRender);\n this.renderer.removeEventListener("beforeRender", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || "ace";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != "wide";\n dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style));\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, "editor", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal("changeSelectionStyle", {data: style});\n },\n initialValue: "line"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: ["ace", "slim", "smooth", "wide"],\n initialValue: "ace"\n },\n mergeUndoDeltas: {\n values: [false, true, "always"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val)}\n },\n\n hScrollBarAlwaysVisible: "renderer",\n vScrollBarAlwaysVisible: "renderer",\n highlightGutterLine: "renderer",\n animatedScroll: "renderer",\n showInvisibles: "renderer",\n showPrintMargin: "renderer",\n printMarginColumn: "renderer",\n printMargin: "renderer",\n fadeFoldWidgets: "renderer",\n showFoldWidgets: "renderer",\n showLineNumbers: "renderer",\n showGutter: "renderer",\n displayIndentGuides: "renderer",\n fontSize: "renderer",\n fontFamily: "renderer",\n maxLines: "renderer",\n minLines: "renderer",\n scrollPastEnd: "renderer",\n fixedWidthGutter: "renderer",\n theme: "renderer",\n\n scrollSpeed: "$mouseHandler",\n dragDelay: "$mouseHandler",\n dragEnabled: "$mouseHandler",\n focusTimout: "$mouseHandler",\n tooltipFollowsMouse: "$mouseHandler",\n\n firstLineNumber: "session",\n overwrite: "session",\n newLineMode: "session",\n useWorker: "session",\n useSoftTabs: "session",\n tabSize: "session",\n wrap: "session",\n indentedSoftWrap: "session",\n foldStyle: "session",\n mode: "session"\n});\n\nexports.Editor = Editor;\n});\n\nace.define("ace/undomanager",["require","exports","module"], function(require, exports, module) {\n"use strict";\nvar UndoManager = function() {\n this.reset();\n};\n\n(function() {\n this.execute = function(options) {\n var deltaSets = options.args[0];\n this.$doc = options.args[1];\n if (options.merge && this.hasUndo()){\n this.dirtyCounter--;\n deltaSets = this.$undoStack.pop().concat(deltaSets);\n }\n this.$undoStack.push(deltaSets);\n this.$redoStack = [];\n if (this.dirtyCounter < 0) {\n this.dirtyCounter = NaN;\n }\n this.dirtyCounter++;\n };\n this.undo = function(dontSelect) {\n var deltaSets = this.$undoStack.pop();\n var undoSelectionRange = null;\n if (deltaSets) {\n undoSelectionRange = this.$doc.undoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\n this.$redoStack.push(deltaSets);\n this.dirtyCounter--;\n }\n\n return undoSelectionRange;\n };\n this.redo = function(dontSelect) {\n var deltaSets = this.$redoStack.pop();\n var redoSelectionRange = null;\n if (deltaSets) {\n redoSelectionRange =\n this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect);\n this.$undoStack.push(deltaSets);\n this.dirtyCounter++;\n }\n return redoSelectionRange;\n };\n this.reset = function() {\n this.$undoStack = [];\n this.$redoStack = [];\n this.dirtyCounter = 0;\n };\n this.hasUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.hasRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.markClean = function() {\n this.dirtyCounter = 0;\n };\n this.isClean = function() {\n return this.dirtyCounter === 0;\n };\n this.$serializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $serializeDelta);\n };\n this.$deserializeDeltas = function(deltaSets) {\n return cloneDeltaSetsObj(deltaSets, $deserializeDelta);\n };\n \n function $serializeDelta(delta){\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines.length == 1 ? null : delta.lines,\n text: delta.lines.length == 1 ? delta.lines[0] : null,\n };\n }\n \n function $deserializeDelta(delta) {\n return {\n action: delta.action,\n start: delta.start,\n end: delta.end,\n lines: delta.lines || [delta.text]\n };\n }\n \n function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) {\n var deltaSets_new = new Array(deltaSets_old.length);\n for (var i = 0; i < deltaSets_old.length; i++) {\n var deltaSet_old = deltaSets_old[i];\n var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)};\n \n for (var j = 0; j < deltaSet_old.deltas.length; j++) {\n var delta_old = deltaSet_old.deltas[j];\n deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old);\n }\n \n deltaSets_new[i] = deltaSet_new;\n }\n return deltaSets_new;\n }\n \n}).call(UndoManager.prototype);\n\nexports.UndoManager = UndoManager;\n});\n\nace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"], function(require, exports, module) {\n"use strict";\n\nvar dom = require("../lib/dom");\nvar oop = require("../lib/oop");\nvar lang = require("../lib/lang");\nvar EventEmitter = require("../lib/event_emitter").EventEmitter;\n\nvar Gutter = function(parentEl) {\n this.element = dom.createElement("div");\n this.element.className = "ace_layer ace_gutter-layer";\n parentEl.appendChild(this.element);\n this.setShowFoldWidgets(this.$showFoldWidgets);\n \n this.gutterWidth = 0;\n\n this.$annotations = [];\n this.$updateAnnotations = this.$updateAnnotations.bind(this);\n\n this.$cells = [];\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.setSession = function(session) {\n if (this.session)\n this.session.removeEventListener("change", this.$updateAnnotations);\n this.session = session;\n if (session)\n session.on("change", this.$updateAnnotations);\n };\n\n this.addGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn("deprecated use session.addGutterDecoration");\n this.session.addGutterDecoration(row, className);\n };\n\n this.removeGutterDecoration = function(row, className){\n if (window.console)\n console.warn && console.warn("deprecated use session.removeGutterDecoration");\n this.session.removeGutterDecoration(row, className);\n };\n\n this.setAnnotations = function(annotations) {\n this.$annotations = [];\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[i];\n var row = annotation.row;\n var rowInfo = this.$annotations[row];\n if (!rowInfo)\n rowInfo = this.$annotations[row] = {text: []};\n \n var annoText = annotation.text;\n annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || "";\n\n if (rowInfo.text.indexOf(annoText) === -1)\n rowInfo.text.push(annoText);\n\n var type = annotation.type;\n if (type == "error")\n rowInfo.className = " ace_error";\n else if (type == "warning" && rowInfo.className != " ace_error")\n rowInfo.className = " ace_warning";\n else if (type == "info" && (!rowInfo.className))\n rowInfo.className = " ace_info";\n }\n };\n\n this.$updateAnnotations = function (delta) {\n if (!this.$annotations.length)\n return;\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n if (len === 0) {\n } else if (delta.action == \'remove\') {\n this.$annotations.splice(firstRow, len + 1, null);\n } else {\n var args = new Array(len + 1);\n args.unshift(firstRow, 1);\n this.$annotations.splice.apply(this.$annotations, args);\n }\n };\n\n this.update = function(config) {\n var session = this.session;\n var firstRow = config.firstRow;\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n session.getLength() - 1);\n var fold = session.getNextFoldLine(firstRow);\n var foldStart = fold ? fold.start.row : Infinity;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var firstLineNumber = session.$firstLineNumber;\n var lastLineNumber = 0;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n\n var cell = null;\n var index = -1;\n var row = firstRow;\n while (true) {\n if (row > foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$cells.length > index + 1) {\n cell = this.$cells.pop();\n this.element.removeChild(cell.element);\n }\n break;\n }\n\n cell = this.$cells[++index];\n if (!cell) {\n cell = {element: null, textNode: null, foldWidget: null};\n cell.element = dom.createElement("div");\n cell.textNode = document.createTextNode(\'\');\n cell.element.appendChild(cell.textNode);\n this.element.appendChild(cell.element);\n this.$cells[index] = cell;\n }\n\n var className = "ace_gutter-cell ";\n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (cell.element.className != className)\n cell.element.className = className;\n\n var height = session.getRowLength(row) * config.lineHeight + "px";\n if (height != cell.element.style.height)\n cell.element.style.height = height;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n if (!cell.foldWidget) {\n cell.foldWidget = dom.createElement("span");\n cell.element.appendChild(cell.foldWidget);\n }\n var className = "ace_fold-widget ace_" + c;\n if (c == "start" && row == foldStart && row < fold.end.row)\n className += " ace_closed";\n else\n className += " ace_open";\n if (cell.foldWidget.className != className)\n cell.foldWidget.className = className;\n\n var height = config.lineHeight + "px";\n if (cell.foldWidget.style.height != height)\n cell.foldWidget.style.height = height;\n } else {\n if (cell.foldWidget) {\n cell.element.removeChild(cell.foldWidget);\n cell.foldWidget = null;\n }\n }\n \n var text = lastLineNumber = gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber;\n if (text != cell.textNode.data)\n cell.textNode.data = text;\n\n row++;\n }\n\n this.element.style.height = config.minHeight + "px";\n\n if (this.$fixedWidth || session.$useWrapMode)\n lastLineNumber = session.getLength() + firstLineNumber;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineNumber, config)\n : lastLineNumber.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.style.width = Math.ceil(this.gutterWidth) + "px";\n this._emit("changeGutterWidth", gutterWidth);\n }\n };\n\n this.$fixedWidth = false;\n \n this.$showLineNumbers = true;\n this.$renderer = "";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return ""},\n getText: function() {return ""}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, "ace_folding-enabled");\n else\n dom.removeCssClass(this.element, "ace_folding-enabled");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = parseInt(style.paddingLeft) + 1 || 0;\n this.$padding.right = parseInt(style.paddingRight) || 0;\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return "markers";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return "foldWidgets";\n };\n\n}).call(Gutter.prototype);\n\nexports.Gutter = Gutter;\n\n});\n\nace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module) {\n"use strict";\n\nvar Range = require("../range").Range;\nvar dom = require("../lib/dom");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement("div");\n this.element.className = "ace_layer ace_marker-layer";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n\n this.update = function(config) {\n var config = config || this.config;\n if (!config)\n return;\n\n this.config = config;\n\n\n var html = [];\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == "fullLine") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == "screenLine") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == "text")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config);\n }\n }\n this.element.innerHTML = html.join("");\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, \n clazz + (row == start ? " ace_start" : "") + " ace_br"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || "";\n\n stringBuilder.push(\n "
"\n );\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n\n stringBuilder.push(\n "
"\n );\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n stringBuilder.push(\n "
"\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n stringBuilder.push(\n "
"\n );\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n stringBuilder.push(\n "
"\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n stringBuilder.push(\n "
"\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("../lib/oop");\nvar dom = require("../lib/dom");\nvar lang = require("../lib/lang");\nvar useragent = require("../lib/useragent");\nvar EventEmitter = require("../lib/event_emitter").EventEmitter;\n\nvar Text = function(parentEl) {\n this.element = dom.createElement("div");\n this.element.className = "ace_layer ace_text-layer";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = "\\xB6";\n this.EOL_CHAR_LF = "\\xAC";\n this.EOL_CHAR_CRLF = "\\xa4";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = "\\u2014"; //"\\u21E5";\n this.SPACE_CHAR = "\\xB7";\n this.$padding = 0;\n\n this.$updateEolChar = function() {\n var EOL_CHAR = this.session.doc.getNewLineCharacter() == "\\n"\n ? this.EOL_CHAR_LF\n : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n }\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.padding = "0 " + padding + "px";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on("changeCharacterSize", function(e) {\n this._signal("changeCharacterSize", e);\n }.bind(this));\n this.$pollSizeChanges();\n }\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showInvisibles) {\n tabStr.push(""\n + lang.stringRepeat(this.TAB_CHAR, i)\n + "");\n } else {\n tabStr.push(lang.stringRepeat(" ", i));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = "ace_indent-guide";\n var spaceClass = "";\n var tabClass = "";\n if (this.showInvisibles) {\n className += " ace_invisible";\n spaceClass = " ace_invisible_space";\n tabClass = " ace_invisible_tab";\n var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize);\n var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize);\n } else{\n var spaceContent = lang.stringRepeat(" ", this.tabSize);\n var tabContent = spaceContent;\n }\n\n this.$tabStrings[" "] = "" + spaceContent + "";\n this.$tabStrings["\\t"] = "" + tabContent + "";\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n this.scrollLines(config);\n }\n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n var html = [];\n this.$renderLine(\n html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false\n );\n lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + "px";\n lineElement.innerHTML = html.join("");\n }\n row++;\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n var el = this.element;\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n el.removeChild(el.firstChild);\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n el.removeChild(el.lastChild);\n\n if (config.firstRow < oldConfig.firstRow) {\n var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1);\n if (el.firstChild)\n el.insertBefore(fragment, el.firstChild);\n else\n el.appendChild(fragment);\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow);\n el.appendChild(fragment);\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = this.element.ownerDocument.createDocumentFragment();\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var container = dom.createElement("div");\n\n var html = [];\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n container.innerHTML = html.join("");\n if (this.$useLineGroups()) {\n container.className = \'ace_line_group\';\n fragment.appendChild(container);\n container.style.height = config.lineHeight * this.session.getRowLength(row) + "px";\n\n } else {\n while(container.firstChild)\n fragment.appendChild(container.firstChild);\n }\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var html = [];\n var firstRow = config.firstRow, lastRow = config.lastRow;\n\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > lastRow)\n break;\n\n if (this.$useLineGroups())\n html.push("
")\n\n this.$renderLine(html, row, false, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups())\n html.push("
"); // end the line group\n\n row++;\n }\n this.element.innerHTML = html.join("");\n };\n\n this.$textToken = {\n "text": true,\n "rparen": true,\n "lparen": true\n };\n\n this.$renderToken = function(stringBuilder, screenColumn, token, value) {\n var self = this;\n var replaceReg = /\\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;\n var replaceFunc = function(c, a, b, tabIdx, idx4) {\n if (a) {\n return self.showInvisibles\n ? "" + lang.stringRepeat(self.SPACE_CHAR, c.length) + ""\n : c;\n } else if (c == "&") {\n return "&";\n } else if (c == "<") {\n return "<";\n } else if (c == ">") {\n return ">";\n } else if (c == "\\t") {\n var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx);\n screenColumn += tabSize - 1;\n return self.$tabStrings[tabSize];\n } else if (c == "\\u3000") {\n var classToUse = self.showInvisibles ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk";\n var space = self.showInvisibles ? self.SPACE_CHAR : "";\n screenColumn += 1;\n return "" + space + "";\n } else if (b) {\n return "" + self.SPACE_CHAR + "";\n } else {\n screenColumn += 1;\n return "" + c + "";\n }\n };\n\n var output = value.replace(replaceReg, replaceFunc);\n\n if (!this.$textToken[token.type]) {\n var classes = "ace_" + token.type.replace(/\\./g, " ace_");\n var style = "";\n if (token.type == "fold")\n style = " style=\'width:" + (token.value.length * this.config.characterWidth) + "px;\' ";\n stringBuilder.push("", output, "");\n }\n else {\n stringBuilder.push(output);\n }\n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(stringBuilder, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == " ") {\n cols -= cols % this.tabSize;\n stringBuilder.push(lang.stringRepeat(this.$tabStrings[" "], cols/this.tabSize));\n return value.substr(cols);\n } else if (value[0] == "\\t") {\n stringBuilder.push(lang.stringRepeat(this.$tabStrings["\\t"], cols));\n return value.substr(cols);\n }\n return value;\n };\n\n this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) {\n var chars = 0;\n var split = 0;\n var splitChars = splits[0];\n var screenColumn = 0;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var value = token.value;\n if (i == 0 && this.displayIndentGuides) {\n chars = value.length;\n value = this.renderIndentGuide(stringBuilder, value, splitChars);\n if (!value)\n continue;\n chars -= value.length;\n }\n\n if (chars + value.length < splitChars) {\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n chars += value.length;\n } else {\n while (chars + value.length >= splitChars) {\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n if (!onlyContents) {\n stringBuilder.push("",\n "
"\n );\n }\n\n stringBuilder.push(lang.stringRepeat("\\xa0", splits.indent));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n stringBuilder, screenColumn, token, value\n );\n }\n }\n }\n };\n\n this.$renderSimpleLine = function(stringBuilder, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(stringBuilder, value);\n if (value)\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value);\n }\n };\n this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n\n if (!onlyContents) {\n stringBuilder.push(\n "
"\n );\n }\n\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length)\n this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents);\n else\n this.$renderSimpleLine(stringBuilder, tokens);\n }\n\n if (this.showInvisibles) {\n if (foldLine)\n row = foldLine.end.row\n\n stringBuilder.push(\n "",\n row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR,\n ""\n );\n }\n if (!onlyContents)\n stringBuilder.push("
");\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: "fold",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$measureNode)\n this.$measureNode.parentNode.removeChild(this.$measureNode);\n delete this.$measureNode;\n };\n\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module) {\n"use strict";\n\nvar dom = require("../lib/dom");\nvar isIE8;\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement("div");\n this.element.className = "ace_layer ace_cursor-layer";\n parentEl.appendChild(this.element);\n \n if (isIE8 === undefined)\n isIE8 = !("opacity" in this.element.style);\n\n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, "ace_hidden-cursors");\n this.$updateCursors = (isIE8\n ? this.$updateVisibility\n : this.$updateOpacity).bind(this);\n};\n\n(function() {\n \n this.$updateVisibility = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.visibility = val ? "" : "hidden";\n };\n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.opacity = val ? "" : "0";\n };\n \n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking){\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval){\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking && !isIE8) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking);\n this.$updateCursors(true);\n this.$updateCursors = (this.$updateOpacity).bind(this);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement("div");\n el.className = "ace_cursor";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, "ace_hidden-cursors");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, "ace_hidden-cursors");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n if (this.smoothBlinking) {\n dom.removeCssClass(this.element, "ace_smooth-blinking");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible)\n return;\n\n if (this.smoothBlinking) {\n setTimeout(function(){\n dom.addCssClass(this.element, "ace_smooth-blinking");\n }.bind(this));\n }\n \n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n\n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n\n blink();\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + pos.column * this.config.characterWidth;\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var style = (this.cursors[cursorIndex++] || this.addCursor()).style;\n \n if (!this.drawCursor) {\n style.left = pixelPos.left + "px";\n style.top = pixelPos.top + "px";\n style.width = config.characterWidth + "px";\n style.height = config.lineHeight + "px";\n } else {\n this.drawCursor(style, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, "ace_overwrite-cursors");\n else\n dom.removeCssClass(this.element, "ace_overwrite-cursors");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar dom = require("./lib/dom");\nvar event = require("./lib/event");\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement("div");\n this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix;\n\n this.inner = dom.createElement("div");\n this.inner.className = "ace_scrollbar-inner";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, "scroll", this.onScroll.bind(this));\n event.addListener(this.element, "mousedown", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? "" : "none";\n this.isVisible = isVisible;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + "px";\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = \'-v\';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n this._emit("scroll", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return this.isVisible ? this.width : 0;\n };\n this.setHeight = function(height) {\n this.element.style.height = height + "px";\n };\n this.setInnerHeight = function(height) {\n this.inner.style.height = height + "px";\n };\n this.setScrollHeight = function(height) {\n this.inner.style.height = height + "px";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = this.element.scrollTop = scrollTop;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + "px";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = \'-h\';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit("scroll", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + "px";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + "px";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + "px";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module) {\n"use strict";\n\nvar event = require("./lib/event");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.window = win || window;\n};\n\n(function() {\n\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (!this.pending && this.changes) {\n this.pending = true;\n var _self = this;\n event.nextFrame(function() {\n _self.pending = false;\n var changes;\n while (changes = _self.changes) {\n _self.changes = 0;\n _self.onRender(changes);\n }\n }, this.window);\n }\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.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(require, exports, module) {\n\nvar oop = require("../lib/oop");\nvar dom = require("../lib/dom");\nvar lang = require("../lib/lang");\nvar useragent = require("../lib/useragent");\nvar EventEmitter = require("../lib/event_emitter").EventEmitter;\n\nvar CHAR_COUNT = 0;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl, interval) {\n this.el = dom.createElement("div");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement("div");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement("div");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n if (!CHAR_COUNT)\n this.$testFractionalRect();\n this.$measureNode.innerHTML = lang.stringRepeat("X", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$testFractionalRect = function() {\n var el = dom.createElement("div");\n this.$setMeasureNodeStyles(el.style);\n el.style.width = "0.2px";\n document.documentElement.appendChild(el);\n var w = el.getBoundingClientRect().width;\n if (w > 0 && w < 1)\n CHAR_COUNT = 50;\n else\n CHAR_COUNT = 100;\n el.parentNode.removeChild(el);\n };\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = "auto";\n style.left = style.top = "0px";\n style.visibility = "hidden";\n style.position = "absolute";\n style.whiteSpace = "pre";\n\n if (useragent.isIE < 8) {\n style["font-family"] = "inherit";\n } else {\n style.font = "inherit";\n }\n style.overflow = isRoot ? "hidden" : "visible";\n };\n\n this.checkForSizeChanges = function() {\n var size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = "bold";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = "";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit("changeCharacterSize", {data: size});\n }\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer)\n return this.$pollSizeChangesTimer;\n var self = this;\n return this.$pollSizeChangesTimer = setInterval(function() {\n self.checkForSizeChanges();\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function() {\n if (CHAR_COUNT === 50) {\n var rect = null;\n try { \n rect = this.$measureNode.getBoundingClientRect();\n } catch(e) {\n rect = {width: 0, height:0 };\n };\n var size = {\n height: rect.height,\n width: rect.width / CHAR_COUNT\n };\n } else {\n var size = {\n height: this.$measureNode.clientHeight,\n width: this.$measureNode.clientWidth / CHAR_COUNT\n };\n }\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n}).call(FontMetrics.prototype);\n\n});\n\nace.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(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar dom = require("./lib/dom");\nvar config = require("./config");\nvar useragent = require("./lib/useragent");\nvar GutterLayer = require("./layer/gutter").Gutter;\nvar MarkerLayer = require("./layer/marker").Marker;\nvar TextLayer = require("./layer/text").Text;\nvar CursorLayer = require("./layer/cursor").Cursor;\nvar HScrollBar = require("./scrollbar").HScrollBar;\nvar VScrollBar = require("./scrollbar").VScrollBar;\nvar RenderLoop = require("./renderloop").RenderLoop;\nvar FontMetrics = require("./layer/font_metrics").FontMetrics;\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar editorCss = ".ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\nfont: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;\\\ndirection: ltr;\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: \'\';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-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==\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-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==\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\");\\\n}\\\n.ace_scrollbar {\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ntext-indent: -1em;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: inherit;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\ntext-indent: 0;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\n-webkit-transition: opacity 0.18s;\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_editor.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\"),\\\nurl(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\"),\\\nurl(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\n-moz-box-sizing: border-box;\\\n-webkit-box-sizing: border-box;\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\n-webkit-transition: opacity 0.4s ease 0.05s;\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\n-webkit-transition: opacity 0.05s ease 0.05s;\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n";\n\ndom.importCssString(editorCss, "ace_editor.css");\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement("div");\n this.$keepTextAreaAtCursor = !useragent.isOldIE;\n\n dom.addCssClass(this.container, "ace_editor");\n\n this.setTheme(theme);\n\n this.$gutter = dom.createElement("div");\n this.$gutter.className = "ace_gutter";\n this.container.appendChild(this.$gutter);\n\n this.scroller = dom.createElement("div");\n this.scroller.className = "ace_scroller";\n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement("div");\n this.content.className = "ace_content";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.addEventListener("scroll", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.addEventListener("scroll", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container, 500);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.addEventListener("changeCharacterSize", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal("changeCharacterSize", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._emit("renderer", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle("ace_nobold", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode()\n this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n this.scrollBarH.element.style.left = \n this.scroller.style.left = gutterWidth + "px";\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); \n \n this.scrollBarH.element.style.right = \n this.scroller.style.right = this.scrollBarV.getWidth() + "px";\n this.scroller.style.bottom = this.scrollBarH.getHeight() + "px";\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force)\n changes |= this.CHANGE_FULL;\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal("resize", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function() {\n var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n this.$loop.schedule(this.CHANGE_MARKER);\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption("animatedScroll", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption("showInvisibles", showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption("showInvisibles");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption("displayIndentGuides");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption("displayIndentGuides", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption("showPrintMargin", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption("showPrintMargin");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption("printMarginColumn", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption("printMarginColumn");\n };\n this.getShowGutter = function(){\n return this.getOption("showGutter");\n };\n this.setShowGutter = function(show){\n return this.setOption("showGutter", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption("fadeFoldWidgets")\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption("fadeFoldWidgets", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption("highlightGutterLine", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption("highlightGutterLine");\n };\n\n this.$updateGutterLineHighlight = function() {\n var pos = this.$cursorLayer.$pixelPos;\n var height = this.layerConfig.lineHeight;\n if (this.session.getUseWrapMode()) {\n var cursor = this.session.selection.getCursor();\n cursor.column = 0;\n pos = this.$cursorLayer.getPixelPosition(cursor, true);\n height *= this.session.getRowLength(cursor.row);\n }\n this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + "px";\n this.$gutterLineHighlight.style.height = height + "px";\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement("div");\n containerEl.className = "ace_layer ace_print-margin-layer";\n this.$printMarginEl = dom.createElement("div");\n this.$printMarginEl.className = "ace_print-margin";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + "px";\n style.visibility = this.$showPrintMargin ? "visible" : "hidden";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (!this.$keepTextAreaAtCursor)\n return;\n var config = this.layerConfig;\n var posTop = this.$cursorLayer.$pixelPos.top;\n var posLeft = this.$cursorLayer.$pixelPos.left;\n posTop -= config.offset;\n\n var style = this.textarea.style;\n var h = this.lineHeight;\n if (posTop < 0 || posTop > config.height - h) {\n style.top = style.left = "0";\n return;\n }\n\n var w = this.characterWidth;\n if (this.$composition) {\n var val = this.textarea.value.replace(/^\\x01+/, "");\n w *= (this.session.$getStringScreenWidth(val)[0]+2);\n h += 2;\n }\n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth;\n style.height = h + "px";\n style.width = w + "px";\n style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + "px";\n style.top = Math.min(posTop, this.$size.height - h) + "px";\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var flint = Math.floor((this.layerConfig.height + this.layerConfig.offset) / this.layerConfig.lineHeight);\n return this.layerConfig.firstRow - 1 + flint;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption("hScrollBarAlwaysVisible", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption("vScrollBarAlwaysVisible", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal("beforeRender");\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n this.$gutterLayer.element.style.marginTop = (-config.offset) + "px";\n this.content.style.marginTop = (-config.offset) + "px";\n this.content.style.width = config.width + 2 * this.$padding + "px";\n this.content.style.height = config.minHeight + "px";\n }\n if (changes & this.CHANGE_H_SCROLL) {\n this.content.style.marginLeft = -this.scrollLeft + "px";\n this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left";\n }\n if (changes & this.CHANGE_FULL) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this._signal("afterRender");\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n this.$moveTextAreaToCursor();\n this._signal("afterRender");\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this.$highlightGutterLine && this.$updateGutterLineHighlight();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal("afterRender");\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.max(\n (this.$minLines||1) * this.lineHeight,\n Math.min(maxHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n var vScroll = height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + "px";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal("autosize");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var offset = this.scrollTop % this.lineHeight;\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal("scrollbarVisibilityChanged");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)),\n height : this.$size.scrollerHeight\n };\n\n return changes;\n };\n\n this.$updateLines = function() {\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == "number")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(y);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n\n var offset = (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos = this.scroller.getBoundingClientRect();\n\n var col = Math.round(\n (x + this.scrollLeft - canvasPos.left - this.$padding) / this.characterWidth\n );\n\n var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight;\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0));\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + Math.round(pos.column * this.characterWidth);\n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, "ace_focus");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, "ace_focus");\n };\n this.showComposition = function(position) {\n if (!this.$composition)\n this.$composition = {\n keepTextAreaAtCursor: this.$keepTextAreaAtCursor,\n cssText: this.textarea.style.cssText\n };\n\n this.$keepTextAreaAtCursor = true;\n dom.addCssClass(this.textarea, "ace_composition");\n this.textarea.style.cssText = "";\n this.$moveTextAreaToCursor();\n };\n this.setCompositionText = function(text) {\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n\n dom.removeCssClass(this.textarea, "ace_composition");\n this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor;\n this.textarea.style.cssText = this.$composition.cssText;\n this.$composition = null;\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent(\'themeChange\',{theme:theme});\n\n if (!theme || typeof theme == "string") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule(["theme", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module.cssClass)\n return;\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container.ownerDocument\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = "padding" in module ? module.padding \n : "padding" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, "ace_dark", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent(\'themeLoaded\', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n if (this.scroller.style.cursor != style)\n this.scroller.style.cursor = style;\n };\n this.setMouseCursor = function(cursorStyle) {\n this.scroller.style.cursor = cursorStyle;\n };\n this.destroy = function() {\n this.$textLayer.destroy();\n this.$cursorLayer.destroy();\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, "renderer", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == "number")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? "block" : "none";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {this.$gutterLayer.setShowFoldWidgets(show)},\n initialValue: true\n },\n showLineNumbers: {\n set: function(show) {\n this.$gutterLayer.setShowLineNumbers(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n if (!this.$gutterLineHighlight) {\n this.$gutterLineHighlight = dom.createElement("div");\n this.$gutterLineHighlight.className = "ace_gutter-active-line";\n this.$gutter.appendChild(this.$gutterLineHighlight);\n return;\n }\n\n this.$gutterLineHighlight.style.display = shouldHighlight ? "" : "none";\n if (this.$cursorLayer.$pixelPos)\n this.$updateGutterLineHighlight();\n },\n initialValue: false,\n value: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == "number")\n size = size + "px";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val) },\n get: function() { return this.$themeId || this.theme; },\n initialValue: "./theme/textmate",\n handlesSet: true\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("../lib/oop");\nvar net = require("../lib/net");\nvar EventEmitter = require("../lib/event_emitter").EventEmitter;\nvar config = require("../config");\n\nvar WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n \n if (config.get("packaged") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, "worker");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\\.js)?(\\?.*)?$/, ""));\n });\n }\n\n try {\n this.$worker = new Worker(workerUrl);\n } catch(e) {\n if (e instanceof window.DOMException) {\n var blob = this.$workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n\n this.$worker = new Worker(blobURL);\n URL.revokeObjectURL(blobURL);\n } else {\n throw e;\n }\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch(msg.type) {\n case "event":\n this._signal(msg.name, {data: msg.data});\n break;\n case "call":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case "error":\n this.reportError(msg.data);\n break;\n case "log":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal("terminate", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off("change", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try { // nosemgrep\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if(this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call("setValue", [doc.getValue()]);\n doc.on("change", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == "insert")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call("setValue", [this.$doc.getValue()]);\n } else\n this.emit("change", {data: q});\n };\n\n this.$workerBlob = function(workerUrl) {\n var script = "importScripts(\'" + net.qualifyURL(workerUrl) + "\');";\n try {\n return new Blob([script], {"type": "application/javascript"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob("application/javascript");\n }\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.callbackId = 1;\n this.callbacks = {};\n this.messageBuffer = [];\n\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n var _self = this;\n\n this.$worker = {};\n this.$worker.terminate = function() {};\n this.$worker.postMessage = function(e) {\n _self.messageBuffer.push(e);\n if (main) {\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n };\n this.setEmitSync = function(val) { emitSync = val };\n\n var processNext = function() {\n var msg = _self.messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n _self.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: "call", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: "event", name: name, data: data});\n };\n\n config.loadModule(["worker", mod], function(Main) {\n main = new Main[classname](sender);\n while (_self.messageBuffer.length)\n processNext();\n });\n};\n\nUIWorkerClient.prototype = WorkerClient.prototype;\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\n\n});\n\nace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module) {\n"use strict";\n\nvar Range = require("./range").Range;\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar oop = require("./lib/oop");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on("change", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on("changeCursor", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n var pos = this.$pos;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(pos.row, pos.column);\n this.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.pos.on("change", function(event) {\n session.removeMarker(_self.markerId);\n _self.markerId = session.addMarker(new Range(event.value.row, event.value.column, event.value.row, event.value.column+_self.length), _self.mainClass, null, false);\n });\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if(this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n anchor.on("change", function(event) {\n session.removeMarker(anchor.markerId);\n anchor.markerId = session.addMarker(new Range(event.value.row, event.value.column, event.value.row, event.value.column+_self.length), _self.othersClass, null, false);\n });\n });\n };\n this.hideOtherMarkers = function() {\n if(!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n var range = delta;\n if(range.start.row !== range.end.row) return;\n if(range.start.row !== this.pos.row) return;\n if (this.$updating) return;\n this.$updating = true;\n var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column;\n \n if(range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1) {\n var distanceFromStart = range.start.column - this.pos.column;\n this.length += lengthDiff;\n if(!this.session.$fromUndo) {\n if(delta.action === \'insert\') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n if(otherPos.row === range.start.row && range.start.column < otherPos.column)\n newPos.column += lengthDiff;\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if(delta.action === \'remove\') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n if(otherPos.row === range.start.row && range.start.column < otherPos.column)\n newPos.column += lengthDiff;\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n if(range.start.column === this.pos.column && delta.action === \'insert\') {\n setTimeout(function() {\n this.pos.setPosition(this.pos.row, this.pos.column - lengthDiff);\n for (var i = 0; i < this.others.length; i++) {\n var other = this.others[i];\n var newPos = {row: other.row, column: other.column - lengthDiff};\n if(other.row === range.start.row && range.start.column < other.column)\n newPos.column += lengthDiff;\n other.setPosition(newPos.row, newPos.column);\n }\n }.bind(this), 0);\n }\n else if(range.start.column === this.pos.column && delta.action === \'remove\') {\n setTimeout(function() {\n for (var i = 0; i < this.others.length; i++) {\n var other = this.others[i];\n if(other.row === range.start.row && range.start.column < other.column) {\n other.setPosition(other.row, other.column - lengthDiff);\n }\n }\n }.bind(this), 0);\n }\n }\n this.pos._emit("change", {value: this.pos});\n for (var i = 0; i < this.others.length; i++) {\n this.others[i]._emit("change", {value: this.others[i]});\n }\n }\n this.$updating = false;\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit("cursorEnter", event);\n } else {\n this.hideOtherMarkers();\n this._emit("cursorLeave", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.markerId);\n this.hideOtherMarkers();\n this.doc.removeEventListener("change", this.$onUpdate);\n this.session.selection.removeEventListener("changeCursor", this.$onCursorChange);\n this.pos.detach();\n for (var i = 0; i < this.others.length; i++) {\n this.others[i].detach();\n }\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if(this.$undoStackDepth === -1)\n throw Error("Canceling placeholders only supported with undo manager attached to session.");\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) {\n\nvar event = require("../lib/event");\nvar useragent = require("../lib/useragent");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? "block" : "add";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = "block";\n } else {\n if (accel && !alt) {\n selectionMode = "add";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = "block";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == "add") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n \n editor.$blockScrolling++;\n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once("mouseup", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.$blockScrolling--;\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == "block") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.$blockScrolling++;\n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n editor.$blockScrolling--;\n };\n editor.$blockScrolling++;\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n editor.$blockScrolling--;\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n editor.$blockScrolling++;\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n editor.$blockScrolling--;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module) {\nexports.defaultCommands = [{\n name: "addCursorAbove",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "addCursorBelow",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "addCursorAboveSkipCurrent",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "addCursorBelowSkipCurrent",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectMoreBefore",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectMoreAfter",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectNextBefore",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "selectNextAfter",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"},\n scrollIntoView: "cursor",\n readOnly: true\n}, {\n name: "splitIntoLines",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"},\n readOnly: true\n}, {\n name: "alignCursors",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"},\n scrollIntoView: "cursor"\n}, {\n name: "findAll",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G"},\n scrollIntoView: "cursor",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: "singleSelection",\n bindKey: "esc",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: "cursor",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode}\n}];\n\nvar HashHandler = require("../keyboard/hash_handler").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module) {\n\nvar RangeList = require("./range_list").RangeList;\nvar Range = require("./range").Range;\nvar Selection = require("./selection").Selection;\nvar onMouseDown = require("./mouse/multi_select_handler").onMouseDown;\nvar event = require("./lib/event");\nvar lang = require("./lib/lang");\nvar commands = require("./commands/multi_select_commands");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require("./search").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require("./edit_session").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal("multiSelect");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n else if(this.ranges[0])\n this.fromOrientedRange(this.ranges[0]);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal("addRange", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal("removeRange", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal("singleSelect");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n\n this.splitIntoLines = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var range = this.getRange();\n var isBackwards = this.isBackwards();\n var startRow = range.start.row;\n var endRow = range.end.row;\n if (startRow == endRow) {\n if (isBackwards)\n var start = range.end, end = range.start;\n else\n var start = range.start, end = range.end;\n \n this.addRange(Range.fromPoints(end, end));\n this.addRange(Range.fromPoints(start, start));\n return;\n }\n\n var rectSel = [];\n var r = this.getLineRange(startRow, true);\n r.start.column = range.start.column;\n rectSel.push(r);\n\n for (var i = startRow + 1; i < endRow; i++)\n rectSel.push(this.getLineRange(i, true));\n\n r = this.getLineRange(endRow, true);\n r.end.column = range.end.column;\n rectSel.push(r);\n\n rectSel.forEach(this.addRange, this);\n }\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.selectionLead);\n var anchor = this.session.documentToScreenPosition(this.selectionAnchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn),\n this.session.screenToDocumentPosition(row, endColumn)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n var docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require("./editor").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle("ace_multiselect");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler("exec", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle("ace_multiselect");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit("changeSelection");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == "forEach") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == "forEachLine") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == "single") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = "";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = "";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n this.$blockScrolling += 1;\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n this.$blockScrolling -= 1;\n\n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.$blockScrolling += 1;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.$blockScrolling -= 1;\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join("\\n") + "\\n");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(" ", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(" ", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, "$1 ");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW, " ")\n + m[4].replace(/^([=:])\\s+/, "$1 ");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, "$1 ");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off("addRange", this.$onAddRange);\n oldSession.multiSelect.off("removeRange", this.$onRemoveRange);\n oldSession.multiSelect.off("multiSelect", this.$onMultiSelect);\n oldSession.multiSelect.off("singleSelect", this.$onSingleSelect);\n oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on("addRange", this.$onAddRange);\n session.multiSelect.on("removeRange", this.$onRemoveRange);\n session.multiSelect.on("multiSelect", this.$onMultiSelect);\n session.multiSelect.on("singleSelect", this.$onSingleSelect);\n session.multiSelect.lead.on("change", this.$checkMultiselectChange);\n session.multiSelect.anchor.on("change", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on("changeSession", editor.$multiselectOnSessionChange);\n\n editor.on("mousedown", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, "keydown", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor("crosshair");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n });\n\n event.addListener(el, "keyup", reset);\n event.addListener(el, "blur", reset);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor("");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nrequire("./config").defineOptions(Editor.prototype, "editor", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on("changeSession", this.$multiselectOnSessionChange);\n this.on("mousedown", onMouseDown);\n } else {\n this.off("changeSession", this.$multiselectOnSessionChange);\n this.off("mousedown", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar Range = require("../../range").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return "start";\n if (foldStyle == "markbeginend"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return "end";\n return "";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel)\n break;\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == "start" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"], function(require, exports, module) {\n"use strict";\n\nexports.isDark = false;\nexports.cssClass = "ace-tm";\nexports.cssText = ".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\") right repeat-y;\\\n}\\\n";\n\nvar dom = require("../lib/dom");\ndom.importCssString(exports.cssText, exports.cssClass);\n});\n\nace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("./lib/oop");\nvar dom = require("./lib/dom");\nvar Range = require("./range").Range;\n\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on("change", this.updateOnChange);\n this.session.on("changeFold", this.updateOnFold);\n this.session.on("changeEditor", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on("beforeRender", this.measureWidgets);\n editor.renderer.on("afterRender", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off("beforeRender", this.measureWidgets);\n editor.renderer.off("afterRender", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == "add";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == \'remove\') {\n var removed = lineWidgets.splice(startRow + 1, len);\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.addLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n \n w.session = this.session;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement("div");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, "ace_lineWidgetContainer");\n w.el.style.position = "absolute";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n }\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (!w.pixelHeight) {\n w.pixelHeight = w.el.offsetHeight;\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit("changeFold", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row]\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit("changeFold", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit("changeFold", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + "px";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + "px";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + "px";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + "px";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + "px";\n } else {\n w.el.style.right = "";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"], function(require, exports, module) {\n"use strict";\nvar LineWidgets = require("../line_widgets").LineWidgets;\nvar dom = require("../lib/dom");\nvar Range = require("../range").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? "unshift" : "push"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == "errorMarker";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != "number"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: ["Looks good!"],\n className: "ace_ok"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement("div"),\n type: "errorMarker"\n };\n var el = w.el.appendChild(dom.createElement("div"));\n var arrow = w.el.appendChild(dom.createElement("div"));\n arrow.className = "error_widget_arrow " + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px";\n \n w.el.className = "error_widget_wrapper";\n el.className = "error_widget " + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join("
");\n \n el.appendChild(dom.createElement("div"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === "esc" || keyString === "return")) {\n w.destroy();\n return {command: "null"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off("changeSelection", w.destroy);\n editor.off("changeSession", w.destroy);\n editor.off("mouseup", w.destroy);\n editor.off("change", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on("changeSelection", w.destroy);\n editor.on("changeSession", w.destroy);\n editor.on("mouseup", w.destroy);\n editor.on("change", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString("\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n", "");\n\n});\n\nace.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(require, exports, module) {\n"use strict";\n\nrequire("./lib/fixoldbrowsers");\n\nvar dom = require("./lib/dom");\nvar event = require("./lib/event");\n\nvar Editor = require("./editor").Editor;\nvar EditSession = require("./edit_session").EditSession;\nvar UndoManager = require("./undomanager").UndoManager;\nvar Renderer = require("./virtual_renderer").VirtualRenderer;\nrequire("./worker/worker_client");\nrequire("./keyboard/hash_handler");\nrequire("./placeholder");\nrequire("./multi_select");\nrequire("./mode/folding/fold_mode");\nrequire("./theme/textmate");\nrequire("./ext/error_marker");\n\nexports.config = require("./config");\nexports.require = require;\nexports.edit = function(el) {\n if (typeof(el) == "string") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error("ace.edit can\'t find div #" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = "";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement("pre");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = dom.getInnerText(el);\n el.innerHTML = \'\';\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el));\n editor.setSession(doc);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, "resize", env.onResize);\n editor.on("destroy", function() {\n event.removeListener(window, "resize", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n}\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\n});\n (function() {\n ace.require(["ace/ace"], function(a) {\n a && a.config.init(true);\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n });\n })();\n '},1297:function(e,t,n){n(274)(n(1298))},1298:function(e,t){e.exports='ace.define("ace/mode/spl_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang", "ace/mode/text_highlight_rules"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("../lib/oop");\nvar TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;\n\nvar SPLHighlightRules = function(commandSyntax) {\n\n /**\n * builds tokens based on parsed sytax\n * @param {object} commandRules\n * @return {array} array of tokens\n */\n this.buildCommandTokens = function(commandRules) {\n var tokens = [],\n index = 0,\n nonPushArray = [],\n arg;\n\n commandRules.other.forEach(function(otherRule) {\n if (this.tokens[otherRule]) {\n tokens.push(this.tokens[otherRule]);\n }\n }.bind(this));\n\n if (commandRules.args.length) {\n nonPushArray = [];\n for (index = 0; index < commandRules.args.length; index++) {\n arg = commandRules.args[index];\n if (arg.valueType && this.$rules[arg.valueType + \'State\']) {\n tokens.push(new Token({\n token: [\'argument\', \'operator\'],\n regex: new RegExp("\\\\b(" + arg.key + ")(=)"),\n push: arg.valueType+\'State\'\n }));\n } else {\n nonPushArray.push(arg.key);\n }\n }\n if (nonPushArray.length) {\n tokens.push(new Token({\n token: [\'argument\', \'operator\'],\n regex: new RegExp("\\\\b(" + nonPushArray.join(\'|\') + ")(=)"),\n push: \'generalArgState\'\n }));\n }\n }\n if (commandRules.functions.length) {\n var withParen = [],\n withOutParen = [];\n commandRules.functions.forEach(function(functionObject) {\n withParen.push(functionObject.name);\n if (functionObject.parenOptional) {\n withOutParen.push(functionObject.name);\n }\n }.bind(this));\n\n tokens.push(new Token({\n token: [\'function\', \'text\'],\n regex: new RegExp(\'\\\\b(\' + withParen.join(\'|\') + \')(\\\\s*\\\\(\\\\s*)\')\n }));\n\n if (withOutParen.length) {\n tokens.push(new Token({\n token: [\'function\', \'text\'],\n regex: new RegExp(\'\\\\b(\' + withOutParen.join(\'|\') + \')(,\\\\s*|\\\\s+|$)\')\n }));\n }\n }\n if (commandRules.keywords.length) {\n tokens.push(new Token({\n token: \'modifier\',\n regex: new RegExp("\\\\b(" + commandRules.keywords.join(\'|\') + ")\\\\b")\n }));\n }\n return tokens;\n };\n\n this.buildRules = function() {\n var allCommandRules= {};\n for (var command in commandSyntax) {\n allCommandRules[command] = this.tokens.commandArgs.concat(this.buildCommandTokens(commandSyntax[command]));\n }\n allCommandRules.start = allCommandRules[\'search-command\'] || this.tokens.commandArgs;\n this.addRules(allCommandRules);\n };\n\n this.generateCaseSensitiveToken = function(operator){\n return new Token({\n token: function(match) {\n // Hack to make commands case sensitive\n if (match === operator) {\n return \'modifier\';\n }\n return \'text\';\n },\n regex: new RegExp("\\\\b" + operator + "\\\\b")\n });\n }\n\n function Token(attrs) {\n for (var attr in attrs) {\n this[attr] = attrs[attr];\n }\n }\n\n /*\n * makes a copy of the Token and sets the next to nextState.\n */\n Token.prototype.then = function (nextState) {\n var copyAttr = {};\n for (var key in this) {\n copyAttr[key] = this[key];\n }\n var copy = new this.constructor(copyAttr);\n copy.next = nextState;\n return copy;\n };\n\n /**\n * determines the next state, called by the ace tokenizer\n *\n * needed for case ...|top user limit=10 showperc=true|rex ...\n * in this case true| will match as a valid boolean (this.tokens.bool) value so the | will not be matched\n * with this.tokens.pipe so this.tokens.bool will need to set the next state to command\n */\n var nextIfPipe = function(currentState, stack) {\n if (this.matchPipe) {\n return \'command\';\n }\n return currentState;\n };\n\n /**\n * determines the next state, called by the ace tokenizer\n *\n * simular to nextIfPipe but handles the case where it needs to pop if the next token is not a command\n */\n var popOrPipe = function(currentState, stack) {\n if (this.matchPipe) {\n return \'command\';\n }\n stack.shift();\n return stack.shift() || \'start\';\n };\n\n var getQuotedState = function(tokenStr, nextStr) {\n tokenStr = tokenStr || \'quoted\';\n nextStr = nextStr || \'pop\';\n return [\n new Token({\n token: tokenStr,\n regex: /\\\\./\n }),\n new Token({\n token: tokenStr,\n regex: /"/,\n next: nextStr\n }),\n new Token({\n token: tokenStr,\n regex: /./\n })\n ];\n };\n\n this.tokens = {};\n\n // must define so that escaped quotes don\'t match with quotes\n this.tokens.escapedDoubleQuote = new Token({\n token: \'text\',\n regex: /\\\\"/\n });\n\n this.tokens.doubleQuote = new Token({\n token: \'quoted\',\n regex: /"/,\n push: \'inDoubleQuote\'\n });\n\n this.tokens.comment = new Token({\n token: \'comment\',\n regex: /```/,\n push: \'inComment\'\n });\n\n this.tokens.pipe = new Token({\n token: \'pipe\',\n regex: /\\|/,\n next: \'command\'\n });\n\n this.tokens.subsearchStart = new Token({\n token: \'subsearch\',\n regex: /[[]/,\n push: \'command\'\n });\n\n this.tokens.subsearchEnd = new Token({\n token: \'subsearch\',\n regex: /[\\]]/,\n next: \'pop\'\n });\n\n this.tokens[\'int\'] = new Token({\n token: function(match1, match2) {\n if (match2 === "|") {\n this.matchPipe = true;\n return [\'number\', \'pipe\'];\n }\n if (match2 === "]") {\n return [\'number\', \'subsearch\'];\n }\n this.matchPipe = false;\n return [\'number\', \'text\'];\n },\n regex: /([+-]?\\d+)(\\s+|,|\\)|\\(|\\||\\]|$)/,\n next: nextIfPipe\n });\n\n this.tokens.num = new Token({\n token: function(match1, match2) {\n if (match2 === "|") {\n this.matchPipe = true;\n return [\'number\', \'pipe\'];\n }\n if (match2 === "]") {\n return [\'number\', \'subsearch\'];\n }\n this.matchPipe = false;\n return [\'number\', \'text\'];\n },\n regex: /([+-]?\\d+(?:.\\d+)?)(\\s+|,|\\)|\\(|\\||\\]|$)/,\n next: nextIfPipe\n });\n\n this.tokens.bool = new Token({\n token: function(match1, match2) {\n if (match2 === "|") {\n this.matchPipe = true;\n return [\'boolean\', \'pipe\'];\n }\n if (match2 === "]") {\n return [\'boolean\', \'subsearch\'];\n }\n this.matchPipe = false;\n return [\'boolean\', \'text\'];\n },\n regex: /(True|False|T|F|0|1)(\\s+|,|\\)|\\(|\\||\\]|$)/,\n next: nextIfPipe\n });\n\n this.tokens[\'boolean-operator-or\'] = this.generateCaseSensitiveToken(\'OR\');\n\n this.tokens[\'boolean-operator-and\'] = this.generateCaseSensitiveToken(\'AND\');\n\n this.tokens[\'boolean-operator-not\'] = this.generateCaseSensitiveToken(\'NOT\');\n\n this.tokens[\'in-operator\'] = this.generateCaseSensitiveToken(\'IN\');\n\n this.tokens.command = new Token({\n token: function(match) {\n if (this.$rules[match + "-command"]) {\n this.tokens.command.next = match + "-command";\n return \'command\';\n } else {\n this.tokens.command.next = "commandArgs";\n return \'text\';\n }\n }.bind(this),\n regex: /\\b\\w+\\b/\n });\n\n this.tokens.invalidEscapedQuote = new Token ({\n token: \'invalid\',\n regex: /[^\\s"]*?\\\\"/\n });\n\n this.tokens.invalidQuote = new Token({\n token: \'invalid\',\n regex: /\\S*?"/\n });\n\n this.tokens.invalidSpace = new Token({\n token: \'invalid\',\n regex: /\\s/\n });\n\n this.tokens.invalidChar = new Token({\n token: \'invalid\',\n regex: /./\n });\n\n this.tokens.invalidAndSpace = new Token({\n token: [\'invalid\', \'text\'],\n regex: /(\\S+)(\\s)/\n });\n\n this.tokens.space = new Token({\n token: \'text\',\n regex: /\\s/\n });\n\n // default tokens for commands\n this.tokens.commandArgs = [\n this.tokens.escapedDoubleQuote,\n this.tokens.doubleQuote,\n this.tokens.comment,\n this.tokens.pipe,\n this.tokens.subsearchStart,\n this.tokens.subsearchEnd,\n this.tokens[\'in-operator\'],\n {\n caseInsensitive: true\n }\n ];\n\n this.$rules = {\n start : [],\n command: [\n this.tokens.escapedDoubleQuote,\n this.tokens.doubleQuote,\n this.tokens.command,\n this.tokens.comment,\n this.tokens.pipe,\n this.tokens.subsearchStart,\n this.tokens.subsearchEnd\n ],\n commandArgs: this.tokens.commandArgs,\n boolState: [\n this.tokens.bool.then(popOrPipe),\n new Token({\n token: \'text\',\n regex: /(Tr|Tru|Fa|Fal|Fals)$/\n }),\n this.tokens.invalidEscapedQuote.then(\'invalidState\'),\n this.tokens.invalidQuote.then(\'invalidQuoteState\'),\n this.tokens.invalidSpace.then(\'pop\'),\n this.tokens.invalidChar.then(\'invalidState\'),\n {\n caseInsensitive: true\n }\n ],\n intState: [\n this.tokens[\'int\'].then(popOrPipe),\n new Token({\n token:\'text\',\n regex:/[+-]$/\n }),\n this.tokens.invalidEscapedQuote.then(\'invalidState\'),\n this.tokens.invalidQuote.then(\'invalidQuoteState\'),\n this.tokens.invalidSpace.then(\'pop\'),\n this.tokens.invalidChar.then(\'invalidState\')\n ],\n numState: [\n this.tokens.num.then(popOrPipe),\n this.tokens.invalidEscapedQuote.then(\'invalidState\'),\n this.tokens.invalidQuote.then(\'invalidQuoteState\'),\n this.tokens.invalidSpace.then(\'pop\'),\n this.tokens.invalidChar.then(\'invalidState\')\n ],\n generalArgState: [\n // Matching escaped double quotes, double quoted strings, wildcarded strings and strings with _, - and $ in them.\n this.tokens.escapedDoubleQuote,\n this.tokens.doubleQuote,\n new Token ({\n token: \'text\',\n regex: /([\\w\\*\\-_$]+)/\n }),\n this.tokens.pipe,\n this.tokens.comment,\n new Token({\n token: \'text\',\n regex: /\\s|\\W/,\n next: \'pop\'\n })\n ],\n inDoubleQuote: getQuotedState(),\n invalidState: [\n this.tokens.invalidEscapedQuote,\n this.tokens.invalidQuote.then(\'invalidQuoteState\'),\n this.tokens.space.then(\'pop\'),\n this.tokens.invalidChar\n ],\n invalidQuoteState: getQuotedState(\'invalid\', \'invalidState\'),\n inComment: [\n new Token({\n token: \'comment\',\n regex: /```/,\n next: \'pop\'\n }),\n new Token({\n token: \'comment\',\n regex: /./\n })\n ]\n };\n\n this.buildRules();\n this.normalizeRules();\n};\noop.inherits(SPLHighlightRules, TextHighlightRules);\n\nexports.SPLHighlightRules = SPLHighlightRules;\n});\n\nace.define("ace/mode/behaviour/spl", ["require", "exports", "module", "ace/lib/oop", "ace/mode/behaviour", "ace/token_iterator","ace/lib/lang"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("../../lib/oop"),\n Behaviour = require("../behaviour").Behaviour,\n TokenIterator = require("../../token_iterator").TokenIterator,\n lang = require("../../lib/lang");\n\nvar SPLBehaviour = function() {\n this.add("pipe", "insertion", function(state, action, editor, session, text) {\n if (text === "|") {\n var currentState = Array.isArray(state)? state[0]: state,\n position = editor.getCursorPosition(),\n currentToken = session.getTokenAt(position.row, position.column),\n value = currentToken && currentToken.value,\n startIndex = currentToken && currentToken.start,\n lastIndex = currentToken && (startIndex + value.length - 1),\n indents = SPLBehaviour.getIndents(editor, session),\n line = session.doc.getLine(position.row),\n leftOfCursor = line.substring(0, position.column);\n\n // Pipe is inside a quoted string.\n if (currentState === "inDoubleQuote" ||\n (currentToken &&\n currentToken.type === "quoted" &&\n !(lastIndex !== startIndex && value[lastIndex - startIndex] === "\\"" && position.column === lastIndex + 1))) {\n text = "|";\n }\n // Pipe is the first charcter of a line without indents.\n else if (position.column === 0) {\n text = indents + "| ";\n }\n // Pipe is the first charcter of a line with indents.\n else if (!leftOfCursor.trim()) {\n text = "| ";\n }\n else {\n // Pipe is immediatly after an opening bracket of a sub-search (ignore whitespaces).\n if (/\\[[\\t ]*$/.test(leftOfCursor)) {\n text = "| ";\n } else {\n text = "\\n" + indents + "| ";\n }\n }\n\n return {\n text: text\n };\n }\n });\n\n this.add("brackets", "insertion", function(state, action, editor, session, text) {\n if (text === "[") {\n var currentState = Array.isArray(state)? state[0]: state,\n position = editor.getCursorPosition(),\n currentToken = session.getTokenAt(position.row, position.column),\n value = currentToken && currentToken.value,\n startIndex = currentToken && currentToken.start,\n lastIndex = currentToken && (startIndex + value.length - 1),\n indents = SPLBehaviour.getIndents(editor, session, 1),\n line = session.doc.getLine(position.row),\n leftOfCursor = line.substring(0, position.column);\n\n // Bracket is inside a quoted string.\n if (currentState === "inDoubleQuote" ||\n (currentToken &&\n currentToken.type === "quoted" &&\n !(lastIndex !== startIndex && value[lastIndex - startIndex] === "\\"" && position.column === lastIndex + 1))) {\n text = "[";\n }\n // Bracket is the first charcter of a line without indents.\n else if (position.column === 0) {\n text = indents + "[";\n }\n // Bracket is the first charcter of a line with indents.\n else if (!leftOfCursor.trim()) {\n text = "[";\n }\n else {\n text = \'\\n\' + indents + \'[\';\n }\n\n return {\n text: text\n };\n }\n });\n};\n\nSPLBehaviour.getIndents = function(editor, session, numOfTabsToStartWith) {\n // Calculate the sub-search levels the current cursor is in.\n var position = editor.getCursorPosition(),\n iter = new TokenIterator(session,0,0),\n openBracketsNum = 0,\n diff = 0,\n isFirstTime = true,\n token, tokenPosition;\n\n while (isFirstTime || iter.stepForward()) {\n isFirstTime = false;\n token = iter.getCurrentToken();\n\n if (!token) {\n continue;\n }\n\n tokenPosition = iter.getCurrentTokenPosition();\n if (tokenPosition.row > position.row ||\n (tokenPosition.row === position.row &&\n tokenPosition.column >= position.column)) {\n break;\n }\n\n if (token.type === "subsearch") {\n diff = token.value.length;\n // Check if the current\'s position is inside this token\n if (diff > 1 && tokenPosition.row === position.row && (tokenPosition.column + diff - 1) >= position.column) {\n diff = position.column - tokenPosition.column;\n }\n token.value[0] === "[" ? openBracketsNum += diff : openBracketsNum -= diff;\n }\n }\n\n // Generate tabs based on the sub-search levels.\n var tabString = session.getTabString();\n\n if (numOfTabsToStartWith) {\n openBracketsNum += numOfTabsToStartWith;\n }\n\n return lang.stringRepeat(tabString, (openBracketsNum > 0 ? openBracketsNum : 0));\n};\n\noop.inherits(SPLBehaviour, Behaviour);\n\nexports.SPLBehaviour = SPLBehaviour;\n\n});\n\n\nace.define("ace/mode/spl",["require","exports","module","ace/lib/oop","ace/lib/lang", "ace/mode/text","ace/mode/spl_highlight_rules", "ace/mode/behaviour/spl"], function(require, exports, module) {\n"use strict";\n\nvar oop = require("../lib/oop");\nvar TextMode = require("./text").Mode;\nvar SPLHighlightRules = require("./spl_highlight_rules").SPLHighlightRules;\nvar SPLBehaviour = require("./behaviour/spl").SPLBehaviour;\n\nvar Mode = function(commandSyntax) {\n this.$highlightRules = new SPLHighlightRules(commandSyntax);\n this.$behaviour = new SPLBehaviour();\n};\noop.inherits(Mode, TextMode);\n\n(function() {\n this.$id = "ace/mode/spl";\n}).call(Mode.prototype);\n\n/*\n Add new methods to editor\n*/\nvar Editor = require("../editor").Editor,\n TokenIterator = require(\'../token_iterator\').TokenIterator,\n Range = require("../range").Range,\n lang = require("../lib/lang");\n\n(function() {\n this.reformatSearch = function (enableAutoFormattedComments = true) {\n var editor = this,\n currentVal = editor.session.getValue(),\n iter = new TokenIterator(editor.session,0,0),\n unQuotedRange = new Range(0, 0, 0, 0),\n position = {row: 0, column: 0},\n isFirstTime = true,\n groups = [],\n token, index;\n\n // Separate quoted and unquoted strings\n while (isFirstTime || iter.stepForward()) {\n isFirstTime = false;\n token = iter.getCurrentToken();\n\n const isValidTokenToFormat = enableAutoFormattedComments ? token && token.type === "quoted" : token && (token.type === "quoted" || token.type === "comment");\n if (isValidTokenToFormat) {\n unQuotedRange.setStart(position.row, position.column);\n position = iter.getCurrentTokenPosition();\n unQuotedRange.setEnd(position.row, position.column);\n\n // SPL-131114: Check the previous group, if it\'s type is quoted and have unblanced quotes,\n // then add the unqouted range and current token value to the same group.\n var previousGroup = groups.length > 0 ? groups[groups.length - 1] : undefined;\n if (previousGroup && previousGroup.type === "quoted" && (previousGroup.value === \'"\'\n || !/"$/.test(previousGroup.value))) {\n previousGroup.value += editor.session.getTextRange(unQuotedRange) + token.value;\n } else {\n groups.push({value: editor.session.getTextRange(unQuotedRange), type: "unquoted"});\n groups.push({value: token.value, type: "quoted"});\n }\n\n position.column += token.value.length;\n }\n }\n\n index = editor.session.doc.positionToIndex(position, 0);\n groups.push({value: currentVal.substring(index), type: "unquoted"});\n\n // Clean whitespaces in unquoted strings\n groups.forEach(function(group, i) {\n if (group.type === "unquoted" && group.value) {\n var value = group.value;\n // Remove whitespace characters in both sides of pipe and open bracket\n value = value.replace(/\\s*(\\||\\[)\\s*/g, " $1 ");\n // Remove whitespace characters after a newline character\n value = value.replace(/(\\r\\n|\\r|\\n)\\s+/g, "$1");\n // Remove whitespaces between open bracket and pipe\n value = value.replace(/\\[ +\\|/g, "[|");\n // Remove extra whitespaces or tabs after a non-whitespace character\n value = value.replace(/(\\S)?[\\t ]+/g, "$1 ");\n group.value = value;\n }\n });\n\n // Use regex to locate pipes, brackets and newline characters in the unquoted string.\n // Insert indentation and newlines.\n var group,\n value = "",\n openBracketsNum = 0,\n indentation = "",\n part = "",\n match,\n matched,\n lastIndex = 0,\n re = /\\||\\[|\\]|\\r?\\n|\\r/g,\n newLineCharater = editor.session.doc.getNewLineCharacter(),\n tabString = editor.session.getTabString(),\n values = [];\n\n for (var i = 0; i < groups.length ; i++) {\n group = groups[i];\n\n if (group.type === "quoted") {\n values.push(group.value);\n continue;\n }\n\n value = group.value;\n index = 0; // Reset\n lastIndex = 0; // Reset\n part = ""; // Reset\n match = re.exec(value);\n while (match) {\n matched = match[0];\n index = match.index;\n part = value.substring(lastIndex, index);\n\n match = re.exec(value);\n switch (matched) {\n case "|":\n // Ignore it if the previous match is open bracket.\n if (index > 1 && value[index - 1] === "[") {\n continue;\n }\n // Add a newline and indentation ahead\n indentation = lang.stringRepeat(tabString, (openBracketsNum > 0 ? openBracketsNum : 0));\n part = part + newLineCharater + indentation + matched;\n break;\n case "[":\n // Add a new line and indentation ahead\n openBracketsNum += 1;\n if (value[index + 1] === "|") {\n matched += "|";\n }\n\n indentation = lang.stringRepeat(tabString, (openBracketsNum > 0 ? openBracketsNum : 0));\n part = part + newLineCharater + indentation + matched;\n break;\n case "]":\n // Minus openBracketsNum\n openBracketsNum -= 1;\n part = part + matched;\n break;\n case "\\r\\n":\n case "\\n":\n case "\\r":\n // Ignore it if the previous match contains it.\n if (index > 1 && matched === "\\n" && value[index - 1] === "\\r") {\n continue;\n }\n // Add indentation only\n indentation = lang.stringRepeat(tabString, (openBracketsNum > 0 ? openBracketsNum + 1 : 1));\n part = part + matched + indentation;\n break;\n default:\n break;\n }\n values.push(part);\n lastIndex = index + matched.length;\n }\n\n values.push(value.substr(lastIndex));\n }\n\n editor.selectAll();\n editor.session.replace(editor.selection.getRange(), values.join("").trim());\n editor.navigateFileEnd();\n };\n}).call(Editor.prototype);\n\nexports.Mode = Mode;\n});\n'},1299:function(e,t,n){n(274)(n(1300))},13:function(e,t,n){"use strict";n.r(t),function(e){n.d(t,"ServerStyleSheet",(function(){return je})),n.d(t,"StyleSheetConsumer",(function(){return K})),n.d(t,"StyleSheetContext",(function(){return Q})),n.d(t,"StyleSheetManager",(function(){return re})),n.d(t,"ThemeConsumer",(function(){return Se})),n.d(t,"ThemeContext",(function(){return Ce})),n.d(t,"ThemeProvider",(function(){return Te})),n.d(t,"__PRIVATE__",(function(){return Ie})),n.d(t,"createGlobalStyle",(function(){return De})),n.d(t,"css",(function(){return de})),n.d(t,"isStyledComponent",(function(){return A})),n.d(t,"keyframes",(function(){return Ne})),n.d(t,"useTheme",(function(){return qe})),n.d(t,"version",(function(){return Fe})),n.d(t,"withTheme",(function(){return Be}));var r=n(204),i=n(1),o=n.n(i),a=n(370),s=n.n(a),l=n(371),c=n(372),u=n(262),d=n(214),p=n.n(d);function h(){return(h=Object.assign||function(e){for(var t=1;t1?t-1:0),r=1;r0?" Additional arguments: "+n.join(", "):""))}var S=function(e){var t=document.head,n=e||t,r=document.createElement("style"),i=function(e){for(var t=e.childNodes,n=t.length;n>=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(M))return r}}(n),o=void 0!==i?i.nextSibling:null;r.setAttribute(M,"active"),r.setAttribute("data-styled-version","5.1.1");var a=z();return a&&r.setAttribute("nonce",a),n.insertBefore(r,o),r},T=function(){function e(e){var t=this.element=S(e);t.appendChild(document.createTextNode("")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,i=r;e>=i;)(i<<=1)<0&&C(16,""+e);this.groupSizes=new Uint32Array(i),this.groupSizes.set(n),this.length=i;for(var o=r;o=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),i=r+n,o=r;o=D&&(D=t+1),P.set(e,t),R.set(t,e)},q="style["+M+'][data-styled-version="5.1.1"]',I=new RegExp("^"+M+'\\.g(\\d+)\\[id="([\\w\\d-]+)"\\].*?"([^"]*)'),F=function(e,t,n){for(var r,i=n.split(","),o=0,a=i.length;o0&&(c+=e+",")})),r+=""+s+l+'{content:"'+c+'"}/*!sc*/\n'}}}return r}(this)},e}(),Y=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},$=function(e){return Y(5381,e)};var X=/^\s*\/\/.*$/gm;function G(e){var t,n,r,i=void 0===e?g:e,o=i.options,a=void 0===o?g:o,s=i.plugins,c=void 0===s?b:s,u=new l.a(a),d=[],p=function(e){function t(t){if(t)try{e(t+"}")}catch(e){}}return function(n,r,i,o,a,s,l,c,u,d){switch(n){case 1:if(0===u&&64===r.charCodeAt(0))return e(r+";"),"";break;case 2:if(0===c)return r+"/*|*/";break;case 3:switch(c){case 102:case 112:return e(i[0]+r),"";default:return r+(0===d?"/*|*/":"")}case-2:r.split("/*|*/}").forEach(t)}}}((function(e){d.push(e)})),h=function(e,r,i){return r>0&&-1!==i.slice(0,r).indexOf(n)&&i.slice(r-n.length,r)!==n?"."+t:e};function f(e,i,o,a){void 0===a&&(a="&");var s=e.replace(X,""),l=i&&o?o+" "+i+" { "+s+" }":s;return t=a,n=i,r=new RegExp("\\"+n+"\\b","g"),u(o||!i?"":i,l)}return u.use([].concat(c,[function(e,t,i){2===e&&i.length&&i[0].lastIndexOf(n)>0&&(i[0]=i[0].replace(r,h))},p,function(e){if(-2===e){var t=d;return d=[],t}}])),f.hash=c.length?c.reduce((function(e,t){return t.name||C(15),Y(e,t.name)}),5381).toString():"",f}var Q=o.a.createContext(),K=Q.Consumer,Z=o.a.createContext(),J=(Z.Consumer,new U),ee=G();function te(){return Object(i.useContext)(Q)||J}function ne(){return Object(i.useContext)(Z)||ee}function re(e){var t=Object(i.useState)(e.stylisPlugins),n=t[0],r=t[1],a=te(),l=Object(i.useMemo)((function(){var t=a;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target})),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),c=Object(i.useMemo)((function(){return G({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return Object(i.useEffect)((function(){s()(n,e.stylisPlugins)||r(e.stylisPlugins)}),[e.stylisPlugins]),o.a.createElement(Q.Provider,{value:l},o.a.createElement(Z.Provider,{value:c},e.children))}var ie=function(){function e(e,t){var n=this;this.inject=function(e){e.hasNameForId(n.id,n.name)||e.insertRules(n.id,n.name,ee.apply(void 0,n.stringifyArgs))},this.toString=function(){return C(12,String(n.name))},this.name=e,this.id="sc-keyframes-"+e,this.stringifyArgs=t}return e.prototype.getName=function(){return this.name},e}(),oe=/([A-Z])/g,ae=/^ms-/;function se(e){return e.replace(oe,"-$1").toLowerCase().replace(ae,"-ms-")}var le=function(e){return null==e||!1===e||""===e},ce=function e(t,n){var r=[];return Object.keys(t).forEach((function(n){if(!le(t[n])){if(m(t[n]))return r.push.apply(r,e(t[n],n)),r;if(v(t[n]))return r.push(se(n)+":",t[n],";"),r;r.push(se(n)+": "+(i=n,(null==(o=t[n])||"boolean"==typeof o||""===o?"":"number"!=typeof o||0===o||i in c.a?String(o).trim():o+"px")+";"))}var i,o;return r})),n?[n+" {"].concat(r,["}"]):r};function ue(e,t,n){if(Array.isArray(e)){for(var r,i=[],o=0,a=e.length;o1?t-1:0),r=1;r1?t-1:0),r=1;r25?39:97))};function ve(e){var t,n="";for(t=Math.abs(e);t>52;t=t/52|0)n=ge(t%52)+n;return _+(ge(t%52)+n).replace(be,"$1-$2")}function ye(e){for(var t=0;t>>0);if(!t.hasNameForId(r,o)){var a=n(i,"."+o,void 0,r);t.insertRules(r,o,a)}return this.staticRulesId=o,o}for(var s=this.rules.length,l=Y(this.baseHash,n.hash),c="",u=0;u>>0);if(!t.hasNameForId(r,f)){var m=n(c,"."+f,void 0,r);t.insertRules(r,f,m)}return f},e}(),Me=(new Set,function(e,t,n){return void 0===n&&(n=g),e.theme!==n.theme&&e.theme||t||n.theme}),_e=/[!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~-]+/g,we=/(^-|-$)/g;function Oe(e){return e.replace(_e,"-").replace(we,"")}function xe(e){return"string"==typeof e&&!0}var ze=function(e){return ve($(e)>>>0)};var Ce=o.a.createContext(),Se=Ce.Consumer;function Te(e){var t=Object(i.useContext)(Ce),n=Object(i.useMemo)((function(){return function(e,t){return e?v(e)?e(t):Array.isArray(e)||"object"!=typeof e?C(8):t?h({},t,{},e):e:C(14)}(e.theme,t)}),[e.theme,t]);return e.children?o.a.createElement(Ce.Provider,{value:n},e.children):null}var ke={};function Le(e,t,n){var r=e.attrs,o=e.componentStyle,a=e.defaultProps,s=e.foldedComponentIds,l=e.shouldForwardProp,c=e.styledComponentId,d=e.target;Object(i.useDebugValue)(c);var p=function(e,t,n){void 0===e&&(e=g);var r=h({},t,{theme:e}),i={};return n.forEach((function(e){var t,n,o,a=e;for(t in v(a)&&(a=a(r)),a)r[t]=i[t]="className"===t?(n=i[t],o=a[t],n&&o?n+" "+o:n||o):a[t]})),[r,i]}(Me(t,Object(i.useContext)(Ce),a)||g,t,r),f=p[0],m=p[1],b=function(e,t,n,r){var o=te(),a=ne(),s=e.isStatic&&!t?e.generateAndInjectStyles(g,o,a):e.generateAndInjectStyles(n,o,a);return Object(i.useDebugValue)(s),s}(o,r.length>0,f),y=n,A=m.$as||t.$as||m.as||t.as||d,M=xe(A),_=m!==t?h({},t,{},m):t,w=l||M&&u.a,O={};for(var x in _)"$"!==x[0]&&"as"!==x&&("forwardedAs"===x?O.as=_[x]:w&&!w(x,u.a)||(O[x]=_[x]));return t.style&&m.style!==t.style&&(O.style=h({},t.style,{},m.style)),O.className=Array.prototype.concat(s,c,b!==c?b:null,t.className,m.className).filter(Boolean).join(" "),O.ref=y,Object(i.createElement)(A,O)}function Ee(e,t,n){var r=A(e),i=!xe(e),a=t.displayName,s=void 0===a?function(e){return xe(e)?"styled."+e:"Styled("+y(e)+")"}(e):a,l=t.componentId,c=void 0===l?function(e,t){var n="string"!=typeof e?"sc":Oe(e);ke[n]=(ke[n]||0)+1;var r=n+"-"+ze(n+ke[n]);return t?t+"-"+r:r}(t.displayName,t.parentComponentId):l,u=t.attrs,d=void 0===u?b:u,f=t.displayName&&t.componentId?Oe(t.displayName)+"-"+t.componentId:t.componentId||c,m=r&&e.attrs?Array.prototype.concat(e.attrs,d).filter(Boolean):d,g=t.shouldForwardProp;r&&e.shouldForwardProp&&(g=g?function(n,r){return e.shouldForwardProp(n,r)&&t.shouldForwardProp(n,r)}:e.shouldForwardProp);var v,M=new Ae(r?e.componentStyle.rules.concat(n):n,f),_=function(e,t){return Le(v,e,t)};return _.displayName=s,(v=o.a.forwardRef(_)).attrs=m,v.componentStyle=M,v.displayName=s,v.shouldForwardProp=g,v.foldedComponentIds=r?Array.prototype.concat(e.foldedComponentIds,e.styledComponentId):b,v.styledComponentId=f,v.target=r?e.target:e,v.withComponent=function(e){var r=t.componentId,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(t,["componentId"]),o=r&&r+"-"+(xe(e)?e:Oe(y(e)));return Ee(e,h({},i,{attrs:m,componentId:o}),n)},Object.defineProperty(v,"defaultProps",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=r?me({},e.defaultProps,t):t}}),v.toString=function(){return"."+v.styledComponentId},i&&p()(v,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,self:!0,styledComponentId:!0,target:!0,withComponent:!0}),v}var Pe=function(e){return function e(t,n,i){if(void 0===i&&(i=g),!Object(r.isValidElementType)(n))return C(1,String(n));var o=function(){return t(n,i,de.apply(void 0,arguments))};return o.withConfig=function(r){return e(t,n,h({},i,{},r))},o.attrs=function(r){return e(t,n,h({},i,{attrs:Array.prototype.concat(i.attrs,r).filter(Boolean)}))},o}(Ee,e)};["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","big","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","keygen","label","legend","li","link","main","map","mark","marquee","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","section","select","small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr","circle","clipPath","defs","ellipse","foreignObject","g","image","line","linearGradient","marker","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","svg","text","tspan"].forEach((function(e){Pe[e]=Pe(e)}));var Re=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=ye(e)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var i=r(ue(this.rules,t,n).join(""),""),o=this.componentId+e;n.insertRules(o,o,i)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){U.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function De(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r"+t+""},this.getStyleTags=function(){return e.sealed?C(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return C(2);var n=((t={})[M]="",t["data-styled-version"]="5.1.1",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=z();return r&&(n.nonce=r),[o.a.createElement("style",h({},n,{key:"sc-0-0"}))]},this.seal=function(){e.sealed=!0},this.instance=new U({isServer:!0}),this.sealed=!1}var t=e.prototype;return t.collectStyles=function(e){return this.sealed?C(2):o.a.createElement(re,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return C(3)},e}(),Be=function(e){var t=o.a.forwardRef((function(t,n){var r=Object(i.useContext)(Ce),a=e.defaultProps,s=Me(t,r,a);return o.a.createElement(e,h({},t,{theme:s,ref:n}))}));return p()(t,e),t.displayName="WithTheme("+y(e)+")",t},qe=function(){return Object(i.useContext)(Ce)},Ie={StyleSheet:U,masterSheet:J},Fe="5.1.1";t.default=Pe}.call(this,n(118))},130:function(e,t,n){"use strict";(function(t){var r,i=Object.create,o=Object.defineProperty,a=Object.defineProperties,s=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyDescriptors,c=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,d=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty,h=Object.prototype.propertyIsEnumerable,f=(e,t,n)=>t in e?o(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,m=(e,t)=>{for(var n in t||(t={}))p.call(t,n)&&f(e,n,t[n]);if(u)for(var n of u(t))h.call(t,n)&&f(e,n,t[n]);return e},b=(e,t)=>a(e,l(t)),g=(e,t)=>{var n={};for(var r in e)p.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&u)for(var r of u(e))t.indexOf(r)<0&&h.call(e,r)&&(n[r]=e[r]);return n},v=(e,t)=>{for(var n in t)o(e,n,{get:t[n],enumerable:!0})},y=(e,t,n,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let i of c(t))p.call(e,i)||i===n||o(e,i,{get:()=>t[i],enumerable:!(r=s(t,i))||r.enumerable});return e},A=(e,t,n)=>(y(e,t,"default"),n&&y(n,t,"default")),M=(e,t,n)=>(n=null!=e?i(d(e)):{},y(!t&&e&&e.__esModule?n:o(n,"default",{value:e,enumerable:!0}),e)),_=(e,t,n)=>new Promise((r,i)=>{var o=e=>{try{s(n.next(e))}catch(e){i(e)}},a=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(o,a);s((n=n.apply(e,t)).next())}),w={};v(w,{ACTIVE_TAB_SEARCH_PARAM:()=>O,CANNOT_CONTAIN_TOKEN_MSG:()=>$i,DEFAULT_CANVAS_HEIGHT:()=>dt,DEFAULT_CANVAS_WIDTH:()=>ut,DEFAULT_FILTERS:()=>Ei,DEFAULT_INPUT_ON_CANVAS_HEIGHT:()=>ht,DEFAULT_INPUT_ON_CANVAS_WIDTH:()=>pt,DEFAULT_SCALE_FACTOR:()=>lt,DEFAULT_TOKEN_NAMESPACE:()=>zi,DYNAMIC_STRING_SUBSTITUTE:()=>Ie,INVALID_CHAR_MSG:()=>Gi,INVALID_FIRST_LAST_CHAR_MSG:()=>Xi,MAX_CHAIN_LENGTH:()=>fn,TOKEN_NAMESPACE_PREFIX_PATTERN:()=>nn,TOKEN_NAME_CHARS_PATTERN:()=>rn,TOKEN_OR_DOLLAR_RE:()=>ln,TokenNameRegExp:()=>an,TokenRegExp:()=>cn,VIZ_DEFAULT_HEIGHT_PX:()=>ct,addTempCanvasImage:()=>le,allowKeyboardShortcut:()=>it,appendClonedChild:()=>Oe,applyCanvasBackgroundColor:()=>ie,applyCanvasEffects:()=>ye,applyTableScroll:()=>ee,applyTableScrolls:()=>te,applyVizEffect:()=>ve,arrayToCSSProp:()=>kn,b64EncodeUnicode:()=>ze,blobToDataUri:()=>Q,cloneNodeChildren:()=>ue,cloneNodeStyles:()=>se,cloneNodeWithStyles:()=>de,collides:()=>ft,computeLocationPort:()=>mt,computeMaxHeight:()=>St,computeNewAbsoluteStructureItem:()=>Tt,computeNewBlockItemPosition:()=>xt,computeNewGridStructureItem:()=>kt,computeNewInputPosition:()=>Ct,computeNewLinePosition:()=>zt,computeNextAvailablePosition:()=>Ot,console:()=>L,convertLineToBlockItem:()=>gt,convertToBlockItem:()=>vt,convertToBlockItems:()=>yt,copyStyles:()=>J,createExportFileName:()=>fe,createRangeLabel:()=>Dr,deepFreeze:()=>Te,deepMergeWithDefaults:()=>Re,defaultRealTimePreset:()=>Ir,defaultSPLSyntax:()=>De,defaultTimePreset:()=>qr,deprecated:()=>qe,domNodeToSvg:()=>oe,domNodeToSvgDataUri:()=>ae,downloadCsv:()=>$,downloadPng:()=>Y,drawImage:()=>he,drawImageOnCanvas:()=>pe,epochToMoment:()=>dr,exportDashboardToFile:()=>xe,exportPdf:()=>X,exportSearchDataAsCsv:()=>_e,exportVizAsPng:()=>we,extractTokens:()=>qi,extractTokensFromNamespaceNameArray:()=>Fi,extractTokensFromObject:()=>Ii,fetchExternalResources:()=>K,findHorizontalNeighbors:()=>qt,findPresetLabel:()=>Sr,findVerticalNeighbors:()=>It,formatDuration:()=>jr,formatRiskyCommandErrorMessage:()=>pn,formatValueForCsv:()=>Me,getCssStyles:()=>Z,getDefaultDataSourceName:()=>Ce,getDefaultPosition:()=>wt,getDeprecatedVisualizations:()=>Ht,getFirstCollision:()=>Mt,getFocus:()=>nt,getItemsWithUpdatedPositions:()=>Ft,getPositionByType:()=>_t,getRiskyCommands:()=>dn,getScrollbarWidth:()=>Lt,getTokenNameError:()=>Qi,getUnitLabel:()=>fr,getWindowLocationSearch:()=>no,hasFocus:()=>tt,hasTokens:()=>Wi,hasTokensInObject:()=>Hi,hasWhiteSpace:()=>eo,hashString:()=>Ue,isAbsolute:()=>yr,isAbsoluteURL:()=>Zi,isAllTime:()=>zr,isBlockItem:()=>Et,isBottomNeighbor:()=>Bt,isDataUri:()=>G,isDynamicOption:()=>Fe,isEarliestEmpty:()=>Or,isEmpty:()=>et,isEmptyArray:()=>Ze,isEmptyObject:()=>Je,isEmptyOrUndefined:()=>$e,isEpoch:()=>gr,isISO:()=>vr,isLatestNow:()=>xr,isLayoutItem:()=>Qe,isLayoutStructure:()=>Ke,isLeftNeighbor:()=>Dt,isMac:()=>oo,isPlainObject:()=>Ye,isPrimitive:()=>Xe,isPrimitiveArray:()=>Ge,isRealTime:()=>_r,isRelativeURL:()=>Ji,isRightNeighbor:()=>Nt,isRiskyCommandError:()=>un,isTopNeighbor:()=>jt,isValidTime:()=>Mr,isValidTokenNamespace:()=>ki,isValidTokenValue:()=>Ti,isValidUrl:()=>to,isVizFocused:()=>rt,isWholeDay:()=>wr,logfmt:()=>E,mapActiveTabToURL:()=>z,mapTokensToURL:()=>Yi,mapURLToActiveTab:()=>x,mapURLToTokens:()=>Ui,migrateDashboardDefinition:()=>Qt,migrateInputDefaultValueToTokenDefaults:()=>Vt,migrateLegacyVisualizationsToPlatformVisualizations:()=>Gt,migrateToTabsLayout:()=>en,migrateVisualizationDefaults:()=>Xt,navigateToUrl:()=>ro,noop:()=>tn,normalizeSnapUnit:()=>hr,normalizeUnit:()=>pr,parse:()=>Br,parseTimeString:()=>Ar,processCanvasBackgroundImage:()=>me,processImageNode:()=>be,processImages:()=>ge,removeISOTimezone:()=>br,removeRealTime:()=>mr,removeTempCanvasImage:()=>ce,replaceSvgChoroIframe:()=>ne,replaceSvgChoroIframes:()=>re,replaceTokens:()=>Ni,replaceTokensForObject:()=>Bi,replaceTokensForObjectWithMetadata:()=>Di,replaceTokensWithHash:()=>ji,replaceTokensWithMetadata:()=>Ri,replaceTokensWithRegexp:()=>Pi,runningSearchStatuses:()=>hn,safeReplaceTokensForObject:()=>Vi,scaleWidthAndHeight:()=>Ae,shallowEqual:()=>On,snapUnits:()=>sr,sortLayoutItems:()=>At,startsWithToken:()=>Si,timeRangesAreEquivalent:()=>Cr,timeUnits:()=>ar,toCoordinate:()=>bt,toDimension:()=>Tn,toMargin:()=>Ln,toPadding:()=>En,toPx:()=>Sn,uniqueId:()=>Ki,updateRemovedVizNeighbors:()=>Wt,wait:()=>U}),e.exports=(r=w,y(o({},"__esModule",{value:!0}),r));var O="tab",x=({search:e,tabIds:t})=>{const n=new URLSearchParams(e).get(O);if(n&&t.includes(n))return n},z=({search:e="?",activeTab:t})=>{const n=new URLSearchParams(e);return t&&n.set(O,t),n.toString()},C="undefined"!=typeof window&&"console"in window,S=e=>C&&"function"==typeof window.console[e],T=()=>{},k={log:S("log")?(...e)=>window.console.log(...e):T,debug:S("debug")?(...e)=>window.console.debug(...e):T,info:S("info")?(...e)=>window.console.info(...e):T,warn:S("warn")?(...e)=>window.console.warn(...e):T,error:S("error")?(...e)=>window.console.error(...e):T,group:S("group")?(...e)=>window.console.group(...e):T,groupCollapsed:S("groupCollapsed")?(...e)=>window.console.groupCollapsed(...e):T,groupEnd:S("groupEnd")?()=>window.console.groupEnd():T,logWithDetails(e,t){k.groupCollapsed(e),t.forEach(e=>Array.isArray(e)?k.log(...e):k.log(e)),k.groupEnd()}},L=k;function E(e,...t){return[e.join("%o"),...t||[]]}var P={};v(P,{default:()=>D});var R=M(n(3));A(P,n(3));var D="default"in R?R.default:R,N={};v(N,{default:()=>B});var j=M(n(870));A(N,n(870));var B="default"in j?j.default:j,q={};v(q,{default:()=>F});var I=M(n(87));A(q,n(87));var F="default"in I?I.default:I,W={};v(W,{default:()=>V});var H=M(n(7));A(W,n(7));var V="default"in H?H.default:H,U=e=>new Promise(t=>{setTimeout(t,e)}),Y=(e,t)=>{const n=new MouseEvent("click",{view:window,bubbles:!1,cancelable:!0}),r=document.createElement("a");r.setAttribute("download",t+".png"),r.setAttribute("href",e),r.dispatchEvent(n)},$=(e,t)=>{const n=new MouseEvent("click",{view:window,bubbles:!1,cancelable:!0}),r=document.createElement("a");r.setAttribute("download",t+".csv"),r.setAttribute("href",e),r.dispatchEvent(n)},X=(e,t,n,r)=>{const i=new B({orientation:e>t?"landscape":"portrait",unit:"px",format:[e,t],hotfixes:["px_scaling"]});i.addImage(n,"PNG",0,0,i.internal.pageSize.getWidth(),i.internal.pageSize.getHeight(),"","FAST"),i.save(r+".pdf")},G=e=>/^(data:)/.test(e),Q=e=>new Promise((t,n)=>{const r=new FileReader;r.onloadend=()=>{t(r.result)},r.onerror=n,r.readAsDataURL(e)}),K=e=>_(void 0,null,(function*(){const n=yield t(e);if(!n.ok)throw new Error("Unable to fetch resources at: "+e);const r=yield n.blob();return Q(r)})),Z=e=>_(void 0,null,(function*(){const t=/url\(['"]?([^'"]+?)['"]?\)/g,n=Array.from(e.ownerDocument.styleSheets),r=[];return yield Promise.all(n.map(e=>_(void 0,null,(function*(){let n;try{n=e.cssRules}catch(e){L.error(e),n=[]}yield Promise.all(Array.from(n).map(e=>_(void 0,null,(function*(){if("CSSFontFaceRule"!==e.constructor.name)return void r.push(e.cssText);const{style:n,cssText:i}=e,o=n.getPropertyValue("src"),a=[];let s=t.exec(o);for(;null!==s;)a.push(s[1]),s=t.exec(o);yield Promise.all(a.filter(e=>!G(e)).map(e=>_(void 0,null,(function*(){try{const t=yield K(e);r.push(i.replace(e,t))}catch(e){L.error(e)}}))))}))))})))),r.map(e=>e+"\n").join("")})),J=e=>_(void 0,null,(function*(){const t=document.createElementNS("http://www.w3.org/2000/svg","style"),n=yield Z(e);return t.appendChild(document.createTextNode(n)),t})),ee=(e,t,n)=>{var r,i;if("viz.table"!==n&&"splunk.table"!==n||!e.getElementsByTagName("tbody").length)return;const o=null==(r=e.querySelector("[data-test=main-table]"))?void 0:r.parentNode,{scrollLeft:a=0,scrollTop:s=0}=o,l=0-a,c=0-s;t.getElementsByTagName("tbody")[0].style.transform=`translate(${l}px, ${c}px)`;const u=null==(i=t.querySelector("[data-test=main-table]"))?void 0:i.parentNode,d=t.querySelector("[data-test=table]");u.style.overflow="hidden",d.style.width="100%",d.style.height="100%"},te=(e,t)=>{const n=e.querySelectorAll('div[data-viz-type="viz.table"], div[data-viz-type="splunk.table"]'),r=t.querySelectorAll('div[data-viz-type="viz.table"], div[data-viz-type="splunk.table"]');n.forEach((e,t)=>{ee(e,r[t],"viz.table")})},ne=(e,t)=>_(void 0,null,(function*(){if(!t.includes("choropleth")||!e.getElementsByTagName("iframe").length)return;const n=new XMLSerializer,r=e.getElementsByTagName("iframe")[0],{parentNode:i}=r,o=yield(e=>_(void 0,null,(function*(){const{src:t}=e;if(!t)return;const n=/data:[^;]+;base64,(.*)$/;let r=null;if(G(t))r=n.exec(t);else{const e=yield K(t);r=n.exec(e)}if(null==r?void 0:r[1]){const e=r[1],t=atob(e);return(new DOMParser).parseFromString(t,"application/xml").getElementsByTagName("svg")[0]}})))(r);if(o){const e=n.serializeToString(o),t=new Image;t.src="data:image/svg+xml;base64,"+btoa(e),null==i||i.replaceChild(t,r)}})),re=e=>_(void 0,null,(function*(){const t=e.querySelectorAll('div[data-viz-type="viz.choropleth.svg"]'),n=Array.from(t).map(e=>ne(e,"viz.choropleth.svg")),r=e.querySelectorAll('div[data-viz-type="splunk.choropleth.svg"]'),i=Array.from(r).map(e=>ne(e,"splunk.choropleth.svg"));yield Promise.all([...n,...i])})),ie=e=>{const t=document.querySelector('[data-test="canvas"]');t&&(e.style.backgroundColor=window.getComputedStyle(t).backgroundColor)},oe=(e,t,n)=>` ${e} `,ae=(e,t,n)=>_(void 0,null,(function*(){const r=yield J(e);e.insertBefore(r,e.firstChild);const i=(new XMLSerializer).serializeToString(e);return"data:image/svg+xml;charset=utf-8,"+encodeURIComponent(oe(i,t,n))})),se=(e,t)=>{if(!(e instanceof HTMLElement))return;const n=window.getComputedStyle(t),r=e.style;n.cssText?r.cssText=n.cssText:Array.from(n).forEach(e=>{r.setProperty(e,n.getPropertyValue(e),n.getPropertyPriority(e))})},le=e=>{Array.from(e.getElementsByTagName("canvas")).forEach(e=>{var t;const n=document.createElement("img");n.src=e.toDataURL("image/png"),se(n,e),n.setAttribute("data-test","temp-canvas-image"),null==(t=e.parentNode)||t.insertBefore(n,e.nextElementSibling)})},ce=e=>{e.querySelectorAll("[data-test=temp-canvas-image]").forEach(e=>{var t;return null==(t=e.parentElement)?void 0:t.removeChild(e)})},ue=(e,t)=>{const{childNodes:n}=t;n.forEach(t=>{const n=t.cloneNode();se(n,t),e.appendChild(n),ue(n,t)})},de=e=>{le(e);const t=e.cloneNode();return se(t,e),ue(t,e),ce(e),t},pe=(e,t)=>{const n=t.getContext("2d");return n.drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),n.imageSmoothingQuality="high",t.toDataURL("image/png")},he=(e,t,n)=>new Promise((r,i)=>{const o=document.createElement("canvas");o.getContext||i((0,P._)("Canvas is not supported"));const a=new Image;a.crossOrigin="anonymous",o.width=t,o.height=n,a.addEventListener("load",()=>{U(0).then(()=>{r(pe(a,o))}).catch(i)}),a.addEventListener("error",i),a.src=e}),fe=e=>`${e}_${F().format("YYYY-MM-DD [at] hh.mm.ssZZ")}_Splunk`,me=e=>_(void 0,null,(function*(){var t;const n=e.querySelector("div[data-test=canvas]"),r=null==(t=null==n?void 0:n.style)?void 0:t.backgroundImage,i=/url\(['"]?([^'"]+?)['"]?\)/g.exec(r);if(i)try{const e=yield K(i[1]);n.style.backgroundImage=`url(${e})`}catch(e){L.error(e)}})),be=e=>_(void 0,null,(function*(){const{src:t}=e;let n="";G(t)||(n=yield K(t),e.src=n)})),ge=(e,t)=>_(void 0,null,(function*(){const n=e.getElementsByTagName("img");let r=0;if(n.length>0&&(yield Promise.all(Array.from(n).map(e=>_(void 0,null,(function*(){try{yield be(e)}catch(e){if(r+=1,"viz.img"===t)throw e}}))))),r>0)throw new Error((0,P._)("Some external images can not be downloaded."))})),ve=(e,t,n)=>{ee(e,t,n),ie(t),ne(t,n)},ye=(e,t)=>_(void 0,null,(function*(){yield me(t),te(e,t),yield re(t)})),Ae=(e,t,n,r)=>{let i=n,o=r;return t&&1!==t&&(e.style.cssText=`transform: scale(${t}); transform-origin: 0 0;`,i=n*t,o=r*t),{scaledWidth:i,scaledHeight:o}},Me=e=>{let t=e;return Array.isArray(t)&&(t=t.join(",")),"string"==typeof t&&(t.search(/["\r\n]/g)>=0||t.includes(","))?`"${t.replace(/"/g,'""')}"`:t},_e=(e,t)=>_(void 0,null,(function*(){var n,r;if(!(null==(n=null==e?void 0:e.data)?void 0:n.fields)||!(null==(r=null==e?void 0:e.data)?void 0:r.columns))throw new Error((0,P._)("Unable to export CSV due to invalid search data"));const i=[e.data.fields.map(e=>Me(e.name)),...(0,W.zipWith)(...e.data.columns,(...e)=>e.map(Me))].join("\n"),o=URL.createObjectURL(new Blob([i],{type:"text/csv;charset=utf-8"}));$(o,fe(t))})),we=e=>_(void 0,[e],(function*({vizDomNode:e,vizId:t,vizType:n,scale:r=1,filename:i}){if(!e)throw new Error((0,P._)(`Visualization ${n} not found.`));const o=de(e),{clientWidth:a,clientHeight:s}=e,{scaledWidth:l,scaledHeight:c}=Ae(o,r,a,s);ve(e,o,n);try{yield ge(o)}catch(e){throw new Error((0,P._)("Images from external URLs can not be downloaded."))}try{const e=yield ae(o,l,c),t=yield he(e,l||a,c||s);Y(t,fe(i||n))}catch(e){throw new Error((0,P._)(`Unable to export the visualization with id of ${t} as PNG.`))}})),Oe=(e,t)=>t?(e.appendChild(de(t)),t.clientHeight):0,xe=e=>_(void 0,[e],(function*({fileType:e,dashboardTitle:t,dashboardHeaderDomNode:n,dashboardInputsDomNode:r,dashboardCanvasDomNode:i,scale:o=1,showToast:a,drawImage:s=he}){const l=de(i);let{clientHeight:c}=i;const{clientWidth:u}=i,d=document.createElement("div");c+=Oe(d,n),c+=Oe(d,r),d.appendChild(l);const{scaledWidth:p,scaledHeight:h}=Ae(d,o,u,c);(n||r)&&(d.style.backgroundColor=window.getComputedStyle(n||r).backgroundColor),yield ye(i,l);try{yield ge(d)}catch(e){a&&a("Images from external URLs cannot be downloaded.")}try{const n=yield ae(d,p,h),r=yield s(n,p||u,h||c),i=fe(t||(0,P._)("My Dashboard"));"png"===(null==e?void 0:e.toLowerCase())?Y(r,i):X(u,c,r,i)}catch(t){throw new Error((0,P._)("Unable to export the dashboard as "+e))}})),ze=e=>btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(e,t){return String.fromCharCode(parseInt("0x"+t,16))}))),Ce=({dataSource:e})=>(null==e?void 0:e.name)||"",Se=e=>{return(t=e)&&"object"==typeof t?(Object.values(e).forEach(e=>{Se(e)}),Object.freeze(e)):e;var t},Te=Se,ke={};v(ke,{default:()=>Ee});var Le=M(n(415));A(ke,n(415));var Ee="default"in Le?Le.default:Le,Pe=(e,t)=>{if(void 0===e)return t;if(!Ee(e)||!Ee(t))return e;const n=e,r=t,i={},o=new Set([...Object.keys(n),...Object.keys(r)]);let a=!1;return o.forEach(e=>{i[e]=Pe(n[e],r[e]),n[e]!==i[e]&&(a=!0)}),a?i:n},Re=(e,...t)=>t.reduce((e,t)=>Pe(e,t),e),De={"excerpt-command":{isList:!1,args:[{key:"maxterms",valueType:"int"},{key:"maxlines",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"abstract-command":{isList:!1,args:[{key:"maxterms",valueType:"int"},{key:"maxlines",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"accum-command":{isList:!1,args:[],functions:[],keywords:["AS"],other:["field","field"],list:[]},"addcoltotals-command":{isList:!1,args:[{key:"labelfield",valueType:"field"},{key:"label",valueType:"string"}],functions:[],keywords:[],other:["field-list"],list:[]},"addinfo-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"addtotals-command":{isList:!1,args:[{key:"row",valueType:"bool"},{key:"col",valueType:"bool"},{key:"labelfield",valueType:"field"},{key:"label",valueType:"string"},{key:"fieldname",valueType:"field"}],functions:[],keywords:[],other:["field-list"],list:[]},"af-command":{isList:!1,args:[{key:"classfield",valueType:"field"}],functions:[],keywords:[],other:[],list:[]},"analyzefields-command":{isList:!1,args:[{key:"classfield",valueType:"field"}],functions:[],keywords:[],other:[],list:[]},"anomalies-command":{isList:!1,args:[{key:"threshold",valueType:"num"},{key:"labelonly",valueType:"bool"},{key:"normalize",valueType:"bool"},{key:"maxvalues",valueType:"int"},{key:"field",valueType:"field"},{key:"denylist",valueType:"filename"},{key:"denylistthreshold",valueType:"num"}],functions:[],keywords:["by"],other:["field-list"],list:[]},"anomalousvalue-command":{isList:!1,args:[{key:"minsupcount",valueType:"int"},{key:"maxanofreq",valueType:"num"},{key:"minsupfreq",valueType:"num"},{key:"minnormfreq",valueType:"num"},{key:"action",valueType:""},{key:"pthresh",valueType:"num"}],functions:[],keywords:[],other:["field-list"],list:[]},"anomalydetection-command":{isList:!1,args:[{key:"method",valueType:""},{key:"action",valueType:""},{key:"action",valueType:""},{key:"pthresh",valueType:"num"},{key:"cutoff",valueType:"bool"}],functions:[],keywords:[],other:["field-list"],list:[]},"append-command":{isList:!1,args:[{key:"extendtimerange",valueType:"bool"},{key:"maxtime",valueType:"int"},{key:"maxout",valueType:"int"},{key:"timeout",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"appendcols-command":{isList:!1,args:[{key:"override",valueType:"bool"},{key:"extendtimerange",valueType:"bool"},{key:"maxtime",valueType:"int"},{key:"maxout",valueType:"int"},{key:"timeout",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"appendpipe-command":{isList:!1,args:[{key:"run_in_preview",valueType:"bool"}],functions:[],keywords:[],other:["subpipeline"],list:[]},"archivebuckets-command":{isList:!1,args:[{key:"forcerun",valueType:""},{key:"retries",valueType:""}],functions:[],keywords:[],other:[],list:[]},"arules-command":{isList:!1,args:[{key:"sup",valueType:"int"},{key:"conf",valueType:"num"}],functions:[],keywords:[],other:["fields"],list:[]},"associate-command":{isList:!1,args:[{key:"supcnt",valueType:"int"},{key:"supfreq",valueType:"num"},{key:"improv",valueType:"num"}],functions:[],keywords:[],other:["field-list"],list:[]},"audit-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"ar-command":{isList:!1,args:[{key:"p",valueType:""}],functions:[],keywords:["AS"],other:["field","field:newfield"],list:[]},"autoregress-command":{isList:!1,args:[{key:"p",valueType:""}],functions:[],keywords:["AS"],other:["field","field:newfield"],list:[]},"bucket-command":{isList:!1,args:[{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""}],functions:[],keywords:["as"],other:["field","field"],list:[]},"discretize-command":{isList:!1,args:[{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""}],functions:[],keywords:["as"],other:["field","field"],list:[]},"bin-command":{isList:!1,args:[{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""}],functions:[],keywords:["as"],other:["field","field"],list:[]},"bucketdir-command":{isList:!1,args:[{key:"pathfield",valueType:"field"},{key:"sizefield",valueType:"field"},{key:"maxcount",valueType:"int"},{key:"countfield",valueType:"field"},{key:"sep",valueType:"char"}],functions:[],keywords:[],other:[],list:[]},"chart-command":{isList:!1,args:[{key:"sep",valueType:"string"},{key:"format",valueType:"string"},{key:"cont",valueType:"bool"},{key:"limit",valueType:"chart-limit-opt"},{key:"agg",valueType:"stats-agg-term"},{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""},{key:"usenull",valueType:"bool"},{key:"useother",valueType:"bool"},{key:"nullstr",valueType:"string"},{key:"otherstr",valueType:"string"},{key:"dedup_splitvals",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1},{name:"sparkline",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"range",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"distinct_count",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"mode",parenOptional:!1},{name:"median",parenOptional:!1},{name:"earliest",parenOptional:!1},{name:"first",parenOptional:!1},{name:"last",parenOptional:!1},{name:"latest",parenOptional:!1},{name:"list",parenOptional:!1},{name:"values",parenOptional:!1},{name:"range",parenOptional:!1},{name:"estdc",parenOptional:!1},{name:"estdc_error",parenOptional:!1},{name:"earliest_time",parenOptional:!1},{name:"latest_time",parenOptional:!1},{name:"rate",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","BY","where","OVER"],other:["field","num","string","wc-field","int","|"],list:[]},"slc-command":{isList:!1,args:[{key:"t",valueType:"num"},{key:"delims",valueType:"string"},{key:"showcount",valueType:"bool"},{key:"countfield",valueType:"field"},{key:"labelfield",valueType:"field"},{key:"field",valueType:"field"},{key:"labelonly",valueType:"bool"},{key:"match",valueType:""}],functions:[],keywords:[],other:[],list:[]},"cluster-command":{isList:!1,args:[{key:"t",valueType:"num"},{key:"delims",valueType:"string"},{key:"showcount",valueType:"bool"},{key:"countfield",valueType:"field"},{key:"labelfield",valueType:"field"},{key:"field",valueType:"field"},{key:"labelonly",valueType:"bool"},{key:"match",valueType:""}],functions:[],keywords:[],other:[],list:[]},"cofilter-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"collapse-command":{isList:!1,args:[{key:"chunksize",valueType:"num"},{key:"force",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"stash-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"addtime",valueType:"bool"},{key:"file",valueType:"string"},{key:"spool",valueType:"bool"},{key:"marker",valueType:"string"},{key:"testmode",valueType:"bool"},{key:"run_in_preview",valueType:"bool"},{key:"host",valueType:"string"},{key:"source",valueType:"string"},{key:"sourcetype",valueType:"string"},{key:"uselb",valueType:"bool"},{key:"output_format",valueType:""}],functions:[],keywords:[],other:[],list:[]},"summaryindex-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"addtime",valueType:"bool"},{key:"file",valueType:"string"},{key:"spool",valueType:"bool"},{key:"marker",valueType:"string"},{key:"testmode",valueType:"bool"},{key:"run_in_preview",valueType:"bool"},{key:"host",valueType:"string"},{key:"source",valueType:"string"},{key:"sourcetype",valueType:"string"},{key:"uselb",valueType:"bool"},{key:"output_format",valueType:""}],functions:[],keywords:[],other:[],list:[]},"sumindex-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"addtime",valueType:"bool"},{key:"file",valueType:"string"},{key:"spool",valueType:"bool"},{key:"marker",valueType:"string"},{key:"testmode",valueType:"bool"},{key:"run_in_preview",valueType:"bool"},{key:"host",valueType:"string"},{key:"source",valueType:"string"},{key:"sourcetype",valueType:"string"},{key:"uselb",valueType:"bool"},{key:"output_format",valueType:""}],functions:[],keywords:[],other:[],list:[]},"collect-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"addtime",valueType:"bool"},{key:"file",valueType:"string"},{key:"spool",valueType:"bool"},{key:"marker",valueType:"string"},{key:"testmode",valueType:"bool"},{key:"run_in_preview",valueType:"bool"},{key:"host",valueType:"string"},{key:"source",valueType:"string"},{key:"sourcetype",valueType:"string"},{key:"uselb",valueType:"bool"},{key:"output_format",valueType:""}],functions:[],keywords:[],other:[],list:[]},"concurrency-command":{isList:!1,args:[{key:"duration",valueType:"field"},{key:"start",valueType:"field"},{key:"output",valueType:"field"}],functions:[],keywords:[],other:[],list:[]},"counttable-command":{isList:!1,args:[{key:"maxrows",valueType:"int"},{key:"maxcols",valueType:"int"},{key:"mincolcover",valueType:"num"},{key:"minrowcover",valueType:"num"},{key:"usetotal",valueType:"bool"},{key:"totalstr",valueType:"field"}],functions:[],keywords:[],other:["field","field"],list:[]},"ctable-command":{isList:!1,args:[{key:"maxrows",valueType:"int"},{key:"maxcols",valueType:"int"},{key:"mincolcover",valueType:"num"},{key:"minrowcover",valueType:"num"},{key:"usetotal",valueType:"bool"},{key:"totalstr",valueType:"field"}],functions:[],keywords:[],other:["field","field"],list:[]},"contingency-command":{isList:!1,args:[{key:"maxrows",valueType:"int"},{key:"maxcols",valueType:"int"},{key:"mincolcover",valueType:"num"},{key:"minrowcover",valueType:"num"},{key:"usetotal",valueType:"bool"},{key:"totalstr",valueType:"field"}],functions:[],keywords:[],other:["field","field"],list:[]},"convert-command":{isList:!1,args:[{key:"timeformat",valueType:"string"}],functions:[{name:"auto",parenOptional:!0},{name:"dur2sec",parenOptional:!1},{name:"mstime",parenOptional:!1},{name:"memk",parenOptional:!1},{name:"none",parenOptional:!1},{name:"num",parenOptional:!1},{name:"rmunit",parenOptional:!1},{name:"rmcomma",parenOptional:!1},{name:"ctime",parenOptional:!1},{name:"mktime",parenOptional:!1}],keywords:["as"],other:["wc-field","wc-field"],list:[]},"copyresults-command":{isList:!1,args:[{key:"dest",valueType:"string"},{key:"sid",valueType:"string"}],functions:[],keywords:[],other:[],list:[]},"correlate-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"createrss-command":{isList:!1,args:[{key:"path",valueType:"string"},{key:"name",valueType:"string"},{key:"link",valueType:"string"},{key:"descr",valueType:"string"},{key:"count",valueType:"int"},{key:"graceful",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"datamodel-command":{isList:!1,args:[{key:"allow_old_summaries",valueType:"bool"},{key:"summariesonly",valueType:"bool"},{key:"strict_fields",valueType:"bool"}],functions:[],keywords:[],other:["string"],list:[]},"dbinspect-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"span",valueType:""},{key:"timeformat",valueType:"string"},{key:"corruptonly",valueType:"bool"},{key:"bucketstate",valueType:"bucketstate-type"}],functions:[],keywords:[],other:[],list:[]},"debug-command":{isList:!1,args:[{key:"cmd",valueType:"debug-method"},{key:"param1",valueType:"string"},{key:"param2",valueType:"string"}],functions:[],keywords:[],other:["string"],list:[]},"dedup-command":{isList:!1,args:[{key:"keepevents",valueType:"bool"},{key:"keepempty",valueType:"bool"},{key:"consecutive",valueType:"bool"}],functions:[],keywords:["sortby"],other:["int","field-list","field"],list:[]},"delete-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"delta-command":{isList:!1,args:[{key:"p",valueType:"int"}],functions:[],keywords:["as"],other:["field","field:newfield"],list:[]},"dfsjob-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"diff-command":{isList:!1,args:[{key:"position1",valueType:"int"},{key:"position2",valueType:"int"},{key:"attribute",valueType:"string"},{key:"diffheader",valueType:"bool"},{key:"context",valueType:"bool"},{key:"maxlen",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"dispatch-command":{isList:!1,args:[{key:"ttl",valueType:"num"},{key:"maxresults",valueType:"num"},{key:"maxtime",valueType:"num"},{key:"id",valueType:"string"},{key:"spawn_process",valueType:"bool"},{key:"label",valueType:"string"},{key:"start_time",valueType:"num"},{key:"end_time",valueType:"num"}],functions:[],keywords:[],other:["string","search-pipeline"],list:[]},"dump-command":{isList:!1,args:[{key:"basefilename",valueType:"string"},{key:"rollsize",valueType:"num"},{key:"compress",valueType:"int"},{key:"format",valueType:"string"},{key:"fields",valueType:"comma-delimited-string"}],functions:[],keywords:[],other:[],list:[]},"editinfo-command":{isList:!1,args:[{key:"keyset",valueType:""},{key:"starttime",valueType:""},{key:"endtime",valueType:""},{key:"msg_error",valueType:""},{key:"msg_warn",valueType:""},{key:"msg_info",valueType:""},{key:"msg_debug",valueType:""}],functions:[],keywords:[],other:[],list:[]},"erex-command":{isList:!1,args:[{key:"examples",valueType:"erex-examples"},{key:"counterexamples",valueType:"erex-examples"},{key:"fromfield",valueType:"field"},{key:"maxtrainers",valueType:"int"}],functions:[],keywords:[],other:["field"],list:[]},"eval-command":{isList:!1,args:[],functions:[{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR"],other:["field","num","string"],list:[]},"eventcount-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"summarize",valueType:"bool"},{key:"report_size",valueType:"bool"},{key:"list_vix",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"eventstats-command":{isList:!1,args:[{key:"allnum",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by"],other:["field","num","string","wc-field","field-list"],list:[]},"kv-command":{isList:!1,args:[{key:"segment",valueType:"bool"},{key:"reload",valueType:"bool"},{key:"kvdelim",valueType:"string"},{key:"pairdelim",valueType:"string"},{key:"limit",valueType:"int"},{key:"maxchars",valueType:"int"},{key:"mv_add",valueType:"bool"},{key:"clean_keys",valueType:"bool"}],functions:[],keywords:[],other:["string"],list:[]},"extract-command":{isList:!1,args:[{key:"segment",valueType:"bool"},{key:"reload",valueType:"bool"},{key:"kvdelim",valueType:"string"},{key:"pairdelim",valueType:"string"},{key:"limit",valueType:"int"},{key:"maxchars",valueType:"int"},{key:"mv_add",valueType:"bool"},{key:"clean_keys",valueType:"bool"}],functions:[],keywords:[],other:["string"],list:[]},"fieldformat-command":{isList:!1,args:[],functions:[{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR"],other:["field","num","string"],list:[]},"fields-command":{isList:!1,args:[],functions:[],keywords:[],other:["wc-field-list"],list:[]},"fieldsummary-command":{isList:!1,args:[{key:"maxvals",valueType:"num"}],functions:[],keywords:[],other:["wc-field-list"],list:[]},"test-command":{isList:!1,args:[],functions:[],keywords:[],other:["filename"],list:[]},"file-command":{isList:!1,args:[],functions:[],keywords:[],other:["filename"],list:[]},"filldown-command":{isList:!1,args:[],functions:[],keywords:[],other:["wc-field-list"],list:[]},"fillnull-command":{isList:!1,args:[{key:"value",valueType:"string"}],functions:[],keywords:[],other:["field-list"],list:[]},"findkeywords-command":{isList:!1,args:[{key:"labelfield",valueType:"field"},{key:"dedup",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"findtypes-command":{isList:!1,args:[{key:"max",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"folderize-command":{isList:!1,args:[{key:"attr",valueType:"string"},{key:"sep",valueType:"string"},{key:"size",valueType:"string"},{key:"minfolders",valueType:"int"},{key:"maxfolders",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"foreach-command":{isList:!1,args:[{key:"fieldstr",valueType:"string"},{key:"matchstr",valueType:"string"},{key:"matchseg1",valueType:"string"},{key:"matchseg2",valueType:"string"},{key:"matchseg3",valueType:"string"}],functions:[],keywords:[],other:["wc-field","string"],list:[]},"format-command":{isList:!1,args:[{key:"quote",valueType:"bool"},{key:"mvsep",valueType:""},{key:"maxresults",valueType:"int"}],functions:[],keywords:[],other:["double-quoted-string","row end"],list:[]},"from-command":{isList:!0,args:[],functions:[],keywords:[],other:["ws","string"],list:["datamodel","savedsearch","inputlookup","federated"]},"gauge-command":{isList:!1,args:[],functions:[],keywords:[],other:["num","field","num","field"],list:[]},"gentimes-command":{isList:!1,args:[{key:"start",valueType:"timestamp"},{key:"end",valueType:"timestamp"},{key:"increment",valueType:"increment"}],functions:[],keywords:[],other:[],list:[]},"geom-command":{isList:!1,args:[{key:"allFeatures",valueType:"bool"},{key:"featureIdField",valueType:"string"},{key:"gen",valueType:"num"},{key:"min_x",valueType:"num"},{key:"min_y",valueType:"num"},{key:"max_x",valueType:"num"},{key:"max_y",valueType:"num"}],functions:[],keywords:[],other:["string"],list:[]},"geomfilter-command":{isList:!1,args:[{key:"min_x",valueType:"num"},{key:"min_y",valueType:"num"},{key:"max_x",valueType:"num"},{key:"max_y",valueType:"num"}],functions:[],keywords:[],other:[],list:[]},"geostats-command":{isList:!1,args:[{key:"translatetoxy",valueType:"bool"},{key:"latfield",valueType:"string"},{key:"longfield",valueType:"string"},{key:"outputlatfield",valueType:"string"},{key:"outputlongfield",valueType:"string"},{key:"globallimit",valueType:"int"},{key:"locallimit",valueType:"int"},{key:"binspanlat",valueType:"float"},{key:"binspanlong",valueType:""},{key:"maxzoomlevel",valueType:"int"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by"],other:["field","num","string","wc-field","field-list"],list:[]},"head-command":{isList:!1,args:[{key:"limit",valueType:"int"},{key:"null",valueType:"bool"},{key:"keeplast",valueType:"bool"}],functions:[{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR"],other:["int","field","num","string"],list:[]},"hilite-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"highlight-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"history-command":{isList:!1,args:[{key:"events",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"iconify-command":{isList:!1,args:[],functions:[],keywords:[],other:["field-list"],list:[]},"ingestpreview-command":{isList:!1,args:[{key:"meta_mode",valueType:"string"},{key:"ingest_processor",valueType:"string"},{key:"emit_copy_pastable",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"inputcsv-command":{isList:!1,args:[{key:"dispatch",valueType:"bool"},{key:"append",valueType:"bool"},{key:"strict",valueType:"bool"},{key:"start",valueType:"int"},{key:"max",valueType:"int"},{key:"events",valueType:"bool"}],functions:[],keywords:["WHERE"],other:["filename","string:search-query"],list:[]},"inputlookup-command":{isList:!1,args:[{key:"append",valueType:"bool"},{key:"start",valueType:"int"},{key:"max",valueType:"int"}],functions:[],keywords:["where"],other:["filename","string:tablename","string:search-query"],list:[]},"internalinputcsv-command":{isList:!1,args:[],functions:[],keywords:[],other:["filename"],list:[]},"iplocation-command":{isList:!1,args:[{key:"prefix",valueType:"string"},{key:"allfields",valueType:"bool"},{key:"lang",valueType:"string"}],functions:[],keywords:[],other:["field"],list:[]},"join-command":{isList:!1,args:[{key:"type",valueType:""},{key:"usetime",valueType:"bool"},{key:"earlier",valueType:"bool"},{key:"overwrite",valueType:"bool"},{key:"max",valueType:"int"},{key:"return_multivalue",valueType:"bool"},{key:"left",valueType:"leftalias"},{key:"right",valueType:"rightalias"}],functions:[],keywords:["WHERE"],other:["field-list","string","field"],list:[]},"jsontxn-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"kmeans-command":{isList:!1,args:[{key:"reps",valueType:"int"},{key:"maxiters",valueType:"int"},{key:"t",valueType:"num"},{key:"k",valueType:""},{key:"cfield",valueType:"field"},{key:"dt",valueType:""},{key:"showcentroid",valueType:"bool"}],functions:[],keywords:[],other:["field-list"],list:[]},"kvform-command":{isList:!1,args:[{key:"form",valueType:"string"},{key:"field",valueType:"field"}],functions:[],keywords:[],other:[],list:[]},"loadjob-command":{isList:!1,args:[{key:"savedsearch",valueType:""},{key:"events",valueType:"bool"},{key:"job_delegate",valueType:"string"},{key:"artifact_offset",valueType:"int"},{key:"ignore_running",valueType:"bool"},{key:"wait_until_finished",valueType:"bool"},{key:"wait_timeout",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"localize-command":{isList:!1,args:[{key:"maxpause",valueType:""},{key:"timeafter",valueType:""},{key:"timebefore",valueType:""}],functions:[],keywords:[],other:[],list:[]},"localop-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"lookup-command":{isList:!1,args:[{key:"local",valueType:"bool"},{key:"update",valueType:"bool"},{key:"event_time_field",valueType:"string"}],functions:[],keywords:["as","OUTPUT|OUTPUTNEW","as"],other:["string:lookup-table-name","field:lookup","field:local","field:dest","field:local-dest"],list:[]},"makecontinuous-command":{isList:!1,args:[{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""}],functions:[],keywords:[],other:["field"],list:[]},"makejson-command":{isList:!1,args:[{key:"output",valueType:"string"}],functions:[],keywords:[],other:["wc-field-list"],list:[]},"makemv-command":{isList:!1,args:[{key:"delim",valueType:"string"},{key:"tokenizer",valueType:""},{key:"allowempty",valueType:"bool"},{key:"setsv",valueType:"bool"}],functions:[],keywords:[],other:["field"],list:[]},"makeresults-command":{isList:!1,args:[{key:"count",valueType:"int"},{key:"annotate",valueType:"bool"},{key:"splunk_server",valueType:"string"},{key:"splunk_server_group",valueType:"string"}],functions:[],keywords:[],other:[],list:[]},"map-command":{isList:!1,args:[{key:"search",valueType:""},{key:"maxsearches",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"mcatalog-command":{isList:!1,args:[{key:"prestats",valueType:"bool"},{key:"append",valueType:"bool"},{key:"timeformat",valueType:"string"},{key:"earliest",valueType:"time_modifier"},{key:"_index_earliest",valueType:"time_modifier"},{key:"starttime",valueType:"string"},{key:"startdaysago",valueType:"int"},{key:"startminutesago",valueType:"int"},{key:"starthoursago",valueType:"int"},{key:"startmonthsago",valueType:"int"},{key:"starttimeu",valueType:"num"},{key:"latest",valueType:"time_modifier"},{key:"_index_latest",valueType:"time_modifier"},{key:"endtime",valueType:"string"},{key:"enddaysago",valueType:"int"},{key:"endminutesago",valueType:"int"},{key:"endhoursago",valueType:"int"},{key:"endmonthsago",valueType:"int"},{key:"endtimeu",valueType:"num"},{key:"searchtimespanhours",valueType:"int"},{key:"searchtimespanminutes",valueType:"int"},{key:"searchtimespandays",valueType:"int"},{key:"searchtimespanmonths",valueType:"int"},{key:"daysago",valueType:"int"},{key:"minutesago",valueType:"int"},{key:"hoursago",valueType:"int"},{key:"monthsago",valueType:"int"},{key:"savedsearch",valueType:"string"},{key:"savedsplunk",valueType:"string"}],functions:[],keywords:["as","WHERE","IN","BY|GROUPBY"],other:["field","string","boolean-operator-not","term","num","boolean-operator-or","boolean-operator-and","field-list"],list:[]},"mcollect-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"file",valueType:"string"},{key:"split",valueType:"true|false|allnums"},{key:"spool",valueType:"bool"},{key:"prefix_field",valueType:"string"},{key:"host",valueType:"string"},{key:"source",valueType:"string"},{key:"sourcetype",valueType:"string"},{key:"marker",valueType:"string"}],functions:[],keywords:[],other:["field-list"],list:[]},"metadata-command":{isList:!1,args:[{key:"type",valueType:"metadata-type"},{key:"index",valueType:"string"},{key:"splunk_server",valueType:"wc-string"},{key:"splunk_server_group",valueType:"wc-string"},{key:"datatype",valueType:"metric|event"}],functions:[],keywords:[],other:[],list:[]},"metasearch-command":{isList:!1,args:[{key:"timeformat",valueType:"string"},{key:"earliest",valueType:"time_modifier"},{key:"_index_earliest",valueType:"time_modifier"},{key:"starttime",valueType:"string"},{key:"startdaysago",valueType:"int"},{key:"startminutesago",valueType:"int"},{key:"starthoursago",valueType:"int"},{key:"startmonthsago",valueType:"int"},{key:"starttimeu",valueType:"num"},{key:"latest",valueType:"time_modifier"},{key:"_index_latest",valueType:"time_modifier"},{key:"endtime",valueType:"string"},{key:"enddaysago",valueType:"int"},{key:"endminutesago",valueType:"int"},{key:"endhoursago",valueType:"int"},{key:"endmonthsago",valueType:"int"},{key:"endtimeu",valueType:"num"},{key:"searchtimespanhours",valueType:"int"},{key:"searchtimespanminutes",valueType:"int"},{key:"searchtimespandays",valueType:"int"},{key:"searchtimespanmonths",valueType:"int"},{key:"daysago",valueType:"int"},{key:"minutesago",valueType:"int"},{key:"hoursago",valueType:"int"},{key:"monthsago",valueType:"int"},{key:"savedsearch",valueType:"string"},{key:"savedsplunk",valueType:"string"}],functions:[],keywords:["IN"],other:["string","field","boolean-operator-not","term","num","boolean-operator-or","boolean-operator-and"],list:[]},"meventcollect-command":{isList:!1,args:[{key:"index",valueType:"string"},{key:"split",valueType:"bool"},{key:"spool",valueType:"bool"},{key:"prefix_field",valueType:"string"},{key:"host",valueType:"string"},{key:"source",valueType:"string"},{key:"sourcetype",valueType:"string"}],functions:[],keywords:[],other:["field-list"],list:[]},"msearch-command":{isList:!1,args:[{key:"filter",valueType:"string"},{key:"index",valueType:"string"},{key:"splunk_server",valueType:"wc-string"},{key:"splunk_server_group",valueType:"wc-string"},{key:"earliest",valueType:"mpreview-time-specifier"},{key:"latest",valueType:"mpreview-time-specifier"},{key:"chunk_size",valueType:"int"},{key:"target_per_timeseries",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"mpreview-command":{isList:!1,args:[{key:"filter",valueType:"string"},{key:"index",valueType:"string"},{key:"splunk_server",valueType:"wc-string"},{key:"splunk_server_group",valueType:"wc-string"},{key:"earliest",valueType:"mpreview-time-specifier"},{key:"latest",valueType:"mpreview-time-specifier"},{key:"chunk_size",valueType:"int"},{key:"target_per_timeseries",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"mrollup-command":{isList:!1,args:[{key:"source",valueType:"string"},{key:"target",valueType:"string"},{key:"file",valueType:"string"},{key:"span",valueType:"string:timespan"},{key:"aggregate",valueType:""},{key:"dimension-list",valueType:""},{key:"dimension-list-type",valueType:""},{key:"metric-list",valueType:""},{key:"metric-list-type",valueType:""},{key:"metric-overrides",valueType:""},{key:"app",valueType:"string"}],functions:[],keywords:[],other:[],list:[]},"mstats-command":{isList:!1,args:[{key:"chart",valueType:"bool"},{key:"chart.limit",valueType:"chart-limit-opt"},{key:"chart.agg",valueType:"stats-agg-term"},{key:"chart.usenull",valueType:"bool"},{key:"chart.useother",valueType:"bool"},{key:"chart.nullstr",valueType:"string"},{key:"chart.otherstr",valueType:"string"},{key:"prestats",valueType:"bool"},{key:"append",valueType:"bool"},{key:"backfill",valueType:"bool"},{key:"update_period",valueType:"int"},{key:"fillnull_value",valueType:"string"},{key:"chunk_size",valueType:"int"},{key:"timeformat",valueType:"string"},{key:"earliest",valueType:"time_modifier"},{key:"_index_earliest",valueType:"time_modifier"},{key:"starttime",valueType:"string"},{key:"startdaysago",valueType:"int"},{key:"startminutesago",valueType:"int"},{key:"starthoursago",valueType:"int"},{key:"startmonthsago",valueType:"int"},{key:"starttimeu",valueType:"num"},{key:"latest",valueType:"time_modifier"},{key:"_index_latest",valueType:"time_modifier"},{key:"endtime",valueType:"string"},{key:"enddaysago",valueType:"int"},{key:"endminutesago",valueType:"int"},{key:"endhoursago",valueType:"int"},{key:"endmonthsago",valueType:"int"},{key:"endtimeu",valueType:"num"},{key:"searchtimespanhours",valueType:"int"},{key:"searchtimespanminutes",valueType:"int"},{key:"searchtimespandays",valueType:"int"},{key:"searchtimespanmonths",valueType:"int"},{key:"daysago",valueType:"int"},{key:"minutesago",valueType:"int"},{key:"hoursago",valueType:"int"},{key:"monthsago",valueType:"int"},{key:"savedsearch",valueType:"string"},{key:"savedsplunk",valueType:"string"},{key:"span",valueType:"string:timespan"},{key:"every",valueType:"string:timespan"}],functions:[{name:"rate_avg",parenOptional:!1},{name:"rate_sum",parenOptional:!1}],keywords:["as","WHERE","IN","BY|GROUPBY"],other:["metric_name","string","stats-func-value","field","boolean-operator-not","term","num","boolean-operator-or","boolean-operator-and","field-list"],list:[]},"multikv-command":{isList:!1,args:[{key:"conf",valueType:"stanza_name"},{key:"copyattrs",valueType:"bool"},{key:"forceheader",valueType:"int"},{key:"multitable",valueType:"bool"},{key:"noheader",valueType:"bool"},{key:"rmorig",valueType:"bool"}],functions:[],keywords:["fields","filter"],other:["field-list"],list:[]},"multisearch-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"mvcombine-command":{isList:!1,args:[{key:"delim",valueType:"string"}],functions:[],keywords:[],other:["field"],list:[]},"mvexpand-command":{isList:!1,args:[{key:"limit",valueType:"int"}],functions:[],keywords:[],other:["field"],list:[]},"newseriesfilter-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"nokv-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"nomv-command":{isList:!1,args:[],functions:[],keywords:[],other:["field"],list:[]},"outlierfilter-command":{isList:!1,args:[{key:"action",valueType:""},{key:"param",valueType:"num"},{key:"uselower",valueType:"bool"},{key:"mark",valueType:"bool"}],functions:[],keywords:[],other:["field-list"],list:[]},"outlier-command":{isList:!1,args:[{key:"action",valueType:""},{key:"param",valueType:"num"},{key:"uselower",valueType:"bool"},{key:"mark",valueType:"bool"}],functions:[],keywords:[],other:["field-list"],list:[]},"outputcsv-command":{isList:!1,args:[{key:"append",valueType:"bool"},{key:"create_empty",valueType:"bool"},{key:"override_if_empty",valueType:""},{key:"dispatch",valueType:"bool"},{key:"usexml",valueType:"bool"},{key:"singlefile",valueType:"bool"}],functions:[],keywords:[],other:["filename"],list:[]},"outputlookup-command":{isList:!1,args:[{key:"append",valueType:"bool"},{key:"create_empty",valueType:"bool"},{key:"override_if_empty",valueType:""},{key:"max",valueType:"int"},{key:"key_field",valueType:"field"},{key:"createinapp",valueType:"bool"},{key:"create_context",valueType:"string"},{key:"output_format",valueType:"string"}],functions:[],keywords:[],other:["filename","string:tablename"],list:[]},"outputraw-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"outputrawr-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"outputtelemetry-command":{isList:!1,args:[{key:"input",valueType:"string"},{key:"type",valueType:"string"},{key:"component",valueType:"string"},{key:"support",valueType:"bool"},{key:"anonymous",valueType:"bool"},{key:"license",valueType:"bool"},{key:"optinrequired",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"outputtext-command":{isList:!1,args:[{key:"usexml",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"overlap-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"pivot-command":{isList:!1,args:[],functions:[],keywords:[],other:["datamodel-name","object-name","pivot-element"],list:[]},"predict-command":{isList:!1,args:[{key:"algorithm",valueType:""},{key:"correlate",valueType:"field"},{key:"future_timespan",valueType:"num"},{key:"holdback",valueType:"num"},{key:"period",valueType:"num"},{key:"upper\\d+",valueType:"field"},{key:"lower\\d+",valueType:"field"},{key:"suppress",valueType:"field"}],functions:[],keywords:["as"],other:["field-list","field"],list:[]},"preview-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"prjob-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"rangemap-command":{isList:!1,args:[{key:"field",valueType:"field"},{key:"default",valueType:"string"}],functions:[],keywords:[],other:["string","num"],list:[]},"rare-command":{isList:!1,args:[{key:"showcount",valueType:"bool"},{key:"showperc",valueType:"bool"},{key:"limit",valueType:"int"},{key:"countfield",valueType:"string"},{key:"percentfield",valueType:"string"},{key:"useother",valueType:"bool"},{key:"otherstr",valueType:"string"}],functions:[],keywords:["by"],other:["field-list"],list:[]},"rawstats-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"redistribute-command":{isList:!1,args:[{key:"dfs",valueType:""},{key:"num_of_reducers",valueType:"int"}],functions:[],keywords:["by"],other:["field-list"],list:[]},"regex-command":{isList:!1,args:[],functions:[],keywords:[],other:["field","string"],list:[]},"relevancy-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"reltime-command":{isList:!1,args:[{key:"timefield",valueType:"field-list"},{key:"prefix",valueType:"string"}],functions:[],keywords:[],other:[],list:[]},"rename-command":{isList:!1,args:[],functions:[],keywords:["as"],other:["wc-field","wc-field"],list:[]},"replace-command":{isList:!1,args:[],functions:[],keywords:["with","in"],other:["wc-str","wc-str","field-list"],list:[]},"require-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"rest-command":{isList:!1,args:[{key:"count",valueType:"int"},{key:"strict",valueType:"bool"},{key:"splunk_server",valueType:"string"},{key:"splunk_server_group",valueType:"string"},{key:"timeout",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"return-command":{isList:!1,args:[],functions:[],keywords:[],other:["int:count","field:alias","field","field","field"],list:[]},"reverse-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"rex-command":{isList:!1,args:[{key:"field",valueType:"field"},{key:"max_match",valueType:"int"},{key:"offset_field",valueType:"string"},{key:"mode",valueType:""}],functions:[],keywords:[],other:["string","sed-expression"],list:[]},"rtorder-command":{isList:!1,args:[{key:"discard",valueType:"bool"},{key:"buffer_span",valueType:"span-length"},{key:"max_buffer_size",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"runshellscript-command":{isList:!1,args:[],functions:[],keywords:[],other:["script-filename","result-count","search-terms","search-string","savedsearch-name","description","results-url","deprecated-arg","search-id"],list:[]},"macro-command":{isList:!1,args:[{key:"nosubstitution",valueType:"bool"}],functions:[],keywords:[],other:["string"],list:[]},"savedsplunk-command":{isList:!1,args:[{key:"nosubstitution",valueType:"bool"}],functions:[],keywords:[],other:["string"],list:[]},"savedsearch-command":{isList:!1,args:[{key:"nosubstitution",valueType:"bool"}],functions:[],keywords:[],other:["string"],list:[]},"run-command":{isList:!1,args:[{key:"maxinputs",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"script-command":{isList:!1,args:[{key:"maxinputs",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"scrub-command":{isList:!1,args:[{key:"public-terms",valueType:"filename"},{key:"private-terms",valueType:"filename"},{key:"name-terms",valueType:"filename"},{key:"dictionary",valueType:"filename"},{key:"timeconfig",valueType:"filename"},{key:"namespace",valueType:"string"}],functions:[],keywords:[],other:[],list:[]},"search-command":{isList:!1,args:[{key:"timeformat",valueType:"string"},{key:"earliest",valueType:"time_modifier"},{key:"_index_earliest",valueType:"time_modifier"},{key:"starttime",valueType:"string"},{key:"startdaysago",valueType:"int"},{key:"startminutesago",valueType:"int"},{key:"starthoursago",valueType:"int"},{key:"startmonthsago",valueType:"int"},{key:"starttimeu",valueType:"num"},{key:"latest",valueType:"time_modifier"},{key:"_index_latest",valueType:"time_modifier"},{key:"endtime",valueType:"string"},{key:"enddaysago",valueType:"int"},{key:"endminutesago",valueType:"int"},{key:"endhoursago",valueType:"int"},{key:"endmonthsago",valueType:"int"},{key:"endtimeu",valueType:"num"},{key:"searchtimespanhours",valueType:"int"},{key:"searchtimespanminutes",valueType:"int"},{key:"searchtimespandays",valueType:"int"},{key:"searchtimespanmonths",valueType:"int"},{key:"daysago",valueType:"int"},{key:"minutesago",valueType:"int"},{key:"hoursago",valueType:"int"},{key:"monthsago",valueType:"int"},{key:"savedsearch",valueType:"string"},{key:"savedsplunk",valueType:"string"}],functions:[],keywords:["IN"],other:["string","field","boolean-operator-not","term","num","boolean-operator-or","boolean-operator-and"],list:[]},"searchtxn-command":{isList:!1,args:[{key:"max_terms",valueType:"int"},{key:"use_disjunct",valueType:"bool"},{key:"eventsonly",valueType:"bool"}],functions:[],keywords:[],other:["string","search-string"],list:[]},"report-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"select-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"selfjoin-command":{isList:!1,args:[{key:"overwrite",valueType:"bool"},{key:"max",valueType:"int"},{key:"keepsingle",valueType:"int"}],functions:[],keywords:[],other:["field-list"],list:[]},"sendalert-command":{isList:!1,args:[{key:"results_link",valueType:"url"},{key:"results_path",valueType:"path"},{key:"param.",valueType:"value"}],functions:[],keywords:[],other:["string"],list:[]},"sendemail-command":{isList:!1,args:[{key:"to",valueType:"email_list"},{key:"from",valueType:"email_list"},{key:"cc",valueType:"email_list"},{key:"bcc",valueType:"email_list"},{key:"subject",valueType:"string"},{key:"message",valueType:"string"},{key:"footer",valueType:"string"},{key:"sendresults",valueType:"bool"},{key:"inline",valueType:"bool"},{key:"format",valueType:""},{key:"sendcsv",valueType:"bool"},{key:"sendpdf",valueType:"bool"},{key:"pdfview",valueType:"string"},{key:"paperorientation",valueType:""},{key:"papersize",valueType:""},{key:"priority",valueType:""},{key:"server",valueType:"string"},{key:"graceful",valueType:"bool"},{key:"content_type",valueType:""},{key:"width_sort_columns",valueType:"bool"},{key:"use_ssl",valueType:"bool"},{key:"use_tls",valueType:"bool"},{key:"maxinputs",valueType:"int"},{key:"maxtime",valueType:""}],functions:[],keywords:[],other:[],list:[]},"set-command":{isList:!1,args:[],functions:[],keywords:["union|diff|intersect"],other:["string"],list:[]},"setfields-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"shape-command":{isList:!1,args:[{key:"maxvalues",valueType:"int"},{key:"maxresolution",valueType:"int"}],functions:[],keywords:[],other:["field"],list:[]},"showargs-command":{isList:!1,args:[],functions:[],keywords:[],other:["string"],list:[]},"sichart-command":{isList:!1,args:[{key:"sep",valueType:"string"},{key:"format",valueType:"string"},{key:"cont",valueType:"bool"},{key:"limit",valueType:"chart-limit-opt"},{key:"agg",valueType:"stats-agg-term"},{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""},{key:"usenull",valueType:"bool"},{key:"useother",valueType:"bool"},{key:"nullstr",valueType:"string"},{key:"otherstr",valueType:"string"},{key:"dedup_splitvals",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1},{name:"sparkline",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"range",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"distinct_count",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"mode",parenOptional:!1},{name:"median",parenOptional:!1},{name:"earliest",parenOptional:!1},{name:"first",parenOptional:!1},{name:"last",parenOptional:!1},{name:"latest",parenOptional:!1},{name:"list",parenOptional:!1},{name:"values",parenOptional:!1},{name:"range",parenOptional:!1},{name:"estdc",parenOptional:!1},{name:"estdc_error",parenOptional:!1},{name:"earliest_time",parenOptional:!1},{name:"latest_time",parenOptional:!1},{name:"rate",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","BY","where","OVER"],other:["field","num","string","wc-field","int","|"],list:[]},"sirare-command":{isList:!1,args:[{key:"showcount",valueType:"bool"},{key:"showperc",valueType:"bool"},{key:"limit",valueType:"int"},{key:"countfield",valueType:"string"},{key:"percentfield",valueType:"string"},{key:"useother",valueType:"bool"},{key:"otherstr",valueType:"string"}],functions:[],keywords:["by"],other:["field-list"],list:[]},"sistats-command":{isList:!1,args:[{key:"partitions",valueType:"num"},{key:"allnum",valueType:"bool"},{key:"delim",valueType:"string"},{key:"dedup_splitvals",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1},{name:"sparkline",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"range",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by"],other:["field","num","string","wc-field","int","field-list"],list:[]},"sitimechart-command":{isList:!1,args:[{key:"sep",valueType:"string"},{key:"format",valueType:"string"},{key:"fixedrange",valueType:"bool"},{key:"partial",valueType:"bool"},{key:"cont",valueType:"bool"},{key:"limit",valueType:"chart-limit-opt"},{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""},{key:"usenull",valueType:"bool"},{key:"useother",valueType:"bool"},{key:"nullstr",valueType:"string"},{key:"otherstr",valueType:"string"},{key:"dedup_splitvals",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"distinct_count",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"mode",parenOptional:!1},{name:"median",parenOptional:!1},{name:"earliest",parenOptional:!1},{name:"first",parenOptional:!1},{name:"last",parenOptional:!1},{name:"latest",parenOptional:!1},{name:"list",parenOptional:!1},{name:"values",parenOptional:!1},{name:"range",parenOptional:!1},{name:"estdc",parenOptional:!1},{name:"estdc_error",parenOptional:!1},{name:"earliest_time",parenOptional:!1},{name:"latest_time",parenOptional:!1},{name:"rate",parenOptional:!1},{name:"per_second",parenOptional:!1},{name:"per_minute",parenOptional:!1},{name:"per_hour",parenOptional:!1},{name:"per_day",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by","where"],other:["field","num","string","wc-field","int","|"],list:[]},"sitop-command":{isList:!1,args:[{key:"showcount",valueType:"bool"},{key:"showperc",valueType:"bool"},{key:"limit",valueType:"int"},{key:"countfield",valueType:"string"},{key:"percentfield",valueType:"string"},{key:"useother",valueType:"bool"},{key:"otherstr",valueType:"string"}],functions:[],keywords:["by"],other:["int","field-list"],list:[]},"sort-command":{isList:!1,args:[],functions:[],keywords:[],other:["int","field"],list:[]},"spath-command":{isList:!1,args:[{key:"output",valueType:"field"},{key:"path",valueType:"datapath"},{key:"input",valueType:"field"}],functions:[],keywords:[],other:["datapath"],list:[]},"stats-command":{isList:!1,args:[{key:"partitions",valueType:"num"},{key:"allnum",valueType:"bool"},{key:"delim",valueType:"string"},{key:"dedup_splitvals",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1},{name:"sparkline",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"range",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by"],other:["field","num","string","wc-field","int","field-list"],list:[]},"strcat-command":{isList:!1,args:[{key:"allrequired",valueType:"bool"}],functions:[],keywords:[],other:["field","double-quoted-string","field"],list:[]},"streamedcsv-command":{isList:!1,args:[{key:"chunk",valueType:"int"}],functions:[],keywords:[],other:["string"],list:[]},"streamstats-command":{isList:!1,args:[{key:"reset_on_change",valueType:"bool"},{key:"reset_before",valueType:""},{key:"reset_after",valueType:""},{key:"current",valueType:"bool"},{key:"window",valueType:"int"},{key:"time_window",valueType:"span-length"},{key:"global",valueType:"bool"},{key:"allnum",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by"],other:["field","num","string","wc-field","field-list"],list:[]},"surrounding-command":{isList:!1,args:[{key:"id",valueType:"event-id"},{key:"timebefore",valueType:"int"},{key:"timeafter",valueType:"int"},{key:"searchkeys",valueType:"key-list"},{key:"readlevel",valueType:"readlevel-int"}],functions:[],keywords:[],other:["int:maxresults","string"],list:[]},"table-command":{isList:!1,args:[],functions:[],keywords:[],other:["wc-field-list"],list:[]},"tagcreate-command":{isList:!1,args:[],functions:[],keywords:[],other:["tag","field-and-value-list"],list:[]},"tagdelete-command":{isList:!1,args:[],functions:[],keywords:[],other:["tag","field-and-value-list"],list:[]},"tags-command":{isList:!1,args:[{key:"outputfield",valueType:"field"},{key:"inclname",valueType:"bool"},{key:"inclvalue",valueType:"bool"},{key:"allowed_tags",valueType:"string"}],functions:[],keywords:[],other:["field"],list:[]},"tagset-command":{isList:!1,args:[],functions:[],keywords:[],other:["field-and-value","tag-list"],list:[]},"tail-command":{isList:!1,args:[],functions:[],keywords:[],other:["int"],list:[]},"timechart-command":{isList:!1,args:[{key:"sep",valueType:"string"},{key:"format",valueType:"string"},{key:"fixedrange",valueType:"bool"},{key:"partial",valueType:"bool"},{key:"cont",valueType:"bool"},{key:"limit",valueType:"chart-limit-opt"},{key:"bins",valueType:"int"},{key:"minspan",valueType:""},{key:"span",valueType:""},{key:"start",valueType:"num"},{key:"end",valueType:"num"},{key:"aligntime",valueType:""},{key:"usenull",valueType:"bool"},{key:"useother",valueType:"bool"},{key:"nullstr",valueType:"string"},{key:"otherstr",valueType:"string"},{key:"dedup_splitvals",valueType:"bool"}],functions:[{name:"c",parenOptional:!0},{name:"count",parenOptional:!0},{name:"dc",parenOptional:!0},{name:"distinct_count",parenOptional:!0},{name:"mean",parenOptional:!0},{name:"avg",parenOptional:!0},{name:"stdev",parenOptional:!0},{name:"stdevp",parenOptional:!0},{name:"var",parenOptional:!0},{name:"varp",parenOptional:!0},{name:"sum",parenOptional:!0},{name:"sumsq",parenOptional:!0},{name:"min",parenOptional:!0},{name:"max",parenOptional:!0},{name:"mode",parenOptional:!0},{name:"median",parenOptional:!0},{name:"earliest",parenOptional:!0},{name:"first",parenOptional:!0},{name:"last",parenOptional:!0},{name:"latest",parenOptional:!0},{name:"list",parenOptional:!0},{name:"values",parenOptional:!0},{name:"range",parenOptional:!0},{name:"estdc",parenOptional:!0},{name:"estdc_error",parenOptional:!0},{name:"earliest_time",parenOptional:!0},{name:"latest_time",parenOptional:!0},{name:"rate",parenOptional:!0},{name:"eval",parenOptional:!1},{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1},{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"distinct_count",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"mode",parenOptional:!1},{name:"median",parenOptional:!1},{name:"earliest",parenOptional:!1},{name:"first",parenOptional:!1},{name:"last",parenOptional:!1},{name:"latest",parenOptional:!1},{name:"list",parenOptional:!1},{name:"values",parenOptional:!1},{name:"range",parenOptional:!1},{name:"estdc",parenOptional:!1},{name:"estdc_error",parenOptional:!1},{name:"earliest_time",parenOptional:!1},{name:"latest_time",parenOptional:!1},{name:"rate",parenOptional:!1},{name:"per_second",parenOptional:!1},{name:"per_minute",parenOptional:!1},{name:"per_hour",parenOptional:!1},{name:"per_day",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR","as","by","where"],other:["field","num","string","wc-field","int","|"],list:[]},"timewrap-command":{isList:!1,args:[{key:"align",valueType:""},{key:"series",valueType:""},{key:"time_format",valueType:"str"}],functions:[],keywords:[],other:["int"],list:[]},"tojson-command":{isList:!1,args:[{key:"fill_null",valueType:"bool"},{key:"include_internal",valueType:"bool"}],functions:[{name:"auto",parenOptional:!0},{name:"num",parenOptional:!0},{name:"str",parenOptional:!0},{name:"bool",parenOptional:!0},{name:"json",parenOptional:!0},{name:"none",parenOptional:!0}],keywords:[],other:["wc-field","output_field","default_type"],list:[]},"common-command":{isList:!1,args:[{key:"showcount",valueType:"bool"},{key:"showperc",valueType:"bool"},{key:"limit",valueType:"int"},{key:"countfield",valueType:"string"},{key:"percentfield",valueType:"string"},{key:"useother",valueType:"bool"},{key:"otherstr",valueType:"string"}],functions:[],keywords:["by"],other:["int","field-list"],list:[]},"top-command":{isList:!1,args:[{key:"showcount",valueType:"bool"},{key:"showperc",valueType:"bool"},{key:"limit",valueType:"int"},{key:"countfield",valueType:"string"},{key:"percentfield",valueType:"string"},{key:"useother",valueType:"bool"},{key:"otherstr",valueType:"string"}],functions:[],keywords:["by"],other:["int","field-list"],list:[]},"transam-command":{isList:!1,args:[{key:"name",valueType:"transaction-name"},{key:"maxspan",valueType:""},{key:"maxpause",valueType:""},{key:"maxevents",valueType:"int"},{key:"startswith",valueType:"transam-filter-string"},{key:"endswith",valueType:"transam-filter-string"},{key:"connected",valueType:"bool"},{key:"unifyends",valueType:"bool"},{key:"keeporphans",valueType:"bool"},{key:"maxopentxn",valueType:"int"},{key:"maxopenevents",valueType:"int"},{key:"keepevicted",valueType:"bool"},{key:"delim",valueType:"string"},{key:"mvlist",valueType:""},{key:"nullstr",valueType:"string"},{key:"mvraw",valueType:"bool"}],functions:[],keywords:[],other:["field-list"],list:[]},"transaction-command":{isList:!1,args:[{key:"name",valueType:"transaction-name"},{key:"maxspan",valueType:""},{key:"maxpause",valueType:""},{key:"maxevents",valueType:"int"},{key:"startswith",valueType:"transam-filter-string"},{key:"endswith",valueType:"transam-filter-string"},{key:"connected",valueType:"bool"},{key:"unifyends",valueType:"bool"},{key:"keeporphans",valueType:"bool"},{key:"maxopentxn",valueType:"int"},{key:"maxopenevents",valueType:"int"},{key:"keepevicted",valueType:"bool"},{key:"delim",valueType:"string"},{key:"mvlist",valueType:""},{key:"nullstr",valueType:"string"},{key:"mvraw",valueType:"bool"}],functions:[],keywords:[],other:["field-list"],list:[]},"transpose-command":{isList:!1,args:[{key:"column_name",valueType:"string"},{key:"header_field",valueType:"field"},{key:"include_empty",valueType:"bool"}],functions:[],keywords:[],other:["int"],list:[]},"trendline-command":{isList:!1,args:[],functions:[{name:"sma\\d+",parenOptional:!1},{name:"ema\\d+",parenOptional:!1},{name:"wma\\d+",parenOptional:!1}],keywords:["as"],other:["field","field"],list:[]},"tscollect-command":{isList:!1,args:[{key:"namespace",valueType:"string"},{key:"squashcase",valueType:"bool"},{key:"keepresults",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"tstats-command":{isList:!1,args:[{key:"prestats",valueType:"bool"},{key:"local",valueType:"bool"},{key:"append",valueType:"bool"},{key:"summariesonly",valueType:"bool"},{key:"include_reduced_buckets",valueType:"bool"},{key:"allow_old_summaries",valueType:"bool"},{key:"chunk_size",valueType:"int"},{key:"fillnull_value",valueType:"string"},{key:"sid",valueType:"string:tscollect-job-id"},{key:"datamodel",valueType:""},{key:"timeformat",valueType:"string"},{key:"earliest",valueType:"time_modifier"},{key:"_index_earliest",valueType:"time_modifier"},{key:"starttime",valueType:"string"},{key:"startdaysago",valueType:"int"},{key:"startminutesago",valueType:"int"},{key:"starthoursago",valueType:"int"},{key:"startmonthsago",valueType:"int"},{key:"starttimeu",valueType:"num"},{key:"latest",valueType:"time_modifier"},{key:"_index_latest",valueType:"time_modifier"},{key:"endtime",valueType:"string"},{key:"enddaysago",valueType:"int"},{key:"endminutesago",valueType:"int"},{key:"endhoursago",valueType:"int"},{key:"endmonthsago",valueType:"int"},{key:"endtimeu",valueType:"num"},{key:"searchtimespanhours",valueType:"int"},{key:"searchtimespanminutes",valueType:"int"},{key:"searchtimespandays",valueType:"int"},{key:"searchtimespanmonths",valueType:"int"},{key:"daysago",valueType:"int"},{key:"minutesago",valueType:"int"},{key:"hoursago",valueType:"int"},{key:"monthsago",valueType:"int"},{key:"savedsearch",valueType:"string"},{key:"savedsplunk",valueType:"string"},{key:"span",valueType:"string:timespan"}],functions:[{name:"c",parenOptional:!1},{name:"count",parenOptional:!1},{name:"dc",parenOptional:!1},{name:"distinct_count",parenOptional:!1},{name:"mean",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"stdev",parenOptional:!1},{name:"stdevp",parenOptional:!1},{name:"var",parenOptional:!1},{name:"varp",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"sumsq",parenOptional:!1},{name:"min",parenOptional:!1},{name:"max",parenOptional:!1},{name:"mode",parenOptional:!1},{name:"median",parenOptional:!1},{name:"earliest",parenOptional:!1},{name:"first",parenOptional:!1},{name:"last",parenOptional:!1},{name:"latest",parenOptional:!1},{name:"list",parenOptional:!1},{name:"values",parenOptional:!1},{name:"range",parenOptional:!1},{name:"estdc",parenOptional:!1},{name:"estdc_error",parenOptional:!1},{name:"earliest_time",parenOptional:!1},{name:"latest_time",parenOptional:!1},{name:"rate",parenOptional:!1}],keywords:["as","FROM","WHERE","IN","by|GROUPBY"],other:["field","string","string:namespace","boolean-operator-not","term","num","boolean-operator-or","boolean-operator-and","field","field"],list:[]},"typeahead-command":{isList:!1,args:[{key:"prefix",valueType:"string"},{key:"count",valueType:"int"},{key:"max_time",valueType:"int"},{key:"index",valueType:"string"},{key:"starttimeu",valueType:"num"},{key:"endtimeu",valueType:"num"},{key:"collapse",valueType:"bool"}],functions:[],keywords:[],other:[],list:[]},"typelearner-command":{isList:!1,args:[{key:"maxlen",valueType:"int"}],functions:[],keywords:[],other:["field"],list:[]},"typer-command":{isList:!1,args:[{key:"eventtypes",valueType:"string"},{key:"maxlen",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"union-command":{isList:!1,args:[{key:"extendtimerange",valueType:"bool"},{key:"maxtime",valueType:"int"},{key:"maxout",valueType:"int"},{key:"timeout",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"uniq-command":{isList:!1,args:[],functions:[],keywords:[],other:[],list:[]},"untable-command":{isList:!1,args:[],functions:[],keywords:[],other:["field"],list:[]},"walklex-command":{isList:!1,args:[{key:"type",valueType:"walklex-type"},{key:"prefix",valueType:""},{key:"index",valueType:"string"},{key:"splunk_server",valueType:"wc-string"},{key:"splunk_server_group",valueType:"wc-string"}],functions:[],keywords:[],other:[],list:[]},"where-command":{isList:!1,args:[],functions:[{name:"abs",parenOptional:!1},{name:"avg",parenOptional:!1},{name:"case",parenOptional:!1},{name:"ceiling",parenOptional:!1},{name:"ceil",parenOptional:!1},{name:"cidrmatch",parenOptional:!1},{name:"coalesce",parenOptional:!1},{name:"commands",parenOptional:!1},{name:"exact",parenOptional:!1},{name:"exp",parenOptional:!1},{name:"false",parenOptional:!1},{name:"floor",parenOptional:!1},{name:"if",parenOptional:!1},{name:"ifnull",parenOptional:!1},{name:"isbool",parenOptional:!1},{name:"isint",parenOptional:!1},{name:"isnotnull",parenOptional:!1},{name:"isnull",parenOptional:!1},{name:"isnum",parenOptional:!1},{name:"isstr",parenOptional:!1},{name:"len",parenOptional:!1},{name:"like",parenOptional:!1},{name:"ln",parenOptional:!1},{name:"log",parenOptional:!1},{name:"lookup",parenOptional:!1},{name:"lower",parenOptional:!1},{name:"match",parenOptional:!1},{name:"max",parenOptional:!1},{name:"md5",parenOptional:!1},{name:"min",parenOptional:!1},{name:"mvappend",parenOptional:!1},{name:"mvcount",parenOptional:!1},{name:"mvdedup",parenOptional:!1},{name:"mvindex",parenOptional:!1},{name:"mvfilter",parenOptional:!1},{name:"mvfind",parenOptional:!1},{name:"mvjoin",parenOptional:!1},{name:"mvmap",parenOptional:!1},{name:"mvrange",parenOptional:!1},{name:"mvsort",parenOptional:!1},{name:"mvzip",parenOptional:!1},{name:"now",parenOptional:!1},{name:"null",parenOptional:!1},{name:"nullif",parenOptional:!1},{name:"pi",parenOptional:!1},{name:"pow",parenOptional:!1},{name:"random",parenOptional:!1},{name:"relative_time",parenOptional:!1},{name:"replace",parenOptional:!1},{name:"round",parenOptional:!1},{name:"searchmatch",parenOptional:!1},{name:"sha1",parenOptional:!1},{name:"sha256",parenOptional:!1},{name:"sha512",parenOptional:!1},{name:"sigfig",parenOptional:!1},{name:"spath",parenOptional:!1},{name:"split",parenOptional:!1},{name:"sqrt",parenOptional:!1},{name:"strftime",parenOptional:!1},{name:"strptime",parenOptional:!1},{name:"substr",parenOptional:!1},{name:"sum",parenOptional:!1},{name:"time",parenOptional:!1},{name:"tostring",parenOptional:!1},{name:"trim",parenOptional:!1},{name:"ltrim",parenOptional:!1},{name:"rtrim",parenOptional:!1},{name:"true",parenOptional:!1},{name:"typeof",parenOptional:!1},{name:"upper",parenOptional:!1},{name:"urldecode",parenOptional:!1},{name:"validate",parenOptional:!1},{name:"tonumber",parenOptional:!1},{name:"acos",parenOptional:!1},{name:"acosh",parenOptional:!1},{name:"asin",parenOptional:!1},{name:"asinh",parenOptional:!1},{name:"atan",parenOptional:!1},{name:"atan2",parenOptional:!1},{name:"atanh",parenOptional:!1},{name:"cos",parenOptional:!1},{name:"cosh",parenOptional:!1},{name:"hypot",parenOptional:!1},{name:"sin",parenOptional:!1},{name:"sinh",parenOptional:!1},{name:"tan",parenOptional:!1},{name:"tanh",parenOptional:!1},{name:"json_array_to_mv",parenOptional:!1},{name:"mv_to_json_array",parenOptional:!1},{name:"json_append",parenOptional:!1},{name:"json_extend",parenOptional:!1},{name:"json_extract_exact",parenOptional:!1},{name:"json_set_exact",parenOptional:!1}],keywords:["LIKE","AND|OR|XOR"],other:["field","num","string"],list:[]},"x11-command":{isList:!1,args:[],functions:[{name:"mult",parenOptional:!1},{name:"add",parenOptional:!1}],keywords:["as"],other:["field","field"],list:[]},"xmlkv-command":{isList:!1,args:[{key:"maxinputs",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"xmlunescape-command":{isList:!1,args:[{key:"maxinputs",valueType:"int"}],functions:[],keywords:[],other:[],list:[]},"xpath-command":{isList:!1,args:[{key:"field",valueType:"field"},{key:"outfield",valueType:"field"},{key:"default",valueType:"string"}],functions:[],keywords:[],other:["string:xpath"],list:[]},"maketable-command":{isList:!1,args:[{key:"grouped",valueType:"bool"},{key:"sep",valueType:"string"},{key:"format",valueType:"string"}],functions:[],keywords:[],other:["field"],list:[]},"xyseries-command":{isList:!1,args:[{key:"grouped",valueType:"bool"},{key:"sep",valueType:"string"},{key:"format",valueType:"string"}],functions:[],keywords:[],other:["field"],list:[]}},Ne={};v(Ne,{default:()=>Be});var je=M(n(163));A(Ne,n(163));var Be="default"in je?je.default:je,qe=Be(e=>{if(null==e)throw new Error("deprecation message is required");L.warn(e)}),Ie="--dynamicValue--",Fe=e=>"string"==typeof e&&e.trim().startsWith(">"),We={};v(We,{default:()=>Ve});var He=M(n(871));A(We,n(871));var Ve="default"in He?He.default:He,Ue=(e,t="")=>`${t}${Ve(e)}`,Ye=e=>!!e&&!Array.isArray(e)&&"object"==typeof e,$e=e=>null==e||"object"==typeof e&&(Array.isArray(e)&&!e.length||!Object.keys(e).length),Xe=e=>"function"!=typeof e&&"symbol"!=typeof e&&("object"!=typeof e||null===e),Ge=e=>Array.isArray(e)&&e.every(Xe),Qe=e=>"object"==typeof e&&"string"==typeof(null==e?void 0:e.item),Ke=e=>Array.isArray(e)&&(e.length<1||Qe(e[0])),Ze=e=>Array.isArray(e)&&0===e.filter(e=>void 0!==e).length,Je=e=>Ye(e)&&0===Object.keys(e).length,et=e=>null==e||"string"==typeof e&&!e||"string"!=typeof e&&"object"!=typeof e||Ze(e)||Je(e),tt=()=>document.activeElement!==document.body,nt=()=>document.activeElement===document.body?null:document.activeElement,rt=()=>{var e;return"select-outline"===(null==(e=document.activeElement)?void 0:e.getAttribute("data-test"))},it=()=>!tt()||rt(),ot={};v(ot,{default:()=>st});var at=M(n(872));A(ot,n(872));var st="default"in at?at.default:at,lt=3,ct=400,ut=1200,dt=900,pt=198,ht=82,ft=(e,t)=>e.item!==t.item&&(!(e.position.x+e.position.w<=t.position.x)&&(!(e.position.x>=t.position.x+t.position.w)&&(!(e.position.y+e.position.h<=t.position.y)&&!(e.position.y>=t.position.y+t.position.h)))),mt=(e,t)=>{const n=e.item,r=t.map(e=>e.item).indexOf(n);let i;if(!(r>=0))return null;switch(i=(0,W.cloneDeep)(t[r].position),e.port){case"n":return{x:i.x+i.w/2,y:i.y};case"e":return{x:i.x+i.w,y:i.y+i.h/2};case"s":return{x:i.x+i.w/2,y:i.y+i.h};case"w":return{x:i.x,y:i.y+i.h/2};default:return null}},bt=(e,t)=>{var n;const r={x:0,y:0};return e.item&&e.port?null!=(n=mt({item:e.item,port:e.port},t))?n:r:"number"==typeof e.x&&"number"==typeof e.y?{x:e.x,y:e.y}:r},gt=(e,t)=>{const n=bt(e.from,t),r=bt(e.to,t);return{x:Math.min(n.x,r.x),y:Math.min(n.y,r.y),w:Math.abs(n.x-r.x),h:Math.abs(n.y-r.y)}},vt=(e,t)=>{const n={item:e.item,type:"block",position:{x:0,y:0,w:0,h:0}};return"line"===e.type?n.position=gt(e.position,t):("input"===e.type&&(n.type="input"),n.position=(0,W.cloneDeep)(e.position)),n},yt=e=>e.map(t=>vt(t,e)),At=e=>(0,W.cloneDeep)(e).sort((e,t)=>{let n=-1;return e.position.y>t.position.y||e.position.y===t.position.y&&e.position.x>t.position.x?n=1:e.position.y===t.position.y&&e.position.x===t.position.x&&(n=0),n}),Mt=(e,t)=>e.find(e=>ft(e,t)),_t=({col:e,row:t,width:n,height:r,type:i})=>"line"===i?{from:{x:e,y:t+r},to:{x:e+n,y:t+r/2}}:{x:e,y:t,w:n,h:r},wt=({canvasWidth:e,canvasHeight:t,width:n,height:r,type:i})=>"line"===i?{from:{x:Math.round(e/lt),y:Math.round(t/lt)},to:{x:Math.round(e/lt+n),y:Math.round(t/lt+r)}}:{x:Math.round(e/lt),y:Math.round(t/lt),w:n,h:r},Ot=({width:e,height:t,canvasHeight:n,canvasWidth:r,items:i,type:o})=>{const a={item:"__canvas__",position:{x:0,y:0,w:e,h:t}};let s;const l=yt(i),c=At(l);let u,d=0;for(;dr||l>n)break;{const n=Mt(c,a);if(!n)return _t({col:u,row:d,width:e,height:t,type:o});s=Math.min(s,n.position.y+n.position.h-1),u=n.position.x+n.position.w-1}}d=s}return wt({canvasWidth:r,canvasHeight:n,width:e,height:t,type:o})},xt=({canvasWidth:e,canvasHeight:t,vizContract:n,config:r,items:i})=>{var o,a,s,l,c,u,d,p;const h=null!=(l=null!=(s=null==(o=null==n?void 0:n.initialDimension)?void 0:o.width)?s:null==(a=null==r?void 0:r.size)?void 0:a.initialWidth)?l:Math.round(e/3),f=null!=(p=null!=(d=null==(c=null==n?void 0:n.initialDimension)?void 0:c.height)?d:null==(u=null==r?void 0:r.size)?void 0:u.initialHeight)?p:Math.round(t/3);return Ot({width:h,height:f,canvasHeight:t,canvasWidth:e,items:i,type:"block"})},zt=({canvasWidth:e,canvasHeight:t,items:n})=>Ot({width:150,height:20,canvasHeight:t,canvasWidth:e,items:n,type:"line"}),Ct=({canvasWidth:e,canvasHeight:t,items:n})=>Ot({width:pt,height:ht,canvasHeight:t,canvasWidth:e,items:n,type:"input"}),St=(e,t=0)=>e.length>0?Math.max(...e.map(e=>e.position.y+e.position.h),1):t,Tt=({itemId:e,type:t="block",canvasWidth:n,canvasHeight:r,vizContract:i,layoutItems:o,config:a})=>"line"===t?{item:e,type:"line",position:zt({canvasWidth:n,canvasHeight:r,items:o})}:"input"===t?{item:e,type:"input",position:Ct({canvasWidth:n,canvasHeight:r,items:o})}:{item:e,type:t,position:xt({canvasWidth:n,canvasHeight:r,vizContract:i,config:a,items:o})},kt=({itemId:e,layoutItems:t,canvasWidth:n,type:r="block"})=>({item:e,type:r,position:{x:0,y:St(t),w:n,h:ct}}),Lt=st(()=>{const e=document.createElement("div");e.setAttribute("style","width:100px;height:100px;overflow:scroll;position:absolute;top:-9999px;"),document.body.appendChild(e);const t=e.offsetWidth-e.clientWidth;return document.body.removeChild(e),t}),Et=e=>"object"==typeof e&&null!==e&&(void 0===e.type||"block"===e.type||"input"===e.type),Pt=(e,t)=>t.y>=e.y&&t.y+t.h<=e.y+e.h,Rt=(e,t)=>t.x>=e.x&&t.x+t.w<=e.x+e.w,Dt=(e,t)=>t.position.x+t.position.w===e.position.x&&Pt(e.position,t.position),Nt=(e,t)=>t.position.x===e.position.x+e.position.w&&Pt(e.position,t.position),jt=(e,t)=>t.position.y+t.position.h===e.position.y&&Rt(e.position,t.position),Bt=(e,t)=>t.position.y===e.position.y+e.position.h&&Rt(e.position,t.position),qt=({item:e,visualizations:t})=>{let n=0,r=0,i=[],o=[];return t.forEach(t=>{(0,W.isEqual)(e,t)||(Dt(e,t)&&(n+=t.position.h,i.push(t)),Nt(e,t)&&(r+=t.position.h,o.push(t)))}),n!==e.position.h&&(i=[]),r!==e.position.h&&(o=[]),{leftNeighbors:i,rightNeighbors:o}},It=({item:e,visualizations:t})=>{let n=0,r=0,i=[],o=[];return t.forEach(t=>{(0,W.isEqual)(e,t)||(jt(e,t)&&(n+=t.position.w,i.push(t)),Bt(e,t)&&(r+=t.position.w,o.push(t)))}),n!==e.position.w&&(i=[]),r!==e.position.w&&(o=[]),{topNeighbors:i,bottomNeighbors:o}},Ft=({itemToRemove:e,visualizations:t})=>{const n=[];return t.forEach(t=>{e.position.y{const r=[];if(e.position.w===n)return Ft({itemToRemove:e,visualizations:t});const{leftNeighbors:i,rightNeighbors:o}=qt({item:e,visualizations:t});if(i.length||o.length)if(i.length&&o.length){const t=Math.floor(e.position.w/2),n=Math.ceil(e.position.w/2);i.forEach(e=>{r.push(b(m({},e),{position:b(m({},e.position),{w:e.position.w+t})}))}),o.forEach(e=>{r.push(b(m({},e),{position:b(m({},e.position),{x:e.position.x-n,w:e.position.w+n})}))})}else i.length?i.forEach(t=>{r.push(b(m({},t),{position:b(m({},t.position),{w:t.position.w+e.position.w})}))}):o.forEach(t=>{r.push(b(m({},t),{position:b(m({},t.position),{x:t.position.x-e.position.w,w:t.position.w+e.position.w})}))});else{const{topNeighbors:n,bottomNeighbors:i}=It({item:e,visualizations:t});if(n.length||i.length)if(n.length&&i.length){const t=Math.floor(e.position.h/2),o=Math.ceil(e.position.h/2);n.forEach(e=>{r.push(b(m({},e),{position:b(m({},e.position),{h:e.position.h+t})}))}),i.forEach(e=>{r.push(b(m({},e),{position:b(m({},e.position),{y:e.position.y-o,h:e.position.h+o})}))})}else n.length?n.forEach(t=>{r.push(b(m({},t),{position:b(m({},t.position),{h:t.position.h+e.position.h})}))}):i.forEach(t=>{r.push(b(m({},t),{position:b(m({},t.position),{y:t.position.y-e.position.h,h:t.position.h+e.position.h})}))})}return r},Ht=({def:e,preset:t})=>{if(!(null==e?void 0:e.visualizations))return[];const{visualizations:n}=e,r=[];return Object.entries(n).forEach(([e,{type:n}])=>{var i,o;(null==(o=null==(i=t.visualizations[n])?void 0:i.meta)?void 0:o.deprecated)&&r.push({id:e,type:n})}),r},Vt=({definition:e})=>{var t,n;if(!(null==e?void 0:e.inputs))return e;const r=(0,W.cloneDeep)(null!=(n=null==(t=e.defaults)?void 0:t.tokens)?n:{}),i=(0,W.cloneDeep)(e.inputs),o=new Set;let a=!1;return Object.keys(i).forEach(e=>{var t;const n=i[e];if(!(null==(t=n.options)?void 0:t.token))return;const{tokenNamespace:s="default",token:l,defaultValue:c}=n.options;o.has(`${s}:${l}`)||null==c||(null!=r[s]||(r[s]={}),r[s][l]={value:Array.isArray(c)?c:""+c}),Object.hasOwn(n.options,"defaultValue")&&(delete n.options.defaultValue,a=!0),o.add(`${s}:${l}`)}),a?b(m({},e),{inputs:i,defaults:b(m({},e.defaults),{tokens:r})}):e},Ut={};v(Ut,{default:()=>$t});var Yt=M(n(373));A(Ut,n(373));var $t="default"in Yt?Yt.default:Yt,Xt=({definition:e,preset:{visualizations:t}})=>{if(!(null==e?void 0:e.visualizations))return e;const n=e.visualizations,r={};let i=!1;return Object.keys(n).forEach(e=>{try{const{success:o,newDefaults:a={}}=(({type:e,vizDefaults:t,vizPresets:n})=>{const r=(0,Ut.inferToType)(e);if(n[r]&&(0,Ut.canMigrate)({fromType:e,toType:r})){const n=(0,Ut.migrate)({definition:b(m({},t[e]),{type:e})}),{type:r}=n;return{newDefaults:{[r]:g(n,["type"])},success:!0}}if(n[r]&&e!==r){const n={};return Object.entries(t[e]).forEach(([e,t])=>{void 0!==t&&"options"!==e&&(n[e]=t)}),Object.keys(n).length?{newDefaults:{[r]:n},success:!0}:{success:!0}}return{newDefaults:{[e]:t[e]},success:!1}})({vizPresets:t,vizDefaults:n,type:e});i||(i=o),Object.assign(r,a)}catch(t){L.error("Error migrating default: "+e,t),r[e]=n[e]}}),i?b(m({},e),{visualizations:r}):e},Gt=({definition:e,preset:t})=>{if(!e)return e;const n=Xt({definition:e.defaults,preset:t}),r=(({definition:e,preset:{visualizations:t}})=>{if(!e||!Object.keys(e).length)return e;let n=!1;const r={};return Object.entries(e).forEach(([e,i])=>{try{const o=(0,Ut.inferToType)(i.type);t[o]&&(0,Ut.canMigrate)({fromType:i.type,toType:o})?(r[e]=(0,Ut.migrate)({definition:i}),n=!0):t[o]&&i.type!==o?(r[e]=b(m({},i),{type:o}),delete r[e].encoding,delete r[e].options,n=!0):r[e]=i}catch(t){L.error("Error migrating visualization: "+e,t),r[e]=i}}),n?r:e})({definition:e.visualizations,preset:t});return n!==e.defaults||r!==e.visualizations?b(m({},e),{visualizations:r,defaults:n}):e},Qt=Gt,Kt=(0,P._)("No `definition` was provided for the migration"),Zt=((0,P._)("Only non-null object values can be migrated. `definition.layout` was null, undefined, or not an object."),e=>({success:!0,definition:e})),Jt=e=>{var t=e,{type:n,tabOptions:r,structure:i}=t,o=g(t,["type","tabOptions","structure"]);const a=m({type:n},o);return Object.keys(null!=r?r:{}).length&&(a.options=r),i&&(a.structure=i),a},en=({definition:e})=>{var t;if(!e)return((e,t)=>({success:!1,definition:e,reason:t}))(e,Kt);if((0,W.isObjectLike)(e.layout)&&(0,W.isObjectLike)(null==(t=e.layout)?void 0:t.tabs))return Zt(e);const n=e,{layout:r}=n,i=g(n,["layout"]);if(!(0,W.isObjectLike)(r))return Zt(e);const o=m({},i),a=r,{globalInputs:s,type:l,structure:c,options:u={}}=a,d=g(a,["globalInputs","type","structure","options"]),{globalOptions:p,tabOptions:h}=(e=>{var t=e,{submitButton:n,submitOnDashboardLoad:r,showTitleAndDescription:i}=t,o=g(t,["submitButton","submitOnDashboardLoad","showTitleAndDescription"]);let a;return void 0!==n&&(null!=a||(a={}),a.submitButton=n),void 0!==r&&(null!=a||(a={}),a.submitOnDashboardLoad=r),void 0!==i&&(null!=a||(a={}),a.showTitleAndDescription=i),{globalOptions:a,tabOptions:o}})(u);return o.layout={tabs:{items:[{layoutId:"layout_1",label:(0,P._)("New tab")}]},layoutDefinitions:{layout_1:Jt(m({type:l,tabOptions:h,structure:c},d))}},s&&(o.layout.globalInputs=s),p&&(o.layout.options=p),Zt(o)};function tn(...e){}var nn="([ \\w.-]+:)?",rn=/((?=[\w.-])[\w .-]*[\w.-])/.source,on=rn+/(\|[|a-zA-Z]+)?/.source,an=new RegExp(`^${rn}$`),sn=/\$/.source+nn+on+/\$/.source,ln=new RegExp(`${sn}|${/\$\$/.source}`,"g"),cn=new RegExp(sn),un=e=>!!e&&e.startsWith("Found potentially risky commands:"),dn=e=>un(e)&&e?Array.from(new Set(e.split(":")[1].trim().split(" "))):[],pn=e=>(0,P._)("Found potentially risky command(s): ")+dn(e).join(" "),hn=["running","queued","parsing","pause","finalizing","refreshing"],fn=10,mn={};v(mn,{default:()=>gn});var bn=M(n(681));A(mn,n(681));var gn="default"in bn?bn.default:bn,vn={};v(vn,{default:()=>An});var yn=M(n(715));A(vn,n(715));var An="default"in yn?yn.default:yn,Mn={};v(Mn,{default:()=>wn});var _n=M(n(680));A(Mn,n(680));var wn="default"in _n?_n.default:_n,On=(e,t,{includeKeys:n=[],omitKeys:r=[]}={})=>{if(e===t)return!0;let i=Object.keys(e),o=Object.keys(t);return n.length&&(i=gn(i,n),o=gn(o,n)),r.length&&(i=An(i,r),o=An(o,r)),i.length===o.length&&wn(i,n=>e[n]===t[n])},xn={};v(xn,{default:()=>Cn});var zn=M(n(275));A(xn,n(275));var Cn="default"in zn?zn.default:zn,Sn=(e,t=0)=>Cn(e)?e+"px":e||Sn(t),Tn=({width:e,height:t})=>{let n="";return(e||0===e)&&(n=`\n width: ${Sn(e)};\n `),(t||0===t)&&(n=`\n ${n}\n height: ${Sn(t)};\n `),n},kn=(e,t=[0,0,0,0])=>Array.isArray(t)?`\n ${e}: ${Sn(t[0])} ${Sn(t[1])} ${Sn(t[2])} ${Sn(t[3])};\n `:`${e}: ${Sn(t)};`,Ln=(e=[0,0,0,0])=>kn("margin",e),En=(e=[0,0,0,0])=>kn("padding",e),Pn={};v(Pn,{default:()=>Dn});var Rn=M(n(207));A(Pn,n(207));var Dn="default"in Rn?Rn.default:Rn,Nn={};v(Nn,{default:()=>Bn});var jn=M(n(82));A(Nn,n(82));var Bn="default"in jn?jn.default:jn,qn={};v(qn,{default:()=>Fn});var In=M(n(165));A(qn,n(165));var Fn="default"in In?In.default:In,Wn={};v(Wn,{default:()=>Vn});var Hn=M(n(244));A(Wn,n(244));var Vn="default"in Hn?Hn.default:Hn,Un={};v(Un,{default:()=>$n});var Yn=M(n(41));A(Un,n(41));var $n="default"in Yn?Yn.default:Yn,Xn={};v(Xn,{default:()=>Qn});var Gn=M(n(22));A(Xn,n(22));var Qn="default"in Gn?Gn.default:Gn,Kn={abbr:"s",singular:(0,P._)("second"),plural:(0,P._)("seconds")},Zn={abbr:"m",singular:(0,P._)("minute"),plural:(0,P._)("minutes")},Jn={abbr:"h",singular:(0,P._)("hour"),plural:(0,P._)("hours")},er={abbr:"d",singular:(0,P._)("day"),plural:(0,P._)("days")},tr={abbr:"w",singular:(0,P._)("week"),plural:(0,P._)("weeks")},nr={abbr:"mon",singular:(0,P._)("month"),plural:(0,P._)("months")},rr={abbr:"q",singular:(0,P._)("quarter"),plural:(0,P._)("quarters")},ir={abbr:"y",singular:(0,P._)("year"),plural:(0,P._)("years")},or={s:Kn,sec:Kn,secs:Kn,second:Kn,seconds:Kn,m:Zn,min:Zn,mins:Zn,minute:Zn,minutes:Zn,h:Jn,hr:Jn,hrs:Jn,hour:Jn,hours:Jn,d:er,day:er,days:er,w:tr,week:tr,weeks:tr,mon:nr,month:nr,months:nr,q:rr,qtr:rr,qtrs:rr,quarter:rr,quarters:rr,y:ir,yr:ir,yrs:ir,year:ir,years:ir},ar=or,sr=b(m({},or),{w0:{abbr:"w0",singular:(0,P._)("Sunday"),plural:(0,P._)("Sundays")},w1:{abbr:"w1",singular:(0,P._)("Monday"),plural:(0,P._)("Mondays")},w2:{abbr:"w2",singular:(0,P._)("Tuesday"),plural:(0,P._)("Tuesdays")},w3:{abbr:"w3",singular:(0,P._)("Wednesday"),plural:(0,P._)("Wednesdays")},w4:{abbr:"w4",singular:(0,P._)("Thursday"),plural:(0,P._)("Thursdays")},w5:{abbr:"w5",singular:(0,P._)("Friday"),plural:(0,P._)("Fridays")},w6:{abbr:"w6",singular:(0,P._)("Saturday"),plural:(0,P._)("Saturdays")},w7:{abbr:"w7",singular:(0,P._)("Sunday"),plural:(0,P._)("Sundays")}}),lr={s:"s",m:"m",h:"h",d:"d",w:"w",mon:"M",q:"Q",y:"y"},cr={s:"second",m:"minute",h:"hour",d:"day",w:"week",mon:"month",q:"quarter",y:"year"},ur={w0:0,w1:1,w2:2,w3:3,w4:4,w5:5,w6:6,w7:0},dr=e=>{const t=e||0===e?1e3*e:(new Date).getTime();return F.getDefaultSplunkTimezone()?F.newSplunkTime({time:t}):F(t)};function pr(e,t=!0){const n=Bn(ar,e),r=t?"":ar.s.abbr;return n?ar[e].abbr:r}function hr(e,t=!0){const n=Bn(sr,e),r=t?"":ar.s.abbr;return n?sr[e].abbr:r}function fr(e,t=!1){return sr[e][t?"plural":"singular"]}function mr(e){return"rt"===e?"now":e.replace(/^rt/,"")}function br(e){return e.replace(/[+-]\d?\d:\d\d$/,"")}function gr(e){return Vn(e)||Fn(e)&&/^\d+((\.\d+)|(\d*))$/.test(e)}function vr(e){return!!e.match(/^\d\d\d\d-\d\d?-\d\d?T\d\d?:\d\d?(:\d\d?)?(\.\d\d?\d?)?([+-]\d\d?:\d\d|Z)?$/)}function yr(e){return void 0!==e&&(gr(e)||vr(e))}function Ar(e){if(!Fn(e))return!1;const t={string:e,type:"relative",isFullyParsed:!0,modifiers:[]};if(vr(e))return t.type="iso",t;if(gr(e))return t.type="epoch",t;const n=e.trim().replace(/-/g,"\n-").replace(/\+/g,"\n+").split("\n");if("@"===n[0].charAt(0)&&n.unshift(""),"rt"===n[0]||"rtnow"===n[0])t.type="realTime";else{if(["rt","now","rtnow",""].indexOf(n[0])<0)return t.isFullyParsed=!1,t;t.type="relative"}return t.modifiers=n.slice(1).map(e=>{const n={string:e,unit:"s",amount:0,snap:!1,isParsed:!1},r=e.match(/^(([-+]\d*)([a-zA-Z]*))?(@([a-zA-Z][a-zA-Z0-7]*))?$/);return r?(n.unit=r[3]&&pr(r[3],!1),n.amount=n.unit?parseInt(r[2],10)||1:0,n.snap=!!r[4]&&hr(r[5],!1),n.isParsed=!0,(r[5]&&!sr[r[5]]||r[3]&&!ar[r[3]]||1===e.length)&&(t.isFullyParsed=!1,n.isParsed=!1)):t.isFullyParsed=!1,n}),t}function Mr(e){const t=Ar(e);return t&&t.isFullyParsed}function _r(e){const t=Ar(e);return t&&"realTime"===t.type&&t.isFullyParsed}function wr(e){if(Fn(e)&&vr(e)||F.isMoment(e)&&e.isValid()){const t=F(e);return t.valueOf()===t.startOf("day").valueOf()}return!1}function Or(e){return!e||"0"===e}function xr(e){return!e||Fn(e)&&"now"===e}function zr(e,t){return Or(mr(e))&&xr(mr(t))}function Cr(e,t){const n=e.earliest,r=e.latest,i=t.earliest,o=t.latest;let a=!1,s=!1;return a=!(!Or(n)||!Or(i))||n===i,s=!(!xr(r)||!xr(o))||r===o,a&&s}function Sr(e,t,n){const r=Dn(e,e=>{const r={earliest:e.earliest,latest:e.latest};return Cr({earliest:t,latest:n},r)});return!!r&&r.label}function Tr(e){return Dn(["year","month","date"],t=>{const n=e.clone().startOf(t);return e.isSame(n)})}function kr(e,t){switch(t){case"year":return e.format("YYYY");case"month":return(0,Un.sprintf)((0,P._)("%(month)s %(year)s"),{month:e.format("MMM"),year:e.format("YYYY")});default:return e.format("ll")}}function Lr(e){return e.millisecond()?e.splunkFormat("llms"):e.second()?e.splunkFormat("lls"):e.splunkFormat("lll")}function Er(e){return e.millisecond()?e.splunkFormat("LTMS"):e.second()?e.format("LTS"):e.format("LT")}function Pr(e,t,n){return n&&e.length>Math.max(t.length,n)?t:e}function Rr(e,t,n){const r=vr(e)?F(e).locale(Xn.locale||"en_US"):void 0,i=vr(t)?F(t).locale(Xn.locale||"en_US"):void 0;if(r&&i){const e=function(e,t){return wr(e)&&wr(t)?0===e.month()&&0===t.month()&&1===e.date()&&1===t.date()?"year":e.year()===t.year()&&1===e.date()&&1===t.date()||e.year()+1===t.year()&&0===t.month()&&1===e.date()&&1===t.date()?"month":e.year()===t.year()&&e.month()===t.month()||e.year()===t.year()&&e.month()+1===t.month()&&1===t.date()||e.year()+1===t.year()&&0===t.month()?"date":null:null}(r,i),t=e&&F(r).add(1,"date"===e?"days":e);return e&&t[e]()===i[e]()?kr(r,e):e?Pr(function(e,t,n){const r=t.subtract(1,"date"===n?"day":n);switch(n){case"year":return(0,Un.sprintf)((0,P._)("%(earliestYear)s through %(latestYear)s"),{earliestYear:e.format("YYYY"),latestYear:r.format("YYYY")});case"month":return(0,Un.sprintf)((0,P._)("%(earliestMonth)s through %(latestMonth)s, %(inYear)s"),{earliestMonth:e.format("MMM"),latestMonth:r.format("MMM"),inYear:r.format("YYYY")});default:return(0,Un.sprintf)((0,P._)("%(month)s %(earliestDayOfMonth)s through %(latestDayOfMonth)s, %(inYear)s"),{month:e.format("MMM"),earliestDayOfMonth:e.format("D"),latestDayOfMonth:r.format("D"),inYear:r.format("YYYY")})}}(r,i,e),(0,P._)("Date Range"),n):function(e,t){const n=e.clone().startOf("day"),r=t.clone().startOf("day");return n.isSame(r)}(r,i)?Pr(function(e,t){return(0,Un.sprintf)((0,P._)("%(earliestTime)s to %(latestTime)s, %(date)s"),{earliestTime:Er(e),latestTime:Er(t),date:e.format("ll")})}(r,i),(0,P._)("Part of a Day"),n):Pr(function(e,t){let n;return n=e.millisecond()||t.millisecond()?"llms":e.second()||t.second()?"lls":"lll",(0,Un.sprintf)((0,P._)("%(earliestDateTime)s to %(latestDateTime)s"),{earliestDateTime:e.splunkFormat(n),latestDateTime:t.splunkFormat(n)})}(r,i),(0,P._)("Between Date-times"),n)}if(r&&xr(t)){const e=Tr(r),t=e?kr(r,e):Lr(r);return Pr((0,Un.sprintf)((0,P._)("Since %(dateTime)s"),{dateTime:t}),(0,P._)("Since Date-time"),n)}if(Or(e)&&i){const e=Tr(i),t=e?kr(i,e):Lr(i);return Pr((0,Un.sprintf)((0,P._)("Before %(dateTime)s"),{dateTime:t}),(0,P._)("Before Date-time"),n)}return null}function Dr(e,t,{presets:n,maxChars:r=0}={}){const i=e.trim(),o=t.trim();return function(e,t){return!(!Or(e)||!xr(t))&&(0,P._)("All time")}(i,o)||n&&Sr(n,i,o)||function(e,t){if(_r(e)||_r(t)){const n=Ar(e),r=Ar(t);if(!n||!r)return!1;const i=n.modifiers[0],o={s:(0,P._)("%(time)d second window"),m:(0,P._)("%(time)d minute window"),h:(0,P._)("%(time)d hour window"),d:(0,P._)("%(time)d day window"),w:(0,P._)("%(time)d week window"),mon:(0,P._)("%(time)d month window"),q:(0,P._)("%(time)d quarter window"),y:(0,P._)("%(time)d year window")};return i&&"realTime"===n.type&&"realTime"===r.type&&0===r.modifiers.length&&(null==i?void 0:i.unit)&&Bn(o,i.unit)&&1===n.modifiers.length?(0,Un.sprintf)(o[i.unit],{time:Math.abs(i.amount||0)}):(0,P._)("Real-time")}return!1}(i,o)||function(e,t){const n=Ar(e),r=Ar(t);if(!n||!r)return!1;const i=n.modifiers[0],o=r.modifiers[0];if("realTime"===n.type||"realTime"===r.type||!i||n.modifiers.length>1||r.modifiers.length>1)return!1;if(i.amount<0&&(!i.snap||i.unit===i.snap)&&(xr(t)||o&&!o.amount)&&(!o||!o.snap||i.unit===o.snap)){const e=Math.abs(i.amount),t=e>1?"plural":"singular";return(0,Un.sprintf)((0,P._)("Last %(amount)d %(unit)s"),{amount:e,unit:ar[i.unit][t]})}return!1}(i,o)||Rr(i,o,r)||(0,P._)("Custom time")}function Nr(e,t,n){return 0===n?null:1===n?e:(0,Un.sprintf)(t,{numberOf:n})}function jr(e){if(e<=0)return null;const t=F.duration(e);return[Nr((0,P._)("1 year"),(0,P._)("%(numberOf)d years"),t.years()),Nr((0,P._)("1 month"),(0,P._)("%(numberOf)d months"),t.months()),Nr((0,P._)("1 day"),(0,P._)("%(numberOf)d days"),t.days()),Nr((0,P._)("1 hour"),(0,P._)("%(numberOf)d hours"),t.hours()),Nr((0,P._)("1 minute"),(0,P._)("%(numberOf)d minutes"),t.minutes()),Nr((0,P._)("1 second"),(0,P._)("%(numberOf)d seconds"),t.seconds()),Nr((0,P._)("1 millisecond"),(0,P._)("%(numberOf)d milliseconds"),t.milliseconds())].filter(e=>!!e).join(" ")}var Br=(e,t=dr())=>{const n=Ar(e);if(""===e||!n)return{error:new Error("Invalid time string"),time:e};if(!n.isFullyParsed)return{error:new Error("The time string could not be parsed"),time:e};if("iso"===n.type)return{error:null,iso:e,time:e};if("epoch"===n.type)return{error:null,iso:dr(parseFloat(e)).format(),time:e};const r=F(t);return n.modifiers.forEach(e=>{e.amount&&lr[e.unit]&&r.add(e.amount,lr[e.unit]),e.snap&&(cr[e.snap]?r.startOf(cr[e.snap]):null!=ur[e.snap]&&(r.startOf(cr.w).add(ur[e.snap],"d"),dr().isBefore(r)&&r.add(-1,"w")))}),{error:null,iso:r.format(),time:e,momentTime:r}},qr=[{label:(0,P._)("Today"),earliest:"@d",latest:"now"},{label:(0,P._)("Week to date"),earliest:"@w0",latest:"now"},{label:(0,P._)("Business week to date"),earliest:"@w1",latest:"now"},{label:(0,P._)("Month to date"),earliest:"@mon",latest:"now"},{label:(0,P._)("Year to date"),earliest:"@y",latest:"now"},{label:(0,P._)("Yesterday"),earliest:"-1d@d",latest:"@d"},{label:(0,P._)("Previous week"),earliest:"-7d@w0",latest:"@w0"},{label:(0,P._)("Previous business week"),earliest:"-6d@w1",latest:"-1d@w6"},{label:(0,P._)("Previous month"),earliest:"-1mon@mon",latest:"@mon"},{label:(0,P._)("Previous year"),earliest:"-1y@y",latest:"@y"},{label:(0,P._)("Last 15 minutes"),earliest:"-15m",latest:"now"},{label:(0,P._)("Last 60 minutes"),earliest:"-60m@m",latest:"now"},{label:(0,P._)("Last 4 hours"),earliest:"-4h@m",latest:"now"},{label:(0,P._)("Last 24 hours"),earliest:"-24h@h",latest:"now"},{label:(0,P._)("Last 7 days"),earliest:"-7d@h",latest:"now"},{label:(0,P._)("Last 30 days"),earliest:"-30d@d",latest:"now"},{label:(0,P._)("All time"),earliest:"0",latest:"now"}],Ir=[{label:(0,P._)("30 second window"),earliest:"rt-30s",latest:"rt"},{label:(0,P._)("1 minute window"),earliest:"rt-1m",latest:"rt"},{label:(0,P._)("5 minute window"),earliest:"rt-5m",latest:"rt"},{label:(0,P._)("30 minute window"),earliest:"rt-30m",latest:"rt"},{label:(0,P._)("1 hour window"),earliest:"rt-1h",latest:"rt"},{label:(0,P._)("All time (real-time)"),earliest:"rt",latest:"rt"}].concat(qr),Fr={};v(Fr,{default:()=>Hr});var Wr=M(n(878));A(Fr,n(878));var Hr="default"in Wr?Wr.default:Wr,Vr={};v(Vr,{default:()=>Yr});var Ur=M(n(258));A(Vr,n(258));var Yr="default"in Ur?Ur.default:Ur,$r={};v($r,{default:()=>Gr});var Xr=M(n(879));A($r,n(879));var Gr="default"in Xr?Xr.default:Xr,Qr={};v(Qr,{default:()=>Zr});var Kr=M(n(206));A(Qr,n(206));var Zr="default"in Kr?Kr.default:Kr,Jr={};v(Jr,{default:()=>ti});var ei=M(n(91));A(Jr,n(91));var ti="default"in ei?ei.default:ei,ni={};v(ni,{default:()=>ii});var ri=M(n(259));A(ni,n(259));var ii="default"in ri?ri.default:ri,oi={};v(oi,{default:()=>si});var ai=M(n(880));A(oi,n(880));var si="default"in ai?ai.default:ai,li={};v(li,{default:()=>ui});var ci=M(n(47));A(li,n(47));var ui="default"in ci?ci.default:ci,di={};v(di,{default:()=>hi});var pi=M(n(270));A(di,n(270));var hi="default"in pi?pi.default:pi,fi={};v(fi,{default:()=>bi});var mi=M(n(412));A(fi,n(412));var bi="default"in mi?mi.default:mi,gi={};v(gi,{default:()=>yi});var vi=M(n(716));A(gi,n(716));var yi="default"in vi?vi.default:vi,Ai={};v(Ai,{default:()=>_i});var Mi=M(n(881));A(Ai,n(881));var _i="default"in Mi?Mi.default:Mi,wi={};v(wi,{default:()=>xi});var Oi=M(n(213));A(wi,n(213));var xi="default"in Oi?Oi.default:Oi,zi="default",Ci=e=>{let t="";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),new RegExp(e.source,t)},Si=e=>"string"==typeof e&&new RegExp(`^(?:${ln.source})`).test(e),Ti=e=>"string"==typeof e&&!!e||Array.isArray(e)&&e.length>0,ki=e=>{if("string"!=typeof e)return!1;const t=e+":",n=new RegExp(nn).exec(t);return!!n&&n[0]===t},Li={search:e=>Array.isArray(e)?e.map(e=>JSON.stringify(String(e))):JSON.stringify(String(e)),url:e=>Array.isArray(e)?e.map(e=>encodeURIComponent(String(e))):encodeURIComponent(String(e)),html:e=>Array.isArray(e)?e.map(e=>Yr(String(e))):Yr(String(e)),noEscape:e=>e},Ei={h:Li.html,u:Li.url,s:Li.search,n:Li.noEscape},Pi=({value:e,tokens:t,tokenFilters:n=Ei,regexp:r=ln})=>null==e?e:e.replace(Ci(r),(e,r,i,o)=>{const a=(e=>e?e.substring(0,e.length-1):zi)(r);let s=e;const l=ti(t,[a,i],null);if((!Array.isArray(l)||0!==l.length)&&null!=l){s=l;(o?o.substring(1).split("|"):[]).forEach(e=>{const t=e;Zr(n[t])&&(s=n[t](s))})}return Array.isArray(s)&&(s=s.join(",")),s}),Ri=({value:e,tokens:t={},tokenFilters:n=Ei,start:r=0,resolvedTokens:i=[],missedTokens:o=[]})=>{const a=e.indexOf("$",r);if(-1===a)return{value:e,missedTokens:o,resolvedTokens:i};if("$"===e[a+1]){const r=e.slice(0,a)+e.slice(a+1);return Ri({value:r,tokens:t,tokenFilters:n,start:a+1,resolvedTokens:i,missedTokens:o})}const s=e.indexOf("$",a+1);if(-1===s)return{value:e,missedTokens:o,resolvedTokens:i};const l=s+1,c=e.indexOf("$",l+1),u=e.slice(l,c+1),d=cn.test(u)||"$"===e[s+1]&&"$"===e[s+2];if("$"!==e[s+1]||d){const r=e.slice(a,s+1),l=cn.test(r);let c=r;l&&(c=Pi({value:r,tokens:t,tokenFilters:n,regexp:ln}));if(r===c){l&&!o.includes(r)&&o.push(r);return Ri({value:e,tokens:t,tokenFilters:n,start:d?s+1:s,resolvedTokens:i,missedTokens:o})}const u=((e,t,n,r)=>`${e.substring(0,t)}${r}${e.substring(n)}`)(e,a,s+1,c);!i.includes(r)&&l&&i.push(r);const p=c.length-r.length;return Ri({value:u,tokens:t,tokenFilters:n,start:s+p+1,resolvedTokens:i,missedTokens:o})}return Ri({value:e,tokens:t,tokenFilters:n,start:s,resolvedTokens:i,missedTokens:o})},Di=(e,t,n=Ei)=>{const r=new Set,i=new Set,o=(e,a=0)=>{if(null==e)return e;if(Fn(e)){const o=Ri({value:e,tokens:t,tokenFilters:n});return o.missedTokens.forEach(e=>{r.add(e)}),o.resolvedTokens.forEach(e=>{i.add(e)}),o.value}return Ee(e)&&a<=10?Gr(e,e=>o(e,a+1)):ui(e)&&a<=10?si(e,e=>o(e,a+1)):e};return{value:o(e),missedTokens:Array.from(r),resolvedTokens:Array.from(i)}},Ni=(e,t,n=Ei)=>e?Ri({value:e,tokens:t,tokenFilters:n}).value:e,ji=e=>null==e?e:e.replace(Ci(ln),(e,t,n,r)=>{let i;t&&(i=t.substring(0,t.length-1));let o=e;return i&&(o=o.replace(i,Ue(i,"namespace_"))),n&&(o=o.replace(n,Ue(n,"token_"))),r&&(o=o.replace(r,Ue(r,"|filter_"))),o}),Bi=(e,t,n=Ei,r=0)=>null==e?e:Fn(e)?Ni(e,t,n):Ee(e)&&r<=10?Gr(e,e=>Bi(e,t,n,r+1)):ui(e)&&r<=10?e.map(e=>Bi(e,t,n,r+1)):e,qi=e=>e?Ri({value:e}).missedTokens.map(e=>{var t,n,r,i;const o=Ci(ln),[,a,s,l]=null!=(t=o.exec(e))?t:[];return{namespace:null!=(n=null==a?void 0:a.slice(0,-1))?n:zi,name:null!=s?s:"",filters:null!=(i=null==(r=null==l?void 0:l.slice(1))?void 0:r.split("|"))?i:[]}}):[],Ii=(e,t=0)=>hi(e)?[]:Fn(e)?qi(e):Ee(e)&&t<=10?_i(yi(si(bi(e),e=>Ii(e,t+1))),xi):ui(e)&&t<=10?_i(yi(si(e,e=>Ii(e,t+1))),xi):[],Fi=e=>e.map(e=>qi(`$${e}$`)[0]),Wi=e=>{if("string"!=typeof e)throw new TypeError("hasTokens requires a string");return Ri({value:e}).missedTokens.length>0},Hi=(e,t=0)=>null!=e&&(Fn(e)?Wi(e):!!((ui(e)||Ee(e))&&t<=10)&&Hr(e,e=>Hi(e,t+1))),Vi=(e,t,n)=>{const r={};n.forEach(t=>{r[t]=ti(e,t)});const i=Bi(e,t);return n.forEach(e=>{r[e]&&ii(i,e,r[e])}),i},Ui=({search:e})=>{const t=new URLSearchParams(e),n={};return t.forEach((e,t)=>{if(!t.startsWith("form.")||!Ti(e))return;const r=t.slice(5);n[r]?("string"==typeof n[r]&&(n[r]=[n[r]]),n[r].push(e)):n[r]=e}),{default:n}},Yi=({search:e="?",tokens:t})=>{const n=new URLSearchParams(e),r=new URLSearchParams(e),i=e=>{const n=t[zi][e],i="form."+e;Array.isArray(n)?n.forEach(e=>{Ti(e)&&r.append(i,e)}):Ti(n)&&r.set(i,n)};return n.forEach((e,n)=>{if(n.startsWith("form.")){const e=n.substring(5);r.delete(n),e in t.default&&i(e)}}),Object.keys(t.default).forEach(e=>{r.has("form."+e)||i(e)}),r.toString()},$i=(0,P._)("Token names cannot contain tokens."),Xi=(0,P._)("Token names must start and end with an alphanumeric character, dash, underscore, or period."),Gi=(0,P._)("Token names can only include letters, numbers, spaces, dashes, underscores, and periods."),Qi=e=>{if(cn.test(e))return $i;const t=/[\w.-]/,n=e.length;return 0!==n&&t.test(e[0])&&t.test(e[n-1])?an.test(e)?null:Gi:Xi},Ki=(e=8)=>{let t="",n=e;for(;n--;)t+="useandom26T198340PX75pxJACKVERYMINDBUSHWOLFGQZbfghjklqvwyzrict"[62*Math.random()|0];return t},Zi=e=>/^https?:\/\//.test(e),Ji=e=>!!(null==e?void 0:e.length)&&"/"===e[0]&&!/^\/\//.test(e),eo=e=>/\s/g.test(e),to=e=>!eo(e)&&(Zi(e)||Ji(e)),no=()=>window.location.search,ro=(e,t=!1)=>{t?window.open(e,"_blank"):window.location.href=e},io=/Mac/,oo=()=>{var e,t,n,r,i;return(null==(t=null==(e=globalThis.navigator)?void 0:e.userAgentData)?void 0:t.platform)?"macOS"===(null==(r=null==(n=globalThis.navigator)?void 0:n.userAgentData)?void 0:r.platform):io.test((null==(i=globalThis.navigator)?void 0:i.userAgent)||"")}}).call(this,n(120))},1300:function(e,t){e.exports='ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"], function(require, exports, module) {\n"use strict";\nvar oop = require("./lib/oop");\nvar EventEmitter = require("./lib/event_emitter").EventEmitter;\nvar lang = require("./lib/lang");\nvar Range = require("./range").Range;\nvar Anchor = require("./anchor").Anchor;\nvar HashHandler = require("./keyboard/hash_handler").HashHandler;\nvar Tokenizer = require("./tokenizer").Tokenizer;\nvar comparePoints = Range.comparePoints;\n\nvar SnippetManager = function() {\n this.snippetMap = {};\n this.snippetNameMap = {};\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n \n this.getTokenizer = function() {\n function TabstopToken(str, _, stack) {\n str = str.substr(1);\n if (/^\\d+$/.test(str) && !stack.inFormatString)\n return [{tabstopId: parseInt(str, 10)}];\n return [{text: str}];\n }\n function escape(ch) {\n return "(?:[^\\\\\\\\" + ch + "]|\\\\\\\\.)";\n }\n SnippetManager.$tokenizer = new Tokenizer({\n start: [\n {regex: /:/, onMatch: function(val, state, stack) {\n if (stack.length && stack[0].expectIf) {\n stack[0].expectIf = false;\n stack[0].elseBranch = stack[0];\n return [stack[0]];\n }\n return ":";\n }},\n {regex: /\\\\./, onMatch: function(val, state, stack) {\n var ch = val[1];\n if (ch == "}" && stack.length) {\n val = ch;\n }else if ("`$\\\\".indexOf(ch) != -1) {\n val = ch;\n } else if (stack.inFormatString) {\n if (ch == "n")\n val = "\\n";\n else if (ch == "t")\n val = "\\n";\n else if ("ulULE".indexOf(ch) != -1) {\n val = {changeCase: ch, local: ch > "a"};\n }\n }\n\n return [val];\n }},\n {regex: /}/, onMatch: function(val, state, stack) {\n return [stack.length ? stack.shift() : val];\n }},\n {regex: /\\$(?:\\d+|\\w+)/, onMatch: TabstopToken},\n {regex: /\\$\\{[\\dA-Z_a-z]+/, onMatch: function(str, state, stack) {\n var t = TabstopToken(str.substr(1), state, stack);\n stack.unshift(t[0]);\n return t;\n }, next: "snippetVar"},\n {regex: /\\n/, token: "newline", merge: false}\n ],\n snippetVar: [\n {regex: "\\\\|" + escape("\\\\|") + "*\\\\|", onMatch: function(val, state, stack) {\n stack[0].choices = val.slice(1, -1).split(",");\n }, next: "start"},\n {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\\\w*):?",\n onMatch: function(val, state, stack) {\n var ts = stack[0];\n ts.fmtString = val;\n\n val = this.splitRegex.exec(val);\n ts.guard = val[1];\n ts.fmt = val[2];\n ts.flag = val[3];\n return "";\n }, next: "start"},\n {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) {\n stack[0].code = val.splice(1, -1);\n return "";\n }, next: "start"},\n {regex: "\\\\?", onMatch: function(val, state, stack) {\n if (stack[0])\n stack[0].expectIf = true;\n }, next: "start"},\n {regex: "([^:}\\\\\\\\]|\\\\\\\\.)*:?", token: "", next: "start"}\n ],\n formatString: [\n {regex: "/(" + escape("/") + "+)/", token: "regex"},\n {regex: "", onMatch: function(val, state, stack) {\n stack.inFormatString = true;\n }, next: "start"}\n ]\n });\n SnippetManager.prototype.getTokenizer = function() {\n return SnippetManager.$tokenizer;\n };\n return SnippetManager.$tokenizer;\n };\n\n this.tokenizeTmSnippet = function(str, startState) {\n return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) {\n return x.value || x;\n });\n };\n\n this.$getDefaultValue = function(editor, name) {\n if (/^[A-Z]\\d+$/.test(name)) {\n var i = name.substr(1);\n return (this.variables[name[0] + "__"] || {})[i];\n }\n if (/^\\d+$/.test(name)) {\n return (this.variables.__ || {})[name];\n }\n name = name.replace(/^TM_/, "");\n\n if (!editor)\n return;\n var s = editor.session;\n switch(name) {\n case "CURRENT_WORD":\n var r = s.getWordRange();\n case "SELECTION":\n case "SELECTED_TEXT":\n return s.getTextRange(r);\n case "CURRENT_LINE":\n return s.getLine(editor.getCursorPosition().row);\n case "PREV_LINE": // not possible in textmate\n return s.getLine(editor.getCursorPosition().row - 1);\n case "LINE_INDEX":\n return editor.getCursorPosition().column;\n case "LINE_NUMBER":\n return editor.getCursorPosition().row + 1;\n case "SOFT_TABS":\n return s.getUseSoftTabs() ? "YES" : "NO";\n case "TAB_SIZE":\n return s.getTabSize();\n case "FILENAME":\n case "FILEPATH":\n return "";\n case "FULLNAME":\n return "Ace";\n }\n };\n this.variables = {};\n this.getVariableValue = function(editor, varName) {\n if (this.variables.hasOwnProperty(varName))\n return this.variables[varName](editor, varName) || "";\n return this.$getDefaultValue(editor, varName) || "";\n };\n this.tmStrFormat = function(str, ch, editor) {\n var flag = ch.flag || "";\n var re = ch.guard;\n re = new RegExp(re, flag.replace(/[^gi]/, ""));\n var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString");\n var _self = this;\n var formatted = str.replace(re, function() {\n _self.variables.__ = arguments;\n var fmtParts = _self.resolveVariables(fmtTokens, editor);\n var gChangeCase = "E";\n for (var i = 0; i < fmtParts.length; i++) {\n var ch = fmtParts[i];\n if (typeof ch == "object") {\n fmtParts[i] = "";\n if (ch.changeCase && ch.local) {\n var next = fmtParts[i + 1];\n if (next && typeof next == "string") {\n if (ch.changeCase == "u")\n fmtParts[i] = next[0].toUpperCase();\n else\n fmtParts[i] = next[0].toLowerCase();\n fmtParts[i + 1] = next.substr(1);\n }\n } else if (ch.changeCase) {\n gChangeCase = ch.changeCase;\n }\n } else if (gChangeCase == "U") {\n fmtParts[i] = ch.toUpperCase();\n } else if (gChangeCase == "L") {\n fmtParts[i] = ch.toLowerCase();\n }\n }\n return fmtParts.join("");\n });\n this.variables.__ = null;\n return formatted;\n };\n\n this.resolveVariables = function(snippet, editor) {\n var result = [];\n for (var i = 0; i < snippet.length; i++) {\n var ch = snippet[i];\n if (typeof ch == "string") {\n result.push(ch);\n } else if (typeof ch != "object") {\n continue;\n } else if (ch.skip) {\n gotoNext(ch);\n } else if (ch.processed < i) {\n continue;\n } else if (ch.text) {\n var value = this.getVariableValue(editor, ch.text);\n if (value && ch.fmtString)\n value = this.tmStrFormat(value, ch);\n ch.processed = i;\n if (ch.expectIf == null) {\n if (value) {\n result.push(value);\n gotoNext(ch);\n }\n } else {\n if (value) {\n ch.skip = ch.elseBranch;\n } else\n gotoNext(ch);\n }\n } else if (ch.tabstopId != null) {\n result.push(ch);\n } else if (ch.changeCase != null) {\n result.push(ch);\n }\n }\n function gotoNext(ch) {\n var i1 = snippet.indexOf(ch, i + 1);\n if (i1 != -1)\n i = i1;\n }\n return result;\n };\n\n this.insertSnippetForSelection = function(editor, snippetText) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var tabString = editor.session.getTabString();\n var indentString = line.match(/^\\s*/)[0];\n \n if (cursor.column < indentString.length)\n indentString = indentString.slice(0, cursor.column);\n\n var tokens = this.tokenizeTmSnippet(snippetText);\n tokens = this.resolveVariables(tokens, editor);\n tokens = tokens.map(function(x) {\n if (x == "\\n")\n return x + indentString;\n if (typeof x == "string")\n return x.replace(/\\t/g, tabString);\n return x;\n });\n var tabstops = [];\n tokens.forEach(function(p, i) {\n if (typeof p != "object")\n return;\n var id = p.tabstopId;\n var ts = tabstops[id];\n if (!ts) {\n ts = tabstops[id] = [];\n ts.index = id;\n ts.value = "";\n }\n if (ts.indexOf(p) !== -1)\n return;\n ts.push(p);\n var i1 = tokens.indexOf(p, i + 1);\n if (i1 === -1)\n return;\n\n var value = tokens.slice(i + 1, i1);\n var isNested = value.some(function(t) {return typeof t === "object"}); \n if (isNested && !ts.value) {\n ts.value = value;\n } else if (value.length && (!ts.value || typeof ts.value !== "string")) {\n ts.value = value.join("");\n }\n });\n tabstops.forEach(function(ts) {ts.length = 0});\n var expanding = {};\n function copyValue(val) {\n var copy = [];\n for (var i = 0; i < val.length; i++) {\n var p = val[i];\n if (typeof p == "object") {\n if (expanding[p.tabstopId])\n continue;\n var j = val.lastIndexOf(p, i - 1);\n p = copy[j] || {tabstopId: p.tabstopId};\n }\n copy[i] = p;\n }\n return copy;\n }\n for (var i = 0; i < tokens.length; i++) {\n var p = tokens[i];\n if (typeof p != "object")\n continue;\n var id = p.tabstopId;\n var i1 = tokens.indexOf(p, i + 1);\n if (expanding[id]) {\n if (expanding[id] === p)\n expanding[id] = null;\n continue;\n }\n \n var ts = tabstops[id];\n var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value);\n arg.unshift(i + 1, Math.max(0, i1 - i));\n arg.push(p);\n expanding[id] = p;\n tokens.splice.apply(tokens, arg);\n\n if (ts.indexOf(p) === -1)\n ts.push(p);\n }\n var row = 0, column = 0;\n var text = "";\n tokens.forEach(function(t) {\n if (typeof t === "string") {\n if (t[0] === "\\n"){\n column = t.length - 1;\n row ++;\n } else\n column += t.length;\n text += t;\n } else {\n if (!t.start)\n t.start = {row: row, column: column};\n else\n t.end = {row: row, column: column};\n }\n });\n var range = editor.getSelectionRange();\n var end = editor.session.replace(range, text);\n\n var tabstopManager = new TabstopManager(editor);\n var selectionId = editor.inVirtualSelectionMode && editor.selection.index;\n tabstopManager.addTabstops(tabstops, range.start, end, selectionId);\n };\n \n this.insertSnippet = function(editor, snippetText) {\n var self = this;\n if (editor.inVirtualSelectionMode)\n return self.insertSnippetForSelection(editor, snippetText);\n \n editor.forEachSelection(function() {\n self.insertSnippetForSelection(editor, snippetText);\n }, null, {keepOrder: true});\n \n if (editor.tabstopManager)\n editor.tabstopManager.tabNext();\n };\n\n this.$getScope = function(editor) {\n var scope = editor.session.$mode.$id || "";\n scope = scope.split("/").pop();\n if (scope === "html" || scope === "php") {\n if (scope === "php" && !editor.session.$mode.inlinePhp) \n scope = "html";\n var c = editor.getCursorPosition();\n var state = editor.session.getState(c.row);\n if (typeof state === "object") {\n state = state[0];\n }\n if (state.substring) {\n if (state.substring(0, 3) == "js-")\n scope = "javascript";\n else if (state.substring(0, 4) == "css-")\n scope = "css";\n else if (state.substring(0, 4) == "php-")\n scope = "php";\n }\n }\n \n return scope;\n };\n\n this.getActiveScopes = function(editor) {\n var scope = this.$getScope(editor);\n var scopes = [scope];\n var snippetMap = this.snippetMap;\n if (snippetMap[scope] && snippetMap[scope].includeScopes) {\n scopes.push.apply(scopes, snippetMap[scope].includeScopes);\n }\n scopes.push("_");\n return scopes;\n };\n\n this.expandWithTab = function(editor, options) {\n var self = this;\n var result = editor.forEachSelection(function() {\n return self.expandSnippetForSelection(editor, options);\n }, null, {keepOrder: true});\n if (result && editor.tabstopManager)\n editor.tabstopManager.tabNext();\n return result;\n };\n \n this.expandSnippetForSelection = function(editor, options) {\n var cursor = editor.getCursorPosition();\n var line = editor.session.getLine(cursor.row);\n var before = line.substring(0, cursor.column);\n var after = line.substr(cursor.column);\n\n var snippetMap = this.snippetMap;\n var snippet;\n this.getActiveScopes(editor).some(function(scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = this.findMatchingSnippet(snippets, before, after);\n return !!snippet;\n }, this);\n if (!snippet)\n return false;\n if (options && options.dryRun)\n return true;\n editor.session.doc.removeInLine(cursor.row,\n cursor.column - snippet.replaceBefore.length,\n cursor.column + snippet.replaceAfter.length\n );\n\n this.variables.M__ = snippet.matchBefore;\n this.variables.T__ = snippet.matchAfter;\n this.insertSnippetForSelection(editor, snippet.content);\n\n this.variables.M__ = this.variables.T__ = null;\n return true;\n };\n\n this.findMatchingSnippet = function(snippetList, before, after) {\n for (var i = snippetList.length; i--;) {\n var s = snippetList[i];\n if (s.startRe && !s.startRe.test(before))\n continue;\n if (s.endRe && !s.endRe.test(after))\n continue;\n if (!s.startRe && !s.endRe)\n continue;\n\n s.matchBefore = s.startRe ? s.startRe.exec(before) : [""];\n s.matchAfter = s.endRe ? s.endRe.exec(after) : [""];\n s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : "";\n s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : "";\n return s;\n }\n };\n\n this.snippetMap = {};\n this.snippetNameMap = {};\n this.register = function(snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n var self = this;\n \n if (!snippets) \n snippets = [];\n \n function wrapRegexp(src) {\n if (src && !/^\\^?\\(.*\\)\\$?$|^\\\\b$/.test(src))\n src = "(?:" + src + ")";\n\n return src || "";\n }\n function guardedRegexp(re, guard, opening) {\n re = wrapRegexp(re);\n guard = wrapRegexp(guard);\n if (opening) {\n re = guard + re;\n if (re && re[re.length - 1] != "$")\n re = re + "$";\n } else {\n re = re + guard;\n if (re && re[0] != "^")\n re = "^" + re;\n }\n return new RegExp(re);\n }\n\n function addSnippet(s) {\n if (!s.scope)\n s.scope = scope || "_";\n scope = s.scope;\n if (!snippetMap[scope]) {\n snippetMap[scope] = [];\n snippetNameMap[scope] = {};\n }\n\n var map = snippetNameMap[scope];\n if (s.name) {\n var old = map[s.name];\n if (old)\n self.unregister(old);\n map[s.name] = s;\n }\n snippetMap[scope].push(s);\n\n if (s.tabTrigger && !s.trigger) {\n if (!s.guard && /^\\w/.test(s.tabTrigger))\n s.guard = "\\\\b";\n s.trigger = lang.escapeRegExp(s.tabTrigger);\n }\n \n if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard)\n return;\n \n s.startRe = guardedRegexp(s.trigger, s.guard, true);\n s.triggerRe = new RegExp(s.trigger, "", true);\n\n s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true);\n s.endTriggerRe = new RegExp(s.endTrigger, "", true);\n }\n\n if (snippets && snippets.content)\n addSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(addSnippet);\n \n this._signal("registerSnippets", {scope: scope});\n };\n this.unregister = function(snippets, scope) {\n var snippetMap = this.snippetMap;\n var snippetNameMap = this.snippetNameMap;\n\n function removeSnippet(s) {\n var nameMap = snippetNameMap[s.scope||scope];\n if (nameMap && nameMap[s.name]) {\n delete nameMap[s.name];\n var map = snippetMap[s.scope||scope];\n var i = map && map.indexOf(s);\n if (i >= 0)\n map.splice(i, 1);\n }\n }\n if (snippets.content)\n removeSnippet(snippets);\n else if (Array.isArray(snippets))\n snippets.forEach(removeSnippet);\n };\n this.parseSnippetFile = function(str) {\n str = str.replace(/\\r/g, "");\n var list = [], snippet = {};\n var re = /^#.*|^({[\\s\\S]*})\\s*$|^(\\S+) (.*)$|^((?:\\n*\\t.*)+)/gm;\n var m;\n while (m = re.exec(str)) {\n if (m[1]) {\n try {\n snippet = JSON.parse(m[1]);\n list.push(snippet);\n } catch (e) {}\n } if (m[4]) {\n snippet.content = m[4].replace(/^\\t/gm, "");\n list.push(snippet);\n snippet = {};\n } else {\n var key = m[2], val = m[3];\n if (key == "regex") {\n var guardRe = /\\/((?:[^\\/\\\\]|\\\\.)*)|$/g;\n snippet.guard = guardRe.exec(val)[1];\n snippet.trigger = guardRe.exec(val)[1];\n snippet.endTrigger = guardRe.exec(val)[1];\n snippet.endGuard = guardRe.exec(val)[1];\n } else if (key == "snippet") {\n snippet.tabTrigger = val.match(/^\\S*/)[0];\n if (!snippet.name)\n snippet.name = val;\n } else {\n snippet[key] = val;\n }\n }\n }\n return list;\n };\n this.getSnippetByName = function(name, editor) {\n var snippetMap = this.snippetNameMap;\n var snippet;\n this.getActiveScopes(editor).some(function(scope) {\n var snippets = snippetMap[scope];\n if (snippets)\n snippet = snippets[name];\n return !!snippet;\n }, this);\n return snippet;\n };\n\n}).call(SnippetManager.prototype);\n\n\nvar TabstopManager = function(editor) {\n if (editor.tabstopManager)\n return editor.tabstopManager;\n editor.tabstopManager = this;\n this.$onChange = this.onChange.bind(this);\n this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule;\n this.$onChangeSession = this.onChangeSession.bind(this);\n this.$onAfterExec = this.onAfterExec.bind(this);\n this.attach(editor);\n};\n(function() {\n this.attach = function(editor) {\n this.index = 0;\n this.ranges = [];\n this.tabstops = [];\n this.$openTabstops = null;\n this.selectedTabstop = null;\n\n this.editor = editor;\n this.editor.on("change", this.$onChange);\n this.editor.on("changeSelection", this.$onChangeSelection);\n this.editor.on("changeSession", this.$onChangeSession);\n this.editor.commands.on("afterExec", this.$onAfterExec);\n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n this.detach = function() {\n this.tabstops.forEach(this.removeTabstopMarkers, this);\n this.ranges = null;\n this.tabstops = null;\n this.selectedTabstop = null;\n this.editor.removeListener("change", this.$onChange);\n this.editor.removeListener("changeSelection", this.$onChangeSelection);\n this.editor.removeListener("changeSession", this.$onChangeSession);\n this.editor.commands.removeListener("afterExec", this.$onAfterExec);\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.tabstopManager = null;\n this.editor = null;\n };\n\n this.onChange = function(delta) {\n var changeRange = delta;\n var isRemove = delta.action[0] == "r";\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var lineDif = endRow - startRow;\n var colDiff = end.column - start.column;\n\n if (isRemove) {\n lineDif = -lineDif;\n colDiff = -colDiff;\n }\n if (!this.$inChange && isRemove) {\n var ts = this.selectedTabstop;\n var changedOutside = ts && !ts.some(function(r) {\n return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0;\n });\n if (changedOutside)\n return this.detach();\n }\n var ranges = this.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var r = ranges[i];\n if (r.end.row < start.row)\n continue;\n\n if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) {\n this.removeRange(r);\n i--;\n continue;\n }\n\n if (r.start.row == startRow && r.start.column > start.column)\n r.start.column += colDiff;\n if (r.end.row == startRow && r.end.column >= start.column)\n r.end.column += colDiff;\n if (r.start.row >= startRow)\n r.start.row += lineDif;\n if (r.end.row >= startRow)\n r.end.row += lineDif;\n\n if (comparePoints(r.start, r.end) > 0)\n this.removeRange(r);\n }\n if (!ranges.length)\n this.detach();\n };\n this.updateLinkedFields = function() {\n var ts = this.selectedTabstop;\n if (!ts || !ts.hasLinkedRanges)\n return;\n this.$inChange = true;\n var session = this.editor.session;\n var text = session.getTextRange(ts.firstNonLinked);\n for (var i = ts.length; i--;) {\n var range = ts[i];\n if (!range.linked)\n continue;\n var fmt = exports.snippetManager.tmStrFormat(text, range.original);\n session.replace(range, fmt);\n }\n this.$inChange = false;\n };\n this.onAfterExec = function(e) {\n if (e.command && !e.command.readOnly)\n this.updateLinkedFields();\n };\n this.onChangeSelection = function() {\n if (!this.editor)\n return;\n var lead = this.editor.selection.lead;\n var anchor = this.editor.selection.anchor;\n var isEmpty = this.editor.selection.isEmpty();\n for (var i = this.ranges.length; i--;) {\n if (this.ranges[i].linked)\n continue;\n var containsLead = this.ranges[i].contains(lead.row, lead.column);\n var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column);\n if (containsLead && containsAnchor)\n return;\n }\n this.detach();\n };\n this.onChangeSession = function() {\n this.detach();\n };\n this.tabNext = function(dir) {\n var max = this.tabstops.length;\n var index = this.index + (dir || 1);\n index = Math.min(Math.max(index, 1), max);\n if (index == max)\n index = 0;\n this.selectTabstop(index);\n if (index === 0)\n this.detach();\n };\n this.selectTabstop = function(index) {\n this.$openTabstops = null;\n var ts = this.tabstops[this.index];\n if (ts)\n this.addTabstopMarkers(ts);\n this.index = index;\n ts = this.tabstops[this.index];\n if (!ts || !ts.length)\n return;\n \n this.selectedTabstop = ts;\n if (!this.editor.inVirtualSelectionMode) { \n var sel = this.editor.multiSelect;\n sel.toSingleRange(ts.firstNonLinked.clone());\n for (var i = ts.length; i--;) {\n if (ts.hasLinkedRanges && ts[i].linked)\n continue;\n sel.addRange(ts[i].clone(), true);\n }\n if (sel.ranges[0])\n sel.addRange(sel.ranges[0].clone());\n } else {\n this.editor.selection.setRange(ts.firstNonLinked);\n }\n \n this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n };\n this.addTabstops = function(tabstops, start, end) {\n if (!this.$openTabstops)\n this.$openTabstops = [];\n if (!tabstops[0]) {\n var p = Range.fromPoints(end, end);\n moveRelative(p.start, start);\n moveRelative(p.end, start);\n tabstops[0] = [p];\n tabstops[0].index = 0;\n }\n\n var i = this.index;\n var arg = [i + 1, 0];\n var ranges = this.ranges;\n tabstops.forEach(function(ts, index) {\n var dest = this.$openTabstops[index] || ts;\n \n for (var i = ts.length; i--;) {\n var p = ts[i];\n var range = Range.fromPoints(p.start, p.end || p.start);\n movePoint(range.start, start);\n movePoint(range.end, start);\n range.original = p;\n range.tabstop = dest;\n ranges.push(range);\n if (dest != ts)\n dest.unshift(range);\n else\n dest[i] = range;\n if (p.fmtString) {\n range.linked = true;\n dest.hasLinkedRanges = true;\n } else if (!dest.firstNonLinked)\n dest.firstNonLinked = range;\n }\n if (!dest.firstNonLinked)\n dest.hasLinkedRanges = false;\n if (dest === ts) {\n arg.push(dest);\n this.$openTabstops[index] = dest;\n }\n this.addTabstopMarkers(dest);\n }, this);\n \n if (arg.length > 2) {\n if (this.tabstops.length)\n arg.push(arg.splice(2, 1)[0]);\n this.tabstops.splice.apply(this.tabstops, arg);\n }\n };\n\n this.addTabstopMarkers = function(ts) {\n var session = this.editor.session;\n ts.forEach(function(range) {\n if (!range.markerId)\n range.markerId = session.addMarker(range, "ace_snippet-marker", "text");\n });\n };\n this.removeTabstopMarkers = function(ts) {\n var session = this.editor.session;\n ts.forEach(function(range) {\n session.removeMarker(range.markerId);\n range.markerId = null;\n });\n };\n this.removeRange = function(range) {\n var i = range.tabstop.indexOf(range);\n range.tabstop.splice(i, 1);\n i = this.ranges.indexOf(range);\n this.ranges.splice(i, 1);\n this.editor.session.removeMarker(range.markerId);\n if (!range.tabstop.length) {\n i = this.tabstops.indexOf(range.tabstop);\n if (i != -1)\n this.tabstops.splice(i, 1);\n if (!this.tabstops.length)\n this.detach();\n }\n };\n\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys({\n "Tab": function(ed) {\n if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) {\n return;\n }\n\n ed.tabstopManager.tabNext(1);\n },\n "Shift-Tab": function(ed) {\n ed.tabstopManager.tabNext(-1);\n },\n "Esc": function(ed) {\n ed.tabstopManager.detach();\n },\n "Return": function(ed) {\n return false;\n }\n });\n}).call(TabstopManager.prototype);\n\n\n\nvar changeTracker = {};\nchangeTracker.onChange = Anchor.prototype.onChange;\nchangeTracker.setPosition = function(row, column) {\n this.pos.row = row;\n this.pos.column = column;\n};\nchangeTracker.update = function(pos, delta, $insertRight) {\n this.$insertRight = $insertRight;\n this.pos = pos; \n this.onChange(delta);\n};\n\nvar movePoint = function(point, diff) {\n if (point.row == 0)\n point.column += diff.column;\n point.row += diff.row;\n};\n\nvar moveRelative = function(point, start) {\n if (point.row == start.row)\n point.column -= start.column;\n point.row -= start.row;\n};\n\n\nrequire("./lib/dom").importCssString("\\\n.ace_snippet-marker {\\\n -moz-box-sizing: border-box;\\\n box-sizing: border-box;\\\n background: rgba(194, 193, 208, 0.09);\\\n border: 1px dotted rgba(211, 208, 235, 0.62);\\\n position: absolute;\\\n}");\n\nexports.snippetManager = new SnippetManager();\n\n\nvar Editor = require("./editor").Editor;\n(function() {\n this.insertSnippet = function(content, options) {\n return exports.snippetManager.insertSnippet(this, content, options);\n };\n this.expandSnippet = function(options) {\n return exports.snippetManager.expandWithTab(this, options);\n };\n}).call(Editor.prototype);\n\n});\n\nace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"], function(require, exports, module) {\n"use strict";\n\nvar Renderer = require("../virtual_renderer").VirtualRenderer;\nvar Editor = require("../editor").Editor;\nvar Range = require("../range").Range;\nvar event = require("../lib/event");\nvar lang = require("../lib/lang");\nvar dom = require("../lib/dom");\n\nvar $singleLineEditor = function(el) {\n var renderer = new Renderer(el);\n\n renderer.$maxLines = 4;\n\n var editor = new Editor(renderer);\n\n editor.setHighlightActiveLine(false);\n editor.setShowPrintMargin(false);\n editor.renderer.setShowGutter(false);\n editor.renderer.setHighlightGutterLine(false);\n\n editor.$mouseHandler.$focusWaitTimout = 0;\n editor.$highlightTagPending = true;\n\n return editor;\n};\n\nvar AcePopup = function(parentNode) {\n var el = dom.createElement("div");\n var popup = new $singleLineEditor(el);\n\n if (parentNode)\n parentNode.appendChild(el);\n el.style.display = "none";\n popup.renderer.content.style.cursor = "default";\n popup.renderer.setStyle("ace_autocomplete");\n\n popup.setOption("displayIndentGuides", false);\n popup.setOption("dragDelay", 150);\n\n var noop = function(){};\n\n popup.focus = noop;\n popup.$isFocused = true;\n\n popup.renderer.$cursorLayer.restartTimer = noop;\n popup.renderer.$cursorLayer.element.style.opacity = 0;\n\n popup.renderer.$maxLines = 8;\n popup.renderer.$keepTextAreaAtCursor = false;\n\n popup.setHighlightActiveLine(false);\n popup.session.highlight("");\n popup.session.$searchHighlight.clazz = "ace_highlight-marker";\n\n popup.on("mousedown", function(e) {\n var pos = e.getDocumentPosition();\n popup.selection.moveToPosition(pos);\n selectionMarker.start.row = selectionMarker.end.row = pos.row;\n e.stop();\n });\n\n var lastMouseEvent;\n var hoverMarker = new Range(-1,0,-1,Infinity);\n var selectionMarker = new Range(-1,0,-1,Infinity);\n selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine");\n popup.setSelectOnHover = function(val) {\n if (!val) {\n hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine");\n } else if (hoverMarker.id) {\n popup.session.removeMarker(hoverMarker.id);\n hoverMarker.id = null;\n }\n };\n popup.setSelectOnHover(false);\n popup.on("mousemove", function(e) {\n if (!lastMouseEvent) {\n lastMouseEvent = e;\n return;\n }\n if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) {\n return;\n }\n lastMouseEvent = e;\n lastMouseEvent.scrollTop = popup.renderer.scrollTop;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (hoverMarker.start.row != row) {\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row);\n }\n });\n popup.renderer.on("beforeRender", function() {\n if (lastMouseEvent && hoverMarker.start.row != -1) {\n lastMouseEvent.$pos = null;\n var row = lastMouseEvent.getDocumentPosition().row;\n if (!hoverMarker.id)\n popup.setRow(row);\n setHoverMarker(row, true);\n }\n });\n popup.renderer.on("afterRender", function() {\n var row = popup.getRow();\n var t = popup.renderer.$textLayer;\n var selected = t.element.childNodes[row - t.config.firstRow];\n if (selected == t.selectedNode)\n return;\n if (t.selectedNode)\n dom.removeCssClass(t.selectedNode, "ace_selected");\n t.selectedNode = selected;\n if (selected)\n dom.addCssClass(selected, "ace_selected");\n });\n var hideHoverMarker = function() { setHoverMarker(-1) };\n var setHoverMarker = function(row, suppressRedraw) {\n if (row !== hoverMarker.start.row) {\n hoverMarker.start.row = hoverMarker.end.row = row;\n if (!suppressRedraw)\n popup.session._emit("changeBackMarker");\n popup._emit("changeHoverMarker");\n }\n };\n popup.getHoveredRow = function() {\n return hoverMarker.start.row;\n };\n\n event.addListener(popup.container, "mouseout", hideHoverMarker);\n popup.on("hide", hideHoverMarker);\n popup.on("changeSelection", hideHoverMarker);\n\n popup.session.doc.getLength = function() {\n return popup.data.length;\n };\n popup.session.doc.getLine = function(i) {\n var data = popup.data[i];\n if (typeof data == "string")\n return data;\n return (data && data.value) || "";\n };\n\n var bgTokenizer = popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function(row) {\n var data = popup.data[row];\n var tokens = [];\n if (!data)\n return tokens;\n if (typeof data == "string")\n data = {value: data};\n if (!data.caption)\n data.caption = data.value || data.name;\n\n var last = -1;\n var flag, c;\n for (var i = 0; i < data.caption.length; i++) {\n c = data.caption[i];\n flag = data.matchMask & (1 << i) ? 1 : 0;\n if (last !== flag) {\n tokens.push({type: data.className || "" + ( flag ? "completion-highlight" : ""), value: c});\n last = flag;\n } else {\n tokens[tokens.length - 1].value += c;\n }\n }\n\n if (data.meta) {\n var maxW = popup.renderer.$size.scrollerWidth / popup.renderer.layerConfig.characterWidth;\n var metaData = data.meta;\n if (metaData.length + data.caption.length > maxW - 2) {\n metaData = metaData.substr(0, maxW - data.caption.length - 3) + "\\u2026"\n }\n tokens.push({type: "rightAlignedText", value: metaData});\n }\n return tokens;\n };\n bgTokenizer.$updateOnChange = noop;\n bgTokenizer.start = noop;\n\n popup.session.$computeWidth = function() {\n return this.screenWidth = 0;\n };\n\n popup.$blockScrolling = Infinity;\n popup.isOpen = false;\n popup.isTopdown = false;\n\n popup.data = [];\n popup.setData = function(list) {\n popup.setValue(lang.stringRepeat("\\n", list.length), -1);\n popup.data = list || [];\n popup.setRow(0);\n };\n popup.getData = function(row) {\n return popup.data[row];\n };\n\n popup.getRow = function() {\n return selectionMarker.start.row;\n };\n popup.setRow = function(line) {\n line = Math.max(-1, Math.min(this.data.length, line));\n if (selectionMarker.start.row != line) {\n popup.selection.clearSelection();\n selectionMarker.start.row = selectionMarker.end.row = line || 0;\n popup.session._emit("changeBackMarker");\n popup.moveCursorTo(line || 0, 0);\n if (popup.isOpen)\n popup._signal("select");\n }\n };\n\n popup.on("changeSelection", function() {\n if (popup.isOpen)\n popup.setRow(popup.selection.lead.row);\n popup.renderer.scrollCursorIntoView();\n });\n\n popup.hide = function() {\n this.container.style.display = "none";\n this._signal("hide");\n popup.isOpen = false;\n };\n popup.show = function(pos, lineHeight, topdownOnly) {\n var el = this.container;\n var screenHeight = window.innerHeight;\n var screenWidth = window.innerWidth;\n var renderer = this.renderer;\n var maxH = renderer.$maxLines * lineHeight * 1.4;\n var top = pos.top + this.$borderSize;\n if (top + maxH > screenHeight - lineHeight && !topdownOnly) {\n el.style.top = "";\n el.style.bottom = screenHeight - top + "px";\n popup.isTopdown = false;\n } else {\n top += lineHeight;\n el.style.top = top + "px";\n el.style.bottom = "";\n popup.isTopdown = true;\n }\n\n el.style.display = "";\n this.renderer.$textLayer.checkForSizeChanges();\n\n var left = pos.left;\n if (left + el.offsetWidth > screenWidth)\n left = screenWidth - el.offsetWidth;\n\n el.style.left = left + "px";\n\n this._signal("show");\n lastMouseEvent = null;\n popup.isOpen = true;\n };\n\n popup.getTextLeftOffset = function() {\n return this.$borderSize + this.renderer.$padding + this.$imageSize;\n };\n\n popup.$imageSize = 0;\n popup.$borderSize = 1;\n\n return popup;\n};\n\ndom.importCssString("\\\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\\\n background-color: #CAD6FA;\\\n z-index: 1;\\\n}\\\n.ace_editor.ace_autocomplete .ace_line-hover {\\\n border: 1px solid #abbffe;\\\n margin-top: -1px;\\\n background: rgba(233,233,253,0.4);\\\n}\\\n.ace_editor.ace_autocomplete .ace_line-hover {\\\n position: absolute;\\\n z-index: 2;\\\n}\\\n.ace_editor.ace_autocomplete .ace_scroller {\\\n background: none;\\\n border: none;\\\n box-shadow: none;\\\n}\\\n.ace_rightAlignedText {\\\n color: gray;\\\n display: inline-block;\\\n position: absolute;\\\n right: 4px;\\\n text-align: right;\\\n z-index: -1;\\\n}\\\n.ace_editor.ace_autocomplete .ace_completion-highlight{\\\n color: #000;\\\n text-shadow: 0 0 0.01em;\\\n}\\\n.ace_editor.ace_autocomplete {\\\n width: 280px;\\\n z-index: 200000;\\\n background: #fbfbfb;\\\n color: #444;\\\n border: 1px lightgray solid;\\\n position: fixed;\\\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\\\n line-height: 1.4;\\\n}");\n\nexports.AcePopup = AcePopup;\n\n});\n\nace.define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module) {\n"use strict";\n\nexports.parForEach = function(array, fn, callback) {\n var completed = 0;\n var arLength = array.length;\n if (arLength === 0)\n callback();\n for (var i = 0; i < arLength; i++) {\n fn(array[i], function(result, err) {\n completed++;\n if (completed === arLength)\n callback(result, err);\n });\n }\n};\n\nvar ID_REGEX = /[a-zA-Z_0-9\\$\\-\\u00A2-\\uFFFF]/;\n\nexports.retrievePrecedingIdentifier = function(text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos-1; i >= 0; i--) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf.reverse().join("");\n};\n\nexports.retrieveFollowingIdentifier = function(text, pos, regex) {\n regex = regex || ID_REGEX;\n var buf = [];\n for (var i = pos; i < text.length; i++) {\n if (regex.test(text[i]))\n buf.push(text[i]);\n else\n break;\n }\n return buf;\n};\n\n});\n\nace.define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"], function(require, exports, module) {\n"use strict";\n\nvar HashHandler = require("./keyboard/hash_handler").HashHandler;\nvar AcePopup = require("./autocomplete/popup").AcePopup;\nvar util = require("./autocomplete/util");\nvar event = require("./lib/event");\nvar lang = require("./lib/lang");\nvar dom = require("./lib/dom");\nvar snippetManager = require("./snippets").snippetManager;\n\nvar Autocomplete = function() {\n this.autoInsert = false;\n this.autoSelect = true;\n this.exactMatch = false;\n this.gatherCompletionsId = 0;\n this.keyboardHandler = new HashHandler();\n this.keyboardHandler.bindKeys(this.commands);\n\n this.blurListener = this.blurListener.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.mousedownListener = this.mousedownListener.bind(this);\n this.mousewheelListener = this.mousewheelListener.bind(this);\n\n this.changeTimer = lang.delayedCall(function() {\n this.updateCompletions(true);\n }.bind(this));\n\n this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50);\n};\n\n(function() {\n\n this.$init = function() {\n this.popup = new AcePopup(document.body || document.documentElement);\n this.popup.on("click", function(e) {\n this.insertMatch();\n e.stop();\n }.bind(this));\n this.popup.focus = this.editor.focus.bind(this.editor);\n this.popup.on("show", this.tooltipTimer.bind(null, null));\n this.popup.on("select", this.tooltipTimer.bind(null, null));\n this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null));\n return this.popup;\n };\n\n this.getPopup = function() {\n return this.popup || this.$init();\n };\n\n this.openPopup = function(editor, prefix, keepPopupPosition) {\n if (!this.popup)\n this.$init();\n\n this.popup.setData(this.completions.filtered);\n\n editor.keyBinding.addKeyboardHandler(this.keyboardHandler);\n \n var renderer = editor.renderer;\n this.popup.setRow(this.autoSelect ? 0 : -1);\n if (!keepPopupPosition) {\n this.popup.setTheme(editor.getTheme());\n this.popup.setFontSize(editor.getFontSize());\n\n var lineHeight = renderer.layerConfig.lineHeight;\n\n var pos = renderer.$cursorLayer.getPixelPosition(this.base, true);\n pos.left -= this.popup.getTextLeftOffset();\n\n var rect = editor.container.getBoundingClientRect();\n pos.top += rect.top - renderer.layerConfig.offset;\n pos.left += rect.left - editor.renderer.scrollLeft;\n pos.left += renderer.gutterWidth;\n\n this.popup.show(pos, lineHeight);\n } else if (keepPopupPosition && !prefix) {\n this.detach();\n }\n };\n\n this.detach = function() {\n this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler);\n this.editor.off("changeSelection", this.changeListener);\n this.editor.off("blur", this.blurListener);\n this.editor.off("mousedown", this.mousedownListener);\n this.editor.off("mousewheel", this.mousewheelListener);\n this.changeTimer.cancel();\n this.hideDocTooltip();\n\n this.gatherCompletionsId += 1;\n if (this.popup && this.popup.isOpen)\n this.popup.hide();\n\n if (this.base)\n this.base.detach();\n this.activated = false;\n this.completions = this.base = null;\n };\n\n this.changeListener = function(e) {\n var cursor = this.editor.selection.lead;\n if (cursor.row != this.base.row || cursor.column < this.base.column) {\n this.detach();\n }\n if (this.activated)\n this.changeTimer.schedule();\n else\n this.detach();\n };\n\n this.blurListener = function(e) {\n var el = document.activeElement;\n var text = this.editor.textInput.getElement();\n var fromTooltip = e.relatedTarget && e.relatedTarget == this.tooltipNode;\n var container = this.popup && this.popup.container;\n if (el != text && el.parentNode != container && !fromTooltip\n && el != this.tooltipNode && e.relatedTarget != text\n ) {\n this.detach();\n }\n };\n\n this.mousedownListener = function(e) {\n this.detach();\n };\n\n this.mousewheelListener = function(e) {\n this.detach();\n };\n\n this.goTo = function(where) {\n var row = this.popup.getRow();\n var max = this.popup.session.getLength() - 1;\n\n switch(where) {\n case "up": row = row <= 0 ? max : row - 1; break;\n case "down": row = row >= max ? -1 : row + 1; break;\n case "start": row = 0; break;\n case "end": row = max; break;\n }\n\n this.popup.setRow(row);\n };\n\n this.insertMatch = function(data, options) {\n if (!data)\n data = this.popup.getData(this.popup.getRow());\n if (!data)\n return false;\n\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(this.editor, data);\n } else {\n if (this.completions.filterText) {\n var ranges = this.editor.selection.getAllRanges();\n for (var i = 0, range; range = ranges[i]; i++) {\n range.start.column -= this.completions.filterText.length;\n this.editor.session.remove(range);\n }\n }\n if (data.snippet)\n snippetManager.insertSnippet(this.editor, data.snippet);\n else\n this.editor.execCommand("insertstring", data.value || data);\n }\n this.detach();\n };\n\n\n this.commands = {\n "Up": function(editor) { editor.completer.goTo("up"); },\n "Down": function(editor) { editor.completer.goTo("down"); },\n "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); },\n "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); },\n\n "Esc": function(editor) { editor.completer.detach(); },\n "Return": function(editor) { return editor.completer.insertMatch(); },\n "Shift-Return": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); },\n "Tab": function(editor) {\n var result = editor.completer.insertMatch();\n if (!result && !editor.tabstopManager)\n editor.completer.goTo("down");\n else\n return result;\n },\n\n "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); },\n "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); }\n };\n\n this.gatherCompletions = function(editor, callback) {\n var session = editor.getSession();\n var pos = editor.getCursorPosition();\n\n var line = session.getLine(pos.row);\n var prefix = util.retrievePrecedingIdentifier(line, pos.column);\n\n this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length);\n this.base.$insertRight = true;\n\n var matches = [];\n var total = editor.completers.length;\n editor.completers.forEach(function(completer, i) {\n completer.getCompletions(editor, session, pos, prefix, function(err, results) {\n if (!err)\n matches = matches.concat(results);\n var pos = editor.getCursorPosition();\n var line = session.getLine(pos.row);\n callback(null, {\n prefix: util.retrievePrecedingIdentifier(line, pos.column, results[0] && results[0].identifierRegex),\n matches: matches,\n finished: (--total === 0)\n });\n });\n });\n return true;\n };\n\n this.showPopup = function(editor) {\n if (this.editor)\n this.detach();\n\n this.activated = true;\n\n this.editor = editor;\n if (editor.completer != this) {\n if (editor.completer)\n editor.completer.detach();\n editor.completer = this;\n }\n\n editor.on("changeSelection", this.changeListener);\n editor.on("blur", this.blurListener);\n editor.on("mousedown", this.mousedownListener);\n editor.on("mousewheel", this.mousewheelListener);\n\n this.updateCompletions();\n };\n\n this.updateCompletions = function(keepPopupPosition) {\n if (keepPopupPosition && this.base && this.completions) {\n var pos = this.editor.getCursorPosition();\n var prefix = this.editor.session.getTextRange({start: this.base, end: pos});\n if (prefix == this.completions.filterText)\n return;\n this.completions.setFilter(prefix);\n if (!this.completions.filtered.length)\n return this.detach();\n if (this.completions.filtered.length == 1\n && this.completions.filtered[0].value == prefix\n && !this.completions.filtered[0].snippet)\n return this.detach();\n this.openPopup(this.editor, prefix, keepPopupPosition);\n return;\n }\n var _id = this.gatherCompletionsId;\n this.gatherCompletions(this.editor, function(err, results) {\n var detachIfFinished = function() {\n if (!results.finished) return;\n return this.detach();\n }.bind(this);\n\n var prefix = results.prefix;\n var matches = results && results.matches;\n\n if (!matches || !matches.length)\n return detachIfFinished();\n if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId)\n return;\n\n this.completions = new FilteredList(matches);\n\n if (this.exactMatch)\n this.completions.exactMatch = true;\n\n this.completions.setFilter(prefix);\n var filtered = this.completions.filtered;\n if (!filtered.length)\n return detachIfFinished();\n if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet)\n return detachIfFinished();\n if (this.autoInsert && filtered.length == 1 && results.finished)\n return this.insertMatch(filtered[0]);\n\n this.openPopup(this.editor, prefix, keepPopupPosition);\n }.bind(this));\n };\n\n this.cancelContextMenu = function() {\n this.editor.$mouseHandler.cancelContextMenu();\n };\n\n this.updateDocTooltip = function() {\n var popup = this.popup;\n var all = popup.data;\n var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]);\n var doc = null;\n if (!selected || !this.editor || !this.popup.isOpen)\n return this.hideDocTooltip();\n this.editor.completers.some(function(completer) {\n if (completer.getDocTooltip)\n doc = completer.getDocTooltip(selected);\n return doc;\n });\n if (!doc)\n doc = selected;\n\n if (typeof doc == "string")\n doc = {docText: doc};\n if (!doc || !(doc.docHTML || doc.docText))\n return this.hideDocTooltip();\n this.showDocTooltip(doc);\n };\n\n this.showDocTooltip = function(item) {\n if (!this.tooltipNode) {\n this.tooltipNode = dom.createElement("div");\n this.tooltipNode.className = "ace_tooltip ace_doc-tooltip";\n this.tooltipNode.style.margin = 0;\n this.tooltipNode.style.pointerEvents = "auto";\n this.tooltipNode.tabIndex = -1;\n this.tooltipNode.onblur = this.blurListener.bind(this);\n }\n\n var tooltipNode = this.tooltipNode;\n if (item.docHTML) {\n tooltipNode.innerHTML = item.docHTML;\n } else if (item.docText) {\n tooltipNode.textContent = item.docText;\n }\n\n if (!tooltipNode.parentNode)\n document.body.appendChild(tooltipNode);\n var popup = this.popup;\n var rect = popup.container.getBoundingClientRect();\n tooltipNode.style.top = popup.container.style.top;\n tooltipNode.style.bottom = popup.container.style.bottom;\n\n if (window.innerWidth - rect.right < 320) {\n tooltipNode.style.right = window.innerWidth - rect.left + "px";\n tooltipNode.style.left = "";\n } else {\n tooltipNode.style.left = (rect.right + 1) + "px";\n tooltipNode.style.right = "";\n }\n tooltipNode.style.display = "block";\n };\n\n this.hideDocTooltip = function() {\n this.tooltipTimer.cancel();\n if (!this.tooltipNode) return;\n var el = this.tooltipNode;\n if (!this.editor.isFocused() && document.activeElement == el)\n this.editor.focus();\n this.tooltipNode = null;\n if (el.parentNode)\n el.parentNode.removeChild(el);\n };\n\n}).call(Autocomplete.prototype);\n\nAutocomplete.startCommand = {\n name: "startAutocomplete",\n exec: function(editor) {\n if (!editor.completer)\n editor.completer = new Autocomplete();\n editor.completer.autoInsert = false;\n editor.completer.autoSelect = true;\n editor.completer.showPopup(editor);\n editor.completer.cancelContextMenu();\n },\n bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space"\n};\n\nvar FilteredList = function(array, filterText) {\n this.all = array;\n this.filtered = array;\n this.filterText = filterText || "";\n this.exactMatch = false;\n};\n(function(){\n this.setFilter = function(str) {\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0)\n var matches = this.filtered;\n else\n var matches = this.all;\n\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function(a, b) {\n return b.exactMatch - a.exactMatch || b.score - a.score;\n });\n var prev = null;\n matches = matches.filter(function(item){\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev) return false;\n prev = caption;\n return true;\n });\n\n this.filtered = matches;\n };\n this.filterCompletions = function(items, needle) {\n var results = [];\n var upper = needle.toUpperCase();\n var lower = needle.toLowerCase();\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = item.value || item.caption || item.snippet;\n if (!caption) continue;\n var lastIndex = -1;\n var matchMask = 0;\n var penalty = 0;\n var index, distance;\n\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n }else{\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1);\n var i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n }\n matchMask = matchMask | (1 << index);\n lastIndex = index;\n }\n }\n item.matchMask = matchMask;\n item.exactMatch = penalty ? 0 : 1;\n item.score = (item.score || 0) - penalty;\n results.push(item);\n }\n return results;\n };\n}).call(FilteredList.prototype);\n\nexports.Autocomplete = Autocomplete;\nexports.FilteredList = FilteredList;\n\n});\n\nace.define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(require, exports, module) {\n var Range = require("../range").Range;\n \n var splitRegex = /[^a-zA-Z_0-9\\$\\-\\u00C0-\\u1FFF\\u2C00-\\uD7FF\\w]+/;\n\n function getWordIndex(doc, pos) {\n var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos));\n return textBefore.split(splitRegex).length - 1;\n }\n function wordDistance(doc, pos) {\n var prefixPos = getWordIndex(doc, pos);\n var words = doc.getValue().split(splitRegex);\n var wordScores = Object.create(null);\n \n var currentWord = words[prefixPos];\n\n words.forEach(function(word, idx) {\n if (!word || word === currentWord) return;\n\n var distance = Math.abs(prefixPos - idx);\n var score = words.length - distance;\n if (wordScores[word]) {\n wordScores[word] = Math.max(score, wordScores[word]);\n } else {\n wordScores[word] = score;\n }\n });\n return wordScores;\n }\n\n exports.getCompletions = function(editor, session, pos, prefix, callback) {\n var wordScore = wordDistance(session, pos, prefix);\n var wordList = Object.keys(wordScore);\n callback(null, wordList.map(function(word) {\n return {\n caption: word,\n value: word,\n score: wordScore[word],\n meta: "local"\n };\n }));\n };\n});\n\nace.define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module) {\n"use strict";\n\nvar snippetManager = require("../snippets").snippetManager;\nvar Autocomplete = require("../autocomplete").Autocomplete;\nvar config = require("../config");\nvar lang = require("../lib/lang");\nvar util = require("../autocomplete/util");\n\nvar textCompleter = require("../autocomplete/text_completer");\nvar keyWordCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n if (session.$mode.completer) {\n return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback);\n }\n var state = editor.session.getState(pos.row);\n var completions = session.$mode.getCompletions(state, session, pos, prefix);\n callback(null, completions);\n }\n};\n\nvar snippetCompleter = {\n getCompletions: function(editor, session, pos, prefix, callback) {\n var snippetMap = snippetManager.snippetMap;\n var completions = [];\n snippetManager.getActiveScopes(editor).forEach(function(scope) {\n var snippets = snippetMap[scope] || [];\n for (var i = snippets.length; i--;) {\n var s = snippets[i];\n var caption = s.name || s.tabTrigger;\n if (!caption)\n continue;\n completions.push({\n caption: caption,\n snippet: s.content,\n meta: s.tabTrigger && !s.name ? s.tabTrigger + "\\u21E5 " : "snippet",\n type: "snippet"\n });\n }\n }, this);\n callback(null, completions);\n },\n getDocTooltip: function(item) {\n if (item.type == "snippet" && !item.docHTML) {\n item.docHTML = [\n "", lang.escapeHTML(item.caption), "", "
",\n lang.escapeHTML(item.snippet)\n ].join("");\n }\n }\n};\n\nvar completers = [snippetCompleter, textCompleter, keyWordCompleter];\nexports.setCompleters = function(val) {\n completers = val || [];\n};\nexports.addCompleter = function(completer) {\n completers.push(completer);\n};\nexports.textCompleter = textCompleter;\nexports.keyWordCompleter = keyWordCompleter;\nexports.snippetCompleter = snippetCompleter;\n\nvar expandSnippet = {\n name: "expandSnippet",\n exec: function(editor) {\n return snippetManager.expandWithTab(editor);\n },\n bindKey: "Tab"\n};\n\nvar onChangeMode = function(e, editor) {\n loadSnippetsForMode(editor.session.$mode);\n};\n\nvar loadSnippetsForMode = function(mode) {\n var id = mode.$id;\n if (!snippetManager.files)\n snippetManager.files = {};\n loadSnippetFile(id);\n if (mode.modes)\n mode.modes.forEach(loadSnippetsForMode);\n};\n\nvar loadSnippetFile = function(id) {\n if (!id || snippetManager.files[id])\n return;\n var snippetFilePath = id.replace("mode", "snippets");\n snippetManager.files[id] = {};\n config.loadModule(snippetFilePath, function(m) {\n if (m) {\n snippetManager.files[id] = m;\n if (!m.snippets && m.snippetText)\n m.snippets = snippetManager.parseSnippetFile(m.snippetText);\n snippetManager.register(m.snippets || [], m.scope);\n if (m.includeScopes) {\n snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes;\n m.includeScopes.forEach(function(x) {\n loadSnippetFile("ace/mode/" + x);\n });\n }\n }\n });\n};\n\nfunction getCompletionPrefix(editor) {\n var pos = editor.getCursorPosition();\n var line = editor.session.getLine(pos.row);\n var prefix;\n editor.completers.forEach(function(completer) {\n if (completer.identifierRegexps) {\n completer.identifierRegexps.forEach(function(identifierRegex) {\n if (!prefix && identifierRegex)\n prefix = util.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n });\n }\n });\n return prefix || util.retrievePrecedingIdentifier(line, pos.column);\n}\n\nvar doLiveAutocomplete = function(e) {\n var editor = e.editor;\n var hasCompleter = editor.completer && editor.completer.activated;\n if (e.command.name === "backspace") {\n if (hasCompleter && !getCompletionPrefix(editor))\n editor.completer.detach();\n }\n else if (e.command.name === "insertstring") {\n var prefix = getCompletionPrefix(editor);\n if (prefix && !hasCompleter) {\n if (!editor.completer) {\n editor.completer = new Autocomplete();\n }\n editor.completer.autoInsert = false;\n editor.completer.showPopup(editor);\n }\n }\n};\n\nvar Editor = require("../editor").Editor;\nrequire("../config").defineOptions(Editor.prototype, "editor", {\n enableBasicAutocompletion: {\n set: function(val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val)? val: completers;\n this.commands.addCommand(Autocomplete.startCommand);\n } else {\n this.commands.removeCommand(Autocomplete.startCommand);\n }\n },\n value: false\n },\n enableLiveAutocompletion: {\n set: function(val) {\n if (val) {\n if (!this.completers)\n this.completers = Array.isArray(val)? val: completers;\n this.commands.on(\'afterExec\', doLiveAutocomplete);\n } else {\n this.commands.removeListener(\'afterExec\', doLiveAutocomplete);\n }\n },\n value: false\n },\n enableSnippets: {\n set: function(val) {\n if (val) {\n this.commands.addCommand(expandSnippet);\n this.on("changeMode", onChangeMode);\n onChangeMode(null, this);\n } else {\n this.commands.removeCommand(expandSnippet);\n this.off("changeMode", onChangeMode);\n }\n },\n value: false\n }\n});\n});\n (function() {\n ace.require(["ace/ext/language_tools"], function() {});\n })();\n '},1301:function(e,t,n){n(274)(n(1302))},1302:function(e,t){e.exports='ace.define("ace/spl_autocomplete", ["require","exports","module","ace/autocomplete","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"], \nfunction(require, exports, module) {\n "use strict";\n\n var Autocomplete = require("./autocomplete").Autocomplete,\n FilteredList = require("./autocomplete").FilteredList,\n oop = require("./lib/oop"),\n lang = require("./lib/lang"),\n event = require("./lib/event"),\n keys = require("./lib/keys"),\n snippetManager = require("./snippets").snippetManager;\n\n var SplAutocomplete = function() {\n Autocomplete.apply(this, arguments);\n\n this.autoSelect = false;\n this.changeTimer = lang.delayedCall(function(){\n this.updateCompletions(false);\n // SPL-121377: After completion list gets updated, set updating to false.\n this.updating = false; \n }.bind(this), 200);\n\n this.delayedDetach = lang.delayedCall(this.detach.bind(this), 200);\n event.addMouseWheelListener(document.body, this.delayedDetach);\n event.addListener(document.body, \'mousedown\', this.delayedDetach);\n };\n\n oop.inherits(SplAutocomplete, Autocomplete);\n\n (function(){\n var clonedCommands = {};\n oop.mixin(clonedCommands, Autocomplete.prototype.commands);\n\n this.commands = oop.mixin(clonedCommands, {\n "Tab": function(editor) {\n if (editor.completer.tooltipNode) {\n editor.completer.tooltipNode.focus();\n }\n },\n Esc : function(editor) {\n this.handleEscapeKeyPress(editor);\n }.bind(this)\n });\n \n /**\n * Function handles "Esc" keypress from the context of both autocomplete dialog \n * and the doc tooltip.\n * \n * @param Object - editor object (where the "Esc" keypress occurred)\n */\n this.handleEscapeKeyPress = function(editor) {\n editor.completer.detach();\n $(editor.textInput.getElement()).one(\'keyup\', function(e) {\n if (e.keyCode === 27) {\n event.stopEvent(e);\n }\n });\n },\n\n this.showPopup = function(editor) {\n // User can disable extra tooltip by set editor\'s extraTooltipForAutoCompletion as false.\n // Then this.handleExtraTooltip will be set as undefined eventually.\n this.handleExtraTooltip = editor.handleExtraTooltip;\n\n Autocomplete.prototype.showPopup.apply(this, arguments);\n },\n\n this.$init = function() {\n this.popup = Autocomplete.prototype.$init.apply(this, arguments);\n\n // Overrides the cursor style default set in the init.\n this.popup.renderer.content.style.cursor = "pointer";\n \n // hide textarea element from screen readers\n this.popup.renderer.textarea.setAttribute(\'aria-hidden\', \'true\');\n \n // Overrides show method to adjust popup position.\n var originalShow = this.popup.show.bind(this.popup);\n this.popup.show = function(pos, lineHeight, topdownOnly) {\n lineHeight = 36; // Search bar height\n topdownOnly = true;\n pos.left += 1;\n originalShow(pos, lineHeight, topdownOnly);\n };\n \n // Overrides background tokenizer\'s $tokenizeRow to \n // highlight syntax and matched texts.\n var bgTokenizer = this.popup.session.bgTokenizer;\n bgTokenizer.$tokenizeRow = function(row) {\n var data = this.popup.data[row],\n tokens = [],\n tokensWithMatched = [];\n\n if (!data) {\n return tokens;\n }\n\n data.caption = data.value;\n\n var editorBgTokenizer = this.editor.session.bgTokenizer,\n startState = "start";\n\n if (data.type === "next" || data.type === "command") {\n startState = "command";\n } else if (data.type === "commandArgs") {\n startState = data.command.name + "-command";\n }\n\n tokens = editorBgTokenizer.tokenizer.getLineTokens(data.caption, startState).tokens,\n tokensWithMatched = addMatchedTokens(data, tokens);\n tokens = trimCaptionAndTokens(this.popup, data, tokensWithMatched);\n\n if (data.meta) {\n tokens.push({type: "rightAlignedText", value: data.meta});\n }\n return tokens;\n }.bind(this);\n\n this.popup.on("hide", function(){\n this.handleExtraTooltip && this.handleExtraTooltip();\n }.bind(this));\n \n var mouseTarget = this.popup.renderer.getMouseEventTarget();\n event.addListener(mouseTarget, "mouseout", function() {\n this.handleExtraTooltip && this.handleExtraTooltip();\n }.bind(this));\n\n event.addMouseWheelListener(this.popup.container, function(e) {\n // SPL-122770: prevent default scrolling behaviour from browser\n event.stopEvent(e);\n });\n\n return this.popup;\n };\n\n this.insertMatch = function(data, options) {\n if (this.updating) {\n return;\n }\n\n data = data? data: this.popup.getData(this.popup.getRow());\n if (!data) {\n return false;\n }\n\n if (data.completer && data.completer.insertMatch) {\n data.completer.insertMatch(this.editor, data);\n } else {\n if (this.completions.filterText) {\n // TODO: This part can be improved\n var ranges = this.editor.selection.getAllRanges(),\n rangeLength = ranges.length,\n i = 0,\n range;\n for (i = 0; i < rangeLength; i++) {\n range = ranges[i];\n range.start.column -= this.completions.filterText.length;\n this.editor.session.remove(range);\n }\n }\n\n if (data.snippet) {\n snippetManager.insertSnippet(this.editor, data.snippet);\n } else if (data.value){\n this.editor.execCommand("insertstring", data.value);\n }\n }\n\n if (!data.completer ||\n (data.completer && !data.completer.keepPopupAfterInsert)) {\n this.detach();\n } else {\n // SPL-121377: If the selected item has keepPopupAfterInsert flag set to true,\n // popup will stay and get updated after the insertion. \n // Set an updating flag to true to avoid any insertMatch call before it gets updated. \n this.updating = true;\n }\n };\n\n this.updateDocTooltip = function() {\n var popup = this.popup,\n all = popup.data,\n row = popup.getHoveredRow() >= 0? popup.getHoveredRow() : popup.getRow(),\n selected = all && all[row],\n first = all && all[0],\n doc = null;\n\n if (this.handleExtraTooltip) {\n this.handleExtraTooltip(popup, row);\n }\n\n // updateDocTooltip is called in a delayed function (this.tooltipTimer). \n // There are cases, like the binded editor gets reset or popup is closed,\n // happens before this one gets called.\n if (!this.editor || !popup.isOpen) {\n return this.hideDocTooltip();\n }\n\n // Show tooltip if the first option belongs to \'command\' type or next command.\n if (!selected && first && (first.type.indexOf("command") !== -1 || \n first.type === "next" )) {\n this.editor.completers.some(function(completer) {\n if (completer.getDocTooltip) {\n doc = completer.getDocTooltip(first);\n }\n return doc;\n });\n\n doc = doc? doc: first;\n if (doc.docHTML) {\n return this.showDocTooltip(doc);\n } else {\n return this.hideDocTooltip();\n }\n }\n\n if (!selected || selected.hideDocTooltip) {\n this.hideDocTooltip();\n } else {\n Autocomplete.prototype.updateDocTooltip.apply(this, arguments);\n }\n };\n\n this.showDocTooltip = function(item) {\n var addListener = this.tooltipNode? false: true;\n \n Autocomplete.prototype.showDocTooltip.apply(this, arguments);\n\n // Change poistion\n var tooltipNode = this.tooltipNode,\n rect = this.popup.container.getBoundingClientRect();\n\n tooltipNode.style.width = rect.width + "px";\n tooltipNode.style.top = (rect.bottom - 1) + "px";\n tooltipNode.style.left = this.popup.container.style.left;\n tooltipNode.style.right = this.popup.container.style.right;\n\n if (addListener) {\n // SPL-134006: Stop "focusin" event bubbling up when tooltipNode receives focus from\n // editor. Bootstrap modal has an event handler to set focus back to modal.\n // For cross-browser compatibility, uses jquery to set the event handler.\n $(tooltipNode).focusin(function(e) {\n e.stopPropagation();\n });\n\n event.addListener(tooltipNode, \'focus\', function(e) {\n // focus to the first link element\n var linkElements = tooltipNode.getElementsByTagName(\'a\'); \n if (linkElements.length > 0) {\n linkElements[0].focus();\n } else {\n this.editor.focus();\n event.stopEvent(e);\n }\n }.bind(this));\n\n event.addListener(tooltipNode, \'keydown\', function(e) {\n switch (keys.keyCodeToString(e.keyCode)) {\n case "tab":\n this.editor.focus();\n event.stopEvent(e);\n break;\n case "up":\n case "down":\n case "right":\n case "left":\n event.stopEvent(e);\n break;\n case "esc":\n this.handleEscapeKeyPress(this.editor);\n this.editor.focus();\n event.stopEvent(e);\n break;\n default:\n break;\n }\n }.bind(this));\n\n event.addListener(tooltipNode, \'mousedown\', function(e) {\n event.stopEvent(e);\n });\n\n event.addMouseWheelListener(tooltipNode, function(e) {\n event.stopEvent(e);\n });\n }\n };\n\n this.blurListener = function(e) {\n // editor.textInput and tooltipNode both bind with this listener.\n // If focus is on the nodes inside tooltipNode. We dont\'t do anything.\n\n if (e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget)) {\n return;\n }\n\n // SPL-121466: firefox currently doesn\'t support relatedTarget. \n // e.relatedTarget will always be null.\n // Add a timer to check the focused element.\n setTimeout(function (e) {\n var relatedTarget = document.activeElement;\n if (!(relatedTarget && this.tooltipNode && this.tooltipNode.contains(relatedTarget))) {\n Autocomplete.prototype.blurListener.apply(this, arguments);\n }\n }.bind(this, e));\n };\n\n function addMatchedTokens (data, tokens) {\n var matchedIndexArray = !data.matchMask ? [] : data.matchMask.split(" ").map(function(matchedIndex) {\n return parseInt(matchedIndex, 10);\n });\n\n if (!matchedIndexArray.length) {\n return tokens;\n }\n\n var token,\n value,\n start = 0, // start index of token\n end = 0, // end index of token\n index = 0, // index of matched text\n i = 0,\n j = 0,\n last = 0, // index of previous matched text\n firstTime = true, // first time touch of token\n tokensWithMatched = [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n\n if (j === matchedIndexArray.length) {\n tokensWithMatched.push(token);\n continue;\n }\n\n end = (start + token.value.length - 1);\n last = null;\n firstTime = true;\n\n while (j < matchedIndexArray.length) {\n index = matchedIndexArray[j];\n\n if (index === start) {\n tokensWithMatched.push({value: token.value[0], type: token.type + \'.matched-highlight\'});\n firstTime = false;\n } \n else if (index > start && index <= end) {\n value = token.value[index - start];\n if (firstTime) {\n tokensWithMatched.push({value: token.value.substring(0, index - start), type: token.type});\n tokensWithMatched.push({value: value, type: token.type + \'.matched-highlight\'});\n firstTime = false;\n } else {\n // Last index and the current index are not connected in this token.\n if (index - last > 1) {\n tokensWithMatched.push({value: token.value.substring(last + 1 - start, index - start), type: token.type});\n tokensWithMatched.push({value: value, type: token.type + \'.matched-highlight\'});\n } else {\n tokensWithMatched[tokensWithMatched.length - 1].value += value;\n }\n }\n } \n // index is not in this token\n else if (index > end) {\n if (firstTime) {\n tokensWithMatched.push(token);\n } else if (last !== end) {\n // Need put the rest text of this token into the tokensWithMatched\n tokensWithMatched.push({value: token.value.substring(last - start + 1), type: token.type});\n }\n start += token.value.length;\n break;\n }\n\n // If this is the last matched index. Make sure the rest text of this token are put into the tokensWithMatched.\n if ( (j + 1) === matchedIndexArray.length && index != end) {\n tokensWithMatched.push({value: token.value.substring(index - start + 1), type: token.type});\n }\n\n j++;\n last = index;\n }\n }\n return tokensWithMatched;\n }\n\n function trimCaptionAndTokens (popup, data, tokens) {\n // The approximate length of texts can be filled into each line\n var maxW = Math.floor((popup.renderer.$size.scrollerWidth / popup.renderer.layerConfig.characterWidth) + 6);\n if (data.meta) {\n maxW = maxW - data.meta.length;\n }\n\n if (data.caption.length <= maxW) {\n return tokens;\n }\n\n var caption = data.caption,\n midpoint = 0,\n toremove = 0,\n lstrip = 0,\n rstrip = 0;\n \n midpoint = Math.ceil(caption.length / 2);\n toremove = caption.length - maxW;\n lstrip = Math.ceil(toremove/2);\n rstrip = toremove - lstrip;\n lstrip = midpoint - lstrip - 1;\n rstrip = midpoint + rstrip;\n\n data.caption = caption.substring(0, lstrip + 1) + "\\u2026" + caption.substring(rstrip);\n\n var token,\n start = 0, // start index of token\n end = 0, // end index of token\n trimmedTokens = [];\n \n for (var i = 0; i < tokens.length; i++) {\n token = tokens[i];\n end = start + token.value.length - 1;\n\n // token in the left side of lstrip point, or in the right side of rstrip point\n if (lstrip > end || start > rstrip) {\n trimmedTokens.push(token);\n start += token.value.length;\n continue;\n }\n\n // check if lstrip point is within the token and also rstrip point\n if (start > lstrip && end < rstrip) {\n start += token.value.length;\n continue;\n }\n // Both lstrip and rstrip are in the same token\n if (lstrip >= start && rstrip <= end) {\n trimmedTokens.push({value: token.value.substring(0, lstrip - start + 1), type: token.type});\n trimmedTokens.push({value: "\\u2026", type:""});\n trimmedTokens.push({value: token.value.substring(rstrip - start), type: token.type});\n } \n // Only lstrip in the token\n else if (lstrip >= start && lstrip <= end) {\n trimmedTokens.push({value: token.value.substring(0, lstrip - start + 1), type: token.type});\n trimmedTokens.push({value: "\\u2026", type:""});\n } \n // Only rstrip in the token\n else if (rstrip >= start && rstrip <= end) {\n trimmedTokens.push({value: token.value.substring(rstrip - start), type: token.type});\n }\n\n start += token.value.length;\n }\n return trimmedTokens;\n }\n\n\n }).call(SplAutocomplete.prototype);\n\n SplAutocomplete.startCommand = {\n name: "startSplAutocomplete",\n exec: function(editor) {\n if (!editor.completer) {\n editor.completer = new SplAutocomplete();\n }\n editor.completer.autoInsert = false;\n editor.completer.autoSelect = false;\n editor.completer.showPopup(editor);\n editor.completer.cancelContextMenu();\n },\n bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space"\n };\n\n \n (function() {\n var priorites = {\n "commandArgs": 1,\n "command" : 2,\n "next": 3,\n "term": 4,\n "search": 5\n };\n // Overrides setFilter method to compare priorities\n // and values for sorting.\n this.setFilter = function(str) {\n var matches = this.all;\n if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) {\n matches = this.filtered;\n }\n\n this.filterText = str;\n matches = this.filterCompletions(matches, this.filterText);\n matches = matches.sort(function(a, b) {\n var result = b.exactMatch - a.exactMatch || b.score - a.score ;\n if (result === 0 && a.type && b.type) {\n result = priorites[a.type] - priorites[b.type];\n }\n if (result === 0) {\n result = (a.value === b.value) ? 0 : ((a.value < b.value) ? -1 : 1); \n }\n return result;\n });\n\n var prev = null;\n matches = matches.filter(function(item){\n var caption = item.snippet || item.caption || item.value;\n if (caption === prev) return false;\n prev = caption;\n return true;\n });\n\n this.filtered = matches;\n };\n\n // Overrides filterCompletions to use an another way \n // to store the indexes of matched elements.\n this.filterCompletions = function(items, needle) {\n var results = [],\n upper = needle.toUpperCase(),\n lower = needle.toLowerCase();\n\n loop: for (var i = 0, item; item = items[i]; i++) {\n var caption = item.value || item.caption || item.snippet;\n if (!caption) continue;\n var lastIndex = -1,\n matchMask = "",\n matched = [],\n penalty = 0,\n index, distance;\n\n if (this.exactMatch) {\n if (needle !== caption.substr(0, needle.length))\n continue loop;\n }else{\n for (var j = 0; j < needle.length; j++) {\n var i1 = caption.indexOf(lower[j], lastIndex + 1),\n i2 = caption.indexOf(upper[j], lastIndex + 1);\n index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2;\n if (index < 0)\n continue loop;\n distance = index - lastIndex - 1;\n if (distance > 0) {\n if (lastIndex === -1)\n penalty += 10;\n penalty += distance;\n }\n matched.push(index);\n lastIndex = index;\n }\n }\n item.matchMask = matched.join(" ");\n item.exactMatch = penalty ? 0 : 1;\n // Use negative value to indicate the less of the penalty, \n // the higher of the score.\n item.score = (item.score || 0) - penalty; \n results.push(item);\n }\n return results;\n };\n \n }).call(FilteredList.prototype);\n\n exports.SplAutocomplete = SplAutocomplete;\n});\n\n\nace.define("ace/ext/spl_tools",["require","exports","module", "ace/ext/language_tools","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor"], \nfunction(require, exports, module) {\n "use strict";\n\n /*\n Private variables and functions\n */\n var langTools = require("./language_tools"),\n util = require("../autocomplete/util"),\n SplAutocomplete = require("../spl_autocomplete").SplAutocomplete,\n dom = require("../lib/dom");\n\n\n var splLiveAutoComplete = function(e) {\n var editor = e.editor,\n hasCompleter = editor.completer && editor.completer.activated;\n if (e.command.name === "insertstring" ||\n e.command.name === "backspace" ||\n e.command.name === "paste"\n ) {\n var prefix = getCompletionPrefix(editor);\n if (prefix && !hasCompleter) {\n if (!editor.completer) {\n editor.completer = new SplAutocomplete();\n }\n editor.completer.autoInsert = false;\n editor.completer.showPopup(editor);\n }\n }\n };\n\n var identifierRegexList = [/[a-zA-Z_0-9="\\s\\|\\$\\-\\u00A2-\\uFFFF]/];\n function getCompletionPrefix(editor) {\n var pos = editor.getCursorPosition(),\n line = editor.session.getLine(pos.row),\n prefix;\n\n identifierRegexList.forEach(function(identifierRegex) {\n if (!prefix && identifierRegex) {\n prefix = util.retrievePrecedingIdentifier(line, pos.column, identifierRegex);\n }\n });\n return prefix;\n }\n \n /*\n Extend/Override dependencies\n */\n var completers = [\n langTools.textCompleter, \n langTools.keyWordCompleter,\n langTools.snippetCompleter\n ],\n Editor = require("../editor").Editor;\n require("../config").defineOptions(Editor.prototype, "editor", {\n enableSplLiveAutocompletion: {\n set: function(val) {\n if (val) {\n if (!this.completers) {\n this.completers = Array.isArray(val)? val: completers;\n }\n this.commands.addCommand(SplAutocomplete.startCommand);\n this.commands.on(\'afterExec\', splLiveAutoComplete);\n } else {\n this.commands.removeCommand(SplAutocomplete.startCommand);\n this.commands.removeListener(\'afterExec\', splLiveAutoComplete);\n }\n },\n value: false\n },\n extraTooltipForAutoCompletion: {\n set: function(val) {\n if (val && typeof val === "function") {\n this.handleExtraTooltip = val;\n } else {\n this.handleExtraTooltip = undefined;\n }\n },\n value : false\n }\n });\n});\n\n\n(function() {\n ace.require(["ace/ext/spl_tools"], function() {});\n})();\n '},1303:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".ace_hidden-cursors .ace_cursor{opacity:0}.ace_editor.ace_autocomplete{border:1px solid #c3cbd4!important;border-radius:1px;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1)!important;box-shadow:0 2px 1px rgba(0,0,0,.1)!important;font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif!important;line-height:18px!important;width:415px!important;z-index:1059!important}.ace_editor.ace_autocomplete .ace_layer.ace_marker-layer .ace_active-line{border-collapse:separate;-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.ace_editor.ace_autocomplete .ace_layer.ace_marker-layer .ace_active-line:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.ace_editor.ace_autocomplete .ace_layer.ace_marker-layer .ace_active-line{-webkit-box-shadow:inset 0 0 2px 1px #fff,inset 0 0 0 2px #00a4fd;box-shadow:inset 0 0 2px 1px #fff,inset 0 0 0 2px #00a4fd}.ace_editor.ace_autocomplete .ace_layer.ace_marker-layer .ace_line-hover{background:#f7f8fa;border:none}.ace_editor.ace_autocomplete .ace_matched-highlight{font-weight:bolder}.ace_tooltip.ace_doc-tooltip{background:#f7f8fa;border:1px solid #c3cbd4;border-radius:1px;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1);color:#3c444d;line-height:20px;padding:6px;white-space:normal;z-index:1059!important}.ace_tooltip.ace_doc-tooltip .command-intro{margin-top:5px}.ace_tooltip.ace_doc-tooltip .command-example{margin-top:3px}.tooltip.right{margin-left:5px;word-wrap:break-word}.search-field-wrapper .ace_editor{border:1px solid;border-color:1px solid #c3cbd4!important;border-radius:3px;font-family:Splunk Platform Mono,Inconsolata,Consolas,Droid Sans Mono,Monaco,Courier New,Courier,monospace;font-size:14px;line-height:20px;margin-bottom:0;min-height:20px;padding:9px 6px}.search-field-wrapper .ace_editor.focused{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0;text-decoration:none;z-index:3}.search-field-wrapper .ace_editor.focused:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.search-field-wrapper .ace_editor{cursor:auto}.search-field-wrapper .ace_text-input:focus{z-index:0}.search-field-wrapper .ace_emptyMessage{color:#999;padding-left:6px}.search-field-wrapper .ace_scroller{margin-left:4px;margin-top:8px;padding-bottom:8px}.search-field-wrapper .ace_gutter{background:#ebeeef;padding-top:8px}.search-field-wrapper .ace_gutter .ace_gutter-active-line{margin-top:8px}.search-field-wrapper .ace_gutter .ace_gutter-cell{color:#6b7785;padding-left:6px;padding-right:6px}@media print{.shared-searchbarinput{padding:0!important}.ace_editor{border:0!important}}",""])},1304:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".shared-searchbarinput{padding:0;position:relative}.shared-searchbarinput span.placeholder{color:#6b7785;cursor:text;display:none;display:block;left:9px;line-height:20px;margin:0;padding:8px 0;position:absolute;top:0;z-index:1;z-index:3}.shared-searchbarinput textarea[disabled=disabled]{background-color:#e1e6eb}.shared-searchbarinput textarea.search-field{border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#3c444d;display:block;font-family:Splunk Platform Mono,Inconsolata,Consolas,Droid Sans Mono,Monaco,Courier New,Courier,monospace;line-height:20px;margin:0;max-width:100%;min-height:40px;overflow:hidden;padding-bottom:8px;padding-top:8px;position:relative;resize:none;width:100%}.shared-searchbarinput textarea.search-field:not(:focus){border:1px solid #c3cbd4}.shared-searchbarinput.search-assistant-open .search-field-wrapper textarea.search-field{border-bottom-color:#c3cbd4;border-bottom-left-radius:0;border-bottom-right-radius:0}@media print{.search-bar,.search-bar tbody,.search-bar td,.search-bar tr{display:block;width:100%}.search-field{display:none!important}.shadowTextarea{border-color:transparent!important;left:auto!important;position:static!important;top:auto!important;width:100%!important}}",""])},1305:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.search-assistant-wrapper{height:0;position:relative;width:100%}.search-assistant-wrapper.open{z-index:1059}.search-assistant-wrapper .icon-triangle-down-small:before{content:"\\2C5"}.search-assistant-wrapper .icon-triangle-up-small:before{content:"\\2C4"}.search-assistant-wrapper.search-assistant-enabled{-webkit-box-shadow:1px 2px 5px rgba(0,0,0,.2);box-shadow:1px 2px 5px rgba(0,0,0,.2)}.search-assistant-container{background-color:#f2f4f5;border:1px solid #c3cbd4;border-bottom:0;border-top:0;display:none;overflow:auto;position:relative}.search-assistant-container:after,.search-assistant-container:before{content:"";display:table;line-height:0}.search-assistant-container:after{clear:both}.search-assistant-help-wrapper h5,.search-assistant-typeahead-wrapper h5{margin-top:10px}.search-assistant-typeahead-wrapper{background-color:#f2f4f5;margin-right:-370px;width:370px}.search-assistant-typeahead-wrapper h5{margin:10px 0;padding:5px 10px 0}.search-assistant-typeahead-wrapper a+h5{margin-top:10px}.search-assistant-typeahead-wrapper a{overflow:hidden;padding:0 10px;text-overflow:ellipsis;white-space:nowrap}.search-assistant-typeahead-wrapper a:hover{text-decoration:none}.search-assistant-typeahead-wrapper>.shared-searchbarinput-searchassistant-typeahead-matching{background-color:#f2f4f5}.typeahead-keyword{cursor:pointer;display:block}.typeahead-keyword:focus{background-color:rgba(0,164,253,.1);-webkit-box-shadow:none;box-shadow:none;outline:none}.typeahead-keyword:hover{background:#f7f8fa}.search-assistant-help-wrapper{background-color:#f2f4f5;margin-left:370px;padding:5px 10px 5px 20px}.search-assistant-help-wrapper code{background:transparent;border:none;color:#5cc05c}.search-assistant-help-notices{margin-right:100px;padding:2px 0}.search-assistant-help-notices div:empty{padding:0}.intro-and-command-container{word-wrap:break-word;max-width:calc(100vw - 660px)}.intro-and-command-container>h5{color:#5cc05c}.intro-and-command-examples h5:first-child,.intro-and-command-header h5:first-child{margin-top:0}.intro-and-command-examples dd,.intro-and-command-header dd{margin-left:20px}.intro-and-command-examples dt,.intro-and-command-examples h5,.intro-and-command-header dt,.intro-and-command-header h5{margin-top:10px}.intro-and-command-examples dt,.intro-and-command-header dt{font-weight:400}.intro-and-command-examples a,.intro-and-command-header a{cursor:pointer}.intro-and-command-header h5,.syntax-header h5{display:inline}.intro-and-command-header a,.syntax-header a{margin-left:30px}.intro-and-command-examples{margin-top:0}.intro-and-command-steps{display:block;font-weight:700;margin-top:10px}.search-assistant-autoopen-wrapper{float:right;position:relative}.search-assistant-autoopen-toggle>.icon-check{display:inline-block;margin-right:5px;text-decoration:none}.search-assistant-resize-active{background-color:#f7f8fa;border:1px solid #c3cbd4;border-top:0;cursor:row-resize;height:6px;margin:0;position:relative}.search-assistant-resize-active:before{background-color:rgba(0,0,0,.2);border:none;border-radius:2px;content:"";display:block;height:4px;left:50%;position:absolute;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:4px}.search-assistant-activator{border-radius:3px;color:#5c6773;cursor:pointer;display:block;height:16px;padding:4px;position:absolute;right:8px;text-align:center;text-decoration:none;top:-32px;width:16px;z-index:4}.search-assistant-activator:hover{background:#f2f4f5;color:#006297;text-decoration:none}.search-assistant-activator:focus{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0}.search-assistant-activator:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.search-assistant-activator:focus{background:#f2f4f5;color:#006297;text-decoration:none}.search-assistant-activator:focus:before{display:block;position:relative}[data-theme=dark]>.search-assistant-activator{color:#c3cbd4}[data-theme=dark]>.search-assistant-activator:focus,[data-theme=dark]>.search-assistant-activator:hover{background:#3c444d;color:#00a4fd}.disabled .search-assistant-activator{background-color:#e1e6eb;cursor:not-allowed}&.multiline .search-assistant-resize,&.search-assistant-open .search-assistant-resize{border-width:1px}@media print{.search-assistant-wrapper{display:none!important}}',""])},1306:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,"@media print{.shared-searchbarinput{padding:0!important}}",""])},1307:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'.description---enterprise---dev---2oSvI{margin:0 0 20px}.content---enterprise---dev---EVrDo,.description---enterprise---dev---2oSvI{-webkit-animation:none 0s ease 0s 1 normal none running;animation:none 0s ease 0s 1 normal none running;-webkit-backface-visibility:visible;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;border-collapse:separate;-o-border-image:none;border-image:none;border-radius:0;border-spacing:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;caption-side:top;clear:none;clip:auto;border:1px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000;color:#3c444d;-webkit-columns:auto;-moz-columns:auto;-webkit-column-count:auto;-moz-column-count:auto;-webkit-column-fill:balance;-moz-column-fill:balance;column-fill:balance;-webkit-column-gap:normal;-moz-column-gap:normal;column-gap:normal;-webkit-column-rule:medium none currentColor;-moz-column-rule:medium none currentColor;column-rule:medium none currentColor;-webkit-column-span:1;-moz-column-span:1;column-span:1;-webkit-column-width:auto;-moz-column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:inline;display:block;empty-cells:show;float:none;font-family:serif;font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:medium;font-size:14px;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;-ms-hyphens:none;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;line-height:20px;list-style:disc none outside;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none #00a4fd;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;-webkit-perspective:none;perspective:none;-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%;position:static;right:auto;-moz-tab-size:8;-o-tab-size:8;tab-size:8;table-layout:auto;text-align:left;-moz-text-align-last:auto;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;-webkit-transform:none;transform:none;-webkit-transform-origin:50% 50% 0;transform-origin:50% 50% 0;-webkit-transform-style:flat;transform-style:flat;-webkit-transition:none 0s ease 0s;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:baseline;visibility:visible;visibility:inherit;white-space:normal;widows:2;width:auto;word-spacing:normal;z-index:auto}.content---enterprise---dev---EVrDo{margin:0}.content---enterprise---dev---EVrDo:after,.content---enterprise---dev---EVrDo:before{content:"";display:table;line-height:0}.content---enterprise---dev---EVrDo:after{clear:both}.title---enterprise---dev---2p9K3{-webkit-animation:none 0s ease 0s 1 normal none running;animation:none 0s ease 0s 1 normal none running;-webkit-backface-visibility:visible;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;border-collapse:separate;-o-border-image:none;border-image:none;border-radius:0;border-spacing:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;caption-side:top;clear:none;clip:auto;border:1px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000;color:#3c444d;-webkit-columns:auto;-moz-columns:auto;-webkit-column-count:auto;-moz-column-count:auto;-webkit-column-fill:balance;-moz-column-fill:balance;column-fill:balance;-webkit-column-gap:normal;-moz-column-gap:normal;column-gap:normal;-webkit-column-rule:medium none currentColor;-moz-column-rule:medium none currentColor;column-rule:medium none currentColor;-webkit-column-span:1;-moz-column-span:1;column-span:1;-webkit-column-width:auto;-moz-column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:inline;display:block;empty-cells:show;float:none;float:left;font-family:serif;font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:medium;font-size:14px;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;-ms-hyphens:none;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;line-height:20px;list-style:disc none outside;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none #00a4fd;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:6px 0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;-webkit-perspective:none;perspective:none;-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%;position:static;right:auto;-moz-tab-size:8;-o-tab-size:8;tab-size:8;table-layout:auto;text-align:left;text-align:right;-moz-text-align-last:auto;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;-webkit-transform:none;transform:none;-webkit-transform-origin:50% 50% 0;transform-origin:50% 50% 0;-webkit-transform-style:flat;transform-style:flat;-webkit-transition:none 0s ease 0s;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:baseline;visibility:visible;visibility:inherit;white-space:normal;widows:2;width:auto;width:124px;word-spacing:normal;z-index:auto}.theme---enterprise---dev---3QKSh{margin-bottom:15px}.theme---enterprise---dev---3QKSh>div{margin-left:144px}',""]),t.locals={description:"description---enterprise---dev---2oSvI",content:"content---enterprise---dev---EVrDo",title:"title---enterprise---dev---2p9K3",theme:"theme---enterprise---dev---3QKSh"}},1308:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".tab---enterprise---dev---WeSWu{display:inline-block;margin-right:15px;text-align:center}.label---enterprise---dev----gEtN{-webkit-animation:none 0s ease 0s 1 normal none running;animation:none 0s ease 0s 1 normal none running;-webkit-backface-visibility:visible;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;border-collapse:separate;-o-border-image:none;border-image:none;border-radius:0;border-spacing:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;caption-side:top;clear:none;clip:auto;border:1px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000;color:#3c444d;-webkit-columns:auto;-moz-columns:auto;-webkit-column-count:auto;-moz-column-count:auto;-webkit-column-fill:balance;-moz-column-fill:balance;column-fill:balance;-webkit-column-gap:normal;-moz-column-gap:normal;column-gap:normal;-webkit-column-rule:medium none currentColor;-moz-column-rule:medium none currentColor;column-rule:medium none currentColor;-webkit-column-span:1;-moz-column-span:1;column-span:1;-webkit-column-width:auto;-moz-column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:inline;empty-cells:show;float:none;font-family:serif;font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:medium;font-size:14px;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;-ms-hyphens:none;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;line-height:20px;list-style:disc none outside;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;opacity:1;orphans:2;outline:medium none #00a4fd;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;-webkit-perspective:none;perspective:none;-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%;position:static;right:auto;-moz-tab-size:8;-o-tab-size:8;tab-size:8;table-layout:auto;text-align:left;-moz-text-align-last:auto;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;-webkit-transform:none;transform:none;-webkit-transform-origin:50% 50% 0;transform-origin:50% 50% 0;-webkit-transform-style:flat;transform-style:flat;-webkit-transition:none 0s ease 0s;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:baseline;visibility:visible;visibility:inherit;white-space:normal;widows:2;width:auto;word-spacing:normal;z-index:auto}",""]),t.locals={buttonActive:"#f7f8fa",tab:"tab---enterprise---dev---WeSWu",label:"label---enterprise---dev----gEtN"}},1309:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".navBar---enterprise---dev---1JDfN{border-bottom:1px solid #c3cbd4;margin:-8px -20px 15px;padding:0 20px 10px}",""]),t.locals={navBar:"navBar---enterprise---dev---1JDfN"}},131:function(e,t,n){"use strict";(function(e){n.d(t,"a",(function(){return Ee})),n.d(t,"f",(function(){return Zt})),n.d(t,"e",(function(){return Jt})),n.d(t,"c",(function(){return tn})),n.d(t,"d",(function(){return on})),n.d(t,"b",(function(){return sn}));var r,i,o=n(205),a=n(474),s=n(125),l=n(146),c=n(215),u=n(76),d=n(14),p=n(15),h=n(0),f=n(64),m=n(374),b=n.n(m),g=n(172),v=n.n(g),y=n(203),A=n.n(y),M=n(282),_=n.n(M),w=n(158),O=n.n(w),x=n(375),z=n.n(x),C=n(376),S=n.n(C),T=n(377),k=n.n(T),L=n(378),E=n.n(L),P=n(379),R=n.n(P),D=n(283),N=n.n(D),j=n(380),B=n.n(j),q=n(381),I=n.n(q),F=n(382),W=n.n(F),H=n(383),V=n.n(H),U=n(284),Y=n.n(U),$=n(285),X=n.n($),G=n(384),Q=n.n(G),K=n(385),Z=n.n(K),J=n(386),ee=n.n(J),te=n(387),ne=n.n(te),re=n(144),ie=n.n(re),oe={};Object(h.a)(oe,{default:()=>le}),Object(h.c)(oe,m);var ae,se,le=null!=(i=null==(r=b.a)?void 0:r.default)?i:b.a,ce={};Object(h.a)(ce,{default:()=>pe}),Object(h.c)(ce,g);var ue,de,pe=null!=(se=null==(ae=v.a)?void 0:ae.default)?se:v.a,he={};Object(h.a)(he,{default:()=>be}),Object(h.c)(he,y);var fe,me,be=null!=(de=null==(ue=A.a)?void 0:ue.default)?de:A.a,ge={};Object(h.a)(ge,{default:()=>Ae}),Object(h.c)(ge,M);var ve,ye,Ae=null!=(me=null==(fe=_.a)?void 0:fe.default)?me:_.a,Me={};Object(h.a)(Me,{default:()=>Oe}),Object(h.c)(Me,w);var _e,we,Oe=null!=(ye=null==(ve=O.a)?void 0:ve.default)?ye:O.a,xe=Object(p.a)(l.a)` label { text-align-last: left; text-align: left; } > div { justify-content: flex-start; } `,ze=p.a.div` padding: 6px 0; svg { font-size: 16px; margin-right: 4px; margin-top: -2px; } `,Ce=p.a.div` padding: 6px 16px; background-color: ${(0,u.b.pick)({enterprise:{light:"#f7f8fa",dark:u.b.variables.backgroundColorSection},prisma:u.b.variables.backgroundColorSection})}; border-width: 1px; border-style: solid; border-color: ${(0,u.b.pick)({enterprise:{light:"#e1e6eb",dark:u.b.variables.borderColor},prisma:u.b.variables.borderColor})}; box-sizing: border-box; border-radius: 4px; div:last-child { margin-bottom: 0; } `,Se=Object(p.a)(Ae)` span[data-test='heading'] { button { &[aria-expanded='false']:not(:hover) { background-color: transparent; } } } `,Te=Object(p.a)(Oe)` margin-left: 5px; `,ke=p.a.div` max-width: 260px; text-align: center; `,Le=Object(f.a)(e),Ee=h.f.memo(({inlineSearchOnly:e,panelPoweredBy:t,onPanelPoweredByChange:n,open:r})=>h.f.createElement(Se,Object(h.e)(Object(h.e)({title:(0,d.a._)("Advanced Panel Settings")},Le("advanced-panel-settings")),void 0!==r&&{open:r}),h.f.createElement(Ce,null,h.f.createElement(xe,{label:(0,d.a._)("Panel Powered By"),labelWidth:"135px"},e?h.f.createElement(ze,Object(h.e)({},Le("inline-only-panel")),h.f.createElement(pe,null),h.f.createElement("span",null,(0,d.a._)("Inline Search")),h.f.createElement(Te,{content:h.f.createElement(ke,null,(0,d.a._)("The inline search exists only in the dashboard and has no external dependencies."))})):h.f.createElement(be,{onChange:n,value:t},h.f.createElement(be.Option,Object(h.e)({value:"report",label:h.f.createElement(h.f.Fragment,null,(0,d.a._)("Report"),h.f.createElement(Te,{content:h.f.createElement(ke,null,(0,d.a._)("Uses the report. Retains all report metadata such as schedule, acceleration, and permissions."))})),icon:h.f.createElement(le,null),key:"report"},Le("report-search-type"))),h.f.createElement(be.Option,Object(h.e)({value:"inline",label:h.f.createElement(h.f.Fragment,null,(0,d.a._)("Inline Search"),h.f.createElement(Te,{content:h.f.createElement(ke,null,(0,d.a._)("Clones the report's search string and time range. The inline search exists only in the dashboard and has no external dependencies."))})),icon:h.f.createElement(pe,null),key:"inline"},Le("inline-search-type"))))),h.f.createElement(xe,{label:(0,d.a._)("Drilldown"),labelWidth:"135px"},h.f.createElement(ze,null,(0,d.a._)("No action"),h.f.createElement(Te,{content:h.f.createElement(ke,null,(0,d.a._)("Drilldown is disabled when you save a visualization to a dashboard. After saving, open the dashboard editor to access configuration options for the visualization."))})))))),Pe={};Object(h.a)(Pe,{default:()=>Ne}),Object(h.c)(Pe,x);var Re,De,Ne=null!=(we=null==(_e=z.a)?void 0:_e.default)?we:z.a,je={};Object(h.a)(je,{default:()=>Ie}),Object(h.c)(je,C);var Be,qe,Ie=null!=(De=null==(Re=S.a)?void 0:Re.default)?De:S.a,Fe={};Object(h.a)(Fe,{default:()=>Ve}),Object(h.c)(Fe,T);var We,He,Ve=null!=(qe=null==(Be=k.a)?void 0:Be.default)?qe:k.a,Ue={};Object(h.a)(Ue,{default:()=>Xe}),Object(h.c)(Ue,L);var Ye,$e,Xe=null!=(He=null==(We=E.a)?void 0:We.default)?He:E.a,Ge={};Object(h.a)(Ge,{default:()=>Ze}),Object(h.c)(Ge,P);var Qe,Ke,Ze=null!=($e=null==(Ye=R.a)?void 0:Ye.default)?$e:R.a,Je={};Object(h.a)(Je,{default:()=>nt}),Object(h.c)(Je,D);var et,tt,nt=null!=(Ke=null==(Qe=N.a)?void 0:Qe.default)?Ke:N.a,rt={};Object(h.a)(rt,{default:()=>at}),Object(h.c)(rt,j);var it,ot,at=null!=(tt=null==(et=B.a)?void 0:et.default)?tt:B.a,st={};Object(h.a)(st,{default:()=>ut}),Object(h.c)(st,q);var lt,ct,ut=null!=(ot=null==(it=I.a)?void 0:it.default)?ot:I.a,dt={};Object(h.a)(dt,{default:()=>ft}),Object(h.c)(dt,F);var pt,ht,ft=null!=(ct=null==(lt=W.a)?void 0:lt.default)?ct:W.a,mt={};Object(h.a)(mt,{default:()=>vt}),Object(h.c)(mt,H);var bt,gt,vt=null!=(ht=null==(pt=V.a)?void 0:pt.default)?ht:V.a,yt={};Object(h.a)(yt,{default:()=>_t}),Object(h.c)(yt,U);var At,Mt,_t=null!=(gt=null==(bt=Y.a)?void 0:bt.default)?gt:Y.a,wt={};Object(h.a)(wt,{default:()=>zt}),Object(h.c)(wt,$);var Ot,xt,zt=null!=(Mt=null==(At=X.a)?void 0:At.default)?Mt:X.a,Ct={};Object(h.a)(Ct,{default:()=>kt}),Object(h.c)(Ct,G);var St,Tt,kt=null!=(xt=null==(Ot=Q.a)?void 0:Ot.default)?xt:Q.a,Lt={};Object(h.a)(Lt,{default:()=>Rt}),Object(h.c)(Lt,K);var Et,Pt,Rt=null!=(Tt=null==(St=Z.a)?void 0:St.default)?Tt:Z.a,Dt={};Object(h.a)(Dt,{default:()=>Bt}),Object(h.c)(Dt,J);var Nt,jt,Bt=null!=(Pt=null==(Et=ee.a)?void 0:Et.default)?Pt:ee.a,qt={};Object(h.a)(qt,{default:()=>Wt}),Object(h.c)(qt,te);var It,Ft,Wt=null!=(jt=null==(Nt=ne.a)?void 0:Nt.default)?jt:ne.a,Ht=Object(p.a)(l.a)` label { text-align-last: left; text-alignm: left; } > div { justify-content: flex-start; } `,Vt=Object(p.a)(a.a.Divider)` margin: 28px -28px; `,Ut=p.a.div` padding: 6px 0; svg { font-size: 16px; margin-right: 4px; margin-top: -2px; } `,Yt=Object(p.a)(Oe)` margin-left: 5px; `,$t=p.a.div` max-width: 260px; text-align: center; `,Xt=Object(f.a)(e),Gt=Xt("panel-options"),Qt=Xt("panel-title"),Kt={line:h.f.createElement(Ze,null),statistics:h.f.createElement(Wt,null),singlevalue:h.f.createElement(Bt,null),scatter:h.f.createElement(at,null),radialGauge:h.f.createElement(kt,null),pie:h.f.createElement(nt,null),markerGauge:h.f.createElement(zt,null),mapping:h.f.createElement(Rt,null),fillerGauge:h.f.createElement(_t,null),events:h.f.createElement(ft,null),column:h.f.createElement(Xe,null),choropleth:h.f.createElement(ut,null),bubble:h.f.createElement(Ve,null),bar:h.f.createElement(Ie,null),area:h.f.createElement(Ne,null)},Zt={label:(0,d.a._)("Statistics Table"),value:"statistics",icon:Kt.statistics},Jt=e=>e in Kt?Kt[e]:h.f.createElement(vt,null),en=h.f.memo(({vizType:e,selectableVizTypes:t,panelPoweredBy:n,dashboardType:r,onVizTypeChange:i})=>{var o,a,s,l;if(!t.length)return null;let c;return c="xml"===r&&"report"===n?h.f.createElement(Ut,Object(h.e)({},Xt((null==(o=t[0])?void 0:o.label)+"-viz-type")),h.f.createElement("span",null,(0,d.a._)("Loaded from report")),h.f.createElement(Yt,{content:h.f.createElement($t,null,(0,d.a._)("The visualization and its configuration will be loaded from the report by default. It can be modified later within the dashboard or in the report itself."))})):t.length>1?h.f.createElement(be,{onChange:i,value:e},t.map(({label:e,value:t,icon:n})=>h.f.createElement(be.Option,Object(h.e)({value:t,label:e,icon:n,key:t},Xt(e+"-viz-type"))))):h.f.createElement(Ut,Object(h.e)({},Xt((null==(a=t[0])?void 0:a.label)+"-viz-type")),null==(s=t[0])?void 0:s.icon,h.f.createElement("span",null,null==(l=t[0])?void 0:l.label)),h.f.createElement(Ht,{label:(0,d.a._)("Visualization Type")},c)}),tn=h.f.memo(({panelTitle:e,onPanelTitleChange:t,selectableVizTypes:n,panelPoweredBy:r,vizType:i,dashboardType:o,onSaveByEnter:a,onVizTypeChange:l})=>h.f.createElement("div",Object(h.e)({},Gt),h.f.createElement(Vt,null),h.f.createElement(Ht,{label:(0,d.a._)("Panel Title")},h.f.createElement(s.b,Object(h.e)({placeholder:(0,d.a._)("Optional"),value:e,onKeyDown:a,onChange:t},Qt))),h.f.createElement(en,{vizType:i,selectableVizTypes:n,panelPoweredBy:r,dashboardType:o,onVizTypeChange:l}))),nn=Object(p.a)(l.c)` margin-bottom: 0px; margin-top: 3px; `,rn=Object(p.a)(c.a)` > [data-test='content'] { display: inline; } `,on=({modalWarnings:e,fileName:t,appearance:n="default",testName:r,warningHeader:i})=>{var a;const s=Object(f.a)(t);return(0,o.a.isEmpty)(e)?h.f.createElement(h.f.Fragment,null):h.f.createElement(rn,Object(h.e)({appearance:n,type:"warning"},s(r)),1===e.length?h.f.createElement(h.f.Fragment,null,(null==(a=e[0])?void 0:a.message)+" "):h.f.createElement(h.f.Fragment,null,i,h.f.createElement(nn,null,e.map(e=>h.f.createElement(l.c.Item,{key:e.listItemMessage},e.listItemMessage)))))},an={};Object(h.a)(an,{default:()=>sn}),Object(h.c)(an,re);var sn=null!=(Ft=null==(It=ie.a)?void 0:It.default)?Ft:ie.a}).call(this,"/index.js")},1310:function(e,t){e.exports='<% if (showUserSettings) { %>\n
  • \n <% if (isCloud) { %>\n <%- _("User Settings").t() %>\n <% } else { %>\n <%- _("Account Settings").t() %>\n <% } %>\n
  • \n<% } %>\n
  • <%- _("Preferences").t() %>
  • \n<% if (logoutLink) { %>\n
  • <%- _("Logout").t() %>
  • \n<% } %>\n<% if (showUserMenuProfile) { %>\n
  • <%- _("Profile").t() %>
  • \n<% } %>\n'},1311:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.i(n(345),void 0),t.push([e.i,".view---enterprise---dev---2nMOX{min-width:150px}.iconUser---enterprise---dev---1OYuS{}.realname---enterprise---dev---3Y9_F{display:inline-block;max-width:calc(50vw - 400px);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.realnameCloud---enterprise---dev---2uizL{max-width:100px}@media only screen and (min-width:1100px){.realnameCloud---enterprise---dev---2uizL{max-width:150px}}@media only screen and (min-width:1500px){.realnameCloud---enterprise---dev---2uizL{max-width:250px}}@media only screen and (min-width:1700px){.realnameCloud---enterprise---dev---2uizL{max-width:350px}}",""]),t.locals={view:"view---enterprise---dev---2nMOX "+n(29).locals.menu,iconUser:"iconUser---enterprise---dev---1OYuS "+n(345).locals.icon,realname:"realname---enterprise---dev---3Y9_F",realnameCloud:"realnameCloud---enterprise---dev---2uizL realname---enterprise---dev---3Y9_F"}},1312:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---wFYSb{background-color:#fff;color:#3c444d;padding:5px 30px 5px 35px;position:relative;word-wrap:break-word}.view---enterprise---dev---wFYSb+.view---enterprise---dev---wFYSb{border-top:1px dotted #c3cbd4}.time---enterprise---dev---ORxmA{color:#6b7785;display:block;font-size:12px}.icon---enterprise---dev---ZhaHd{font-size:150%;left:10px;position:absolute;top:5px}.icon---enterprise---dev---ZhaHd img{width:18px}.debug---enterprise---dev---1yS_Q,.info---enterprise---dev---12j7G{color:#006d9c}.warn---enterprise---dev---1uoCV{color:#f8be34}.greater---enterprise---dev---2Xzou{color:#5cc05c;font-size:1.5em;top:0}.critical---enterprise---dev---1Qc2-,.error---enterprise---dev---36Ozo,.important---enterprise---dev---5WDNm{color:#dc4e41}.delete---enterprise---dev---20ovI{border:none;color:#6b7785;font-size:120%;line-height:25px;position:absolute;right:0;text-align:center;top:0;width:25px}.delete---enterprise---dev---20ovI:active,.delete---enterprise---dev---20ovI:focus,.delete---enterprise---dev---20ovI:hover{color:#006297}.delete---enterprise---dev---20ovI:focus{-webkit-box-shadow:inset 0 0 1px 3px #006eaa;box-shadow:inset 0 0 1px 3px #006eaa;outline:none}.content---enterprise---dev---a25v3 a,.content---enterprise---dev---a25v3 a:visited{color:#006297;cursor:pointer;text-decoration:none}.content---enterprise---dev---a25v3 a:focus,.content---enterprise---dev---a25v3 a:visited:focus{-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:none}",""]),t.locals={view:"view---enterprise---dev---wFYSb",time:"time---enterprise---dev---ORxmA",icon:"icon---enterprise---dev---ZhaHd",debug:"debug---enterprise---dev---1yS_Q icon---enterprise---dev---ZhaHd",info:"info---enterprise---dev---12j7G icon---enterprise---dev---ZhaHd",warn:"warn---enterprise---dev---1uoCV icon---enterprise---dev---ZhaHd",greater:"greater---enterprise---dev---2Xzou icon---enterprise---dev---ZhaHd",critical:"critical---enterprise---dev---1Qc2- icon---enterprise---dev---ZhaHd",error:"error---enterprise---dev---36Ozo icon---enterprise---dev---ZhaHd",important:"important---enterprise---dev---5WDNm icon---enterprise---dev---ZhaHd",delete:"delete---enterprise---dev---20ovI",content:"content---enterprise---dev---a25v3"}},1313:function(e,t){e.exports='
    \n
    <%- _("You have no messages.").t() %>
    \n
    \n
    \n\n'},1314:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---3IrBq{width:360px}.footer---enterprise---dev---2VDyn{text-align:right}.noMessages---enterprise---dev---1nFny{background:#fff;color:#3c444d;min-width:200px;padding:40px;text-align:center}.messageList---enterprise---dev---300LS{border-radius:1px 1px 0 0;margin:0;max-height:calc(100vh - 100px);overflow-y:auto;width:360px}.splunkMessagesDivider---enterprise---dev---3tI7E{border-top:1px solid #c3cbd4;height:0}.deleteAllMessages---enterprise---dev---3T3PE{margin:0}",""]),t.locals={view:"view---enterprise---dev---3IrBq",footer:"footer---enterprise---dev---2VDyn "+n(29).locals.footer,noMessages:"noMessages---enterprise---dev---1nFny "+n(29).locals.body,messageList:"messageList---enterprise---dev---300LS",splunkMessagesDivider:"splunkMessagesDivider---enterprise---dev---3tI7E",deleteAllMessages:"deleteAllMessages---enterprise---dev---3T3PE"}},1315:function(e,t){e.exports='
  • \n <%- _("Jobs").t() %>\n \n
  • \n<% if (typeof alertsLink !== "undefined" && alertsLink !== null) { %>\n
  • \n <%- _("Triggered Alerts").t() %>\n \n
  • \n<% } %>\n'},1316:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---3Yhv2{}.view---enterprise---dev---3Yhv2 li>a{white-space:nowrap}.primaryLink---enterprise---dev---5YM9P{}.secondaryLink---enterprise---dev---fKrtn{}",""]),t.locals={view:"view---enterprise---dev---3Yhv2 "+n(29).locals.menu,primaryLink:"primaryLink---enterprise---dev---5YM9P "+n(29).locals.primaryLink,secondaryLink:"secondaryLink---enterprise---dev---fKrtn "+n(29).locals.secondaryLink}},1317:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(86),void 0),t.push([e.i,".view---enterprise---dev---8yCHd{font-size:24px}.view---enterprise---dev---8yCHd h1{margin:0}.titleOverride---enterprise---dev---2OpL_{font-size:24px}",""]),t.locals={view:"view---enterprise---dev---8yCHd "+n(86).locals.title,titleOverride:"titleOverride---enterprise---dev---2OpL_"}},1318:function(e,t){e.exports='
    \n \n
    \n\n
    \n

    <%= productName %>

    \n
    \n
    <%= _(\'Version:\').t() %>
    \n
    <%- version %>
    \n
    <%= _(\'Build:\').t() %>
    \n
    <%- build %>
    \n
    <%= _(\'Server:\').t() %>
    \n
    <%- serverName %>
    \n <% if (listOfProducts) { %>\n
    <%= _(\'Products:\').t() %>
    \n
    <%- listOfProducts %>
    \n <% } %>\n <% if (isCloud && experience !== \'\') { %>\n
    <%= _(\'Experience:\').t() %>
    \n
    <%- experience %>
    \n <% } %>\n
    \n \n
    \n\n
    \n

    <%= _(\'Trademarks\').t() %>

    \n

    \n <%= _(\'Splunk, Splunk>, Turn Data Into Doing, Data-to-Everything, and D2E are trademarks or registered trademarks of Splunk Inc. in the United States and other countries. All other brand names, product names, or trademarks belong to their respective owners.\').t() %>\n

    \n
    \n\n
    \n

    <%= _(\'Patents\').t() %>

    \n

    \n <% var patentLink = sprintf(\'%s\', css.aboutLink, _(\'here\').t()); %>\n <%= sprintf(_(\'Certain features and functionalities of this Software are or may be protected by patents owned by Splunk Inc. that are listed %s.\').t(), patentLink) %>\n

    \n
    \n\n
    \n

    \n © <%- copyrightYear %> <%= _(\'Splunk Inc. All rights reserved.\').t()%>\n

    \n

    \n <% if (isCloud) { %>\n <% var termsLink = sprintf(\'%s\', css.aboutLink, _(\'Terms of Service\').t()); %>\n <%= sprintf(_(\'All use of this service is subject to the Splunk Cloud %s.\').t(), termsLink) %>\n <% } else { %>\n <% var licenseLink = sprintf(\'%s\', css.aboutLink, _(\'Splunk General Terms\').t()); %>\n <% var termsLink = _(\'terms and conditions\').t(); %>\n <%= sprintf(_(\'All use of this Software is subject to the %s of the %s.\').t(), termsLink, licenseLink) %>\n <% } %>\n

    \n
    \n\n
    \n\n
    \n
    \n

    Current Application

    \n

    <%- currentApp %>

    \n
    \n <% if (appVersion) { %>\n
    <%= _(\'Version:\').t() %>
    \n
    <%- appVersion %>
    \n <% } %>\n <% if (appBuild) { %>\n
    <%= _(\'Build:\').t() %>
    \n
    <%- appBuild %>
    \n <% } %>\n
    \n <% if (appAttributionLink) { %>\n <%- _(\'Third-Party Software Credits and Attributions\').t() %>\n <% } %>\n
    \n'},1319:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---2STCx{font-size:14px}.view---enterprise---dev---2STCx p{margin:0 0 10px}.sectionHeader---enterprise---dev---gkraX{color:#3c444d;font-size:14px;font-weight:700;margin:0;padding:0}.aboutIcon---enterprise---dev---3uyi8{float:right;font-size:18px}.aboutIcon---enterprise---dev---3uyi8 .prompt---enterprise---dev---3pKiQ{max-width:600px}.aboutIcon---enterprise---dev---3uyi8 .product---enterprise---dev---xHRc8,.aboutIcon---enterprise---dev---3uyi8 .prompt---enterprise---dev---3pKiQ{color:#5cc05c}.aboutIcon---enterprise---dev---3uyi8>[data-role=icon]{height:36px;width:36px}.aboutIcon---enterprise---dev---3uyi8>[data-role=logo]{max-height:44px}.aboutSection---enterprise---dev---2h-Tw{color:#5c6773;line-height:20px;margin:0 0 20px}.aboutSection---enterprise---dev---2h-Tw dl{margin:0}.aboutSection---enterprise---dev---2h-Tw dt{float:left;font-weight:400;line-height:20px;margin-right:5px;overflow:hidden;white-space:nowrap;word-wrap:normal;font-weight:500}.aboutSection---enterprise---dev---2h-Tw dd{line-height:20px}.aboutSection---enterprise---dev---2h-Tw:last-child{margin-bottom:0}.aboutSection---enterprise---dev---2h-Tw[data-section-role=footnote]{font-size:12px;line-height:12px}.aboutLink---enterprise---dev---1RNHY{color:#006297;cursor:pointer;text-decoration:none}.aboutLink---enterprise---dev---1RNHY:hover{color:#006297;text-decoration:underline}.aboutLink---enterprise---dev---1RNHY:focus{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0}.aboutLink---enterprise---dev---1RNHY:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.aboutLink---enterprise---dev---1RNHY:focus{text-decoration:none}.aboutLink---enterprise---dev---1RNHY:active{-webkit-box-shadow:none;box-shadow:none}.aboutLink---enterprise---dev---1RNHY.disabled---enterprise---dev---3Vq7S{color:#6b7785}.aboutLink---enterprise---dev---1RNHY{border-radius:3px;display:inline-block;margin-left:-2px;margin-right:-2px;padding:0 2px}.divider---enterprise---dev---3s7tE{background-color:#c3cbd4;height:1px;margin:-5px 0 15px;overflow:hidden}.currentAppHeader---enterprise---dev---1BSa2{color:#5c6773;font-family:inherit;font-size:14px;font-size:12px;font-weight:500;line-height:20px;margin:5px 0;padding:0;text-rendering:optimizelegibility;text-transform:uppercase}.attributionLink---enterprise---dev----izAY{display:block;margin-bottom:10px}",""]),t.locals={view:"view---enterprise---dev---2STCx",sectionHeader:"sectionHeader---enterprise---dev---gkraX",aboutIcon:"aboutIcon---enterprise---dev---3uyi8",prompt:"prompt---enterprise---dev---3pKiQ",product:"product---enterprise---dev---xHRc8",aboutSection:"aboutSection---enterprise---dev---2h-Tw",aboutLink:"aboutLink---enterprise---dev---1RNHY",disabled:"disabled---enterprise---dev---3Vq7S",divider:"divider---enterprise---dev---3s7tE",currentAppHeader:"currentAppHeader---enterprise---dev---1BSa2",attributionLink:"attributionLink---enterprise---dev----izAY"}},132:function(e,t,n){var r=n(30).f,i=n(55),o=n(26)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},1320:function(e,t){(function(){!function(e,t){if(!e.jg_namespace||!e.jg_import){var n={},r={},i={},o={},a={},s={},l=[],c=0,u=null,d=function(e){return":class"===e.substring(e.length-6)?e.substring(0,e.length-6):e},p=function(e){var t={};t.path=e;var n=e.indexOf(":");if(t.classPath=n<0?e:e.substring(0,n),t.type=n<0?"class":e.substring(n+1),!t.classPath||!t.type)return null;var r=t.classPath.lastIndexOf(".");return t.namespace=r<0?"":t.classPath.substring(0,r),t.className=r<0?t.classPath:t.classPath.substring(r+1),t.name="class"===t.type?t.className:t.className+":"+t.type,t},h=function(e,t){return function(){e.apply(this,arguments),t.call(this)}},f=e.jg_namespace=function(t,r){if(null==t)throw new Error("Parameter path must be non-null.");if("string"!=typeof t)throw new Error("Parameter path must be a string.");if(null!=r&&"function"!=typeof r)throw new Error("Parameter closure must be a function.");var i=n[t];if(!i){var o,a,s=t?t.split("."):[];i=e;for(var l=0,c=s.length;l=0;i--)if(t=r[i],e.substring(0,t.length)===t)return(n=o[t]+e.substring(t.length).replace(/\./g,"/")).substring(0,n.length-1);return(n=e.replace(/\./g,"/")).substring(0,n.length-1)}(c.classPath)+h.extension,c.source=null;try{var m=e.ActiveXObject?new e.ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest;m.open("GET",c.url,!1),m.send(null),200!=m.status&&0!=m.status||(c.source=m.responseText)}catch(e){}if(null==c.source)throw new Error("Failed to load resource "+t+" from url "+c.url+". Ensure the correct source path is set for this resource via jg_import.setSourcePath().");var b={};for(var g in c)c.hasOwnProperty(g)&&(b[g]=c[g]);try{var v=h.parser.call(b,b);null==(n=u[c.name])&&(n=v)}catch(e){if(null!=e&&e.__jg_import_Error)throw e;var y=e instanceof Error?e.message:String(e);throw(e=new Error("Error in resource "+t+": "+y)).__jg_import_Error=!0,e}if(null==n)throw new Error("Failed to define resource "+t+".");u[c.name]=n}finally{delete i[t]}}c.resource=n,s[t]=c,l.push(t),r[t]=n}return n};m.define=function(e,t){if(null==e)throw new Error("Parameter path must be non-null.");if("string"!=typeof e)throw new Error("Parameter path must be a string.");if(!e)throw new Error("Parameter path must be non-empty.");if(null==t)throw new Error("Parameter closure must be non-null.");if("function"!=typeof t)throw new Error("Parameter closure must be a function.");e=d(e);var n=r[e];if(null==n){var o=p(e);if(!o)throw new Error('Invalid resource path "'+e+'".');var a=f(o.namespace);if(null==(n=a[o.name])){var c=t.call(a,a);if(null==(n=a[o.name])&&(n=c),null==n)throw new Error("Failed to define resource "+e+".");a[o.name]=n}i[e]||null!=r[e]||(o.resource=n,s[e]=o,l.push(e),r[e]=n)}return n},m.setSourcePath=function(e,t){if(null==e)throw new Error("Parameter path must be non-null.");if("string"!=typeof e)throw new Error("Parameter path must be a string.");if(null==t)throw new Error("Parameter url must be non-null.");if("string"!=typeof t)throw new Error("Parameter url must be a string.");e&&"."!==e.charAt(e.length-1)&&(e+="."),t&&"/"!==t.charAt(t.length-1)&&(t+="/"),o[e]=t},m.registerResourceType=function(e,t,n){if(null==e)throw new Error("Parameter type must be non-null.");if("string"!=typeof e)throw new Error("Parameter type must be a string.");if(!e)throw new Error("Parameter type must be non-empty.");if(null==t)throw new Error("Parameter extension must be non-null.");if("string"!=typeof t)throw new Error("Parameter extension must be a string.");if(null==n)throw new Error("Parameter parser must be non-null.");if("function"!=typeof n)throw new Error("Parameter parser must be a function.");var r={};r.extension=t,r.parser=n,a[e]=r},m.getResourceInfo=function(e){if(null!=e&&"string"!=typeof e)throw new Error("Parameter path must be a string.");if(!e){for(var t=[],n=0,r=l.length;n=0;m--)(f=u[m]).constructor=h(f.constructor,p);return e[r]=!0,n},e.jg_has_mixin=function(e,t){if(null==e)throw new Error("Parameter target must be non-null.");if(null==t)throw new Error("Parameter source must be non-null.");var n=t.__jg_mixin_id;return!!n&&1==e[n="__jg_has_mixin_"+n]};m.registerResourceType("class",".js",(function(t){!function(e,t){eval.call(e,t)}(e,t.source)}))}}(this)}).call(window)},1321:function(e,t){e.exports='\n
    \n
    \n
    \n'},1322:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,'.menu---enterprise---dev---1w_DO{width:100%}.menu---enterprise---dev---1w_DO:after,.menu---enterprise---dev---1w_DO:before{content:"";display:table;line-height:0}.menu---enterprise---dev---1w_DO:after{clear:both}.menu---enterprise---dev---1w_DO{border-radius:1px 1px 0 0}.formSearch---enterprise---dev---30ZH6{border-top:1px solid #c3cbd4;margin:0;min-width:200px;padding:5px}.formSearch---enterprise---dev---30ZH6 input[type=text]{background-color:#fff}.searchQuery---enterprise---dev---2oaPm{-webkit-box-sizing:border-box;box-sizing:border-box;height:2em;padding:0 10px;width:100%}',""]),t.locals={menu:"menu---enterprise---dev---1w_DO "+n(29).locals.menu,formSearch:"formSearch---enterprise---dev---30ZH6",searchQuery:"searchQuery---enterprise---dev---2oaPm"}},1323:function(e,t){e.exports='
    <%- title %>
    \n
      \n <% collection.each(function(model) { %>\n <% var appName = model.entry.acl.get(\'app\'); %>\n <% var modelApp = _.find(apps.models, function(app) {return app.entry.get(\'name\') === appName;}); %>\n <% var openInApp = modelApp && modelApp.entry.content.get("visible") ? appName : alternateApp; %>\n <% var result = nameAttr && model.entry.content.get(nameAttr) ? model.entry.content.get(nameAttr) : model.entry.get(\'name\'); %>\n
    • \'>\n \n <%- result %>\n \n \n \n
    • \n <% }); %>\n <% if (collection.models[0].paging.get(\'perPage\') < collection.models[0].paging.get(\'total\')) { %>\n
    • \n \n <%- splunkUtils.sprintf(_(\'More %s results\').t(), title) %>\n \n \n \n
    • \n <% } %>\n
    '},1324:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---3hNo2{border-bottom:1px solid #c3cbd4}.list---enterprise---dev---38WcQ{}.list---enterprise---dev---38WcQ li>a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.primaryLink---enterprise---dev---20rpV{}.primaryLink---enterprise---dev---20rpV>i{padding-right:5px}.secondaryLink---enterprise---dev---xfJEy{}.header---enterprise---dev---3qLY6{border-bottom:1px solid #c3cbd4;color:#6b7785;padding:5px 10px}",""]),t.locals={view:"view---enterprise---dev---3hNo2",list:"list---enterprise---dev---38WcQ "+n(29).locals.menu,primaryLink:"primaryLink---enterprise---dev---20rpV "+n(29).locals.primaryLink,secondaryLink:"secondaryLink---enterprise---dev---xfJEy "+n(29).locals.secondaryLink,header:"header---enterprise---dev---3qLY6"}},1325:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---gv9mv{background-color:#fff;max-height:calc(100vh - 54px);overflow:auto;width:360px}.list---enterprise---dev---TkzW4{}.list---enterprise---dev---TkzW4 li>a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.arrow---enterprise---dev---3XcWX{}.searchLink---enterprise---dev---1pJbm{border-top:0}.primaryLink---enterprise---dev---1nc5T{}.secondaryLink---enterprise---dev---35CKe{}.noResults---enterprise---dev---3Q8I4{border-bottom:1px solid #c3cbd4;color:#fff;padding-bottom:10px;padding-top:10px;text-align:center}.sharedSplunkbarFindFindprogress---enterprise---dev---1VHa7{background-color:#fff;width:360px}.visuallyhiddenOverride---enterprise---dev---M7_45{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}",""]),t.locals={view:"view---enterprise---dev---gv9mv "+n(29).locals.view,list:"list---enterprise---dev---TkzW4 "+n(29).locals.menu,arrow:"arrow---enterprise---dev---3XcWX "+n(29).locals.arrow,searchLink:"searchLink---enterprise---dev---1pJbm",primaryLink:"primaryLink---enterprise---dev---1nc5T "+n(29).locals.primaryLink+" searchLink---enterprise---dev---1pJbm",secondaryLink:"secondaryLink---enterprise---dev---35CKe "+n(29).locals.secondaryLink+" searchLink---enterprise---dev---1pJbm",noResults:"noResults---enterprise---dev---3Q8I4",sharedSplunkbarFindFindprogress:"sharedSplunkbarFindFindprogress---enterprise---dev---1VHa7",visuallyhiddenOverride:"visuallyhiddenOverride---enterprise---dev---M7_45"}},1326:function(e,t,n){var r=n(413);(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---JcVyL{background-position:0 0}.spinnersmall---enterprise---dev---JHpvD{background-image:url("+r(n("views/shared/waitspinner/loading_small.png"))+");background-size:280px 14px;height:14px;width:14px}.spinnermedium---enterprise---dev---32Nko{background-image:url("+r(n("views/shared/waitspinner/loading_medium.png"))+");background-position:0 0;background-size:380px 19px;height:19px;width:19px}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.spinnersmall---enterprise---dev---JHpvD{background-image:url("+r(n("views/shared/waitspinner/loading_small_2x.png"))+")}.spinnermedium---enterprise---dev---32Nko{background-image:url("+r(n("views/shared/waitspinner/loading_medium_2x.png"))+")}}",""]),t.locals={view:"view---enterprise---dev---JcVyL",spinnersmall:"spinnersmall---enterprise---dev---JHpvD view---enterprise---dev---JcVyL",spinnermedium:"spinnermedium---enterprise---dev---32Nko view---enterprise---dev---JcVyL"}},1327:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---NtSjO{background-color:#fff;width:360px}.list---enterprise---dev---3qLJM{}.arrow---enterprise---dev---JZz95{}.primaryLink---enterprise---dev---JTX4T{}.secondaryLink---enterprise---dev----m1_1{}.spinnerWrapper---enterprise---dev---1QOfd{background-color:#fff;border-bottom:1px solid #c3cbd4;padding:10px 173px;width:14px}",""]),t.locals={view:"view---enterprise---dev---NtSjO "+n(29).locals.view,list:"list---enterprise---dev---3qLJM "+n(29).locals.menu,arrow:"arrow---enterprise---dev---JZz95 "+n(29).locals.arrow,primaryLink:"primaryLink---enterprise---dev---JTX4T "+n(29).locals.primaryLink,secondaryLink:"secondaryLink---enterprise---dev----m1_1 "+n(29).locals.secondaryLink,spinnerWrapper:"spinnerWrapper---enterprise---dev---1QOfd"}},1328:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---3i-Ma{height:inherit;padding-left:10px;padding-right:20px}",""]),t.locals={view:"view---enterprise---dev---3i-Ma"}},1329:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(86),void 0),t.push([e.i,".view---enterprise---dev---2yPl3{font-size:20px}.healthTitle---enterprise---dev---Ajeja{color:#3c444d;font-size:1em}.captainElectionWarning---enterprise---dev---vGdsA{color:#3c444d;font-size:12px}.distributedSwitch---enterprise---dev---2qrTh{float:right}",""]),t.locals={view:"view---enterprise---dev---2yPl3 "+n(86).locals.title,healthTitle:"healthTitle---enterprise---dev---Ajeja",captainElectionWarning:"captainElectionWarning---enterprise---dev---vGdsA",distributedSwitch:"distributedSwitch---enterprise---dev---2qrTh"}},133:function(e,t,n){"use strict";var r=n(24),i=n(30),o=n(34),a=n(26)("species");e.exports=function(e){var t=r[e];o&&t&&!t[a]&&i.f(t,a,{configurable:!0,get:function(){return this}})}},1330:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".error---enterprise---dev---1RFQE{color:#dc4e41}.error---enterprise---dev---1RFQE,.warning---enterprise---dev---3Ih7u{padding-right:8px}.warning---enterprise---dev---3Ih7u{color:#f8be34}.info---enterprise---dev---3YWrV{color:#53a051;padding-right:8px}.defaultColor---enterprise---dev---3gu-d,.disabledColor---enterprise---dev---12k8_{color:#818d99;padding-right:8px}div[data-role=health]{border-right:1px solid #c3cbd4}",""]),t.locals={error:"error---enterprise---dev---1RFQE",warning:"warning---enterprise---dev---3Ih7u",info:"info---enterprise---dev---3YWrV",defaultColor:"defaultColor---enterprise---dev---3gu-d",disabledColor:"disabledColor---enterprise---dev---12k8_"}},1331:function(e,t){e.exports='
    \n
    \n \n

    \n <%- _(\'How to interpret this health report:\').t() %>\n

    \n

    \n <%- _(\'This health report displays information from the /health/splunkd/details endpoint. There are three potential states for a feature:\').t() %>\n

    \n
      \n
    • <%- _(\'Green: The feature is functioning properly.\').t() %>
    • \n
    • <%- _(\'Yellow: The feature is experiencing a problem. The feature’s status might automatically improve, or it might worsen over time. For details, see Root Cause.\').t() %>
    • \n
    • <%- _(\'Red: The feature has severe issues and is negatively impacting the functionality of your deployment. For details, see Root Cause.\').t() %>
    • \n
    • <%- _(\'Grey: Health report is disabled or snoozed for the feature.\').t() %>
    • \n
    \n
    \n
    \n
    \n
    \n

    \n \n

    \n

    \n <%- _(\'This feature is functioning correctly.\').t() %>\n

    \n
    \n
    \n

    \n \n

    \n
      \n
    • \n <%- _(\'Root Cause(s): \').t() %>\n
        \n
      • \n
      • \n
      • \n
      • \n <%- _(\'Last 50 related messages:\').t() %>\n
          \n
        • \n
        \n
        \n
        \n

        \n \n

        \n

        \n <%- _(\'This feature\\\'s health report is disabled.\').t() %>\n

        \n
        \n\n
        \n
        \n'},1332:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(86),void 0),t.push([e.i,".view---enterprise---dev---25YBx{border-top:1px solid #c3cbd4;color:#3c444d;height:400px;padding:0}.health---enterprise---dev---1husf{float:left;padding-bottom:5px;padding-top:6px;width:250px}.health---enterprise---dev---1husf div{color:#818d99;font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;margin:3px 0 3px 15px;text-decoration:none}.health---enterprise---dev---1husf div[data-nodeid=splunkd],.health---enterprise---dev---1husf div[data-role=feature-node]{margin:3px 0 3px 5px}.health---enterprise---dev---1husf div a{color:#3c444d;text-decoration:none;white-space:nowrap}.health---enterprise---dev---1husf div a:hover{background-color:#bfe9ff}.healthSelected---enterprise---dev---18Gks{font-weight:800}.external---enterprise---dev---1Zn4Z{padding-left:4px}.infoBox---enterprise---dev---pcsTo{border-bottom:0;border-top:0;float:right;height:inherit;margin-bottom:5px;width:580px}.infoBox---enterprise---dev---pcsTo ul{list-style-type:disc}.spinner---enterprise---dev---JBnIT{padding-left:400px;padding-top:200px}.infoDefault---enterprise---dev---OkNFP,.infoDisabled---enterprise---dev---1KtDh,.infoGood---enterprise---dev---20qQb{float:right;margin-bottom:10px;margin-right:10px;width:570px}.infoDefault---enterprise---dev---OkNFP>ul,.infoDisabled---enterprise---dev---1KtDh>ul,.infoGood---enterprise---dev---20qQb>ul{list-style-type:none;margin:0 0 10px 25px;padding:0}",""]),t.locals={view:"view---enterprise---dev---25YBx "+n(86).locals.bodyPadded,health:"health---enterprise---dev---1husf",healthSelected:"healthSelected---enterprise---dev---18Gks",external:"external---enterprise---dev---1Zn4Z",infoBox:"infoBox---enterprise---dev---pcsTo "+n(86).locals.bodyScrolling,spinner:"spinner---enterprise---dev---JBnIT",infoDefault:"infoDefault---enterprise---dev---OkNFP",infoDisabled:"infoDisabled---enterprise---dev---1KtDh",infoGood:"infoGood---enterprise---dev---20qQb"}},1333:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=135)}({0:function(e,t){e.exports=n(1)},135:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return c}));var r=n(0),i=n.n(r),o=n(3),a=n(4),s=n.n(a);function l(){return(l=Object.assign||function(e){for(var t=1;t<%= _("Disconnected from Splunk server").t() %>\n

        <%= _("Your network connection may have been lost or Splunk server may be down.").t() %>

        \n
        \n'},1342:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---3fYoS{text-align:center}.spinnerWrapper---enterprise---dev---2Ybiy{float:left;margin:10px 0 10px 50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}h1,p{color:#3c444d}",""]),t.locals={view:"view---enterprise---dev---3fYoS",spinnerWrapper:"spinnerWrapper---enterprise---dev---2Ybiy"}},1343:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(86),void 0),t.push([e.i,".backdrop---enterprise---dev---1VX86{z-index:1051}.view---enterprise---dev---1NWw4{padding:20px;z-index:1052}",""]),t.locals={backdrop:"backdrop---enterprise---dev---1VX86 "+n(86).locals.backdrop,view:"view---enterprise---dev---1NWw4 "+n(86).locals.view}},1344:function(e,t){e.exports='\n
      • <%- _("Instances").t() %>
      • \n <% if(isAdmin) {%>\n
      • <%- _("Upgrade").t() %>
      • \n
      • <%- _("Invite Users").t() %>
      • \n <% }%>\n'},1345:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---3YXRI{}",""]),t.locals={view:"view---enterprise---dev---3YXRI "+n(29).locals.menu}},1346:function(e,t){e.exports='<%\n currentAppname = currentApp ? currentApp.name : \'search\'; // TODO: search fallback is not always safe assumption\n%>\n\n\n'},1347:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---38Nli{min-width:260px}.appsList---enterprise---dev---2zWXd{border-radius:1px 1px 0 0;max-height:calc(100vh - 120px)}.appsList---enterprise---dev---2zWXd li.launcher---enterprise---dev---L00TD{border-bottom:1px solid #c3cbd4}.menu---enterprise---dev---7a0fM{}.label---enterprise---dev---1rfpx{display:inline-block;padding-right:30px}.icon---enterprise---dev---2nMHq{height:18px;position:absolute;right:10px;top:6px}.selected---enterprise---dev---KgWtu{}",""]),t.locals={view:"view---enterprise---dev---38Nli "+n(29).locals.body,appsList:"appsList---enterprise---dev---2zWXd "+n(29).locals.menuSelectable,launcher:"launcher---enterprise---dev---L00TD",menu:"menu---enterprise---dev---7a0fM "+n(29).locals.menuSelectable,label:"label---enterprise---dev---1rfpx",icon:"icon---enterprise---dev---2nMHq",selected:"selected---enterprise---dev---KgWtu "+n(29).locals.selected}},1348:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(343),void 0),t.i(n(345),void 0),t.push([e.i,".view---enterprise---dev---3R1Xc{}.toggle---enterprise---dev---3Yh7P{}.appName---enterprise---dev---30SZW{display:inline-block;max-width:calc(50vw - 400px);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.appNameCloud---enterprise---dev---3L9-F{max-width:100px}@media only screen and (min-width:1100px){.appNameCloud---enterprise---dev---3L9-F{max-width:150px}}@media only screen and (min-width:1500px){.appNameCloud---enterprise---dev---3L9-F{max-width:250px}}@media only screen and (min-width:1700px){.appNameCloud---enterprise---dev---3L9-F{max-width:350px}}",""]),t.locals={view:"view---enterprise---dev---3R1Xc "+n(343).locals.view,toggle:"toggle---enterprise---dev---3Yh7P "+n(345).locals.toggle,appName:"appName---enterprise---dev---30SZW",appNameCloud:"appNameCloud---enterprise---dev---3L9-F appName---enterprise---dev---30SZW"}},1349:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".single-global-banner{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0 10px;-webkit-box-pack:center;-ms-flex-pack:center;font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px;font-weight:700;justify-content:center;line-height:34px;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.single-global-banner .banner-text{margin:0;overflow:hidden;text-overflow:ellipsis}.single-global-banner .banner-link{margin-left:8px;text-decoration:underline}.single-global-banner .banner-link i{margin-left:3px}",""])},135:function(e,t,n){var r=n(52);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},1350:function(e,t){e.exports='
        \n \n
        \n
        \n
        \n
        \n
        \n'},1351:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(343),void 0),t.push([e.i,".view---enterprise---dev---32U5l{display:block;float:left}",""]),t.locals={view:"view---enterprise---dev---32U5l "+n(343).locals.view}},1352:function(e,t){e.exports='<% if(!navData.submenu){return "";}%>\n<% if(needsBack){%>\n
      • \n <%-_("Back").t()%>\n \n
      • \n<%}%>\n<% _.each(navData.submenu, function(i, index) { %>\n<% if(i.label || i.divider) { %>\n
      • data-target-view="<%= i.viewName %>">\n <% if(!i.divider){ %>\n <% if(i.submenu && i.submenu.length>0){ %>\n \n <% if (active === j.viewName) { %>data-selected="selected"<% } %>\n <%});%>\n >\n <%- _.unescape(_(i.label).t()) %>\n <%} else if (i.hasOwnProperty(\'reportUri\')) { %>\n <% var dispatchView = i.hasOwnProperty(\'dispatchView\') && i.dispatchView === \'pivot\' ? \'pivot\' : \'search\' %>\n data-selected="selected"<% } %> class="<%=css.primaryLink%>" data-dispatch-view="<%= dispatchView %>"><%- _.unescape(_(i.label).t()) %>\n \n <%} else { %>\n data-selected="selected"<% } %><% if (i.external) { %> class="external" target="_blank" rel="noopener noreferrer" rel="noopener"<% } %>><%- _.unescape(_(i.label).t()) %>\n <%}%>\n <%}%>\n
      • \n<% } %>\n<% }); %>\n'},1353:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(29),void 0),t.push([e.i,".view---enterprise---dev---2iLys{-webkit-box-sizing:border-box;box-sizing:border-box;left:0;max-height:calc(100vh - 100px);position:absolute;top:0;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s;width:300px}.view---enterprise---dev---2iLys:first-child:last-child{position:static}.view---enterprise---dev---2iLys ::-webkit-scrollbar{width:7px}.view---enterprise---dev---2iLys ::-webkit-scrollbar-track{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);box-shadow:inset 0 0 6px rgba(0,0,0,.1)}.view---enterprise---dev---2iLys ::-webkit-scrollbar-thumb{background:hsla(0,0%,42%,.4);border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.2);box-shadow:inset 0 0 6px rgba(0,0,0,.2)}.view---enterprise---dev---2iLys+.view---enterprise---dev---2iLys{border-top:none}.divider---enterprise---dev---3oTls{}.primaryLink---enterprise---dev---1lqgI{}.secondaryLink---enterprise---dev---3aB6P{}.startGroup---enterprise---dev---3wknE{}.submenuIcon---enterprise---dev---1ugKL{float:right}",""]),t.locals={view:"view---enterprise---dev---2iLys "+n(29).locals.menuSelectable,divider:"divider---enterprise---dev---3oTls "+n(29).locals.divider,primaryLink:"primaryLink---enterprise---dev---1lqgI "+n(29).locals.primaryLink,secondaryLink:"secondaryLink---enterprise---dev---3aB6P "+n(29).locals.secondaryLink,startGroup:"startGroup---enterprise---dev---3wknE "+n(29).locals.startGroup,submenuIcon:"submenuIcon---enterprise---dev---1ugKL"}},1354:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---SG2aE{border-radius:4px;overflow:hidden;position:relative;-webkit-transition:height .2s;transition:height .2s;width:300px}",""]),t.locals={view:"view---enterprise---dev---SG2aE"}},1355:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---2pxtF{background:transparent;display:block;float:left;padding:3px 15px;position:relative;text-decoration:none;-webkit-transition:color .2s;transition:color .2s;white-space:nowrap}.view---enterprise---dev---2pxtF:not([data-active]){border-bottom-color:transparent!important}.view---enterprise---dev---2pxtF:first-child{padding-left:20px}.view---enterprise---dev---2pxtF:first-child>.underline---enterprise---dev---3KWuG{left:19px;width:calc(100% - 36px)}.view---enterprise---dev---2pxtF:hover{color:#fff;text-decoration:none}.view---enterprise---dev---2pxtF:hover>.underline---enterprise---dev---3KWuG{height:3px}.view---enterprise---dev---2pxtF[data-active]>.underline---enterprise---dev---3KWuG{height:3px;opacity:1}.view---enterprise---dev---2pxtF:focus{background:hsla(0,0%,100%,.2);-webkit-box-shadow:inset 0 0 8px 0 hsla(0,0%,100%,.07);box-shadow:inset 0 0 8px 0 hsla(0,0%,100%,.07);color:#fff;text-decoration:none}.view---enterprise---dev---2pxtF:focus>.underline---enterprise---dev---3KWuG{height:3px}.viewEnterprise---enterprise---dev---jBZmc{-webkit-box-sizing:border-box;box-sizing:border-box;color:#c3cbd4;height:44px;line-height:38px}.viewEnterprise---enterprise---dev---jBZmc[data-active]{color:#fff}.label---enterprise---dev---3W5pS:not(:last-child){padding-right:3px}.underline---enterprise---dev---3KWuG{background-color:#fff;bottom:0;height:0;left:14px;opacity:.6;position:absolute;-webkit-transition:height .2s;transition:height .2s;width:calc(100% - 31px)}",""]),t.locals={view:"view---enterprise---dev---2pxtF",underline:"underline---enterprise---dev---3KWuG",viewEnterprise:"viewEnterprise---enterprise---dev---jBZmc view---enterprise---dev---2pxtF",label:"label---enterprise---dev---3W5pS"}},1356:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---3uEe2{float:left;position:relative;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.dividerEnterprise---enterprise---dev---2_lQp{display:inline-block;height:10px;margin:0 15px;opacity:.2}.appNavInner---enterprise---dev---3Tq3T{float:left}",""]),t.locals={view:"view---enterprise---dev---3uEe2",dividerEnterprise:"dividerEnterprise---enterprise---dev---2_lQp",appNavInner:"appNavInner---enterprise---dev---3Tq3T"}},1357:function(e,t){e.exports='\n
        \n\n
        \n
        \n \n <%-_(appLabel).t()%>\n \n
        \n
        \n'},1358:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---3lymX{font-size:16px;font-weight:200;height:44px;line-height:44px;margin:0;overflow:hidden;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.link---enterprise---dev---1aTcm{padding:0 20px;position:relative}.link---enterprise---dev---1aTcm,.link---enterprise---dev---1aTcm:hover{color:#fff;display:block;text-decoration:none}.link---enterprise---dev---1aTcm:hover{background-color:transparent;background:hsla(0,0%,100%,.07)}.link---enterprise---dev---1aTcm:focus{background:hsla(0,0%,100%,.11);-webkit-box-shadow:inset 0 0 8px 0 hsla(0,0%,100%,.07);box-shadow:inset 0 0 8px 0 hsla(0,0%,100%,.07);text-decoration:none}.icon---enterprise---dev---1YGO1{display:inline-block;line-height:20px!important;margin-right:8px;vertical-align:middle}.icon---enterprise---dev---1YGO1,.icon---enterprise---dev---1YGO1 img{height:32px;width:auto}.icon---enterprise---dev---1YGO1 img{margin-top:-1px}.logo---enterprise---dev---UBzgP,.logo---enterprise---dev---UBzgP img{max-height:44px}",""]),t.locals={view:"view---enterprise---dev---3lymX",link:"link---enterprise---dev---1aTcm",icon:"icon---enterprise---dev---1YGO1",logo:"logo---enterprise---dev---UBzgP"}},1359:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(428),void 0),t.push([e.i,'.view---enterprise---dev---4WonF{font-size:20px}.view---enterprise---dev---4WonF:after{content:"\\2219\\2219\\2219"}.label---enterprise---dev---2GQZP{}',""]),t.locals={view:"view---enterprise---dev---4WonF "+n(428).locals.view,label:"label---enterprise---dev---2GQZP "+n(428).locals.label}},136:function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},1360:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".view---enterprise---dev---3tgfC{float:right;position:relative}",""]),t.locals={view:"view---enterprise---dev---3tgfC"}},1361:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,'.view---enterprise---dev---AXgI0{-webkit-animation:none 0s ease 0s 1 normal none running;animation:none 0s ease 0s 1 normal none running;-webkit-backface-visibility:visible;backface-visibility:visible;background:transparent none repeat 0 0/auto auto padding-box border-box scroll;border:none;border-collapse:separate;-o-border-image:none;border-image:none;border-radius:0;border-spacing:0;bottom:auto;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:content-box;box-sizing:content-box;caption-side:top;clear:none;clip:auto;background-color:#3c444d;clear:both;color:#000;color:#3c444d;-webkit-columns:auto;-moz-columns:auto;-webkit-column-count:auto;-moz-column-count:auto;-webkit-column-fill:balance;-moz-column-fill:balance;column-fill:balance;-webkit-column-gap:normal;-moz-column-gap:normal;column-gap:normal;-webkit-column-rule:medium none currentColor;-moz-column-rule:medium none currentColor;column-rule:medium none currentColor;-webkit-column-span:1;-moz-column-span:1;column-span:1;-webkit-column-width:auto;-moz-column-width:auto;columns:auto;content:normal;counter-increment:none;counter-reset:none;cursor:auto;direction:ltr;display:inline;display:-webkit-box;display:-ms-flexbox;display:flex;empty-cells:show;float:none;font-family:serif;font-size:medium;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;height:auto;-ms-hyphens:none;hyphens:none;left:auto;letter-spacing:normal;line-height:normal;list-style:disc none outside;margin:0;max-height:none;max-width:none;min-height:0;min-height:44px;min-width:0;opacity:1;orphans:2;outline:medium none invert;overflow:visible;overflow-x:visible;overflow-y:visible;padding:0;page-break-after:auto;page-break-before:auto;page-break-inside:auto;-webkit-perspective:none;perspective:none;-webkit-perspective-origin:50% 50%;perspective-origin:50% 50%;position:static;position:relative;right:auto;-moz-tab-size:8;-o-tab-size:8;tab-size:8;table-layout:auto;text-align:left;-moz-text-align-last:auto;text-align-last:auto;text-decoration:none;text-indent:0;text-shadow:none;text-transform:none;top:auto;-webkit-transform:none;transform:none;-webkit-transform-origin:50% 50% 0;transform-origin:50% 50% 0;-webkit-transform-style:flat;transform-style:flat;-webkit-transition:none 0s ease 0s;transition:none 0s ease 0s;unicode-bidi:normal;vertical-align:baseline;visibility:visible;white-space:normal;widows:2;width:auto;word-spacing:normal;z-index:auto}.view---enterprise---dev---AXgI0:after,.view---enterprise---dev---AXgI0:before{content:"";display:table;line-height:0}.view---enterprise---dev---AXgI0:after{clear:both}.view---enterprise---dev---AXgI0{font-family:Splunk Platform Sans,Proxima Nova,Roboto,Droid,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:14px}.view---enterprise---dev---AXgI0 .shared-appbar-navitem---enterprise---dev---1iYs->.dropdown-menu---enterprise---dev---2zQiQ{width:300px}.view---enterprise---dev---AXgI0 ul.slidenavList---enterprise---dev---16JyZ li>a{border-top:none}.name---enterprise---dev---24Tf3{float:right;font-size:18px;font-weight:200;height:44px;line-height:44px;margin:0;overflow:hidden}.name---enterprise---dev---24Tf3 a{color:#3c444d;display:block;padding:0 20px;position:relative;text-decoration:none}.name---enterprise---dev---24Tf3 a:hover{background-color:transparent;background:hsla(0,0%,100%,.07);text-decoration:none}.name---enterprise---dev---24Tf3 a:focus{background:hsla(0,0%,100%,.11);-webkit-box-shadow:inset 0 0 8px 0 hsla(0,0%,100%,.07);box-shadow:inset 0 0 8px 0 hsla(0,0%,100%,.07);text-decoration:none}.link---enterprise---dev---32OFj\n.logo---enterprise---dev---1R3YW img{max-height:44px}[data-action=resizing-nav-right]{position:absolute;right:10px}',""]),t.locals={view:"view---enterprise---dev---AXgI0","shared-appbar-navitem":"shared-appbar-navitem---enterprise---dev---1iYs-","dropdown-menu":"dropdown-menu---enterprise---dev---2zQiQ",slidenavList:"slidenavList---enterprise---dev---16JyZ",name:"name---enterprise---dev---24Tf3",link:"link---enterprise---dev---32OFj",logo:"logo---enterprise---dev---1R3YW"}},1362:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".opt-in-dialog{width:650px}.opt-in-dialog .form-horizontal{width:100%}.opt-in-dialog a.external:after{padding-left:0}.instrumentation-opt-in-modal-body{display:-webkit-box;display:-ms-flexbox;display:flex;padding:0 15px}.instrumentation-opt-in-modal-body .control,.instrumentation-opt-in-modal-body .learn-more-link{display:inline-block;vertical-align:middle}.instrumentation-opt-in-modal-body .collect-details,.instrumentation-opt-in-modal-body .privacy-details,.instrumentation-opt-in-modal-body .update-details,.instrumentation-opt-in-modal-body .usage-details{margin-bottom:1em}.instrumentation-opt-in-modal-body .usage-details ul{margin-top:5px}.instrumentation-opt-in-modal-body .usage-details ul li{padding-top:5px}.instrumentation-opt-in-modal-body .message-container{-webkit-box-flex:70%;-ms-flex:70%;flex:70%}.instrumentation-opt-in-modal-body .image-container{-webkit-box-flex:30%;-ms-flex:30%;flex:30%}",""])},1363:function(e,t){e.exports='
        \n style="position: absolute; min-height: <%= fixedHeight %>px; max-height: <%= fixedHeight %>px; width: 100%; z-index: 15;"\n <% } %>\n>\n
        \n <% if (previousLink) { %>\n \n <% } %>\n
        \n \n
        \n <% if (nextLink) { %>\n \n <% } %>\n
        \n
        \n style="min-height: <%= fixedHeight - 20 %>px;"\n <% } %>\n >\n \n <%= info %>\n \n
        \n
        \n'},1364:function(e,t){e.exports='
        \n
        \n <% for (var i=0; i < images.length; i++) { %>\n
        data-carousel="item" role="alert">\n <%- altContent %>\n
        \n
        \n <%= captions[i] %>\n
        \n
        \n
        \n <% } %>\n
        \n
        \n
          \n <% for (var i=0; i < images.length; i++) { %>\n
        1. >
        2. \n <% } %>\n
        \n \n \n \n \n \n \n \n
        \n
        \n'},1365:function(e,t,n){(t=e.exports=n(9)(!1)).push([e.i,".carousel---enterprise---dev---xJ61p{background:#3c444d;height:633px;margin-bottom:0;width:960px}.carouselControl---enterprise---dev---2gOkA{background:none;border:none;color:#5cc05c;font-size:48px;margin-top:-20px;opacity:1;position:absolute;top:52%;z-index:60}.carouselControl---enterprise---dev---2gOkA polygon{fill:#5cc05c}.carouselControl---enterprise---dev---2gOkA:hover polygon{fill:#98e798}.carouselControl---enterprise---dev---2gOkA:focus,.carouselControl---enterprise---dev---2gOkA:hover{background:none}.carouselControl---enterprise---dev---2gOkA:focus polygon,.carouselControl---enterprise---dev---2gOkA:hover polygon{fill:#7ecd7e}.carouselControl---enterprise---dev---2gOkA>svg{vertical-align:top}.previous---enterprise---dev---3iY13{left:45px}.next---enterprise---dev---37xiA,.previous---enterprise---dev---3iY13{}.next---enterprise---dev---37xiA{right:45px}.carouselInner---enterprise---dev---20w07{overflow:hidden;position:relative;width:100%}.carouselInner---enterprise---dev---20w07 [data-active=true]{display:block}.carouselInner---enterprise---dev---20w07 [data-animate=in-left]{animation:slideLeft---enterprise---dev---2RkX3 .75s ease-in-out reverse;position:absolute}.carouselInner---enterprise---dev---20w07 [data-animate=in-right]{animation:slideRight---enterprise---dev---33oLZ .75s ease-in-out reverse}.carouselInner---enterprise---dev---20w07 [data-animate=out-left]{-webkit-animation:slideLeft---enterprise---dev---2RkX3 .75s ease-in-out;animation:slideLeft---enterprise---dev---2RkX3 .75s ease-in-out;position:absolute}.carouselInner---enterprise---dev---20w07 [data-animate=out-right]{-webkit-animation:slideRight---enterprise---dev---33oLZ .75s ease-in-out;animation:slideRight---enterprise---dev---33oLZ .75s ease-in-out}@-webkit-keyframes slideLeft---enterprise---dev---2RkX3{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideLeft---enterprise---dev---2RkX3{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@-webkit-keyframes slideRight---enterprise---dev---33oLZ{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideRight---enterprise---dev---33oLZ{0%{-webkit-transform:translateX(0);transform:translateX(0)}to{-webkit-transform:translateX(100%);transform:translateX(100%)}}.carouselItem---enterprise---dev---2VW14{display:none;height:633px;position:relative;width:960px}.carouselImage---enterprise---dev---2vc7m{display:inline;width:100%}.carouselImage---enterprise---dev---2vc7m:hover{cursor:pointer}.carouselIndicators---enterprise---dev---2bUnj{bottom:10px;position:absolute;right:50%;top:inherit;-webkit-transform:translate(50%);transform:translate(50%);z-index:60}.carouselIndicators---enterprise---dev---2bUnj [data-active=true]{background-color:#5cc05c}.carouselIndicator---enterprise---dev---2r2or{background:#818d99;border:none;border-radius:5px;cursor:pointer;display:block;float:left;height:6px;margin-bottom:0;margin-left:10px;width:6px}.carouselIndicator---enterprise---dev---2r2or:first-child{margin-left:0}.tourBtn---enterprise---dev---28PTw{background:rgba(0,0,0,.3);color:#fff;cursor:pointer;font-size:30px;left:50%;padding:30px 40px;position:absolute;top:300px;-webkit-transform:translate(-50%);transform:translate(-50%)}.exitTour---enterprise---dev---1YT1b,.startTour---enterprise---dev---2vuyT{color:#5cc05c}.tourGutter---enterprise---dev---3E3xB{background:rgba(60,68,77,.9);bottom:0;color:#fff;font-size:16px;height:132px;left:50%;position:absolute;-webkit-transform:translate(-50%);transform:translate(-50%);width:962px;z-index:50}.gutterText---enterprise---dev---3A6Wy{line-height:150%;margin:0 auto;padding-bottom:20px;position:relative;text-align:center;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:620px}.gutterLink---enterprise---dev---3fy_M,.gutterLink---enterprise---dev---3fy_M:hover{color:#fff;text-decoration:underline}.carouselAssets---enterprise---dev---eKREf{bottom:0;height:132px;position:absolute;width:960px}.tourLinks---enterprise---dev---zjctO{font-size:12px;padding:5px 5px 5px 0;position:absolute;right:5px;text-align:right;top:15px;z-index:50}.tourLink---enterprise---dev---2Z_JX{color:#fff;margin-right:10px}.tourLink---enterprise---dev---2Z_JX:hover{color:#fff;text-decoration:underline}.skipTour---enterprise---dev---U_tSb{}.doneLink---enterprise---dev---RHDnW,.nextTour---enterprise---dev---3HrvA,.tryItNow---enterprise---dev---3sxUt{display:none}.tryItNow---enterprise---dev---3sxUt{bottom:50px;position:absolute;right:30px;z-index:500}@media only screen and (max-height:633px){.carouselAssets---enterprise---dev---eKREf,.tourGutter---enterprise---dev---3E3xB{position:fixed}.carouselAssets---enterprise---dev---eKREf{bottom:-132px;z-index:60}.carouselControl---enterprise---dev---2gOkA{bottom:175px;top:inherit}.carouselIndicators---enterprise---dev---2bUnj{bottom:150px}.tourLinks---enterprise---dev---zjctO{bottom:220px;top:inherit}.tryItNow---enterprise---dev---3sxUt{bottom:180px;top:inherit}}.tourModal---enterprise---dev---HptVR{background:#3c444d;height:633px;width:960px;z-index:1061}.tourModal---enterprise---dev---HptVR.fade---enterprise---dev---1wtlx.in---enterprise---dev---2p-iK{top:15px}.modal-backdrop---enterprise---dev---38cst.tour-backdrop---enterprise---dev---2XYnO.fade---enterprise---dev---1wtlx{background:#3c444d;z-index:1060}.modal-backdrop---enterprise---dev---38cst.tour-backdrop---enterprise---dev---2XYnO.fade---enterprise---dev---1wtlx.in---enterprise---dev---2p-iK{background:#3c444d;opacity:1}",""]),t.locals={carousel:"carousel---enterprise---dev---xJ61p",carouselControl:"carouselControl---enterprise---dev---2gOkA",previous:"previous---enterprise---dev---3iY13 carouselControl---enterprise---dev---2gOkA",next:"next---enterprise---dev---37xiA carouselControl---enterprise---dev---2gOkA",carouselInner:"carouselInner---enterprise---dev---20w07",slideLeft:"slideLeft---enterprise---dev---2RkX3",slideRight:"slideRight---enterprise---dev---33oLZ",carouselItem:"carouselItem---enterprise---dev---2VW14",carouselImage:"carouselImage---enterprise---dev---2vc7m",carouselIndicators:"carouselIndicators---enterprise---dev---2bUnj",carouselIndicator:"carouselIndicator---enterprise---dev---2r2or",tourBtn:"tourBtn---enterprise---dev---28PTw",exitTour:"exitTour---enterprise---dev---1YT1b",startTour:"startTour---enterprise---dev---2vuyT",tourGutter:"tourGutter---enterprise---dev---3E3xB",gutterText:"gutterText---enterprise---dev---3A6Wy",gutterLink:"gutterLink---enterprise---dev---3fy_M",carouselAssets:"carouselAssets---enterprise---dev---eKREf",tourLinks:"tourLinks---enterprise---dev---zjctO",tourLink:"tourLink---enterprise---dev---2Z_JX",skipTour:"skipTour---enterprise---dev---U_tSb tourLink---enterprise---dev---2Z_JX",doneLink:"doneLink---enterprise---dev---RHDnW tourLink---enterprise---dev---2Z_JX",nextTour:"nextTour---enterprise---dev---3HrvA tourLink---enterprise---dev---2Z_JX",tryItNow:"tryItNow---enterprise---dev---3sxUt tourLink---enterprise---dev---2Z_JX",tourModal:"tourModal---enterprise---dev---HptVR",fade:"fade---enterprise---dev---1wtlx",in:"in---enterprise---dev---2p-iK","modal-backdrop":"modal-backdrop---enterprise---dev---38cst","tour-backdrop":"tour-backdrop---enterprise---dev---2XYnO"}},1366:function(e,t,n){(t=e.exports=n(9)(!1)).i(n(86),void 0),t.push([e.i,".view---enterprise---dev---1WEqE{margin-left:-480px;width:960px}.body---enterprise---dev---2nTYx{max-height:100vh}.bodyPadded---enterprise---dev---2nvo0{padding:20px}.bodyScrolling---enterprise---dev---2xvDX{overflow-y:auto}.bodyScrollingPadded---enterprise---dev---1AoOu{overflow-y:auto}.backdrop---enterprise---dev---2xI6q{background-color:#3c444d}.backdrop---enterprise---dev---2xI6q[data-modal-state=open]{opacity:1}.closeWrapper---enterprise---dev---2MzFl{top:3px}",""]),t.locals={view:"view---enterprise---dev---1WEqE "+n(86).locals.view,body:"body---enterprise---dev---2nTYx",bodyPadded:"bodyPadded---enterprise---dev---2nvo0 body---enterprise---dev---2nTYx",bodyScrolling:"bodyScrolling---enterprise---dev---2xvDX body---enterprise---dev---2nTYx",bodyScrollingPadded:"bodyScrollingPadded---enterprise---dev---1AoOu bodyPadded---enterprise---dev---2nvo0 body---enterprise---dev---2nTYx",backdrop:"backdrop---enterprise---dev---2xI6q "+n(86).locals.backdrop,closeWrapper:"closeWrapper---enterprise---dev---2MzFl "+n(86).locals.closeWrapper}},1367:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,"td.role-name{padding-left:20px}td>.control>label.checkbox{margin-bottom:0;padding:0}.shared-documentcontrols-dialogs-permissionsdialog-acl a.role.btn.disabled>.icon-check{display:inline-block!important}.table .perms-read,.table .perms-write{text-align:center;width:40px}.table .perms-read>.control>.checkbox:only-child,.table .perms-write>.control>.checkbox:only-child{display:inline-block;width:16px}.table .perms-read:last-child,.table .perms-write:last-child{padding-right:20px}.table .icon-check{color:#3c444d}",""])},1368:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.modal .timerange-picker-wrapper{float:left}.modal .timerange-picker-wrapper .shared-timerangepicker-dialog{width:640px}.modal .timerange-picker-wrapper .accordion .accordion-heading .accordion-toggle{border-left:none;border-right:none}.modal .timerange-picker-wrapper .accordion .accordion-body,.modal .timerange-picker-wrapper .accordion .accordion-group.active:last-child .accordion-body{border:none}.modal .timerange-picker-wrapper .accordion .accordion-group:last-child .accordion-toggle{border-bottom:none;border-radius:0}.modal .timerange-picker-wrapper .accordion .accordion-group:first-child .accordion-toggle{border-radius:0;border-top:none}.modal .vis-area:after,.modal .vis-area:before{content:"";display:table;line-height:0}.modal .vis-area:after{clear:both}.modal .slide-area{width:1090px}.modal .content-wrapper{float:left;width:450px}',""])},1369:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".schedule-sentence>.control-group>.controls>.schedule_daily,.schedule-sentence>.control-group>.controls>.schedule_hourly,.schedule-sentence>.control-group>.controls>.schedule_monthly,.schedule-sentence>.control-group>.controls>.schedule_weekly{margin:0 10px}.schedule-sentence>.control-group>.controls>.input-label{white-space:nowrap}",""])},137:function(e,t,n){e.exports=n(1583)},1370:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".alert-edit .modal-body-scrolling,.alert-save-as .modal-body-scrolling{padding-bottom:0}.alert-edit .content-wrapper,.alert-save-as .content-wrapper{width:800px}.alert-edit .time-label,.alert-save-as .time-label{margin-right:5px}.alert-edit .slide-area,.alert-save-as .slide-area{width:1440px}.alert-edit .help-block-timestamp,.alert-save-as .help-block-timestamp{left:auto;margin:auto!important;position:relative;top:auto;width:auto}.alert-edit .search-input .search-label,.alert-save-as .search-input .search-label{float:left;padding-bottom:5px;padding-top:5px;text-align:right;width:160px}.alert-edit .search-input .shared-searchbarinput,.alert-save-as .search-input .shared-searchbarinput{margin-left:180px;padding-bottom:10px}.alert-edit .alert-success-content-container,.alert-save-as .alert-success-content-container{margin-bottom:20px}.alert-edit .control-heading,.alert-save-as .control-heading{font-weight:700;padding-top:5px;text-align:right;width:160px}.custom_time .time-advanced>.control-label{max-width:none}",""])},1371:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".sendemail-options .email-include{width:240px}.sendemail-options .email-include>.shared-controls-syntheticcheckboxcontrol{display:inline-block;vertical-align:top;width:120px;word-break:break-word}.sendemail-options .email-include>.shared-controls-syntheticcheckboxcontrol.include-inline{max-width:62px;width:inherit}.sendemail-options .email-include>.shared-controls-syntheticselectcontrol.include-inline-format{height:20px;margin-top:2px;max-width:55px;vertical-align:top;white-space:normal;word-break:break-word}.sendemail-options .email-include>.shared-controls-syntheticcheckboxcontrol>label{overflow:visible}.sendemail-options textarea.messagearea{height:100px;max-width:575px;min-width:100%;resize:both}",""])},1372:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".risky-command-dialog{position:absolute;z-index:1051}.risky-command-dialog .body{position:relative;word-wrap:break-word;padding:0 0 0 4px}.risky-command-dialog .body ul{margin-top:8px}.risky-command-dialog .body>div:first-child{padding-bottom:8px}.risky-command-dialog .body a.learn-more-link{padding-left:5px}.risky-command-dialog .alert-warning{position:relative;word-wrap:break-word;padding:0 0 0 30px}.risky-command-dialog .icon-alert{font-size:156%;left:0;position:absolute}.risky-command-dialog pre{margin-top:10px}.risky-command-dialog .modal-body-scrolling{border-bottom:0;border-top:0}",""])},1373:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".splunk-viz-msg {\n overflow: hidden;\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.splunk-table .splunk-viz-msg {\n overflow: auto;\n position: static;\n}\n\n.splunk-message-container {\n display: flex;\n height: 100%;\n align-items: center;\n justify-content: center;\n}\n\n.splunk-message-container.compact {\n display: block;\n height: auto;\n padding: 0px 40px 10px 40px;\n min-height: 0;\n}\n",""])},1374:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".more-info .control-group{clear:both;display:block;width:330px}.more-info .control-label{width:90px}.more-info .controls{margin-left:100px}.more-info .help-block{margin-left:100px}.more-info .form-vertical .help-block,.more-info .help-block{position:static;width:auto}.more-info .controls.controls-join{margin-bottom:10px}",""])},1375:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".trigger-actions{padding-bottom:20px}.trigger-actions .add-action-btn{margin-bottom:10px}.trigger-actions .table{background-color:#f7f8fa}.trigger-actions .table-hover>tbody>tr.active-action:hover>td{background-color:#ebeeef!important}.trigger-actions .table-hover>tbody>tr.active-action.expanded:hover>td,.trigger-actions .table-hover>tbody>tr.more-info:hover>td{background-color:#fff!important}.trigger-actions .table-row-expanding{border-left:1px solid #e1e6eb;border-right:1px solid #e1e6eb}.trigger-actions .table-row-expanding td.expands{border-right:1px solid #e1e6eb}.trigger-actions .table-row-expanding td.expands:hover:not(.disabled){border-right:1px solid #e1e6eb!important}.trigger-actions .table-row-expanding .active-action td{border-bottom:1px solid #c3cbd4}.trigger-actions .table-row-expanding .active-action:nth-last-child(2) td{border-bottom:1px solid #e1e6eb}.trigger-actions .table-row-expanding .active-action.expanded td{background-color:#fff}.trigger-actions .table-row-expanding .active-action.expanded td:last-of-type,.trigger-actions .table-row-expanding .active-action.expanded td:nth-last-of-type(2){border-bottom:none}.trigger-actions .table-row-expanding .more-info{background-color:#fff}.trigger-actions .table-row-expanding .more-info td{border-bottom:1px solid #c3cbd4}.trigger-actions .table-row-expanding .more-info:last-child td{border-bottom:1px solid #e1e6eb}.trigger-actions .table-row-expanding td.expands{width:35px}.trigger-actions .table-row-expanding td.expands.disabled:hover{border-right-color:transparent!important}.trigger-actions .table-row-expanding td.expands.disabled a{cursor:default;opacity:.1}.trigger-actions .table-row-expanding .expandable td.action-title{cursor:pointer}.trigger-actions .alert-actions-control-group .active-action:first-child td{border-top:1px solid #e1e6eb}.trigger-actions .alert-actions-control-group .active-action td{line-height:24px}.trigger-actions .alert-actions-control-group .active-action td img{height:24px;padding:0 5px 0 0;width:24px}.trigger-actions .control-group>.controls>.input-xlarge{width:270px}.add-alert-action-dropdown li>a.unselected-action{min-height:25px;padding-left:34px}.add-alert-action-dropdown li>a.unselected-action>img{height:24px;left:5px;position:absolute;top:5px;width:24px}",""])},1376:function(e,t){e.exports='
        \n
        \n \n
        \n
        \n \n
        \n \n \n\n \n
        \n
        \x3c!-- /.control-group --\x3e\n\n
        \n \n
        \n \n \n\n \n
        \n
        \x3c!-- /.control-group --\x3e\n
        \x3c!-- /.control-group-container --\x3e\n\n
        \n \n
        \n'},1377:function(e,t){e.exports='
        \n
        \n \n
        \n
        \n\n \n
        \n
        \n
        \n \n
        \n <%- _("now").t() %>\n
        \n
        \n
        \n
        \n \n
        \n'},1378:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.shared-timerangepicker-dialog{border-radius:1px;width:650px}.shared-timerangepicker-dialog .accordion-group:first-child>.accordion-heading>.accordion-toggle{border-top-left-radius:1px;border-top-right-radius:1px}.shared-timerangepicker-dialog .accordion-group:last-child{margin-bottom:0}.shared-timerangepicker-dialog .accordion-group:last-child:not(.active)>.accordion-heading>.accordion-toggle,.shared-timerangepicker-dialog .accordion-group:last-child>.accordion-body{border-bottom-left-radius:1px;border-bottom-right-radius:1px}.shared-timerangepicker-dialog .presets-container{display:-webkit-box;display:-ms-flexbox;display:flex}.shared-timerangepicker-dialog .presets-container .presets-group{margin-right:20px}.shared-timerangepicker-dialog .presets-container .presets-group li{border-radius:3px;color:#6b7785;margin-left:-4px;overflow:hidden;padding:0 2px 0 24px;text-indent:-20px}.shared-timerangepicker-dialog .presets-container .presets-group li.section-heading-small{margin-left:-2px}.shared-timerangepicker-dialog .presets-container .presets-group li>a{border-radius:3px;padding:0 2px}.shared-timerangepicker-dialog .control-group-container{display:-webkit-box;display:-ms-flexbox;display:flex}.shared-timerangepicker-dialog .control-group-container .radio{padding-left:0}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]{font-size:16px;height:12px;margin:4px;opacity:.01}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label{position:relative}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label:after,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label:after,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label:before{border-radius:100%;content:"";display:inline-block;position:absolute}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label:before{background-color:#f7f8fa;border:1px solid #c3cbd4;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#5c6773;-webkit-filter:none;filter:none;height:16px;left:-24px;text-decoration:none;text-shadow:none;top:-2px;-webkit-transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;vertical-align:bottom;width:16px}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label:after,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label:after{background:transparent;height:8px;left:-20px;top:2px;vertical-align:bottom;width:8px}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label:hover:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label:hover:before{background-color:#ebeeef;border-color:#c3cbd4;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);color:#5c6773;-webkit-filter:none;filter:none;text-decoration:none;text-shadow:none;-webkit-transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label:active:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label:active:before{background-color:#e1e6eb;border-color:#c3cbd4;-webkit-box-shadow:none;box-shadow:none;color:#3c444d;-webkit-filter:none;filter:none;text-decoration:none;text-shadow:none;-webkit-transition:none;transition:none}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+.radio-label+input[type=radio],.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]+label+input[type=radio]{margin-left:20px}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:checked+.radio-label:after,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:checked+label:after{background:#3c444d}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover{-webkit-box-shadow:none;box-shadow:none}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+.radio-label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+.radio-label:hover:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+label:hover:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+.radio-label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+.radio-label:hover:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+label:hover:before{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0;text-decoration:none}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+.radio-label:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+.radio-label:hover:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+label:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus+label:hover:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+.radio-label:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+.radio-label:hover:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+label:before:active:not([disabled]),.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]:focus:hover+label:hover:before:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio][disabled]+.radio-label:before,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio][disabled]+label:before{background-color:#f7f8fa;border-color:#e1e6eb;-webkit-box-shadow:inset 0 -1px 0 #e1e6eb;box-shadow:inset 0 -1px 0 #e1e6eb;color:#6b7785;cursor:not-allowed;-webkit-filter:none;filter:none;text-decoration:none;text-shadow:none;-webkit-transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio][disabled]+.radio-label:after,.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio][disabled]+label:after{cursor:not-allowed}.shared-timerangepicker-dialog .control-group-container .radio>input[type=radio]{margin-right:6px}.shared-timerangepicker-dialog .col-1,.shared-timerangepicker-dialog .col-2{-webkit-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;width:50%}.shared-timerangepicker-dialog .col-1{padding-right:10px}.shared-timerangepicker-dialog .col-2{padding-left:10px}.shared-timerangepicker-dialog .input-append{display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:5px}.shared-timerangepicker-dialog .input-append input{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0}.shared-timerangepicker-dialog .input-append input:focus{position:relative}.shared-timerangepicker-dialog .input-append .btn-group .btn{border-bottom-left-radius:0;border-top-left-radius:0}.shared-timerangepicker-dialog input[type=text]{margin-bottom:2px}.shared-timerangepicker-dialog .timeinput .time-advanced input[type=text],.shared-timerangepicker-dialog .uneditable-input{width:100%}.shared-timerangepicker-dialog .timerangepicker-range-type{float:left;margin-right:20px}.shared-timerangepicker-dialog .date-range-container .time-between-dates{display:-webkit-box;display:-ms-flexbox;display:flex}.shared-timerangepicker-dialog .date-range-container .time-between-dates input{margin-bottom:0;width:100%}.shared-timerangepicker-dialog .date-range-container .time-between-dates .control-label{line-height:30px}.shared-timerangepicker-dialog .date-range-container .time-between-dates.only-latest>.latest_picker{padding-left:0}.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%}.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1 .timeinput,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2 .timeinput{display:block}.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1 .timeinput .time-container,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2 .timeinput .time-container{display:-webkit-box;display:-ms-flexbox;display:flex}.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1 .timeinput .time-container .time-hms,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1 .timeinput .time-container .time-mdy,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2 .timeinput .time-container .time-hms,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2 .timeinput .time-container .time-mdy{-webkit-box-flex:1;-ms-flex:1;flex:1}.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1 .timeinput .time-container .time-mdy,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2 .timeinput .time-container .time-mdy{margin-right:2px}.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-1 .timeinput .time-container .time-hms,.shared-timerangepicker-dialog .date-range-container .time-between-dates>.col-2 .timeinput .time-container .time-hms{margin-left:2px}.shared-timerangepicker-dialog .date-range-container .time-between-dates .help-block{line-height:30px;margin:0}.shared-timerangepicker-dialog .date-range-container .time-between-dates input[type=text]+.help-block,.shared-timerangepicker-dialog .date-range-container .time-between-dates span+.help-block{line-height:24px}.shared-timerangepicker-dialog .help-block-timestamp{background-color:#f2f4f5;border-radius:3px;line-height:1em;margin:3px 0 10px!important;min-height:1em;padding:3px}.shared-timerangepicker-dialog .apply-button-wrapper{clear:both;padding-bottom:20px;text-align:right}.shared-timerangepicker-dialog .apply-button-wrapper .btn-documentation{border-radius:3px;margin-right:10px;padding:2px 4px}.shared-timerangepicker-dialog .apply-button-wrapper:last-child{padding-bottom:0}.shared-timerangepicker-dialog .apply-button-wrapper .apply.btn{min-width:100px}',""])},1379:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".shared-documentcontrols-details-actions div.action-item{margin-left:10px}.shared-documentcontrols-details-actions img{float:left;height:18px;padding-right:5px;width:18px}.shared-documentcontrols-details-actions a.expand{padding-right:2px}",""])},138:function(e,t,n){var r=n(297),i=n(220);e.exports=Object.keys||function(e){return r(e,i)}},1380:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".table .headerRow[tabindex]:focus,.table-row-expanding>tbody>tr>td.expands a:focus,.table-row-expanding>tbody>tr>td.expands>i:focus,.table-row-expanding>tbody>tr>td.expands>span:focus,.table-row-expanding>tbody>tr>td.title>a:focus,.table-row-expanding>tbody>tr>td.title>span:focus,.table>tbody>tr.even>td:focus,.table>tbody>tr.odd>td:focus{-webkit-box-shadow:inset 0 0 1px 1px #e1e6eb,inset 0 0 0 3px #00a4fd;box-shadow:inset 0 0 1px 1px #e1e6eb,inset 0 0 0 3px #00a4fd}",""])},1381:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".pagination>ul .active>a:hover{background-color:transparent}.pagination>ul .active>a,.pagination>ul .active>a:hover{color:#3c444d}",""])},1382:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".view-alert-page{position:relative}.view-alert-page>.divider{clear:both}.view-alert-page .trigger-history{background-color:#f2f4f5;clear:both}.table-caption{height:36px}.table-caption-inner{padding:5px 12px 0}.table-caption-inner.affix-top{background-color:#f2f4f5;left:0;position:fixed;right:0;top:0;z-index:406}.section-description{overflow:hidden;text-overflow:ellipsis}.shared-alertcontrols-details>.list-dotted{display:inline-block;margin:10px 0 0;vertical-align:top;width:42%}.shared-alertcontrols-details>.list-dotted dd.alert-actions span{display:inline-block}.shared-alertcontrols-details>.list-dotted dd.alert-actions>a.edit-link{padding-left:5px;vertical-align:top}.alert-history>h3{color:#3c444d;line-height:1;margin:0 0 5px;padding:20px 20px 0}.alert-disabled,.alert-nofiredalerts{padding:60px 20px}.alerts{padding:30px 20px}.alert-info .icon-info-circle{color:#006d9c;font-size:200%;margin-right:.5em;vertical-align:middle}",""])},1383:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function a(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RecentlyViewedCollection=t.KnowledgeObject=void 0;const o=n(1384),a=i(n(825));var s;!function(e){e[e.Dashboard=1]="Dashboard",e[e.Dataset=2]="Dataset",e[e.Alert=3]="Alert",e[e.Report=4]="Report"}(s=t.KnowledgeObject||(t.KnowledgeObject={}));class l{constructor(e){this.collection=e,this.deleteItemsOlderThan30Days=(0,a.default)(()=>r(this,void 0,void 0,(function*(){const e=new Date;e.setDate(e.getDate()-30),yield this.collection.deleteItems({lastViewedTime:{$lt:e.getTime()}})})),6e4,{leading:!0})}listItems(e){return this.collection.listItems(e)}updateItem({type:e,id:t,app:n,name:i}){return r(this,void 0,void 0,(function*(){const r=yield this.listItems({limit:1,query:{$and:[{type:e},{id:t},{app:n}]}});let o;return r.length?(r[0].lastViewedTime=Date.now(),o=yield this.collection.updateItem(r[0]._key,r[0])):o=yield this.collection.addItem({type:e,id:t,app:n,name:i,lastViewedTime:Date.now()}),yield this.deleteItemsOlderThan30Days(),o}))}dashboardViewed({id:e,app:t,name:n}){return this.updateItem({id:e,app:t,name:n,type:s.Dashboard})}datasetViewed({id:e,app:t,name:n}){return this.updateItem({id:e,app:t,name:n,type:s.Dataset})}alertViewed({id:e,app:t,name:n}){return this.updateItem({id:e,app:t,name:n,type:s.Alert})}reportViewed({id:e,app:t,name:n}){return this.updateItem({id:e,app:t,name:n,type:s.Report})}}t.RecentlyViewedCollection=l;const c=new l(new o.ServerCollection("system","RecentlyViewedKO"));t.default=c},1384:function(e,t,n){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.ServerCollection=void 0;const r=n(51),i=n(127),o=n(22);t.ServerCollection=class{constructor(e,t){this.app=e,this.collectionName=t,this.fetchParameters=Object.assign(Object.assign({},i.defaultFetchInit),{headers:Object.assign(Object.assign({},i.defaultFetchInit.headers),{"Content-Type":"application/json"})})}baseURL(){return(0,r.createRESTURL)("storage/collections/data/"+encodeURIComponent(this.collectionName),{owner:o.username,app:this.app})}addItem(t){return e(this.baseURL(),Object.assign(Object.assign({},this.fetchParameters),{method:"POST",body:JSON.stringify(t)})).then((0,i.handleResponse)(200)).catch((0,i.handleError)(`failed to add item to KV-store collection "${this.collectionName}"`))}deleteCollection(){return e(""+this.baseURL(),Object.assign(Object.assign({},this.fetchParameters),{method:"DELETE"})).then(e=>{if(!e.ok)throw`failed to delete all items in KV-store collection "${this.collectionName}"`})}deleteItem(t){return e(`${this.baseURL()}/${encodeURIComponent(t)}`,Object.assign(Object.assign({},this.fetchParameters),{method:"DELETE"})).then(e=>{if(!e.ok)throw`failed to delete item in KV-store collection "${this.collectionName}"`})}deleteItems(t){const n=Object.assign(Object.assign({},this.fetchParameters),{method:"DELETE"}),r=new URLSearchParams({query:JSON.stringify(t)}),i=`${this.baseURL()}?${r}`;return e(i,n).then(e=>{if(!e.ok)throw`failed to delete items in KV-store collection "${this.collectionName}"`})}getItem(t){return e(`${this.baseURL()}/${encodeURIComponent(t)}`,this.fetchParameters).then((0,i.handleResponse)(200)).catch((0,i.handleError)(`failed to get item from KV-store collection "${this.collectionName}"`))}listItems({limit:t,skip:n,sort:r,query:o,fields:a}){const s=new URLSearchParams;t&&s.set("limit",""+t),n&&s.set("skip",""+n),r&&s.set("sort",r.join(",")),a&&s.set("fields",a.join(",")),o&&s.set("query",JSON.stringify(o));let l=""+this.baseURL();return Array.from(s).length&&(l+="?"+s),e(l,Object.assign({},this.fetchParameters)).then((0,i.handleResponse)(200)).catch((0,i.handleError)(`failed to list items in KV-store collection "${this.collectionName}"`))}updateItem(t,n){return e(`${this.baseURL()}/${encodeURIComponent(t)}`,Object.assign(Object.assign({},this.fetchParameters),{method:"POST",body:JSON.stringify(n)})).then((0,i.handleResponse)(200)).catch((0,i.handleError)(`failed to update item in KV-store collection "${this.collectionName}"`))}}}).call(this,n(1385))},1385:function(e,t,n){(function(t){(function(){!function(e){"use strict";if(!e.fetch){var t="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),i="FormData"in e,o="ArrayBuffer"in e;if(o)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],s=function(e){return e&&DataView.prototype.isPrototypeOf(e)},l=ArrayBuffer.isView||function(e){return e&&a.indexOf(Object.prototype.toString.call(e))>-1};f.prototype.append=function(e,t){e=d(e),t=p(t);var n=this.map[e];this.map[e]=n?n+","+t:t},f.prototype.delete=function(e){delete this.map[d(e)]},f.prototype.get=function(e){return e=d(e),this.has(e)?this.map[e]:null},f.prototype.has=function(e){return this.map.hasOwnProperty(d(e))},f.prototype.set=function(e,t){this.map[d(e)]=p(t)},f.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},f.prototype.keys=function(){var e=[];return this.forEach((function(t,n){e.push(n)})),h(e)},f.prototype.values=function(){var e=[];return this.forEach((function(t){e.push(t)})),h(e)},f.prototype.entries=function(){var e=[];return this.forEach((function(t,n){e.push([n,t])})),h(e)},n&&(f.prototype[Symbol.iterator]=f.prototype.entries);var c=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];A.prototype.clone=function(){return new A(this,{body:this._bodyInit})},y.call(A.prototype),y.call(_.prototype),_.prototype.clone=function(){return new _(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},_.error=function(){var e=new _(null,{status:0,statusText:""});return e.type="error",e};var u=[301,302,303,307,308];_.redirect=function(e,t){if(-1===u.indexOf(t))throw new RangeError("Invalid status code");return new _(null,{status:t,headers:{location:e}})},e.Headers=f,e.Request=A,e.Response=_,e.fetch=function(e,t){return new Promise((function(n,i){var o=new A(e,t),a=new XMLHttpRequest;a.onload=function(){var e,t,r={status:a.status,statusText:a.statusText,headers:(e=a.getAllResponseHeaders()||"",t=new f,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),r=n.shift().trim();if(r){var i=n.join(":").trim();t.append(r,i)}})),t)};r.url="responseURL"in a?a.responseURL:r.headers.get("X-Request-URL");var i="response"in a?a.response:a.responseText;n(new _(i,r))},a.onerror=function(){i(new TypeError("Network request failed"))},a.ontimeout=function(){i(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials?a.withCredentials=!0:"omit"===o.credentials&&(a.withCredentials=!1),"responseType"in a&&r&&(a.responseType="blob"),o.headers.forEach((function(e,t){a.setRequestHeader(t,e)})),a.send(void 0===o._bodyInit?null:o._bodyInit)}))},e.fetch.polyfill=!0}function d(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function p(e){return"string"!=typeof e&&(e=String(e)),e}function h(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return n&&(t[Symbol.iterator]=function(){return t}),t}function f(e){this.map={},e instanceof f?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function m(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function b(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function g(e){var t=new FileReader,n=b(t);return t.readAsArrayBuffer(e),n}function v(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,e)if("string"==typeof e)this._bodyText=e;else if(r&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(i&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(t&&URLSearchParams.prototype.isPrototypeOf(e))this._bodyText=e.toString();else if(o&&r&&s(e))this._bodyArrayBuffer=v(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!o||!ArrayBuffer.prototype.isPrototypeOf(e)&&!l(e))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=v(e)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):t&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=m(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?m(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(g)}),this.text=function(){var e,t,n,r=m(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,t=new FileReader,n=b(t),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),r=0;r-1?r:n),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(i)}function M(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}})),t}function _(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new f(t.headers),this.url=t.url||"",this._initBody(e)}}("undefined"!=typeof self?self:this),e.exports=t.fetch}).call(t)}).call(this,n(42))},1386:function(e,t){e.exports='\n
        \n

        <%= title %>

        \n\n
        <%= caption %>\n
        \n\n <%= _(\'Learn More\').t() %>\n
        \n'},1387:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.start .help-block{font-size:14px;margin-bottom:10px;margin-left:20px}.form .control-label{color:#3c444d}.statusSummary:after,.statusSummary:before{content:"";display:table;line-height:0}.statusSummary:after{clear:both}.statusSummary .single-value{-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;margin:0 0 20px;padding:20px;text-align:center;width:33%}.statusSummary .single-value .single-result{font-size:24px;font-weight:700}.statusSummary .double-value{float:left;width:50%}.statusSummary .double-value .after-label{margin-right:20px}.statusSummary .shared-flashmessages .alert .icon-alert{font-size:100%;left:0;position:relative;top:0}.editMenu{display:inline-block}.section-table{background-color:#fff}.section-table h3{color:#3c444d;font-size:16px;font-weight:400;line-height:1;margin:0;padding:40px 20px 10px}.tab-pane{background-color:#fff;min-height:300px;padding-top:10px}.tab-content{overflow:visible}.search-query-control{float:left;margin-bottom:0;margin-right:10px;position:relative}.search-query-control input{width:275px}.statusSummary .icon-check,.table .icon-check{color:#53a051;margin-right:.5em}.statusSummary .icon-alert,.table .icon-alert{color:#dc4e41;margin-right:.5em}.clustering-master-indexesgrid,.clustering-master-peergrid,.clustering-master-searchheadsgrid{clear:both;padding-top:10px}.dropdown-menu .list-dotted{margin:10px}.section-controls{padding-left:20px;padding-right:20px}.section-controls .bucket-details{margin-left:20px}.tooltip-link{padding:5px}.tooltip-inner{text-align:left;white-space:pre-wrap}.bucket-tooltip.tooltip-link{padding:0}.wide-form{line-height:20px;margin:20px auto 10px}.wide-form tr td:first-child{width:140px}.wide-form tr td:nth-child(2){width:240px}.wide-form .label{background:none;color:#000;float:right;font-size:12px;font-weight:400;margin-bottom:10px;margin-top:2px;padding-right:10px;text-align:right;text-shadow:none}.wide-form input[type=text]{display:block;width:95%}.wide-form .hint{display:block;line-height:13px;margin-bottom:10px;padding-top:4px}.hint{color:#6b7785;font-size:12px}.no-peers .single-value{width:100%}.section-header .btn-group{z-index:1}.section-table>.divider{border-bottom:1px solid #fff;border-top:1px solid #c3cbd4;margin:0}.clustering-searchhead-searchheadgrid .table{table-layout:auto}.clustering-searchhead-searchheadgrid .col-flex{word-wrap:break-word}.clustering-searchhead-searchheadgrid .col-slim{width:150px}.clustering-searchhead-searchheadgrid .col-searchable{width:200px}.clustering-searchhead-searchheadgrid .col-actions{width:210px}.clustering-searchhead-searchheadgrid .col-actions .actions-wrapper{min-width:210px}',""])},1388:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\t\n\t\n\n\n'},1389:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\t\n\t\t\n\t\t\n\t\t\n\t\n\n'},139:function(e,t){e.exports={}},1390:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n'},1391:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\n\t\n\t\n\t\n\n\n'},1392:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\n\n'},1393:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\t\n\n\n'},1394:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\t\n\t\n\n\n'},1395:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\n\n'},1396:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\n\t\n\n\n'},1397:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\n\n\n'},1398:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\n\n'},1399:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\t\n\t\n\n\n'},14:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var r,i,o=n(0),a=n(3),s=n.n(a),l={};Object(o.a)(l,{default:()=>c}),Object(o.c)(l,a);var c=null!=(i=null==(r=s.a)?void 0:r.default)?i:s.a},140:function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},1400:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\n\n\n'},1401:function(e,t){e.exports='\n\x3c!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\t\n\t\t\n\t\n\n\n'},1402:function(e,t){e.exports='
        \n
        <%= icon %>
        \n
        <%- name %>
        \n \n
        \n'},1403:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.alerts-table>.table{background-color:#fff;-webkit-box-shadow:0 1px 1px #e1e6eb;box-shadow:0 1px 1px #e1e6eb;-webkit-box-shadow:0;box-shadow:0;margin-bottom:20px}@supports (-ms-ime-align:auto){.alerts-table>.table{position:relative}.alerts-table>.table:before{background:transparent;-webkit-box-shadow:0 1px 1px #e1e6eb;box-shadow:0 1px 1px #e1e6eb;content:"";display:inline-block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){.alerts-table>.table{position:relative}.alerts-table>.table:before{background:transparent;-webkit-box-shadow:0 1px 1px #e1e6eb;box-shadow:0 1px 1px #e1e6eb;content:"";display:inline-block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}}.section-description,h2+p{margin-bottom:0;max-width:700px}.col-actions{width:240px}.col-app,.col-owner{text-overflow:ellipsis;white-space:nowrap;width:140px}.col-sharing,.col-status{width:70px}p.description{word-wrap:break-word}td.app,td.owner{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expanded td.app,.expanded td.owner{white-space:normal;word-break:break-all}.shared-alertcontrols-editmenu{display:inline-block;margin-left:20px;position:relative}.shared-alertcontrols-details>.list-dotted dd.alert-actions span{display:inline-block}.shared-alertcontrols-details>.list-dotted dd.alert-actions>a.edit-link{padding-left:5px;vertical-align:top}.alerts-tiles{color:#3c444d}.alerts-tiles-alerttilelist{padding:0 40px}.alerts-tiles-alerttile{display:inline-block;margin:6px;vertical-align:top}.alerts-tiles-alerttile .tile-shape{background-color:#3c444d;border-radius:2px;color:#fff;height:280px;position:relative;width:230px}.alerts-tiles-alerttile .tile-icon{left:0;position:absolute;right:0;text-align:center;top:120px}.alerts-tiles-alerttile .tile-name{font-size:14px;left:20px;max-height:80px;overflow:hidden;position:absolute;right:20px;text-align:center;top:40px}.alerts-tiles-alerttile .tile-actions{bottom:0;left:0;position:absolute;right:0;top:0}.alerts-tiles-alerttile .tile-actions .action-edit{position:absolute;right:10px;top:10px}.alerts-tiles-alerttile .tile-actions .action-edit .dropdown-toggle{color:#e1e6eb;text-decoration:none}.alerts-tiles-alerttile .tile-actions .action-edit .dropdown-toggle .caret{font-size:8px}.alerts-tiles-alerttile .tile-actions .action-edit .dropdown-toggle:hover{color:#fff}.alerts-tiles-alerttile .tile-actions .action-buttons{bottom:14px;position:absolute;right:10px}.alerts-tiles-alerttile .tile-actions .action-buttons .btn{background-color:#3c444d;border-color:#c3cbd4!important;-webkit-box-shadow:none;box-shadow:none;color:#e1e6eb;margin:3px;text-shadow:none}.alerts-tiles-alerttile .tile-actions .action-buttons .btn:hover{border-color:#fff!important;color:#fff}',""])},1404:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".search-input .search-label{float:left;padding-bottom:5px;padding-top:5px;text-align:right;width:160px}.search-input .shared-searchbarinput{margin-left:180px;padding-bottom:10px}.shared-documentcontrols-dialogs-editsearchdialog .control.shared-controls-textcontrol input{padding-right:6px}",""])},1405:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,"a.dropdown-toggle.searchable-dropdown{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;white-space:nowrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}a.dropdown-toggle.searchable-dropdown .caret,a.dropdown-toggle.searchable-dropdown .dropdown-label-container,a.dropdown-toggle.searchable-dropdown>i{display:inline-block;vertical-align:middle;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}a.dropdown-toggle.searchable-dropdown>i{margin-right:3px}a.dropdown-toggle.searchable-dropdown .dropdown-label-container{overflow:hidden;text-overflow:ellipsis;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.dropdown-menu-searchable .search-filter .search-query{margin:0}.dropdown-menu-searchable .search-filter .shared-controls-textcontrol{margin:4px}.dropdown-menu-searchable .info{margin:5px 4px;text-align:center}.dropdown-menu-searchable .menu-options li:first-child>a{border-top:none}",""])},1406:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".key-value-separator{float:left;padding-right:10px;padding-top:5px}",""])},1407:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".shared-reportcontrols-dialogs-summaryindexingdialog-addfieldssection{margin-left:20px}.shared-reportcontrols-dialogs-summaryindexingdialog-addfieldssection .field-label{float:left;text-align:right;width:140px}.shared-reportcontrols-dialogs-summaryindexingdialog-addfieldssection .fields-section{margin-left:160px}.shared-reportcontrols-dialogs-summaryindexingdialog-addfieldssection .fields-section .shared-reportcontrols-dialogs-summaryindexingdialog-newfieldrow{padding-bottom:10px}.shared-reportcontrols-dialogs-summaryindexingdialog-addfieldssection .fields-section .shared-reportcontrols-dialogs-summaryindexingdialog-newfieldrow .icon-x-circle{color:#999;cursor:pointer;font-size:16px;line-height:26px}",""])},1408:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".schedule-modal .custom-window>input{width:50px}.schedule-modal .custom-window>span.custom-window-text{padding-left:5px}.schedule-modal .content-wrapper{width:800px}.schedule-modal .time-label{margin-right:5px}.schedule-modal .slide-area{width:1440px}.schedule-info{padding-top:10px}.schedule-info>span{font-weight:700}.append-control{margin-top:30px}",""])},1409:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".shared-reportcontrols-dialogs-embeddialog-embed textarea{height:80px;width:90%;word-break:break-all}",""])},141:function(e,t,n){"use strict";t.decode=t.parse=n(631),t.encode=t.stringify=n(632)},1410:function(e,t){e.exports='
        \n
        <%= icon %>
        \n
        <%- name %>
        \n
        \n \t<% if (showGear) { %>\n \t \n <% } %>\n \n
        \n
        \n'},1411:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.reports-table>.table{background-color:#fff;-webkit-box-shadow:0 1px 1px #e1e6eb;box-shadow:0 1px 1px #e1e6eb;-webkit-box-shadow:0;box-shadow:0;margin-bottom:20px;width:auto}@supports (-ms-ime-align:auto){.reports-table>.table{position:relative}.reports-table>.table:before{background:transparent;-webkit-box-shadow:0 1px 1px #e1e6eb;box-shadow:0 1px 1px #e1e6eb;content:"";display:inline-block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}}@media screen and (-ms-high-contrast:active),screen and (-ms-high-contrast:none){.reports-table>.table{position:relative}.reports-table>.table:before{background:transparent;-webkit-box-shadow:0 1px 1px #e1e6eb;box-shadow:0 1px 1px #e1e6eb;content:"";display:inline-block;height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}}.reports-table>.table>tbody>tr>td.title>a{text-overflopw:ellipsis;max-width:calc(100vw - 800px);min-width:150px}.reports-table>.table>tbody>tr.expanded>td.title>a{white-space:unset;word-break:break-word}.section-description{margin-bottom:0;max-width:700px}.col-actions{width:240px}.actions-edit>a{float:left;width:50%}.actions-edit>div{display:inline-block;width:50%}.col-next-scheduled-time{width:190px}.col-app,.col-owner{text-overflow:ellipsis;white-space:nowrap;width:90px}.col-sharing{width:70px}.col-embedding{width:95px}p.description{word-wrap:break-word}td.app,td.owner{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expanded td.app,.expanded td.owner{white-space:normal;word-break:break-all}.timerange>.controls>.btn{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%}.shared-reportcontrols-details-schedule{word-wrap:break-word}.reports-tiles{color:#3c444d}.reports-tiles-reporttilelist{padding:0 40px}.reports-tiles-reporttile{display:inline-block;margin:6px;vertical-align:top}.reports-tiles-reporttile .tile-shape{background-color:#3c444d;border-radius:2px;color:#fff;height:280px;position:relative;width:230px}.reports-tiles-reporttile .tile-icon{left:0;position:absolute;right:0;text-align:center;top:120px}.reports-tiles-reporttile .tile-name{font-size:14px;left:20px;max-height:80px;overflow:hidden;position:absolute;right:20px;text-align:center;top:40px}.reports-tiles-reporttile .tile-actions{bottom:0;left:0;position:absolute;right:0;top:0}.reports-tiles-reporttile .tile-actions .action-edit{color:#e1e6eb;position:absolute;right:10px;text-decoration:none;top:10px}.reports-tiles-reporttile .tile-actions .action-edit .caret{font-size:8px}.reports-tiles-reporttile .tile-actions .action-edit:hover{color:#fff}.reports-tiles-reporttile .tile-actions .action-buttons{bottom:14px;position:absolute;right:10px}.reports-tiles-reporttile .tile-actions .action-buttons .btn{background-color:#3c444d;border-color:#c3cbd4!important;-webkit-box-shadow:none;box-shadow:none;color:#e1e6eb;margin:3px;text-shadow:none}.reports-tiles-reporttile .tile-actions .action-buttons .btn:hover{border-color:#fff!important;color:#fff}',""])},1412:function(e,t,n){var r;function i(e){function n(){if(n.enabled){var e=n,i=+new Date,o=i-(r||i);e.diff=o,e.prev=r,e.curr=i,r=i;for(var a=new Array(arguments.length),s=0;s0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var a=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"days":case"day":case"d":return a*o;case"hours":case"hour":case"hrs":case"hr":case"h":return a*i;case"minutes":case"minute":case"mins":case"min":case"m":return a*r;case"seconds":case"second":case"secs":case"sec":case"s":return a*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}(e);if("number"===l&&!1===isNaN(e))return t.long?a(s=e,o,"day")||a(s,i,"hour")||a(s,r,"minute")||a(s,n,"second")||s+" ms":function(e){if(e>=o)return Math.round(e/o)+"d";if(e>=i)return Math.round(e/i)+"h";if(e>=r)return Math.round(e/r)+"m";if(e>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},1414:function(e,t,n){var r=n(853),i=n(856),o=n(703),a=n(855);e.exports=function(e){return r(e)||i(e)||o(e)||a()},e.exports.__esModule=!0,e.exports.default=e.exports},1415:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".viz-controller>.action-bar{background:#fff;bottom:0;display:none;height:auto;left:0;padding-right:5px;padding-top:5px;position:absolute;right:0}.viz-controller>.facets-container{height:100%;position:relative;width:100%}.viz-controller.facets-mode-active .facets-container{overflow-y:auto}.facets-mode-active .action-bar{display:block;margin-right:18px}.facets-container>.viz-facet{float:left;padding:10px 5px 15px}.viz-panel>.facet-label{display:block;font-size:12px;font-weight:700;line-height:100%;margin-bottom:2px;margin-left:10px;margin-right:10px;overflow:hidden;position:relative;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap}.viz-panel.viz-facet-size-large .facet-label{font-size:15px}.viz-panel.viz-facet-size-large{padding-bottom:15px}",""])},1416:function(e,t,n){var r,i,o;n("shim/jquery"); /*! * jQuery UI Resizable 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */ !function(a){"use strict";i=[n("shim/jquery"),n(860),n(1417),n(861),n(121),n(425)],void 0===(o="function"==typeof(r=function(e){return e.widget("ui.resizable",e.ui.mouse,{version:"1.13.3",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseFloat(e)||0},_isNumber:function(e){return!isNaN(parseFloat(e))},_hasScroll:function(t,n){if("hidden"===e(t).css("overflow"))return!1;var r=n&&"left"===n?"scrollLeft":"scrollTop",i=!1;if(t[r]>0)return!0;try{t[r]=1,i=t[r]>0,t[r]=0}catch(e){}return i},_create:function(){var t,n=this.options,r=this;this._addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!n.aspectRatio,aspectRatio:n.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:n.helper||n.ghost||n.animate?n.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("
        ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),n.autoHide&&e(this.element).on("mouseenter",(function(){n.disabled||(r._removeClass("ui-resizable-autohide"),r._handles.show())})).on("mouseleave",(function(){n.disabled||r.resizing||(r._addClass("ui-resizable-autohide"),r._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();var t,n=function(t){e(t).removeData("resizable").removeData("ui-resizable").off(".resizable")};return this.elementIsWrapper&&(n(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_setOption:function(e,t){switch(this._super(e,t),e){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!t}},_setupHandles:function(){var t,n,r,i,o,a=this.options,s=this;if(this.handles=a.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this._addedHandles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),r=this.handles.split(","),this.handles={},n=0;n"),this._addClass(o,"ui-resizable-handle "+i),o.css({zIndex:a.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(o),this._addedHandles=this._addedHandles.add(o));this._renderAxis=function(t){var n,r,i,o;for(n in t=t||this.element,this.handles)this.handles[n].constructor===String?this.handles[n]=this.element.children(this.handles[n]).first().show():(this.handles[n].jquery||this.handles[n].nodeType)&&(this.handles[n]=e(this.handles[n]),this._on(this.handles[n],{mousedown:s._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(r=e(this.handles[n],this.element),o=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth(),i=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),t.css(i,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[n])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",(function(){s.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),s.axis=o&&o[1]?o[1]:"se")})),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var n,r,i=!1;for(n in this.handles)((r=e(this.handles[n])[0])===t.target||e.contains(r,t.target))&&(i=!0);return!this.options.disabled&&i},_mouseStart:function(t){var n,r,i,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),n=this._num(this.helper.css("left")),r=this._num(this.helper.css("top")),o.containment&&(n+=e(o.containment).scrollLeft()||0,r+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:n,top:r},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:n,top:r},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,i=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===i?this.axis+"-resize":i),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var n,r,i=this.originalMousePosition,o=this.axis,a=t.pageX-i.left||0,s=t.pageY-i.top||0,l=this._change[o];return this._updatePrevProperties(),!!l&&(n=l.apply(this,[t,a,s]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(n=this._updateRatio(n,t)),n=this._respectSize(n,t),this._updateCache(n),this._propagate("resize",t),r=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(r)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1)},_mouseStop:function(t){this.resizing=!1;var n,r,i,o,a,s,l,c=this.options;return this._helper&&(i=(r=(n=this._proportionallyResizeElements).length&&/textarea/i.test(n[0].nodeName))&&this._hasScroll(n[0],"left")?0:this.sizeDiff.height,o=r?0:this.sizeDiff.width,a={width:this.helper.width()-o,height:this.helper.height()-i},s=parseFloat(this.element.css("left"))+(this.position.left-this.originalPosition.left)||null,l=parseFloat(this.element.css("top"))+(this.position.top-this.originalPosition.top)||null,c.animate||this.element.css(e.extend(a,{top:l,left:s})),this.helper.height(this.size.height),this.helper.width(this.size.width),this._helper&&!c.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.helper.css(e),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px",this.helper.width(e.width)),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px",this.helper.height(e.height)),e},_updateVirtualBoundaries:function(e){var t,n,r,i,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||e)&&(t=o.minHeight*this.aspectRatio,r=o.minWidth/this.aspectRatio,n=o.maxHeight*this.aspectRatio,i=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),r>o.minHeight&&(o.minHeight=r),ne.width,a=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,s=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,c=/sw|nw|w/.test(n),u=/nw|ne|n/.test(n);return o&&(e.width=t.minWidth),a&&(e.height=t.minHeight),r&&(e.width=t.maxWidth),i&&(e.height=t.maxHeight),o&&c&&(e.left=s-t.minWidth),r&&c&&(e.left=s-t.maxWidth),a&&u&&(e.top=l-t.minHeight),i&&u&&(e.top=l-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,n=[],r=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],i=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];t<4;t++)n[t]=parseFloat(r[t])||0,n[t]+=parseFloat(i[t])||0;return{height:n[0]+n[2],width:n[1]+n[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,n=this.helper||this.element;t
        ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var n=this.originalSize;return{left:this.originalPosition.left+t,width:n.width-t}},n:function(e,t,n){var r=this.originalSize;return{top:this.originalPosition.top+n,height:r.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),"resize"!==t&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var n=e(this).resizable("instance"),r=n.options,i=n._proportionallyResizeElements,o=i.length&&/textarea/i.test(i[0].nodeName),a=o&&n._hasScroll(i[0],"left")?0:n.sizeDiff.height,s=o?0:n.sizeDiff.width,l={width:n.size.width-s,height:n.size.height-a},c=parseFloat(n.element.css("left"))+(n.position.left-n.originalPosition.left)||null,u=parseFloat(n.element.css("top"))+(n.position.top-n.originalPosition.top)||null;n.element.animate(e.extend(l,u&&c?{top:u,left:c}:{}),{duration:r.animateDuration,easing:r.animateEasing,step:function(){var r={width:parseFloat(n.element.css("width")),height:parseFloat(n.element.css("height")),top:parseFloat(n.element.css("top")),left:parseFloat(n.element.css("left"))};i&&i.length&&e(i[0]).css({width:r.width,height:r.height}),n._updateCache(r),n._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,n,r,i,o,a,s,l=e(this).resizable("instance"),c=l.options,u=l.element,d=c.containment,p=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;p&&(l.containerElement=e(p),/document/.test(d)||d===document?(l.containerOffset={left:0,top:0},l.containerPosition={left:0,top:0},l.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(p),n=[],e(["Top","Right","Left","Bottom"]).each((function(e,r){n[e]=l._num(t.css("padding"+r))})),l.containerOffset=t.offset(),l.containerPosition=t.position(),l.containerSize={height:t.innerHeight()-n[3],width:t.innerWidth()-n[1]},r=l.containerOffset,i=l.containerSize.height,o=l.containerSize.width,a=l._hasScroll(p,"left")?p.scrollWidth:o,s=l._hasScroll(p)?p.scrollHeight:i,l.parentData={element:p,left:r.left,top:r.top,width:a,height:s}))},resize:function(t){var n,r,i,o,a=e(this).resizable("instance"),s=a.options,l=a.containerOffset,c=a.position,u=a._aspectRatio||t.shiftKey,d={top:0,left:0},p=a.containerElement,h=!0;p[0]!==document&&/static/.test(p.css("position"))&&(d=l),c.left<(a._helper?l.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-l.left:a.position.left-d.left),u&&(a.size.height=a.size.width/a.aspectRatio,h=!1),a.position.left=s.helper?l.left:0),c.top<(a._helper?l.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-l.top:a.position.top),u&&(a.size.width=a.size.height*a.aspectRatio,h=!1),a.position.top=a._helper?l.top:0),i=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),i&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),n=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-d.left:a.offset.left-l.left)),r=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-d.top:a.offset.top-l.top)),n+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-n,u&&(a.size.height=a.size.width/a.aspectRatio,h=!1)),r+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-r,u&&(a.size.width=a.size.height*a.aspectRatio,h=!1)),h||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),n=t.options,r=t.containerOffset,i=t.containerPosition,o=t.containerElement,a=e(t.helper),s=a.offset(),l=a.outerWidth()-t.sizeDiff.width,c=a.outerHeight()-t.sizeDiff.height;t._helper&&!n.animate&&/relative/.test(o.css("position"))&&e(this).css({left:s.left-i.left-r.left,width:l,height:c}),t._helper&&!n.animate&&/static/.test(o.css("position"))&&e(this).css({left:s.left-i.left-r.left,width:l,height:c})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance").options;e(t.alsoResize).each((function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.css("width")),height:parseFloat(t.css("height")),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})}))},resize:function(t,n){var r=e(this).resizable("instance"),i=r.options,o=r.originalSize,a=r.originalPosition,s={height:r.size.height-o.height||0,width:r.size.width-o.width||0,top:r.position.top-a.top||0,left:r.position.left-a.left||0};e(i.alsoResize).each((function(){var t=e(this),r=e(this).data("ui-resizable-alsoresize"),i={},o=t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,(function(e,t){var n=(r[t]||0)+(s[t]||0);n&&n>=0&&(i[t]=n||null)})),t.css(i)}))},stop:function(){e(this).removeData("ui-resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),n=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:n.height,width:n.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==e.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,n=e(this).resizable("instance"),r=n.options,i=n.size,o=n.originalSize,a=n.originalPosition,s=n.axis,l="number"==typeof r.grid?[r.grid,r.grid]:r.grid,c=l[0]||1,u=l[1]||1,d=Math.round((i.width-o.width)/c)*c,p=Math.round((i.height-o.height)/u)*u,h=o.width+d,f=o.height+p,m=r.maxWidth&&r.maxWidthh,v=r.minHeight&&r.minHeight>f;r.grid=l,g&&(h+=c),v&&(f+=u),m&&(h-=c),b&&(f-=u),/^(se|s|e)$/.test(s)?(n.size.width=h,n.size.height=f):/^(ne)$/.test(s)?(n.size.width=h,n.size.height=f,n.position.top=a.top-p):/^(sw)$/.test(s)?(n.size.width=h,n.size.height=f,n.position.left=a.left-d):((f-u<=0||h-c<=0)&&(t=n._getPaddingPlusBorderDimensions(this)),f-u>0?(n.size.height=f,n.position.top=a.top-p):(f=u-t.height,n.size.height=f,n.position.top=a.top+o.height-f),h-c>0?(n.size.width=h,n.position.left=a.left-d):(h=c-t.width,n.size.width=h,n.position.left=a.left+o.width-h))}}),e.ui.resizable})?r.apply(t,i):r)||(e.exports=o)}()},1417:function(e,t,n){var r,i,o; /*! * jQuery UI Disable Selection 1.13.3 * https://jqueryui.com * * Copyright OpenJS Foundation and other contributors * Released under the MIT license. * https://jquery.org/license */!function(a){"use strict";i=[n("shim/jquery"),n(121)],void 0===(o="function"==typeof(r=function(e){return e.fn.extend({disableSelection:(t="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(t+".ui-disableSelection",(function(e){e.preventDefault()}))}),enableSelection:function(){return this.off(".ui-disableSelection")}});var t})?r.apply(t,i):r)||(e.exports=o)}()},1418:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,"/* */\n\n.splunk-paginator {\n user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n margin-bottom: 5px;\n padding-left: 15px;\n}\n.splunk-paginator .disabled,\n.splunk-paginator .selected {\n color: #999;\n cursor: default;\n}\n.splunk-paginator a {\n border: 1px solid transparent;\n border-radius: 3px;\n padding-left: 5px;\n padding-right: 5px;\n text-decoration: none;\n min-width: 20px;\n line-height: 20px;\n display: inline-block;\n text-align: center;\n}\n.splunk-paginator a.selected,\n.splunk-paginator a:hover {\n background: #eee;\n}\n.splunk-paginator span {\n padding-left: 5px;\n padding-right: 5px;\n}\n.splunk-paginator a.disabled:hover {\n background: none;\n}\n",""])},1419:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.snapUnits=t.timeUnits=void 0;var i=r(n(21)),o=n(3);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}const s={};s.s=s.sec=s.secs=s.second=s.seconds={abbr:"s",singular:(0,o._)("second"),plural:(0,o._)("seconds")},s.m=s.min=s.mins=s.minute=s.minutes={abbr:"m",singular:(0,o._)("minute"),plural:(0,o._)("minutes")},s.h=s.hr=s.hrs=s.hour=s.hours={abbr:"h",singular:(0,o._)("hour"),plural:(0,o._)("hours")},s.d=s.day=s.days={abbr:"d",singular:(0,o._)("day"),plural:(0,o._)("days")},s.w=s.week=s.weeks={abbr:"w",singular:(0,o._)("week"),plural:(0,o._)("weeks")},s.mon=s.month=s.months={abbr:"mon",singular:(0,o._)("month"),plural:(0,o._)("months")},s.q=s.qtr=s.qtrs=s.quarter=s.quarters={abbr:"q",singular:(0,o._)("quarter"),plural:(0,o._)("quarters")},s.y=s.yr=s.yrs=s.year=s.years={abbr:"y",singular:(0,o._)("year"),plural:(0,o._)("years")};const l=s;t.timeUnits=l;const c=function(e){for(var t=1;t{const{onChange:t,appearance:n,append:r,describedBy:i,disabled:m,earliest:b,inline:g,labelMaxChars:v,latest:y,prepend:A,presets:M}=e,_=(0,s.useRef)(null),[w,O]=(0,s.useState)(!1),x=e["aria-label"],z=(0,c.createRangeLabel)(b,y,{presets:M,maxChars:v}),C=Object.keys(o),S=s.default.createElement(u.default,(0,a.default)({appearance:n,disabled:m,label:z,append:r,prepend:A,inline:g,isMenu:!0,"aria-describedby":i,"data-test":"time-range-dropdown","data-test-earliest":b,"data-test-latest":y,ref:_},(0,h.default)(e),{"aria-label":x?x+", "+z:void 0,__self:void 0,__source:{fileName:f,lineNumber:104,columnNumber:9}}));return s.default.createElement(d.default,{inline:g,open:w,retainFocus:!0,toggle:S,closeReasons:C,onRequestClose:({reason:e})=>{"contentClick"!==e&&O(!1)},onRequestOpen:()=>{O(!0)},__self:void 0,__source:{fileName:f,lineNumber:123,columnNumber:9}},w&&s.default.createElement(p.default,(0,a.default)({onChange:(e,n)=>{O(!1),t(e,n),(()=>{const{current:e}=_;e&&e.focus()})()},style:{width:640}},(0,l.omit)(e,"appearance","disabled","prepend","append","describedBy","onChange","labelMaxChars","data-test","style","className"),{__self:void 0,__source:{fileName:f,lineNumber:133,columnNumber:17}})))};g.defaultProps={appearance:i.toggle,advancedInputTypes:p.possibleAdvancedInputTypes,disabled:!1,inline:!0,formInputTypes:p.possibleFormInputTypes,labelMaxChars:30,onChange:l.noop};var v=g;t.default=v},1422:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={};Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.default}});var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var s=i?Object.getOwnPropertyDescriptor(e,o):null;s&&(s.get||s.set)?Object.defineProperty(r,o,s):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1423));Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}));var o=n(1435);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}Object.keys(o).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===o[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return o[e]}}))}))},1423:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.enrichParse=L,t.default=t.convertToISO=t.findPanelType=t.possibleAdvancedInputTypes=t.possibleFormInputTypes=t.FormInputType=t.AdvancedInputType=void 0;var i=r(n(21)),o=r(n(39)),a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=A(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1)),s=n(7),l=r(n(87)),c=n(195),u=n(22),d=r(n(863)),p=r(n(1424)),h=r(n(1426)),f=r(n(1429)),m=r(n(1430)),b=r(n(1433)),g=r(n(1434)),v=r(n(431)),y="/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/Dialog.tsx";function A(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(A=function(e){return e?n:t})(e)}function M(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function _(e){for(var t=1;t{if((0,c.findPresetLabel)(i,t,r))return z.presets;const o=(0,c.parseTimeString)(t),a=o.modifiers,l=(0,c.parseTimeString)(r);if(o.isFullyParsed&&l.isFullyParsed&&1===a.length){if((0,s.includes)(n,x.relative)&&"realTime"!==o.type&&"realTime"!==l.type&&(!a[0].snap||a[0].unit===a[0].snap)){if((0,c.isLatestNow)(r))return z.relative;const e=l.modifiers[0];if(e&&!e.amount&&e.snap===a[0].unit)return z.relative}if((0,s.includes)(n,x.realTime)&&"realTime"===o.type&&!a[0].snap&&("rt"===r||"rtnow"===r))return z.realTime}if(!(0,c.isISO)(t)||""!==r&&"now"!==r)if(!(0,c.isISO)(r)||""!==t&&"0"!==t){if((0,c.isISO)(t)&&(0,c.isISO)(r)){if((0,s.includes)(n,x.date)&&(0,c.isWholeDay)(t)&&(0,c.isWholeDay)(r))return z.date;if((0,s.includes)(n,x.dateTime))return z.dateTime}else if((0,c.isEpoch)(t)&&(0,c.isEpoch)(r))return z.dateTime}else{if((0,s.includes)(n,x.date)&&(0,c.isWholeDay)(r))return z.date;if((0,s.includes)(n,x.dateTime))return z.dateTime}else{if((0,s.includes)(n,x.date)&&(0,c.isWholeDay)(t))return z.date;if((0,s.includes)(n,x.dateTime))return z.dateTime}return e.length?z.advanced:i.length?z.presets:z[n[0]]};t.findPanelType=T;const k=(e,t,n=!0)=>(0,c.isISO)(e)?e:n&&(0,c.isEarliestEmpty)(e)||!n&&(0,c.isLatestNow)(e)?"":t&&t.iso?t.iso:"";function L(e){if(!e)return;const t=e.iso&&(0,c.isISO)(e.iso)?(0,c.removeISOTimezone)(e.iso):void 0;return{error:e.error||t?e.error:new Error("The iso time could not be converted to a JavaScript Date."),iso:t,displayValue:t?(0,l.default)(t).locale(w).format("LLL"):void 0,time:e.time}}t.convertToISO=k;const E=e=>{const{onRequestParseEarliest:t,onRequestParseLatest:n,earliest:r,latest:i,momentTimeZone:u,advancedInputTypes:A,documentationURL:M,formInputTypes:C,onChange:S,presets:E,realTimeDisabled:P,style:R}=e,[D,N]=(0,a.useState)(T(e)),j=(0,a.useRef)(),B=(0,a.useRef)(),q=(0,a.useRef)();(0,a.useEffect)(()=>{j.current=u},[u]),(0,a.useEffect)(()=>{B.current=r},[r]),(0,a.useEffect)(()=>{q.current=i},[i]),j.current!==u&&l.default.tz.add(l.default.tz.pack(u)),(0,a.useEffect)(()=>{const e=["presets","date","dateTime"];((0,c.isEpoch)(r)||e.includes(D))&&t(r),((0,c.isEpoch)(i)||e.includes(D))&&n(i)},[t,n,r,i,D]),r!==B.current&&(0,c.isEpoch)(r)&&t(r),i!==q.current&&(0,c.isEpoch)(i)&&n(i);const I=(e,n)=>{if(n===D){const r=(0,c.removeRealTime)(e||"0");t(r,n)}},F=(e,t)=>{if(t===D){const r=(0,c.removeRealTime)(e||"now");n(r,t)}},W=u?u.name:"",H={earliest:r,latest:i,onChange:S},V=L(e.parseEarliest),U=L(e.parseLatest),Y={onRequestParseEarliest:I,onRequestParseLatest:F,parseEarliest:V,parseLatest:U},$={earliest:k(r,V,!0),latest:k(i,U,!1),onChange:S,locale:w},X=[];if(E&&E.length){let e;P&&(e=E.filter(e=>!e.earliest.includes("rt")&&!e.latest.includes("rt"))),X.push(a.default.createElement(m.default,(0,o.default)({panelId:"presets",key:"presets",presets:P?e:E,onRequestParseLatest:F,onRequestParseEarliest:I},H,{__self:void 0,__source:{fileName:y,lineNumber:405,columnNumber:13}})))}if((0,s.includes)(C,x.relative)&&X.push(a.default.createElement(g.default,(0,o.default)({open:"relative"===D,panelId:"relative",key:"relative"},H,Y,{__self:void 0,__source:{fileName:y,lineNumber:417,columnNumber:13}}))),!P&&(0,s.includes)(C,x.realTime)&&X.push(a.default.createElement(b.default,(0,o.default)({open:"realTime"===D,panelId:"realTime",key:"realTime"},H,Y,{__self:void 0,__source:{fileName:y,lineNumber:428,columnNumber:13}}))),(0,s.includes)(C,x.date)&&X.push(a.default.createElement(h.default,(0,o.default)({panelId:"date",key:"date",momentTimeZoneName:W},$,{__self:void 0,__source:{fileName:y,lineNumber:439,columnNumber:13}}))),(0,s.includes)(C,x.dateTime)&&X.push(a.default.createElement(f.default,(0,o.default)({panelId:"dateTime",key:"dateTime",momentTimeZoneName:W},$,{__self:void 0,__source:{fileName:y,lineNumber:444,columnNumber:13}}))),A.length){const e=P?A.filter(e=>e!==O.realTime):A;X.push(a.default.createElement(p.default,(0,o.default)({open:"advanced"===D,panelId:"advanced",key:"advanced",inputTypes:e,documentationURL:M,momentTimeZoneName:W},H,Y,{__self:void 0,__source:{fileName:y,lineNumber:457,columnNumber:13}})))}return a.default.createElement(d.default,(0,o.default)({openPanelId:D,onChange:(e,{panelId:t})=>{N(z[t])},"data-test":"time-range-dialog","data-test-earliest":r,"data-test-latest":i},(0,v.default)(e),{style:_({minWidth:820},R),__self:void 0,__source:{fileName:y,lineNumber:471,columnNumber:9}}),X)};E.defaultProps={advancedInputTypes:S,formInputTypes:C,placeholder:"Select...",onChange:s.noop,onRequestParseEarliest:s.noop,onRequestParseLatest:s.noop};var P=E;t.default=P},1424:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(39)),o=r(n(153)),a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=M(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1)),s=n(7),l=n(3),c=n(96),u=r(n(87)),d=n(195),p=r(n(53)),h=r(n(74)),f=r(n(107)),m=r(n(128)),b=r(n(711)),g=r(n(276)),v=n(346);const y=["earliest","latest","onRequestParseEarliest","onRequestParseLatest","onChange","documentationURL","parseEarliest","parseLatest","momentTimeZoneName","inputTypes","open"];var A="/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/Advanced.tsx";function M(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(M=function(e){return e?n:t})(e)}const _=e=>{let{earliest:t,latest:n,onRequestParseEarliest:r,onRequestParseLatest:M,onChange:w,documentationURL:O,parseEarliest:x,parseLatest:z,momentTimeZoneName:C,inputTypes:S,open:T}=e,k=(0,o.default)(e,y);const{panelId:L}=k,[E,P]=(0,a.useState)(t),[R,D]=(0,a.useState)(n),[N,j]=(0,a.useState)(null),B=(0,a.useRef)(),q=(0,a.useRef)(),I=(0,a.useRef)();T&&!I.current&&(r(t.trim()?t:"0",L),M(n.trim()?n:"now",L)),(0,a.useEffect)(()=>{B.current=t,q.current=n,I.current=T}),B.current&&t!==B.current&&T&&!I.current&&r(t,L),q.current&&n!==q.current&&T&&M(n,L),T&&!I.current&&(E!==t&&(0,d.isValidTime)(E)?r(E,L):r(t,L),R!==n&&(0,d.isValidTime)(R)?M(R,L):M(n,L));const F=(0,a.useMemo)(()=>(0,s.debounce)((e,{value:n})=>{P(e=>{const i=n.trim(),o=(0,d.isValidTime)(i);return e.trim()!==i&&o?r(i||"0",L):o||r(t,L),n})}),[r,t,L]),W=(0,a.useMemo)(()=>(0,s.debounce)((e,{value:t})=>{D(e=>{const r=t.trim(),i=(0,d.isValidTime)(r);return e.trim()!==r&&i?M(r||"now",L):i||M(n,L),t})}),[M,n,L]),H=e=>{let t="";const n=(0,d.parseTimeString)(E),r=(0,d.parseTimeString)(R),i=["iso","epoch"];!n.isFullyParsed&&E||u.default.tz(x.iso,C).valueOf()>u.default.tz(C).valueOf()?t=(0,l._)("The earliest time is invalid."):!r.isFullyParsed&&R?t=(0,l._)("The latest time is invalid."):E&&E===R?t=(0,l._)("You cannot have equivalent times."):((0,s.includes)(S,"relative")||"realTime"===n.type||(0,s.includes)(i,r.type))&&((0,s.includes)(S,"relative")||"realTime"===r.type||"epoch"===r.type||"iso"===r.type)?(0,s.includes)(S,"realTime")||"realTime"!==r.type&&"realTime"!==n.type?"realTime"!==r.type&&"realTime"!==n.type||r.type===n.type?(0,s.includes)(S,"dateTime")||!(0,s.includes)(i,r.type)&&!(0,s.includes)(i,n.type)?!(0,s.includes)(S,"allTime")&&(0,d.isEarliestEmpty)(E)&&(0,d.isLatestNow)(R)?t=(0,l._)("All-time searches are not supported."):x.error?t=(0,l._)("Earliest could not be validated."):z.error?t=(0,l._)("Latest could not be validated."):u.default.tz(x.iso,C).valueOf()>=u.default.tz(z.iso,C).valueOf()&&(t=(0,l._)("Earliest must be before latest.")):t=(0,l._)("Epoch and ISO times are not supported."):t=(0,l._)("You must set a rt value for both earliest and latest time."):t=(0,l._)("Real-time searches are not supported."):t=(0,l._)("Relative searches are not supported."),j(t),!t&&w&&w(e,{earliest:E,latest:R})},V=e=>{"enter"===(0,c.keycode)(e)&&H(e)},U=x&&_.parseIsValid(E,x.time,"0"),Y=z&&_.parseIsValid(R,z.time,"now"),$=!!((0,d.isValidTime)(E)&&x&&null===x.error&&(0,d.isValidTime)(R)&&z&&null===z.error);return a.default.createElement(g.default,(0,i.default)({title:(0,l._)("Advanced")},k,{__self:void 0,__source:{fileName:A,lineNumber:219,columnNumber:9}}),N&&a.default.createElement(f.default,{type:"error","data-test":"error-message",style:{margin:"0 20px"},__self:void 0,__source:{fileName:A,lineNumber:221,columnNumber:17}},N),a.default.createElement(v.StyledCGWrapper,{__self:void 0,__source:{fileName:A,lineNumber:225,columnNumber:13}},a.default.createElement(v.FlexControlGroup,{controlsLayout:"none",label:(0,l._)("Earliest:"),labelPosition:"top",__self:void 0,__source:{fileName:A,lineNumber:226,columnNumber:17}},a.default.createElement(m.default,{value:E,"data-test":"earliest",onChange:F,onKeyDown:$?V:void 0,__self:void 0,__source:{fileName:A,lineNumber:227,columnNumber:21}}),a.default.createElement(b.default,{"data-test":"earliest-absolute-value",error:U?x.error:new Error("invalid"),displayValue:U?x.displayValue:void 0,__self:void 0,__source:{fileName:A,lineNumber:233,columnNumber:21}})),a.default.createElement(v.FlexControlGroup,{controlsLayout:"none",label:(0,l._)("Latest:"),labelPosition:"top",__self:void 0,__source:{fileName:A,lineNumber:239,columnNumber:17}},a.default.createElement(m.default,{value:R,"data-test":"latest",onChange:W,onKeyDown:$?V:void 0,__self:void 0,__source:{fileName:A,lineNumber:240,columnNumber:21}}),a.default.createElement(b.default,{"data-test":"latest-absolute-value",error:Y?z.error:new Error("invalid"),displayValue:Y?z.displayValue:void 0,__self:void 0,__source:{fileName:A,lineNumber:246,columnNumber:21}}))),a.default.createElement(v.StyledApplyContainer,{__self:void 0,__source:{fileName:A,lineNumber:253,columnNumber:13}},!!O&&a.default.createElement(h.default,{to:O,style:{marginRight:20},openInNewContext:!0,__self:void 0,__source:{fileName:A,lineNumber:255,columnNumber:21}},(0,l._)("Documentation")),a.default.createElement(p.default,{disabled:!$,label:(0,l._)("Apply"),onClick:H,"data-test":"apply",__self:void 0,__source:{fileName:A,lineNumber:259,columnNumber:17}})))};_.defaultProps={open:!1,onChange:s.noop,onRequestParseEarliest:s.noop,onRequestParseLatest:s.noop},_.parseIsValid=(e,t,n)=>{const r=e.trim()||n;return(0,d.removeRealTime)(r)===t.trim()};var w=_;t.default=w},1425:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.Styled=void 0;var i,o=r(n(154)),a=r(n(13)),s=n(17);const l=a.default.div(i||(i=(0,o.default)(["\n min-height: ",";\n min-width: 100px;\n border-radius: ",";\n background-color: ",";\n font-size: ",";\n margin-top: 5px;\n padding: 0 ",";\n color: ",";\n"])),s.variables.lineHeight,s.variables.borderRadius,(0,s.pick)({enterprise:{light:s.variables.gray96,dark:s.variables.gray22},prisma:{light:s.variables.neutral100,dark:s.variables.neutral100}}),s.variables.fontSizeSmall,s.variables.spacingXSmall,s.variables.textGray);t.Styled=l},1426:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(39)),o=r(n(153)),a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=M(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1)),s=n(3),l=n(96),c=r(n(87)),u=n(195),d=r(n(53)),p=r(n(129)),h=r(n(864)),f=r(n(107)),m=r(n(159)),b=r(n(867)),g=n(346),v=r(n(276));const y=["earliest","latest","locale","momentTimeZoneName","onChange"];var A="/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/DateRange.tsx";function M(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(M=function(e){return e?n:t})(e)}const _=(e,t)=>{let n;return n=t?e?c.default.tz(e,t):c.default.unix(0):e?(0,c.default)(e):c.default.unix(0),n.format(h.default.momentFormat)},w=(e,t,n)=>{let r;return r=t?e?c.default.tz(e,t):c.default.tz(void 0,t):e?(0,c.default)(e):(0,c.default)(void 0),n&&"between"===n&&e&&(0,u.isWholeDay)(e)&&(r=r.subtract({days:1})),r.format(h.default.momentFormat)},O=e=>{let{earliest:t,latest:n,locale:r,momentTimeZoneName:M,onChange:O}=e,x=(0,o.default)(e,y);const z=((e,t)=>!e||t&&"now"!==t?!t||e&&"0"!==e?"between":"before":"since")(t,n),C=_(t,M),S=w(n,M,z),[T,k]=(0,a.useState)(C),[L,E]=(0,a.useState)(S),[P,R]=(0,a.useState)(),[D,N]=(0,a.useState)(z),j=(0,a.useRef)(),B=(0,a.useRef)();(0,a.useEffect)(()=>{j.current=t,B.current=n},[t,n]),j.current!==t&&T!==C&&k(C),B.current!==n&&L!==S&&E(S),j.current===t&&B.current===n||D===z||N(z);const q=(e,{value:t,name:n})=>{"earliest"===n?k(t):E(t)},I=(e,t,n)=>{const r="between"===D?c.default.tz(n,M).add({days:1}).format(h.default.momentFormat):L;let i="";"between"===D&&c.default.tz(t,M).valueOf()>=c.default.tz(r,M).valueOf()&&(i=(0,s._)("Earliest must be before latest.")),R(i),!i&&O&&O(e,{earliest:"before"===D?"0":(0,u.getISOWithTimeZone)(t+"T00:00:00.000",M),latest:"since"===D?"now":(0,u.getISOWithTimeZone)(r+"T00:00:00.000",M)})},F=e=>{if("enter"===(0,l.keycode)(e)){const t=e.target,{name:n,value:r}=t;I(e,"earliest"===n?_(r):T,"latest"===n?w(r):L)}},W={flex:1};return a.default.createElement(v.default,(0,i.default)({title:(0,s._)("Date Range")},x,{__self:void 0,__source:{fileName:A,lineNumber:181,columnNumber:9}}),P&&a.default.createElement(f.default,{type:"error","data-test":"error-message",style:{margin:"0 20px"},__self:void 0,__source:{fileName:A,lineNumber:183,columnNumber:17}},P),a.default.createElement(g.StyledCGWrapper,{__self:void 0,__source:{fileName:A,lineNumber:187,columnNumber:13}},a.default.createElement(p.default,{controlsLayout:"none",label:"",labelPosition:"top",style:{flex:"0 1 auto",marginRight:10,marginTop:0},__self:void 0,__source:{fileName:A,lineNumber:188,columnNumber:17}},a.default.createElement(m.default,{value:D,"data-test":"range-type",onChange:(e,{value:t})=>{N(t)},__self:void 0,__source:{fileName:A,lineNumber:189,columnNumber:21}},a.default.createElement(m.default.Option,{label:(0,s._)("Between"),value:"between",__self:void 0,__source:{fileName:A,lineNumber:190,columnNumber:25}}),a.default.createElement(m.default.Option,{label:(0,s._)("Before"),value:"before",__self:void 0,__source:{fileName:A,lineNumber:191,columnNumber:25}}),a.default.createElement(m.default.Option,{label:(0,s._)("Since"),value:"since",__self:void 0,__source:{fileName:A,lineNumber:192,columnNumber:25}}))),a.default.createElement(p.default,{controlsLayout:"none",label:"",labelPosition:"top",help:"00:00:00",style:W,__self:void 0,__source:{fileName:A,lineNumber:195,columnNumber:17}},a.default.createElement(h.default,{name:"before"!==D?"earliest":"latest",value:"before"!==D?T:L,onChange:q,onKeyDown:F,inline:!1,locale:r,style:W,"data-test":"before"!==D?"earliest-date":"latest-date",__self:void 0,__source:{fileName:A,lineNumber:202,columnNumber:21}})),"before"!==D&&a.default.createElement(p.default,{controlsLayout:"none",label:"",labelPosition:"top",__self:void 0,__source:{fileName:A,lineNumber:214,columnNumber:21}},a.default.createElement(b.default,{style:{marginLeft:"between"===D?0:10,paddingLeft:7,paddingRight:7},__self:void 0,__source:{fileName:A,lineNumber:215,columnNumber:25}},"between"===D?(0,s._)("and"):(0,s._)("until now"))),"between"===D&&a.default.createElement(p.default,{controlsLayout:"none",label:"",labelPosition:"top",help:"24:00:00",style:W,__self:void 0,__source:{fileName:A,lineNumber:228,columnNumber:21}},a.default.createElement(h.default,{name:"latest",value:L,onChange:q,inline:!1,locale:r,onKeyDown:F,"data-test":"latest-date",__self:void 0,__source:{fileName:A,lineNumber:235,columnNumber:25}}))),a.default.createElement(g.StyledApplyContainer,{__self:void 0,__source:{fileName:A,lineNumber:247,columnNumber:13}},a.default.createElement(d.default,{label:(0,s._)("Apply"),"data-test":"apply",onClick:e=>{I(e,T,L)},__self:void 0,__source:{fileName:A,lineNumber:248,columnNumber:17}})))};O.defaultProps={placeholder:"Select..."};var x=O;t.default=x},1427:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=174)}({0:function(e,t){e.exports=n(17)},1:function(e,t){e.exports=n(12)},11:function(e,t,n){"use strict";function r(e,t){e&&("function"==typeof e?e(t):e.current=t)}n.d(t,"a",(function(){return r}))},14:function(e,t){e.exports=n(166)},17:function(e,t){e.exports=n(53)},174:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return Se})),n.d(t,"calendarActiveSelector",(function(){return Oe}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(9),l=n.n(s),c=n(5),u=n.n(c),d=n(20),p=n.n(d),h=n(8),f=n(77),m=n.n(f),b=n(0),g=n(7),v=n(14),y=n.n(v),A=n(3),M=n.n(A),_=M.a.div.withConfig({displayName:"DayStyles__StyledValue",componentId:"sc-1nryhyt-0"})(["left:0;line-height:",";position:absolute;top:0;width:100%;"],Object(b.pick)({enterprise:"2em",prisma:"36px "})),w=M.a.div.withConfig({displayName:"DayStyles__StyledInner",componentId:"sc-1nryhyt-1"})(["border:",";border-radius:",";color:",";height:",";position:relative;text-align:center;width:",";"],Object(b.pick)({enterprise:"1px solid transparent",prisma:"none"}),Object(b.pick)({enterprise:b.variables.borderRadius,prisma:"50%"}),Object(b.pick)({enterprise:{light:b.variables.gray45,dark:b.variables.gray98},prisma:b.variables.contentColorActive}),Object(b.pick)({enterprise:"2em",prisma:"36px "}),Object(b.pick)({enterprise:"calc(2em - 2px)",prisma:"36px"})),O=M.a.td.withConfig({displayName:"DayStyles__StyledCell",componentId:"sc-1nryhyt-2"})(["",";cursor:pointer;",";",";"],b.mixins.reset("table-cell"),Object(b.pickVariant)("$today",{true:{enterprise:Object(A.css)(["& > ","{background-color:",";}&:focus{& > ","{box-shadow:",";}}"],w,Object(b.pick)({light:b.variables.gray92,dark:b.variables.gray45}),w,b.variables.focusShadow),prisma:Object(A.css)(["& > ","{box-shadow:inset 0 0 0 1px ",";}&:focus{& > ","{box-shadow:inset 0 0 0 1px ",",",";}}"],w,b.variables.interactiveColorBorder,w,b.variables.interactiveColorBorder,b.variables.focusShadow)},false:Object(A.css)(["&:focus{& > ","{box-shadow:",";}}"],w,b.variables.focusShadow)}),Object(b.pickVariant)("$selected",{true:Object(b.pick)({enterprise:Object(A.css)(["& > ","{border-color:",";}"],w,b.variables.linkColor),prisma:Object(A.css)(["& > ","{background-color:",";font-weight:",";}"],w,b.variables.interactiveColorOverlaySelected,b.variables.fontWeightBold)}),false:Object(b.pick)({enterprise:Object(A.css)(["&:hover{& > ","{background-color:",";color:",";}}"],w,b.variables.backgroundColorHover,b.variables.linkColor),prisma:Object(A.css)(["&:hover{& > ","{background-color:",";}}"],w,b.variables.interactiveColorOverlayHover)})}));function x(){return(x=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var C={active:a.a.bool,locale:a.a.string,onClick:a.a.func,onKeydown:a.a.func,selected:a.a.bool,today:a.a.bool,value:a.a.string};function S(e){var t=e.active,n=void 0!==t&&t,o=e.locale,a=void 0===o?"en_US":o,s=e.onClick,l=e.onKeyDown,c=e.selected,u=void 0!==c&&c,d=e.today,h=void 0!==d&&d,f=e.value,m=z(e,["active","locale","onClick","onKeyDown","selected","today","value"]),b=Object(r.useCallback)((function(e){e.preventDefault(),null==s||s(e,{value:f})}),[s,f]),g=Object(r.useCallback)((function(e){e.preventDefault(),null==l||l(e,{value:f})}),[l,f]),v=f&&p()(f,"YYYY-MM-DD",a).format("D");return i.a.createElement(O,x({tabIndex:n?0:-1,"aria-selected":u,"data-test-day":v,"data-test":"day-of-month","data-active-day":n,"data-is-today":h,onClick:b,onKeyDown:g,$today:h,$selected:u},m),i.a.createElement(w,null,i.a.createElement(_,null,v)))}S.propTypes=C;var T=S,k=M.a.table.withConfig({displayName:"DateTableStyles__Styled",componentId:"sc-1lbrjq0-0"})(["",";table-layout:fixed;border-spacing:",";width:",";margin:",";"],b.mixins.reset("table"),Object(b.pick)({enterprise:"3px",prisma:b.variables.spacingSmall}),Object(b.pick)({enterprise:"100%",prisma:"calc(100% + 16px)"}),Object(b.pick)({enterprise:"0",prisma:"-8px"})),L=M.a.th.withConfig({displayName:"DateTableStyles__StyledTableHeader",componentId:"sc-1lbrjq0-1"})(["",";text-align:center;padding-bottom:",";color:",";font-size:",";"],b.mixins.reset("table-cell"),Object(b.pick)({enterprise:"2px",prisma:b.variables.spacingXSmall}),b.variables.contentColorMuted,Object(b.pick)({enterprise:b.variables.fontSizeSmall,prisma:b.variables.fontSize}));function E(){return(E=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var R={displayValue:a.a.string.isRequired,highlightToday:a.a.bool,labelledBy:a.a.string,locale:a.a.string,onChange:a.a.func,onInternalChange:a.a.func,selectedValue:a.a.string.isRequired,todayValue:a.a.string};function D(e){return m()(e,(function(e){return i.a.createElement("td",{key:"".concat(e)})}))}function N(e){var t=e.displayValue,n=e.highlightToday,r=void 0!==n&&n,o=e.labelledBy,a=e.locale,s=void 0===a?"en_US":a,l=e.onChange,c=e.onInternalChange,u=e.selectedValue,d=e.todayValue,h=P(e,["displayValue","highlightToday","labelledBy","locale","onChange","onInternalChange","selectedValue","todayValue"]),f="prisma"===Object(b.useSplunkTheme)().family?"dd":"ddd",v=p()(t,"YYYY-MM-DD",s),A=p()(u,"YYYY-MM-DD",s),M=p()(v).startOf("month"),_=p()(v).endOf("month").startOf("day"),w=D(M.format("e")).concat(function(e){for(var t=e.displayValue,n=e.endDate,r=e.highlightToday,o=e.locale,a=e.onChange,s=e.onKeyDown,l=e.selectedDate,c=e.selectedValue,u=e.startDate,d=e.todayValue,h=p()(u).locale(o).startOf("month"),f=[];h.isSameOrBefore(n);){var m=h.format("YYYY-MM-DD"),b=m===d,g=m===c,v=m===t;f.push(i.a.createElement(T,{key:m,locale:o,onClick:a,onKeyDown:s,active:l?v:b,today:r&&b,value:m,selected:g})),h.add(1,"day")}return f}({displayValue:t,endDate:_,highlightToday:r,locale:s,onChange:l,onKeyDown:function(e,t){switch(Object(g.keycode)(e.nativeEvent)){case"enter":case"space":!function(e,t){e.preventDefault(),null==l||l(e,t)}(e,t);break;case"up":!function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(-1,"w").format("YYYY-MM-DD")})}(e,t);break;case"down":!function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(1,"w").format("YYYY-MM-DD")})}(e,t);break;case"left":!function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(-1,"d").format("YYYY-MM-DD")})}(e,t);break;case"right":!function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(1,"d").format("YYYY-MM-DD")})}(e,t);break;case"page up":e.shiftKey?function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(-1,"y").format("YYYY-MM-DD")})}(e,t):function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(-1,"M").format("YYYY-MM-DD")})}(e,t);break;case"page down":e.shiftKey?function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(1,"y").format("YYYY-MM-DD")})}(e,t):function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").add(1,"M").format("YYYY-MM-DD")})}(e,t);break;case"home":!function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").startOf("week").format("YYYY-MM-DD")})}(e,t);break;case"end":!function(e,t){var n=t.value;e.preventDefault(),null==c||c(e,{value:p()(n,"YYYY-MM-DD").endOf("week").format("YYYY-MM-DD")})}(e,t)}},selectedDate:A,selectedValue:u,startDate:M,todayValue:d})).concat(D(6-_.format("e")));return i.a.createElement(k,E({role:"grid","aria-labelledby":o},h),function(e,t){return i.a.createElement("thead",null,i.a.createElement("tr",null,m()(7,(function(n){var r=p()().locale(e).weekday(n).format(t),o=p()().locale(e).weekday(n).format("dddd");return i.a.createElement(L,{key:r},i.a.createElement(y.a,null,o),i.a.createElement("span",{"aria-hidden":!0},r))}))))}(s,f),i.a.createElement("tbody",null,function(e){return e.reduce((function(e,t,n){return e[Math.floor(n/7)].push(t),e}),m()(7,(function(){return[]}))).map((function(e,t){return i.a.createElement("tr",{key:"$week-".concat(t)},e)}))}(w)))}N.propTypes=R;var j=N,B=n(83),q=n.n(B),I=n(43),F=n.n(I),W=n(64),H=n.n(W),V=n(35),U=n.n(V),Y=n(17),$=n.n(Y),X=n(4),G=M.a.div.withConfig({displayName:"MonthHeaderStyles__StyledBox",componentId:"sc-18bmbh7-0"})(["display:flex;position:relative;line-height:",";padding:0 2px;margin-bottom:10px;"],b.variables.inputHeight),Q=M.a.span.withConfig({displayName:"MonthHeaderStyles__StyledHeading",componentId:"sc-18bmbh7-1"})(["display:block;text-align:center;text-transform:",";flex:1 0 1px;",";"],Object(b.pick)({enterprise:"capitalize",prisma:"uppercase"}),Object(b.pick)({prisma:Object(A.css)(["font-size:20px;font-weight:bold;color:",";"],b.variables.contentColorActive)}));function K(e){return(K="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Z(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function J(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ee(e,t){for(var n=0;n1&&void 0!==arguments[1]&&arguments[1],n=e.toLowerCase().replace("_","-");return t?a.monthYearFormatsShortForm[n]||a.monthYearFormatsShortForm[n.substr(0,2)]||a.monthYearFormatsShortForm.default:a.monthYearFormats[n]||a.monthYearFormats[n.substr(0,2)]||a.monthYearFormats.default}}],(n=[{key:"handleChange",value:function(e,t){var n,r;e.stopPropagation();var i=p()(this.props.value,"YYYY-MM-DD").add(t,"M").format("YYYY-MM-DD");null===(n=(r=this.props).onChange)||void 0===n||n.call(r,e,{value:i})}},{key:"render",value:function(){var e=this.props,t=e.headingId,n=e.locale,r=e.value,o=e.splunkTheme,s=Z(e,["headingId","locale","value","splunkTheme"]),l=o.isEnterprise,c=o.isPrisma,d=p()(r,"YYYY-MM-DD",n).format(a.getMonthYearFormat(n,c)),h={flex:"0 0 auto"},f=Object(X._)("Previous month"),m=Object(X._)("Next month");return i.a.createElement(b.SplunkThemeProvider,{density:c?"comfortable":o.density},i.a.createElement(G,u()(s,"onChange"),i.a.createElement($.a,{appearance:"pill",icon:l?i.a.createElement(H.a,{hideDefaultTooltip:!0,screenReaderText:f,size:1}):i.a.createElement(q.a,{"aria-label":f,height:"24",width:"24"}),"data-test":"previous-month",onClick:this.handlePrevMonthClick,style:h}),i.a.createElement(Q,{id:t,"data-test":"header-label"},d),i.a.createElement($.a,{appearance:"pill",icon:l?i.a.createElement(U.a,{hideDefaultTooltip:!0,screenReaderText:m,size:1}):i.a.createElement(F.a,{"aria-label":m,height:"24",width:"24"}),"data-test":"next-month",onClick:this.handleNextMonthClick,style:h})))}}])&&ee(t.prototype,n),r&&ee(t,r),a}(r.Component);ae(le,"propTypes",se),ae(le,"defaultProps",{locale:"en_US"}),ae(le,"monthYearFormats",{default:"MMMM YYYY",ja:"YYYY年MMM",ko:"YYYY년 MMMM","zh-cn":"YYYY年MMM","zh-tw":"YYYY年MMM"}),ae(le,"monthYearFormatsShortForm",{default:"MMM YYYY",ja:"YYYY年 MMM",ko:"YYYY년 MMMM","zh-cn":"YYYY年 MMM","zh-tw":"YYYY年 MMM"});var ce=Object(b.withSplunkTheme)(le);ce.propTypes=le.propTypes;var ue=ce,de=n(6),pe=n.n(de),he=M()(pe.a).withConfig({displayName:"CalendarStyles__StyledBox",componentId:"sc-18925wt-0"})(["width:",";padding:",";"],Object(b.pick)({enterprise:"220px",prisma:"332px"}),Object(b.pick)({enterprise:"8px",prisma:b.variables.spacingLarge})),fe=n(11);function me(e){return(me="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function be(){return(be=Object.assign||function(e){for(var t=1;t9007199254740991)return[];var n=4294967295,s=a(e,4294967295);t=i(t),e-=4294967295;for(var l=r(s,t);++n{let{earliest:t,latest:n,onChange:r,momentTimeZoneName:_,locale:O}=e,x=(0,o.default)(e,A);const z=(e,t)=>{const n=t?c.default.tz(e,t):(0,c.default)(e),r=e?n:c.default.unix(0);return{date:r.format(p.default.momentFormat),time:r.format(w.timeFormat)}},C=(e,t)=>{const n=t?c.default.tz(e||void 0,t):(0,c.default)(e||void 0);return{date:n.format(p.default.momentFormat),time:n.format(w.timeFormat)}},S=z(t,_),T=C(n,_),k=w.inferType(t,n),[L,E]=(0,a.useState)(S.date),[P,R]=(0,a.useState)(S.time),[D,N]=(0,a.useState)(T.date),[j,B]=(0,a.useState)(T.time),[q,I]=(0,a.useState)(k),[F,W]=(0,a.useState)(""),H=(0,a.useRef)(),V=(0,a.useRef)();(0,a.useEffect)(()=>{H.current=t,V.current=n},[t,n]),H.current!==t&&S.date!==L&&E(S.date),V.current!==n&&T.date!==D&&N(T.date),H.current!==t&&S.time!==P&&R(S.time),V.current!==n&&T.time!==j&&B(T.time),k===q||H.current===t&&V.current===n||I(k);const U=(e,t,n,i,o)=>{let a="";const l="before"===q?"0":(0,g.getISOWithTimeZone)(n+"T"+t,_),u="since"===q?"now":(0,g.getISOWithTimeZone)(o+"T"+i,_);"before"===q||w.validateTime(t)&&c.default.tz(l,_).isValid()?"since"===q||w.validateTime(i)&&c.default.tz(u,_).isValid()?"between"===q&&c.default.tz(l,_).valueOf()>=c.default.tz(u,_).valueOf()&&(a=(0,s._)("Earliest must be before latest.")):a=(0,s._)("Latest time is invalid."):a=(0,s._)("Earliest time is invalid."),W(a),!a&&r&&r(e,{earliest:l,latest:u})},Y=e=>{"enter"===(0,l.keycode)(e)&&U(e,P,L,j,D)},$=e=>{if("enter"===(0,l.keycode)(e)){const{value:t,name:n}=e.target,r="earliestDate"===n?z(t).date:L,i="latestDate"===n?C(t).date:D;U(e,P,r,j,i)}},X={flex:"0 1 150px",marginRight:10};return a.default.createElement(y.default,(0,i.default)({title:(0,s._)("Date & Time Range")},x,{__self:void 0,__source:{fileName:M,lineNumber:224,columnNumber:9}}),F&&a.default.createElement(h.default,{type:"error","data-test":"error-message",style:{margin:"0 20px"},__self:void 0,__source:{fileName:M,lineNumber:226,columnNumber:17}},F),a.default.createElement(v.StyledCGWrapper,{__self:void 0,__source:{fileName:M,lineNumber:230,columnNumber:13}},a.default.createElement(d.default,{controlsLayout:"none",label:"","data-role":"rangetype",labelPosition:"top",style:{flex:"0 1 auto",marginRight:10,marginTop:0},__self:void 0,__source:{fileName:M,lineNumber:231,columnNumber:17}},a.default.createElement(f.default,{value:q,"data-test":"range-type",onChange:(e,{value:t})=>{I(t)},__self:void 0,__source:{fileName:M,lineNumber:238,columnNumber:21}},a.default.createElement(f.default.Option,{label:(0,s._)("Between"),value:"between",__self:void 0,__source:{fileName:M,lineNumber:239,columnNumber:25}}),a.default.createElement(f.default.Option,{label:(0,s._)("Before"),value:"before",__self:void 0,__source:{fileName:M,lineNumber:240,columnNumber:25}}),a.default.createElement(f.default.Option,{label:(0,s._)("Since"),value:"since",__self:void 0,__source:{fileName:M,lineNumber:241,columnNumber:25}}))),"before"!==q&&a.default.createElement(d.default,{controlsLayout:"none",label:"",labelPosition:"top",style:X,__self:void 0,__source:{fileName:M,lineNumber:245,columnNumber:21}},a.default.createElement(p.default,{name:"earliestDate",value:L,onChange:(e,{value:t})=>{E(t)},onKeyDown:$,inline:!1,locale:O,"data-test":"earliest-date",__self:void 0,__source:{fileName:M,lineNumber:246,columnNumber:25}})),"before"!==q&&a.default.createElement(d.default,{controlsLayout:"none",label:"",labelPosition:"top",help:"HH:MM:SS.SSS",style:{flex:1},__self:void 0,__source:{fileName:M,lineNumber:258,columnNumber:21}},a.default.createElement(b.default,{value:P,onChange:(e,{value:t})=>{R(t)},onKeyDown:Y,"data-test":"earliest-time",__self:void 0,__source:{fileName:M,lineNumber:265,columnNumber:25}})),"before"!==q&&a.default.createElement(d.default,{controlsLayout:"none",label:"",labelPosition:"top",inline:!1,__self:void 0,__source:{fileName:M,lineNumber:274,columnNumber:21}},a.default.createElement(m.default,{style:{marginLeft:"between"===q?0:10,paddingLeft:7,paddingRight:7},__self:void 0,__source:{fileName:M,lineNumber:275,columnNumber:25}},"between"===q?(0,s._)("and"):(0,s._)("until now"))),"since"!==q&&a.default.createElement(d.default,{controlsLayout:"none",label:"",labelPosition:"top",style:X,__self:void 0,__source:{fileName:M,lineNumber:288,columnNumber:21}},a.default.createElement(p.default,{name:"latestDate",value:D,onChange:(e,{value:t})=>{N(t)},onKeyDown:$,inline:!1,locale:O,"data-test":"latest-date",__self:void 0,__source:{fileName:M,lineNumber:289,columnNumber:25}})),"since"!==q&&a.default.createElement(d.default,{controlsLayout:"none",label:"",labelPosition:"top",help:(0,s._)("HH:MM:SS.SSS"),style:{flex:1},__self:void 0,__source:{fileName:M,lineNumber:301,columnNumber:21}},a.default.createElement(b.default,{value:j,onChange:(e,{value:t})=>{B(t)},onKeyDown:Y,"data-test":"latest-time",__self:void 0,__source:{fileName:M,lineNumber:308,columnNumber:25}}))),a.default.createElement(v.StyledApplyContainer,{__self:void 0,__source:{fileName:M,lineNumber:317,columnNumber:13}},a.default.createElement(u.default,{label:(0,s._)("Apply"),"data-test":"apply",onClick:e=>{U(e,P,L,j,D)},__self:void 0,__source:{fileName:M,lineNumber:318,columnNumber:17}})))};w.defaultProps={placeholder:"Select..."},w.timeFormat="HH:mm:ss.SSS",w.validateTime=e=>e.match(/^\d\d:\d\d(:\d\d|:\d\d\.\d?\d?\d?)?$/),w.inferType=(e,t)=>!e||t&&"now"!==t?!t||e&&"0"!==e?"between":"before":"since";var O=w;t.default=O},143:function(e,t){ /*! * Copyright © 2018 Splunk Inc. * SPLUNK CONFIDENTIAL – Use or disclosure of this material in whole or * in part without a valid written license from Splunk Inc. is PROHIBITED. */ e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n.r(t),n.d(t,"SCP_CATEGORICAL",(function(){return r})),n.d(t,"ENTERPRISE_CATEGORICAL",(function(){return i})),n.d(t,"CATEGORICAL",(function(){return o})),n.d(t,"VIZ_CATEGORICAL",(function(){return a}));var r=["#A9F5E7","#A870EF","#1E6271","#45D4BA","#602CA1","#9AE6F7","#6CD0F0","#2F8AA7","#422879","#F29BAC","#E85B79","#C6335F","#FDAF93","#FB865C","#E9643A","#7EEFDA","#26AA92","#207865","#C093F9","#8747DA","#4EB2D2","#912344","#AD3F20","#D44C20","#FFC34E","#95651D","#C0891E","#ECAE11","#FCD9A4","#78062A"],i=["#1E93C6","#F2B827","#D6563C","#6A5C9E","#31A35F"],o=["#7B56DB","#0089CF","#00CDAF","#DD9900","#FF677B","#CB2196","#813193","#0051B5","#008C80","#99B100","#FFA476","#FF6ACE","#AE8CFF","#00689D","#00490A","#465D00","#9D6300","#F6540B","#FF969E","#E47BFE"],a=["#7B56DB","#009CEB","#00CDAF","#DD9900","#FF677B","#CB2196","#813193","#0051B5","#008C80","#99B100","#FFA476","#FF6ACE","#AE8CFF","#00689D","#00490A","#465D00","#9D6300","#F6540B","#FF969E","#E47BFE"]}])},1430:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(39)),o=r(n(1)),a=n(7),s=n(3),l=n(195),c=r(n(1431)),u=n(1432),d=r(n(276)),p="/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/Presets.tsx";const h=e=>{const t=(t,{earliest:n,latest:r})=>{e.onRequestParseEarliest(n,e.panelId),e.onRequestParseLatest(r,e.panelId),e.onChange(t,{earliest:n,latest:r})};return o.default.createElement(d.default,(0,i.default)({title:(0,s._)("Presets")},e,{__self:void 0,__source:{fileName:p,lineNumber:108,columnNumber:9}}),function(){const n=[],r=[],i=[],a=[];return e.presets.forEach(e=>{const u=(0,l.parseTimeString)(e.earliest),d=u.modifiers[0],h=(0,l.parseTimeString)(e.latest),f=o.default.createElement(c.default,{key:e.earliest+" "+e.latest,earliest:e.earliest,latest:e.latest,onClick:t,label:e.label,"data-test":e.label,__self:this,__source:{fileName:p,lineNumber:41,columnNumber:17}},(0,s._)(e.label));!1===u?a.push(f):"realTime"===u.type||"realTime"===h.type?n.push(f):(0,l.isLatestNow)(e.latest)&&d&&d.unit?i.push(f):d&&(d.amount||d.snap)?r.push(f):a.push(f)}),o.default.createElement(u.Styled,{__self:this,__source:{fileName:p,lineNumber:67,columnNumber:13}},!!n.length&&o.default.createElement(u.StyledColumn,{"data-test":"real-time-column",__self:this,__source:{fileName:p,lineNumber:69,columnNumber:21}},o.default.createElement(u.StyledHeading,{__self:this,__source:{fileName:p,lineNumber:70,columnNumber:25}},(0,s._)("Real-time")),n),!!r.length&&o.default.createElement(u.StyledColumn,{"data-test":"relative-column","data-test-column-id":"past","data-divider":!!n.length,__self:this,__source:{fileName:p,lineNumber:75,columnNumber:21}},o.default.createElement(u.StyledHeading,{__self:this,__source:{fileName:p,lineNumber:80,columnNumber:25}},(0,s._)("Relative")),r),!!i.length&&o.default.createElement(u.StyledColumn,{"data-test":"relative-column","data-test-column-id":"latest","data-divider":!!n.length&&!r.length,__self:this,__source:{fileName:p,lineNumber:85,columnNumber:21}},o.default.createElement(u.StyledHeading,{__self:this,__source:{fileName:p,lineNumber:90,columnNumber:25}},!r.length&&(0,s._)("Relative")),i),!!a.length&&o.default.createElement(u.StyledColumn,{"data-test":"other-column","data-divider":!!n.length||!!r.length||!!i.length,__self:this,__source:{fileName:p,lineNumber:95,columnNumber:21}},o.default.createElement(u.StyledHeading,{__self:this,__source:{fileName:p,lineNumber:99,columnNumber:25}},(0,s._)("Other")),a))}())};h.defaultProps={placeholder:"Select...",onChange:a.noop,onRequestParseEarliest:a.noop,onRequestParseLatest:a.noop};var f=h;t.default=f},1431:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(39)),o=r(n(153)),a=r(n(1)),s=r(n(74)),l=r(n(431));const c=["children","earliest","latest","label","onClick"];var u=function(e){let{children:t,earliest:n,latest:r,label:u,onClick:d}=e,p=(0,o.default)(e,c);return a.default.createElement(s.default,(0,i.default)({style:{display:"block"},label:u,onClick:e=>{d(e,{earliest:n,latest:r})}},(0,l.default)(p),{__self:this,__source:{fileName:"/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/PresetLink.tsx",lineNumber:23,columnNumber:9}}),t)};t.default=u},1432:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.StyledHeading=t.StyledColumn=t.Styled=void 0;var i,o,a,s=r(n(154)),l=r(n(13)),c=n(17);const u=l.default.div(i||(i=(0,s.default)(["\n display: flex;\n padding: ",";\n"])),c.variables.spacingLarge);t.Styled=u;const d=l.default.div(o||(o=(0,s.default)(["\n flex: 1 0 auto;\n padding-right: ",";\n"])),c.variables.spacingSmall);t.StyledColumn=d;const p=l.default.h5(a||(a=(0,s.default)(["\n ",";\n color: ",";\n min-height: ",";\n min-width: 20px;\n"])),c.mixins.reset("block"),c.variables.textGray,c.variables.lineHeight);t.StyledHeading=p},1433:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(39)),o=r(n(153)),a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=M(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1)),s=n(195),l=n(7),c=n(3),u=n(96),d=r(n(53)),p=r(n(107)),h=r(n(868)),f=r(n(159)),m=r(n(128)),b=r(n(711)),g=n(346),v=r(n(276));const y=["earliest","open","onChange","onRequestParseEarliest","parseEarliest","panelId"];var A="/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/RealTime.tsx";function M(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(M=function(e){return e?n:t})(e)}const _=e=>{let{earliest:t,open:n,onChange:r,onRequestParseEarliest:l,parseEarliest:M,panelId:_}=e,w=(0,o.default)(e,y);const O=(0,s.getFromNumber)(t),x=(0,s.getFromUnit)(t),[z,C]=(0,a.useState)(O),[S,T]=(0,a.useState)(x),[k,L]=(0,a.useState)(),E=(0,a.useRef)(),P=(0,a.useRef)();if((0,a.useEffect)(()=>{P.current=t},[t]),(0,a.useEffect)(()=>{E.current=n},[n]),n&&P.current&&(t!==P.current||!E.current)){k&&L(!1);(!E.current||O!==z||x!==S)&&l((0,s.getRealTimeEarliest)(z,S),_)}const R=e=>{if(!isFinite(z))return void L(!0);const t=(0,s.getRealTimeEarliest)(z,S);r(e,{earliest:t,latest:"rt"})},D=(0,s.removeRealTime)((0,s.getRealTimeEarliest)(z,S)),N=M&&D===M.time;return a.default.createElement(v.default,(0,i.default)({title:(0,c._)("Real-time"),panelId:_,open:n},w,{__self:void 0,__source:{fileName:A,lineNumber:114,columnNumber:9}}),k&&a.default.createElement(g.StyledError,{__self:void 0,__source:{fileName:A,lineNumber:116,columnNumber:17}},a.default.createElement(p.default,{type:"error","data-test":"error-message",__self:void 0,__source:{fileName:A,lineNumber:117,columnNumber:21}},(0,c._)("A number is required for earliest."))),a.default.createElement(g.StyledCGWrapper,{__self:void 0,__source:{fileName:A,lineNumber:122,columnNumber:13}},a.default.createElement(g.FlexControlGroup,{controlsLayout:"none",label:(0,c._)("Earliest:"),labelPosition:"top",__self:void 0,__source:{fileName:A,lineNumber:123,columnNumber:17}},a.default.createElement(g.StyledFromControl,{__self:void 0,__source:{fileName:A,lineNumber:124,columnNumber:21}},a.default.createElement(h.default,{onChange:(e,{value:t})=>{C(t),l((0,s.getRealTimeEarliest)(t,S),_)},onKeyDown:e=>{"enter"===(0,u.keycode)(e)&&R(e)},min:1,roundTo:0,value:z,style:{flex:1},append:!0,"data-test":"earliest-number",__self:void 0,__source:{fileName:A,lineNumber:125,columnNumber:25}}),a.default.createElement(f.default,{value:S,onChange:(e,{value:t})=>{T(t),l((0,s.getRealTimeEarliest)(z,t),_)},style:{flex:"0 1 auto"},prepend:!0,"data-test":"earliest-unit",__self:void 0,__source:{fileName:A,lineNumber:135,columnNumber:25}},a.default.createElement(f.default.Option,{label:(0,c._)("Seconds Ago"),value:"s",__self:void 0,__source:{fileName:A,lineNumber:142,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Minutes Ago"),value:"m",__self:void 0,__source:{fileName:A,lineNumber:143,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Hours Ago"),value:"h",__self:void 0,__source:{fileName:A,lineNumber:144,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Days Ago"),value:"d",__self:void 0,__source:{fileName:A,lineNumber:145,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Weeks Ago"),value:"w",__self:void 0,__source:{fileName:A,lineNumber:146,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Months Ago"),value:"mon",__self:void 0,__source:{fileName:A,lineNumber:147,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Quarters Ago"),value:"q",__self:void 0,__source:{fileName:A,lineNumber:148,columnNumber:29}}),a.default.createElement(f.default.Option,{label:(0,c._)("Years Ago"),value:"y",__self:void 0,__source:{fileName:A,lineNumber:149,columnNumber:29}}))),a.default.createElement(b.default,{error:N?M.error:void 0,displayValue:N?M.displayValue:void 0,__self:void 0,__source:{fileName:A,lineNumber:152,columnNumber:21}})),a.default.createElement(g.FlexControlGroup,{controlsLayout:"none",label:(0,c._)("Latest:"),labelPosition:"top",__self:void 0,__source:{fileName:A,lineNumber:157,columnNumber:17}},a.default.createElement(m.default,{value:"now","data-test":"now",disabled:!0,__self:void 0,__source:{fileName:A,lineNumber:158,columnNumber:21}}))),a.default.createElement(g.StyledApplyContainer,{__self:void 0,__source:{fileName:A,lineNumber:161,columnNumber:13}},a.default.createElement(d.default,{label:(0,c._)("Apply"),"data-test":"apply",disabled:!N||!(!M||!M.error),onClick:R,__self:void 0,__source:{fileName:A,lineNumber:162,columnNumber:17}})))};_.defaultProps={open:!1,onChange:l.noop,onRequestParseEarliest:l.noop,onRequestParseLatest:l.noop};var w=_;t.default=w},1434:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(39)),o=r(n(153)),a=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=_(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1)),s=n(7),l=r(n(53)),c=r(n(107)),u=r(n(868)),d=r(n(159)),p=r(n(862)),h=n(195),f=n(41),m=n(3),b=n(96),g=r(n(711)),v=n(346),y=r(n(276));const A=["earliest","latest","open","onChange","onRequestParseEarliest","onRequestParseLatest","parseEarliest","parseLatest","panelId"];var M="/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/Dialog/Relative.tsx";function _(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(_=function(e){return e?n:t})(e)}const w=e=>{let{earliest:t,latest:n,open:r,onChange:_,onRequestParseEarliest:w,onRequestParseLatest:O,parseEarliest:x,parseLatest:z,panelId:C}=e,S=(0,o.default)(e,A);const T=(0,h.getFromNumber)(t),k=(0,h.getFromSnap)(t),L=(0,h.getFromUnit)(t),E=(0,h.getToSnap)(n),[P,R]=(0,a.useState)(T),[D,N]=(0,a.useState)(L),[j,B]=(0,a.useState)(k),[q,I]=(0,a.useState)(E),[F,W]=(0,a.useState)(!1),H=(0,a.useRef)(),V=(0,a.useRef)(),U=(0,a.useRef)();if((0,a.useEffect)(()=>{H.current=r},[r]),(0,a.useEffect)(()=>{V.current=t,U.current=n},[t,n]),r&&!H.current&&(w((0,h.getRelativeEarliest)(P,j,D),C),O((0,h.getRelativeLatest)(D,q),C)),r&&(V.current||U.current)&&(V.current!==t||U.current!==n)){F&&W(!1);(!H.current||P!==T||j!==k||D!==L)&&w((0,h.getRelativeEarliest)(P,j,D),C);(E!==q||!H.current)&&O((0,h.getRelativeLatest)(D,q),C)}const Y=e=>{if(!(0,s.isFinite)(P))return void W(!0);const t=(0,h.getRelativeEarliest)(P,j,D),n=(0,h.getRelativeLatest)(D,q);_(e,{earliest:t,latest:n})},$=(0,h.getRelativeEarliest)(P,j,D),X=(0,h.getRelativeLatest)(D,q),G=x&&$===x.time,Q=z&&X===z.time,K=(0,h.getUnitLabel)(D);return a.default.createElement(y.default,(0,i.default)({title:(0,m._)("Relative"),panelId:C,open:r},S,{__self:void 0,__source:{fileName:M,lineNumber:152,columnNumber:9}}),F&&a.default.createElement(v.StyledError,{__self:void 0,__source:{fileName:M,lineNumber:154,columnNumber:17}},a.default.createElement(c.default,{type:"error","data-test":"error-message",__self:void 0,__source:{fileName:M,lineNumber:155,columnNumber:21}},(0,m._)("A number is required for earliest."))),a.default.createElement(v.StyledCGWrapper,{__self:void 0,__source:{fileName:M,lineNumber:161,columnNumber:13}},a.default.createElement(v.FlexControlGroup,{controlsLayout:"none",label:(0,m._)("Earliest:"),labelPosition:"top",__self:void 0,__source:{fileName:M,lineNumber:162,columnNumber:17}},a.default.createElement(v.StyledFromControl,{__self:void 0,__source:{fileName:M,lineNumber:163,columnNumber:21}},a.default.createElement(u.default,{style:{flex:1},onChange:(e,{value:t})=>{R(t),w((0,h.getRelativeEarliest)(t,j,D),C)},onKeyDown:e=>{"enter"===(0,b.keycode)(e)&&Y(e)},min:0,roundTo:0,value:P,append:!0,"data-test":"earliest-number",__self:void 0,__source:{fileName:M,lineNumber:164,columnNumber:25}}),a.default.createElement(d.default,{value:D,onChange:(e,{value:t})=>{N(t),w((0,h.getRelativeEarliest)(P,j,t),C),O((0,h.getRelativeLatest)(t,q),C)},prepend:!0,style:{flex:"0 1 auto"},"data-test":"earliest-unit",__self:void 0,__source:{fileName:M,lineNumber:174,columnNumber:25}},a.default.createElement(d.default.Option,{label:(0,m._)("Seconds Ago"),value:"s",__self:void 0,__source:{fileName:M,lineNumber:181,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Minutes Ago"),value:"m",__self:void 0,__source:{fileName:M,lineNumber:182,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Hours Ago"),value:"h",__self:void 0,__source:{fileName:M,lineNumber:183,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Days Ago"),value:"d",__self:void 0,__source:{fileName:M,lineNumber:184,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Weeks Ago"),value:"w",__self:void 0,__source:{fileName:M,lineNumber:185,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Months Ago"),value:"mon",__self:void 0,__source:{fileName:M,lineNumber:186,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Quarters Ago"),value:"q",__self:void 0,__source:{fileName:M,lineNumber:187,columnNumber:29}}),a.default.createElement(d.default.Option,{label:(0,m._)("Years Ago"),value:"y",__self:void 0,__source:{fileName:M,lineNumber:188,columnNumber:29}}))),a.default.createElement(p.default,{"data-test-temp":"radio-list-earliest",value:j,onChange:(e,{value:t})=>{B(t),w((0,h.getRelativeEarliest)(P,t,D),C)},__self:void 0,__source:{fileName:M,lineNumber:192,columnNumber:21}},a.default.createElement(p.default.Option,{"data-test":"no-snap-to",value:!1,__self:void 0,__source:{fileName:M,lineNumber:197,columnNumber:25}},(0,m._)("No snap-to")),a.default.createElement(p.default.Option,{"data-test":"earliest-begin",value:!0,__self:void 0,__source:{fileName:M,lineNumber:200,columnNumber:25}},(0,f.sprintf)((0,m._)("Beginning of %(timeUnit)s"),{timeUnit:K}))),a.default.createElement(g.default,{"data-test":"earliest-absolute-value",error:G?x.error:void 0,displayValue:G?x.displayValue:void 0,__self:void 0,__source:{fileName:M,lineNumber:204,columnNumber:21}})),a.default.createElement(v.FlexControlGroup,{controlsLayout:"none",label:(0,m._)("Latest:"),labelPosition:"top",__self:void 0,__source:{fileName:M,lineNumber:210,columnNumber:17}},a.default.createElement(p.default,{"data-test-temp":"radio-list-latest",value:q,onChange:(e,{value:t})=>{I(t),O((0,h.getRelativeLatest)(D,t),C)},__self:void 0,__source:{fileName:M,lineNumber:211,columnNumber:21}},a.default.createElement(p.default.Option,{"data-test":"now",value:!1,__self:void 0,__source:{fileName:M,lineNumber:216,columnNumber:25}},(0,m._)("Now")),a.default.createElement(p.default.Option,{"data-test":"latest-begin",value:!0,__self:void 0,__source:{fileName:M,lineNumber:219,columnNumber:25}},(0,f.sprintf)((0,m._)("Beginning of current %(timeUnit)s"),{timeUnit:K}))),a.default.createElement(g.default,{"data-test":"latest-absolute-value",error:Q?z.error:void 0,displayValue:Q?z.displayValue:void 0,__self:void 0,__source:{fileName:M,lineNumber:223,columnNumber:21}}))),a.default.createElement(v.StyledApplyContainer,{__self:void 0,__source:{fileName:M,lineNumber:230,columnNumber:13}},a.default.createElement(l.default,{label:(0,m._)("Apply"),disabled:!(G&&Q&&(!x||!x.error)&&(!x||!z.error)),"data-test":"apply",onClick:Y,__self:void 0,__source:{fileName:M,lineNumber:231,columnNumber:17}})))};w.defaultProps={onChange:s.noop,open:!1};var O=w;t.default=O},1435:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1436);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(e in t&&t[e]===r[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return r[e]}}))}))},1436:function(e,t){},1437:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={};Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i.default}});var i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=o(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var s=i?Object.getOwnPropertyDescriptor(e,a):null;s&&(s.get||s.set)?Object.defineProperty(r,a,s):r[a]=e[a]}r.default=e,n&&n.set(e,r);return r}(n(1438));function o(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(o=function(e){return e?n:t})(e)}Object.keys(i).forEach((function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(r,e)||e in t&&t[e]===i[e]||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}}))}))},1438:function(e,t,n){"use strict";var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=r(n(21)),o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=m(t);if(n&&n.has(e))return n.get(e);var r={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var o in e)if("default"!==o&&Object.prototype.hasOwnProperty.call(e,o)){var a=i?Object.getOwnPropertyDescriptor(e,o):null;a&&(a.get||a.set)?Object.defineProperty(r,o,a):r[o]=e[o]}r.default=e,n&&n.set(e,r);return r}(n(1)),a=r(n(12)),s=n(7),l=n(1439),c=n(1440),u=n(1441),d=n(22),p=r(n(712)),h=r(n(107)),f=n(1442);function m(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(m=function(e){return e?n:t})(e)}function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function g(e){for(var t=1;t{this.cancelableEarliestTimeParser&&this.cancelableEarliestTimeParser.cancel(),this.cancelableEarliestTimeParser=(0,l.makeCancelable)((0,u.getISO)(e)),this.cancelableEarliestTimeParser.promise.then(t=>{this.setState({parseEarliest:g({error:null,time:e},t)})}).catch(t=>{this.setState({parseEarliest:{error:t,time:e}})})}),(0,i.default)(this,"handleRequestParseLatest",e=>{this.cancelableLatestTimeParser&&this.cancelableLatestTimeParser.cancel(),this.cancelableLatestTimeParser=(0,l.makeCancelable)((0,u.getISO)(e)),this.cancelableLatestTimeParser.promise.then(t=>{this.setState({parseLatest:g({error:null,time:e},t)})}).catch(t=>{this.setState({parseLatest:{error:t,time:e}})})});let n=null;if(d.isAvailable){const e=(0,p.default)(d.serverTimezoneInfo,"temporary"),t=v.hashCode(e.abbrs+e.offsets+e.untils);n=(0,p.default)(d.serverTimezoneInfo,t.toString())}e.validateRTSearchCapability&&(this.cancelableFetchUserRTSearchCapability=(0,l.makeCancelable)((0,f.fetchUserRTSearchCapability)()),this.cancelableFetchUserRTSearchCapability.promise.then(e=>{this.setState({realTimeDisabled:!e})}).catch(()=>{this.setState({realTimeDisabled:!0})})),this.state={momentTimeZone:n,realTimeDisabled:e.validateRTSearchCapability,presets:v.sharedPresets},v.instances.push(this)}componentWillUnmount(){this.cancelableFetchUserRTSearchCapability&&this.cancelableFetchUserRTSearchCapability.cancel();const e=v.instances.indexOf(this);v.instances.splice(e,1)}updatePresets(){this.setState({presets:v.sharedPresets})}render(){var e;const{children:t,presetsTransform:n}=this.props,{realTimeDisabled:r,parseEarliest:i,parseLatest:a,momentTimeZone:l}=this.state;return d.isAvailable?(0,o.cloneElement)(t,{presets:n((0,s.cloneDeep)(this.state.presets)),realTimeDisabled:!!r||(null==t||null==(e=t.props)?void 0:e.realTimeDisabled),onRequestParseEarliest:this.handleRequestParseEarliest,onRequestParseLatest:this.handleRequestParseLatest,parseEarliest:i,parseLatest:a,momentTimeZone:l}):o.default.createElement(h.default,{type:"error",__self:this,__source:{fileName:"/builds/swp/ui-platform/projects/lib/search-components/react-time-range/src/SplunkwebConnector/SplunkwebConnector.tsx",lineNumber:181,columnNumber:20}},"Cannot access splunkweb.")}}(0,i.default)(v,"propTypes",{children:a.default.element.isRequired,presetsTransform:a.default.func}),(0,i.default)(v,"defaultProps",{presetsTransform:e=>e,validateRTSearchCapability:!0}),(0,i.default)(v,"instances",[]),(0,i.default)(v,"sharedPresets",[]),d.isAvailable&&(0,c.getPresets)().then(e=>{e.forEach(e=>v.sharedPresets.push(e)),v.instances.forEach(e=>e.updatePresets())}).catch(()=>{console.log("Time presets could not be loaded from splunkweb.")});var y=v;t.default=y},1439:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makeCancelable=void 0;t.makeCancelable=function(e){var t=!1;return{promise:new Promise((function(n,r){e.then((function(e){t?r({isCanceled:!0}):n(e)})),e.catch((function(e){r(t?{isCanceled:!0}:e)}))})),cancel:function(){t=!0}}}},144:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=237)}({1:function(e,t){e.exports=n(12)},10:function(e,t){e.exports=n(82)},11:function(e,t,n){"use strict";function r(e,t){e&&("function"==typeof e?e(t):e.current=t)}n.d(t,"a",(function(){return r}))},16:function(e,t){e.exports=n(242)},2:function(e,t){e.exports=n(1)},21:function(e,t){e.exports=n(194)},237:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return N})),n.d(t,"legacyRefMode",(function(){return R}));var r=n(2),i=n.n(r),o=n(1),a=n.n(o),s=n(10),l=n.n(s),c=n(16),u=n.n(c),d=(n(88),n(69)),p=n.n(d),h=n(9),f=n.n(h),m=n(5),b=n.n(m),g=n(8),v=n(7),y=n(21),A=n.n(y),M=n(11);function _(e){return(_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function w(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function O(e,t){for(var n=0;ne("".concat(s,"?output_mode=json&count=-1"),a.defaultFetchInit).then((0,a.handleResponse)(200)).then(e=>e.entry.sort((e,t)=>parseInt(e.content.label.toUpperCase(),10)>parseInt(t.content.label.toUpperCase(),10)?1:-1).sort((e,t)=>parseInt(e.content.order,10)>parseInt(t.content.order,10)?1:-1).filter(e=>e.content.earliest_time||e.content.latest_time).map(e=>({label:e.content.label,earliest:e.content.earliest_time||"",latest:e.content.latest_time||""}))).catch(e=>{console.log("preset times fetch failed",e)}));t.getPresets=l;var c={getPresets:l};t.default=c}).call(this,n(120))},1441:function(e,t,n){"use strict";(function(e){var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.getISO=l,t.default=void 0;var i=r(n(141)),o=n(7),a=n(51),s=n(127);function l(t){const n=i.default.stringify({output_mode:"json",time:t}),r=(0,a.createRESTURL)("search/timeparser");return e("".concat(r,"?").concat(n),s.defaultFetchInit).then((0,s.handleResponse)(200)).then(e=>({error:null,iso:e[(0,o.keys)(e)[0]],time:t})).catch(e=>({error:e,time:t}))}var c={getISO:l};t.default=c}).call(this,n(120))},1442:function(e,t,n){"use strict";(function(e){var r=n(8);Object.defineProperty(t,"__esModule",{value:!0}),t.fetchUserRTSearchCapability=void 0;var i=r(n(163)),o=n(51),a=n(127);const s=(0,o.createRESTURL)("authentication/current-context"),l=(0,i.default)(()=>e(s+"?output_mode=json",a.defaultFetchInit).then((0,a.handleResponse)(200)).then(e=>{var t,n;return null!=(t=null==(n=e.entry[0])?void 0:n.content.capabilities.includes("rtsearch"))&&t}).catch(e=>(console.log("real time capability fetch failed",e),!1)));t.fetchUserRTSearchCapability=l}).call(this,n(120))},1443:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".shared-timerangepicker>.btn{border-color:1px solid #c3cbd4!important;-webkit-box-sizing:border-box;box-sizing:border-box;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;max-width:100%}.shared-timerangepicker>.btn>.time-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.shared-timerangepicker>.btn>.caret{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}",""])},1444:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,"form.search-form{margin-bottom:0}.search-bar .btn,.search-bar .btn.dropdown-toggle,.search-bar-primary .btn,.search-bar-primary .btn.dropdown-toggle{border-left:none;border-radius:0;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;line-height:28px;white-space:nowrap}.search-bar td,.search-bar-primary td{padding:0;vertical-align:top}.search-bar td.search-timerange,.search-bar-primary td.search-timerange{display:-webkit-box;display:-ms-flexbox;display:flex}.search-bar td.search-input,.search-bar-primary td.search-input{width:100%}.search-bar .shared-timerangepicker,.search-bar-primary .shared-timerangepicker{max-width:280px;-ms-flex-negative:0;flex-shrink:0}.search-bar .shared-timerangepicker .btn,.search-bar-primary .shared-timerangepicker .btn{border-radius:0}.search-bar .shared-timerangepicker .btn .caret,.search-bar-primary .shared-timerangepicker .btn .caret{line-height:28px}.search-bar .search-button .btn,.search-bar-primary .search-button .btn{background-color:#1a8929;border:none;border-bottom-right-radius:3px;border-top-right-radius:3px;font-size:24px;padding:7px 15px;position:relative}.search-bar .search-button .btn,.search-bar .search-button .btn:hover,.search-bar-primary .search-button .btn,.search-bar-primary .search-button .btn:hover{-webkit-box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);box-shadow:inset 0 -2px 0 rgba(0,0,0,.1);color:#fff;-webkit-filter:none;filter:none;text-decoration:none;text-shadow:none;-webkit-transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s}.search-bar .search-button .btn:hover,.search-bar-primary .search-button .btn:hover{background-color:#286728;border-color:transparent}.search-bar .search-button .btn:active,.search-bar-primary .search-button .btn:active{background-color:#389038;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#fff;-webkit-filter:none;filter:none;text-decoration:none;text-shadow:none;-webkit-transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s;transition:background .2s,border .2s,box-shadow .2s,text-decoration .2s,-webkit-box-shadow .2s,-webkit-text-decoration .2s}.search-bar .search-button .btn:focus,.search-bar-primary .search-button .btn:focus{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0;text-decoration:none}.search-bar .search-button .btn:focus:active:not([disabled]),.search-bar-primary .search-button .btn:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.search-bar .search-field-wrapper .ace_editor,.search-bar .search-field-wrapper textarea.search-field,.search-bar-primary .search-field-wrapper .ace_editor,.search-bar-primary .search-field-wrapper textarea.search-field{border-bottom-left-radius:3px;border-bottom-right-radius:0;border-color:#c3cbd4;border-top-left-radius:3px;border-top-right-radius:0}@media print{.search-bar,.search-bar tbody,.search-bar td,.search-bar tr{display:block;width:100%}.search-button{display:none!important}}body.print table.search-bar td{display:block;width:100%!important}",""])},1445:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=60)}({0:function(e,t){e.exports=n(1)},3:function(e,t){e.exports=n(3)},4:function(e,t){e.exports=n(32)},60:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return c}));var r=n(0),i=n.n(r),o=n(3),a=n(4),s=n.n(a);function l(){return(l=Object.assign||function(e){for(var t=1;tli:first-child>a{border-top:none;border-top-left-radius:1px;border-top-right-radius:1px}ul.shared-jobcontrols-menu-messages>li{border-top:1px dotted #c3cbd4;color:#6b7785;font-size:12px;padding:5px 10px}ul.shared-jobcontrols-menu-messages>li:first-child{border:none}ul.shared-jobcontrols-menu-messages>li.job_message a{border:0;display:inline;padding:0 0 0 2px}ul.shared-jobcontrols-menu-messages>li.job_message a:hover{background:none;text-decoration:underline}ul.shared-jobcontrols-menu-messages+.controls{margin-top:0}.shared-jobcontrols-menu .message-indicator .alert{border:none;display:inline;padding-left:0}.shared-jobcontrols-menu-editmodal .add-on.bookmark,.shared-jobcontrols-menu-sendbackgroundmodal-success .add-on.bookmark{height:32px}.shared-jobcontrols-menu-editmodal .icon-bookmark,.shared-jobcontrols-menu-sendbackgroundmodal-success .icon-bookmark{font-size:16px}.shared-jobcontrols-menu-editmodal p,.shared-jobcontrols-menu-sendbackgroundmodal-success p{margin-bottom:20px}.shared-jobcontrols-menu-sendbackgroundmodal-success .control-label{text-align:left;width:100px}.shared-jobcontrols-menu-sendbackgroundmodal-success .controls{margin-left:120px}.export-print-group{display:-webkit-box;display:-ms-flexbox;display:flex}@media print{.shared-jobcontrols,.tooltip{display:none!important}}",""])},1448:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=152)}({0:function(e,t){e.exports=n(1)},152:function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return c}));var r=n(0),i=n.n(r),o=n(3),a=n(4),s=n.n(a);function l(){return(l=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var S={children:a.a.node};function T(e){var t=e.children,n=C(e,["children"]),o=x(Object(r.useState)(),2),a=o[0],s=o[1],l=Object(r.useCallback)((function(e){s(e)}),[]);return i.a.createElement(w,O({"data-test":"body"},n,{elementRef:l}),i.a.createElement(g.ScrollContainerProvider,{value:a},t))}T.propTypes=S;var k=T,L=n(110),E=n.n(L),P=y()(M.a).withConfig({displayName:"FooterStyles__StyledBox",componentId:"yszcmv-0"})(["flex:0 0 auto;text-align:right;padding:",";background-color:",";& > button{min-width:80px;}"],Object(_.pick)({enterprise:_.variables.spacing,prisma:{comfortable:"24px",compact:"18px 24px"}}),Object(_.pick)({enterprise:_.variables.backgroundColor,prisma:_.variables.backgroundColorDialog})),R=Object(r.createContext)({});function D(){return(D=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var j={children:a.a.node};function B(e){var t=e.children,n=N(e,["children"]),o=Object(r.useContext)(R).divider,a="both"===o||"footer"===o;return i.a.createElement(i.a.Fragment,null,a&&i.a.createElement(E.a,{"aria-hidden":!0}),i.a.createElement(P,D({"data-test":"footer"},n),t))}B.propTypes=j;var q=B,I=n(90),F=n.n(I),W=y()(M.a).withConfig({displayName:"HeaderStyles__StyledBox",componentId:"sc-1y722ut-0"})(["",";flex:0 0 auto;position:relative;min-height:",";background-color:",";padding:",";align-items:center;padding-right:",";"],_.mixins.reset("flex"),Object(_.pick)({enterprise:"30px",prisma:{comfortable:"60px",compact:"52px"}}),Object(_.pick)({enterprise:_.variables.backgroundColor,prisma:_.variables.backgroundColorDialog}),Object(_.pick)({enterprise:"25px 28px",prisma:{comfortable:"18px 24px",compact:"14px 24px"}}),(function(e){return e.$close&&Object(_.pick)({enterprise:"54px",prisma:{comfortable:"64px",compact:"56px"}})})),H=y.a.div.withConfig({displayName:"HeaderStyles__StyledTitleWrapper",componentId:"sc-1y722ut-1"})(["",";flex-direction:column;"],_.mixins.reset("flex")),V=y.a.div.withConfig({displayName:"HeaderStyles__StyledIcon",componentId:"sc-1y722ut-2"})(["",";align-items:center;justify-content:center;margin-right:",";"," width:",";height:",";flex-shrink:0;"],_.mixins.reset("inline-flex"),_.variables.spacingLarge,Object(_.pick)({prisma:Object(v.css)(["background-color:",";"],_.variables.transparent)}),Object(_.pick)({comfortable:"40px",compact:"32px"}),Object(_.pick)({comfortable:"40px",compact:"32px"})),U=y.a.div.withConfig({displayName:"HeaderStyles__StyledTitle",componentId:"sc-1y722ut-3"})(["",";font-size:20px;margin:0;overflow-wrap:break-word;font-weight:",";",""],_.mixins.reset("block"),_.variables.fontWeightSemiBold,Object(_.pick)({enterprise:Object(v.css)(["line-height:22px;"]),prisma:Object(v.css)(["color:",";line-height:24px;"],_.variables.contentColorActive)})),Y=y.a.div.withConfig({displayName:"HeaderStyles__StyledSubtitle",componentId:"sc-1y722ut-4"})(["",";font-size:14px;overflow-wrap:break-word;line-height:",";"],_.mixins.reset("block"),Object(_.pick)({enterprise:_.variables.lineHeight,prisma:"20px"})),$=y.a.div.withConfig({displayName:"HeaderStyles__StyledButtonsWrapper",componentId:"sc-1y722ut-5"})(["",";position:absolute;top:",";right:",";bottom:50%;"," max-height:35px;transform-origin:bottom right;transform:rotate(-90deg) translateX(100%);"],_.mixins.reset("block"),Object(_.pick)({enterprise:0,prisma:{comfortable:"-2px",compact:"-6px"}}),Object(_.pick)({enterprise:0,prisma:{comfortable:"-2px",compact:"-6px"}}),Object(_.pick)({prisma:{comfortable:Object(v.css)(["min-height:35px;"]),compact:Object(v.css)(["min-height:30px;"])}})),X=y.a.div.withConfig({displayName:"HeaderStyles__StyledClose",componentId:"sc-1y722ut-6"})(["",";position:absolute;right:0;top:0;transform:rotate(90deg) translate(-50%,-50%);"],_.mixins.reset("block"));function G(){return(G=Object.assign||function(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var K={children:a.a.node,icon:a.a.node,onRequestClose:a.a.func,subtitle:a.a.node,title:a.a.string};function Z(e){var t=e.children,n=e.icon,o=e.onRequestClose,a=e.subtitle,s=e.title,l=Q(e,["children","icon","onRequestClose","subtitle","title"]),c=Object(r.useContext)(R),u=c.titleId,d=c.divider,p="both"===d||"header"===d;return i.a.createElement(i.a.Fragment,null,i.a.createElement(W,G({$close:!!o,"data-test":"header"},l),n&&i.a.createElement(V,null,n),s?i.a.createElement(H,null,s&&i.a.createElement(U,{id:u,"data-test":"title"},s),a&&i.a.createElement(Y,{"data-test":"subtitle"},a)):t,o&&i.a.createElement($,null,o&&i.a.createElement(X,null,i.a.createElement(F.a,{onClick:o,"data-test":"close"})))),p&&i.a.createElement(E.a,{"aria-hidden":!0}))}Z.propTypes=K;var J=Z,ee=n(24),te=y()(ee.animated.div).withConfig({displayName:"ModalStyles__Styled",componentId:"sc-5fn8ds-0"})(["",";flex-direction:column;position:fixed;left:50%;transform:translateX(-50%);z-index:",";",""],_.mixins.reset("flex"),_.variables.zindexModal,Object(_.pick)({enterprise:Object(v.css)(["box-shadow:0 1px 5px ",";max-height:calc(100vh - "," * 4);max-width:calc(100vw - "," * 4);"],_.variables.black,_.variables.spacing,_.variables.spacing),prisma:Object(v.css)(["box-shadow:",";max-height:calc(100vh - "," * 4);max-width:calc(100vw - "," * 4);border-radius:",";overflow:hidden;"],_.variables.modalShadow,_.variables.spacingXLarge,_.variables.spacingXLarge,_.variables.borderRadius)}));function ne(){return(ne=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);na{padding-left:55px}.dropdown-menu-search-mode .link-description{color:#6b7785;display:block;font-size:.85em}.dropdown-menu-search-mode .link-icon{color:#6b7785;display:block;font-size:2em;left:14px;line-height:1em;opacity:.8;position:absolute;top:5px;width:1.5em}.dropdown-menu-search-mode a .icon-check{left:5px}.dropdown-menu-search-mode li>a{white-space:normal}",""])},1451:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".dropdown-toggle-sample-ratio{margin-left:18px;padding-left:5px}",""])},1452:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".dropdown-menu-workload-pool{width:15em}",""])},1453:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,".progress-bar{bottom:-1px;font-size:10px;height:3px;left:0;padding-left:20px;position:absolute;right:0;z-index:2}.progress-animation{background-color:#006eaa;background-position:100% 0;background-repeat:no-repeat;height:3px;margin-left:-20px;overflow:hidden;padding-left:20px;position:relative;width:0}.progress-animation:focus{outline:none}.progress-cursor{background-image:-webkit-gradient(linear,left top,right top,from(#006eaa),color-stop(#00a4fd),color-stop(40%),color-stop(#bfe9ff),color-stop(80%),to(#bfe9ff));background-image:linear-gradient(90deg,#006eaa,#00a4fd,40%,#bfe9ff,80%,#bfe9ff);height:3px;position:absolute;right:0;top:0;width:300px}.real-time .progress-cursor{background:#006eaa;left:0;width:auto}",""])},1454:function(e,t,n){(e.exports=n(9)(!1)).push([e.i,'.shared-jobstatus{max-width:100vw;min-height:22px;padding:0 20px 5px;position:relative;width:100%}.shared-jobstatus .jobstatus-grouping{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.shared-jobstatus .jobstatus-control-grouping,.shared-jobstatus .jobstatus-grouping{display:-webkit-box;display:-ms-flexbox;display:flex}.shared-jobstatus .jobstatus-control-grouping a.btn-pill,.shared-jobstatus .jobstatus-control-grouping>*>a.btn-pill{margin-left:2px}.shared-jobstatus .bold{font-weight:700}.shared-jobstatus .loader{float:left;margin-right:5px;margin-top:2px}.shared-jobstatus .view-scanned{line-height:19px;margin-right:6px;min-height:19px}.shared-jobstatus .icon-warning-paused{color:#f8be34;display:inline-block;font-size:200%;line-height:16px;margin-right:3px;vertical-align:middle}.shared-jobstatus .status{color:#5c6773;float:left;line-height:32px;margin-left:0;margin-right:5px}.shared-jobstatus .status .icon-check{color:#53a051}.shared-jobstatus .sampling-mode{float:left}.shareJobButtonParent *>.btn-square.btn-square{width:32px}.shareJobButtonParent *>.btn-pill.btn-pill:hover{background:#ebeeef;border-color:#c3cbd4;color:#006297;text-decoration:none}.shareJobButtonParent *>.btn-pill.btn-pill:focus{background:none;border-collapse:separate;border-color:transparent;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;color:#5c6773;outline:0;text-decoration:none}.shareJobButtonParent *>.btn-pill.btn-pill:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.shareJobButtonParent *>.btn-pill.btn-pill.active,.shareJobButtonParent *>.btn-pill.btn-pill:active{background:#e1e6eb;border-color:transparent;color:#5c6773;text-decoration:none}.shareJobButtonParent *>.btn-pill.btn-pill.disabled,.shareJobButtonParent *>.btn-pill.btn-pill.disabled:active,.shareJobButtonParent *>.btn-pill.btn-pill.disabled:focus,.shareJobButtonParent *>.btn-pill.btn-pill.disabled:hover,.shareJobButtonParent *>.btn-pill.btn-pill[disabled],.shareJobButtonParent *>.btn-pill.btn-pill[disabled]:active,.shareJobButtonParent *>.btn-pill.btn-pill[disabled]:focus,.shareJobButtonParent *>.btn-pill.btn-pill[disabled]:hover{background:none;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;color:#c3cbd4;cursor:not-allowed;text-decoration:none}.shareJobButtonParent *>.btn-pill.btn-pill{background-color:transparent;-webkit-box-shadow:none;box-shadow:none;margin-left:2px}.export-print-group{display:-webkit-box;display:-ms-flexbox;display:flex}.export-print-group .icon-export,.export-print-group .icon-print,.export-print-group .icon-share{font-size:15px}.shared-jobstatus-controls{height:20px;position:relative}.shared-jobstatus-controls .job-menu{display:inline-block;white-space:nowrap}.shared-jobstatus-controls .job-menu .icon-info-circle,.shared-jobstatus-controls .job-menu .icon-warning{color:#f8be34;display:inline-block;font-size:16px;line-height:14px;vertical-align:-2px}.shared-jobstatus-controls .job-menu .icon-info-circle{color:#006d9c}.shared-jobstatus-controls .cancel,.shared-jobstatus-controls .playpause,.shared-jobstatus-controls .reload,.shared-jobstatus-controls .stop{font-size:13px}ul.shared-jobstatus-controls-menu-messages.hidden{display:none}ul.shared-jobstatus-controls-menu-messages.hidden+ul,ul.shared-jobstatus-controls-menu-messages.hidden+ul>li:first-child>a{border-top:none;border-top-left-radius:1px;border-top-right-radius:1px}ul.shared-jobstatus-controls-menu-messages>li{border-top:1px dotted #c3cbd4;padding:5px 10px}ul.shared-jobstatus-controls-menu-messages>li:first-child{border:none}ul.shared-jobstatus-controls-menu-messages+.controls{margin-top:0}.shared-jobstatus-samplingmode-dialog .control{display:inline-block}.shared-jobstatus-samplingmode-dialog .control input{margin:0 5px;padding-right:10px;width:6em}.shared-jobstatus-samplingmode-dialog .alert{margin-bottom:10px;padding-right:0}.shared-jobstatus-searchmode{margin-left:5px;position:relative}.shared-jobstatus-searchmode>.btn-pill{padding-left:27px}.shared-jobstatus-searchmode>.btn-pill>[class*=" icon-"],.shared-jobstatus-searchmode>.btn-pill>[class^=icon-]{left:3px;position:absolute;text-align:center;width:27px}.shared-jobstatus-buttons{margin-left:5px}.shared-jobstatus-autopause{clear:both;padding-top:10px}.shared-jobstatus-autopause>.alert{margin-bottom:0}.shared-jobstatus-buttons-sharedialog .control-label{width:100px}.shared-jobstatus-buttons-sharedialog .controls,.shared-jobstatus-buttons-sharedialog .help-block{margin-left:120px}.shared-jobstatus-buttons-sharedialog .add-on.bookmark{height:32px}.shared-jobstatus-buttons-sharedialog .add-on.bookmark:focus{border-collapse:separate;-webkit-box-shadow:0 0 1px 3px #006eaa;box-shadow:0 0 1px 3px #006eaa;outline:0;text-decoration:none}.shared-jobstatus-buttons-sharedialog .add-on.bookmark:focus:active:not([disabled]){-webkit-box-shadow:none;box-shadow:none}.shared-jobstatus-buttons-sharedialog .icon-bookmark{font-size:16px}.shared-jobstatus-buttons-sharedialog p{margin-bottom:20px}.shared-jobstatus-buttons-exportresultsdialog .rerun-msg a{white-space:nowrap}@media print{.shared-jobstatus-buttons,.shared-jobstatus-searchmode,.shared-jobstatus-spinner,.tooltip{display:none!important}}',""])},1457:function(e,t){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=87)}({87:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.inherit=function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}})},1458:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=88)}({0:function(e,t){e.exports=n("require/underscore")},1:function(e,t){e.exports=n("shim/jquery")},32:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.interpolateColors=t.getComputedOpacity=t.getLuminance=t.addAlphaToColor=t.hexFromColor=t.normalizeColor=t.stripOutAlpha=t.colorFromHex=void 0;var r=o(n(1)),i=o(n(0));function o(e){return e&&e.__esModule?e:{default:e}}var a=t.colorFromHex=function(e,t){if("number"!=typeof e&&(e=parseInt(e,16)),(0,i.default)(e).isNaN()||e<0||e>16777215)return null;var n=(16711680&e)>>16,r=(65280&e)>>8,o=255&e;return void 0===t?"rgb("+n+","+r+","+o+")":"rgba("+n+","+r+","+o+","+t+")"},s=(t.stripOutAlpha=function(e){var t=e.split(",");return"a"===t[0].charAt(3)?(t[0]=t[0].replace("rgba","rgb"),t[t.length-1]=")",t=(t=t.join()).replace(",)",")")):e},t.normalizeColor=function(e){var t,n,r=null;if("string"==typeof e&&"#"===e.charAt(0))r=4===e.length?e+e.charAt(1)+e.charAt(2)+e.charAt(3):e;else try{t=e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),n=(t[1]<<16|t[2]<<8|t[3]).toString(16),r="#"+Array(6-n.length).concat([n]).toString().replace(/,/g,0)}catch(e){}return r}),l=t.hexFromColor=function(e){var t=s(e);return t?parseInt(t.replace("#","0x"),16):0};t.addAlphaToColor=function(e,t){var n="number"==typeof e?e:l(e);return a(n,t)},t.getLuminance=function(e){if("number"!=typeof e&&(e=parseInt(e,16)),isNaN(e)||e<0||e>16777215)return 0;var t=(16711680&e)>>16,n=(65280&e)>>8,r=255&e;return Math.round(.2126*t+.7152*n+.0722*r)},t.getComputedOpacity=function(e){var t=r.default.trim(e.attr("fill")),n=function(e){var t=parseFloat(e);return t>=0&&t<=1?t:1};if(!/^rgba/.test(t))return n(e.attr("fill-opacity"));var i=t.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)$/);return i&&i.length>4?n(i[4]):1},t.interpolateColors=function(e,t,n){var r=e>>16&255,i=e>>8&255,o=255&e,a=t>>16&255,s=t>>8&255,l=255&t;return r+Math.round((a-r)*n)<<16|i+Math.round((s-i)*n)<<8|o+Math.round((l-o)*n)}},88:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRotation=t.getYAxisProperties=t.getXAxisProperties=t.yAxisKeyIsTrumped=t.xAxisKeyIsTrumped=t.getLegendProperties=t.arraysAreEquivalent=t.stringToHexObject=t.stringToHexArray=t.capitalize=t.stringToArray=t.stringToFieldList=t.stringToObject=t.normalizeBoolean=t.filterPropsByRegex=t.escapeSVG=t.escapeHtml=t.unescapeChars=t.escapeSafeSplit=t.trimWhitespace=void 0;var r=a(n(1)),i=a(n(0)),o=n(32);function a(e){return e&&e.__esModule?e:{default:e}}var s=t.trimWhitespace=function(e){return e.replace(/^\s*/,"").replace(/\s*$/,"")},l=function(e){return e.replace(/^(["'])(.*)\1$/,"$2")},c=t.escapeSafeSplit=function(e,t,n){n=n||"\\";var r=e.split(t),o=[r.shift()];return(0,i.default)(r).each((function(e){var r=(0,i.default)(o).last();(0,i.default)(r).last()===n?o[o.length-1]+=t+e:o.push(e)})),o},u=t.unescapeChars=function(e,t){return(0,i.default)(t).each((function(t){var n=new RegExp("\\\\\\"+t,"g");e=e.replace(n,t)})),e},d=(t.escapeHtml=function(e){return(""+e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},t.escapeSVG=function(e){return(""+e).replace(//g,">")},t.filterPropsByRegex=function(e,t){if(!(t instanceof RegExp))return e;var n=void 0,r={};for(n in e)e.hasOwnProperty(n)&&t.test(n)&&(r[n]=e[n]);return r}),p=t.normalizeBoolean=function(e,t){if((0,i.default)(e).isUndefined())return!!t;switch("string"==typeof e&&(e=e.toLowerCase()),e){case!0:case 1:case"1":case"yes":case"on":case"true":return!0;case!1:case 0:case"0":case"no":case"off":case"false":return!1;default:return e}},h=t.stringToObject=function(e){if(!e)return!1;var t=void 0,n=void 0,r=void 0,o={},a=(e=s(e)).length;if("{"!==e.charAt(0)||"}"!==e.charAt(a-1))return!1;if(/^{\s*}$/.test(e))return{};e=e.substr(1,a-2);var d=c(e,",");for(t=0;t0&&t.push(n.join("")),n=[]);else{if(i){i=!1,t.push(n.join("")),n=[];continue}i=!0}else{var l=a+1;if(s>l&&("\\"===o.charAt(l)||'"'===o.charAt(l))){n.push(o.charAt(l)),a++;continue}n.push(o.charAt(a))}return n.length>0&&t.push(n.join("")),t.map((function(e){return e.trim()}))},m=t.stringToArray=function(e){if(!e)return!1;var t=(e=s(e)).length;return"["===e.charAt(0)&&"]"===e.charAt(t-1)&&(/^\[\s*]$/.test(e)?[]:(e=e.substr(1,t-2),f(e)))},b=(t.capitalize=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},function(e){return i.default.isNumber(e)?e:"#"===e.substring(0,1)?(0,o.hexFromColor)(e):parseInt(e,16)}),g=(t.stringToHexArray=function(e){var t=void 0,n=void 0,r=void 0;try{r=JSON.parse(e)}catch(t){r=m(e)}if(!r)return!1;for(t=0;t0?r:n)(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.THEMES=t.COLORS_SCP=t.COLORS_PRISMA_DARK=t.COLORS_DARK_MODE=t.COLORS=t.FONT_SIZE=t.FONT_FAMILY=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(11));t.FONT_FAMILY='"Splunk Platform Sans", "Proxima Nova", "Lucinda Grande", Roboto, Droid, "Helvetica Neue", Helvetica, Arial, sans-serif',t.FONT_SIZE="12px";var i=t.COLORS={DEFAULT_BACKGROUND_COLOR:"#ffffff",DEFAULT_FOREGROUND_COLOR:"#000000",DEFAULT_FONT_COLOR:"rgba(0, 0, 0, 0.65)",DEFAULT_LINE_COLOR:"#000000",DEFAULT_LINE_COLOR_SOFT:"rgba(0, 0, 0, 0.1)",DEFAULT_LINE_COLOR_SOFTER:"rgba(0, 0, 0, 0.1)",SEMANTIC_SUCCESS:"#53a051",SEMANTIC_WARNING:"#f8be34",SEMANTIC_ERROR:"#dc4e41"},o=t.COLORS_DARK_MODE={DEFAULT_BACKGROUND_COLOR:"#000000",DEFAULT_FOREGROUND_COLOR:"#ffffff",DEFAULT_FONT_COLOR:"rgba(255, 255, 255, 0.7)",DEFAULT_LINE_COLOR:"#000000",DEFAULT_LINE_COLOR_SOFT:"rgba(255, 255, 255, 0.3)",DEFAULT_LINE_COLOR_SOFTER:"rgba(255, 255, 255, 0.3)",SEMANTIC_SUCCESS:"#53a051",SEMANTIC_WARNING:"#f8be34",SEMANTIC_ERROR:"#dc4e41"},a=t.COLORS_PRISMA_DARK=(0,r.default)({},o,{BLACK1:"#2B2C33",BLACK2:"#23242B",GREY1:"#ACACAD",GREY2:"#818285",GREY3:"#505158",GREY4:"#43454B",GREY5:"#33343B"});t.COLORS_SCP=a,t.THEMES={default:(0,r.default)({},i,{LEGEND_OVERFLOW_ARROW_COLOR_ACTIVE:"rgba(0, 0, 0, 0.65)",LEGEND_OVERFLOW_ARROW_COLOR_INACTIVE:"rgba(0, 0, 0, 0.3)",LEGEND_OVERFLOW_FONT_COLOR:"rgba(0, 0, 0, 0.54)",TOOLTIP_BACKGROUND_COLOR:"#ffffff",TOOLTIP_FONT_COLOR:"#2c2c2c",TOOLTIP_FONT_COLOR_SOFT:"rgba(0, 0, 0, 0.65)",TOOLTIP_BORDER_COLOR:"#000000"}),dark:(0,r.default)({},o,{AXIS_LABELS_FONT_COLOR:"rgba(255, 255, 255, 0.7)",AXIS_TITLE_FONT_COLOR:"rgba(255, 255, 255, 0.7)",LEGEND_FONT_COLOR:"rgba(255, 255, 255, 0.7)",LEGEND_OVERFLOW_ARROW_COLOR_ACTIVE:"rgba(255, 255, 255, 0.7)",LEGEND_OVERFLOW_ARROW_COLOR_INACTIVE:"rgba(255, 255, 255, 0.3)",LEGEND_OVERFLOW_FONT_COLOR:"rgba(255, 255, 255, 0.7)",TOOLTIP_BACKGROUND_COLOR:"#27292e",TOOLTIP_FONT_COLOR:"rgba(255, 255, 255, 0.98)",TOOLTIP_FONT_COLOR_SOFT:"rgba(255, 255, 255, 0.7)",TOOLTIP_BORDER_COLOR:"none"}),prismaDark:(0,r.default)({},a,{DEFAULT_BACKGROUND_COLOR:"#0b0c0e",AXIS_LABELS_FONT_COLOR:"rgba(255, 255, 255, 0.7)",AXIS_TITLE_FONT_COLOR:"rgba(255, 255, 255, 0.7)",AXIS_GRID_LINE_COLOR:"rgba(255, 255, 255, 0.15)",LEGEND_UNHIGHLIGHT_COLOR:"rgba(255, 255, 255, 0.15)",LEGEND_FONT_COLOR:"rgba(255, 255, 255, 0.7)",SERIES_UNHIGHLIGHT_COLOR_PALETTE:[a.GREY3,a.GREY4,a.GREY5],TOOLTIP_BACKGROUND_COLOR:"#27292e",TOOLTIP_FONT_COLOR:"rgba(255, 255, 255, 0.98)",TOOLTIP_FONT_COLOR_SOFT:"rgba(255, 255, 255, 0.7)",LINE_DEFAULT_LINE_WIDTH:1.5})}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(12));t.default=r.default||function(e){for(var t=1;tu;)for(var h,f=l(arguments[u++]),m=d?i(f).concat(d(f)):i(f),b=m.length,g=0;b>g;)h=m[g++],r&&!p.call(f,h)||(n[h]=f[h]);return n}:c},function(e,t,n){var r=n(27),i=n(36);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(5),i=n(6),o=n(29)(!1),a=n(32)("IE_PROTO");e.exports=function(e,t){var n,s=i(e),l=0,c=[];for(n in s)n!=a&&r(s,n)&&c.push(n);for(;t.length>l;)r(s,n=t[l++])&&(~o(c,n)||c.push(n));return c}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(6),i=n(30),o=n(31);e.exports=function(e){return function(t,n,a){var s,l=r(t),c=i(l.length),u=o(a,c);if(e&&n!=n){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(9),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(9),i=Math.max,o=Math.min;e.exports=function(e,t){return(e=r(e))<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(33)("keys"),i=n(35);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t,n){var r=n(2),i=n(1),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(34)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports=!0},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(8);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setTheme=function(e){i.THEMES[e]?a=e:(r.debug('Theme "'+e+'" not available - falling back to default'),a="default");o=i.THEMES[a]},t.getThemeProperty=function(e){if(!o[e])return void r.debug('Theme property "'+e+'" not available in '+a+" theme");return o[e]},t.getCurrentTheme=function(){return a};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(41)),i=n(10);var o=i.THEMES.default,a="default"},function(e,t){e.exports=n(1460)}])},146:function(e,t,n){"use strict";n.d(t,"c",(function(){return g})),n.d(t,"b",(function(){return A})),n.d(t,"a",(function(){return _}));var r,i,o=n(215),a=n(14),s=n(15),l=n(0),c=n(108),u=n(281),d=n.n(u),p=n(129),h=n.n(p),f={};Object(l.a)(f,{default:()=>g}),Object(l.c)(f,u);var m,b,g=null!=(i=null==(r=d.a)?void 0:r.default)?i:d.a,v=Object(s.a)(g)` margin-bottom: 0px; margin-top: 3px; `,y=Object(s.a)(o.a)` > [data-test='content'] { display: inline; } `,A=({errors:e,errorA11yToggle:t,appearance:n="default",testName:r,errorHeader:i})=>{const o=(0,l.g.useMemo)(()=>e.length?1===e.length?e[0]:null!=i?i:(0,a.a._)("Please correct the following errors: "):"",[e,i]);return o?l.f.createElement(y,{appearance:n,type:"error","aria-live":"assertive",role:"alert","aria-atomic":!0,"data-test-name":r},(0,a.a._)(o),t?"":c.e,e.length>1&&l.f.createElement(v,null,e.map(e=>l.f.createElement(g.Item,{key:e},(0,a.a._)(e))))):l.f.createElement(l.f.Fragment,null)},M={};Object(l.a)(M,{default:()=>_}),Object(l.c)(M,p);var _=null!=(b=null==(m=h.a)?void 0:m.default)?b:h.a},1460:function(e,t){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=43)}({43:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=window.console,i=t.setLoggingConsole=function(e){r=e},o=function(e){return function(){var t;(t=r)[e].apply(t,arguments)}},a=t.debug=o("debug"),s=t.info=o("info"),l=t.warn=o("warn"),c=t.error=o("error"),u=t.log=o("log"),d=t.trace=o("trace");t.default={setLoggingConsole:i,debug:a,info:s,warn:l,error:c,log:u,trace:d}}})},1461:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=42)}({0:function(e,t){e.exports=n("require/underscore")},42:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.roundToDecimal=t.valuesAreNumeric=t.isCommaSeparatedNumber=t.getDecimalPrecision=t.degreeToRadian=t.roundWithMinMax=t.roundWithMin=t.nearestPowerOfTen=t.absPowerTen=t.absLogBaseTen=t.logBaseTen=t.parseFloat=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(0));var i=/^( )*(0x|-0x)/,o=/(^[-+]?[0-9]*[.]?[0-9]*$)|(^[-+]?[0-9][.]?[0-9]*e[-+]?[0-9][0-9]*$)/i,a=/(^[-+]?([0]|([1-9][0-9]{0,2})|(([1-9][0-9]{0,2}[,])([0-9]{3}[,])*[0-9]{3}))(([.][0-9]+)?)$)/,s=function(e){return i.test(e)?parseInt(e,16):o.test(e)?parseFloat(e):NaN};t.parseFloat=s;var l=t.logBaseTen=function(e){var t=Math.log(e)/Math.LN10;return Math.round(1e4*t)/1e4},c=t.absLogBaseTen=function(e){if("number"!=typeof e&&(e=parseFloat(e)),(0,r.default)(e).isNaN())return e;var t=e<0;t&&(e=-e),e<10&&(e+=(10-e)/10);var n=l(e);return t?-n:n},u=t.absPowerTen=function(e){if("number"!=typeof e&&(e=parseFloat(e)),(0,r.default)(e).isNaN())return e;var t=e<0,n=void 0;return t&&(e=-e),(n=Math.pow(10,e))<10&&(n=10*(n-1)/9),n=t?-n:n,Math.round(1e3*n)/1e3},d=t.nearestPowerOfTen=function(e){if("number"!=typeof e)return NaN;var t=e<0,n=l(e=t?-e:e),r=Math.pow(10,Math.floor(n));return t?-r:r},p=t.roundWithMin=function(e,t){return Math.max(Math.round(e),t)},h=t.roundWithMinMax=function(e,t,n){var r=Math.round(e);return rn?n:r},f=t.degreeToRadian=function(e){return e*Math.PI/180},m=t.getDecimalPrecision=function(e,t){t=Math.min(t||1/0,20);for(var n=0;n0?e[0]:null),(0,r.default)(e).isNull())||(n++,(!!s(e)||b(e))&&t++)})),0!==n&&t>=n/2},v=t.roundToDecimal=function(e,t){return void 0===t||0==+t?Math.round(e):(e=+e,t=+t,isNaN(e)||"number"!=typeof t||t%1!=0?NaN:(e=e.toString().split("e"),+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]-t:-t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]+t:t))))};t.default={parseFloat:s,logBaseTen:l,absLogBaseTen:c,absPowerTen:u,nearestPowerOfTen:d,roundWithMin:p,roundWithMinMax:h,degreeToRadian:f,getDecimalPrecision:m,valuesAreNumeric:g,roundToDecimal:v}}})},1462:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=32)}({0:function(e,t){e.exports=n("require/underscore")},1:function(e,t){e.exports=n("shim/jquery")},32:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.interpolateColors=t.getComputedOpacity=t.getLuminance=t.addAlphaToColor=t.hexFromColor=t.normalizeColor=t.stripOutAlpha=t.colorFromHex=void 0;var r=o(n(1)),i=o(n(0));function o(e){return e&&e.__esModule?e:{default:e}}var a=t.colorFromHex=function(e,t){if("number"!=typeof e&&(e=parseInt(e,16)),(0,i.default)(e).isNaN()||e<0||e>16777215)return null;var n=(16711680&e)>>16,r=(65280&e)>>8,o=255&e;return void 0===t?"rgb("+n+","+r+","+o+")":"rgba("+n+","+r+","+o+","+t+")"},s=(t.stripOutAlpha=function(e){var t=e.split(",");return"a"===t[0].charAt(3)?(t[0]=t[0].replace("rgba","rgb"),t[t.length-1]=")",t=(t=t.join()).replace(",)",")")):e},t.normalizeColor=function(e){var t,n,r=null;if("string"==typeof e&&"#"===e.charAt(0))r=4===e.length?e+e.charAt(1)+e.charAt(2)+e.charAt(3):e;else try{t=e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/),n=(t[1]<<16|t[2]<<8|t[3]).toString(16),r="#"+Array(6-n.length).concat([n]).toString().replace(/,/g,0)}catch(e){}return r}),l=t.hexFromColor=function(e){var t=s(e);return t?parseInt(t.replace("#","0x"),16):0};t.addAlphaToColor=function(e,t){var n="number"==typeof e?e:l(e);return a(n,t)},t.getLuminance=function(e){if("number"!=typeof e&&(e=parseInt(e,16)),isNaN(e)||e<0||e>16777215)return 0;var t=(16711680&e)>>16,n=(65280&e)>>8,r=255&e;return Math.round(.2126*t+.7152*n+.0722*r)},t.getComputedOpacity=function(e){var t=r.default.trim(e.attr("fill")),n=function(e){var t=parseFloat(e);return t>=0&&t<=1?t:1};if(!/^rgba/.test(t))return n(e.attr("fill-opacity"));var i=t.match(/^rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)$/);return i&&i.length>4?n(i[4]):1},t.interpolateColors=function(e,t,n){var r=e>>16&255,i=e>>8&255,o=255&e,a=t>>16&255,s=t>>8&255,l=255&t;return r+Math.round((a-r)*n)<<16|i+Math.round((s-i)*n)<<8|o+Math.round((l-o)*n)}}})},1463:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=2)}([function(e,t){e.exports=n(331)},,function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=function(e){return e&&e.__esModule?e:{default:e}}(n(0));var i=function(){return r.default},o=i();o.noConflict=function(){return i()},t.default=o,e.exports=t.default}])},1464:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=51)}({0:function(e,t){e.exports=n("require/underscore")},1:function(e,t){e.exports=n("shim/jquery")},51:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(n(1)),i=o(n(0));function o(e){return e&&e.__esModule?e:{default:e}}function a(e){this.renderer=e,this.ELLIPSIS="..."}a.prototype={ellipsize:function(e,t,n,o,a){(0,i.default)(e).isArray()&&(e=e.join(","));var s=(e=r.default.trim(e)).length;if(!e||""===e)return"";if(s<=3||!n||isNaN(n)||n<=0)return e;if(!t||isNaN(t)||t<=0)return this.ELLIPSIS;if(!(this._predictLineWidth(e,n,o)-t>0))return e;var l=this._predictLineWidth(this.ELLIPSIS,n,o);switch(a){case"end":return this.trimStringToWidth(e,t-l,n,o)+"...";case"start":return"..."+this.reverseString(this.trimStringToWidth(this.reverseString(e),t-l,n,o));default:var c=(t-l)/2;return this.trimStringToWidth(e,c,n,o)+"..."+this.reverseString(this.trimStringToWidth(this.reverseString(e),c,n,o))}},trimStringToWidth:function(e,t,n,r){var i=this,o=function(o,a){for(var s=void 0;a>o+1;)s=Math.floor((o+a)/2),i.predictTextWidth(e.substr(0,s),n,r)>t?a=s:o=s;return o}(0,e.length);return e.substr(0,o)},reverseString:function(e){return e.split("").reverse().join("")},predictTextWidth:function(e,t,n){if((0,i.default)(e).isArray()&&(e=e.join(",")),!e||""===e||!t||isNaN(t))return 0;var o=e.split(/\s*\s*/),a=o.length;if(a>1){for(var s=0,l=0;ls&&(s=c)}return s}return this._predictLineWidth(r.default.trim(e),t,n)},_predictLineWidth:function(e,t,n){if(!e||!t)return 0;var r=this.getTextBBox(e,t,n);return r?r.width:0},predictTextHeight:function(e,t,n){if((0,i.default)(e).isArray()&&(e=e.join(",")),!t||!e)return 0;var r=this.getTextBBox(e,t,n);return r?r.height:0},getTextBBox:function(e,t,n){if(n=r.default.extend(n,{fontSize:t+"px"}),!isNaN(parseFloat(t,10)))return this.textPredicter&&this.textPredicter.destroy(),this.textPredicter=this.renderer.text(e,0,0).attr({visibility:"hidden"}).css(n).add(),this.textPredicter.getBBox()},adjustLabels:function(e,t,n,i,o){var a=void 0,s=void 0,l=void 0,c=r.default.extend(!0,[],e),u=this.getMaxWidthForFontRange(c,n,i);if(u[i]<=t)l=!1,s=i;else for(l=!0,s=i-1;s>n;s--)if(u[s]<=t){l=!1;break}if(l&&"none"!==o)for(a=0;ai[t]&&(r=o,i[t]=a)}for(var s=t+1;s<=n;s++)i[s]=this.predictTextWidth(e[r]||"",s);return i},bBoxesOverlap:function(e,t,n,r){n=n||0,r=r||0;var i=e.x-n,o=t.x-n,a=e.x+e.width+2*n,s=t.x+t.width+2*n,l=e.y-r,c=t.y-r,u=e.y+e.height+2*r,d=t.y+t.height+2*r;return io&&lc},destroy:function(){this.textPredicter&&(this.textPredicter.destroy(),this.textPredicter=!1)}},t.default=a,e.exports=t.default}})},1465:function(e,t){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=22)}({22:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),window.locale_name()in{ko_KR:!0,zh_CN:!0,zh_TW:!0}&&(window._i18n_locale.date_formats.short={pattern:"yy/MM/dd",format:"%(yy)s/%(MM)s/%(dd)s"},window._i18n_locale.date_formats.medium={pattern:"yyyy/MM/dd",format:"%(yyyy)s/%(MM)s/%(dd)s"},window._i18n_locale.time_formats.short={pattern:"H:mm",format:"%(H)s:%(mm)s"},window._i18n_locale.time_formats.medium={pattern:"H:mm:ss",format:"%(H)s:%(mm)s:%(ss)s"});var r=[[/^ccc MMM d$/,"M/d (ccc)"],[/^YYYY-MM/,"YYYY/MM"],[/MM-dd/,"MM/dd"]],i={ja_JP:r,ko_KR:r,zh_CN:r,zh_TW:r},o=[["MMM d","d MMM"]],a=window.format_date;window.format_date=function(e,t){t=t||"medium";var n,r,s=window.locale_name();if(t&&"string"==typeof t&&window.locale_uses_day_before_month())for(r=o,n=0;n0?r:n)(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.THEMES=t.COLORS_SCP=t.COLORS_PRISMA_DARK=t.COLORS_DARK_MODE=t.COLORS=t.FONT_SIZE=t.FONT_FAMILY=void 0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(11));t.FONT_FAMILY='"Splunk Platform Sans", "Proxima Nova", "Lucinda Grande", Roboto, Droid, "Helvetica Neue", Helvetica, Arial, sans-serif',t.FONT_SIZE="12px";var i=t.COLORS={DEFAULT_BACKGROUND_COLOR:"#ffffff",DEFAULT_FOREGROUND_COLOR:"#000000",DEFAULT_FONT_COLOR:"rgba(0, 0, 0, 0.65)",DEFAULT_LINE_COLOR:"#000000",DEFAULT_LINE_COLOR_SOFT:"rgba(0, 0, 0, 0.1)",DEFAULT_LINE_COLOR_SOFTER:"rgba(0, 0, 0, 0.1)",SEMANTIC_SUCCESS:"#53a051",SEMANTIC_WARNING:"#f8be34",SEMANTIC_ERROR:"#dc4e41"},o=t.COLORS_DARK_MODE={DEFAULT_BACKGROUND_COLOR:"#000000",DEFAULT_FOREGROUND_COLOR:"#ffffff",DEFAULT_FONT_COLOR:"rgba(255, 255, 255, 0.7)",DEFAULT_LINE_COLOR:"#000000",DEFAULT_LINE_COLOR_SOFT:"rgba(255, 255, 255, 0.3)",DEFAULT_LINE_COLOR_SOFTER:"rgba(255, 255, 255, 0.3)",SEMANTIC_SUCCESS:"#53a051",SEMANTIC_WARNING:"#f8be34",SEMANTIC_ERROR:"#dc4e41"},a=t.COLORS_PRISMA_DARK=(0,r.default)({},o,{BLACK1:"#2B2C33",BLACK2:"#23242B",GREY1:"#ACACAD",GREY2:"#818285",GREY3:"#505158",GREY4:"#43454B",GREY5:"#33343B"});t.COLORS_SCP=a,t.THEMES={default:(0,r.default)({},i,{LEGEND_OVERFLOW_ARROW_COLOR_ACTIVE:"rgba(0, 0, 0, 0.65)",LEGEND_OVERFLOW_ARROW_COLOR_INACTIVE:"rgba(0, 0, 0, 0.3)",LEGEND_OVERFLOW_FONT_COLOR:"rgba(0, 0, 0, 0.54)",TOOLTIP_BACKGROUND_COLOR:"#ffffff",TOOLTIP_FONT_COLOR:"#2c2c2c",TOOLTIP_FONT_COLOR_SOFT:"rgba(0, 0, 0, 0.65)",TOOLTIP_BORDER_COLOR:"#000000"}),dark:(0,r.default)({},o,{AXIS_LABELS_FONT_COLOR:"rgba(255, 255, 255, 0.7)",AXIS_TITLE_FONT_COLOR:"rgba(255, 255, 255, 0.7)",LEGEND_FONT_COLOR:"rgba(255, 255, 255, 0.7)",LEGEND_OVERFLOW_ARROW_COLOR_ACTIVE:"rgba(255, 255, 255, 0.7)",LEGEND_OVERFLOW_ARROW_COLOR_INACTIVE:"rgba(255, 255, 255, 0.3)",LEGEND_OVERFLOW_FONT_COLOR:"rgba(255, 255, 255, 0.7)",TOOLTIP_BACKGROUND_COLOR:"#27292e",TOOLTIP_FONT_COLOR:"rgba(255, 255, 255, 0.98)",TOOLTIP_FONT_COLOR_SOFT:"rgba(255, 255, 255, 0.7)",TOOLTIP_BORDER_COLOR:"none"}),prismaDark:(0,r.default)({},a,{DEFAULT_BACKGROUND_COLOR:"#0b0c0e",AXIS_LABELS_FONT_COLOR:"rgba(255, 255, 255, 0.7)",AXIS_TITLE_FONT_COLOR:"rgba(255, 255, 255, 0.7)",AXIS_GRID_LINE_COLOR:"rgba(255, 255, 255, 0.15)",LEGEND_UNHIGHLIGHT_COLOR:"rgba(255, 255, 255, 0.15)",LEGEND_FONT_COLOR:"rgba(255, 255, 255, 0.7)",SERIES_UNHIGHLIGHT_COLOR_PALETTE:[a.GREY3,a.GREY4,a.GREY5],TOOLTIP_BACKGROUND_COLOR:"#27292e",TOOLTIP_FONT_COLOR:"rgba(255, 255, 255, 0.98)",TOOLTIP_FONT_COLOR_SOFT:"rgba(255, 255, 255, 0.7)",LINE_DEFAULT_LINE_WIDTH:1.5})}},function(e,t,n){"use strict";t.__esModule=!0;var r=function(e){return e&&e.__esModule?e:{default:e}}(n(12));t.default=r.default||function(e){for(var t=1;tu;)for(var h,f=l(arguments[u++]),m=d?i(f).concat(d(f)):i(f),b=m.length,g=0;b>g;)h=m[g++],r&&!p.call(f,h)||(n[h]=f[h]);return n}:c},function(e,t,n){var r=n(27),i=n(36);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(5),i=n(6),o=n(29)(!1),a=n(32)("IE_PROTO");e.exports=function(e,t){var n,s=i(e),l=0,c=[];for(n in s)n!=a&&r(s,n)&&c.push(n);for(;t.length>l;)r(s,n=t[l++])&&(~o(c,n)||c.push(n));return c}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(6),i=n(30),o=n(31);e.exports=function(e){return function(t,n,a){var s,l=r(t),c=i(l.length),u=o(a,c);if(e&&n!=n){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(9),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(9),i=Math.max,o=Math.min;e.exports=function(e,t){return(e=r(e))<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(33)("keys"),i=n(35);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t,n){var r=n(2),i=n(1),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(34)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports=!0},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(8);e.exports=function(e){return Object(r(e))}}])},1467:function(e,t,n){var r;r=function(){var e=!0;function t(t){function n(e){var n=t.match(e);return n&&n.length>1&&n[1]||""}function r(e){var n=t.match(e);return n&&n.length>1&&n[2]||""}var i,a=n(/(ipod|iphone|ipad)/i).toLowerCase(),s=!/like android/i.test(t)&&/android/i.test(t),l=/nexus\s*[0-6]\s*/i.test(t),c=!l&&/nexus\s*[0-9]+/i.test(t),u=/CrOS/.test(t),d=/silk/i.test(t),p=/sailfish/i.test(t),h=/tizen/i.test(t),f=/(web|hpw)(o|0)s/i.test(t),m=/windows phone/i.test(t),b=(/SamsungBrowser/i.test(t),!m&&/windows/i.test(t)),g=!a&&!d&&/macintosh/i.test(t),v=!s&&!p&&!h&&!f&&/linux/i.test(t),y=r(/edg([ea]|ios)\/(\d+(\.\d+)?)/i),A=n(/version\/(\d+(\.\d+)?)/i),M=/tablet/i.test(t)&&!/tablet pc/i.test(t),_=!M&&/[^-]mobi/i.test(t),w=/xbox/i.test(t);/opera/i.test(t)?i={name:"Opera",opera:e,version:A||n(/(?:opera|opr|opios)[\s\/](\d+(\.\d+)?)/i)}:/opr\/|opios/i.test(t)?i={name:"Opera",opera:e,version:n(/(?:opr|opios)[\s\/](\d+(\.\d+)?)/i)||A}:/SamsungBrowser/i.test(t)?i={name:"Samsung Internet for Android",samsungBrowser:e,version:A||n(/(?:SamsungBrowser)[\s\/](\d+(\.\d+)?)/i)}:/Whale/i.test(t)?i={name:"NAVER Whale browser",whale:e,version:n(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i)}:/MZBrowser/i.test(t)?i={name:"MZ Browser",mzbrowser:e,version:n(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/coast/i.test(t)?i={name:"Opera Coast",coast:e,version:A||n(/(?:coast)[\s\/](\d+(\.\d+)?)/i)}:/focus/i.test(t)?i={name:"Focus",focus:e,version:n(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i)}:/yabrowser/i.test(t)?i={name:"Yandex Browser",yandexbrowser:e,version:A||n(/(?:yabrowser)[\s\/](\d+(\.\d+)?)/i)}:/ucbrowser/i.test(t)?i={name:"UC Browser",ucbrowser:e,version:n(/(?:ucbrowser)[\s\/](\d+(?:\.\d+)+)/i)}:/mxios/i.test(t)?i={name:"Maxthon",maxthon:e,version:n(/(?:mxios)[\s\/](\d+(?:\.\d+)+)/i)}:/epiphany/i.test(t)?i={name:"Epiphany",epiphany:e,version:n(/(?:epiphany)[\s\/](\d+(?:\.\d+)+)/i)}:/puffin/i.test(t)?i={name:"Puffin",puffin:e,version:n(/(?:puffin)[\s\/](\d+(?:\.\d+)?)/i)}:/sleipnir/i.test(t)?i={name:"Sleipnir",sleipnir:e,version:n(/(?:sleipnir)[\s\/](\d+(?:\.\d+)+)/i)}:/k-meleon/i.test(t)?i={name:"K-Meleon",kMeleon:e,version:n(/(?:k-meleon)[\s\/](\d+(?:\.\d+)+)/i)}:m?(i={name:"Windows Phone",osname:"Windows Phone",windowsphone:e},y?(i.msedge=e,i.version=y):(i.msie=e,i.version=n(/iemobile\/(\d+(\.\d+)?)/i))):/msie|trident/i.test(t)?i={name:"Internet Explorer",msie:e,version:n(/(?:msie |rv:)(\d+(\.\d+)?)/i)}:u?i={name:"Chrome",osname:"Chrome OS",chromeos:e,chromeBook:e,chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:/edg([ea]|ios)/i.test(t)?i={name:"Microsoft Edge",msedge:e,version:y}:/vivaldi/i.test(t)?i={name:"Vivaldi",vivaldi:e,version:n(/vivaldi\/(\d+(\.\d+)?)/i)||A}:p?i={name:"Sailfish",osname:"Sailfish OS",sailfish:e,version:n(/sailfish\s?browser\/(\d+(\.\d+)?)/i)}:/seamonkey\//i.test(t)?i={name:"SeaMonkey",seamonkey:e,version:n(/seamonkey\/(\d+(\.\d+)?)/i)}:/firefox|iceweasel|fxios/i.test(t)?(i={name:"Firefox",firefox:e,version:n(/(?:firefox|iceweasel|fxios)[ \/](\d+(\.\d+)?)/i)},/\((mobile|tablet);[^\)]*rv:[\d\.]+\)/i.test(t)&&(i.firefoxos=e,i.osname="Firefox OS")):d?i={name:"Amazon Silk",silk:e,version:n(/silk\/(\d+(\.\d+)?)/i)}:/phantom/i.test(t)?i={name:"PhantomJS",phantom:e,version:n(/phantomjs\/(\d+(\.\d+)?)/i)}:/slimerjs/i.test(t)?i={name:"SlimerJS",slimer:e,version:n(/slimerjs\/(\d+(\.\d+)?)/i)}:/blackberry|\bbb\d+/i.test(t)||/rim\stablet/i.test(t)?i={name:"BlackBerry",osname:"BlackBerry OS",blackberry:e,version:A||n(/blackberry[\d]+\/(\d+(\.\d+)?)/i)}:f?(i={name:"WebOS",osname:"WebOS",webos:e,version:A||n(/w(?:eb)?osbrowser\/(\d+(\.\d+)?)/i)},/touchpad\//i.test(t)&&(i.touchpad=e)):/bada/i.test(t)?i={name:"Bada",osname:"Bada",bada:e,version:n(/dolfin\/(\d+(\.\d+)?)/i)}:h?i={name:"Tizen",osname:"Tizen",tizen:e,version:n(/(?:tizen\s?)?browser\/(\d+(\.\d+)?)/i)||A}:/qupzilla/i.test(t)?i={name:"QupZilla",qupzilla:e,version:n(/(?:qupzilla)[\s\/](\d+(?:\.\d+)+)/i)||A}:/chromium/i.test(t)?i={name:"Chromium",chromium:e,version:n(/(?:chromium)[\s\/](\d+(?:\.\d+)?)/i)||A}:/chrome|crios|crmo/i.test(t)?i={name:"Chrome",chrome:e,version:n(/(?:chrome|crios|crmo)\/(\d+(\.\d+)?)/i)}:s?i={name:"Android",version:A}:/safari|applewebkit/i.test(t)?(i={name:"Safari",safari:e},A&&(i.version=A)):a?(i={name:"iphone"==a?"iPhone":"ipad"==a?"iPad":"iPod"},A&&(i.version=A)):i=/googlebot/i.test(t)?{name:"Googlebot",googlebot:e,version:n(/googlebot\/(\d+(\.\d+))/i)||A}:{name:n(/^(.*)\/(.*) /),version:r(/^(.*)\/(.*) /)},!i.msedge&&/(apple)?webkit/i.test(t)?(/(apple)?webkit\/537\.36/i.test(t)?(i.name=i.name||"Blink",i.blink=e):(i.name=i.name||"Webkit",i.webkit=e),!i.version&&A&&(i.version=A)):!i.opera&&/gecko\//i.test(t)&&(i.name=i.name||"Gecko",i.gecko=e,i.version=i.version||n(/gecko\/(\d+(\.\d+)?)/i)),i.windowsphone||!s&&!i.silk?!i.windowsphone&&a?(i[a]=e,i.ios=e,i.osname="iOS"):g?(i.mac=e,i.osname="macOS"):w?(i.xbox=e,i.osname="Xbox"):b?(i.windows=e,i.osname="Windows"):v&&(i.linux=e,i.osname="Linux"):(i.android=e,i.osname="Android");var O="";i.windows?O=function(e){switch(e){case"NT":return"NT";case"XP":return"XP";case"NT 5.0":return"2000";case"NT 5.1":return"XP";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}}(n(/Windows ((NT|XP)( \d\d?.\d)?)/i)):i.windowsphone?O=n(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i):i.mac?O=(O=n(/Mac OS X (\d+([_\.\s]\d+)*)/i)).replace(/[_\s]/g,"."):a?O=(O=n(/os (\d+([_\s]\d+)*) like mac os x/i)).replace(/[_\s]/g,"."):s?O=n(/android[ \/-](\d+(\.\d+)*)/i):i.webos?O=n(/(?:web|hpw)os\/(\d+(\.\d+)*)/i):i.blackberry?O=n(/rim\stablet\sos\s(\d+(\.\d+)*)/i):i.bada?O=n(/bada\/(\d+(\.\d+)*)/i):i.tizen&&(O=n(/tizen[\/\s](\d+(\.\d+)*)/i)),O&&(i.osversion=O);var x=!i.windows&&O.split(".")[0];return M||c||"ipad"==a||s&&(3==x||x>=4&&!_)||i.silk?i.tablet=e:(_||"iphone"==a||"ipod"==a||s||l||i.blackberry||i.webos||i.bada)&&(i.mobile=e),i.msedge||i.msie&&i.version>=10||i.yandexbrowser&&i.version>=15||i.vivaldi&&i.version>=1||i.chrome&&i.version>=20||i.samsungBrowser&&i.version>=4||i.whale&&1===o([i.version,"1.0"])||i.mzbrowser&&1===o([i.version,"6.0"])||i.focus&&1===o([i.version,"1.0"])||i.firefox&&i.version>=20||i.safari&&i.version>=6||i.opera&&i.version>=10||i.ios&&i.osversion&&i.osversion.split(".")[0]>=6||i.blackberry&&i.version>=10.1||i.chromium&&i.version>=20?i.a=e:i.msie&&i.version<10||i.chrome&&i.version<20||i.firefox&&i.version<20||i.safari&&i.version<6||i.opera&&i.version<10||i.ios&&i.osversion&&i.osversion.split(".")[0]<6||i.chromium&&i.version<20?i.c=e:i.x=e,i}var n=t("undefined"!=typeof navigator&&navigator.userAgent||"");function r(e){return e.split(".").length}function i(e,t){var n,r=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(n=0;n=0;){if(n[0][t]>n[1][t])return 1;if(n[0][t]!==n[1][t])return-1;if(0===t)return 0}}function a(e,r,i){var a=n;"string"==typeof r&&(i=r,r=void 0),void 0===r&&(r=!1),i&&(a=t(i));var s=""+a.version;for(var l in e)if(e.hasOwnProperty(l)&&a[l]){if("string"!=typeof e[l])throw new Error("Browser version in the minVersion map should be a string: "+l+": "+String(e));return o([s,e[l]])<0}return r}return n.test=function(e){for(var t=0;t7?parseInt(t[7],10):0):this.isInvalid=!0}var d=function(e){return new u(e)},p={SECS_PER_MIN:60,SECS_PER_HOUR:3600,isoToDateObject:function(e){return(0,i.default)(e).toDate()},getEpochTimeFromISO:function(e){return(p.isoToDateObject(e).getTime()/1e3).toFixed(3)},extractBdTime:function(e){return d(e)},determineLabelGranularity:function(e,t){if(e[0]instanceof u||(e=(0,r.default)(e).map(p.extractBdTime)),1===(e=(0,r.default)(e).filter((function(e){return!e.isInvalid}))).length&&(!t||0===t.length))return 0===e[0].millisecond?"second":"millisecond";if(1===e.length&&t)return function(e,t){var n=parseFloat(t[0]);return e instanceof u||(e=d(e)),n?n>=0&&n<1||0!==e.millisecond?"millisecond":n>=1&&n<60||0!==e.second?"second":n>=60&&n<3600||0!==e.minute?"minute":n>=3600&&n<=82800||0!==e.hour?"hour":n>82800&&n<=2419200||1!==e.day?"day":n>2419200&&n<=31535999||1!==e.month?"month":n>=31536e3?"year":(a.log("_span value ("+n+") did not meet any time formatting condition"),"second"):0===e.millisecond?"second":"millisecond"}(e[0],t);var n=[],i=[],o=[],s=[],l=[],c=[],h=function(e,t){for(var n=0;n0?r:n)(e)}},function(e,t){e.exports=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(27),i=n(15);e.exports=function(e){return r(i(e))}},function(e,t){e.exports={}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(14),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t,n){var r=n(28)("keys"),i=n(21);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},,function(e,t){e.exports=!0},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(3),i=n(2).document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(18);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(5),i=n(2),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(23)?"pure":"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(15);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(12),i=n(70),o=n(71),a=n(13),s=n(19),l=n(72),c={},u={};(t=e.exports=function(e,t,n,d,p){var h,f,m,b,g=p?function(){return e}:l(e),v=r(n,d,t?2:1),y=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(h=s(e.length);h>y;y++)if((b=t?v(a(f=e[y])[0],f[1]):v(e[y]))===c||b===u)return b}else for(m=g.call(e);!(f=m.next()).done;)if((b=i(m,v,f.value,t))===c||b===u)return b}).BREAK=c,t.RETURN=u},,function(e,t,n){"use strict";var r=n(23),i=n(11),o=n(60),a=n(6),s=n(17),l=n(61),c=n(40),u=n(64),d=n(8)("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,f,m,b,g){l(n,t,f);var v,y,A,M=function(e){if(!p&&e in x)return x[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},_=t+" Iterator",w="values"==m,O=!1,x=e.prototype,z=x[d]||x["@@iterator"]||m&&x[m],C=z||M(m),S=m?w?M("entries"):C:void 0,T="Array"==t&&x.entries||z;if(T&&(A=u(T.call(new e)))!==Object.prototype&&A.next&&(c(A,_,!0),r||"function"==typeof A[d]||a(A,d,h)),w&&z&&"values"!==z.name&&(O=!0,C=function(){return z.call(this)}),r&&!g||!p&&!O&&x[d]||a(x,d,C),s[t]=C,s[_]=h,m)if(v={values:w?C:M("values"),keys:b?C:M("keys"),entries:S},g)for(y in v)y in x||o(x,y,v[y]);else i(i.P+i.F*(p||O),t,v);return v}},function(e,t,n){e.exports=!n(4)&&!n(9)((function(){return 7!=Object.defineProperty(n(25)("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(3);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var r=n(37),i=n(29);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(10),i=n(16),o=n(38)(!1),a=n(20)("IE_PROTO");e.exports=function(e,t){var n,s=i(e),l=0,c=[];for(n in s)n!=a&&r(s,n)&&c.push(n);for(;t.length>l;)r(s,n=t[l++])&&(~o(c,n)||c.push(n));return c}},function(e,t,n){var r=n(16),i=n(19),o=n(39);e.exports=function(e){return function(t,n,a){var s,l=r(t),c=i(l.length),u=o(a,c);if(e&&n!=n){for(;c>u;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var r=n(14),i=Math.max,o=Math.min;e.exports=function(e,t){return(e=r(e))<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(7).f,i=n(10),o=n(8)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},,,,function(e,t,n){var r=n(13),i=n(62),o=n(29),a=n(20)("IE_PROTO"),s=function(){},l=function(){var e,t=n(25)("iframe"),r=o.length;for(t.style.display="none",n(63).appendChild(t),t.src="javascript:",(e=t.contentWindow.document).open(),e.write("