File: //home/arjun/projects/buyercall/build/public/vendor_js.5383f2a370de87bac695.js
/*! For license information please see vendor_js.5383f2a370de87bac695.js.LICENSE.txt */
(()=>{var __webpack_modules__={"./node_modules/@popperjs/core/lib/createPopper.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPopper: () => (/* binding */ createPopper),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]),\n/* harmony export */ popperGenerator: () => (/* binding */ popperGenerator)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");\n/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");\n/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js");\n/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js");\n/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n\n\n\n\n\n\n\n\n\nvar DEFAULT_OPTIONS = {\n placement: \'bottom\',\n modifiers: [],\n strategy: \'absolute\'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === \'function\');\n });\n}\n\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: \'bottom\',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === \'function\' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [],\n popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don\'t proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_4__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(popper), state.options.strategy === \'fixed\'),\n popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn\'t persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === \'function\') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_7__["default"])(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === \'function\') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nvar createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/createPopper.js?')},"./node_modules/@popperjs/core/lib/dom-utils/contains.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ contains)\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/contains.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getBoundingClientRect)\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");\n\n\n\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getClippingRect)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js");\n/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js");\n/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js");\n/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");\n/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");\n/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === \'fixed\');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element)));\n} // A "clipping parent" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element));\n var canEscapeClipping = [\'absolute\', \'fixed\'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0;\n var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element;\n\n if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== \'body\';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nfunction getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === \'clippingParents\' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top);\n accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right);\n accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom);\n accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getCompositeRect)\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");\n/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");\n\n\n\n\n\n\n\n\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1;\n var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent);\n var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent);\n var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent);\n var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== \'body\' || // https://github.com/popperjs/popper-core/issues/1078\n (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) {\n scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent);\n }\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) {\n offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getComputedStyle)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n\nfunction getComputedStyle(element) {\n return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element);\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getDocumentElement)\n/* harmony export */ });\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n\nfunction getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getDocumentRect)\n/* harmony export */ });\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");\n\n\n\n\n // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);\n var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);\n var y = -winScroll.scrollTop;\n\n if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === \'rtl\') {\n x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getHTMLElementScroll)\n/* harmony export */ });\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getLayoutRect)\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");\n // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn\'t take into account transforms.\n\nfunction getLayoutRect(element) {\n var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it\'s not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getNodeName)\n/* harmony export */ });\nfunction getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js?")},"./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getNodeScroll)\n/* harmony export */ });\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js");\n\n\n\n\nfunction getNodeScroll(node) {\n if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) {\n return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node);\n } else {\n return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node);\n }\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getOffsetParent)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");\n\n\n\n\n\n\n\n\nfunction getTrueOffsetParent(element) {\n if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837\n (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === \'fixed\') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());\n var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])());\n\n if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);\n\n if (elementCss.position === \'fixed\') {\n return null;\n }\n }\n\n var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element);\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && [\'html\', \'body\'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) {\n var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== \'none\' || css.perspective !== \'none\' || css.contain === \'paint\' || [\'transform\', \'perspective\'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === \'filter\' || isFirefox && css.filter && css.filter !== \'none\') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === \'static\') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === \'html\' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === \'body\' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === \'static\')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getParentNode)\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n\n\n\nfunction getParentNode(element) {\n if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === \'html\') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback\n\n );\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getScrollParent)\n/* harmony export */ });\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js");\n/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n\n\n\n\nfunction getScrollParent(node) {\n if ([\'html\', \'body\', \'#document\'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) {\n return node;\n }\n\n return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node));\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getViewportRect)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js");\n/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js");\n\n\n\n\nfunction getViewportRect(element, strategy) {\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);\n var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])();\n\n if (layoutViewport || !layoutViewport && strategy === \'fixed\') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element),\n y: y\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getWindow)\n/* harmony export */ });\nfunction getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindow.js?")},"./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getWindowScroll)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n\nfunction getWindowScroll(node) {\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js?')},"./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getWindowScrollBarX)\n/* harmony export */ });\n/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");\n/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js");\n\n\n\nfunction getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let\'s assume\n // it\'s not an issue. I don\'t think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn\'t cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js?')},"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isElement: () => (/* binding */ isElement),\n/* harmony export */ isHTMLElement: () => (/* binding */ isHTMLElement),\n/* harmony export */ isShadowRoot: () => (/* binding */ isShadowRoot)\n/* harmony export */ });\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n\n\nfunction isElement(node) {\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === \'undefined\') {\n return false;\n }\n\n var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js?')},"./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ isLayoutViewport)\n/* harmony export */ });\n/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js");\n\nfunction isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])());\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js?')},"./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ isScrollParent)\n/* harmony export */ });\n/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js");\n\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js?')},"./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ isTableElement)\n/* harmony export */ });\n/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(element)) >= 0;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js?")},"./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ listScrollParents)\n/* harmony export */ });\n/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js");\n/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js");\n/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js");\n/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js");\n\n\n\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we\'ll need to re-calculate the\nreference element\'s position.\n*/\n\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target)));\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js?')},"./node_modules/@popperjs/core/lib/enums.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ afterMain: () => (/* binding */ afterMain),\n/* harmony export */ afterRead: () => (/* binding */ afterRead),\n/* harmony export */ afterWrite: () => (/* binding */ afterWrite),\n/* harmony export */ auto: () => (/* binding */ auto),\n/* harmony export */ basePlacements: () => (/* binding */ basePlacements),\n/* harmony export */ beforeMain: () => (/* binding */ beforeMain),\n/* harmony export */ beforeRead: () => (/* binding */ beforeRead),\n/* harmony export */ beforeWrite: () => (/* binding */ beforeWrite),\n/* harmony export */ bottom: () => (/* binding */ bottom),\n/* harmony export */ clippingParents: () => (/* binding */ clippingParents),\n/* harmony export */ end: () => (/* binding */ end),\n/* harmony export */ left: () => (/* binding */ left),\n/* harmony export */ main: () => (/* binding */ main),\n/* harmony export */ modifierPhases: () => (/* binding */ modifierPhases),\n/* harmony export */ placements: () => (/* binding */ placements),\n/* harmony export */ popper: () => (/* binding */ popper),\n/* harmony export */ read: () => (/* binding */ read),\n/* harmony export */ reference: () => (/* binding */ reference),\n/* harmony export */ right: () => (/* binding */ right),\n/* harmony export */ start: () => (/* binding */ start),\n/* harmony export */ top: () => (/* binding */ top),\n/* harmony export */ variationPlacements: () => (/* binding */ variationPlacements),\n/* harmony export */ viewport: () => (/* binding */ viewport),\n/* harmony export */ write: () => (/* binding */ write)\n/* harmony export */ });\nvar top = 'top';\nvar bottom = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top, bottom, right, left];\nvar start = 'start';\nvar end = 'end';\nvar clippingParents = 'clippingParents';\nvar viewport = 'viewport';\nvar popper = 'popper';\nvar reference = 'reference';\nvar variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/enums.js?")},"./node_modules/@popperjs/core/lib/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ afterMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain),\n/* harmony export */ afterRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead),\n/* harmony export */ afterWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite),\n/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles),\n/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow),\n/* harmony export */ auto: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto),\n/* harmony export */ basePlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements),\n/* harmony export */ beforeMain: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain),\n/* harmony export */ beforeRead: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead),\n/* harmony export */ beforeWrite: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite),\n/* harmony export */ bottom: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom),\n/* harmony export */ clippingParents: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents),\n/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles),\n/* harmony export */ createPopper: () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper),\n/* harmony export */ createPopperBase: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper),\n/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]),\n/* harmony export */ end: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end),\n/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners),\n/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip),\n/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide),\n/* harmony export */ left: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left),\n/* harmony export */ main: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main),\n/* harmony export */ modifierPhases: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases),\n/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset),\n/* harmony export */ placements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements),\n/* harmony export */ popper: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper),\n/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator),\n/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets),\n/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow),\n/* harmony export */ read: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read),\n/* harmony export */ reference: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference),\n/* harmony export */ right: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right),\n/* harmony export */ start: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start),\n/* harmony export */ top: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top),\n/* harmony export */ variationPlacements: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements),\n/* harmony export */ viewport: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport),\n/* harmony export */ write: () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js");\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/index.js?')},"./node_modules/@popperjs/core/lib/modifiers/applyStyles.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js\");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ \"./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js\");\n\n // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/applyStyles.js?")},"./node_modules/@popperjs/core/lib/modifiers/arrow.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");\n/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js");\n/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js");\n/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === \'function\' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== \'number\' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement);\n var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement);\n var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0;\n var len = isVertical ? \'height\' : \'width\';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement);\n var minProp = axis === \'y\' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left;\n var maxProp = axis === \'y\' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement);\n var clientSize = arrowOffsetParent ? axis === \'y\' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn\'t overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? \'[data-popper-arrow]\' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === \'string\') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_8__["default"])(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: \'arrow\',\n enabled: true,\n phase: \'main\',\n fn: arrow,\n effect: effect,\n requires: [\'popperOffsets\'],\n requiresIfExists: [\'preventOverflow\']\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/arrow.js?')},"./node_modules/@popperjs/core/lib/modifiers/computeStyles.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ mapToStyles: () => (/* binding */ mapToStyles)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js\");\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js\");\n/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js\");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ \"./node_modules/@popperjs/core/lib/utils/getVariation.js\");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ \"./node_modules/@popperjs/core/lib/utils/math.js\");\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0,\n y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0\n };\n}\n\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left;\n var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) {\n offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(popper);\n\n if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) {\n sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(state.placement),\n variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/computeStyles.js?")},"./node_modules/@popperjs/core/lib/modifiers/eventListeners.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ \"./node_modules/@popperjs/core/lib/dom-utils/getWindow.js\");\n // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/eventListeners.js?")},"./node_modules/@popperjs/core/lib/modifiers/flip.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");\n/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) {\n return [];\n }\n\n var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement);\n return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement);\n\n var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start;\n var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? \'width\' : \'height\';\n var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide);\n }\n\n var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return "break";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === "break") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: \'flip\',\n enabled: true,\n phase: \'main\',\n fn: flip,\n requiresIfExists: [\'offset\'],\n data: {\n _skip: false\n }\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/flip.js?')},"./node_modules/@popperjs/core/lib/modifiers/hide.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ \"./node_modules/@popperjs/core/lib/utils/detectOverflow.js\");\n\n\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/hide.js?")},"./node_modules/@popperjs/core/lib/modifiers/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyStyles: () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]),\n/* harmony export */ arrow: () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]),\n/* harmony export */ computeStyles: () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]),\n/* harmony export */ eventListeners: () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]),\n/* harmony export */ flip: () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]),\n/* harmony export */ hide: () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]),\n/* harmony export */ offset: () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]),\n/* harmony export */ popperOffsets: () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]),\n/* harmony export */ preventOverflow: () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"])\n/* harmony export */ });\n/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");\n/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js");\n/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");\n/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");\n/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js");\n/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js");\n/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js");\n/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");\n/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js");\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/index.js?')},"./node_modules/@popperjs/core/lib/modifiers/offset.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ distanceAndSkiddingToXY: () => (/* binding */ distanceAndSkiddingToXY)\n/* harmony export */ });\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ \"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js\");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ \"./node_modules/@popperjs/core/lib/enums.js\");\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(placement);\n var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/offset.js?")},"./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ \"./node_modules/@popperjs/core/lib/utils/computeOffsets.js\");\n\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js?")},"./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");\n/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");\n/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js");\n/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js");\n/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js");\n/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js");\n/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");\n/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js");\n/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");\n\n\n\n\n\n\n\n\n\n\n\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement);\n var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement);\n var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === \'function\' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === \'number\' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === \'y\' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n var altSide = mainAxis === \'y\' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n var len = mainAxis === \'y\' ? \'height\' : \'width\';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn\'t go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData[\'arrow#persistent\'] ? state.modifiersData[\'arrow#persistent\'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don\'t want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === \'y\' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === \'x\' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left;\n\n var _altSide = mainAxis === \'x\' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === \'y\' ? \'height\' : \'width\';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n name: \'preventOverflow\',\n enabled: true,\n phase: \'main\',\n fn: preventOverflow,\n requiresIfExists: [\'offset\']\n});\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js?')},"./node_modules/@popperjs/core/lib/popper-lite.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPopper: () => (/* binding */ createPopper),\n/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]),\n/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/popper-lite.js?')},"./node_modules/@popperjs/core/lib/popper.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ applyStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles),\n/* harmony export */ arrow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow),\n/* harmony export */ computeStyles: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles),\n/* harmony export */ createPopper: () => (/* binding */ createPopper),\n/* harmony export */ createPopperLite: () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper),\n/* harmony export */ defaultModifiers: () => (/* binding */ defaultModifiers),\n/* harmony export */ detectOverflow: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]),\n/* harmony export */ eventListeners: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners),\n/* harmony export */ flip: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip),\n/* harmony export */ hide: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide),\n/* harmony export */ offset: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset),\n/* harmony export */ popperGenerator: () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator),\n/* harmony export */ popperOffsets: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets),\n/* harmony export */ preventOverflow: () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow)\n/* harmony export */ });\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js");\n/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js");\n/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js");\n/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js");\n/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js");\n/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js");\n/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js");\n/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js");\n/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js");\n/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js");\n/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js");\n/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js");\n\n\n\n\n\n\n\n\n\n\nvar defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]];\nvar createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n // eslint-disable-next-line import/no-unused-modules\n\n\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/popper.js?')},"./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ computeAutoPlacement)\n/* harmony export */ });\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js");\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");\n\n\n\n\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP;\n var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement);\n var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) {\n return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation;\n }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js?')},"./node_modules/@popperjs/core/lib/utils/computeOffsets.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ computeOffsets)\n/* harmony export */ });\n/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js");\n/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js");\n/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n\n\n\n\nfunction computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null;\n var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === \'y\' ? \'height\' : \'width\';\n\n switch (variation) {\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/computeOffsets.js?')},"./node_modules/@popperjs/core/lib/utils/debounce.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ debounce)\n/* harmony export */ });\nfunction debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/debounce.js?')},"./node_modules/@popperjs/core/lib/utils/detectOverflow.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ detectOverflow)\n/* harmony export */ });\n/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js");\n/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js");\n/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js");\n/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js");\n/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js");\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js");\n/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js");\n/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js");\n\n\n\n\n\n\n\n\n // eslint-disable-next-line import/no-unused-modules\n\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== \'number\' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements));\n var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference);\n var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({\n reference: referenceClientRect,\n element: popperRect,\n strategy: \'absolute\',\n placement: placement\n });\n var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? \'y\' : \'x\';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/detectOverflow.js?')},"./node_modules/@popperjs/core/lib/utils/expandToHashMap.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ expandToHashMap)\n/* harmony export */ });\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/expandToHashMap.js?')},"./node_modules/@popperjs/core/lib/utils/getAltAxis.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getAltAxis)\n/* harmony export */ });\nfunction getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getAltAxis.js?")},"./node_modules/@popperjs/core/lib/utils/getBasePlacement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getBasePlacement)\n/* harmony export */ });\n\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getBasePlacement.js?")},"./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getFreshSideObject)\n/* harmony export */ });\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js?')},"./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getMainAxisFromPlacement)\n/* harmony export */ });\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js?")},"./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getOppositePlacement)\n/* harmony export */ });\nvar hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js?")},"./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getOppositeVariationPlacement)\n/* harmony export */ });\nvar hash = {\n start: 'end',\n end: 'start'\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js?")},"./node_modules/@popperjs/core/lib/utils/getVariation.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ getVariation)\n/* harmony export */ });\nfunction getVariation(placement) {\n return placement.split('-')[1];\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/getVariation.js?")},"./node_modules/@popperjs/core/lib/utils/math.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ max: () => (/* binding */ max),\n/* harmony export */ min: () => (/* binding */ min),\n/* harmony export */ round: () => (/* binding */ round)\n/* harmony export */ });\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/math.js?")},"./node_modules/@popperjs/core/lib/utils/mergeByName.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ mergeByName)\n/* harmony export */ });\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/mergeByName.js?')},"./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ mergePaddingObject)\n/* harmony export */ });\n/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js");\n\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject);\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js?')},"./node_modules/@popperjs/core/lib/utils/orderModifiers.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ orderModifiers)\n/* harmony export */ });\n/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js");\n // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nfunction orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/orderModifiers.js?')},"./node_modules/@popperjs/core/lib/utils/rectToClientRect.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ rectToClientRect)\n/* harmony export */ });\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/rectToClientRect.js?')},"./node_modules/@popperjs/core/lib/utils/userAgent.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ "default": () => (/* binding */ getUAString)\n/* harmony export */ });\nfunction getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + "/" + item.version;\n }).join(\' \');\n }\n\n return navigator.userAgent;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/userAgent.js?')},"./node_modules/@popperjs/core/lib/utils/within.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ within: () => (/* binding */ within),\n/* harmony export */ withinMaxClamp: () => (/* binding */ withinMaxClamp)\n/* harmony export */ });\n/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js");\n\nfunction within(min, value, max) {\n return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max));\n}\nfunction withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}\n\n//# sourceURL=webpack:///./node_modules/@popperjs/core/lib/utils/within.js?')},"./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js":(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/*! Bootstrap Colorpicker 2.1.0 - http://mjolnic.github.io/bootstrap-colorpicker/ */\n!function (a) {\n "use strict";\n\n true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery")], __WEBPACK_AMD_DEFINE_FACTORY__ = (a),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n}(function (a) {\n "use strict";\n\n var b = function b(a) {\n this.value = {\n h: 0,\n s: 0,\n b: 0,\n a: 1\n }, this.origFormat = null, a && (void 0 !== a.toLowerCase ? (a += "", "#" === a.charAt(0) || 3 !== a.length && 6 !== a.length || (a = "#" + a), this.setColor(a)) : void 0 !== a.h && (this.value = a));\n };\n b.prototype = {\n constructor: b,\n colors: {\n aliceblue: "#f0f8ff",\n antiquewhite: "#faebd7",\n aqua: "#00ffff",\n aquamarine: "#7fffd4",\n azure: "#f0ffff",\n beige: "#f5f5dc",\n bisque: "#ffe4c4",\n black: "#000000",\n blanchedalmond: "#ffebcd",\n blue: "#0000ff",\n blueviolet: "#8a2be2",\n brown: "#a52a2a",\n burlywood: "#deb887",\n cadetblue: "#5f9ea0",\n chartreuse: "#7fff00",\n chocolate: "#d2691e",\n coral: "#ff7f50",\n cornflowerblue: "#6495ed",\n cornsilk: "#fff8dc",\n crimson: "#dc143c",\n cyan: "#00ffff",\n darkblue: "#00008b",\n darkcyan: "#008b8b",\n darkgoldenrod: "#b8860b",\n darkgray: "#a9a9a9",\n darkgreen: "#006400",\n darkkhaki: "#bdb76b",\n darkmagenta: "#8b008b",\n darkolivegreen: "#556b2f",\n darkorange: "#ff8c00",\n darkorchid: "#9932cc",\n darkred: "#8b0000",\n darksalmon: "#e9967a",\n darkseagreen: "#8fbc8f",\n darkslateblue: "#483d8b",\n darkslategray: "#2f4f4f",\n darkturquoise: "#00ced1",\n darkviolet: "#9400d3",\n deeppink: "#ff1493",\n deepskyblue: "#00bfff",\n dimgray: "#696969",\n dodgerblue: "#1e90ff",\n firebrick: "#b22222",\n floralwhite: "#fffaf0",\n forestgreen: "#228b22",\n fuchsia: "#ff00ff",\n gainsboro: "#dcdcdc",\n ghostwhite: "#f8f8ff",\n gold: "#ffd700",\n goldenrod: "#daa520",\n gray: "#808080",\n green: "#008000",\n greenyellow: "#adff2f",\n honeydew: "#f0fff0",\n hotpink: "#ff69b4",\n "indianred ": "#cd5c5c",\n "indigo ": "#4b0082",\n ivory: "#fffff0",\n khaki: "#f0e68c",\n lavender: "#e6e6fa",\n lavenderblush: "#fff0f5",\n lawngreen: "#7cfc00",\n lemonchiffon: "#fffacd",\n lightblue: "#add8e6",\n lightcoral: "#f08080",\n lightcyan: "#e0ffff",\n lightgoldenrodyellow: "#fafad2",\n lightgrey: "#d3d3d3",\n lightgreen: "#90ee90",\n lightpink: "#ffb6c1",\n lightsalmon: "#ffa07a",\n lightseagreen: "#20b2aa",\n lightskyblue: "#87cefa",\n lightslategray: "#778899",\n lightsteelblue: "#b0c4de",\n lightyellow: "#ffffe0",\n lime: "#00ff00",\n limegreen: "#32cd32",\n linen: "#faf0e6",\n magenta: "#ff00ff",\n maroon: "#800000",\n mediumaquamarine: "#66cdaa",\n mediumblue: "#0000cd",\n mediumorchid: "#ba55d3",\n mediumpurple: "#9370d8",\n mediumseagreen: "#3cb371",\n mediumslateblue: "#7b68ee",\n mediumspringgreen: "#00fa9a",\n mediumturquoise: "#48d1cc",\n mediumvioletred: "#c71585",\n midnightblue: "#191970",\n mintcream: "#f5fffa",\n mistyrose: "#ffe4e1",\n moccasin: "#ffe4b5",\n navajowhite: "#ffdead",\n navy: "#000080",\n oldlace: "#fdf5e6",\n olive: "#808000",\n olivedrab: "#6b8e23",\n orange: "#ffa500",\n orangered: "#ff4500",\n orchid: "#da70d6",\n palegoldenrod: "#eee8aa",\n palegreen: "#98fb98",\n paleturquoise: "#afeeee",\n palevioletred: "#d87093",\n papayawhip: "#ffefd5",\n peachpuff: "#ffdab9",\n peru: "#cd853f",\n pink: "#ffc0cb",\n plum: "#dda0dd",\n powderblue: "#b0e0e6",\n purple: "#800080",\n red: "#ff0000",\n rosybrown: "#bc8f8f",\n royalblue: "#4169e1",\n saddlebrown: "#8b4513",\n salmon: "#fa8072",\n sandybrown: "#f4a460",\n seagreen: "#2e8b57",\n seashell: "#fff5ee",\n sienna: "#a0522d",\n silver: "#c0c0c0",\n skyblue: "#87ceeb",\n slateblue: "#6a5acd",\n slategray: "#708090",\n snow: "#fffafa",\n springgreen: "#00ff7f",\n steelblue: "#4682b4",\n tan: "#d2b48c",\n teal: "#008080",\n thistle: "#d8bfd8",\n tomato: "#ff6347",\n turquoise: "#40e0d0",\n violet: "#ee82ee",\n wheat: "#f5deb3",\n white: "#ffffff",\n whitesmoke: "#f5f5f5",\n yellow: "#ffff00",\n yellowgreen: "#9acd32",\n transparent: "transparent"\n },\n _sanitizeNumber: function _sanitizeNumber(a) {\n return "number" == typeof a ? a : isNaN(a) || null === a || "" === a || void 0 === a ? 1 : void 0 !== a.toLowerCase ? parseFloat(a) : 1;\n },\n isTransparent: function isTransparent(a) {\n return a ? (a = a.toLowerCase().trim(), "transparent" == a || a.match(/#?00000000/) || a.match(/(rgba|hsla)\\(0,0,0,0?\\.?0\\)/)) : !1;\n },\n rgbaIsTransparent: function rgbaIsTransparent(a) {\n return 0 == a.r && 0 == a.g && 0 == a.b && 0 == a.a;\n },\n setColor: function setColor(a) {\n a = a.toLowerCase().trim(), a && (this.value = this.isTransparent(a) ? {\n h: 0,\n s: 0,\n b: 0,\n a: 0\n } : this.stringToHSB(a) || {\n h: 0,\n s: 0,\n b: 0,\n a: 1\n });\n },\n stringToHSB: function stringToHSB(b) {\n b = b.toLowerCase();\n var c = this,\n d = !1;\n return a.each(this.stringParsers, function (a, e) {\n var f = e.re.exec(b),\n g = f && e.parse.apply(c, [f]),\n h = e.format || "rgba";\n return g ? (d = h.match(/hsla?/) ? c.RGBtoHSB.apply(c, c.HSLtoRGB.apply(c, g)) : c.RGBtoHSB.apply(c, g), c.origFormat = h, !1) : !0;\n }), d;\n },\n setHue: function setHue(a) {\n this.value.h = 1 - a;\n },\n setSaturation: function setSaturation(a) {\n this.value.s = a;\n },\n setBrightness: function setBrightness(a) {\n this.value.b = 1 - a;\n },\n setAlpha: function setAlpha(a) {\n this.value.a = parseInt(100 * (1 - a), 10) / 100;\n },\n toRGB: function toRGB(a, b, c, d) {\n a || (a = this.value.h, b = this.value.s, c = this.value.b), a *= 360;\n var e, f, g, h, i;\n return a = a % 360 / 60, i = c * b, h = i * (1 - Math.abs(a % 2 - 1)), e = f = g = c - i, a = ~~a, e += [i, h, 0, 0, h, i][a], f += [h, i, i, h, 0, 0][a], g += [0, 0, h, i, i, h][a], {\n r: Math.round(255 * e),\n g: Math.round(255 * f),\n b: Math.round(255 * g),\n a: d || this.value.a\n };\n },\n toHex: function toHex(a, b, c, d) {\n var e = this.toRGB(a, b, c, d);\n return this.rgbaIsTransparent(e) ? "transparent" : "#" + (1 << 24 | parseInt(e.r) << 16 | parseInt(e.g) << 8 | parseInt(e.b)).toString(16).substr(1);\n },\n toHSL: function toHSL(a, b, c, d) {\n a = a || this.value.h, b = b || this.value.s, c = c || this.value.b, d = d || this.value.a;\n var e = a,\n f = (2 - b) * c,\n g = b * c;\n return g /= f > 0 && 1 >= f ? f : 2 - f, f /= 2, g > 1 && (g = 1), {\n h: isNaN(e) ? 0 : e,\n s: isNaN(g) ? 0 : g,\n l: isNaN(f) ? 0 : f,\n a: isNaN(d) ? 0 : d\n };\n },\n toAlias: function toAlias(a, b, c, d) {\n var e = this.toHex(a, b, c, d);\n for (var f in this.colors) if (this.colors[f] == e) return f;\n return !1;\n },\n RGBtoHSB: function RGBtoHSB(a, b, c, d) {\n a /= 255, b /= 255, c /= 255;\n var e, f, g, h;\n return g = Math.max(a, b, c), h = g - Math.min(a, b, c), e = 0 === h ? null : g === a ? (b - c) / h : g === b ? (c - a) / h + 2 : (a - b) / h + 4, e = (e + 360) % 6 * 60 / 360, f = 0 === h ? 0 : h / g, {\n h: this._sanitizeNumber(e),\n s: f,\n b: g,\n a: this._sanitizeNumber(d)\n };\n },\n HueToRGB: function HueToRGB(a, b, c) {\n return 0 > c ? c += 1 : c > 1 && (c -= 1), 1 > 6 * c ? a + (b - a) * c * 6 : 1 > 2 * c ? b : 2 > 3 * c ? a + (b - a) * (2 / 3 - c) * 6 : a;\n },\n HSLtoRGB: function HSLtoRGB(a, b, c, d) {\n 0 > b && (b = 0);\n var e;\n e = .5 >= c ? c * (1 + b) : c + b - c * b;\n var f = 2 * c - e,\n g = a + 1 / 3,\n h = a,\n i = a - 1 / 3,\n j = Math.round(255 * this.HueToRGB(f, e, g)),\n k = Math.round(255 * this.HueToRGB(f, e, h)),\n l = Math.round(255 * this.HueToRGB(f, e, i));\n return [j, k, l, this._sanitizeNumber(d)];\n },\n toString: function toString(a) {\n switch (a = a || "rgba") {\n case "rgb":\n var b = this.toRGB();\n return this.rgbaIsTransparent(b) ? "transparent" : "rgb(" + b.r + "," + b.g + "," + b.b + ")";\n case "rgba":\n var b = this.toRGB();\n return "rgba(" + b.r + "," + b.g + "," + b.b + "," + b.a + ")";\n case "hsl":\n var c = this.toHSL();\n return "hsl(" + Math.round(360 * c.h) + "," + Math.round(100 * c.s) + "%," + Math.round(100 * c.l) + "%)";\n case "hsla":\n var c = this.toHSL();\n return "hsla(" + Math.round(360 * c.h) + "," + Math.round(100 * c.s) + "%," + Math.round(100 * c.l) + "%," + c.a + ")";\n case "hex":\n return this.toHex();\n case "alias":\n return this.toAlias() || this.toHex();\n default:\n return !1;\n }\n },\n stringParsers: [{\n re: /rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*?\\)/,\n format: "rgb",\n parse: function parse(a) {\n return [a[1], a[2], a[3], 1];\n }\n }, {\n re: /rgb\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*?\\)/,\n format: "rgb",\n parse: function parse(a) {\n return [2.55 * a[1], 2.55 * a[2], 2.55 * a[3], 1];\n }\n }, {\n re: /rgba\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n format: "rgba",\n parse: function parse(a) {\n return [a[1], a[2], a[3], a[4]];\n }\n }, {\n re: /rgba\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n format: "rgba",\n parse: function parse(a) {\n return [2.55 * a[1], 2.55 * a[2], 2.55 * a[3], a[4]];\n }\n }, {\n re: /hsl\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*?\\)/,\n format: "hsl",\n parse: function parse(a) {\n return [a[1] / 360, a[2] / 100, a[3] / 100, a[4]];\n }\n }, {\n re: /hsla\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n format: "hsla",\n parse: function parse(a) {\n return [a[1] / 360, a[2] / 100, a[3] / 100, a[4]];\n }\n }, {\n re: /#?([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,\n format: "hex",\n parse: function parse(a) {\n return [parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], 16), 1];\n }\n }, {\n re: /#?([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,\n format: "hex",\n parse: function parse(a) {\n return [parseInt(a[1] + a[1], 16), parseInt(a[2] + a[2], 16), parseInt(a[3] + a[3], 16), 1];\n }\n }, {\n re: /^([a-z]{3,})$/,\n format: "alias",\n parse: function parse(a) {\n var b = this.colorNameToHex(a[0]) || "#000000",\n c = this.stringParsers[0].re.exec(b),\n d = c && this.stringParsers[0].parse.apply(this, [c]);\n return d;\n }\n }],\n colorNameToHex: function colorNameToHex(a) {\n return "undefined" != typeof this.colors[a.toLowerCase()] ? this.colors[a.toLowerCase()] : !1;\n }\n };\n var c = {\n horizontal: !1,\n inline: !1,\n color: !1,\n format: !1,\n input: "input",\n container: !1,\n component: ".add-on, .input-group-addon",\n sliders: {\n saturation: {\n maxLeft: 100,\n maxTop: 100,\n callLeft: "setSaturation",\n callTop: "setBrightness"\n },\n hue: {\n maxLeft: 0,\n maxTop: 100,\n callLeft: !1,\n callTop: "setHue"\n },\n alpha: {\n maxLeft: 0,\n maxTop: 100,\n callLeft: !1,\n callTop: "setAlpha"\n }\n },\n slidersHorz: {\n saturation: {\n maxLeft: 100,\n maxTop: 100,\n callLeft: "setSaturation",\n callTop: "setBrightness"\n },\n hue: {\n maxLeft: 100,\n maxTop: 0,\n callLeft: "setHue",\n callTop: !1\n },\n alpha: {\n maxLeft: 100,\n maxTop: 0,\n callLeft: "setAlpha",\n callTop: !1\n }\n },\n template: \'<div class="colorpicker dropdown-menu"><div class="colorpicker-saturation"><i><b></b></i></div><div class="colorpicker-hue"><i></i></div><div class="colorpicker-alpha"><i></i></div><div class="colorpicker-color"><div /></div></div>\'\n },\n d = function d(_d, e) {\n this.element = a(_d).addClass("colorpicker-element"), this.options = a.extend({}, c, this.element.data(), e), this.component = this.options.component, this.component = this.component !== !1 ? this.element.find(this.component) : !1, this.component && 0 === this.component.length && (this.component = !1), this.container = this.options.container === !0 ? this.element : this.options.container, this.container = this.container !== !1 ? a(this.container) : !1, this.input = this.element.is("input") ? this.element : this.options.input ? this.element.find(this.options.input) : !1, this.input && 0 === this.input.length && (this.input = !1), this.color = new b(this.options.color !== !1 ? this.options.color : this.getValue()), this.format = this.options.format !== !1 ? this.options.format : this.color.origFormat, this.picker = a(this.options.template), this.picker.addClass(this.options.inline ? "colorpicker-inline colorpicker-visible" : "colorpicker-hidden"), this.options.horizontal && this.picker.addClass("colorpicker-horizontal"), ("rgba" === this.format || "hsla" === this.format) && this.picker.addClass("colorpicker-with-alpha"), "right" === this.options.align && this.picker.addClass("colorpicker-right"), this.picker.on("mousedown.colorpicker touchstart.colorpicker", a.proxy(this.mousedown, this)), this.picker.appendTo(this.container ? this.container : a("body")), this.input !== !1 && (this.input.on({\n "keyup.colorpicker": a.proxy(this.keyup, this)\n }), this.component === !1 && this.element.on({\n "focus.colorpicker": a.proxy(this.show, this)\n }), this.options.inline === !1 && this.element.on({\n "focusout.colorpicker": a.proxy(this.hide, this)\n })), this.component !== !1 && this.component.on({\n "click.colorpicker": a.proxy(this.show, this)\n }), this.input === !1 && this.component === !1 && this.element.on({\n "click.colorpicker": a.proxy(this.show, this)\n }), this.input !== !1 && this.component !== !1 && "color" === this.input.attr("type") && this.input.on({\n "click.colorpicker": a.proxy(this.show, this),\n "focus.colorpicker": a.proxy(this.show, this)\n }), this.update(), a(a.proxy(function () {\n this.element.trigger("create");\n }, this));\n };\n d.Color = b, d.prototype = {\n constructor: d,\n destroy: function destroy() {\n this.picker.remove(), this.element.removeData("colorpicker").off(".colorpicker"), this.input !== !1 && this.input.off(".colorpicker"), this.component !== !1 && this.component.off(".colorpicker"), this.element.removeClass("colorpicker-element"), this.element.trigger({\n type: "destroy"\n });\n },\n reposition: function reposition() {\n if (this.options.inline !== !1 || this.options.container) return !1;\n var a = this.container && this.container[0] !== document.body ? "position" : "offset",\n b = this.component || this.element,\n c = b[a]();\n "right" === this.options.align && (c.left -= this.picker.outerWidth() - b.outerWidth()), this.picker.css({\n top: c.top + b.outerHeight(),\n left: c.left\n });\n },\n show: function show(b) {\n return this.isDisabled() ? !1 : (this.picker.addClass("colorpicker-visible").removeClass("colorpicker-hidden"), this.reposition(), a(window).on("resize.colorpicker", a.proxy(this.reposition, this)), !b || this.hasInput() && "color" !== this.input.attr("type") || b.stopPropagation && b.preventDefault && (b.stopPropagation(), b.preventDefault()), this.options.inline === !1 && a(window.document).on({\n "mousedown.colorpicker": a.proxy(this.hide, this)\n }), void this.element.trigger({\n type: "showPicker",\n color: this.color\n }));\n },\n hide: function hide() {\n this.picker.addClass("colorpicker-hidden").removeClass("colorpicker-visible"), a(window).off("resize.colorpicker", this.reposition), a(document).off({\n "mousedown.colorpicker": this.hide\n }), this.update(), this.element.trigger({\n type: "hidePicker",\n color: this.color\n });\n },\n updateData: function updateData(a) {\n return a = a || this.color.toString(this.format), this.element.data("color", a), a;\n },\n updateInput: function updateInput(a) {\n return a = a || this.color.toString(this.format), this.input !== !1 && this.input.prop("value", a), a;\n },\n updatePicker: function updatePicker(a) {\n void 0 !== a && (this.color = new b(a));\n var c = this.options.horizontal === !1 ? this.options.sliders : this.options.slidersHorz,\n d = this.picker.find("i");\n return 0 !== d.length ? (this.options.horizontal === !1 ? (c = this.options.sliders, d.eq(1).css("top", c.hue.maxTop * (1 - this.color.value.h)).end().eq(2).css("top", c.alpha.maxTop * (1 - this.color.value.a))) : (c = this.options.slidersHorz, d.eq(1).css("left", c.hue.maxLeft * (1 - this.color.value.h)).end().eq(2).css("left", c.alpha.maxLeft * (1 - this.color.value.a))), d.eq(0).css({\n top: c.saturation.maxTop - this.color.value.b * c.saturation.maxTop,\n left: this.color.value.s * c.saturation.maxLeft\n }), this.picker.find(".colorpicker-saturation").css("backgroundColor", this.color.toHex(this.color.value.h, 1, 1, 1)), this.picker.find(".colorpicker-alpha").css("backgroundColor", this.color.toHex()), this.picker.find(".colorpicker-color, .colorpicker-color div").css("backgroundColor", this.color.toString(this.format)), a) : void 0;\n },\n updateComponent: function updateComponent(a) {\n if (a = a || this.color.toString(this.format), this.component !== !1) {\n var b = this.component.find("i").eq(0);\n b.length > 0 ? b.css({\n backgroundColor: a\n }) : this.component.css({\n backgroundColor: a\n });\n }\n return a;\n },\n update: function update(a) {\n var b;\n return (this.getValue(!1) !== !1 || a === !0) && (b = this.updateComponent(), this.updateInput(b), this.updateData(b), this.updatePicker()), b;\n },\n setValue: function setValue(a) {\n this.color = new b(a), this.update(), this.element.trigger({\n type: "changeColor",\n color: this.color,\n value: a\n });\n },\n getValue: function getValue(a) {\n a = void 0 === a ? "#000000" : a;\n var b;\n return b = this.hasInput() ? this.input.val() : this.element.data("color"), (void 0 === b || "" === b || null === b) && (b = a), b;\n },\n hasInput: function hasInput() {\n return this.input !== !1;\n },\n isDisabled: function isDisabled() {\n return this.hasInput() ? this.input.prop("disabled") === !0 : !1;\n },\n disable: function disable() {\n return this.hasInput() ? (this.input.prop("disabled", !0), this.element.trigger({\n type: "disable",\n color: this.color,\n value: this.getValue()\n }), !0) : !1;\n },\n enable: function enable() {\n return this.hasInput() ? (this.input.prop("disabled", !1), this.element.trigger({\n type: "enable",\n color: this.color,\n value: this.getValue()\n }), !0) : !1;\n },\n currentSlider: null,\n mousePointer: {\n left: 0,\n top: 0\n },\n mousedown: function mousedown(b) {\n b.pageX || b.pageY || !b.originalEvent || (b.pageX = b.originalEvent.touches[0].pageX, b.pageY = b.originalEvent.touches[0].pageY), b.stopPropagation(), b.preventDefault();\n var c = a(b.target),\n d = c.closest("div"),\n e = this.options.horizontal ? this.options.slidersHorz : this.options.sliders;\n if (!d.is(".colorpicker")) {\n if (d.is(".colorpicker-saturation")) this.currentSlider = a.extend({}, e.saturation);else if (d.is(".colorpicker-hue")) this.currentSlider = a.extend({}, e.hue);else {\n if (!d.is(".colorpicker-alpha")) return !1;\n this.currentSlider = a.extend({}, e.alpha);\n }\n var f = d.offset();\n this.currentSlider.guide = d.find("i")[0].style, this.currentSlider.left = b.pageX - f.left, this.currentSlider.top = b.pageY - f.top, this.mousePointer = {\n left: b.pageX,\n top: b.pageY\n }, a(document).on({\n "mousemove.colorpicker": a.proxy(this.mousemove, this),\n "touchmove.colorpicker": a.proxy(this.mousemove, this),\n "mouseup.colorpicker": a.proxy(this.mouseup, this),\n "touchend.colorpicker": a.proxy(this.mouseup, this)\n }).trigger("mousemove");\n }\n return !1;\n },\n mousemove: function mousemove(a) {\n a.pageX || a.pageY || !a.originalEvent || (a.pageX = a.originalEvent.touches[0].pageX, a.pageY = a.originalEvent.touches[0].pageY), a.stopPropagation(), a.preventDefault();\n var b = Math.max(0, Math.min(this.currentSlider.maxLeft, this.currentSlider.left + ((a.pageX || this.mousePointer.left) - this.mousePointer.left))),\n c = Math.max(0, Math.min(this.currentSlider.maxTop, this.currentSlider.top + ((a.pageY || this.mousePointer.top) - this.mousePointer.top)));\n return this.currentSlider.guide.left = b + "px", this.currentSlider.guide.top = c + "px", this.currentSlider.callLeft && this.color[this.currentSlider.callLeft].call(this.color, b / this.currentSlider.maxLeft), this.currentSlider.callTop && this.color[this.currentSlider.callTop].call(this.color, c / this.currentSlider.maxTop), this.update(!0), this.element.trigger({\n type: "changeColor",\n color: this.color\n }), !1;\n },\n mouseup: function mouseup(b) {\n return b.stopPropagation(), b.preventDefault(), a(document).off({\n "mousemove.colorpicker": this.mousemove,\n "touchmove.colorpicker": this.mousemove,\n "mouseup.colorpicker": this.mouseup,\n "touchend.colorpicker": this.mouseup\n }), !1;\n },\n keyup: function keyup(a) {\n if (38 === a.keyCode) this.color.value.a < 1 && (this.color.value.a = Math.round(100 * (this.color.value.a + .01)) / 100), this.update(!0);else if (40 === a.keyCode) this.color.value.a > 0 && (this.color.value.a = Math.round(100 * (this.color.value.a - .01)) / 100), this.update(!0);else {\n var c = this.input.val();\n this.color = new b(c), this.getValue(!1) !== !1 && (this.updateData(), this.updateComponent(), this.updatePicker());\n }\n this.element.trigger({\n type: "changeColor",\n color: this.color,\n value: c\n });\n }\n }, a.colorpicker = d, a.fn.colorpicker = function (b) {\n var c,\n e = arguments,\n f = this.each(function () {\n var f = a(this),\n g = f.data("colorpicker"),\n h = "object" == _typeof(b) ? b : {};\n g || "string" == typeof b ? "string" == typeof b && (c = g[b].apply(g, Array.prototype.slice.call(e, 1))) : f.data("colorpicker", new d(this, h));\n });\n return "getValue" === b ? c : f;\n }, a.fn.colorpicker.constructor = d;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js?')},"./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js":(module,exports,__webpack_require__)=>{eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _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; }, _typeof(o); }\n/*! version : 4.17.37\n =========================================================\n bootstrap-datetimejs\n https://github.com/Eonasdan/bootstrap-datetimepicker\n Copyright (c) 2015 Jonathan Peterson\n =========================================================\n */\n/*\n The MIT License (MIT)\n\n Copyright (c) 2015 Jonathan Peterson\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n */\n/*global define:false */\n/*global exports:false */\n/*global require:false */\n/*global jQuery:false */\n/*global moment:false */\n\n/*\n\n\n Creative Tim Modifications\n\n Line: 298 - we added class btn-primary for custom styling button.\n\n\n*/\n(function (factory) {\n 'use strict';\n\n if (true) {\n // AMD is used - Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\"), __webpack_require__(/*! moment */ \"./node_modules/moment/moment.js\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(function ($, moment) {\n 'use strict';\n\n if (!moment) {\n throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first');\n }\n var dateTimePicker = function dateTimePicker(element, options) {\n var picker = {},\n date,\n viewDate,\n unset = true,\n input,\n component = false,\n widget = false,\n use24Hours,\n minViewModeNumber = 0,\n actualFormat,\n parseFormats,\n currentViewMode,\n datePickerModes = [{\n clsName: 'days',\n navFnc: 'M',\n navStep: 1\n }, {\n clsName: 'months',\n navFnc: 'y',\n navStep: 1\n }, {\n clsName: 'years',\n navFnc: 'y',\n navStep: 10\n }, {\n clsName: 'decades',\n navFnc: 'y',\n navStep: 100\n }],\n viewModes = ['days', 'months', 'years', 'decades'],\n verticalModes = ['top', 'bottom', 'auto'],\n horizontalModes = ['left', 'right', 'auto'],\n toolbarPlacements = ['default', 'top', 'bottom'],\n keyMap = {\n 'up': 38,\n 38: 'up',\n 'down': 40,\n 40: 'down',\n 'left': 37,\n 37: 'left',\n 'right': 39,\n 39: 'right',\n 'tab': 9,\n 9: 'tab',\n 'escape': 27,\n 27: 'escape',\n 'enter': 13,\n 13: 'enter',\n 'pageUp': 33,\n 33: 'pageUp',\n 'pageDown': 34,\n 34: 'pageDown',\n 'shift': 16,\n 16: 'shift',\n 'control': 17,\n 17: 'control',\n 'space': 32,\n 32: 'space',\n 't': 84,\n 84: 't',\n 'delete': 46,\n 46: 'delete'\n },\n keyState = {},\n /********************************************************************************\n *\n * Private functions\n *\n ********************************************************************************/\n getMoment = function getMoment(d) {\n var tzEnabled = false,\n returnMoment,\n currentZoneOffset,\n incomingZoneOffset,\n timeZoneIndicator,\n dateWithTimeZoneInfo;\n if (moment.tz !== undefined && options.timeZone !== undefined && options.timeZone !== null && options.timeZone !== '') {\n tzEnabled = true;\n }\n if (d === undefined || d === null) {\n if (tzEnabled) {\n returnMoment = moment().tz(options.timeZone).startOf('d');\n } else {\n returnMoment = moment().startOf('d');\n }\n } else {\n if (tzEnabled) {\n currentZoneOffset = moment().tz(options.timeZone).utcOffset();\n incomingZoneOffset = moment(d, parseFormats, options.useStrict).utcOffset();\n if (incomingZoneOffset !== currentZoneOffset) {\n timeZoneIndicator = moment().tz(options.timeZone).format('Z');\n dateWithTimeZoneInfo = moment(d, parseFormats, options.useStrict).format('YYYY-MM-DD[T]HH:mm:ss') + timeZoneIndicator;\n returnMoment = moment(dateWithTimeZoneInfo, parseFormats, options.useStrict).tz(options.timeZone);\n } else {\n returnMoment = moment(d, parseFormats, options.useStrict).tz(options.timeZone);\n }\n } else {\n returnMoment = moment(d, parseFormats, options.useStrict);\n }\n }\n return returnMoment;\n },\n isEnabled = function isEnabled(granularity) {\n if (typeof granularity !== 'string' || granularity.length > 1) {\n throw new TypeError('isEnabled expects a single character string parameter');\n }\n switch (granularity) {\n case 'y':\n return actualFormat.indexOf('Y') !== -1;\n case 'M':\n return actualFormat.indexOf('M') !== -1;\n case 'd':\n return actualFormat.toLowerCase().indexOf('d') !== -1;\n case 'h':\n case 'H':\n return actualFormat.toLowerCase().indexOf('h') !== -1;\n case 'm':\n return actualFormat.indexOf('m') !== -1;\n case 's':\n return actualFormat.indexOf('s') !== -1;\n default:\n return false;\n }\n },\n hasTime = function hasTime() {\n return isEnabled('h') || isEnabled('m') || isEnabled('s');\n },\n hasDate = function hasDate() {\n return isEnabled('y') || isEnabled('M') || isEnabled('d');\n },\n getDatePickerTemplate = function getDatePickerTemplate() {\n var headTemplate = $('<thead>').append($('<tr>').append($('<th>').addClass('prev').attr('data-action', 'previous').append($('<span>').addClass(options.icons.previous))).append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', options.calendarWeeks ? '6' : '5')).append($('<th>').addClass('next').attr('data-action', 'next').append($('<span>').addClass(options.icons.next)))),\n contTemplate = $('<tbody>').append($('<tr>').append($('<td>').attr('colspan', options.calendarWeeks ? '8' : '7')));\n return [$('<div>').addClass('datepicker-days').append($('<table>').addClass('table-condensed').append(headTemplate).append($('<tbody>'))), $('<div>').addClass('datepicker-months').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-years').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-decades').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone()))];\n },\n getTimePickerMainTemplate = function getTimePickerMainTemplate() {\n var topRow = $('<tr>'),\n middleRow = $('<tr>'),\n bottomRow = $('<tr>');\n if (isEnabled('h')) {\n topRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.incrementHour\n }).addClass('btn').attr('data-action', 'incrementHours').append($('<span>').addClass(options.icons.up))));\n middleRow.append($('<td>').append($('<span>').addClass('timepicker-hour').attr({\n 'data-time-component': 'hours',\n 'title': options.tooltips.pickHour\n }).attr('data-action', 'showHours')));\n bottomRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.decrementHour\n }).addClass('btn').attr('data-action', 'decrementHours').append($('<span>').addClass(options.icons.down))));\n }\n if (isEnabled('m')) {\n if (isEnabled('h')) {\n topRow.append($('<td>').addClass('separator'));\n middleRow.append($('<td>').addClass('separator').html(':'));\n bottomRow.append($('<td>').addClass('separator'));\n }\n topRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.incrementMinute\n }).addClass('btn').attr('data-action', 'incrementMinutes').append($('<span>').addClass(options.icons.up))));\n middleRow.append($('<td>').append($('<span>').addClass('timepicker-minute').attr({\n 'data-time-component': 'minutes',\n 'title': options.tooltips.pickMinute\n }).attr('data-action', 'showMinutes')));\n bottomRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.decrementMinute\n }).addClass('btn').attr('data-action', 'decrementMinutes').append($('<span>').addClass(options.icons.down))));\n }\n if (isEnabled('s')) {\n if (isEnabled('m')) {\n topRow.append($('<td>').addClass('separator'));\n middleRow.append($('<td>').addClass('separator').html(':'));\n bottomRow.append($('<td>').addClass('separator'));\n }\n topRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.incrementSecond\n }).addClass('btn').attr('data-action', 'incrementSeconds').append($('<span>').addClass(options.icons.up))));\n middleRow.append($('<td>').append($('<span>').addClass('timepicker-second').attr({\n 'data-time-component': 'seconds',\n 'title': options.tooltips.pickSecond\n }).attr('data-action', 'showSeconds')));\n bottomRow.append($('<td>').append($('<a>').attr({\n href: '#',\n tabindex: '-1',\n 'title': options.tooltips.decrementSecond\n }).addClass('btn').attr('data-action', 'decrementSeconds').append($('<span>').addClass(options.icons.down))));\n }\n if (!use24Hours) {\n topRow.append($('<td>').addClass('separator'));\n middleRow.append($('<td>').append($('<button>').addClass('btn btn-primary btn-round').attr({\n 'data-action': 'togglePeriod',\n tabindex: '-1',\n 'title': options.tooltips.togglePeriod\n })));\n bottomRow.append($('<td>').addClass('separator'));\n }\n return $('<div>').addClass('timepicker-picker').append($('<table>').addClass('table-condensed').append([topRow, middleRow, bottomRow]));\n },\n getTimePickerTemplate = function getTimePickerTemplate() {\n var hoursView = $('<div>').addClass('timepicker-hours').append($('<table>').addClass('table-condensed')),\n minutesView = $('<div>').addClass('timepicker-minutes').append($('<table>').addClass('table-condensed')),\n secondsView = $('<div>').addClass('timepicker-seconds').append($('<table>').addClass('table-condensed')),\n ret = [getTimePickerMainTemplate()];\n if (isEnabled('h')) {\n ret.push(hoursView);\n }\n if (isEnabled('m')) {\n ret.push(minutesView);\n }\n if (isEnabled('s')) {\n ret.push(secondsView);\n }\n return ret;\n },\n getToolbar = function getToolbar() {\n var row = [];\n if (options.showTodayButton) {\n row.push($('<td>').append($('<a>').attr({\n 'data-action': 'today',\n 'title': options.tooltips.today\n }).append($('<span>').addClass(options.icons.today))));\n }\n if (!options.sideBySide && hasDate() && hasTime()) {\n row.push($('<td>').append($('<a>').attr({\n 'data-action': 'togglePicker',\n 'title': options.tooltips.selectTime\n }).append($('<span>').addClass(options.icons.time))));\n }\n if (options.showClear) {\n row.push($('<td>').append($('<a>').attr({\n 'data-action': 'clear',\n 'title': options.tooltips.clear\n }).append($('<span>').addClass(options.icons.clear))));\n }\n if (options.showClose) {\n row.push($('<td>').append($('<a>').attr({\n 'data-action': 'close',\n 'title': options.tooltips.close\n }).append($('<span>').addClass(options.icons.close))));\n }\n return $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row)));\n },\n getTemplate = function getTemplate() {\n var template = $('<div>').addClass('bootstrap-datetimepicker-widget dropdown-menu'),\n dateView = $('<div>').addClass('datepicker').append(getDatePickerTemplate()),\n timeView = $('<div>').addClass('timepicker').append(getTimePickerTemplate()),\n content = $('<ul>').addClass('list-unstyled'),\n toolbar = $('<li>').addClass('picker-switch' + (options.collapse ? ' accordion-toggle' : '')).append(getToolbar());\n if (options.inline) {\n template.removeClass('dropdown-menu');\n }\n if (use24Hours) {\n template.addClass('usetwentyfour');\n }\n if (isEnabled('s') && !use24Hours) {\n template.addClass('wider');\n }\n if (options.sideBySide && hasDate() && hasTime()) {\n template.addClass('timepicker-sbs');\n if (options.toolbarPlacement === 'top') {\n template.append(toolbar);\n }\n template.append($('<div>').addClass('row').append(dateView.addClass('col-md-6')).append(timeView.addClass('col-md-6')));\n if (options.toolbarPlacement === 'bottom') {\n template.append(toolbar);\n }\n return template;\n }\n if (options.toolbarPlacement === 'top') {\n content.append(toolbar);\n }\n if (hasDate()) {\n content.append($('<li>').addClass(options.collapse && hasTime() ? 'collapse in' : '').append(dateView));\n }\n if (options.toolbarPlacement === 'default') {\n content.append(toolbar);\n }\n if (hasTime()) {\n content.append($('<li>').addClass(options.collapse && hasDate() ? 'collapse' : '').append(timeView));\n }\n if (options.toolbarPlacement === 'bottom') {\n content.append(toolbar);\n }\n return template.append(content);\n },\n dataToOptions = function dataToOptions() {\n var eData,\n dataOptions = {};\n if (element.is('input') || options.inline) {\n eData = element.data();\n } else {\n eData = element.find('input').data();\n }\n if (eData.dateOptions && eData.dateOptions instanceof Object) {\n dataOptions = $.extend(true, dataOptions, eData.dateOptions);\n }\n $.each(options, function (key) {\n var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1);\n if (eData[attributeName] !== undefined) {\n dataOptions[key] = eData[attributeName];\n }\n });\n return dataOptions;\n },\n place = function place() {\n var position = (component || element).position(),\n offset = (component || element).offset(),\n vertical = options.widgetPositioning.vertical,\n horizontal = options.widgetPositioning.horizontal,\n parent;\n if (options.widgetParent) {\n parent = options.widgetParent.append(widget);\n } else if (element.is('input')) {\n parent = element.after(widget).parent();\n } else if (options.inline) {\n parent = element.append(widget);\n return;\n } else {\n parent = element;\n element.children().first().after(widget);\n }\n\n // Top and bottom logic\n if (vertical === 'auto') {\n if (offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && widget.height() + element.outerHeight() < offset.top) {\n vertical = 'top';\n } else {\n vertical = 'bottom';\n }\n }\n\n // Left and right logic\n if (horizontal === 'auto') {\n if (parent.width() < offset.left + widget.outerWidth() / 2 && offset.left + widget.outerWidth() > $(window).width()) {\n horizontal = 'right';\n } else {\n horizontal = 'left';\n }\n }\n if (vertical === 'top') {\n widget.addClass('top').removeClass('bottom');\n } else {\n widget.addClass('bottom').removeClass('top');\n }\n if (horizontal === 'right') {\n widget.addClass('pull-right');\n } else {\n widget.removeClass('pull-right');\n }\n\n // find the first parent element that has a relative css positioning\n if (parent.css('position') !== 'relative') {\n parent = parent.parents().filter(function () {\n return $(this).css('position') === 'relative';\n }).first();\n }\n if (parent.length === 0) {\n throw new Error('datetimepicker component should be placed within a relative positioned container');\n }\n widget.css({\n top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(),\n bottom: vertical === 'top' ? position.top + element.outerHeight() : 'auto',\n left: horizontal === 'left' ? parent === element ? 0 : position.left : 'auto',\n right: horizontal === 'left' ? 'auto' : parent.outerWidth() - element.outerWidth() - (parent === element ? 0 : position.left)\n });\n\n // Creative Tim Changes - we add after 180 ms the \".open\" class, in this way the animations will be the same with the other dropdowns from the\n setTimeout(function () {\n widget.addClass('open');\n }, 180);\n },\n notifyEvent = function notifyEvent(e) {\n if (e.type === 'dp.change' && (e.date && e.date.isSame(e.oldDate) || !e.date && !e.oldDate)) {\n return;\n }\n element.trigger(e);\n },\n viewUpdate = function viewUpdate(e) {\n if (e === 'y') {\n e = 'YYYY';\n }\n notifyEvent({\n type: 'dp.update',\n change: e,\n viewDate: viewDate.clone()\n });\n },\n showMode = function showMode(dir) {\n if (!widget) {\n return;\n }\n if (dir) {\n currentViewMode = Math.max(minViewModeNumber, Math.min(3, currentViewMode + dir));\n }\n widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show();\n },\n fillDow = function fillDow() {\n var row = $('<tr>'),\n currentDate = viewDate.clone().startOf('w').startOf('d');\n if (options.calendarWeeks === true) {\n row.append($('<th>').addClass('cw').text('#'));\n }\n while (currentDate.isBefore(viewDate.clone().endOf('w'))) {\n row.append($('<th>').addClass('dow').text(currentDate.format('dd')));\n currentDate.add(1, 'd');\n }\n widget.find('.datepicker-days thead').append(row);\n },\n isInDisabledDates = function isInDisabledDates(testDate) {\n return options.disabledDates[testDate.format('YYYY-MM-DD')] === true;\n },\n isInEnabledDates = function isInEnabledDates(testDate) {\n return options.enabledDates[testDate.format('YYYY-MM-DD')] === true;\n },\n isInDisabledHours = function isInDisabledHours(testDate) {\n return options.disabledHours[testDate.format('H')] === true;\n },\n isInEnabledHours = function isInEnabledHours(testDate) {\n return options.enabledHours[testDate.format('H')] === true;\n },\n isValid = function isValid(targetMoment, granularity) {\n if (!targetMoment.isValid()) {\n return false;\n }\n if (options.disabledDates && granularity === 'd' && isInDisabledDates(targetMoment)) {\n return false;\n }\n if (options.enabledDates && granularity === 'd' && !isInEnabledDates(targetMoment)) {\n return false;\n }\n if (options.minDate && targetMoment.isBefore(options.minDate, granularity)) {\n return false;\n }\n if (options.maxDate && targetMoment.isAfter(options.maxDate, granularity)) {\n return false;\n }\n if (options.daysOfWeekDisabled && granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) {\n return false;\n }\n if (options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && isInDisabledHours(targetMoment)) {\n return false;\n }\n if (options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !isInEnabledHours(targetMoment)) {\n return false;\n }\n if (options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's')) {\n var found = false;\n $.each(options.disabledTimeIntervals, function () {\n if (targetMoment.isBetween(this[0], this[1])) {\n found = true;\n return false;\n }\n });\n if (found) {\n return false;\n }\n }\n return true;\n },\n fillMonths = function fillMonths() {\n var spans = [],\n monthsShort = viewDate.clone().startOf('y').startOf('d');\n while (monthsShort.isSame(viewDate, 'y')) {\n spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));\n monthsShort.add(1, 'M');\n }\n widget.find('.datepicker-months td').empty().append(spans);\n },\n updateMonths = function updateMonths() {\n var monthsView = widget.find('.datepicker-months'),\n monthsViewHeader = monthsView.find('th'),\n months = monthsView.find('tbody').find('span');\n monthsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevYear);\n monthsViewHeader.eq(1).attr('title', options.tooltips.selectYear);\n monthsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextYear);\n monthsView.find('.disabled').removeClass('disabled');\n if (!isValid(viewDate.clone().subtract(1, 'y'), 'y')) {\n monthsViewHeader.eq(0).addClass('disabled');\n }\n monthsViewHeader.eq(1).text(viewDate.year());\n if (!isValid(viewDate.clone().add(1, 'y'), 'y')) {\n monthsViewHeader.eq(2).addClass('disabled');\n }\n months.removeClass('active');\n if (date.isSame(viewDate, 'y') && !unset) {\n months.eq(date.month()).addClass('active');\n }\n months.each(function (index) {\n if (!isValid(viewDate.clone().month(index), 'M')) {\n $(this).addClass('disabled');\n }\n });\n },\n updateYears = function updateYears() {\n var yearsView = widget.find('.datepicker-years'),\n yearsViewHeader = yearsView.find('th'),\n startYear = viewDate.clone().subtract(5, 'y'),\n endYear = viewDate.clone().add(6, 'y'),\n html = '';\n yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevDecade);\n yearsViewHeader.eq(1).attr('title', options.tooltips.selectDecade);\n yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextDecade);\n yearsView.find('.disabled').removeClass('disabled');\n if (options.minDate && options.minDate.isAfter(startYear, 'y')) {\n yearsViewHeader.eq(0).addClass('disabled');\n }\n yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year());\n if (options.maxDate && options.maxDate.isBefore(endYear, 'y')) {\n yearsViewHeader.eq(2).addClass('disabled');\n }\n while (!startYear.isAfter(endYear, 'y')) {\n html += '<span data-action=\"selectYear\" class=\"year' + (startYear.isSame(date, 'y') && !unset ? ' active' : '') + (!isValid(startYear, 'y') ? ' disabled' : '') + '\">' + startYear.year() + '</span>';\n startYear.add(1, 'y');\n }\n yearsView.find('td').html(html);\n },\n updateDecades = function updateDecades() {\n var decadesView = widget.find('.datepicker-decades'),\n decadesViewHeader = decadesView.find('th'),\n startDecade = moment({\n y: viewDate.year() - viewDate.year() % 100 - 1\n }),\n endDecade = startDecade.clone().add(100, 'y'),\n startedAt = startDecade.clone(),\n html = '';\n decadesViewHeader.eq(0).find('span').attr('title', options.tooltips.prevCentury);\n decadesViewHeader.eq(2).find('span').attr('title', options.tooltips.nextCentury);\n decadesView.find('.disabled').removeClass('disabled');\n if (startDecade.isSame(moment({\n y: 1900\n })) || options.minDate && options.minDate.isAfter(startDecade, 'y')) {\n decadesViewHeader.eq(0).addClass('disabled');\n }\n decadesViewHeader.eq(1).text(startDecade.year() + '-' + endDecade.year());\n if (startDecade.isSame(moment({\n y: 2000\n })) || options.maxDate && options.maxDate.isBefore(endDecade, 'y')) {\n decadesViewHeader.eq(2).addClass('disabled');\n }\n while (!startDecade.isAfter(endDecade, 'y')) {\n html += '<span data-action=\"selectDecade\" class=\"decade' + (startDecade.isSame(date, 'y') ? ' active' : '') + (!isValid(startDecade, 'y') ? ' disabled' : '') + '\" data-selection=\"' + (startDecade.year() + 6) + '\">' + (startDecade.year() + 1) + ' - ' + (startDecade.year() + 12) + '</span>';\n startDecade.add(12, 'y');\n }\n html += '<span></span><span></span><span></span>'; //push the dangling block over, at least this way it's even\n\n decadesView.find('td').html(html);\n decadesViewHeader.eq(1).text(startedAt.year() + 1 + '-' + startDecade.year());\n },\n fillDate = function fillDate() {\n var daysView = widget.find('.datepicker-days'),\n daysViewHeader = daysView.find('th'),\n currentDate,\n html = [],\n row,\n clsName,\n i;\n if (!hasDate()) {\n return;\n }\n daysViewHeader.eq(0).find('span').attr('title', options.tooltips.prevMonth);\n daysViewHeader.eq(1).attr('title', options.tooltips.selectMonth);\n daysViewHeader.eq(2).find('span').attr('title', options.tooltips.nextMonth);\n daysView.find('.disabled').removeClass('disabled');\n daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat));\n if (!isValid(viewDate.clone().subtract(1, 'M'), 'M')) {\n daysViewHeader.eq(0).addClass('disabled');\n }\n if (!isValid(viewDate.clone().add(1, 'M'), 'M')) {\n daysViewHeader.eq(2).addClass('disabled');\n }\n currentDate = viewDate.clone().startOf('M').startOf('w').startOf('d');\n for (i = 0; i < 42; i++) {\n //always display 42 days (should show 6 weeks)\n if (currentDate.weekday() === 0) {\n row = $('<tr>');\n if (options.calendarWeeks) {\n row.append('<td class=\"cw\">' + currentDate.week() + '</td>');\n }\n html.push(row);\n }\n clsName = '';\n if (currentDate.isBefore(viewDate, 'M')) {\n clsName += ' old';\n }\n if (currentDate.isAfter(viewDate, 'M')) {\n clsName += ' new';\n }\n if (currentDate.isSame(date, 'd') && !unset) {\n clsName += ' active';\n }\n if (!isValid(currentDate, 'd')) {\n clsName += ' disabled';\n }\n if (currentDate.isSame(getMoment(), 'd')) {\n clsName += ' today';\n }\n if (currentDate.day() === 0 || currentDate.day() === 6) {\n clsName += ' weekend';\n }\n\n // Creative Tim - we added a div inside each td for design purposes\n\n row.append('<td data-action=\"selectDay\" data-day=\"' + currentDate.format('L') + '\" class=\"day' + clsName + '\"><div>' + currentDate.date() + '</div></td>');\n currentDate.add(1, 'd');\n }\n daysView.find('tbody').empty().append(html);\n updateMonths();\n updateYears();\n updateDecades();\n },\n fillHours = function fillHours() {\n var table = widget.find('.timepicker-hours table'),\n currentHour = viewDate.clone().startOf('d'),\n html = [],\n row = $('<tr>');\n if (viewDate.hour() > 11 && !use24Hours) {\n currentHour.hour(12);\n }\n while (currentHour.isSame(viewDate, 'd') && (use24Hours || viewDate.hour() < 12 && currentHour.hour() < 12 || viewDate.hour() > 11)) {\n if (currentHour.hour() % 4 === 0) {\n row = $('<tr>');\n html.push(row);\n }\n\n // Creative Tim - we added a div inside each class minute for design purposes\n\n row.append('<td data-action=\"selectHour\" class=\"hour' + (!isValid(currentHour, 'h') ? ' disabled' : '') + '\"><div>' + currentHour.format(use24Hours ? 'HH' : 'hh') + '</div></td>');\n currentHour.add(1, 'h');\n }\n table.empty().append(html);\n },\n fillMinutes = function fillMinutes() {\n var table = widget.find('.timepicker-minutes table'),\n currentMinute = viewDate.clone().startOf('h'),\n html = [],\n row = $('<tr>'),\n step = options.stepping === 1 ? 5 : options.stepping;\n while (viewDate.isSame(currentMinute, 'h')) {\n if (currentMinute.minute() % (step * 4) === 0) {\n row = $('<tr>');\n html.push(row);\n }\n\n // Creative Tim - we added a div inside each class minute for design purposes\n\n row.append('<td data-action=\"selectMinute\" class=\"minute' + (!isValid(currentMinute, 'm') ? ' disabled' : '') + '\"><div>' + currentMinute.format('mm') + '</div></td>');\n currentMinute.add(step, 'm');\n }\n table.empty().append(html);\n },\n fillSeconds = function fillSeconds() {\n var table = widget.find('.timepicker-seconds table'),\n currentSecond = viewDate.clone().startOf('m'),\n html = [],\n row = $('<tr>');\n while (viewDate.isSame(currentSecond, 'm')) {\n if (currentSecond.second() % 20 === 0) {\n row = $('<tr>');\n html.push(row);\n }\n\n // Creative Tim - we added a div inside each class minute for design purposes\n\n row.append('<td data-action=\"selectSecond\" class=\"second' + (!isValid(currentSecond, 's') ? ' disabled' : '') + '\"><div>' + currentSecond.format('ss') + '</div></td>');\n currentSecond.add(5, 's');\n }\n table.empty().append(html);\n },\n fillTime = function fillTime() {\n var toggle,\n newDate,\n timeComponents = widget.find('.timepicker span[data-time-component]');\n if (!use24Hours) {\n toggle = widget.find('.timepicker [data-action=togglePeriod]');\n newDate = date.clone().add(date.hours() >= 12 ? -12 : 12, 'h');\n toggle.text(date.format('A'));\n if (isValid(newDate, 'h')) {\n toggle.removeClass('disabled');\n } else {\n toggle.addClass('disabled');\n }\n }\n timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh'));\n timeComponents.filter('[data-time-component=minutes]').text(date.format('mm'));\n timeComponents.filter('[data-time-component=seconds]').text(date.format('ss'));\n fillHours();\n fillMinutes();\n fillSeconds();\n },\n update = function update() {\n if (!widget) {\n return;\n }\n fillDate();\n fillTime();\n },\n setValue = function setValue(targetMoment) {\n var oldDate = unset ? null : date;\n\n // case of calling setValue(null or false)\n if (!targetMoment) {\n unset = true;\n input.val('');\n element.data('date', '');\n notifyEvent({\n type: 'dp.change',\n date: false,\n oldDate: oldDate\n });\n update();\n return;\n }\n targetMoment = targetMoment.clone().locale(options.locale);\n if (options.stepping !== 1) {\n targetMoment.minutes(Math.round(targetMoment.minutes() / options.stepping) * options.stepping % 60).seconds(0);\n }\n if (isValid(targetMoment)) {\n date = targetMoment;\n viewDate = date.clone();\n input.val(date.format(actualFormat));\n element.data('date', date.format(actualFormat));\n unset = false;\n update();\n notifyEvent({\n type: 'dp.change',\n date: date.clone(),\n oldDate: oldDate\n });\n } else {\n if (!options.keepInvalid) {\n input.val(unset ? '' : date.format(actualFormat));\n }\n notifyEvent({\n type: 'dp.error',\n date: targetMoment\n });\n }\n },\n hide = function hide() {\n ///<summary>Hides the widget. Possibly will emit dp.hide</summary>\n var transitioning = false;\n if (!widget) {\n return picker;\n }\n // Ignore event if in the middle of a picker transition\n widget.find('.collapse').each(function () {\n var collapseData = $(this).data('collapse');\n if (collapseData && collapseData.transitioning) {\n transitioning = true;\n return false;\n }\n return true;\n });\n if (transitioning) {\n return picker;\n }\n if (component && component.hasClass('btn')) {\n component.toggleClass('active');\n }\n $(window).off('resize', place);\n widget.off('click', '[data-action]');\n widget.off('mousedown', false);\n\n // Creative Tim Changes - we remove the \".open\" class, then, fter 400 ms call the .hide() method, in this way the animations will be the same with the other dropdowns from the dashboard\n\n widget.removeClass('open');\n setTimeout(function () {\n widget.hide();\n widget.remove();\n widget = false;\n notifyEvent({\n type: 'dp.hide',\n date: date.clone()\n });\n input.blur();\n return picker;\n }, 400);\n },\n clear = function clear() {\n setValue(null);\n },\n /********************************************************************************\n *\n * Widget UI interaction functions\n *\n ********************************************************************************/\n actions = {\n next: function next() {\n var navFnc = datePickerModes[currentViewMode].navFnc;\n viewDate.add(datePickerModes[currentViewMode].navStep, navFnc);\n fillDate();\n viewUpdate(navFnc);\n },\n previous: function previous() {\n var navFnc = datePickerModes[currentViewMode].navFnc;\n viewDate.subtract(datePickerModes[currentViewMode].navStep, navFnc);\n fillDate();\n viewUpdate(navFnc);\n },\n pickerSwitch: function pickerSwitch() {\n showMode(1);\n },\n selectMonth: function selectMonth(e) {\n var month = $(e.target).closest('tbody').find('span').index($(e.target));\n viewDate.month(month);\n if (currentViewMode === minViewModeNumber) {\n setValue(date.clone().year(viewDate.year()).month(viewDate.month()));\n if (!options.inline) {\n hide();\n }\n } else {\n showMode(-1);\n fillDate();\n }\n viewUpdate('M');\n },\n selectYear: function selectYear(e) {\n var year = parseInt($(e.target).text(), 10) || 0;\n viewDate.year(year);\n if (currentViewMode === minViewModeNumber) {\n setValue(date.clone().year(viewDate.year()));\n if (!options.inline) {\n hide();\n }\n } else {\n showMode(-1);\n fillDate();\n }\n viewUpdate('YYYY');\n },\n selectDecade: function selectDecade(e) {\n var year = parseInt($(e.target).data('selection'), 10) || 0;\n viewDate.year(year);\n if (currentViewMode === minViewModeNumber) {\n setValue(date.clone().year(viewDate.year()));\n if (!options.inline) {\n hide();\n }\n } else {\n showMode(-1);\n fillDate();\n }\n viewUpdate('YYYY');\n },\n selectDay: function selectDay(e) {\n var day = viewDate.clone();\n if ($(e.target).is('.old')) {\n day.subtract(1, 'M');\n }\n if ($(e.target).is('.new')) {\n day.add(1, 'M');\n }\n setValue(day.date(parseInt($(e.target).text(), 10)));\n if (!hasTime() && !options.keepOpen && !options.inline) {\n hide();\n }\n },\n incrementHours: function incrementHours() {\n var newDate = date.clone().add(1, 'h');\n if (isValid(newDate, 'h')) {\n setValue(newDate);\n }\n },\n incrementMinutes: function incrementMinutes() {\n var newDate = date.clone().add(options.stepping, 'm');\n if (isValid(newDate, 'm')) {\n setValue(newDate);\n }\n },\n incrementSeconds: function incrementSeconds() {\n var newDate = date.clone().add(1, 's');\n if (isValid(newDate, 's')) {\n setValue(newDate);\n }\n },\n decrementHours: function decrementHours() {\n var newDate = date.clone().subtract(1, 'h');\n if (isValid(newDate, 'h')) {\n setValue(newDate);\n }\n },\n decrementMinutes: function decrementMinutes() {\n var newDate = date.clone().subtract(options.stepping, 'm');\n if (isValid(newDate, 'm')) {\n setValue(newDate);\n }\n },\n decrementSeconds: function decrementSeconds() {\n var newDate = date.clone().subtract(1, 's');\n if (isValid(newDate, 's')) {\n setValue(newDate);\n }\n },\n togglePeriod: function togglePeriod() {\n setValue(date.clone().add(date.hours() >= 12 ? -12 : 12, 'h'));\n },\n togglePicker: function togglePicker(e) {\n var $this = $(e.target),\n $parent = $this.closest('ul'),\n expanded = $parent.find('.in'),\n closed = $parent.find('.collapse:not(.in)'),\n collapseData;\n if (expanded && expanded.length) {\n collapseData = expanded.data('collapse');\n if (collapseData && collapseData.transitioning) {\n return;\n }\n if (expanded.collapse) {\n // if collapse plugin is available through bootstrap.js then use it\n expanded.collapse('hide');\n closed.collapse('show');\n } else {\n // otherwise just toggle in class on the two views\n expanded.removeClass('in');\n closed.addClass('in');\n }\n if ($this.is('span')) {\n $this.toggleClass(options.icons.time + ' ' + options.icons.date);\n } else {\n $this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);\n }\n\n // NOTE: uncomment if toggled state will be restored in show()\n //if (component) {\n // component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);\n //}\n }\n },\n showPicker: function showPicker() {\n widget.find('.timepicker > div:not(.timepicker-picker)').hide();\n widget.find('.timepicker .timepicker-picker').show();\n },\n showHours: function showHours() {\n widget.find('.timepicker .timepicker-picker').hide();\n widget.find('.timepicker .timepicker-hours').show();\n },\n showMinutes: function showMinutes() {\n widget.find('.timepicker .timepicker-picker').hide();\n widget.find('.timepicker .timepicker-minutes').show();\n },\n showSeconds: function showSeconds() {\n widget.find('.timepicker .timepicker-picker').hide();\n widget.find('.timepicker .timepicker-seconds').show();\n },\n selectHour: function selectHour(e) {\n var hour = parseInt($(e.target).text(), 10);\n if (!use24Hours) {\n if (date.hours() >= 12) {\n if (hour !== 12) {\n hour += 12;\n }\n } else {\n if (hour === 12) {\n hour = 0;\n }\n }\n }\n setValue(date.clone().hours(hour));\n actions.showPicker.call(picker);\n },\n selectMinute: function selectMinute(e) {\n setValue(date.clone().minutes(parseInt($(e.target).text(), 10)));\n actions.showPicker.call(picker);\n },\n selectSecond: function selectSecond(e) {\n setValue(date.clone().seconds(parseInt($(e.target).text(), 10)));\n actions.showPicker.call(picker);\n },\n clear: clear,\n today: function today() {\n var todaysDate = getMoment();\n if (isValid(todaysDate, 'd')) {\n setValue(todaysDate);\n }\n },\n close: hide\n },\n doAction = function doAction(e) {\n if ($(e.currentTarget).is('.disabled')) {\n return false;\n }\n actions[$(e.currentTarget).data('action')].apply(picker, arguments);\n return false;\n },\n show = function show() {\n ///<summary>Shows the widget. Possibly will emit dp.show and dp.change</summary>\n var currentMoment,\n useCurrentGranularity = {\n 'year': function year(m) {\n return m.month(0).date(1).hours(0).seconds(0).minutes(0);\n },\n 'month': function month(m) {\n return m.date(1).hours(0).seconds(0).minutes(0);\n },\n 'day': function day(m) {\n return m.hours(0).seconds(0).minutes(0);\n },\n 'hour': function hour(m) {\n return m.seconds(0).minutes(0);\n },\n 'minute': function minute(m) {\n return m.seconds(0);\n }\n };\n if (input.prop('disabled') || !options.ignoreReadonly && input.prop('readonly') || widget) {\n return picker;\n }\n if (input.val() !== undefined && input.val().trim().length !== 0) {\n setValue(parseInputDate(input.val().trim()));\n } else if (options.useCurrent && unset && (input.is('input') && input.val().trim().length === 0 || options.inline)) {\n currentMoment = getMoment();\n if (typeof options.useCurrent === 'string') {\n currentMoment = useCurrentGranularity[options.useCurrent](currentMoment);\n }\n setValue(currentMoment);\n }\n widget = getTemplate();\n fillDow();\n fillMonths();\n widget.find('.timepicker-hours').hide();\n widget.find('.timepicker-minutes').hide();\n widget.find('.timepicker-seconds').hide();\n update();\n showMode();\n $(window).on('resize', place);\n widget.on('click', '[data-action]', doAction); // this handles clicks on the widget\n widget.on('mousedown', false);\n if (component && component.hasClass('btn')) {\n component.toggleClass('active');\n }\n widget.show();\n place();\n if (options.focusOnShow && !input.is(':focus')) {\n input.focus();\n }\n notifyEvent({\n type: 'dp.show'\n });\n return picker;\n },\n toggle = function toggle() {\n /// <summary>Shows or hides the widget</summary>\n return widget ? hide() : show();\n },\n parseInputDate = function parseInputDate(inputDate) {\n if (options.parseInputDate === undefined) {\n if (moment.isMoment(inputDate) || inputDate instanceof Date) {\n inputDate = moment(inputDate);\n } else {\n inputDate = getMoment(inputDate);\n }\n } else {\n inputDate = options.parseInputDate(inputDate);\n }\n inputDate.locale(options.locale);\n return inputDate;\n },\n keydown = function keydown(e) {\n var handler = null,\n index,\n index2,\n pressedKeys = [],\n pressedModifiers = {},\n currentKey = e.which,\n keyBindKeys,\n allModifiersPressed,\n pressed = 'p';\n keyState[currentKey] = pressed;\n for (index in keyState) {\n if (keyState.hasOwnProperty(index) && keyState[index] === pressed) {\n pressedKeys.push(index);\n if (parseInt(index, 10) !== currentKey) {\n pressedModifiers[index] = true;\n }\n }\n }\n for (index in options.keyBinds) {\n if (options.keyBinds.hasOwnProperty(index) && typeof options.keyBinds[index] === 'function') {\n keyBindKeys = index.split(' ');\n if (keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) {\n allModifiersPressed = true;\n for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) {\n if (!(keyMap[keyBindKeys[index2]] in pressedModifiers)) {\n allModifiersPressed = false;\n break;\n }\n }\n if (allModifiersPressed) {\n handler = options.keyBinds[index];\n break;\n }\n }\n }\n }\n if (handler) {\n handler.call(picker, widget);\n e.stopPropagation();\n e.preventDefault();\n }\n },\n keyup = function keyup(e) {\n keyState[e.which] = 'r';\n e.stopPropagation();\n e.preventDefault();\n },\n change = function change(e) {\n var val = $(e.target).val().trim(),\n parsedDate = val ? parseInputDate(val) : null;\n setValue(parsedDate);\n e.stopImmediatePropagation();\n return false;\n },\n attachDatePickerElementEvents = function attachDatePickerElementEvents() {\n input.on({\n 'change': change,\n 'blur': options.debug ? '' : hide,\n 'keydown': keydown,\n 'keyup': keyup,\n 'focus': options.allowInputToggle ? show : ''\n });\n if (element.is('input')) {\n input.on({\n 'focus': show\n });\n } else if (component) {\n component.on('click', toggle);\n component.on('mousedown', false);\n }\n },\n detachDatePickerElementEvents = function detachDatePickerElementEvents() {\n input.off({\n 'change': change,\n 'blur': blur,\n 'keydown': keydown,\n 'keyup': keyup,\n 'focus': options.allowInputToggle ? hide : ''\n });\n if (element.is('input')) {\n input.off({\n 'focus': show\n });\n } else if (component) {\n component.off('click', toggle);\n component.off('mousedown', false);\n }\n },\n indexGivenDates = function indexGivenDates(givenDatesArray) {\n // Store given enabledDates and disabledDates as keys.\n // This way we can check their existence in O(1) time instead of looping through whole array.\n // (for example: options.enabledDates['2014-02-27'] === true)\n var givenDatesIndexed = {};\n $.each(givenDatesArray, function () {\n var dDate = parseInputDate(this);\n if (dDate.isValid()) {\n givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;\n }\n });\n return Object.keys(givenDatesIndexed).length ? givenDatesIndexed : false;\n },\n indexGivenHours = function indexGivenHours(givenHoursArray) {\n // Store given enabledHours and disabledHours as keys.\n // This way we can check their existence in O(1) time instead of looping through whole array.\n // (for example: options.enabledHours['2014-02-27'] === true)\n var givenHoursIndexed = {};\n $.each(givenHoursArray, function () {\n givenHoursIndexed[this] = true;\n });\n return Object.keys(givenHoursIndexed).length ? givenHoursIndexed : false;\n },\n initFormatting = function initFormatting() {\n var format = options.format || 'L LT';\n actualFormat = format.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) {\n var newinput = date.localeData().longDateFormat(formatInput) || formatInput;\n return newinput.replace(/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput2) {\n //temp fix for #740\n return date.localeData().longDateFormat(formatInput2) || formatInput2;\n });\n });\n parseFormats = options.extraFormats ? options.extraFormats.slice() : [];\n if (parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0) {\n parseFormats.push(actualFormat);\n }\n use24Hours = actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.replace(/\\[.*?\\]/g, '').indexOf('h') < 1;\n if (isEnabled('y')) {\n minViewModeNumber = 2;\n }\n if (isEnabled('M')) {\n minViewModeNumber = 1;\n }\n if (isEnabled('d')) {\n minViewModeNumber = 0;\n }\n currentViewMode = Math.max(minViewModeNumber, currentViewMode);\n if (!unset) {\n setValue(date);\n }\n };\n\n /********************************************************************************\n *\n * Public API functions\n * =====================\n *\n * Important: Do not expose direct references to private objects or the options\n * object to the outer world. Always return a clone when returning values or make\n * a clone when setting a private variable.\n *\n ********************************************************************************/\n picker.destroy = function () {\n ///<summary>Destroys the widget and removes all attached event listeners</summary>\n hide();\n detachDatePickerElementEvents();\n element.removeData('DateTimePicker');\n element.removeData('date');\n };\n picker.toggle = toggle;\n picker.show = show;\n picker.hide = hide;\n picker.disable = function () {\n ///<summary>Disables the input element, the component is attached to, by adding a disabled=\"true\" attribute to it.\n ///If the widget was visible before that call it is hidden. Possibly emits dp.hide</summary>\n hide();\n if (component && component.hasClass('btn')) {\n component.addClass('disabled');\n }\n input.prop('disabled', true);\n return picker;\n };\n picker.enable = function () {\n ///<summary>Enables the input element, the component is attached to, by removing disabled attribute from it.</summary>\n if (component && component.hasClass('btn')) {\n component.removeClass('disabled');\n }\n input.prop('disabled', false);\n return picker;\n };\n picker.ignoreReadonly = function (ignoreReadonly) {\n if (arguments.length === 0) {\n return options.ignoreReadonly;\n }\n if (typeof ignoreReadonly !== 'boolean') {\n throw new TypeError('ignoreReadonly () expects a boolean parameter');\n }\n options.ignoreReadonly = ignoreReadonly;\n return picker;\n };\n picker.options = function (newOptions) {\n if (arguments.length === 0) {\n return $.extend(true, {}, options);\n }\n if (!(newOptions instanceof Object)) {\n throw new TypeError('options() options parameter should be an object');\n }\n $.extend(true, options, newOptions);\n $.each(options, function (key, value) {\n if (picker[key] !== undefined) {\n picker[key](value);\n } else {\n throw new TypeError('option ' + key + ' is not recognized!');\n }\n });\n return picker;\n };\n picker.date = function (newDate) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.date\">\n ///<summary>Returns the component's model current date, a moment object or null if not set.</summary>\n ///<returns type=\"Moment\">date.clone()</returns>\n ///</signature>\n ///<signature>\n ///<summary>Sets the components model current moment to it. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.</summary>\n ///<param name=\"newDate\" locid=\"$.fn.datetimepicker.date_p:newDate\">Takes string, Date, moment, null parameter.</param>\n ///</signature>\n if (arguments.length === 0) {\n if (unset) {\n return null;\n }\n return date.clone();\n }\n if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n throw new TypeError('date() parameter must be one of [null, string, moment or Date]');\n }\n setValue(newDate === null ? null : parseInputDate(newDate));\n return picker;\n };\n picker.format = function (newFormat) {\n ///<summary>test su</summary>\n ///<param name=\"newFormat\">info about para</param>\n ///<returns type=\"string|boolean\">returns foo</returns>\n if (arguments.length === 0) {\n return options.format;\n }\n if (typeof newFormat !== 'string' && (typeof newFormat !== 'boolean' || newFormat !== false)) {\n throw new TypeError('format() expects a sting or boolean:false parameter ' + newFormat);\n }\n options.format = newFormat;\n if (actualFormat) {\n initFormatting(); // reinit formatting\n }\n return picker;\n };\n picker.timeZone = function (newZone) {\n if (arguments.length === 0) {\n return options.timeZone;\n }\n options.timeZone = newZone;\n return picker;\n };\n picker.dayViewHeaderFormat = function (newFormat) {\n if (arguments.length === 0) {\n return options.dayViewHeaderFormat;\n }\n if (typeof newFormat !== 'string') {\n throw new TypeError('dayViewHeaderFormat() expects a string parameter');\n }\n options.dayViewHeaderFormat = newFormat;\n return picker;\n };\n picker.extraFormats = function (formats) {\n if (arguments.length === 0) {\n return options.extraFormats;\n }\n if (formats !== false && !(formats instanceof Array)) {\n throw new TypeError('extraFormats() expects an array or false parameter');\n }\n options.extraFormats = formats;\n if (parseFormats) {\n initFormatting(); // reinit formatting\n }\n return picker;\n };\n picker.disabledDates = function (dates) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.disabledDates\">\n ///<summary>Returns an array with the currently set disabled dates on the component.</summary>\n ///<returns type=\"array\">options.disabledDates</returns>\n ///</signature>\n ///<signature>\n ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n ///options.enabledDates if such exist.</summary>\n ///<param name=\"dates\" locid=\"$.fn.datetimepicker.disabledDates_p:dates\">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>\n ///</signature>\n if (arguments.length === 0) {\n return options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates;\n }\n if (!dates) {\n options.disabledDates = false;\n update();\n return picker;\n }\n if (!(dates instanceof Array)) {\n throw new TypeError('disabledDates() expects an array parameter');\n }\n options.disabledDates = indexGivenDates(dates);\n options.enabledDates = false;\n update();\n return picker;\n };\n picker.enabledDates = function (dates) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.enabledDates\">\n ///<summary>Returns an array with the currently set enabled dates on the component.</summary>\n ///<returns type=\"array\">options.enabledDates</returns>\n ///</signature>\n ///<signature>\n ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledDates if such exist.</summary>\n ///<param name=\"dates\" locid=\"$.fn.datetimepicker.enabledDates_p:dates\">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>\n ///</signature>\n if (arguments.length === 0) {\n return options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates;\n }\n if (!dates) {\n options.enabledDates = false;\n update();\n return picker;\n }\n if (!(dates instanceof Array)) {\n throw new TypeError('enabledDates() expects an array parameter');\n }\n options.enabledDates = indexGivenDates(dates);\n options.disabledDates = false;\n update();\n return picker;\n };\n picker.daysOfWeekDisabled = function (daysOfWeekDisabled) {\n if (arguments.length === 0) {\n return options.daysOfWeekDisabled.splice(0);\n }\n if (typeof daysOfWeekDisabled === 'boolean' && !daysOfWeekDisabled) {\n options.daysOfWeekDisabled = false;\n update();\n return picker;\n }\n if (!(daysOfWeekDisabled instanceof Array)) {\n throw new TypeError('daysOfWeekDisabled() expects an array parameter');\n }\n options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function (previousValue, currentValue) {\n currentValue = parseInt(currentValue, 10);\n if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) {\n return previousValue;\n }\n if (previousValue.indexOf(currentValue) === -1) {\n previousValue.push(currentValue);\n }\n return previousValue;\n }, []).sort();\n if (options.useCurrent && !options.keepInvalid) {\n var tries = 0;\n while (!isValid(date, 'd')) {\n date.add(1, 'd');\n if (tries === 7) {\n throw 'Tried 7 times to find a valid date';\n }\n tries++;\n }\n setValue(date);\n }\n update();\n return picker;\n };\n picker.maxDate = function (maxDate) {\n if (arguments.length === 0) {\n return options.maxDate ? options.maxDate.clone() : options.maxDate;\n }\n if (typeof maxDate === 'boolean' && maxDate === false) {\n options.maxDate = false;\n update();\n return picker;\n }\n if (typeof maxDate === 'string') {\n if (maxDate === 'now' || maxDate === 'moment') {\n maxDate = getMoment();\n }\n }\n var parsedDate = parseInputDate(maxDate);\n if (!parsedDate.isValid()) {\n throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate);\n }\n if (options.minDate && parsedDate.isBefore(options.minDate)) {\n throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat));\n }\n options.maxDate = parsedDate;\n if (options.useCurrent && !options.keepInvalid && date.isAfter(maxDate)) {\n setValue(options.maxDate);\n }\n if (viewDate.isAfter(parsedDate)) {\n viewDate = parsedDate.clone().subtract(options.stepping, 'm');\n }\n update();\n return picker;\n };\n picker.minDate = function (minDate) {\n if (arguments.length === 0) {\n return options.minDate ? options.minDate.clone() : options.minDate;\n }\n if (typeof minDate === 'boolean' && minDate === false) {\n options.minDate = false;\n update();\n return picker;\n }\n if (typeof minDate === 'string') {\n if (minDate === 'now' || minDate === 'moment') {\n minDate = getMoment();\n }\n }\n var parsedDate = parseInputDate(minDate);\n if (!parsedDate.isValid()) {\n throw new TypeError('minDate() Could not parse date parameter: ' + minDate);\n }\n if (options.maxDate && parsedDate.isAfter(options.maxDate)) {\n throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat));\n }\n options.minDate = parsedDate;\n if (options.useCurrent && !options.keepInvalid && date.isBefore(minDate)) {\n setValue(options.minDate);\n }\n if (viewDate.isBefore(parsedDate)) {\n viewDate = parsedDate.clone().add(options.stepping, 'm');\n }\n update();\n return picker;\n };\n picker.defaultDate = function (defaultDate) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.defaultDate\">\n ///<summary>Returns a moment with the options.defaultDate option configuration or false if not set</summary>\n ///<returns type=\"Moment\">date.clone()</returns>\n ///</signature>\n ///<signature>\n ///<summary>Will set the picker's inital date. If a boolean:false value is passed the options.defaultDate parameter is cleared.</summary>\n ///<param name=\"defaultDate\" locid=\"$.fn.datetimepicker.defaultDate_p:defaultDate\">Takes a string, Date, moment, boolean:false</param>\n ///</signature>\n if (arguments.length === 0) {\n return options.defaultDate ? options.defaultDate.clone() : options.defaultDate;\n }\n if (!defaultDate) {\n options.defaultDate = false;\n return picker;\n }\n if (typeof defaultDate === 'string') {\n if (defaultDate === 'now' || defaultDate === 'moment') {\n defaultDate = getMoment();\n }\n }\n var parsedDate = parseInputDate(defaultDate);\n if (!parsedDate.isValid()) {\n throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate);\n }\n if (!isValid(parsedDate)) {\n throw new TypeError('defaultDate() date passed is invalid according to component setup validations');\n }\n options.defaultDate = parsedDate;\n if (options.defaultDate && options.inline || input.val().trim() === '') {\n setValue(options.defaultDate);\n }\n return picker;\n };\n picker.locale = function (locale) {\n if (arguments.length === 0) {\n return options.locale;\n }\n if (!moment.localeData(locale)) {\n throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!');\n }\n options.locale = locale;\n date.locale(options.locale);\n viewDate.locale(options.locale);\n if (actualFormat) {\n initFormatting(); // reinit formatting\n }\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.stepping = function (stepping) {\n if (arguments.length === 0) {\n return options.stepping;\n }\n stepping = parseInt(stepping, 10);\n if (isNaN(stepping) || stepping < 1) {\n stepping = 1;\n }\n options.stepping = stepping;\n return picker;\n };\n picker.useCurrent = function (useCurrent) {\n var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];\n if (arguments.length === 0) {\n return options.useCurrent;\n }\n if (typeof useCurrent !== 'boolean' && typeof useCurrent !== 'string') {\n throw new TypeError('useCurrent() expects a boolean or string parameter');\n }\n if (typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1) {\n throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', '));\n }\n options.useCurrent = useCurrent;\n return picker;\n };\n picker.collapse = function (collapse) {\n if (arguments.length === 0) {\n return options.collapse;\n }\n if (typeof collapse !== 'boolean') {\n throw new TypeError('collapse() expects a boolean parameter');\n }\n if (options.collapse === collapse) {\n return picker;\n }\n options.collapse = collapse;\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.icons = function (icons) {\n if (arguments.length === 0) {\n return $.extend({}, options.icons);\n }\n if (!(icons instanceof Object)) {\n throw new TypeError('icons() expects parameter to be an Object');\n }\n $.extend(options.icons, icons);\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.tooltips = function (tooltips) {\n if (arguments.length === 0) {\n return $.extend({}, options.tooltips);\n }\n if (!(tooltips instanceof Object)) {\n throw new TypeError('tooltips() expects parameter to be an Object');\n }\n $.extend(options.tooltips, tooltips);\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.useStrict = function (useStrict) {\n if (arguments.length === 0) {\n return options.useStrict;\n }\n if (typeof useStrict !== 'boolean') {\n throw new TypeError('useStrict() expects a boolean parameter');\n }\n options.useStrict = useStrict;\n return picker;\n };\n picker.sideBySide = function (sideBySide) {\n if (arguments.length === 0) {\n return options.sideBySide;\n }\n if (typeof sideBySide !== 'boolean') {\n throw new TypeError('sideBySide() expects a boolean parameter');\n }\n options.sideBySide = sideBySide;\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.viewMode = function (viewMode) {\n if (arguments.length === 0) {\n return options.viewMode;\n }\n if (typeof viewMode !== 'string') {\n throw new TypeError('viewMode() expects a string parameter');\n }\n if (viewModes.indexOf(viewMode) === -1) {\n throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value');\n }\n options.viewMode = viewMode;\n currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber);\n showMode();\n return picker;\n };\n picker.toolbarPlacement = function (toolbarPlacement) {\n if (arguments.length === 0) {\n return options.toolbarPlacement;\n }\n if (typeof toolbarPlacement !== 'string') {\n throw new TypeError('toolbarPlacement() expects a string parameter');\n }\n if (toolbarPlacements.indexOf(toolbarPlacement) === -1) {\n throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value');\n }\n options.toolbarPlacement = toolbarPlacement;\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.widgetPositioning = function (widgetPositioning) {\n if (arguments.length === 0) {\n return $.extend({}, options.widgetPositioning);\n }\n if ({}.toString.call(widgetPositioning) !== '[object Object]') {\n throw new TypeError('widgetPositioning() expects an object variable');\n }\n if (widgetPositioning.horizontal) {\n if (typeof widgetPositioning.horizontal !== 'string') {\n throw new TypeError('widgetPositioning() horizontal variable must be a string');\n }\n widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase();\n if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) {\n throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')');\n }\n options.widgetPositioning.horizontal = widgetPositioning.horizontal;\n }\n if (widgetPositioning.vertical) {\n if (typeof widgetPositioning.vertical !== 'string') {\n throw new TypeError('widgetPositioning() vertical variable must be a string');\n }\n widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase();\n if (verticalModes.indexOf(widgetPositioning.vertical) === -1) {\n throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')');\n }\n options.widgetPositioning.vertical = widgetPositioning.vertical;\n }\n update();\n return picker;\n };\n picker.calendarWeeks = function (calendarWeeks) {\n if (arguments.length === 0) {\n return options.calendarWeeks;\n }\n if (typeof calendarWeeks !== 'boolean') {\n throw new TypeError('calendarWeeks() expects parameter to be a boolean value');\n }\n options.calendarWeeks = calendarWeeks;\n update();\n return picker;\n };\n picker.showTodayButton = function (showTodayButton) {\n if (arguments.length === 0) {\n return options.showTodayButton;\n }\n if (typeof showTodayButton !== 'boolean') {\n throw new TypeError('showTodayButton() expects a boolean parameter');\n }\n options.showTodayButton = showTodayButton;\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.showClear = function (showClear) {\n if (arguments.length === 0) {\n return options.showClear;\n }\n if (typeof showClear !== 'boolean') {\n throw new TypeError('showClear() expects a boolean parameter');\n }\n options.showClear = showClear;\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.widgetParent = function (widgetParent) {\n if (arguments.length === 0) {\n return options.widgetParent;\n }\n if (typeof widgetParent === 'string') {\n widgetParent = $(widgetParent);\n }\n if (widgetParent !== null && typeof widgetParent !== 'string' && !(widgetParent instanceof $)) {\n throw new TypeError('widgetParent() expects a string or a jQuery object parameter');\n }\n options.widgetParent = widgetParent;\n if (widget) {\n hide();\n show();\n }\n return picker;\n };\n picker.keepOpen = function (keepOpen) {\n if (arguments.length === 0) {\n return options.keepOpen;\n }\n if (typeof keepOpen !== 'boolean') {\n throw new TypeError('keepOpen() expects a boolean parameter');\n }\n options.keepOpen = keepOpen;\n return picker;\n };\n picker.focusOnShow = function (focusOnShow) {\n if (arguments.length === 0) {\n return options.focusOnShow;\n }\n if (typeof focusOnShow !== 'boolean') {\n throw new TypeError('focusOnShow() expects a boolean parameter');\n }\n options.focusOnShow = focusOnShow;\n return picker;\n };\n picker.inline = function (inline) {\n if (arguments.length === 0) {\n return options.inline;\n }\n if (typeof inline !== 'boolean') {\n throw new TypeError('inline() expects a boolean parameter');\n }\n options.inline = inline;\n return picker;\n };\n picker.clear = function () {\n clear();\n return picker;\n };\n picker.keyBinds = function (keyBinds) {\n options.keyBinds = keyBinds;\n return picker;\n };\n picker.getMoment = function (d) {\n return getMoment(d);\n };\n picker.debug = function (debug) {\n if (typeof debug !== 'boolean') {\n throw new TypeError('debug() expects a boolean parameter');\n }\n options.debug = debug;\n return picker;\n };\n picker.allowInputToggle = function (allowInputToggle) {\n if (arguments.length === 0) {\n return options.allowInputToggle;\n }\n if (typeof allowInputToggle !== 'boolean') {\n throw new TypeError('allowInputToggle() expects a boolean parameter');\n }\n options.allowInputToggle = allowInputToggle;\n return picker;\n };\n picker.showClose = function (showClose) {\n if (arguments.length === 0) {\n return options.showClose;\n }\n if (typeof showClose !== 'boolean') {\n throw new TypeError('showClose() expects a boolean parameter');\n }\n options.showClose = showClose;\n return picker;\n };\n picker.keepInvalid = function (keepInvalid) {\n if (arguments.length === 0) {\n return options.keepInvalid;\n }\n if (typeof keepInvalid !== 'boolean') {\n throw new TypeError('keepInvalid() expects a boolean parameter');\n }\n options.keepInvalid = keepInvalid;\n return picker;\n };\n picker.datepickerInput = function (datepickerInput) {\n if (arguments.length === 0) {\n return options.datepickerInput;\n }\n if (typeof datepickerInput !== 'string') {\n throw new TypeError('datepickerInput() expects a string parameter');\n }\n options.datepickerInput = datepickerInput;\n return picker;\n };\n picker.parseInputDate = function (parseInputDate) {\n if (arguments.length === 0) {\n return options.parseInputDate;\n }\n if (typeof parseInputDate !== 'function') {\n throw new TypeError('parseInputDate() sholud be as function');\n }\n options.parseInputDate = parseInputDate;\n return picker;\n };\n picker.disabledTimeIntervals = function (disabledTimeIntervals) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.disabledTimeIntervals\">\n ///<summary>Returns an array with the currently set disabled dates on the component.</summary>\n ///<returns type=\"array\">options.disabledTimeIntervals</returns>\n ///</signature>\n ///<signature>\n ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n ///options.enabledDates if such exist.</summary>\n ///<param name=\"dates\" locid=\"$.fn.datetimepicker.disabledTimeIntervals_p:dates\">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>\n ///</signature>\n if (arguments.length === 0) {\n return options.disabledTimeIntervals ? $.extend({}, options.disabledTimeIntervals) : options.disabledTimeIntervals;\n }\n if (!disabledTimeIntervals) {\n options.disabledTimeIntervals = false;\n update();\n return picker;\n }\n if (!(disabledTimeIntervals instanceof Array)) {\n throw new TypeError('disabledTimeIntervals() expects an array parameter');\n }\n options.disabledTimeIntervals = disabledTimeIntervals;\n update();\n return picker;\n };\n picker.disabledHours = function (hours) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.disabledHours\">\n ///<summary>Returns an array with the currently set disabled hours on the component.</summary>\n ///<returns type=\"array\">options.disabledHours</returns>\n ///</signature>\n ///<signature>\n ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of\n ///options.enabledHours if such exist.</summary>\n ///<param name=\"hours\" locid=\"$.fn.datetimepicker.disabledHours_p:hours\">Takes an [ int ] of values and disallows the user to select only from those hours.</param>\n ///</signature>\n if (arguments.length === 0) {\n return options.disabledHours ? $.extend({}, options.disabledHours) : options.disabledHours;\n }\n if (!hours) {\n options.disabledHours = false;\n update();\n return picker;\n }\n if (!(hours instanceof Array)) {\n throw new TypeError('disabledHours() expects an array parameter');\n }\n options.disabledHours = indexGivenHours(hours);\n options.enabledHours = false;\n if (options.useCurrent && !options.keepInvalid) {\n var tries = 0;\n while (!isValid(date, 'h')) {\n date.add(1, 'h');\n if (tries === 24) {\n throw 'Tried 24 times to find a valid date';\n }\n tries++;\n }\n setValue(date);\n }\n update();\n return picker;\n };\n picker.enabledHours = function (hours) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.enabledHours\">\n ///<summary>Returns an array with the currently set enabled hours on the component.</summary>\n ///<returns type=\"array\">options.enabledHours</returns>\n ///</signature>\n ///<signature>\n ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledHours if such exist.</summary>\n ///<param name=\"hours\" locid=\"$.fn.datetimepicker.enabledHours_p:hours\">Takes an [ int ] of values and allows the user to select only from those hours.</param>\n ///</signature>\n if (arguments.length === 0) {\n return options.enabledHours ? $.extend({}, options.enabledHours) : options.enabledHours;\n }\n if (!hours) {\n options.enabledHours = false;\n update();\n return picker;\n }\n if (!(hours instanceof Array)) {\n throw new TypeError('enabledHours() expects an array parameter');\n }\n options.enabledHours = indexGivenHours(hours);\n options.disabledHours = false;\n if (options.useCurrent && !options.keepInvalid) {\n var tries = 0;\n while (!isValid(date, 'h')) {\n date.add(1, 'h');\n if (tries === 24) {\n throw 'Tried 24 times to find a valid date';\n }\n tries++;\n }\n setValue(date);\n }\n update();\n return picker;\n };\n picker.viewDate = function (newDate) {\n ///<signature helpKeyword=\"$.fn.datetimepicker.viewDate\">\n ///<summary>Returns the component's model current viewDate, a moment object or null if not set.</summary>\n ///<returns type=\"Moment\">viewDate.clone()</returns>\n ///</signature>\n ///<signature>\n ///<summary>Sets the components model current moment to it. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.</summary>\n ///<param name=\"newDate\" locid=\"$.fn.datetimepicker.date_p:newDate\">Takes string, viewDate, moment, null parameter.</param>\n ///</signature>\n if (arguments.length === 0) {\n return viewDate.clone();\n }\n if (!newDate) {\n viewDate = date.clone();\n return picker;\n }\n if (typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {\n throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');\n }\n viewDate = parseInputDate(newDate);\n viewUpdate();\n return picker;\n };\n\n // initializing element and component attributes\n if (element.is('input')) {\n input = element;\n } else {\n input = element.find(options.datepickerInput);\n if (input.size() === 0) {\n input = element.find('input');\n } else if (!input.is('input')) {\n throw new Error('CSS class \"' + options.datepickerInput + '\" cannot be applied to non input element');\n }\n }\n if (element.hasClass('input-group')) {\n // in case there is more then one 'input-group-addon' Issue #48\n if (element.find('.datepickerbutton').size() === 0) {\n component = element.find('.input-group-addon');\n } else {\n component = element.find('.datepickerbutton');\n }\n }\n if (!options.inline && !input.is('input')) {\n throw new Error('Could not initialize DateTimePicker without an input element');\n }\n\n // Set defaults for date here now instead of in var declaration\n date = getMoment();\n viewDate = date.clone();\n $.extend(true, options, dataToOptions());\n picker.options(options);\n initFormatting();\n attachDatePickerElementEvents();\n if (input.prop('disabled')) {\n picker.disable();\n }\n if (input.is('input') && input.val().trim().length !== 0) {\n setValue(parseInputDate(input.val().trim()));\n } else if (options.defaultDate && input.attr('placeholder') === undefined) {\n setValue(options.defaultDate);\n }\n if (options.inline) {\n show();\n }\n return picker;\n };\n\n /********************************************************************************\n *\n * jQuery plugin constructor and defaults object\n *\n ********************************************************************************/\n\n $.fn.datetimepicker = function (options) {\n return this.each(function () {\n var $this = $(this);\n if (!$this.data('DateTimePicker')) {\n // create a private copy of the defaults object\n options = $.extend(true, {}, $.fn.datetimepicker.defaults, options);\n $this.data('DateTimePicker', dateTimePicker($this, options));\n }\n });\n };\n $.fn.datetimepicker.defaults = {\n timeZone: 'Etc/UTC',\n format: false,\n dayViewHeaderFormat: 'MMMM YYYY',\n extraFormats: false,\n stepping: 1,\n minDate: false,\n maxDate: false,\n useCurrent: true,\n collapse: true,\n locale: moment.locale(),\n defaultDate: false,\n disabledDates: false,\n enabledDates: false,\n icons: {\n time: 'glyphicon glyphicon-time',\n date: 'glyphicon glyphicon-calendar',\n up: 'glyphicon glyphicon-chevron-up',\n down: 'glyphicon glyphicon-chevron-down',\n previous: 'glyphicon glyphicon-chevron-left',\n next: 'glyphicon glyphicon-chevron-right',\n today: 'glyphicon glyphicon-screenshot',\n clear: 'glyphicon glyphicon-trash',\n close: 'glyphicon glyphicon-remove'\n },\n tooltips: {\n today: 'Go to today',\n clear: 'Clear selection',\n close: 'Close the picker',\n selectMonth: 'Select Month',\n prevMonth: 'Previous Month',\n nextMonth: 'Next Month',\n selectYear: 'Select Year',\n prevYear: 'Previous Year',\n nextYear: 'Next Year',\n selectDecade: 'Select Decade',\n prevDecade: 'Previous Decade',\n nextDecade: 'Next Decade',\n prevCentury: 'Previous Century',\n nextCentury: 'Next Century',\n pickHour: 'Pick Hour',\n incrementHour: 'Increment Hour',\n decrementHour: 'Decrement Hour',\n pickMinute: 'Pick Minute',\n incrementMinute: 'Increment Minute',\n decrementMinute: 'Decrement Minute',\n pickSecond: 'Pick Second',\n incrementSecond: 'Increment Second',\n decrementSecond: 'Decrement Second',\n togglePeriod: 'Toggle Period',\n selectTime: 'Select Time'\n },\n useStrict: false,\n sideBySide: false,\n daysOfWeekDisabled: false,\n calendarWeeks: false,\n viewMode: 'days',\n toolbarPlacement: 'default',\n showTodayButton: false,\n showClear: false,\n showClose: false,\n widgetPositioning: {\n horizontal: 'auto',\n vertical: 'auto'\n },\n widgetParent: null,\n ignoreReadonly: false,\n keepOpen: false,\n focusOnShow: true,\n inline: false,\n keepInvalid: false,\n datepickerInput: '.datepickerinput',\n keyBinds: {\n up: function up(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(7, 'd'));\n } else {\n this.date(d.clone().add(this.stepping(), 'm'));\n }\n },\n down: function down(widget) {\n if (!widget) {\n this.show();\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(7, 'd'));\n } else {\n this.date(d.clone().subtract(this.stepping(), 'm'));\n }\n },\n 'control up': function controlUp(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'y'));\n } else {\n this.date(d.clone().add(1, 'h'));\n }\n },\n 'control down': function controlDown(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'y'));\n } else {\n this.date(d.clone().subtract(1, 'h'));\n }\n },\n left: function left(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'd'));\n }\n },\n right: function right(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'd'));\n }\n },\n pageUp: function pageUp(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().subtract(1, 'M'));\n }\n },\n pageDown: function pageDown(widget) {\n if (!widget) {\n return;\n }\n var d = this.date() || this.getMoment();\n if (widget.find('.datepicker').is(':visible')) {\n this.date(d.clone().add(1, 'M'));\n }\n },\n enter: function enter() {\n this.hide();\n },\n escape: function escape() {\n this.hide();\n },\n //tab: function (widget) { //this break the flow of the form. disabling for now\n // var toggle = widget.find('.picker-switch a[data-action=\"togglePicker\"]');\n // if(toggle.length > 0) toggle.click();\n //},\n 'control space': function controlSpace(widget) {\n if (widget.find('.timepicker').is(':visible')) {\n widget.find('.btn[data-action=\"togglePeriod\"]').click();\n }\n },\n t: function t() {\n this.date(this.getMoment());\n },\n 'delete': function _delete() {\n this.clear();\n }\n },\n debug: false,\n allowInputToggle: false,\n disabledTimeIntervals: false,\n disabledHours: false,\n enabledHours: false,\n viewDate: false\n };\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js?")},"./buyercall/assets/scripts/vendor/bootstrap-notify.js":(module,exports,__webpack_require__)=>{eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _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; }, _typeof(o); }\n/*\n\n\n\n Creative Tim Modifications\n\n Lines: 236 was changed from top: 5px to top: 50% and we added margin-top: -9px. In this way the close button will be aligned vertically\n Line:219 - modified when the icon is set, we add the class \"alert-with-icon\", so there will be enough space for the icon.\n\t Lines: 179/222 - class() was changed to html() so we can add the Material Design Icons\n\n\n\n*/\n\n/*\n* Project: Bootstrap Notify = v3.1.5\n* Description: Turns standard Bootstrap alerts into \"Growl-like\" notifications.\n* Author: Mouse0270 aka Robert McIntosh\n* License: MIT License\n* Website: https://github.com/mouse0270/bootstrap-growl\n*/\n\n/* global define:false, require: false, jQuery:false */\n\n(function (factory) {\n if (true) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(function ($) {\n // Create the defaults once\n var defaults = {\n element: 'body',\n position: null,\n type: \"info\",\n allow_dismiss: true,\n allow_duplicates: true,\n newest_on_top: false,\n showProgressbar: false,\n placement: {\n from: \"top\",\n align: \"right\"\n },\n offset: 20,\n spacing: 10,\n z_index: 1031,\n delay: 5000,\n timer: 1000,\n url_target: '_blank',\n mouse_over: null,\n animate: {\n enter: 'animated fadeInDown',\n exit: 'animated fadeOutUp'\n },\n onShow: null,\n onShown: null,\n onClose: null,\n onClosed: null,\n icon_type: 'class',\n template: '<div data-notify=\"container\" class=\"col-xs-11 col-sm-4 alert alert-{0}\" role=\"alert\"><button type=\"button\" aria-hidden=\"true\" class=\"close\" data-notify=\"dismiss\"><i class=\"material-icons\">close</i></button><i data-notify=\"icon\" class=\"material-icons\"></i><span data-notify=\"title\">{1}</span> <span data-notify=\"message\">{2}</span><div class=\"progress\" data-notify=\"progressbar\"><div class=\"progress-bar progress-bar-{0}\" role=\"progressbar\" aria-valuenow=\"0\" aria-valuemin=\"0\" aria-valuemax=\"100\" style=\"width: 0%;\"></div></div><a href=\"{3}\" target=\"{4}\" data-notify=\"url\"></a></div>'\n };\n String.format = function () {\n var str = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n str = str.replace(RegExp(\"\\\\{\" + (i - 1) + \"\\\\}\", \"gm\"), arguments[i]);\n }\n return str;\n };\n function isDuplicateNotification(notification) {\n var isDupe = false;\n $('[data-notify=\"container\"]').each(function (i, el) {\n var $el = $(el);\n var title = $el.find('[data-notify=\"title\"]').text().trim();\n var message = $el.find('[data-notify=\"message\"]').html().trim();\n\n // The input string might be different than the actual parsed HTML string!\n // (<br> vs <br /> for example)\n // So we have to force-parse this as HTML here!\n var isSameTitle = title === $(\"<div>\" + notification.settings.content.title + \"</div>\").html().trim();\n var isSameMsg = message === $(\"<div>\" + notification.settings.content.message + \"</div>\").html().trim();\n var isSameType = $el.hasClass('alert-' + notification.settings.type);\n if (isSameTitle && isSameMsg && isSameType) {\n //we found the dupe. Set the var and stop checking.\n isDupe = true;\n }\n return !isDupe;\n });\n return isDupe;\n }\n function Notify(element, content, options) {\n // Setup Content of Notify\n var contentObj = {\n content: {\n message: _typeof(content) === 'object' ? content.message : content,\n title: content.title ? content.title : '',\n icon: content.icon ? content.icon : '',\n url: content.url ? content.url : '#',\n target: content.target ? content.target : '-'\n }\n };\n options = $.extend(true, {}, contentObj, options);\n this.settings = $.extend(true, {}, defaults, options);\n this._defaults = defaults;\n if (this.settings.content.target === \"-\") {\n this.settings.content.target = this.settings.url_target;\n }\n this.animations = {\n start: 'webkitAnimationStart oanimationstart MSAnimationStart animationstart',\n end: 'webkitAnimationEnd oanimationend MSAnimationEnd animationend'\n };\n if (typeof this.settings.offset === 'number') {\n this.settings.offset = {\n x: this.settings.offset,\n y: this.settings.offset\n };\n }\n\n //if duplicate messages are not allowed, then only continue if this new message is not a duplicate of one that it already showing\n if (this.settings.allow_duplicates || !this.settings.allow_duplicates && !isDuplicateNotification(this)) {\n this.init();\n }\n }\n $.extend(Notify.prototype, {\n init: function init() {\n var self = this;\n this.buildNotify();\n if (this.settings.content.icon) {\n this.setIcon();\n }\n if (this.settings.content.url != \"#\") {\n this.styleURL();\n }\n this.styleDismiss();\n this.placement();\n this.bind();\n this.notify = {\n $ele: this.$ele,\n update: function update(command, _update) {\n var commands = {};\n if (typeof command === \"string\") {\n commands[command] = _update;\n } else {\n commands = command;\n }\n for (var cmd in commands) {\n switch (cmd) {\n case \"type\":\n this.$ele.removeClass('alert-' + self.settings.type);\n this.$ele.find('[data-notify=\"progressbar\"] > .progress-bar').removeClass('progress-bar-' + self.settings.type);\n self.settings.type = commands[cmd];\n this.$ele.addClass('alert-' + commands[cmd]).find('[data-notify=\"progressbar\"] > .progress-bar').addClass('progress-bar-' + commands[cmd]);\n break;\n case \"icon\":\n var $icon = this.$ele.find('[data-notify=\"icon\"]');\n if (self.settings.icon_type.toLowerCase() === 'class') {\n $icon.html(commands[cmd]);\n } else {\n if (!$icon.is('img')) {\n $icon.find('img');\n }\n $icon.attr('src', commands[cmd]);\n }\n break;\n case \"progress\":\n var newDelay = self.settings.delay - self.settings.delay * (commands[cmd] / 100);\n this.$ele.data('notify-delay', newDelay);\n this.$ele.find('[data-notify=\"progressbar\"] > div').attr('aria-valuenow', commands[cmd]).css('width', commands[cmd] + '%');\n break;\n case \"url\":\n this.$ele.find('[data-notify=\"url\"]').attr('href', commands[cmd]);\n break;\n case \"target\":\n this.$ele.find('[data-notify=\"url\"]').attr('target', commands[cmd]);\n break;\n default:\n this.$ele.find('[data-notify=\"' + cmd + '\"]').html(commands[cmd]);\n }\n }\n var posX = this.$ele.outerHeight() + parseInt(self.settings.spacing) + parseInt(self.settings.offset.y);\n self.reposition(posX);\n },\n close: function close() {\n self.close();\n }\n };\n },\n buildNotify: function buildNotify() {\n var content = this.settings.content;\n this.$ele = $(String.format(this.settings.template, this.settings.type, content.title, content.message, content.url, content.target));\n this.$ele.attr('data-notify-position', this.settings.placement.from + '-' + this.settings.placement.align);\n if (!this.settings.allow_dismiss) {\n this.$ele.find('[data-notify=\"dismiss\"]').css('display', 'none');\n }\n if (this.settings.delay <= 0 && !this.settings.showProgressbar || !this.settings.showProgressbar) {\n this.$ele.find('[data-notify=\"progressbar\"]').remove();\n }\n },\n setIcon: function setIcon() {\n this.$ele.addClass('alert-with-icon');\n if (this.settings.icon_type.toLowerCase() === 'class') {\n this.$ele.find('[data-notify=\"icon\"]').html(this.settings.content.icon);\n } else {\n if (this.$ele.find('[data-notify=\"icon\"]').is('img')) {\n this.$ele.find('[data-notify=\"icon\"]').attr('src', this.settings.content.icon);\n } else {\n this.$ele.find('[data-notify=\"icon\"]').append('<img src=\"' + this.settings.content.icon + '\" alt=\"Notify Icon\" />');\n }\n }\n },\n styleDismiss: function styleDismiss() {\n this.$ele.find('[data-notify=\"dismiss\"]').css({\n position: 'absolute',\n right: '10px',\n top: '50%',\n marginTop: '-9px',\n zIndex: this.settings.z_index + 2\n });\n },\n styleURL: function styleURL() {\n this.$ele.find('[data-notify=\"url\"]').css({\n backgroundImage: 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)',\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: '100%',\n zIndex: this.settings.z_index + 1\n });\n },\n placement: function placement() {\n var self = this,\n offsetAmt = this.settings.offset.y,\n css = {\n display: 'inline-block',\n margin: '15px auto',\n position: this.settings.position ? this.settings.position : this.settings.element === 'body' ? 'fixed' : 'absolute',\n transition: 'all .5s ease-in-out',\n zIndex: this.settings.z_index\n },\n hasAnimation = false,\n settings = this.settings;\n $('[data-notify-position=\"' + this.settings.placement.from + '-' + this.settings.placement.align + '\"]:not([data-closing=\"true\"])').each(function () {\n offsetAmt = Math.max(offsetAmt, parseInt($(this).css(settings.placement.from)) + parseInt($(this).outerHeight()) + parseInt(settings.spacing));\n });\n if (this.settings.newest_on_top === true) {\n offsetAmt = this.settings.offset.y;\n }\n css[this.settings.placement.from] = offsetAmt + 'px';\n switch (this.settings.placement.align) {\n case \"left\":\n case \"right\":\n css[this.settings.placement.align] = this.settings.offset.x + 'px';\n break;\n case \"center\":\n css.left = 0;\n css.right = 0;\n break;\n }\n this.$ele.css(css).addClass(this.settings.animate.enter);\n $.each(Array('webkit-', 'moz-', 'o-', 'ms-', ''), function (index, prefix) {\n self.$ele[0].style[prefix + 'AnimationIterationCount'] = 1;\n });\n $(this.settings.element).append(this.$ele);\n if (this.settings.newest_on_top === true) {\n offsetAmt = parseInt(offsetAmt) + parseInt(this.settings.spacing) + this.$ele.outerHeight();\n this.reposition(offsetAmt);\n }\n if ($.isFunction(self.settings.onShow)) {\n self.settings.onShow.call(this.$ele);\n }\n this.$ele.one(this.animations.start, function () {\n hasAnimation = true;\n }).one(this.animations.end, function () {\n if ($.isFunction(self.settings.onShown)) {\n self.settings.onShown.call(this);\n }\n });\n setTimeout(function () {\n if (!hasAnimation) {\n if ($.isFunction(self.settings.onShown)) {\n self.settings.onShown.call(this);\n }\n }\n }, 600);\n },\n bind: function bind() {\n var self = this;\n this.$ele.find('[data-notify=\"dismiss\"]').on('click', function () {\n self.close();\n });\n this.$ele.mouseover(function () {\n $(this).data('data-hover', \"true\");\n }).mouseout(function () {\n $(this).data('data-hover', \"false\");\n });\n this.$ele.data('data-hover', \"false\");\n if (this.settings.delay > 0) {\n self.$ele.data('notify-delay', self.settings.delay);\n var timer = setInterval(function () {\n var delay = parseInt(self.$ele.data('notify-delay')) - self.settings.timer;\n if (self.$ele.data('data-hover') === 'false' && self.settings.mouse_over === \"pause\" || self.settings.mouse_over != \"pause\") {\n var percent = (self.settings.delay - delay) / self.settings.delay * 100;\n self.$ele.data('notify-delay', delay);\n self.$ele.find('[data-notify=\"progressbar\"] > div').attr('aria-valuenow', percent).css('width', percent + '%');\n }\n if (delay <= -self.settings.timer) {\n clearInterval(timer);\n self.close();\n }\n }, self.settings.timer);\n }\n },\n close: function close() {\n var self = this,\n posX = parseInt(this.$ele.css(this.settings.placement.from)),\n hasAnimation = false;\n this.$ele.data('closing', 'true').addClass(this.settings.animate.exit);\n self.reposition(posX);\n if ($.isFunction(self.settings.onClose)) {\n self.settings.onClose.call(this.$ele);\n }\n this.$ele.one(this.animations.start, function () {\n hasAnimation = true;\n }).one(this.animations.end, function () {\n $(this).remove();\n if ($.isFunction(self.settings.onClosed)) {\n self.settings.onClosed.call(this);\n }\n });\n setTimeout(function () {\n if (!hasAnimation) {\n self.$ele.remove();\n if (self.settings.onClosed) {\n self.settings.onClosed(self.$ele);\n }\n }\n }, 600);\n },\n reposition: function reposition(posX) {\n var self = this,\n notifies = '[data-notify-position=\"' + this.settings.placement.from + '-' + this.settings.placement.align + '\"]:not([data-closing=\"true\"])',\n $elements = this.$ele.nextAll(notifies);\n if (this.settings.newest_on_top === true) {\n $elements = this.$ele.prevAll(notifies);\n }\n $elements.each(function () {\n $(this).css(self.settings.placement.from, posX);\n posX = parseInt(posX) + parseInt(self.settings.spacing) + $(this).outerHeight();\n });\n }\n });\n $.notify = function (content, options) {\n var plugin = new Notify(this, content, options);\n return plugin.notify;\n };\n $.notifyDefaults = function (options) {\n defaults = $.extend(true, {}, defaults, options);\n return defaults;\n };\n $.notifyClose = function (command) {\n if (typeof command === \"undefined\" || command === \"all\") {\n $('[data-notify]').find('[data-notify=\"dismiss\"]').trigger('click');\n } else {\n $('[data-notify-position=\"' + command + '\"]').find('[data-notify=\"dismiss\"]').trigger('click');\n }\n };\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/bootstrap-notify.js?")},"./buyercall/assets/scripts/vendor/chartist.min.js":function(module,exports){eval('var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/* Chartist.js 0.9.4\n * Copyright © 2015 Gion Kunz\n * Free to use under the WTFPL license.\n * http://www.wtfpl.net/\n */\n\n!function (a, b) {\n true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return window.Chartist = b();\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n}(this, function () {\n var a = {\n version: "0.9.4"\n };\n return function (a, b, c) {\n "use strict";\n\n c.noop = function (a) {\n return a;\n }, c.alphaNumerate = function (a) {\n return String.fromCharCode(97 + a % 26);\n }, c.extend = function (a) {\n a = a || {};\n var b = Array.prototype.slice.call(arguments, 1);\n return b.forEach(function (b) {\n for (var d in b) "object" != _typeof(b[d]) || null === b[d] || b[d] instanceof Array ? a[d] = b[d] : a[d] = c.extend({}, a[d], b[d]);\n }), a;\n }, c.replaceAll = function (a, b, c) {\n return a.replace(new RegExp(b, "g"), c);\n }, c.stripUnit = function (a) {\n return "string" == typeof a && (a = a.replace(/[^0-9\\+-\\.]/g, "")), +a;\n }, c.ensureUnit = function (a, b) {\n return "number" == typeof a && (a += b), a;\n }, c.querySelector = function (a) {\n return a instanceof Node ? a : b.querySelector(a);\n }, c.times = function (a) {\n return Array.apply(null, new Array(a));\n }, c.sum = function (a, b) {\n return a + (b ? b : 0);\n }, c.mapMultiply = function (a) {\n return function (b) {\n return b * a;\n };\n }, c.mapAdd = function (a) {\n return function (b) {\n return b + a;\n };\n }, c.serialMap = function (a, b) {\n var d = [],\n e = Math.max.apply(null, a.map(function (a) {\n return a.length;\n }));\n return c.times(e).forEach(function (c, e) {\n var f = a.map(function (a) {\n return a[e];\n });\n d[e] = b.apply(null, f);\n }), d;\n }, c.roundWithPrecision = function (a, b) {\n var d = Math.pow(10, b || c.precision);\n return Math.round(a * d) / d;\n }, c.precision = 8, c.escapingMap = {\n "&": "&",\n "<": "<",\n ">": ">",\n \'"\': """,\n "\'": "'"\n }, c.serialize = function (a) {\n return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == _typeof(a) && (a = JSON.stringify({\n data: a\n })), Object.keys(c.escapingMap).reduce(function (a, b) {\n return c.replaceAll(a, b, c.escapingMap[b]);\n }, a));\n }, c.deserialize = function (a) {\n if ("string" != typeof a) return a;\n a = Object.keys(c.escapingMap).reduce(function (a, b) {\n return c.replaceAll(a, c.escapingMap[b], b);\n }, a);\n try {\n a = JSON.parse(a), a = void 0 !== a.data ? a.data : a;\n } catch (b) {}\n return a;\n }, c.createSvg = function (a, b, d, e) {\n var f;\n return b = b || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) {\n return a.getAttributeNS("http://www.w3.org/2000/xmlns/", c.xmlNs.prefix);\n }).forEach(function (b) {\n a.removeChild(b);\n }), f = new c.Svg("svg").attr({\n width: b,\n height: d\n }).addClass(e).attr({\n style: "width: " + b + "; height: " + d + ";"\n }), a.appendChild(f._node), f;\n }, c.reverseData = function (a) {\n a.labels.reverse(), a.series.reverse();\n for (var b = 0; b < a.series.length; b++) "object" == _typeof(a.series[b]) && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse();\n }, c.getDataArray = function (a, b, d) {\n function e(a) {\n if (c.isFalseyButZero(a)) return void 0;\n if ((a.data || a) instanceof Array) return (a.data || a).map(e);\n if (a.hasOwnProperty("value")) return e(a.value);\n if (d) {\n var b = {};\n return "string" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty("x") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty("y") ? c.getNumberOrUndefined(a.y) : b.y, b;\n }\n return c.getNumberOrUndefined(a);\n }\n return (b && !a.reversed || !b && a.reversed) && (c.reverseData(a), a.reversed = !a.reversed), a.series.map(e);\n }, c.normalizePadding = function (a, b) {\n return b = b || 0, "number" == typeof a ? {\n top: a,\n right: a,\n bottom: a,\n left: a\n } : {\n top: "number" == typeof a.top ? a.top : b,\n right: "number" == typeof a.right ? a.right : b,\n bottom: "number" == typeof a.bottom ? a.bottom : b,\n left: "number" == typeof a.left ? a.left : b\n };\n }, c.getMetaData = function (a, b) {\n var d = a.data ? a.data[b] : a[b];\n return d ? c.serialize(d.meta) : void 0;\n }, c.orderOfMagnitude = function (a) {\n return Math.floor(Math.log(Math.abs(a)) / Math.LN10);\n }, c.projectLength = function (a, b, c) {\n return b / c.range * a;\n }, c.getAvailableHeight = function (a, b) {\n return Math.max((c.stripUnit(b.height) || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0);\n }, c.getHighLow = function (a, b, d) {\n function e(a) {\n if (void 0 === a) return void 0;\n if (a instanceof Array) for (var b = 0; b < a.length; b++) e(a[b]);else {\n var c = d ? +a[d] : +a;\n g && c > f.high && (f.high = c), h && c < f.low && (f.low = c);\n }\n }\n b = c.extend({}, b, d ? b["axis" + d.toUpperCase()] : {});\n var f = {\n high: void 0 === b.high ? -Number.MAX_VALUE : +b.high,\n low: void 0 === b.low ? Number.MAX_VALUE : +b.low\n },\n g = void 0 === b.high,\n h = void 0 === b.low;\n return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.low = 0), f;\n }, c.isNum = function (a) {\n return !isNaN(a) && isFinite(a);\n }, c.isFalseyButZero = function (a) {\n return !a && 0 !== a;\n }, c.getNumberOrUndefined = function (a) {\n return isNaN(+a) ? void 0 : +a;\n }, c.getMultiValue = function (a, b) {\n return c.isNum(a) ? +a : a ? a[b || "y"] || 0 : 0;\n }, c.rho = function (a) {\n function b(a, c) {\n return a % c === 0 ? c : b(c, a % c);\n }\n function c(a) {\n return a * a + 1;\n }\n if (1 === a) return a;\n var d,\n e = 2,\n f = 2;\n if (a % 2 === 0) return 2;\n do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d);\n return d;\n }, c.getBounds = function (a, b, d, e) {\n var f,\n g,\n h,\n i = 0,\n j = {\n high: b.high,\n low: b.low\n };\n j.valueRange = j.high - j.low, j.oom = c.orderOfMagnitude(j.valueRange), j.step = Math.pow(10, j.oom), j.min = Math.floor(j.low / j.step) * j.step, j.max = Math.ceil(j.high / j.step) * j.step, j.range = j.max - j.min, j.numberOfSteps = Math.round(j.range / j.step);\n var k = c.projectLength(a, j.step, j),\n l = d > k,\n m = e ? c.rho(j.range) : 0;\n if (e && c.projectLength(a, 1, j) >= d) j.step = 1;else if (e && m < j.step && c.projectLength(a, m, j) >= d) j.step = m;else for (;;) {\n if (l && c.projectLength(a, j.step, j) <= d) j.step *= 2;else {\n if (l || !(c.projectLength(a, j.step / 2, j) >= d)) break;\n if (j.step /= 2, e && j.step % 1 !== 0) {\n j.step *= 2;\n break;\n }\n }\n if (i++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!");\n }\n for (g = j.min, h = j.max; g + j.step <= j.low;) g += j.step;\n for (; h - j.step >= j.high;) h -= j.step;\n for (j.min = g, j.max = h, j.range = j.max - j.min, j.values = [], f = j.min; f <= j.max; f += j.step) j.values.push(c.roundWithPrecision(f));\n return j;\n }, c.polarToCartesian = function (a, b, c, d) {\n var e = (d - 90) * Math.PI / 180;\n return {\n x: a + c * Math.cos(e),\n y: b + c * Math.sin(e)\n };\n }, c.createChartRect = function (a, b, d) {\n var e = !(!b.axisX && !b.axisY),\n f = e ? b.axisY.offset : 0,\n g = e ? b.axisX.offset : 0,\n h = a.width() || c.stripUnit(b.width) || 0,\n i = a.height() || c.stripUnit(b.height) || 0,\n j = c.normalizePadding(b.chartPadding, d);\n h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom);\n var k = {\n padding: j,\n width: function width() {\n return this.x2 - this.x1;\n },\n height: function height() {\n return this.y1 - this.y2;\n }\n };\n return e ? ("start" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k;\n }, c.createGrid = function (a, b, d, e, f, g, h, i) {\n var j = {};\n j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f;\n var k = g.elem("line", j, h.join(" "));\n i.emit("draw", c.extend({\n type: "grid",\n axis: d,\n index: b,\n group: g,\n element: k\n }, j));\n }, c.createLabel = function (a, b, d, e, f, g, h, i, j, k, l) {\n var m,\n n = {};\n if (n[f.units.pos] = a + h[f.units.pos], n[f.counterUnits.pos] = h[f.counterUnits.pos], n[f.units.len] = b, n[f.counterUnits.len] = g - 10, k) {\n var o = \'<span class="\' + j.join(" ") + \'" style="\' + f.units.len + ": " + Math.round(n[f.units.len]) + "px; " + f.counterUnits.len + ": " + Math.round(n[f.counterUnits.len]) + \'px">\' + e[d] + "</span>";\n m = i.foreignObject(o, c.extend({\n style: "overflow: visible;"\n }, n));\n } else m = i.elem("text", n, j.join(" ")).text(e[d]);\n l.emit("draw", c.extend({\n type: "label",\n axis: f,\n index: d,\n group: i,\n element: m,\n text: e[d]\n }, n));\n }, c.getSeriesOption = function (a, b, c) {\n if (a.name && b.series && b.series[a.name]) {\n var d = b.series[a.name];\n return d.hasOwnProperty(c) ? d[c] : b[c];\n }\n return b[c];\n }, c.optionsProvider = function (b, d, e) {\n function f(b) {\n var f = h;\n if (h = c.extend({}, j), d) for (i = 0; i < d.length; i++) {\n var g = a.matchMedia(d[i][0]);\n g.matches && (h = c.extend(h, d[i][1]));\n }\n e && !b && e.emit("optionsChanged", {\n previousOptions: f,\n currentOptions: h\n });\n }\n function g() {\n k.forEach(function (a) {\n a.removeListener(f);\n });\n }\n var h,\n i,\n j = c.extend({}, b),\n k = [];\n if (!a.matchMedia) throw "window.matchMedia not found! Make sure you\'re using a polyfill.";\n if (d) for (i = 0; i < d.length; i++) {\n var l = a.matchMedia(d[i][0]);\n l.addListener(f), k.push(l);\n }\n return f(!0), {\n removeMediaQueryListeners: g,\n getCurrentOptions: function getCurrentOptions() {\n return c.extend({}, h);\n }\n };\n };\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n c.Interpolation = {}, c.Interpolation.none = function () {\n return function (a, b) {\n for (var d = new c.Svg.Path(), e = !0, f = 1; f < a.length; f += 2) {\n var g = b[(f - 1) / 2];\n void 0 === g.value ? e = !0 : e ? (d.move(a[f - 1], a[f], !1, g), e = !1) : d.line(a[f - 1], a[f], !1, g);\n }\n return d;\n };\n }, c.Interpolation.simple = function (a) {\n var b = {\n divisor: 2\n };\n a = c.extend({}, b, a);\n var d = 1 / Math.max(1, a.divisor);\n return function (a, b) {\n for (var e = new c.Svg.Path(), f = !0, g = 2; g < a.length; g += 2) {\n var h = a[g - 2],\n i = a[g - 1],\n j = a[g],\n k = a[g + 1],\n l = (j - h) * d,\n m = b[g / 2 - 1],\n n = b[g / 2];\n void 0 === m.value ? f = !0 : (f && e.move(h, i, !1, m), void 0 !== n.value && (e.curve(h + l, i, j - l, k, j, k, !1, n), f = !1));\n }\n return e;\n };\n }, c.Interpolation.cardinal = function (a) {\n function b(a, b) {\n for (var c = [], d = !0, e = 0; e < a.length; e += 2) void 0 === b[e / 2].value ? d = !0 : (d && (c.push({\n pathCoordinates: [],\n valueData: []\n }), d = !1), c[c.length - 1].pathCoordinates.push(a[e], a[e + 1]), c[c.length - 1].valueData.push(b[e / 2]));\n return c;\n }\n var d = {\n tension: 1\n };\n a = c.extend({}, d, a);\n var e = Math.min(1, Math.max(0, a.tension)),\n f = 1 - e;\n return function g(a, d) {\n var h = b(a, d);\n if (h.length > 1) {\n var i = [];\n return h.forEach(function (a) {\n i.push(g(a.pathCoordinates, a.valueData));\n }), c.Svg.Path.join(i);\n }\n if (a = h[0].pathCoordinates, d = h[0].valueData, a.length <= 4) return c.Interpolation.none()(a, d);\n for (var j, k = new c.Svg.Path().move(a[0], a[1], !1, d[0]), l = 0, m = a.length; m - 2 * !j > l; l += 2) {\n var n = [{\n x: +a[l - 2],\n y: +a[l - 1]\n }, {\n x: +a[l],\n y: +a[l + 1]\n }, {\n x: +a[l + 2],\n y: +a[l + 3]\n }, {\n x: +a[l + 4],\n y: +a[l + 5]\n }];\n j ? l ? m - 4 === l ? n[3] = {\n x: +a[0],\n y: +a[1]\n } : m - 2 === l && (n[2] = {\n x: +a[0],\n y: +a[1]\n }, n[3] = {\n x: +a[2],\n y: +a[3]\n }) : n[0] = {\n x: +a[m - 2],\n y: +a[m - 1]\n } : m - 4 === l ? n[3] = n[2] : l || (n[0] = {\n x: +a[l],\n y: +a[l + 1]\n }), k.curve(e * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + f * n[2].x, e * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + f * n[2].y, e * (n[1].x + 6 * n[2].x - n[3].x) / 6 + f * n[2].x, e * (n[1].y + 6 * n[2].y - n[3].y) / 6 + f * n[2].y, n[2].x, n[2].y, !1, d[(l + 2) / 2]);\n }\n return k;\n };\n }, c.Interpolation.step = function (a) {\n var b = {\n postpone: !0\n };\n return a = c.extend({}, b, a), function (b, d) {\n for (var e = new c.Svg.Path(), f = !0, g = 2; g < b.length; g += 2) {\n var h = b[g - 2],\n i = b[g - 1],\n j = b[g],\n k = b[g + 1],\n l = d[g / 2 - 1],\n m = d[g / 2];\n void 0 === l.value ? f = !0 : (f && e.move(h, i, !1, l), void 0 !== m.value && (a.postpone ? e.line(j, i, !1, l) : e.line(h, k, !1, m), e.line(j, k, !1, m), f = !1));\n }\n return e;\n };\n };\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n c.EventEmitter = function () {\n function a(a, b) {\n d[a] = d[a] || [], d[a].push(b);\n }\n function b(a, b) {\n d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]);\n }\n function c(a, b) {\n d[a] && d[a].forEach(function (a) {\n a(b);\n }), d["*"] && d["*"].forEach(function (c) {\n c(a, b);\n });\n }\n var d = [];\n return {\n addEventHandler: a,\n removeEventHandler: b,\n emit: c\n };\n };\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a) {\n var b = [];\n if (a.length) for (var c = 0; c < a.length; c++) b.push(a[c]);\n return b;\n }\n function e(a, b) {\n var d = b || this.prototype || c.Class,\n e = Object.create(d);\n c.Class.cloneDefinitions(e, a);\n var f = function f() {\n var a,\n b = e.constructor || function () {};\n return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a;\n };\n return f.prototype = e, f["super"] = d, f.extend = this.extend, f;\n }\n function f() {\n var a = d(arguments),\n b = a[0];\n return a.splice(1, a.length - 1).forEach(function (a) {\n Object.getOwnPropertyNames(a).forEach(function (c) {\n delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c));\n });\n }), b;\n }\n c.Class = {\n extend: e,\n cloneDefinitions: f\n };\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, d) {\n return a && (this.data = a, this.eventEmitter.emit("data", {\n type: "update",\n data: this.data\n })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this;\n }\n function e() {\n return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this;\n }\n function f(a, b) {\n return this.eventEmitter.addEventHandler(a, b), this;\n }\n function g(a, b) {\n return this.eventEmitter.removeEventHandler(a, b), this;\n }\n function h() {\n a.addEventListener("resize", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () {\n this.update();\n }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) {\n a instanceof Array ? a[0](this, a[1]) : a(this);\n }.bind(this)), this.eventEmitter.emit("data", {\n type: "initial",\n data: this.data\n }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0;\n }\n function i(a, b, d, e, f) {\n this.container = c.querySelector(a), this.data = b, this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported("Extensibility"), this.supportsAnimations = c.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () {\n this.update();\n }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0);\n }\n c.Base = c.Class.extend({\n constructor: i,\n optionsProvider: void 0,\n container: void 0,\n svg: void 0,\n eventEmitter: void 0,\n createChart: function createChart() {\n throw new Error("Base chart type can\'t be instantiated!");\n },\n update: d,\n detach: e,\n on: f,\n off: g,\n version: c.version,\n supportsForeignObject: !1\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, d, e, f, g) {\n a instanceof Element ? this._node = a : (this._node = b.createElementNS(z, a), "svg" === a && this._node.setAttributeNS(A, c.xmlNs.qualifiedName, c.xmlNs.uri)), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node));\n }\n function e(a, b) {\n return "string" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (d) {\n void 0 !== a[d] && (b ? this._node.setAttributeNS(b, [c.xmlNs.prefix, ":", d].join(""), a[d]) : this._node.setAttribute(d, a[d]));\n }.bind(this)), this);\n }\n function f(a, b, d, e) {\n return new c.Svg(a, b, d, this, e);\n }\n function g() {\n return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null;\n }\n function h() {\n for (var a = this._node; "svg" !== a.nodeName;) a = a.parentNode;\n return new c.Svg(a);\n }\n function i(a) {\n var b = this._node.querySelector(a);\n return b ? new c.Svg(b) : null;\n }\n function j(a) {\n var b = this._node.querySelectorAll(a);\n return b.length ? new c.Svg.List(b) : null;\n }\n function k(a, c, d, e) {\n if ("string" == typeof a) {\n var f = b.createElement("div");\n f.innerHTML = a, a = f.firstChild;\n }\n a.setAttribute("xmlns", B);\n var g = this.elem("foreignObject", c, d, e);\n return g._node.appendChild(a), g;\n }\n function l(a) {\n return this._node.appendChild(b.createTextNode(a)), this;\n }\n function m() {\n for (; this._node.firstChild;) this._node.removeChild(this._node.firstChild);\n return this;\n }\n function n() {\n return this._node.parentNode.removeChild(this._node), this.parent();\n }\n function o(a) {\n return this._node.parentNode.replaceChild(a._node, this._node), a;\n }\n function p(a, b) {\n return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this;\n }\n function q() {\n return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\\s+/) : [];\n }\n function r(a) {\n return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\\s+/)).filter(function (a, b, c) {\n return c.indexOf(a) === b;\n }).join(" ")), this;\n }\n function s(a) {\n var b = a.trim().split(/\\s+/);\n return this._node.setAttribute("class", this.classes(this._node).filter(function (a) {\n return -1 === b.indexOf(a);\n }).join(" ")), this;\n }\n function t() {\n return this._node.setAttribute("class", ""), this;\n }\n function u(a, b) {\n try {\n return a.getBBox()[b];\n } catch (c) {}\n return 0;\n }\n function v() {\n return this._node.clientHeight || Math.round(u(this._node, "height")) || this._node.parentNode.clientHeight;\n }\n function w() {\n return this._node.clientWidth || Math.round(u(this._node, "width")) || this._node.parentNode.clientWidth;\n }\n function x(a, b, d) {\n return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) {\n function f(a, b) {\n var f,\n g,\n h,\n i = {};\n a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, "ms"), a.dur = c.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), b && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = c.stripUnit(a.begin || 0), a.begin = "indefinite"), f = this.elem("animate", c.extend({\n attributeName: e\n }, a)), b && setTimeout(function () {\n try {\n f._node.beginElement();\n } catch (b) {\n i[e] = a.to, this.attr(i), f.remove();\n }\n }.bind(this), g), d && f._node.addEventListener("beginEvent", function () {\n d.emit("animationBegin", {\n element: this,\n animate: f._node,\n params: a\n });\n }.bind(this)), f._node.addEventListener("endEvent", function () {\n d && d.emit("animationEnd", {\n element: this,\n animate: f._node,\n params: a\n }), b && (i[e] = a.to, this.attr(i), f.remove());\n }.bind(this));\n }\n a[e] instanceof Array ? a[e].forEach(function (a) {\n f.bind(this)(a, !1);\n }.bind(this)) : f.bind(this)(a[e], b);\n }.bind(this)), this;\n }\n function y(a) {\n var b = this;\n this.svgElements = [];\n for (var d = 0; d < a.length; d++) this.svgElements.push(new c.Svg(a[d]));\n Object.keys(c.Svg.prototype).filter(function (a) {\n return -1 === ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a);\n }).forEach(function (a) {\n b[a] = function () {\n var d = Array.prototype.slice.call(arguments, 0);\n return b.svgElements.forEach(function (b) {\n c.Svg.prototype[a].apply(b, d);\n }), b;\n };\n });\n }\n var z = "http://www.w3.org/2000/svg",\n A = "http://www.w3.org/2000/xmlns/",\n B = "http://www.w3.org/1999/xhtml";\n c.xmlNs = {\n qualifiedName: "xmlns:ct",\n prefix: "ct",\n uri: "http://gionkunz.github.com/chartist-js/ct"\n }, c.Svg = c.Class.extend({\n constructor: d,\n attr: e,\n elem: f,\n parent: g,\n root: h,\n querySelector: i,\n querySelectorAll: j,\n foreignObject: k,\n text: l,\n empty: m,\n remove: n,\n replace: o,\n append: p,\n classes: q,\n addClass: r,\n removeClass: s,\n removeAllClasses: t,\n height: v,\n width: w,\n animate: x\n }), c.Svg.isSupported = function (a) {\n return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1");\n };\n var C = {\n easeInSine: [.47, 0, .745, .715],\n easeOutSine: [.39, .575, .565, 1],\n easeInOutSine: [.445, .05, .55, .95],\n easeInQuad: [.55, .085, .68, .53],\n easeOutQuad: [.25, .46, .45, .94],\n easeInOutQuad: [.455, .03, .515, .955],\n easeInCubic: [.55, .055, .675, .19],\n easeOutCubic: [.215, .61, .355, 1],\n easeInOutCubic: [.645, .045, .355, 1],\n easeInQuart: [.895, .03, .685, .22],\n easeOutQuart: [.165, .84, .44, 1],\n easeInOutQuart: [.77, 0, .175, 1],\n easeInQuint: [.755, .05, .855, .06],\n easeOutQuint: [.23, 1, .32, 1],\n easeInOutQuint: [.86, 0, .07, 1],\n easeInExpo: [.95, .05, .795, .035],\n easeOutExpo: [.19, 1, .22, 1],\n easeInOutExpo: [1, 0, 0, 1],\n easeInCirc: [.6, .04, .98, .335],\n easeOutCirc: [.075, .82, .165, 1],\n easeInOutCirc: [.785, .135, .15, .86],\n easeInBack: [.6, -.28, .735, .045],\n easeOutBack: [.175, .885, .32, 1.275],\n easeInOutBack: [.68, -.55, .265, 1.55]\n };\n c.Svg.Easing = C, c.Svg.List = c.Class.extend({\n constructor: y\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, d, e, f, g) {\n var h = c.extend({\n command: f ? a.toLowerCase() : a.toUpperCase()\n }, b, g ? {\n data: g\n } : {});\n d.splice(e, 0, h);\n }\n function e(a, b) {\n a.forEach(function (c, d) {\n u[c.command.toLowerCase()].forEach(function (e, f) {\n b(c, e, d, f, a);\n });\n });\n }\n function f(a, b) {\n this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b);\n }\n function g(a) {\n return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos;\n }\n function h(a) {\n return this.pathElements.splice(this.pos, a), this;\n }\n function i(a, b, c, e) {\n return d("M", {\n x: +a,\n y: +b\n }, this.pathElements, this.pos++, c, e), this;\n }\n function j(a, b, c, e) {\n return d("L", {\n x: +a,\n y: +b\n }, this.pathElements, this.pos++, c, e), this;\n }\n function k(a, b, c, e, f, g, h, i) {\n return d("C", {\n x1: +a,\n y1: +b,\n x2: +c,\n y2: +e,\n x: +f,\n y: +g\n }, this.pathElements, this.pos++, h, i), this;\n }\n function l(a, b, c, e, f, g, h, i, j) {\n return d("A", {\n rx: +a,\n ry: +b,\n xAr: +c,\n lAf: +e,\n sf: +f,\n x: +g,\n y: +h\n }, this.pathElements, this.pos++, i, j), this;\n }\n function m(a) {\n var b = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\\s,]+/).reduce(function (a, b) {\n return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a;\n }, []);\n "Z" === b[b.length - 1][0].toUpperCase() && b.pop();\n var d = b.map(function (a) {\n var b = a.shift(),\n d = u[b.toLowerCase()];\n return c.extend({\n command: b\n }, d.reduce(function (b, c, d) {\n return b[c] = +a[d], b;\n }, {}));\n }),\n e = [this.pos, 0];\n return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this;\n }\n function n() {\n var a = Math.pow(10, this.options.accuracy);\n return this.pathElements.reduce(function (b, c) {\n var d = u[c.command.toLowerCase()].map(function (b) {\n return this.options.accuracy ? Math.round(c[b] * a) / a : c[b];\n }.bind(this));\n return b + c.command + d.join(",");\n }.bind(this), "") + (this.close ? "Z" : "");\n }\n function o(a, b) {\n return e(this.pathElements, function (c, d) {\n c[d] *= "x" === d[0] ? a : b;\n }), this;\n }\n function p(a, b) {\n return e(this.pathElements, function (c, d) {\n c[d] += "x" === d[0] ? a : b;\n }), this;\n }\n function q(a) {\n return e(this.pathElements, function (b, c, d, e, f) {\n var g = a(b, c, d, e, f);\n (g || 0 === g) && (b[c] = g);\n }), this;\n }\n function r(a) {\n var b = new c.Svg.Path(a || this.close);\n return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) {\n return c.extend({}, a);\n }), b.options = c.extend({}, this.options), b;\n }\n function s(a) {\n var b = [new c.Svg.Path()];\n return this.pathElements.forEach(function (d) {\n d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path()), b[b.length - 1].pathElements.push(d);\n }), b;\n }\n function t(a, b, d) {\n for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++) for (var g = a[f], h = 0; h < g.pathElements.length; h++) e.pathElements.push(g.pathElements[h]);\n return e;\n }\n var u = {\n m: ["x", "y"],\n l: ["x", "y"],\n c: ["x1", "y1", "x2", "y2", "x", "y"],\n a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"]\n },\n v = {\n accuracy: 3\n };\n c.Svg.Path = c.Class.extend({\n constructor: f,\n position: g,\n remove: h,\n move: i,\n line: j,\n curve: k,\n arc: l,\n scale: o,\n translate: p,\n transform: q,\n parse: m,\n stringify: n,\n clone: r,\n splitByCommand: s\n }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t;\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, c, d) {\n this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d;\n }\n function e(a, b, d, e, f) {\n var g = e["axis" + this.units.pos.toUpperCase()],\n h = this.ticks.map(this.projectValue.bind(this)),\n i = this.ticks.map(g.labelInterpolationFnc);\n h.forEach(function (j, k) {\n var l,\n m = {\n x: 0,\n y: 0\n };\n l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), (i[k] || 0 === i[k]) && ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], e.classNames[g.position]], d, f));\n }.bind(this));\n }\n var f = {\n x: {\n pos: "x",\n len: "width",\n dir: "horizontal",\n rectStart: "x1",\n rectEnd: "x2",\n rectOffset: "y2"\n },\n y: {\n pos: "y",\n len: "height",\n dir: "vertical",\n rectStart: "y2",\n rectEnd: "y1",\n rectOffset: "x1"\n }\n };\n c.Axis = c.Class.extend({\n constructor: d,\n createGridAndLabels: e,\n projectValue: function projectValue(a, b, c) {\n throw new Error("Base axis can\'t be instantiated!");\n }\n }), c.Axis.units = f;\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, d, e) {\n var f = e.highLow || c.getHighLow(b.normalized, e, a.pos);\n this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = {\n min: this.bounds.min,\n max: this.bounds.max\n }, c.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e);\n }\n function e(a) {\n return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range;\n }\n c.AutoScaleAxis = c.Axis.extend({\n constructor: d,\n projectValue: e\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, d, e) {\n var f = e.highLow || c.getHighLow(b.normalized, e, a.pos);\n this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) {\n return f.low + (f.high - f.low) / this.divisor * b;\n }.bind(this)), this.range = {\n min: f.low,\n max: f.high\n }, c.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor;\n }\n function e(a) {\n return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min);\n }\n c.FixedScaleAxis = c.Axis.extend({\n constructor: d,\n projectValue: e\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, d, e) {\n c.StepAxis["super"].constructor.call(this, a, d, e.ticks, e), this.stepLength = this.axisLength / (e.ticks.length - (e.stretch ? 1 : 0));\n }\n function e(a, b) {\n return this.stepLength * b;\n }\n c.StepAxis = c.Axis.extend({\n constructor: d,\n projectValue: e\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a) {\n var b = {\n raw: this.data,\n normalized: c.getDataArray(this.data, a.reverseData, !0)\n };\n this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart);\n var d,\n e,\n g = this.svg.elem("g").addClass(a.classNames.gridGroup),\n h = this.svg.elem("g"),\n i = this.svg.elem("g").addClass(a.classNames.labelGroup),\n j = c.createChartRect(this.svg, a, f.padding);\n d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b, j, c.extend({}, a.axisX, {\n ticks: b.raw.labels,\n stretch: a.fullWidth\n })) : a.axisX.type.call(c, c.Axis.units.x, b, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b, j, c.extend({}, a.axisY, {\n high: c.isNum(a.high) ? a.high : a.axisY.high,\n low: c.isNum(a.low) ? a.low : a.axisY.low\n })) : a.axisY.type.call(c, c.Axis.units.y, b, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), b.raw.series.forEach(function (f, g) {\n var i = h.elem("g");\n i.attr({\n "series-name": f.name,\n meta: c.serialize(f.meta)\n }, c.xmlNs.uri), i.addClass([a.classNames.series, f.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" "));\n var k = [],\n l = [];\n b.normalized[g].forEach(function (a, h) {\n var i = {\n x: j.x1 + d.projectValue(a, h, b.normalized[g]),\n y: j.y1 - e.projectValue(a, h, b.normalized[g])\n };\n k.push(i.x, i.y), l.push({\n value: a,\n valueIndex: h,\n meta: c.getMetaData(f, h)\n });\n }.bind(this));\n var m = {\n lineSmooth: c.getSeriesOption(f, a, "lineSmooth"),\n showPoint: c.getSeriesOption(f, a, "showPoint"),\n showLine: c.getSeriesOption(f, a, "showLine"),\n showArea: c.getSeriesOption(f, a, "showArea"),\n areaBase: c.getSeriesOption(f, a, "areaBase")\n },\n n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.cardinal() : c.Interpolation.none(),\n o = n(k, l);\n if (m.showPoint && o.pathElements.forEach(function (b) {\n var h = i.elem("line", {\n x1: b.x,\n y1: b.y,\n x2: b.x + .01,\n y2: b.y\n }, a.classNames.point).attr({\n value: [b.data.value.x, b.data.value.y].filter(function (a) {\n return a;\n }).join(","),\n meta: b.data.meta\n }, c.xmlNs.uri);\n this.eventEmitter.emit("draw", {\n type: "point",\n value: b.data.value,\n index: b.data.valueIndex,\n meta: b.data.meta,\n series: f,\n seriesIndex: g,\n axisX: d,\n axisY: e,\n group: i,\n element: h,\n x: b.x,\n y: b.y\n });\n }.bind(this)), m.showLine) {\n var p = i.elem("path", {\n d: o.stringify()\n }, a.classNames.line, !0);\n this.eventEmitter.emit("draw", {\n type: "line",\n values: b.normalized[g],\n path: o.clone(),\n chartRect: j,\n index: g,\n series: f,\n seriesIndex: g,\n axisX: d,\n axisY: e,\n group: i,\n element: p\n });\n }\n if (m.showArea && e.range) {\n var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min),\n r = j.y1 - e.projectValue(q);\n o.splitByCommand("M").filter(function (a) {\n return a.pathElements.length > 1;\n }).map(function (a) {\n var b = a.pathElements[0],\n c = a.pathElements[a.pathElements.length - 1];\n return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r);\n }).forEach(function (h) {\n var k = i.elem("path", {\n d: h.stringify()\n }, a.classNames.area, !0).attr({\n values: b.normalized[g]\n }, c.xmlNs.uri);\n this.eventEmitter.emit("draw", {\n type: "area",\n values: b.normalized[g],\n path: h.clone(),\n series: f,\n seriesIndex: g,\n axisX: d,\n axisY: e,\n chartRect: j,\n index: g,\n group: i,\n element: k\n });\n }.bind(this));\n }\n }.bind(this)), this.eventEmitter.emit("created", {\n bounds: e.bounds,\n chartRect: j,\n axisX: d,\n axisY: e,\n svg: this.svg,\n options: a\n });\n }\n function e(a, b, d, e) {\n c.Line["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e);\n }\n var f = {\n axisX: {\n offset: 30,\n position: "end",\n labelOffset: {\n x: 0,\n y: 0\n },\n showLabel: !0,\n showGrid: !0,\n labelInterpolationFnc: c.noop,\n type: void 0\n },\n axisY: {\n offset: 40,\n position: "start",\n labelOffset: {\n x: 0,\n y: 0\n },\n showLabel: !0,\n showGrid: !0,\n labelInterpolationFnc: c.noop,\n type: void 0,\n scaleMinSpace: 20,\n onlyInteger: !1\n },\n width: void 0,\n height: void 0,\n showLine: !0,\n showPoint: !0,\n showArea: !1,\n areaBase: 0,\n lineSmooth: !0,\n low: void 0,\n high: void 0,\n chartPadding: {\n top: 15,\n right: 15,\n bottom: 5,\n left: 10\n },\n fullWidth: !1,\n reverseData: !1,\n classNames: {\n chart: "ct-chart-line",\n label: "ct-label",\n labelGroup: "ct-labels",\n series: "ct-series",\n line: "ct-line",\n point: "ct-point",\n area: "ct-area",\n grid: "ct-grid",\n gridGroup: "ct-grids",\n vertical: "ct-vertical",\n horizontal: "ct-horizontal",\n start: "ct-start",\n end: "ct-end"\n }\n };\n c.Line = c.Base.extend({\n constructor: e,\n createChart: d\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a) {\n var b,\n d = {\n raw: this.data,\n normalized: a.distributeSeries ? c.getDataArray(this.data, a.reverseData, a.horizontalBars ? "x" : "y").map(function (a) {\n return [a];\n }) : c.getDataArray(this.data, a.reverseData, a.horizontalBars ? "x" : "y")\n };\n this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : ""));\n var e = this.svg.elem("g").addClass(a.classNames.gridGroup),\n g = this.svg.elem("g"),\n h = this.svg.elem("g").addClass(a.classNames.labelGroup);\n if (a.stackBars) {\n var i = c.serialMap(d.normalized, function () {\n return Array.prototype.slice.call(arguments).map(function (a) {\n return a;\n }).reduce(function (a, b) {\n return {\n x: a.x + b.x || 0,\n y: a.y + b.y || 0\n };\n }, {\n x: 0,\n y: 0\n });\n });\n b = c.getHighLow([i], c.extend({}, a, {\n referenceValue: 0\n }), a.horizontalBars ? "x" : "y");\n } else b = c.getHighLow(d.normalized, c.extend({}, a, {\n referenceValue: 0\n }), a.horizontalBars ? "x" : "y");\n b.high = +a.high || (0 === a.high ? 0 : b.high), b.low = +a.low || (0 === a.low ? 0 : b.low);\n var j,\n k,\n l,\n m,\n n,\n o = c.createChartRect(this.svg, a, f.padding);\n k = a.distributeSeries && a.stackBars ? d.raw.labels.slice(0, 1) : d.raw.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, d, o, c.extend({}, a.axisX, {\n highLow: b,\n referenceValue: 0\n })) : a.axisX.type.call(c, c.Axis.units.x, d, o, c.extend({}, a.axisX, {\n highLow: b,\n referenceValue: 0\n })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, d, o, {\n ticks: k\n }) : a.axisY.type.call(c, c.Axis.units.y, d, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, d, o, {\n ticks: k\n }) : a.axisX.type.call(c, c.Axis.units.x, d, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, d, o, c.extend({}, a.axisY, {\n highLow: b,\n referenceValue: 0\n })) : a.axisY.type.call(c, c.Axis.units.y, d, o, c.extend({}, a.axisY, {\n highLow: b,\n referenceValue: 0\n })));\n var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0),\n q = [];\n l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), d.raw.series.forEach(function (b, e) {\n var f,\n h,\n i = e - (d.raw.series.length - 1) / 2;\n f = a.distributeSeries && !a.stackBars ? l.axisLength / d.normalized.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / d.normalized[e].length / 2, h = g.elem("g"), h.attr({\n "series-name": b.name,\n meta: c.serialize(b.meta)\n }, c.xmlNs.uri), h.addClass([a.classNames.series, b.className || a.classNames.series + "-" + c.alphaNumerate(e)].join(" ")), d.normalized[e].forEach(function (g, k) {\n var r, s, t, u;\n if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? {\n x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, d.normalized[e]),\n y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, d.normalized[e])\n } : {\n x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, d.normalized[e]),\n y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, d.normalized[e])\n }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) {\n var v = {};\n v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], v[l.counterUnits.pos + "1"] = a.stackBars ? t : p, v[l.counterUnits.pos + "2"] = a.stackBars ? q[k] : r[l.counterUnits.pos], v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1), s = h.elem("line", v, a.classNames.bar).attr({\n value: [g.x, g.y].filter(function (a) {\n return a;\n }).join(","),\n meta: c.getMetaData(b, k)\n }, c.xmlNs.uri), this.eventEmitter.emit("draw", c.extend({\n type: "bar",\n value: g,\n index: k,\n meta: c.getMetaData(b, k),\n series: b,\n seriesIndex: e,\n axisX: m,\n axisY: n,\n chartRect: o,\n group: h,\n element: s\n }, v));\n }\n }.bind(this));\n }.bind(this)), this.eventEmitter.emit("created", {\n bounds: j.bounds,\n chartRect: o,\n axisX: m,\n axisY: n,\n svg: this.svg,\n options: a\n });\n }\n function e(a, b, d, e) {\n c.Bar["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e);\n }\n var f = {\n axisX: {\n offset: 30,\n position: "end",\n labelOffset: {\n x: 0,\n y: 0\n },\n showLabel: !0,\n showGrid: !0,\n labelInterpolationFnc: c.noop,\n scaleMinSpace: 30,\n onlyInteger: !1\n },\n axisY: {\n offset: 40,\n position: "start",\n labelOffset: {\n x: 0,\n y: 0\n },\n showLabel: !0,\n showGrid: !0,\n labelInterpolationFnc: c.noop,\n scaleMinSpace: 20,\n onlyInteger: !1\n },\n width: void 0,\n height: void 0,\n high: void 0,\n low: void 0,\n onlyInteger: !1,\n chartPadding: {\n top: 15,\n right: 15,\n bottom: 5,\n left: 10\n },\n seriesBarDistance: 15,\n stackBars: !1,\n horizontalBars: !1,\n distributeSeries: !1,\n reverseData: !1,\n classNames: {\n chart: "ct-chart-bar",\n horizontalBars: "ct-horizontal-bars",\n label: "ct-label",\n labelGroup: "ct-labels",\n series: "ct-series",\n bar: "ct-bar",\n grid: "ct-grid",\n gridGroup: "ct-grids",\n vertical: "ct-vertical",\n horizontal: "ct-horizontal",\n start: "ct-start",\n end: "ct-end"\n }\n };\n c.Bar = c.Base.extend({\n constructor: e,\n createChart: d\n });\n }(window, document, a), function (a, b, c) {\n "use strict";\n\n function d(a, b, c) {\n var d = b.x > a.x;\n return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle";\n }\n function e(a) {\n var b,\n e,\n f,\n h,\n i,\n j = [],\n k = a.startAngle,\n l = c.getDataArray(this.data, a.reverseData);\n this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || l.reduce(function (a, b) {\n return a + b;\n }, 0), f -= a.donut ? a.donutWidth / 2 : 0, h = "outside" === a.labelPosition || a.donut ? f : "center" === a.labelPosition ? 0 : f / 2, h += a.labelOffset;\n var m = {\n x: e.x1 + e.width() / 2,\n y: e.y2 + e.height() / 2\n },\n n = 1 === this.data.series.filter(function (a) {\n return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a;\n }).length;\n a.showLabel && (b = this.svg.elem("g", null, null, !0));\n for (var o = 0; o < this.data.series.length; o++) {\n var p = this.data.series[o];\n j[o] = this.svg.elem("g", null, null, !0), j[o].attr({\n "series-name": p.name\n }, c.xmlNs.uri), j[o].addClass([a.classNames.series, p.className || a.classNames.series + "-" + c.alphaNumerate(o)].join(" "));\n var q = k + l[o] / i * 360;\n q - k === 360 && (q -= .01);\n var r = c.polarToCartesian(m.x, m.y, f, k - (0 === o || n ? 0 : .2)),\n s = c.polarToCartesian(m.x, m.y, f, q),\n t = new c.Svg.Path(!a.donut).move(s.x, s.y).arc(f, f, 0, q - k > 180, 0, r.x, r.y);\n a.donut || t.line(m.x, m.y);\n var u = j[o].elem("path", {\n d: t.stringify()\n }, a.donut ? a.classNames.sliceDonut : a.classNames.slicePie);\n if (u.attr({\n value: l[o],\n meta: c.serialize(p.meta)\n }, c.xmlNs.uri), a.donut && u.attr({\n style: "stroke-width: " + +a.donutWidth + "px"\n }), this.eventEmitter.emit("draw", {\n type: "slice",\n value: l[o],\n totalDataSum: i,\n index: o,\n meta: p.meta,\n series: p,\n group: j[o],\n element: u,\n path: t.clone(),\n center: m,\n radius: f,\n startAngle: k,\n endAngle: q\n }), a.showLabel) {\n var v = c.polarToCartesian(m.x, m.y, h, k + (q - k) / 2),\n w = a.labelInterpolationFnc(this.data.labels ? this.data.labels[o] : l[o], o);\n if (w || 0 === w) {\n var x = b.elem("text", {\n dx: v.x,\n dy: v.y,\n "text-anchor": d(m, v, a.labelDirection)\n }, a.classNames.label).text("" + w);\n this.eventEmitter.emit("draw", {\n type: "label",\n index: o,\n group: b,\n element: x,\n text: "" + w,\n x: v.x,\n y: v.y\n });\n }\n }\n k = q;\n }\n this.eventEmitter.emit("created", {\n chartRect: e,\n svg: this.svg,\n options: a\n });\n }\n function f(a, b, d, e) {\n c.Pie["super"].constructor.call(this, a, b, g, c.extend({}, g, d), e);\n }\n var g = {\n width: void 0,\n height: void 0,\n chartPadding: 5,\n classNames: {\n chartPie: "ct-chart-pie",\n chartDonut: "ct-chart-donut",\n series: "ct-series",\n slicePie: "ct-slice-pie",\n sliceDonut: "ct-slice-donut",\n label: "ct-label"\n },\n startAngle: 0,\n total: void 0,\n donut: !1,\n donutWidth: 60,\n showLabel: !0,\n labelOffset: 0,\n labelPosition: "inside",\n labelInterpolationFnc: c.noop,\n labelDirection: "neutral",\n reverseData: !1\n };\n c.Pie = c.Base.extend({\n constructor: f,\n createChart: e,\n determineAnchorPosition: d\n });\n }(window, document, a), a;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/chartist.min.js?')},"./buyercall/assets/scripts/vendor/fullcalendar.min.js":(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/*!\n * FullCalendar v3.0.1\n * Docs & License: http://fullcalendar.io/\n * (c) 2016 Adam Shaw\n */\n!function (t) {\n true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery"), __webpack_require__(/*! moment */ "./node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n}(function (t, e) {\n function n(t) {\n return q(t, qt);\n }\n function i(t, e) {\n e.left && t.css({\n "border-left-width": 1,\n "margin-left": e.left - 1\n }), e.right && t.css({\n "border-right-width": 1,\n "margin-right": e.right - 1\n });\n }\n function r(t) {\n t.css({\n "margin-left": "",\n "margin-right": "",\n "border-left-width": "",\n "border-right-width": ""\n });\n }\n function s() {\n t("body").addClass("fc-not-allowed");\n }\n function o() {\n t("body").removeClass("fc-not-allowed");\n }\n function l(e, n, i) {\n var r = Math.floor(n / e.length),\n s = Math.floor(n - r * (e.length - 1)),\n o = [],\n l = [],\n u = [],\n d = 0;\n a(e), e.each(function (n, i) {\n var a = n === e.length - 1 ? s : r,\n c = t(i).outerHeight(!0);\n c < a ? (o.push(i), l.push(c), u.push(t(i).height())) : d += c;\n }), i && (n -= d, r = Math.floor(n / o.length), s = Math.floor(n - r * (o.length - 1))), t(o).each(function (e, n) {\n var i = e === o.length - 1 ? s : r,\n a = l[e],\n d = u[e],\n c = i - (a - d);\n a < i && t(n).height(c);\n });\n }\n function a(t) {\n t.height("");\n }\n function u(e) {\n var n = 0;\n return e.find("> *").each(function (e, i) {\n var r = t(i).outerWidth();\n r > n && (n = r);\n }), n++, e.width(n), n;\n }\n function d(t, e) {\n var n,\n i = t.add(e);\n return i.css({\n position: "relative",\n left: -1\n }), n = t.outerHeight() - e.outerHeight(), i.css({\n position: "",\n left: ""\n }), n;\n }\n function c(e) {\n var n = e.css("position"),\n i = e.parents().filter(function () {\n var e = t(this);\n return /(auto|scroll)/.test(e.css("overflow") + e.css("overflow-y") + e.css("overflow-x"));\n }).eq(0);\n return "fixed" !== n && i.length ? i : t(e[0].ownerDocument || document);\n }\n function h(t, e) {\n var n = t.offset(),\n i = n.left - (e ? e.left : 0),\n r = n.top - (e ? e.top : 0);\n return {\n left: i,\n right: i + t.outerWidth(),\n top: r,\n bottom: r + t.outerHeight()\n };\n }\n function f(t, e) {\n var n = t.offset(),\n i = p(t),\n r = n.left + y(t, "border-left-width") + i.left - (e ? e.left : 0),\n s = n.top + y(t, "border-top-width") + i.top - (e ? e.top : 0);\n return {\n left: r,\n right: r + t[0].clientWidth,\n top: s,\n bottom: s + t[0].clientHeight\n };\n }\n function g(t, e) {\n var n = t.offset(),\n i = n.left + y(t, "border-left-width") + y(t, "padding-left") - (e ? e.left : 0),\n r = n.top + y(t, "border-top-width") + y(t, "padding-top") - (e ? e.top : 0);\n return {\n left: i,\n right: i + t.width(),\n top: r,\n bottom: r + t.height()\n };\n }\n function p(t) {\n var e = t.innerWidth() - t[0].clientWidth,\n n = {\n left: 0,\n right: 0,\n top: 0,\n bottom: t.innerHeight() - t[0].clientHeight\n };\n return v() && "rtl" == t.css("direction") ? n.left = e : n.right = e, n;\n }\n function v() {\n return null === Zt && (Zt = m()), Zt;\n }\n function m() {\n var e = t("<div><div/></div>").css({\n position: "absolute",\n top: -1e3,\n left: 0,\n border: 0,\n padding: 0,\n overflow: "scroll",\n direction: "rtl"\n }).appendTo("body"),\n n = e.children(),\n i = n.offset().left > e.offset().left;\n return e.remove(), i;\n }\n function y(t, e) {\n return parseFloat(t.css(e)) || 0;\n }\n function S(t) {\n return 1 == t.which && !t.ctrlKey;\n }\n function w(t) {\n if (void 0 !== t.pageX) return t.pageX;\n var e = t.originalEvent.touches;\n return e ? e[0].pageX : void 0;\n }\n function E(t) {\n if (void 0 !== t.pageY) return t.pageY;\n var e = t.originalEvent.touches;\n return e ? e[0].pageY : void 0;\n }\n function D(t) {\n return /^touch/.test(t.type);\n }\n function b(t) {\n t.addClass("fc-unselectable").on("selectstart", C);\n }\n function C(t) {\n t.preventDefault();\n }\n function H(t) {\n return !!window.addEventListener && (window.addEventListener("scroll", t, !0), !0);\n }\n function T(t) {\n return !!window.removeEventListener && (window.removeEventListener("scroll", t, !0), !0);\n }\n function x(t, e) {\n var n = {\n left: Math.max(t.left, e.left),\n right: Math.min(t.right, e.right),\n top: Math.max(t.top, e.top),\n bottom: Math.min(t.bottom, e.bottom)\n };\n return n.left < n.right && n.top < n.bottom && n;\n }\n function R(t, e) {\n return {\n left: Math.min(Math.max(t.left, e.left), e.right),\n top: Math.min(Math.max(t.top, e.top), e.bottom)\n };\n }\n function I(t) {\n return {\n left: (t.left + t.right) / 2,\n top: (t.top + t.bottom) / 2\n };\n }\n function k(t, e) {\n return {\n left: t.left - e.left,\n top: t.top - e.top\n };\n }\n function M(e) {\n var n,\n i,\n r = [],\n s = [];\n for ("string" == typeof e ? s = e.split(/\\s*,\\s*/) : "function" == typeof e ? s = [e] : t.isArray(e) && (s = e), n = 0; n < s.length; n++) i = s[n], "string" == typeof i ? r.push("-" == i.charAt(0) ? {\n field: i.substring(1),\n order: -1\n } : {\n field: i,\n order: 1\n }) : "function" == typeof i && r.push({\n func: i\n });\n return r;\n }\n function L(t, e, n) {\n var i, r;\n for (i = 0; i < n.length; i++) if (r = B(t, e, n[i])) return r;\n return 0;\n }\n function B(t, e, n) {\n return n.func ? n.func(t, e) : z(t[n.field], e[n.field]) * (n.order || 1);\n }\n function z(e, n) {\n return e || n ? null == n ? -1 : null == e ? 1 : "string" === t.type(e) || "string" === t.type(n) ? String(e).localeCompare(String(n)) : e - n : 0;\n }\n function F(t, e) {\n var n,\n i,\n r,\n s,\n o = t.start,\n l = t.end,\n a = e.start,\n u = e.end;\n if (l > a && o < u) return o >= a ? (n = o.clone(), r = !0) : (n = a.clone(), r = !1), l <= u ? (i = l.clone(), s = !0) : (i = u.clone(), s = !1), {\n start: n,\n end: i,\n isStart: r,\n isEnd: s\n };\n }\n function N(t, n) {\n return e.duration({\n days: t.clone().stripTime().diff(n.clone().stripTime(), "days"),\n ms: t.time() - n.time()\n });\n }\n function G(t, n) {\n return e.duration({\n days: t.clone().stripTime().diff(n.clone().stripTime(), "days")\n });\n }\n function A(t, n, i) {\n return e.duration(Math.round(t.diff(n, i, !0)), i);\n }\n function O(t, e) {\n var n, i, r;\n for (n = 0; n < Xt.length && (i = Xt[n], r = V(i, t, e), !(r >= 1 && ot(r))); n++);\n return i;\n }\n function V(t, n, i) {\n return null != i ? i.diff(n, t, !0) : e.isDuration(n) ? n.as(t) : n.end.diff(n.start, t, !0);\n }\n function P(t, e, n) {\n var i;\n return W(n) ? (e - t) / n : (i = n.asMonths(), Math.abs(i) >= 1 && ot(i) ? e.diff(t, "months", !0) / i : e.diff(t, "days", !0) / n.asDays());\n }\n function _(t, e) {\n var n, i;\n return W(t) || W(e) ? t / e : (n = t.asMonths(), i = e.asMonths(), Math.abs(n) >= 1 && ot(n) && Math.abs(i) >= 1 && ot(i) ? n / i : t.asDays() / e.asDays());\n }\n function Y(t, n) {\n var i;\n return W(t) ? e.duration(t * n) : (i = t.asMonths(), Math.abs(i) >= 1 && ot(i) ? e.duration({\n months: i * n\n }) : e.duration({\n days: t.asDays() * n\n }));\n }\n function W(t) {\n return Boolean(t.hours() || t.minutes() || t.seconds() || t.milliseconds());\n }\n function j(t) {\n return "[object Date]" === Object.prototype.toString.call(t) || t instanceof Date;\n }\n function U(t) {\n return /^\\d+\\:\\d+(?:\\:\\d+\\.?(?:\\d{3})?)?$/.test(t);\n }\n function q(t, e) {\n var n,\n i,\n r,\n s,\n o,\n l,\n a = {};\n if (e) for (n = 0; n < e.length; n++) {\n for (i = e[n], r = [], s = t.length - 1; s >= 0; s--) if (o = t[s][i], "object" == _typeof(o)) r.unshift(o);else if (void 0 !== o) {\n a[i] = o;\n break;\n }\n r.length && (a[i] = q(r));\n }\n for (n = t.length - 1; n >= 0; n--) {\n l = t[n];\n for (i in l) i in a || (a[i] = l[i]);\n }\n return a;\n }\n function Z(t) {\n var e = function e() {};\n return e.prototype = t, new e();\n }\n function $(t, e) {\n for (var n in t) X(t, n) && (e[n] = t[n]);\n }\n function X(t, e) {\n return Kt.call(t, e);\n }\n function K(e) {\n return /undefined|null|boolean|number|string/.test(t.type(e));\n }\n function Q(e, n, i) {\n if (t.isFunction(e) && (e = [e]), e) {\n var r, s;\n for (r = 0; r < e.length; r++) s = e[r].apply(n, i) || s;\n return s;\n }\n }\n function J() {\n for (var t = 0; t < arguments.length; t++) if (void 0 !== arguments[t]) return arguments[t];\n }\n function tt(t) {\n return (t + "").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\'/g, "'").replace(/"/g, """).replace(/\\n/g, "<br />");\n }\n function et(t) {\n return t.replace(/&.*?;/g, "");\n }\n function nt(e) {\n var n = [];\n return t.each(e, function (t, e) {\n null != e && n.push(t + ":" + e);\n }), n.join(";");\n }\n function it(e) {\n var n = [];\n return t.each(e, function (t, e) {\n null != e && n.push(t + \'="\' + tt(e) + \'"\');\n }), n.join(" ");\n }\n function rt(t) {\n return t.charAt(0).toUpperCase() + t.slice(1);\n }\n function st(t, e) {\n return t - e;\n }\n function ot(t) {\n return t % 1 === 0;\n }\n function lt(t, e) {\n var n = t[e];\n return function () {\n return n.apply(t, arguments);\n };\n }\n function at(t, e, n) {\n var i,\n r,\n s,\n o,\n l,\n a = function a() {\n var u = +new Date() - o;\n u < e ? i = setTimeout(a, e - u) : (i = null, n || (l = t.apply(s, r), s = r = null));\n };\n return function () {\n s = this, r = arguments, o = +new Date();\n var u = n && !i;\n return i || (i = setTimeout(a, e)), u && (l = t.apply(s, r), s = r = null), l;\n };\n }\n function ut(e, n) {\n return e && e.then && "resolved" !== e.state() ? n ? e.then(n) : void 0 : t.when(n());\n }\n function dt(n, i, r) {\n var s,\n o,\n l,\n a,\n u = n[0],\n d = 1 == n.length && "string" == typeof u;\n return e.isMoment(u) || j(u) || void 0 === u ? a = e.apply(null, n) : (s = !1, o = !1, d ? Qt.test(u) ? (u += "-01", n = [u], s = !0, o = !0) : (l = Jt.exec(u)) && (s = !l[5], o = !0) : t.isArray(u) && (o = !0), a = i || s ? e.utc.apply(e, n) : e.apply(null, n), s ? (a._ambigTime = !0, a._ambigZone = !0) : r && (o ? a._ambigZone = !0 : d && a.utcOffset(u))), a._fullCalendar = !0, a;\n }\n function ct(t, e) {\n return ee.format.call(t, e);\n }\n function ht(t, e) {\n return ft(t, yt(e));\n }\n function ft(t, e) {\n var n,\n i = "";\n for (n = 0; n < e.length; n++) i += gt(t, e[n]);\n return i;\n }\n function gt(t, e) {\n var n, i;\n return "string" == typeof e ? e : (n = e.token) ? ie[n] ? ie[n](t) : ct(t, n) : e.maybe && (i = ft(t, e.maybe), i.match(/[1-9]/)) ? i : "";\n }\n function pt(t, e, n, i, r) {\n var s;\n return t = jt.moment.parseZone(t), e = jt.moment.parseZone(e), s = t.localeData(), n = s.longDateFormat(n) || n, i = i || " - ", vt(t, e, yt(n), i, r);\n }\n function vt(t, e, n, i, r) {\n var s,\n o,\n l,\n a,\n u = t.clone().stripZone(),\n d = e.clone().stripZone(),\n c = "",\n h = "",\n f = "",\n g = "",\n p = "";\n for (o = 0; o < n.length && (s = mt(t, e, u, d, n[o]), s !== !1); o++) c += s;\n for (l = n.length - 1; l > o && (s = mt(t, e, u, d, n[l]), s !== !1); l--) h = s + h;\n for (a = o; a <= l; a++) f += gt(t, n[a]), g += gt(e, n[a]);\n return (f || g) && (p = r ? g + i + f : f + i + g), c + p + h;\n }\n function mt(t, e, n, i, r) {\n var s, o;\n return "string" == typeof r ? r : !!((s = r.token) && (o = re[s.charAt(0)], o && n.isSame(i, o))) && ct(t, s);\n }\n function yt(t) {\n return t in se ? se[t] : se[t] = St(t);\n }\n function St(t) {\n for (var e, n = [], i = /\\[([^\\]]*)\\]|\\(([^\\)]*)\\)|(LTS|LT|(\\w)\\4*o?)|([^\\w\\[\\(]+)/g; e = i.exec(t);) e[1] ? n.push(e[1]) : e[2] ? n.push({\n maybe: St(e[2])\n }) : e[3] ? n.push({\n token: e[3]\n }) : e[5] && n.push(e[5]);\n return n;\n }\n function wt() {}\n function Et(t, e) {\n var n;\n return X(e, "constructor") && (n = e.constructor), "function" != typeof n && (n = e.constructor = function () {\n t.apply(this, arguments);\n }), n.prototype = Z(t.prototype), $(e, n.prototype), $(t, n), n;\n }\n function Dt(t, e) {\n $(e, t.prototype);\n }\n function bt(t, e) {\n return !t && !e || !(!t || !e) && t.component === e.component && Ct(t, e) && Ct(e, t);\n }\n function Ct(t, e) {\n for (var n in t) if (!/^(component|left|right|top|bottom)$/.test(n) && t[n] !== e[n]) return !1;\n return !0;\n }\n function Ht(t) {\n return {\n start: t.start.clone(),\n end: t.end ? t.end.clone() : null,\n allDay: t.allDay\n };\n }\n function Tt(t) {\n var e = Rt(t);\n return "background" === e || "inverse-background" === e;\n }\n function xt(t) {\n return "inverse-background" === Rt(t);\n }\n function Rt(t) {\n return J((t.source || {}).rendering, t.rendering);\n }\n function It(t) {\n var e,\n n,\n i = {};\n for (e = 0; e < t.length; e++) n = t[e], (i[n._id] || (i[n._id] = [])).push(n);\n return i;\n }\n function kt(t, e) {\n return t.start - e.start;\n }\n function Mt(n) {\n var i,\n r,\n s,\n o,\n l = jt.dataAttrPrefix;\n return l && (l += "-"), i = n.data(l + "event") || null, i && (i = "object" == _typeof(i) ? t.extend({}, i) : {}, r = i.start, null == r && (r = i.time), s = i.duration, o = i.stick, delete i.start, delete i.time, delete i.duration, delete i.stick), null == r && (r = n.data(l + "start")), null == r && (r = n.data(l + "time")), null == s && (s = n.data(l + "duration")), null == o && (o = n.data(l + "stick")), r = null != r ? e.duration(r) : null, s = null != s ? e.duration(s) : null, o = Boolean(o), {\n eventProps: i,\n startTime: r,\n duration: s,\n stick: o\n };\n }\n function Lt(t, e) {\n var n, i;\n for (n = 0; n < e.length; n++) if (i = e[n], i.leftCol <= t.rightCol && i.rightCol >= t.leftCol) return !0;\n return !1;\n }\n function Bt(t, e) {\n return t.leftCol - e.leftCol;\n }\n function zt(t) {\n var e,\n n,\n i,\n r = [];\n for (e = 0; e < t.length; e++) {\n for (n = t[e], i = 0; i < r.length && Gt(n, r[i]).length; i++);\n n.level = i, (r[i] || (r[i] = [])).push(n);\n }\n return r;\n }\n function Ft(t) {\n var e, n, i, r, s;\n for (e = 0; e < t.length; e++) for (n = t[e], i = 0; i < n.length; i++) for (r = n[i], r.forwardSegs = [], s = e + 1; s < t.length; s++) Gt(r, t[s], r.forwardSegs);\n }\n function Nt(t) {\n var e,\n n,\n i = t.forwardSegs,\n r = 0;\n if (void 0 === t.forwardPressure) {\n for (e = 0; e < i.length; e++) n = i[e], Nt(n), r = Math.max(r, 1 + n.forwardPressure);\n t.forwardPressure = r;\n }\n }\n function Gt(t, e, n) {\n n = n || [];\n for (var i = 0; i < e.length; i++) At(t, e[i]) && n.push(e[i]);\n return n;\n }\n function At(t, e) {\n return t.bottom > e.top && t.top < e.bottom;\n }\n function Ot(n, i) {\n function r(t) {\n t._locale = U;\n }\n function s() {\n $ ? u() && (g(), d()) : o();\n }\n function o() {\n n.addClass("fc"), n.on("click.fc", "a[data-goto]", function (e) {\n var n = t(this),\n i = n.data("goto"),\n r = j.moment(i.date),\n s = i.type,\n o = K.opt("navLink" + rt(s) + "Click");\n "function" == typeof o ? o(r, e) : ("string" == typeof o && (s = o), N(r, s));\n }), j.bindOption("theme", function (t) {\n X = t ? "ui" : "fc", n.toggleClass("ui-widget", t), n.toggleClass("fc-unthemed", !t);\n }), j.bindOptions(["isRTL", "locale"], function (t) {\n n.toggleClass("fc-ltr", !t), n.toggleClass("fc-rtl", t);\n }), $ = t("<div class=\'fc-view-container\'/>").prependTo(n), q = j.header = new _t(j), l(), d(j.options.defaultView), j.options.handleWindowResize && (J = at(m, j.options.windowResizeDelay), t(window).resize(J));\n }\n function l() {\n q.render(), q.el && n.prepend(q.el);\n }\n function a() {\n K && K.removeElement(), q.removeElement(), $.remove(), n.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"), n.off(".fc"), J && t(window).unbind("resize", J);\n }\n function u() {\n return n.is(":visible");\n }\n function d(e, n) {\n lt++, K && e && K.type !== e && (A(), c()), !K && e && (K = j.view = ot[e] || (ot[e] = j.instantiateView(e)), K.setElement(t("<div class=\'fc-view fc-" + e + "-view\' />").appendTo($)), q.activateButton(e)), K && (tt = K.massageCurrentDate(tt), K.displaying && tt >= K.intervalStart && tt < K.intervalEnd || u() && (K.display(tt, n), O(), H(), T(), E())), O(), lt--;\n }\n function c() {\n q.deactivateButton(K.type), K.removeElement(), K = j.view = null;\n }\n function h() {\n lt++, A();\n var t = K.type,\n e = K.queryScroll();\n c(), d(t, e), O(), lt--;\n }\n function f(t) {\n if (u()) return t && p(), lt++, K.updateSize(!0), lt--, !0;\n }\n function g() {\n u() && p();\n }\n function p() {\n var t = j.options.contentHeight,\n e = j.options.height;\n Q = "number" == typeof t ? t : "function" == typeof t ? t() : "number" == typeof e ? e - v() : "function" == typeof e ? e() - v() : "parent" === e ? n.parent().height() - v() : Math.round($.width() / Math.max(j.options.aspectRatio, .5));\n }\n function v() {\n return q.el ? q.el.outerHeight(!0) : 0;\n }\n function m(t) {\n !lt && t.target === window && K.start && f(!0) && K.trigger("windowResize", st);\n }\n function y() {\n D();\n }\n function S(t) {\n it(j.getEventSourcesByMatchArray(t));\n }\n function w() {\n u() && (A(), K.displayEvents(ut), O());\n }\n function E() {\n !j.options.lazyFetching || et(K.start, K.end) ? D() : w();\n }\n function D() {\n nt(K.start, K.end);\n }\n function b(t) {\n ut = t, w();\n }\n function C() {\n w();\n }\n function H() {\n q.updateTitle(K.title);\n }\n function T() {\n var t = j.getNow();\n t >= K.intervalStart && t < K.intervalEnd ? q.disableButton("today") : q.enableButton("today");\n }\n function x(t, e) {\n K.select(j.buildSelectSpan.apply(j, arguments));\n }\n function R() {\n K && K.unselect();\n }\n function I() {\n tt = K.computePrevDate(tt), d();\n }\n function k() {\n tt = K.computeNextDate(tt), d();\n }\n function M() {\n tt.add(-1, "years"), d();\n }\n function L() {\n tt.add(1, "years"), d();\n }\n function B() {\n tt = j.getNow(), d();\n }\n function z(t) {\n tt = j.moment(t).stripZone(), d();\n }\n function F(t) {\n tt.add(e.duration(t)), d();\n }\n function N(t, e) {\n var n;\n e = e || "day", n = j.getViewSpec(e) || j.getUnitViewSpec(e), tt = t.clone(), d(n ? n.type : null);\n }\n function G() {\n return j.applyTimezone(tt);\n }\n function A() {\n $.css({\n width: "100%",\n height: $.height(),\n overflow: "hidden"\n });\n }\n function O() {\n $.css({\n width: "",\n height: "",\n overflow: ""\n });\n }\n function V() {\n return j;\n }\n function P() {\n return K;\n }\n function _(t, e) {\n var n;\n if ("string" == typeof t) {\n if (void 0 === e) return j.options[t];\n n = {}, n[t] = e, Y(n);\n } else "object" == _typeof(t) && Y(t);\n }\n function Y(t) {\n var e,\n n = 0;\n for (e in t) j.dynamicOverrides[e] = t[e];\n j.viewSpecCache = {}, j.populateOptionsHash();\n for (e in t) j.triggerOptionHandlers(e), n++;\n if (1 === n) {\n if ("height" === e || "contentHeight" === e || "aspectRatio" === e) return void f(!0);\n if ("defaultDate" === e) return;\n if ("businessHours" === e) return void (K && (K.unrenderBusinessHours(), K.renderBusinessHours()));\n if ("timezone" === e) return j.rezoneArrayEventSources(), void y();\n }\n l(), ot = {}, h();\n }\n function W(t, e) {\n var n = Array.prototype.slice.call(arguments, 2);\n if (e = e || st, this.triggerWith(t, e, n), j.options[t]) return j.options[t].apply(e, n);\n }\n var j = this;\n j.render = s, j.destroy = a, j.refetchEvents = y, j.refetchEventSources = S, j.reportEvents = b, j.reportEventChange = C, j.rerenderEvents = w, j.changeView = d, j.select = x, j.unselect = R, j.prev = I, j.next = k, j.prevYear = M, j.nextYear = L, j.today = B, j.gotoDate = z, j.incrementDate = F, j.zoomTo = N, j.getDate = G, j.getCalendar = V, j.getView = P, j.option = _, j.trigger = W, j.dynamicOverrides = {}, j.viewSpecCache = {}, j.optionHandlers = {}, j.overrides = t.extend({}, i), j.populateOptionsHash();\n var U;\n j.bindOptions(["locale", "monthNames", "monthNamesShort", "dayNames", "dayNamesShort", "firstDay", "weekNumberCalculation"], function (t, e, n, i, s, o, l) {\n if ("iso" === l && (l = "ISO"), U = Z(Pt(t)), e && (U._months = e), n && (U._monthsShort = n), i && (U._weekdays = i), s && (U._weekdaysShort = s), null == o && "ISO" === l && (o = 1), null != o) {\n var a = Z(U._week);\n a.dow = o, U._week = a;\n }\n "ISO" !== l && "local" !== l && "function" != typeof l || (U._fullCalendar_weekCalc = l), tt && r(tt);\n }), j.defaultAllDayEventDuration = e.duration(j.options.defaultAllDayEventDuration), j.defaultTimedEventDuration = e.duration(j.options.defaultTimedEventDuration), j.moment = function () {\n var t;\n return "local" === j.options.timezone ? (t = jt.moment.apply(null, arguments), t.hasTime() && t.local()) : t = "UTC" === j.options.timezone ? jt.moment.utc.apply(null, arguments) : jt.moment.parseZone.apply(null, arguments), r(t), t;\n }, j.localizeMoment = r, j.getIsAmbigTimezone = function () {\n return "local" !== j.options.timezone && "UTC" !== j.options.timezone;\n }, j.applyTimezone = function (t) {\n if (!t.hasTime()) return t.clone();\n var e,\n n = j.moment(t.toArray()),\n i = t.time() - n.time();\n return i && (e = n.clone().add(i), t.time() - e.time() === 0 && (n = e)), n;\n }, j.getNow = function () {\n var t = j.options.now;\n return "function" == typeof t && (t = t()), j.moment(t).stripZone();\n }, j.getEventEnd = function (t) {\n return t.end ? t.end.clone() : j.getDefaultEventEnd(t.allDay, t.start);\n }, j.getDefaultEventEnd = function (t, e) {\n var n = e.clone();\n return t ? n.stripTime().add(j.defaultAllDayEventDuration) : n.add(j.defaultTimedEventDuration), j.getIsAmbigTimezone() && n.stripZone(), n;\n }, j.humanizeDuration = function (t) {\n return t.locale(j.options.locale).humanize();\n }, Yt.call(j);\n var q,\n $,\n X,\n K,\n Q,\n J,\n tt,\n et = j.isFetchNeeded,\n nt = j.fetchEvents,\n it = j.fetchEventSources,\n st = n[0],\n ot = {},\n lt = 0,\n ut = [];\n tt = null != j.options.defaultDate ? j.moment(j.options.defaultDate).stripZone() : j.getNow(), j.getSuggestedViewHeight = function () {\n return void 0 === Q && g(), Q;\n }, j.isHeightAuto = function () {\n return "auto" === j.options.contentHeight || "auto" === j.options.height;\n }, j.freezeContentHeight = A, j.unfreezeContentHeight = O, j.initialize();\n }\n function Vt(e) {\n t.each(He, function (t, n) {\n null == e[t] && (e[t] = n(e));\n });\n }\n function Pt(t) {\n return e.localeData(t) || e.localeData("en");\n }\n function _t(e) {\n function n() {\n var n = e.options,\n s = n.header;\n f = n.theme ? "ui" : "fc", s ? (h ? h.empty() : h = this.el = t("<div class=\'fc-toolbar\'/>"), h.append(r("left")).append(r("right")).append(r("center")).append(\'<div class="fc-clear"/>\')) : i();\n }\n function i() {\n h && (h.remove(), h = c.el = null);\n }\n function r(n) {\n var i = t(\'<div class="fc-\' + n + \'"/>\'),\n r = e.options,\n s = r.header[n];\n return s && t.each(s.split(" "), function (n) {\n var s,\n o = t(),\n l = !0;\n t.each(this.split(","), function (n, i) {\n var s, a, u, d, c, h, p, v, m, y;\n "title" == i ? (o = o.add(t("<h2> </h2>")), l = !1) : ((s = (r.customButtons || {})[i]) ? (u = function u(t) {\n s.click && s.click.call(y[0], t);\n }, d = "", c = s.text) : (a = e.getViewSpec(i)) ? (u = function u() {\n e.changeView(i);\n }, g.push(i), d = a.buttonTextOverride, c = a.buttonTextDefault) : e[i] && (u = function u() {\n e[i]();\n }, d = (e.overrides.buttonText || {})[i], c = r.buttonText[i]), u && (h = s ? s.themeIcon : r.themeButtonIcons[i], p = s ? s.icon : r.buttonIcons[i], v = d ? tt(d) : h && r.theme ? "<span class=\'ui-icon ui-icon-" + h + "\'></span>" : p && !r.theme ? "<span class=\'fc-icon fc-icon-" + p + "\'></span>" : tt(c), m = ["fc-" + i + "-button", f + "-button", f + "-state-default"], y = t(\'<button type="button" class="\' + m.join(" ") + \'">\' + v + "</button>").click(function (t) {\n y.hasClass(f + "-state-disabled") || (u(t), (y.hasClass(f + "-state-active") || y.hasClass(f + "-state-disabled")) && y.removeClass(f + "-state-hover"));\n }).mousedown(function () {\n y.not("." + f + "-state-active").not("." + f + "-state-disabled").addClass(f + "-state-down");\n }).mouseup(function () {\n y.removeClass(f + "-state-down");\n }).hover(function () {\n y.not("." + f + "-state-active").not("." + f + "-state-disabled").addClass(f + "-state-hover");\n }, function () {\n y.removeClass(f + "-state-hover").removeClass(f + "-state-down");\n }), o = o.add(y)));\n }), l && o.first().addClass(f + "-corner-left").end().last().addClass(f + "-corner-right").end(), o.length > 1 ? (s = t("<div/>"), l && s.addClass("fc-button-group"), s.append(o), i.append(s)) : i.append(o);\n }), i;\n }\n function s(t) {\n h && h.find("h2").text(t);\n }\n function o(t) {\n h && h.find(".fc-" + t + "-button").addClass(f + "-state-active");\n }\n function l(t) {\n h && h.find(".fc-" + t + "-button").removeClass(f + "-state-active");\n }\n function a(t) {\n h && h.find(".fc-" + t + "-button").prop("disabled", !0).addClass(f + "-state-disabled");\n }\n function u(t) {\n h && h.find(".fc-" + t + "-button").prop("disabled", !1).removeClass(f + "-state-disabled");\n }\n function d() {\n return g;\n }\n var c = this;\n c.render = n, c.removeElement = i, c.updateTitle = s, c.activateButton = o, c.deactivateButton = l, c.disableButton = a, c.enableButton = u, c.getViewsWithButtons = d, c.el = null;\n var h,\n f,\n g = [];\n }\n function Yt() {\n function n(t, e) {\n return !O || t < O || e > V;\n }\n function i(t, e) {\n O = t, V = e, r(Y, "reset");\n }\n function r(t, e) {\n var n, i;\n for ("reset" === e ? j = [] : "add" !== e && (j = w(j, t)), n = 0; n < t.length; n++) i = t[n], "pending" !== i._status && W++, i._fetchId = (i._fetchId || 0) + 1, i._status = "pending";\n for (n = 0; n < t.length; n++) i = t[n], s(i, i._fetchId);\n }\n function s(e, n) {\n a(e, function (i) {\n var r,\n s,\n o,\n a = t.isArray(e.events);\n if (n === e._fetchId && "rejected" !== e._status) {\n if (e._status = "resolved", i) for (r = 0; r < i.length; r++) s = i[r], o = a ? s : R(s, e), o && j.push.apply(j, L(o));\n l();\n }\n });\n }\n function o(t) {\n var e = "pending" === t._status;\n t._status = "rejected", e && l();\n }\n function l() {\n W--, W || P(j);\n }\n function a(e, n) {\n var i,\n r,\n s = jt.sourceFetchers;\n for (i = 0; i < s.length; i++) {\n if (r = s[i].call(F, e, O.clone(), V.clone(), F.options.timezone, n), r === !0) return;\n if ("object" == _typeof(r)) return void a(r, n);\n }\n var o = e.events;\n if (o) t.isFunction(o) ? (F.pushLoading(), o.call(F, O.clone(), V.clone(), F.options.timezone, function (t) {\n n(t), F.popLoading();\n })) : t.isArray(o) ? n(o) : n();else {\n var l = e.url;\n if (l) {\n var u,\n d = e.success,\n c = e.error,\n h = e.complete;\n u = t.isFunction(e.data) ? e.data() : e.data;\n var f = t.extend({}, u || {}),\n g = J(e.startParam, F.options.startParam),\n p = J(e.endParam, F.options.endParam),\n v = J(e.timezoneParam, F.options.timezoneParam);\n g && (f[g] = O.format()), p && (f[p] = V.format()), F.options.timezone && "local" != F.options.timezone && (f[v] = F.options.timezone), F.pushLoading(), t.ajax(t.extend({}, Te, e, {\n data: f,\n success: function success(e) {\n e = e || [];\n var i = Q(d, this, arguments);\n t.isArray(i) && (e = i), n(e);\n },\n error: function error() {\n Q(c, this, arguments), n();\n },\n complete: function complete() {\n Q(h, this, arguments), F.popLoading();\n }\n }));\n } else n();\n }\n }\n function u(t) {\n var e = d(t);\n e && (Y.push(e), r([e], "add"));\n }\n function d(e) {\n var n,\n i,\n r = jt.sourceNormalizers;\n if (t.isFunction(e) || t.isArray(e) ? n = {\n events: e\n } : "string" == typeof e ? n = {\n url: e\n } : "object" == _typeof(e) && (n = t.extend({}, e)), n) {\n for (n.className ? "string" == typeof n.className && (n.className = n.className.split(/\\s+/)) : n.className = [], t.isArray(n.events) && (n.origArray = n.events, n.events = t.map(n.events, function (t) {\n return R(t, n);\n })), i = 0; i < r.length; i++) r[i].call(F, n);\n return n;\n }\n }\n function c(t) {\n f(m(t));\n }\n function h(t) {\n null == t ? f(Y, !0) : f(v(t));\n }\n function f(e, n) {\n var i;\n for (i = 0; i < e.length; i++) o(e[i]);\n n ? (Y = [], j = []) : (Y = t.grep(Y, function (t) {\n for (i = 0; i < e.length; i++) if (t === e[i]) return !1;\n return !0;\n }), j = w(j, e)), P(j);\n }\n function g() {\n return Y.slice(1);\n }\n function p(e) {\n return t.grep(Y, function (t) {\n return t.id && t.id === e;\n })[0];\n }\n function v(e) {\n e ? t.isArray(e) || (e = [e]) : e = [];\n var n,\n i = [];\n for (n = 0; n < e.length; n++) i.push.apply(i, m(e[n]));\n return i;\n }\n function m(e) {\n var n, i;\n for (n = 0; n < Y.length; n++) if (i = Y[n], i === e) return [i];\n return i = p(e), i ? [i] : t.grep(Y, function (t) {\n return y(e, t);\n });\n }\n function y(t, e) {\n return t && e && S(t) == S(e);\n }\n function S(t) {\n return ("object" == _typeof(t) ? t.origArray || t.googleCalendarId || t.url || t.events : null) || t;\n }\n function w(e, n) {\n return t.grep(e, function (t) {\n for (var e = 0; e < n.length; e++) if (t.source === n[e]) return !1;\n return !0;\n });\n }\n function E(t) {\n t.start = F.moment(t.start), t.end ? t.end = F.moment(t.end) : t.end = null, B(t, D(t)), P(j);\n }\n function D(e) {\n var n = {};\n return t.each(e, function (t, e) {\n b(t) && void 0 !== e && K(e) && (n[t] = e);\n }), n;\n }\n function b(t) {\n return !/^_|^(id|allDay|start|end)$/.test(t);\n }\n function C(t, e) {\n var n,\n i,\n r,\n s = R(t);\n if (s) {\n for (n = L(s), i = 0; i < n.length; i++) r = n[i], r.source || (e && (_.events.push(r), r.source = _), j.push(r));\n return P(j), n;\n }\n return [];\n }\n function H(e) {\n var n, i;\n for (null == e ? e = function e() {\n return !0;\n } : t.isFunction(e) || (n = e + "", e = function e(t) {\n return t._id == n;\n }), j = t.grep(j, e, !0), i = 0; i < Y.length; i++) t.isArray(Y[i].events) && (Y[i].events = t.grep(Y[i].events, e, !0));\n P(j);\n }\n function T(e) {\n return t.isFunction(e) ? t.grep(j, e) : null != e ? (e += "", t.grep(j, function (t) {\n return t._id == e;\n })) : j;\n }\n function x(t) {\n t.start = F.moment(t.start), t.end && (t.end = F.moment(t.end)), Wt(t);\n }\n function R(n, i) {\n var r,\n s,\n o,\n l = {};\n if (F.options.eventDataTransform && (n = F.options.eventDataTransform(n)), i && i.eventDataTransform && (n = i.eventDataTransform(n)), t.extend(l, n), i && (l.source = i), l._id = n._id || (void 0 === n.id ? "_fc" + xe++ : n.id + ""), n.className ? "string" == typeof n.className ? l.className = n.className.split(/\\s+/) : l.className = n.className : l.className = [], r = n.start || n.date, s = n.end, U(r) && (r = e.duration(r)), U(s) && (s = e.duration(s)), n.dow || e.isDuration(r) || e.isDuration(s)) l.start = r ? e.duration(r) : null, l.end = s ? e.duration(s) : null, l._recurring = !0;else {\n if (r && (r = F.moment(r), !r.isValid())) return !1;\n s && (s = F.moment(s), s.isValid() || (s = null)), o = n.allDay, void 0 === o && (o = J(i ? i.allDayDefault : void 0, F.options.allDayDefault)), I(r, s, o, l);\n }\n return F.normalizeEvent(l), l;\n }\n function I(t, e, n, i) {\n i.start = t, i.end = e, i.allDay = n, k(i), Wt(i);\n }\n function k(t) {\n M(t), t.end && !t.end.isAfter(t.start) && (t.end = null), t.end || (F.options.forceEventDuration ? t.end = F.getDefaultEventEnd(t.allDay, t.start) : t.end = null);\n }\n function M(t) {\n null == t.allDay && (t.allDay = !(t.start.hasTime() || t.end && t.end.hasTime())), t.allDay ? (t.start.stripTime(), t.end && t.end.stripTime()) : (t.start.hasTime() || (t.start = F.applyTimezone(t.start.time(0))), t.end && !t.end.hasTime() && (t.end = F.applyTimezone(t.end.time(0))));\n }\n function L(e, n, i) {\n var r,\n s,\n o,\n l,\n a,\n u,\n d,\n c,\n h,\n f = [];\n if (n = n || O, i = i || V, e) if (e._recurring) {\n if (s = e.dow) for (r = {}, o = 0; o < s.length; o++) r[s[o]] = !0;\n for (l = n.clone().stripTime(); l.isBefore(i);) r && !r[l.day()] || (a = e.start, u = e.end, d = l.clone(), c = null, a && (d = d.time(a)), u && (c = l.clone().time(u)), h = t.extend({}, e), I(d, c, !a && !u, h), f.push(h)), l.add(1, "days");\n } else f.push(e);\n return f;\n }\n function B(e, n, i) {\n function r(t, e) {\n return i ? A(t, e, i) : n.allDay ? G(t, e) : N(t, e);\n }\n var s,\n o,\n l,\n a,\n u,\n d,\n c = {};\n return n = n || {}, n.start || (n.start = e.start.clone()), void 0 === n.end && (n.end = e.end ? e.end.clone() : null), null == n.allDay && (n.allDay = e.allDay), k(n), s = {\n start: e._start.clone(),\n end: e._end ? e._end.clone() : F.getDefaultEventEnd(e._allDay, e._start),\n allDay: n.allDay\n }, k(s), o = null !== e._end && null === n.end, l = r(n.start, s.start), n.end ? (a = r(n.end, s.end), u = a.subtract(l)) : u = null, t.each(n, function (t, e) {\n b(t) && void 0 !== e && (c[t] = e);\n }), d = z(T(e._id), o, n.allDay, l, u, c), {\n dateDelta: l,\n durationDelta: u,\n undo: d\n };\n }\n function z(e, n, i, r, s, o) {\n var l = F.getIsAmbigTimezone(),\n a = [];\n return r && !r.valueOf() && (r = null), s && !s.valueOf() && (s = null), t.each(e, function (e, u) {\n var d, c;\n d = {\n start: u.start.clone(),\n end: u.end ? u.end.clone() : null,\n allDay: u.allDay\n }, t.each(o, function (t) {\n d[t] = u[t];\n }), c = {\n start: u._start,\n end: u._end,\n allDay: i\n }, k(c), n ? c.end = null : s && !c.end && (c.end = F.getDefaultEventEnd(c.allDay, c.start)), r && (c.start.add(r), c.end && c.end.add(r)), s && c.end.add(s), l && !c.allDay && (r || s) && (c.start.stripZone(), c.end && c.end.stripZone()), t.extend(u, o, c), Wt(u), a.push(function () {\n t.extend(u, d), Wt(u);\n });\n }), function () {\n for (var t = 0; t < a.length; t++) a[t]();\n };\n }\n var F = this;\n F.isFetchNeeded = n, F.fetchEvents = i, F.fetchEventSources = r, F.getEventSources = g, F.getEventSourceById = p, F.getEventSourcesByMatchArray = v, F.getEventSourcesByMatch = m, F.addEventSource = u, F.removeEventSource = c, F.removeEventSources = h, F.updateEvent = E, F.renderEvent = C, F.removeEvents = H, F.clientEvents = T, F.mutateEvent = B, F.normalizeEventDates = k, F.normalizeEventTimes = M;\n var O,\n V,\n P = F.reportEvents,\n _ = {\n events: []\n },\n Y = [_],\n W = 0,\n j = [];\n t.each((F.options.events ? [F.options.events] : []).concat(F.options.eventSources || []), function (t, e) {\n var n = d(e);\n n && Y.push(n);\n }), F.rezoneArrayEventSources = function () {\n var e, n, i;\n for (e = 0; e < Y.length; e++) if (n = Y[e].events, t.isArray(n)) for (i = 0; i < n.length; i++) x(n[i]);\n }, F.buildEventFromInput = R, F.expandEvent = L, F.getEventCache = function () {\n return j;\n };\n }\n function Wt(t) {\n t._allDay = t.allDay, t._start = t.start.clone(), t._end = t.end ? t.end.clone() : null;\n }\n var jt = t.fullCalendar = {\n version: "3.0.1",\n internalApiVersion: 6\n },\n Ut = jt.views = {};\n t.fn.fullCalendar = function (e) {\n var n = Array.prototype.slice.call(arguments, 1),\n i = this;\n return this.each(function (r, s) {\n var o,\n l = t(s),\n a = l.data("fullCalendar");\n "string" == typeof e ? a && t.isFunction(a[e]) && (o = a[e].apply(a, n), r || (i = o), "destroy" === e && l.removeData("fullCalendar")) : a || (a = new Ee(l, e), l.data("fullCalendar", a), a.render());\n }), i;\n };\n var qt = ["header", "buttonText", "buttonIcons", "themeButtonIcons"];\n jt.intersectRanges = F, jt.applyAll = Q, jt.debounce = at, jt.isInt = ot, jt.htmlEscape = tt, jt.cssToStr = nt, jt.proxy = lt, jt.capitaliseFirstLetter = rt, jt.getOuterRect = h, jt.getClientRect = f, jt.getContentRect = g, jt.getScrollbarWidths = p;\n var Zt = null;\n jt.preventDefault = C, jt.intersectRects = x, jt.parseFieldSpecs = M, jt.compareByFieldSpecs = L, jt.compareByFieldSpec = B, jt.flexibleCompare = z, jt.computeIntervalUnit = O, jt.divideRangeByDuration = P, jt.divideDurationByDuration = _, jt.multiplyDuration = Y, jt.durationHasTime = W;\n var $t = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"],\n Xt = ["year", "month", "week", "day", "hour", "minute", "second", "millisecond"];\n jt.log = function () {\n var t = window.console;\n if (t && t.log) return t.log.apply(t, arguments);\n }, jt.warn = function () {\n var t = window.console;\n return t && t.warn ? t.warn.apply(t, arguments) : jt.log.apply(jt, arguments);\n };\n var Kt = {}.hasOwnProperty,\n Qt = /^\\s*\\d{4}-\\d\\d$/,\n Jt = /^\\s*\\d{4}-(?:(\\d\\d-\\d\\d)|(W\\d\\d$)|(W\\d\\d-\\d)|(\\d\\d\\d))((T| )(\\d\\d(:\\d\\d(:\\d\\d(\\.\\d+)?)?)?)?)?$/,\n te = e.fn,\n ee = t.extend({}, te),\n ne = e.momentProperties;\n ne.push("_fullCalendar"), ne.push("_ambigTime"), ne.push("_ambigZone"), jt.moment = function () {\n return dt(arguments);\n }, jt.moment.utc = function () {\n var t = dt(arguments, !0);\n return t.hasTime() && t.utc(), t;\n }, jt.moment.parseZone = function () {\n return dt(arguments, !0, !0);\n }, te.week = te.weeks = function (t) {\n var e = this._locale._fullCalendar_weekCalc;\n return null == t && "function" == typeof e ? e(this) : "ISO" === e ? ee.isoWeek.apply(this, arguments) : ee.week.apply(this, arguments);\n }, te.time = function (t) {\n if (!this._fullCalendar) return ee.time.apply(this, arguments);\n if (null == t) return e.duration({\n hours: this.hours(),\n minutes: this.minutes(),\n seconds: this.seconds(),\n milliseconds: this.milliseconds()\n });\n this._ambigTime = !1, e.isDuration(t) || e.isMoment(t) || (t = e.duration(t));\n var n = 0;\n return e.isDuration(t) && (n = 24 * Math.floor(t.asDays())), this.hours(n + t.hours()).minutes(t.minutes()).seconds(t.seconds()).milliseconds(t.milliseconds());\n }, te.stripTime = function () {\n return this._ambigTime || (this.utc(!0), this.set({\n hours: 0,\n minutes: 0,\n seconds: 0,\n ms: 0\n }), this._ambigTime = !0, this._ambigZone = !0), this;\n }, te.hasTime = function () {\n return !this._ambigTime;\n }, te.stripZone = function () {\n var t;\n return this._ambigZone || (t = this._ambigTime, this.utc(!0), this._ambigTime = t || !1, this._ambigZone = !0), this;\n }, te.hasZone = function () {\n return !this._ambigZone;\n }, te.local = function (t) {\n return ee.local.call(this, this._ambigZone || t), this._ambigTime = !1, this._ambigZone = !1, this;\n }, te.utc = function (t) {\n return ee.utc.call(this, t), this._ambigTime = !1, this._ambigZone = !1, this;\n }, te.utcOffset = function (t) {\n return null != t && (this._ambigTime = !1, this._ambigZone = !1), ee.utcOffset.apply(this, arguments);\n }, te.format = function () {\n return this._fullCalendar && arguments[0] ? ht(this, arguments[0]) : this._ambigTime ? ct(this, "YYYY-MM-DD") : this._ambigZone ? ct(this, "YYYY-MM-DD[T]HH:mm:ss") : ee.format.apply(this, arguments);\n }, te.toISOString = function () {\n return this._ambigTime ? ct(this, "YYYY-MM-DD") : this._ambigZone ? ct(this, "YYYY-MM-DD[T]HH:mm:ss") : ee.toISOString.apply(this, arguments);\n };\n var ie = {\n t: function t(_t2) {\n return ct(_t2, "a").charAt(0);\n },\n T: function T(t) {\n return ct(t, "A").charAt(0);\n }\n };\n jt.formatRange = pt;\n var re = {\n Y: "year",\n M: "month",\n D: "day",\n d: "day",\n A: "second",\n a: "second",\n T: "second",\n t: "second",\n H: "second",\n h: "second",\n m: "second",\n s: "second"\n },\n se = {},\n oe = {\n Y: {\n value: 1,\n unit: "year"\n },\n M: {\n value: 2,\n unit: "month"\n },\n W: {\n value: 3,\n unit: "week"\n },\n w: {\n value: 3,\n unit: "week"\n },\n D: {\n value: 4,\n unit: "day"\n },\n d: {\n value: 4,\n unit: "day"\n }\n };\n jt.queryMostGranularFormatUnit = function (t) {\n var e,\n n,\n i,\n r,\n s = yt(t);\n for (e = 0; e < s.length; e++) n = s[e], n.token && (i = oe[n.token.charAt(0)], i && (!r || i.value > r.value) && (r = i));\n return r ? r.unit : null;\n }, jt.Class = wt, wt.extend = function () {\n var t,\n e,\n n = arguments.length;\n for (t = 0; t < n; t++) e = arguments[t], t < n - 1 && Dt(this, e);\n return Et(this, e || {});\n }, wt.mixin = function (t) {\n Dt(this, t);\n };\n var le = jt.EmitterMixin = {\n on: function on(e, n) {\n var i = function i(t, e) {\n return n.apply(e.context || this, e.args || []);\n };\n return n.guid || (n.guid = t.guid++), i.guid = n.guid, t(this).on(e, i), this;\n },\n off: function off(e, n) {\n return t(this).off(e, n), this;\n },\n trigger: function trigger(e) {\n var n = Array.prototype.slice.call(arguments, 1);\n return t(this).triggerHandler(e, {\n args: n\n }), this;\n },\n triggerWith: function triggerWith(e, n, i) {\n return t(this).triggerHandler(e, {\n context: n,\n args: i\n }), this;\n }\n },\n ae = jt.ListenerMixin = function () {\n var e = 0,\n n = {\n listenerId: null,\n listenTo: function listenTo(e, n, i) {\n if ("object" == _typeof(n)) for (var r in n) n.hasOwnProperty(r) && this.listenTo(e, r, n[r]);else "string" == typeof n && e.on(n + "." + this.getListenerNamespace(), t.proxy(i, this));\n },\n stopListeningTo: function stopListeningTo(t, e) {\n t.off((e || "") + "." + this.getListenerNamespace());\n },\n getListenerNamespace: function getListenerNamespace() {\n return null == this.listenerId && (this.listenerId = e++), "_listener" + this.listenerId;\n }\n };\n return n;\n }(),\n ue = {\n isIgnoringMouse: !1,\n delayUnignoreMouse: null,\n initMouseIgnoring: function initMouseIgnoring(t) {\n this.delayUnignoreMouse = at(lt(this, "unignoreMouse"), t || 1e3);\n },\n tempIgnoreMouse: function tempIgnoreMouse() {\n this.isIgnoringMouse = !0, this.delayUnignoreMouse();\n },\n unignoreMouse: function unignoreMouse() {\n this.isIgnoringMouse = !1;\n }\n },\n de = wt.extend(ae, {\n isHidden: !0,\n options: null,\n el: null,\n margin: 10,\n constructor: function constructor(t) {\n this.options = t || {};\n },\n show: function show() {\n this.isHidden && (this.el || this.render(), this.el.show(), this.position(), this.isHidden = !1, this.trigger("show"));\n },\n hide: function hide() {\n this.isHidden || (this.el.hide(), this.isHidden = !0, this.trigger("hide"));\n },\n render: function render() {\n var e = this,\n n = this.options;\n this.el = t(\'<div class="fc-popover"/>\').addClass(n.className || "").css({\n top: 0,\n left: 0\n }).append(n.content).appendTo(n.parentEl), this.el.on("click", ".fc-close", function () {\n e.hide();\n }), n.autoHide && this.listenTo(t(document), "mousedown", this.documentMousedown);\n },\n documentMousedown: function documentMousedown(e) {\n this.el && !t(e.target).closest(this.el).length && this.hide();\n },\n removeElement: function removeElement() {\n this.hide(), this.el && (this.el.remove(), this.el = null), this.stopListeningTo(t(document), "mousedown");\n },\n position: function position() {\n var e,\n n,\n i,\n r,\n s,\n o = this.options,\n l = this.el.offsetParent().offset(),\n a = this.el.outerWidth(),\n u = this.el.outerHeight(),\n d = t(window),\n h = c(this.el);\n r = o.top || 0, s = void 0 !== o.left ? o.left : void 0 !== o.right ? o.right - a : 0, h.is(window) || h.is(document) ? (h = d, e = 0, n = 0) : (i = h.offset(), e = i.top, n = i.left), e += d.scrollTop(), n += d.scrollLeft(), o.viewportConstrain !== !1 && (r = Math.min(r, e + h.outerHeight() - u - this.margin), r = Math.max(r, e + this.margin), s = Math.min(s, n + h.outerWidth() - a - this.margin), s = Math.max(s, n + this.margin)), this.el.css({\n top: r - l.top,\n left: s - l.left\n });\n },\n trigger: function trigger(t) {\n this.options[t] && this.options[t].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n }),\n ce = jt.CoordCache = wt.extend({\n els: null,\n forcedOffsetParentEl: null,\n origin: null,\n boundingRect: null,\n isHorizontal: !1,\n isVertical: !1,\n lefts: null,\n rights: null,\n tops: null,\n bottoms: null,\n constructor: function constructor(e) {\n this.els = t(e.els), this.isHorizontal = e.isHorizontal, this.isVertical = e.isVertical, this.forcedOffsetParentEl = e.offsetParent ? t(e.offsetParent) : null;\n },\n build: function build() {\n var t = this.forcedOffsetParentEl || this.els.eq(0).offsetParent();\n this.origin = t.offset(), this.boundingRect = this.queryBoundingRect(), this.isHorizontal && this.buildElHorizontals(), this.isVertical && this.buildElVerticals();\n },\n clear: function clear() {\n this.origin = null, this.boundingRect = null, this.lefts = null, this.rights = null, this.tops = null, this.bottoms = null;\n },\n ensureBuilt: function ensureBuilt() {\n this.origin || this.build();\n },\n buildElHorizontals: function buildElHorizontals() {\n var e = [],\n n = [];\n this.els.each(function (i, r) {\n var s = t(r),\n o = s.offset().left,\n l = s.outerWidth();\n e.push(o), n.push(o + l);\n }), this.lefts = e, this.rights = n;\n },\n buildElVerticals: function buildElVerticals() {\n var e = [],\n n = [];\n this.els.each(function (i, r) {\n var s = t(r),\n o = s.offset().top,\n l = s.outerHeight();\n e.push(o), n.push(o + l);\n }), this.tops = e, this.bottoms = n;\n },\n getHorizontalIndex: function getHorizontalIndex(t) {\n this.ensureBuilt();\n var e,\n n = this.lefts,\n i = this.rights,\n r = n.length;\n for (e = 0; e < r; e++) if (t >= n[e] && t < i[e]) return e;\n },\n getVerticalIndex: function getVerticalIndex(t) {\n this.ensureBuilt();\n var e,\n n = this.tops,\n i = this.bottoms,\n r = n.length;\n for (e = 0; e < r; e++) if (t >= n[e] && t < i[e]) return e;\n },\n getLeftOffset: function getLeftOffset(t) {\n return this.ensureBuilt(), this.lefts[t];\n },\n getLeftPosition: function getLeftPosition(t) {\n return this.ensureBuilt(), this.lefts[t] - this.origin.left;\n },\n getRightOffset: function getRightOffset(t) {\n return this.ensureBuilt(), this.rights[t];\n },\n getRightPosition: function getRightPosition(t) {\n return this.ensureBuilt(), this.rights[t] - this.origin.left;\n },\n getWidth: function getWidth(t) {\n return this.ensureBuilt(), this.rights[t] - this.lefts[t];\n },\n getTopOffset: function getTopOffset(t) {\n return this.ensureBuilt(), this.tops[t];\n },\n getTopPosition: function getTopPosition(t) {\n return this.ensureBuilt(), this.tops[t] - this.origin.top;\n },\n getBottomOffset: function getBottomOffset(t) {\n return this.ensureBuilt(), this.bottoms[t];\n },\n getBottomPosition: function getBottomPosition(t) {\n return this.ensureBuilt(), this.bottoms[t] - this.origin.top;\n },\n getHeight: function getHeight(t) {\n return this.ensureBuilt(), this.bottoms[t] - this.tops[t];\n },\n queryBoundingRect: function queryBoundingRect() {\n var t = c(this.els.eq(0));\n if (!t.is(document)) return f(t);\n },\n isPointInBounds: function isPointInBounds(t, e) {\n return this.isLeftInBounds(t) && this.isTopInBounds(e);\n },\n isLeftInBounds: function isLeftInBounds(t) {\n return !this.boundingRect || t >= this.boundingRect.left && t < this.boundingRect.right;\n },\n isTopInBounds: function isTopInBounds(t) {\n return !this.boundingRect || t >= this.boundingRect.top && t < this.boundingRect.bottom;\n }\n }),\n he = jt.DragListener = wt.extend(ae, ue, {\n options: null,\n subjectEl: null,\n originX: null,\n originY: null,\n scrollEl: null,\n isInteracting: !1,\n isDistanceSurpassed: !1,\n isDelayEnded: !1,\n isDragging: !1,\n isTouch: !1,\n delay: null,\n delayTimeoutId: null,\n minDistance: null,\n handleTouchScrollProxy: null,\n constructor: function constructor(t) {\n this.options = t || {}, this.handleTouchScrollProxy = lt(this, "handleTouchScroll"), this.initMouseIgnoring(500);\n },\n startInteraction: function startInteraction(e, n) {\n var i = D(e);\n if ("mousedown" === e.type) {\n if (this.isIgnoringMouse) return;\n if (!S(e)) return;\n e.preventDefault();\n }\n this.isInteracting || (n = n || {}, this.delay = J(n.delay, this.options.delay, 0), this.minDistance = J(n.distance, this.options.distance, 0), this.subjectEl = this.options.subjectEl, this.isInteracting = !0, this.isTouch = i, this.isDelayEnded = !1, this.isDistanceSurpassed = !1, this.originX = w(e), this.originY = E(e), this.scrollEl = c(t(e.target)), this.bindHandlers(), this.initAutoScroll(), this.handleInteractionStart(e), this.startDelay(e), this.minDistance || this.handleDistanceSurpassed(e));\n },\n handleInteractionStart: function handleInteractionStart(t) {\n this.trigger("interactionStart", t);\n },\n endInteraction: function endInteraction(t, e) {\n this.isInteracting && (this.endDrag(t), this.delayTimeoutId && (clearTimeout(this.delayTimeoutId), this.delayTimeoutId = null), this.destroyAutoScroll(), this.unbindHandlers(), this.isInteracting = !1, this.handleInteractionEnd(t, e), this.isTouch && this.tempIgnoreMouse());\n },\n handleInteractionEnd: function handleInteractionEnd(t, e) {\n this.trigger("interactionEnd", t, e || !1);\n },\n bindHandlers: function bindHandlers() {\n var e = this,\n n = 1;\n this.isTouch ? (this.listenTo(t(document), {\n touchmove: this.handleTouchMove,\n touchend: this.endInteraction,\n touchcancel: this.endInteraction,\n touchstart: function touchstart(t) {\n n ? n-- : e.endInteraction(t, !0);\n }\n }), !H(this.handleTouchScrollProxy) && this.scrollEl && this.listenTo(this.scrollEl, "scroll", this.handleTouchScroll)) : this.listenTo(t(document), {\n mousemove: this.handleMouseMove,\n mouseup: this.endInteraction\n }), this.listenTo(t(document), {\n selectstart: C,\n contextmenu: C\n });\n },\n unbindHandlers: function unbindHandlers() {\n this.stopListeningTo(t(document)), T(this.handleTouchScrollProxy), this.scrollEl && this.stopListeningTo(this.scrollEl, "scroll");\n },\n startDrag: function startDrag(t, e) {\n this.startInteraction(t, e), this.isDragging || (this.isDragging = !0, this.handleDragStart(t));\n },\n handleDragStart: function handleDragStart(t) {\n this.trigger("dragStart", t);\n },\n handleMove: function handleMove(t) {\n var e,\n n = w(t) - this.originX,\n i = E(t) - this.originY,\n r = this.minDistance;\n this.isDistanceSurpassed || (e = n * n + i * i, e >= r * r && this.handleDistanceSurpassed(t)), this.isDragging && this.handleDrag(n, i, t);\n },\n handleDrag: function handleDrag(t, e, n) {\n this.trigger("drag", t, e, n), this.updateAutoScroll(n);\n },\n endDrag: function endDrag(t) {\n this.isDragging && (this.isDragging = !1, this.handleDragEnd(t));\n },\n handleDragEnd: function handleDragEnd(t) {\n this.trigger("dragEnd", t);\n },\n startDelay: function startDelay(t) {\n var e = this;\n this.delay ? this.delayTimeoutId = setTimeout(function () {\n e.handleDelayEnd(t);\n }, this.delay) : this.handleDelayEnd(t);\n },\n handleDelayEnd: function handleDelayEnd(t) {\n this.isDelayEnded = !0, this.isDistanceSurpassed && this.startDrag(t);\n },\n handleDistanceSurpassed: function handleDistanceSurpassed(t) {\n this.isDistanceSurpassed = !0, this.isDelayEnded && this.startDrag(t);\n },\n handleTouchMove: function handleTouchMove(t) {\n this.isDragging && t.preventDefault(), this.handleMove(t);\n },\n handleMouseMove: function handleMouseMove(t) {\n this.handleMove(t);\n },\n handleTouchScroll: function handleTouchScroll(t) {\n this.isDragging || this.endInteraction(t, !0);\n },\n trigger: function trigger(t) {\n this.options[t] && this.options[t].apply(this, Array.prototype.slice.call(arguments, 1)), this["_" + t] && this["_" + t].apply(this, Array.prototype.slice.call(arguments, 1));\n }\n });\n he.mixin({\n isAutoScroll: !1,\n scrollBounds: null,\n scrollTopVel: null,\n scrollLeftVel: null,\n scrollIntervalId: null,\n scrollSensitivity: 30,\n scrollSpeed: 200,\n scrollIntervalMs: 50,\n initAutoScroll: function initAutoScroll() {\n var t = this.scrollEl;\n this.isAutoScroll = this.options.scroll && t && !t.is(window) && !t.is(document), this.isAutoScroll && this.listenTo(t, "scroll", at(this.handleDebouncedScroll, 100));\n },\n destroyAutoScroll: function destroyAutoScroll() {\n this.endAutoScroll(), this.isAutoScroll && this.stopListeningTo(this.scrollEl, "scroll");\n },\n computeScrollBounds: function computeScrollBounds() {\n this.isAutoScroll && (this.scrollBounds = h(this.scrollEl));\n },\n updateAutoScroll: function updateAutoScroll(t) {\n var e,\n n,\n i,\n r,\n s = this.scrollSensitivity,\n o = this.scrollBounds,\n l = 0,\n a = 0;\n o && (e = (s - (E(t) - o.top)) / s, n = (s - (o.bottom - E(t))) / s, i = (s - (w(t) - o.left)) / s, r = (s - (o.right - w(t))) / s, e >= 0 && e <= 1 ? l = e * this.scrollSpeed * -1 : n >= 0 && n <= 1 && (l = n * this.scrollSpeed), i >= 0 && i <= 1 ? a = i * this.scrollSpeed * -1 : r >= 0 && r <= 1 && (a = r * this.scrollSpeed)), this.setScrollVel(l, a);\n },\n setScrollVel: function setScrollVel(t, e) {\n this.scrollTopVel = t, this.scrollLeftVel = e, this.constrainScrollVel(), !this.scrollTopVel && !this.scrollLeftVel || this.scrollIntervalId || (this.scrollIntervalId = setInterval(lt(this, "scrollIntervalFunc"), this.scrollIntervalMs));\n },\n constrainScrollVel: function constrainScrollVel() {\n var t = this.scrollEl;\n this.scrollTopVel < 0 ? t.scrollTop() <= 0 && (this.scrollTopVel = 0) : this.scrollTopVel > 0 && t.scrollTop() + t[0].clientHeight >= t[0].scrollHeight && (this.scrollTopVel = 0), this.scrollLeftVel < 0 ? t.scrollLeft() <= 0 && (this.scrollLeftVel = 0) : this.scrollLeftVel > 0 && t.scrollLeft() + t[0].clientWidth >= t[0].scrollWidth && (this.scrollLeftVel = 0);\n },\n scrollIntervalFunc: function scrollIntervalFunc() {\n var t = this.scrollEl,\n e = this.scrollIntervalMs / 1e3;\n this.scrollTopVel && t.scrollTop(t.scrollTop() + this.scrollTopVel * e), this.scrollLeftVel && t.scrollLeft(t.scrollLeft() + this.scrollLeftVel * e), this.constrainScrollVel(), this.scrollTopVel || this.scrollLeftVel || this.endAutoScroll();\n },\n endAutoScroll: function endAutoScroll() {\n this.scrollIntervalId && (clearInterval(this.scrollIntervalId), this.scrollIntervalId = null, this.handleScrollEnd());\n },\n handleDebouncedScroll: function handleDebouncedScroll() {\n this.scrollIntervalId || this.handleScrollEnd();\n },\n handleScrollEnd: function handleScrollEnd() {}\n });\n var fe = he.extend({\n component: null,\n origHit: null,\n hit: null,\n coordAdjust: null,\n constructor: function constructor(t, e) {\n he.call(this, e), this.component = t;\n },\n handleInteractionStart: function handleInteractionStart(t) {\n var e,\n n,\n i,\n r = this.subjectEl;\n this.computeCoords(), t ? (n = {\n left: w(t),\n top: E(t)\n }, i = n, r && (e = h(r), i = R(i, e)), this.origHit = this.queryHit(i.left, i.top), r && this.options.subjectCenter && (this.origHit && (e = x(this.origHit, e) || e), i = I(e)), this.coordAdjust = k(i, n)) : (this.origHit = null, this.coordAdjust = null), he.prototype.handleInteractionStart.apply(this, arguments);\n },\n computeCoords: function computeCoords() {\n this.component.prepareHits(), this.computeScrollBounds();\n },\n handleDragStart: function handleDragStart(t) {\n var e;\n he.prototype.handleDragStart.apply(this, arguments), e = this.queryHit(w(t), E(t)), e && this.handleHitOver(e);\n },\n handleDrag: function handleDrag(t, e, n) {\n var i;\n he.prototype.handleDrag.apply(this, arguments), i = this.queryHit(w(n), E(n)), bt(i, this.hit) || (this.hit && this.handleHitOut(), i && this.handleHitOver(i));\n },\n handleDragEnd: function handleDragEnd() {\n this.handleHitDone(), he.prototype.handleDragEnd.apply(this, arguments);\n },\n handleHitOver: function handleHitOver(t) {\n var e = bt(t, this.origHit);\n this.hit = t, this.trigger("hitOver", this.hit, e, this.origHit);\n },\n handleHitOut: function handleHitOut() {\n this.hit && (this.trigger("hitOut", this.hit), this.handleHitDone(), this.hit = null);\n },\n handleHitDone: function handleHitDone() {\n this.hit && this.trigger("hitDone", this.hit);\n },\n handleInteractionEnd: function handleInteractionEnd() {\n he.prototype.handleInteractionEnd.apply(this, arguments), this.origHit = null, this.hit = null, this.component.releaseHits();\n },\n handleScrollEnd: function handleScrollEnd() {\n he.prototype.handleScrollEnd.apply(this, arguments), this.computeCoords();\n },\n queryHit: function queryHit(t, e) {\n return this.coordAdjust && (t += this.coordAdjust.left, e += this.coordAdjust.top), this.component.queryHit(t, e);\n }\n }),\n ge = wt.extend(ae, {\n options: null,\n sourceEl: null,\n el: null,\n parentEl: null,\n top0: null,\n left0: null,\n y0: null,\n x0: null,\n topDelta: null,\n leftDelta: null,\n isFollowing: !1,\n isHidden: !1,\n isAnimating: !1,\n constructor: function constructor(e, n) {\n this.options = n = n || {}, this.sourceEl = e, this.parentEl = n.parentEl ? t(n.parentEl) : e.parent();\n },\n start: function start(e) {\n this.isFollowing || (this.isFollowing = !0, this.y0 = E(e), this.x0 = w(e), this.topDelta = 0, this.leftDelta = 0, this.isHidden || this.updatePosition(), D(e) ? this.listenTo(t(document), "touchmove", this.handleMove) : this.listenTo(t(document), "mousemove", this.handleMove));\n },\n stop: function stop(e, n) {\n function i() {\n r.isAnimating = !1, r.removeElement(), r.top0 = r.left0 = null, n && n();\n }\n var r = this,\n s = this.options.revertDuration;\n this.isFollowing && !this.isAnimating && (this.isFollowing = !1, this.stopListeningTo(t(document)), e && s && !this.isHidden ? (this.isAnimating = !0, this.el.animate({\n top: this.top0,\n left: this.left0\n }, {\n duration: s,\n complete: i\n })) : i());\n },\n getEl: function getEl() {\n var t = this.el;\n return t || (t = this.el = this.sourceEl.clone().addClass(this.options.additionalClass || "").css({\n position: "absolute",\n visibility: "",\n display: this.isHidden ? "none" : "",\n margin: 0,\n right: "auto",\n bottom: "auto",\n width: this.sourceEl.width(),\n height: this.sourceEl.height(),\n opacity: this.options.opacity || "",\n zIndex: this.options.zIndex\n }), t.addClass("fc-unselectable"), t.appendTo(this.parentEl)), t;\n },\n removeElement: function removeElement() {\n this.el && (this.el.remove(), this.el = null);\n },\n updatePosition: function updatePosition() {\n var t, e;\n this.getEl(), null === this.top0 && (t = this.sourceEl.offset(), e = this.el.offsetParent().offset(), this.top0 = t.top - e.top, this.left0 = t.left - e.left), this.el.css({\n top: this.top0 + this.topDelta,\n left: this.left0 + this.leftDelta\n });\n },\n handleMove: function handleMove(t) {\n this.topDelta = E(t) - this.y0, this.leftDelta = w(t) - this.x0, this.isHidden || this.updatePosition();\n },\n hide: function hide() {\n this.isHidden || (this.isHidden = !0, this.el && this.el.hide());\n },\n show: function show() {\n this.isHidden && (this.isHidden = !1, this.updatePosition(), this.getEl().show());\n }\n }),\n pe = jt.Grid = wt.extend(ae, ue, {\n hasDayInteractions: !0,\n view: null,\n isRTL: null,\n start: null,\n end: null,\n el: null,\n elsByFill: null,\n eventTimeFormat: null,\n displayEventTime: null,\n displayEventEnd: null,\n minResizeDuration: null,\n largeUnit: null,\n dayDragListener: null,\n segDragListener: null,\n segResizeListener: null,\n externalDragListener: null,\n constructor: function constructor(t) {\n this.view = t, this.isRTL = t.opt("isRTL"), this.elsByFill = {}, this.dayDragListener = this.buildDayDragListener(), this.initMouseIgnoring();\n },\n computeEventTimeFormat: function computeEventTimeFormat() {\n return this.view.opt("smallTimeFormat");\n },\n computeDisplayEventTime: function computeDisplayEventTime() {\n return !0;\n },\n computeDisplayEventEnd: function computeDisplayEventEnd() {\n return !0;\n },\n setRange: function setRange(t) {\n this.start = t.start.clone(), this.end = t.end.clone(), this.rangeUpdated(), this.processRangeOptions();\n },\n rangeUpdated: function rangeUpdated() {},\n processRangeOptions: function processRangeOptions() {\n var t,\n e,\n n = this.view;\n this.eventTimeFormat = n.opt("eventTimeFormat") || n.opt("timeFormat") || this.computeEventTimeFormat(), t = n.opt("displayEventTime"), null == t && (t = this.computeDisplayEventTime()), e = n.opt("displayEventEnd"), null == e && (e = this.computeDisplayEventEnd()), this.displayEventTime = t, this.displayEventEnd = e;\n },\n spanToSegs: function spanToSegs(t) {},\n diffDates: function diffDates(t, e) {\n return this.largeUnit ? A(t, e, this.largeUnit) : N(t, e);\n },\n prepareHits: function prepareHits() {},\n releaseHits: function releaseHits() {},\n queryHit: function queryHit(t, e) {},\n getHitSpan: function getHitSpan(t) {},\n getHitEl: function getHitEl(t) {},\n setElement: function setElement(t) {\n this.el = t, this.hasDayInteractions && (b(t), this.bindDayHandler("touchstart", this.dayTouchStart), this.bindDayHandler("mousedown", this.dayMousedown)), this.bindSegHandlers(), this.bindGlobalHandlers();\n },\n bindDayHandler: function bindDayHandler(e, n) {\n var i = this;\n this.el.on(e, function (e) {\n if (!t(e.target).is(i.segSelector + "," + i.segSelector + " *,.fc-more,a[data-goto]")) return n.call(i, e);\n });\n },\n removeElement: function removeElement() {\n this.unbindGlobalHandlers(), this.clearDragListeners(), this.el.remove();\n },\n renderSkeleton: function renderSkeleton() {},\n renderDates: function renderDates() {},\n unrenderDates: function unrenderDates() {},\n bindGlobalHandlers: function bindGlobalHandlers() {\n this.listenTo(t(document), {\n dragstart: this.externalDragStart,\n sortstart: this.externalDragStart\n });\n },\n unbindGlobalHandlers: function unbindGlobalHandlers() {\n this.stopListeningTo(t(document));\n },\n dayMousedown: function dayMousedown(t) {\n this.isIgnoringMouse || this.dayDragListener.startInteraction(t, {});\n },\n dayTouchStart: function dayTouchStart(t) {\n var e = this.view;\n (e.isSelected || e.selectedEvent) && this.tempIgnoreMouse(), this.dayDragListener.startInteraction(t, {\n delay: this.view.opt("longPressDelay")\n });\n },\n buildDayDragListener: function buildDayDragListener() {\n var t,\n e,\n n = this,\n i = this.view,\n r = i.opt("selectable"),\n l = new fe(this, {\n scroll: i.opt("dragScroll"),\n interactionStart: function interactionStart() {\n t = l.origHit, e = null;\n },\n dragStart: function dragStart() {\n i.unselect();\n },\n hitOver: function hitOver(i, o, l) {\n l && (o || (t = null), r && (e = n.computeSelection(n.getHitSpan(l), n.getHitSpan(i)), e ? n.renderSelection(e) : e === !1 && s()));\n },\n hitOut: function hitOut() {\n t = null, e = null, n.unrenderSelection();\n },\n hitDone: function hitDone() {\n o();\n },\n interactionEnd: function interactionEnd(r, s) {\n s || (t && !n.isIgnoringMouse && i.triggerDayClick(n.getHitSpan(t), n.getHitEl(t), r), e && i.reportSelection(e, r));\n }\n });\n return l;\n },\n clearDragListeners: function clearDragListeners() {\n this.dayDragListener.endInteraction(), this.segDragListener && this.segDragListener.endInteraction(), this.segResizeListener && this.segResizeListener.endInteraction(), this.externalDragListener && this.externalDragListener.endInteraction();\n },\n renderEventLocationHelper: function renderEventLocationHelper(t, e) {\n var n = this.fabricateHelperEvent(t, e);\n return this.renderHelper(n, e);\n },\n fabricateHelperEvent: function fabricateHelperEvent(t, e) {\n var n = e ? Z(e.event) : {};\n return n.start = t.start.clone(), n.end = t.end ? t.end.clone() : null, n.allDay = null, this.view.calendar.normalizeEventDates(n), n.className = (n.className || []).concat("fc-helper"), e || (n.editable = !1), n;\n },\n renderHelper: function renderHelper(t, e) {},\n unrenderHelper: function unrenderHelper() {},\n renderSelection: function renderSelection(t) {\n this.renderHighlight(t);\n },\n unrenderSelection: function unrenderSelection() {\n this.unrenderHighlight();\n },\n computeSelection: function computeSelection(t, e) {\n var n = this.computeSelectionSpan(t, e);\n return !(n && !this.view.calendar.isSelectionSpanAllowed(n)) && n;\n },\n computeSelectionSpan: function computeSelectionSpan(t, e) {\n var n = [t.start, t.end, e.start, e.end];\n return n.sort(st), {\n start: n[0].clone(),\n end: n[3].clone()\n };\n },\n renderHighlight: function renderHighlight(t) {\n this.renderFill("highlight", this.spanToSegs(t));\n },\n unrenderHighlight: function unrenderHighlight() {\n this.unrenderFill("highlight");\n },\n highlightSegClasses: function highlightSegClasses() {\n return ["fc-highlight"];\n },\n renderBusinessHours: function renderBusinessHours() {},\n unrenderBusinessHours: function unrenderBusinessHours() {},\n getNowIndicatorUnit: function getNowIndicatorUnit() {},\n renderNowIndicator: function renderNowIndicator(t) {},\n unrenderNowIndicator: function unrenderNowIndicator() {},\n renderFill: function renderFill(t, e) {},\n unrenderFill: function unrenderFill(t) {\n var e = this.elsByFill[t];\n e && (e.remove(), delete this.elsByFill[t]);\n },\n renderFillSegEls: function renderFillSegEls(e, n) {\n var i,\n r = this,\n s = this[e + "SegEl"],\n o = "",\n l = [];\n if (n.length) {\n for (i = 0; i < n.length; i++) o += this.fillSegHtml(e, n[i]);\n t(o).each(function (e, i) {\n var o = n[e],\n a = t(i);\n s && (a = s.call(r, o, a)), a && (a = t(a), a.is(r.fillSegTag) && (o.el = a, l.push(o)));\n });\n }\n return l;\n },\n fillSegTag: "div",\n fillSegHtml: function fillSegHtml(t, e) {\n var n = this[t + "SegClasses"],\n i = this[t + "SegCss"],\n r = n ? n.call(this, e) : [],\n s = nt(i ? i.call(this, e) : {});\n return "<" + this.fillSegTag + (r.length ? \' class="\' + r.join(" ") + \'"\' : "") + (s ? \' style="\' + s + \'"\' : "") + " />";\n },\n getDayClasses: function getDayClasses(t) {\n var e = this.view,\n n = e.calendar.getNow(),\n i = ["fc-" + $t[t.day()]];\n return 1 == e.intervalDuration.as("months") && t.month() != e.intervalStart.month() && i.push("fc-other-month"), t.isSame(n, "day") ? i.push("fc-today", e.highlightStateClass) : t < n ? i.push("fc-past") : i.push("fc-future"), i;\n }\n });\n pe.mixin({\n segSelector: ".fc-event-container > *",\n mousedOverSeg: null,\n isDraggingSeg: !1,\n isResizingSeg: !1,\n isDraggingExternal: !1,\n segs: null,\n renderEvents: function renderEvents(t) {\n var e,\n n = [],\n i = [];\n for (e = 0; e < t.length; e++) (Tt(t[e]) ? n : i).push(t[e]);\n this.segs = [].concat(this.renderBgEvents(n), this.renderFgEvents(i));\n },\n renderBgEvents: function renderBgEvents(t) {\n var e = this.eventsToSegs(t);\n return this.renderBgSegs(e) || e;\n },\n renderFgEvents: function renderFgEvents(t) {\n var e = this.eventsToSegs(t);\n return this.renderFgSegs(e) || e;\n },\n unrenderEvents: function unrenderEvents() {\n this.handleSegMouseout(), this.clearDragListeners(), this.unrenderFgSegs(), this.unrenderBgSegs(), this.segs = null;\n },\n getEventSegs: function getEventSegs() {\n return this.segs || [];\n },\n renderFgSegs: function renderFgSegs(t) {},\n unrenderFgSegs: function unrenderFgSegs() {},\n renderFgSegEls: function renderFgSegEls(e, n) {\n var i,\n r = this.view,\n s = "",\n o = [];\n if (e.length) {\n for (i = 0; i < e.length; i++) s += this.fgSegHtml(e[i], n);\n t(s).each(function (n, i) {\n var s = e[n],\n l = r.resolveEventEl(s.event, t(i));\n l && (l.data("fc-seg", s), s.el = l, o.push(s));\n });\n }\n return o;\n },\n fgSegHtml: function fgSegHtml(t, e) {},\n renderBgSegs: function renderBgSegs(t) {\n return this.renderFill("bgEvent", t);\n },\n unrenderBgSegs: function unrenderBgSegs() {\n this.unrenderFill("bgEvent");\n },\n bgEventSegEl: function bgEventSegEl(t, e) {\n return this.view.resolveEventEl(t.event, e);\n },\n bgEventSegClasses: function bgEventSegClasses(t) {\n var e = t.event,\n n = e.source || {};\n return ["fc-bgevent"].concat(e.className, n.className || []);\n },\n bgEventSegCss: function bgEventSegCss(t) {\n return {\n "background-color": this.getSegSkinCss(t)["background-color"]\n };\n },\n businessHoursSegClasses: function businessHoursSegClasses(t) {\n return ["fc-nonbusiness", "fc-bgevent"];\n },\n buildBusinessHourSegs: function buildBusinessHourSegs(e) {\n var n = this.view.calendar.getCurrentBusinessHourEvents(e);\n return !n.length && this.view.calendar.options.businessHours && (n = [t.extend({}, Re, {\n start: this.view.end,\n end: this.view.end,\n dow: null\n })]), this.eventsToSegs(n);\n },\n bindSegHandlers: function bindSegHandlers() {\n this.bindSegHandlersToEl(this.el);\n },\n bindSegHandlersToEl: function bindSegHandlersToEl(t) {\n this.bindSegHandlerToEl(t, "touchstart", this.handleSegTouchStart), this.bindSegHandlerToEl(t, "touchend", this.handleSegTouchEnd), this.bindSegHandlerToEl(t, "mouseenter", this.handleSegMouseover), this.bindSegHandlerToEl(t, "mouseleave", this.handleSegMouseout), this.bindSegHandlerToEl(t, "mousedown", this.handleSegMousedown), this.bindSegHandlerToEl(t, "click", this.handleSegClick);\n },\n bindSegHandlerToEl: function bindSegHandlerToEl(e, n, i) {\n var r = this;\n e.on(n, this.segSelector, function (e) {\n var n = t(this).data("fc-seg");\n if (n && !r.isDraggingSeg && !r.isResizingSeg) return i.call(r, n, e);\n });\n },\n handleSegClick: function handleSegClick(t, e) {\n var n = this.view.trigger("eventClick", t.el[0], t.event, e);\n n === !1 && e.preventDefault();\n },\n handleSegMouseover: function handleSegMouseover(t, e) {\n this.isIgnoringMouse || this.mousedOverSeg || (this.mousedOverSeg = t, this.view.isEventResizable(t.event) && t.el.addClass("fc-allow-mouse-resize"), this.view.trigger("eventMouseover", t.el[0], t.event, e));\n },\n handleSegMouseout: function handleSegMouseout(t, e) {\n e = e || {}, this.mousedOverSeg && (t = t || this.mousedOverSeg, this.mousedOverSeg = null, this.view.isEventResizable(t.event) && t.el.removeClass("fc-allow-mouse-resize"), this.view.trigger("eventMouseout", t.el[0], t.event, e));\n },\n handleSegMousedown: function handleSegMousedown(t, e) {\n var n = this.startSegResize(t, e, {\n distance: 5\n });\n !n && this.view.isEventDraggable(t.event) && this.buildSegDragListener(t).startInteraction(e, {\n distance: 5\n });\n },\n handleSegTouchStart: function handleSegTouchStart(t, e) {\n var n,\n i = this.view,\n r = t.event,\n s = i.isEventSelected(r),\n o = i.isEventDraggable(r),\n l = i.isEventResizable(r),\n a = !1;\n s && l && (a = this.startSegResize(t, e)), a || !o && !l || (n = o ? this.buildSegDragListener(t) : this.buildSegSelectListener(t), n.startInteraction(e, {\n delay: s ? 0 : this.view.opt("longPressDelay")\n })), this.tempIgnoreMouse();\n },\n handleSegTouchEnd: function handleSegTouchEnd(t, e) {\n this.tempIgnoreMouse();\n },\n startSegResize: function startSegResize(e, n, i) {\n return !!t(n.target).is(".fc-resizer") && (this.buildSegResizeListener(e, t(n.target).is(".fc-start-resizer")).startInteraction(n, i), !0);\n },\n buildSegDragListener: function buildSegDragListener(t) {\n var e,\n n,\n i,\n r = this,\n l = this.view,\n a = l.calendar,\n u = t.el,\n d = t.event;\n if (this.segDragListener) return this.segDragListener;\n var c = this.segDragListener = new fe(l, {\n scroll: l.opt("dragScroll"),\n subjectEl: u,\n subjectCenter: !0,\n interactionStart: function interactionStart(i) {\n t.component = r, e = !1, n = new ge(t.el, {\n additionalClass: "fc-dragging",\n parentEl: l.el,\n opacity: c.isTouch ? null : l.opt("dragOpacity"),\n revertDuration: l.opt("dragRevertDuration"),\n zIndex: 2\n }), n.hide(), n.start(i);\n },\n dragStart: function dragStart(n) {\n c.isTouch && !l.isEventSelected(d) && l.selectEvent(d), e = !0, r.handleSegMouseout(t, n), r.segDragStart(t, n), l.hideEvent(d);\n },\n hitOver: function hitOver(e, o, u) {\n var h;\n t.hit && (u = t.hit), i = r.computeEventDrop(u.component.getHitSpan(u), e.component.getHitSpan(e), d), i && !a.isEventSpanAllowed(r.eventToSpan(i), d) && (s(), i = null), i && (h = l.renderDrag(i, t)) ? (h.addClass("fc-dragging"), c.isTouch || r.applyDragOpacity(h), n.hide()) : n.show(), o && (i = null);\n },\n hitOut: function hitOut() {\n l.unrenderDrag(), n.show(), i = null;\n },\n hitDone: function hitDone() {\n o();\n },\n interactionEnd: function interactionEnd(s) {\n delete t.component, n.stop(!i, function () {\n e && (l.unrenderDrag(), l.showEvent(d), r.segDragStop(t, s)), i && l.reportEventDrop(d, i, this.largeUnit, u, s);\n }), r.segDragListener = null;\n }\n });\n return c;\n },\n buildSegSelectListener: function buildSegSelectListener(t) {\n var e = this,\n n = this.view,\n i = t.event;\n if (this.segDragListener) return this.segDragListener;\n var r = this.segDragListener = new he({\n dragStart: function dragStart(t) {\n r.isTouch && !n.isEventSelected(i) && n.selectEvent(i);\n },\n interactionEnd: function interactionEnd(t) {\n e.segDragListener = null;\n }\n });\n return r;\n },\n segDragStart: function segDragStart(t, e) {\n this.isDraggingSeg = !0, this.view.trigger("eventDragStart", t.el[0], t.event, e, {});\n },\n segDragStop: function segDragStop(t, e) {\n this.isDraggingSeg = !1, this.view.trigger("eventDragStop", t.el[0], t.event, e, {});\n },\n computeEventDrop: function computeEventDrop(t, e, n) {\n var i,\n r,\n s = this.view.calendar,\n o = t.start,\n l = e.start;\n return o.hasTime() === l.hasTime() ? (i = this.diffDates(l, o), n.allDay && W(i) ? (r = {\n start: n.start.clone(),\n end: s.getEventEnd(n),\n allDay: !1\n }, s.normalizeEventTimes(r)) : r = Ht(n), r.start.add(i), r.end && r.end.add(i)) : r = {\n start: l.clone(),\n end: null,\n allDay: !l.hasTime()\n }, r;\n },\n applyDragOpacity: function applyDragOpacity(t) {\n var e = this.view.opt("dragOpacity");\n null != e && t.css("opacity", e);\n },\n externalDragStart: function externalDragStart(e, n) {\n var i,\n r,\n s = this.view;\n s.opt("droppable") && (i = t((n ? n.item : null) || e.target), r = s.opt("dropAccept"), (t.isFunction(r) ? r.call(i[0], i) : i.is(r)) && (this.isDraggingExternal || this.listenToExternalDrag(i, e, n)));\n },\n listenToExternalDrag: function listenToExternalDrag(t, e, n) {\n var i,\n r = this,\n l = this.view.calendar,\n a = Mt(t),\n u = r.externalDragListener = new fe(this, {\n interactionStart: function interactionStart() {\n r.isDraggingExternal = !0;\n },\n hitOver: function hitOver(t) {\n i = r.computeExternalDrop(t.component.getHitSpan(t), a), i && !l.isExternalSpanAllowed(r.eventToSpan(i), i, a.eventProps) && (s(), i = null), i && r.renderDrag(i);\n },\n hitOut: function hitOut() {\n i = null;\n },\n hitDone: function hitDone() {\n o(), r.unrenderDrag();\n },\n interactionEnd: function interactionEnd(e) {\n i && r.view.reportExternalDrop(a, i, t, e, n), r.isDraggingExternal = !1, r.externalDragListener = null;\n }\n });\n u.startDrag(e);\n },\n computeExternalDrop: function computeExternalDrop(t, e) {\n var n = this.view.calendar,\n i = {\n start: n.applyTimezone(t.start),\n end: null\n };\n return e.startTime && !i.start.hasTime() && i.start.time(e.startTime), e.duration && (i.end = i.start.clone().add(e.duration)), i;\n },\n renderDrag: function renderDrag(t, e) {},\n unrenderDrag: function unrenderDrag() {},\n buildSegResizeListener: function buildSegResizeListener(t, e) {\n var n,\n i,\n r = this,\n l = this.view,\n a = l.calendar,\n u = t.el,\n d = t.event,\n c = a.getEventEnd(d),\n h = this.segResizeListener = new fe(this, {\n scroll: l.opt("dragScroll"),\n subjectEl: u,\n interactionStart: function interactionStart() {\n n = !1;\n },\n dragStart: function dragStart(e) {\n n = !0, r.handleSegMouseout(t, e), r.segResizeStart(t, e);\n },\n hitOver: function hitOver(n, o, u) {\n var h = r.getHitSpan(u),\n f = r.getHitSpan(n);\n i = e ? r.computeEventStartResize(h, f, d) : r.computeEventEndResize(h, f, d), i && (a.isEventSpanAllowed(r.eventToSpan(i), d) ? i.start.isSame(d.start.clone().stripZone()) && i.end.isSame(c.clone().stripZone()) && (i = null) : (s(), i = null)), i && (l.hideEvent(d), r.renderEventResize(i, t));\n },\n hitOut: function hitOut() {\n i = null;\n },\n hitDone: function hitDone() {\n r.unrenderEventResize(), l.showEvent(d), o();\n },\n interactionEnd: function interactionEnd(e) {\n n && r.segResizeStop(t, e), i && l.reportEventResize(d, i, this.largeUnit, u, e), r.segResizeListener = null;\n }\n });\n return h;\n },\n segResizeStart: function segResizeStart(t, e) {\n this.isResizingSeg = !0, this.view.trigger("eventResizeStart", t.el[0], t.event, e, {});\n },\n segResizeStop: function segResizeStop(t, e) {\n this.isResizingSeg = !1, this.view.trigger("eventResizeStop", t.el[0], t.event, e, {});\n },\n computeEventStartResize: function computeEventStartResize(t, e, n) {\n return this.computeEventResize("start", t, e, n);\n },\n computeEventEndResize: function computeEventEndResize(t, e, n) {\n return this.computeEventResize("end", t, e, n);\n },\n computeEventResize: function computeEventResize(t, e, n, i) {\n var r,\n s,\n o = this.view.calendar,\n l = this.diffDates(n[t], e[t]);\n return r = {\n start: i.start.clone(),\n end: o.getEventEnd(i),\n allDay: i.allDay\n }, r.allDay && W(l) && (r.allDay = !1, o.normalizeEventTimes(r)), r[t].add(l), r.start.isBefore(r.end) || (s = this.minResizeDuration || (i.allDay ? o.defaultAllDayEventDuration : o.defaultTimedEventDuration), "start" == t ? r.start = r.end.clone().subtract(s) : r.end = r.start.clone().add(s)), r;\n },\n renderEventResize: function renderEventResize(t, e) {},\n unrenderEventResize: function unrenderEventResize() {},\n getEventTimeText: function getEventTimeText(t, e, n) {\n return null == e && (e = this.eventTimeFormat), null == n && (n = this.displayEventEnd), this.displayEventTime && t.start.hasTime() ? n && t.end ? this.view.formatRange(t, e) : t.start.format(e) : "";\n },\n getSegClasses: function getSegClasses(t, e, n) {\n var i = this.view,\n r = ["fc-event", t.isStart ? "fc-start" : "fc-not-start", t.isEnd ? "fc-end" : "fc-not-end"].concat(this.getSegCustomClasses(t));\n return e && r.push("fc-draggable"), n && r.push("fc-resizable"), i.isEventSelected(t.event) && r.push("fc-selected"), r;\n },\n getSegCustomClasses: function getSegCustomClasses(t) {\n var e = t.event;\n return [].concat(e.className, e.source ? e.source.className : []);\n },\n getSegSkinCss: function getSegSkinCss(t) {\n return {\n "background-color": this.getSegBackgroundColor(t),\n "border-color": this.getSegBorderColor(t),\n color: this.getSegTextColor(t)\n };\n },\n getSegBackgroundColor: function getSegBackgroundColor(t) {\n return t.event.backgroundColor || t.event.color || this.getSegDefaultBackgroundColor(t);\n },\n getSegDefaultBackgroundColor: function getSegDefaultBackgroundColor(t) {\n var e = t.event.source || {};\n return e.backgroundColor || e.color || this.view.opt("eventBackgroundColor") || this.view.opt("eventColor");\n },\n getSegBorderColor: function getSegBorderColor(t) {\n return t.event.borderColor || t.event.color || this.getSegDefaultBorderColor(t);\n },\n getSegDefaultBorderColor: function getSegDefaultBorderColor(t) {\n var e = t.event.source || {};\n return e.borderColor || e.color || this.view.opt("eventBorderColor") || this.view.opt("eventColor");\n },\n getSegTextColor: function getSegTextColor(t) {\n return t.event.textColor || this.getSegDefaultTextColor(t);\n },\n getSegDefaultTextColor: function getSegDefaultTextColor(t) {\n var e = t.event.source || {};\n return e.textColor || this.view.opt("eventTextColor");\n },\n eventToSegs: function eventToSegs(t) {\n return this.eventsToSegs([t]);\n },\n eventToSpan: function eventToSpan(t) {\n return this.eventToSpans(t)[0];\n },\n eventToSpans: function eventToSpans(t) {\n var e = this.eventToRange(t);\n return this.eventRangeToSpans(e, t);\n },\n eventsToSegs: function eventsToSegs(e, n) {\n var i = this,\n r = It(e),\n s = [];\n return t.each(r, function (t, e) {\n var r,\n o = [];\n for (r = 0; r < e.length; r++) o.push(i.eventToRange(e[r]));\n if (xt(e[0])) for (o = i.invertRanges(o), r = 0; r < o.length; r++) s.push.apply(s, i.eventRangeToSegs(o[r], e[0], n));else for (r = 0; r < o.length; r++) s.push.apply(s, i.eventRangeToSegs(o[r], e[r], n));\n }), s;\n },\n eventToRange: function eventToRange(t) {\n var e = this.view.calendar,\n n = t.start.clone().stripZone(),\n i = (t.end ? t.end.clone() : e.getDefaultEventEnd(null != t.allDay ? t.allDay : !t.start.hasTime(), t.start)).stripZone();\n return e.localizeMoment(n), e.localizeMoment(i), {\n start: n,\n end: i\n };\n },\n eventRangeToSegs: function eventRangeToSegs(t, e, n) {\n var i,\n r = this.eventRangeToSpans(t, e),\n s = [];\n for (i = 0; i < r.length; i++) s.push.apply(s, this.eventSpanToSegs(r[i], e, n));\n return s;\n },\n eventRangeToSpans: function eventRangeToSpans(e, n) {\n return [t.extend({}, e)];\n },\n eventSpanToSegs: function eventSpanToSegs(t, e, n) {\n var i,\n r,\n s = n ? n(t) : this.spanToSegs(t);\n for (i = 0; i < s.length; i++) r = s[i], r.event = e, r.eventStartMS = +t.start, r.eventDurationMS = t.end - t.start;\n return s;\n },\n invertRanges: function invertRanges(t) {\n var e,\n n,\n i = this.view,\n r = i.start.clone(),\n s = i.end.clone(),\n o = [],\n l = r;\n for (t.sort(kt), e = 0; e < t.length; e++) n = t[e], n.start > l && o.push({\n start: l,\n end: n.start\n }), l = n.end;\n return l < s && o.push({\n start: l,\n end: s\n }), o;\n },\n sortEventSegs: function sortEventSegs(t) {\n t.sort(lt(this, "compareEventSegs"));\n },\n compareEventSegs: function compareEventSegs(t, e) {\n return t.eventStartMS - e.eventStartMS || e.eventDurationMS - t.eventDurationMS || e.event.allDay - t.event.allDay || L(t.event, e.event, this.view.eventOrderSpecs);\n }\n }), jt.pluckEventDateProps = Ht, jt.isBgEvent = Tt, jt.dataAttrPrefix = "";\n var ve = jt.DayTableMixin = {\n breakOnWeeks: !1,\n dayDates: null,\n dayIndices: null,\n daysPerRow: null,\n rowCnt: null,\n colCnt: null,\n colHeadFormat: null,\n updateDayTable: function updateDayTable() {\n for (var t, e, n, i = this.view, r = this.start.clone(), s = -1, o = [], l = []; r.isBefore(this.end);) i.isHiddenDay(r) ? o.push(s + .5) : (s++, o.push(s), l.push(r.clone())), r.add(1, "days");\n if (this.breakOnWeeks) {\n for (e = l[0].day(), t = 1; t < l.length && l[t].day() != e; t++);\n n = Math.ceil(l.length / t);\n } else n = 1, t = l.length;\n this.dayDates = l, this.dayIndices = o, this.daysPerRow = t, this.rowCnt = n, this.updateDayTableCols();\n },\n updateDayTableCols: function updateDayTableCols() {\n this.colCnt = this.computeColCnt(), this.colHeadFormat = this.view.opt("columnFormat") || this.computeColHeadFormat();\n },\n computeColCnt: function computeColCnt() {\n return this.daysPerRow;\n },\n getCellDate: function getCellDate(t, e) {\n return this.dayDates[this.getCellDayIndex(t, e)].clone();\n },\n getCellRange: function getCellRange(t, e) {\n var n = this.getCellDate(t, e),\n i = n.clone().add(1, "days");\n return {\n start: n,\n end: i\n };\n },\n getCellDayIndex: function getCellDayIndex(t, e) {\n return t * this.daysPerRow + this.getColDayIndex(e);\n },\n getColDayIndex: function getColDayIndex(t) {\n return this.isRTL ? this.colCnt - 1 - t : t;\n },\n getDateDayIndex: function getDateDayIndex(t) {\n var e = this.dayIndices,\n n = t.diff(this.start, "days");\n return n < 0 ? e[0] - 1 : n >= e.length ? e[e.length - 1] + 1 : e[n];\n },\n computeColHeadFormat: function computeColHeadFormat() {\n return this.rowCnt > 1 || this.colCnt > 10 ? "ddd" : this.colCnt > 1 ? this.view.opt("dayOfMonthFormat") : "dddd";\n },\n sliceRangeByRow: function sliceRangeByRow(t) {\n var e,\n n,\n i,\n r,\n s,\n o = this.daysPerRow,\n l = this.view.computeDayRange(t),\n a = this.getDateDayIndex(l.start),\n u = this.getDateDayIndex(l.end.clone().subtract(1, "days")),\n d = [];\n for (e = 0; e < this.rowCnt; e++) n = e * o, i = n + o - 1, r = Math.max(a, n), s = Math.min(u, i), r = Math.ceil(r), s = Math.floor(s), r <= s && d.push({\n row: e,\n firstRowDayIndex: r - n,\n lastRowDayIndex: s - n,\n isStart: r === a,\n isEnd: s === u\n });\n return d;\n },\n sliceRangeByDay: function sliceRangeByDay(t) {\n var e,\n n,\n i,\n r,\n s,\n o,\n l = this.daysPerRow,\n a = this.view.computeDayRange(t),\n u = this.getDateDayIndex(a.start),\n d = this.getDateDayIndex(a.end.clone().subtract(1, "days")),\n c = [];\n for (e = 0; e < this.rowCnt; e++) for (n = e * l, i = n + l - 1, r = n; r <= i; r++) s = Math.max(u, r), o = Math.min(d, r), s = Math.ceil(s), o = Math.floor(o), s <= o && c.push({\n row: e,\n firstRowDayIndex: s - n,\n lastRowDayIndex: o - n,\n isStart: s === u,\n isEnd: o === d\n });\n return c;\n },\n renderHeadHtml: function renderHeadHtml() {\n var t = this.view;\n return \'<div class="fc-row \' + t.widgetHeaderClass + \'"><table><thead>\' + this.renderHeadTrHtml() + "</thead></table></div>";\n },\n renderHeadIntroHtml: function renderHeadIntroHtml() {\n return this.renderIntroHtml();\n },\n renderHeadTrHtml: function renderHeadTrHtml() {\n return "<tr>" + (this.isRTL ? "" : this.renderHeadIntroHtml()) + this.renderHeadDateCellsHtml() + (this.isRTL ? this.renderHeadIntroHtml() : "") + "</tr>";\n },\n renderHeadDateCellsHtml: function renderHeadDateCellsHtml() {\n var t,\n e,\n n = [];\n for (t = 0; t < this.colCnt; t++) e = this.getCellDate(0, t), n.push(this.renderHeadDateCellHtml(e));\n return n.join("");\n },\n renderHeadDateCellHtml: function renderHeadDateCellHtml(t, e, n) {\n var i = this.view;\n return \'<th class="fc-day-header \' + i.widgetHeaderClass + " fc-" + $t[t.day()] + \'"\' + (1 === this.rowCnt ? \' data-date="\' + t.format("YYYY-MM-DD") + \'"\' : "") + (e > 1 ? \' colspan="\' + e + \'"\' : "") + (n ? " " + n : "") + ">" + i.buildGotoAnchorHtml({\n date: t,\n forceOff: this.rowCnt > 1 || 1 === this.colCnt\n }, tt(t.format(this.colHeadFormat))) + "</th>";\n },\n renderBgTrHtml: function renderBgTrHtml(t) {\n return "<tr>" + (this.isRTL ? "" : this.renderBgIntroHtml(t)) + this.renderBgCellsHtml(t) + (this.isRTL ? this.renderBgIntroHtml(t) : "") + "</tr>";\n },\n renderBgIntroHtml: function renderBgIntroHtml(t) {\n return this.renderIntroHtml();\n },\n renderBgCellsHtml: function renderBgCellsHtml(t) {\n var e,\n n,\n i = [];\n for (e = 0; e < this.colCnt; e++) n = this.getCellDate(t, e), i.push(this.renderBgCellHtml(n));\n return i.join("");\n },\n renderBgCellHtml: function renderBgCellHtml(t, e) {\n var n = this.view,\n i = this.getDayClasses(t);\n return i.unshift("fc-day", n.widgetContentClass), \'<td class="\' + i.join(" ") + \'" data-date="\' + t.format("YYYY-MM-DD") + \'"\' + (e ? " " + e : "") + "></td>";\n },\n renderIntroHtml: function renderIntroHtml() {},\n bookendCells: function bookendCells(t) {\n var e = this.renderIntroHtml();\n e && (this.isRTL ? t.append(e) : t.prepend(e));\n }\n },\n me = jt.DayGrid = pe.extend(ve, {\n numbersVisible: !1,\n bottomCoordPadding: 0,\n rowEls: null,\n cellEls: null,\n helperEls: null,\n rowCoordCache: null,\n colCoordCache: null,\n renderDates: function renderDates(t) {\n var e,\n n,\n i = this.view,\n r = this.rowCnt,\n s = this.colCnt,\n o = "";\n for (e = 0; e < r; e++) o += this.renderDayRowHtml(e, t);\n for (this.el.html(o), this.rowEls = this.el.find(".fc-row"), this.cellEls = this.el.find(".fc-day"), this.rowCoordCache = new ce({\n els: this.rowEls,\n isVertical: !0\n }), this.colCoordCache = new ce({\n els: this.cellEls.slice(0, this.colCnt),\n isHorizontal: !0\n }), e = 0; e < r; e++) for (n = 0; n < s; n++) i.trigger("dayRender", null, this.getCellDate(e, n), this.getCellEl(e, n));\n },\n unrenderDates: function unrenderDates() {\n this.removeSegPopover();\n },\n renderBusinessHours: function renderBusinessHours() {\n var t = this.buildBusinessHourSegs(!0);\n this.renderFill("businessHours", t, "bgevent");\n },\n unrenderBusinessHours: function unrenderBusinessHours() {\n this.unrenderFill("businessHours");\n },\n renderDayRowHtml: function renderDayRowHtml(t, e) {\n var n = this.view,\n i = ["fc-row", "fc-week", n.widgetContentClass];\n return e && i.push("fc-rigid"), \'<div class="\' + i.join(" ") + \'"><div class="fc-bg"><table>\' + this.renderBgTrHtml(t) + \'</table></div><div class="fc-content-skeleton"><table>\' + (this.numbersVisible ? "<thead>" + this.renderNumberTrHtml(t) + "</thead>" : "") + "</table></div></div>";\n },\n renderNumberTrHtml: function renderNumberTrHtml(t) {\n return "<tr>" + (this.isRTL ? "" : this.renderNumberIntroHtml(t)) + this.renderNumberCellsHtml(t) + (this.isRTL ? this.renderNumberIntroHtml(t) : "") + "</tr>";\n },\n renderNumberIntroHtml: function renderNumberIntroHtml(t) {\n return this.renderIntroHtml();\n },\n renderNumberCellsHtml: function renderNumberCellsHtml(t) {\n var e,\n n,\n i = [];\n for (e = 0; e < this.colCnt; e++) n = this.getCellDate(t, e), i.push(this.renderNumberCellHtml(n));\n return i.join("");\n },\n renderNumberCellHtml: function renderNumberCellHtml(t) {\n var e,\n n,\n i = "";\n return this.view.dayNumbersVisible || this.view.cellWeekNumbersVisible ? (e = this.getDayClasses(t), e.unshift("fc-day-top"), this.view.cellWeekNumbersVisible && (n = "ISO" === t._locale._fullCalendar_weekCalc ? 1 : t._locale.firstDayOfWeek()), i += \'<td class="\' + e.join(" ") + \'" data-date="\' + t.format() + \'">\', this.view.cellWeekNumbersVisible && t.day() == n && (i += this.view.buildGotoAnchorHtml({\n date: t,\n type: "week"\n }, {\n "class": "fc-week-number"\n }, t.format("w"))), this.view.dayNumbersVisible && (i += this.view.buildGotoAnchorHtml(t, {\n "class": "fc-day-number"\n }, t.date())), i += "</td>") : "<td/>";\n },\n computeEventTimeFormat: function computeEventTimeFormat() {\n return this.view.opt("extraSmallTimeFormat");\n },\n computeDisplayEventEnd: function computeDisplayEventEnd() {\n return 1 == this.colCnt;\n },\n rangeUpdated: function rangeUpdated() {\n this.updateDayTable();\n },\n spanToSegs: function spanToSegs(t) {\n var e,\n n,\n i = this.sliceRangeByRow(t);\n for (e = 0; e < i.length; e++) n = i[e], this.isRTL ? (n.leftCol = this.daysPerRow - 1 - n.lastRowDayIndex, n.rightCol = this.daysPerRow - 1 - n.firstRowDayIndex) : (n.leftCol = n.firstRowDayIndex, n.rightCol = n.lastRowDayIndex);\n return i;\n },\n prepareHits: function prepareHits() {\n this.colCoordCache.build(), this.rowCoordCache.build(), this.rowCoordCache.bottoms[this.rowCnt - 1] += this.bottomCoordPadding;\n },\n releaseHits: function releaseHits() {\n this.colCoordCache.clear(), this.rowCoordCache.clear();\n },\n queryHit: function queryHit(t, e) {\n if (this.colCoordCache.isLeftInBounds(t) && this.rowCoordCache.isTopInBounds(e)) {\n var n = this.colCoordCache.getHorizontalIndex(t),\n i = this.rowCoordCache.getVerticalIndex(e);\n if (null != i && null != n) return this.getCellHit(i, n);\n }\n },\n getHitSpan: function getHitSpan(t) {\n return this.getCellRange(t.row, t.col);\n },\n getHitEl: function getHitEl(t) {\n return this.getCellEl(t.row, t.col);\n },\n getCellHit: function getCellHit(t, e) {\n return {\n row: t,\n col: e,\n component: this,\n left: this.colCoordCache.getLeftOffset(e),\n right: this.colCoordCache.getRightOffset(e),\n top: this.rowCoordCache.getTopOffset(t),\n bottom: this.rowCoordCache.getBottomOffset(t)\n };\n },\n getCellEl: function getCellEl(t, e) {\n return this.cellEls.eq(t * this.colCnt + e);\n },\n renderDrag: function renderDrag(t, e) {\n if (this.renderHighlight(this.eventToSpan(t)), e && e.component !== this) return this.renderEventLocationHelper(t, e);\n },\n unrenderDrag: function unrenderDrag() {\n this.unrenderHighlight(), this.unrenderHelper();\n },\n renderEventResize: function renderEventResize(t, e) {\n return this.renderHighlight(this.eventToSpan(t)), this.renderEventLocationHelper(t, e);\n },\n unrenderEventResize: function unrenderEventResize() {\n this.unrenderHighlight(), this.unrenderHelper();\n },\n renderHelper: function renderHelper(e, n) {\n var i,\n r = [],\n s = this.eventToSegs(e);\n return s = this.renderFgSegEls(s), i = this.renderSegRows(s), this.rowEls.each(function (e, s) {\n var o,\n l = t(s),\n a = t(\'<div class="fc-helper-skeleton"><table/></div>\');\n o = n && n.row === e ? n.el.position().top : l.find(".fc-content-skeleton tbody").position().top, a.css("top", o).find("table").append(i[e].tbodyEl), l.append(a), r.push(a[0]);\n }), this.helperEls = t(r);\n },\n unrenderHelper: function unrenderHelper() {\n this.helperEls && (this.helperEls.remove(), this.helperEls = null);\n },\n fillSegTag: "td",\n renderFill: function renderFill(e, n, i) {\n var r,\n s,\n o,\n l = [];\n for (n = this.renderFillSegEls(e, n), r = 0; r < n.length; r++) s = n[r], o = this.renderFillRow(e, s, i), this.rowEls.eq(s.row).append(o), l.push(o[0]);\n return this.elsByFill[e] = t(l), n;\n },\n renderFillRow: function renderFillRow(e, n, i) {\n var r,\n s,\n o = this.colCnt,\n l = n.leftCol,\n a = n.rightCol + 1;\n return i = i || e.toLowerCase(), r = t(\'<div class="fc-\' + i + \'-skeleton"><table><tr/></table></div>\'), s = r.find("tr"), l > 0 && s.append(\'<td colspan="\' + l + \'"/>\'), s.append(n.el.attr("colspan", a - l)), a < o && s.append(\'<td colspan="\' + (o - a) + \'"/>\'), this.bookendCells(s), r;\n }\n });\n me.mixin({\n rowStructs: null,\n unrenderEvents: function unrenderEvents() {\n this.removeSegPopover(), pe.prototype.unrenderEvents.apply(this, arguments);\n },\n getEventSegs: function getEventSegs() {\n return pe.prototype.getEventSegs.call(this).concat(this.popoverSegs || []);\n },\n renderBgSegs: function renderBgSegs(e) {\n var n = t.grep(e, function (t) {\n return t.event.allDay;\n });\n return pe.prototype.renderBgSegs.call(this, n);\n },\n renderFgSegs: function renderFgSegs(e) {\n var n;\n return e = this.renderFgSegEls(e), n = this.rowStructs = this.renderSegRows(e), this.rowEls.each(function (e, i) {\n t(i).find(".fc-content-skeleton > table").append(n[e].tbodyEl);\n }), e;\n },\n unrenderFgSegs: function unrenderFgSegs() {\n for (var t, e = this.rowStructs || []; t = e.pop();) t.tbodyEl.remove();\n this.rowStructs = null;\n },\n renderSegRows: function renderSegRows(t) {\n var e,\n n,\n i = [];\n for (e = this.groupSegRows(t), n = 0; n < e.length; n++) i.push(this.renderSegRow(n, e[n]));\n return i;\n },\n fgSegHtml: function fgSegHtml(t, e) {\n var n,\n i,\n r = this.view,\n s = t.event,\n o = r.isEventDraggable(s),\n l = !e && s.allDay && t.isStart && r.isEventResizableFromStart(s),\n a = !e && s.allDay && t.isEnd && r.isEventResizableFromEnd(s),\n u = this.getSegClasses(t, o, l || a),\n d = nt(this.getSegSkinCss(t)),\n c = "";\n return u.unshift("fc-day-grid-event", "fc-h-event"), t.isStart && (n = this.getEventTimeText(s), n && (c = \'<span class="fc-time">\' + tt(n) + "</span>")), i = \'<span class="fc-title">\' + (tt(s.title || "") || " ") + "</span>", \'<a class="\' + u.join(" ") + \'"\' + (s.url ? \' href="\' + tt(s.url) + \'"\' : "") + (d ? \' style="\' + d + \'"\' : "") + \'><div class="fc-content">\' + (this.isRTL ? i + " " + c : c + " " + i) + "</div>" + (l ? \'<div class="fc-resizer fc-start-resizer" />\' : "") + (a ? \'<div class="fc-resizer fc-end-resizer" />\' : "") + "</a>";\n },\n renderSegRow: function renderSegRow(e, n) {\n function i(e) {\n for (; o < e;) d = (m[r - 1] || [])[o], d ? d.attr("rowspan", parseInt(d.attr("rowspan") || 1, 10) + 1) : (d = t("<td/>"), l.append(d)), v[r][o] = d, m[r][o] = d, o++;\n }\n var r,\n s,\n o,\n l,\n a,\n u,\n d,\n c = this.colCnt,\n h = this.buildSegLevels(n),\n f = Math.max(1, h.length),\n g = t("<tbody/>"),\n p = [],\n v = [],\n m = [];\n for (r = 0; r < f; r++) {\n if (s = h[r], o = 0, l = t("<tr/>"), p.push([]), v.push([]), m.push([]), s) for (a = 0; a < s.length; a++) {\n for (u = s[a], i(u.leftCol), d = t(\'<td class="fc-event-container"/>\').append(u.el), u.leftCol != u.rightCol ? d.attr("colspan", u.rightCol - u.leftCol + 1) : m[r][o] = d; o <= u.rightCol;) v[r][o] = d, p[r][o] = u, o++;\n l.append(d);\n }\n i(c), this.bookendCells(l), g.append(l);\n }\n return {\n row: e,\n tbodyEl: g,\n cellMatrix: v,\n segMatrix: p,\n segLevels: h,\n segs: n\n };\n },\n buildSegLevels: function buildSegLevels(t) {\n var e,\n n,\n i,\n r = [];\n for (this.sortEventSegs(t), e = 0; e < t.length; e++) {\n for (n = t[e], i = 0; i < r.length && Lt(n, r[i]); i++);\n n.level = i, (r[i] || (r[i] = [])).push(n);\n }\n for (i = 0; i < r.length; i++) r[i].sort(Bt);\n return r;\n },\n groupSegRows: function groupSegRows(t) {\n var e,\n n = [];\n for (e = 0; e < this.rowCnt; e++) n.push([]);\n for (e = 0; e < t.length; e++) n[t[e].row].push(t[e]);\n return n;\n }\n }), me.mixin({\n segPopover: null,\n popoverSegs: null,\n removeSegPopover: function removeSegPopover() {\n this.segPopover && this.segPopover.hide();\n },\n limitRows: function limitRows(t) {\n var e,\n n,\n i = this.rowStructs || [];\n for (e = 0; e < i.length; e++) this.unlimitRow(e), n = !!t && ("number" == typeof t ? t : this.computeRowLevelLimit(e)), n !== !1 && this.limitRow(e, n);\n },\n computeRowLevelLimit: function computeRowLevelLimit(e) {\n function n(e, n) {\n s = Math.max(s, t(n).outerHeight());\n }\n var i,\n r,\n s,\n o = this.rowEls.eq(e),\n l = o.height(),\n a = this.rowStructs[e].tbodyEl.children();\n for (i = 0; i < a.length; i++) if (r = a.eq(i).removeClass("fc-limited"), s = 0, r.find("> td > :first-child").each(n), r.position().top + s > l) return i;\n return !1;\n },\n limitRow: function limitRow(e, n) {\n function i(i) {\n for (; D < i;) u = S.getCellSegs(e, D, n), u.length && (h = s[n - 1][D], y = S.renderMoreLink(e, D, u), m = t("<div/>").append(y), h.append(m), E.push(m[0])), D++;\n }\n var r,\n s,\n o,\n l,\n a,\n u,\n d,\n c,\n h,\n f,\n g,\n p,\n v,\n m,\n y,\n S = this,\n w = this.rowStructs[e],\n E = [],\n D = 0;\n if (n && n < w.segLevels.length) {\n for (r = w.segLevels[n - 1], s = w.cellMatrix, o = w.tbodyEl.children().slice(n).addClass("fc-limited").get(), l = 0; l < r.length; l++) {\n for (a = r[l], i(a.leftCol), c = [], d = 0; D <= a.rightCol;) u = this.getCellSegs(e, D, n), c.push(u), d += u.length, D++;\n if (d) {\n for (h = s[n - 1][a.leftCol], f = h.attr("rowspan") || 1, g = [], p = 0; p < c.length; p++) v = t(\'<td class="fc-more-cell"/>\').attr("rowspan", f), u = c[p], y = this.renderMoreLink(e, a.leftCol + p, [a].concat(u)), m = t("<div/>").append(y), v.append(m), g.push(v[0]), E.push(v[0]);\n h.addClass("fc-limited").after(t(g)), o.push(h[0]);\n }\n }\n i(this.colCnt), w.moreEls = t(E), w.limitedEls = t(o);\n }\n },\n unlimitRow: function unlimitRow(t) {\n var e = this.rowStructs[t];\n e.moreEls && (e.moreEls.remove(), e.moreEls = null), e.limitedEls && (e.limitedEls.removeClass("fc-limited"), e.limitedEls = null);\n },\n renderMoreLink: function renderMoreLink(e, n, i) {\n var r = this,\n s = this.view;\n return t(\'<a class="fc-more"/>\').text(this.getMoreLinkText(i.length)).on("click", function (o) {\n var l = s.opt("eventLimitClick"),\n a = r.getCellDate(e, n),\n u = t(this),\n d = r.getCellEl(e, n),\n c = r.getCellSegs(e, n),\n h = r.resliceDaySegs(c, a),\n f = r.resliceDaySegs(i, a);\n "function" == typeof l && (l = s.trigger("eventLimitClick", null, {\n date: a,\n dayEl: d,\n moreEl: u,\n segs: h,\n hiddenSegs: f\n }, o)), "popover" === l ? r.showSegPopover(e, n, u, h) : "string" == typeof l && s.calendar.zoomTo(a, l);\n });\n },\n showSegPopover: function showSegPopover(t, e, n, i) {\n var r,\n s,\n o = this,\n l = this.view,\n a = n.parent();\n r = 1 == this.rowCnt ? l.el : this.rowEls.eq(t), s = {\n className: "fc-more-popover",\n content: this.renderSegPopoverContent(t, e, i),\n parentEl: this.view.el,\n top: r.offset().top,\n autoHide: !0,\n viewportConstrain: l.opt("popoverViewportConstrain"),\n hide: function hide() {\n o.segPopover.removeElement(), o.segPopover = null, o.popoverSegs = null;\n }\n }, this.isRTL ? s.right = a.offset().left + a.outerWidth() + 1 : s.left = a.offset().left - 1, this.segPopover = new de(s), this.segPopover.show(), this.bindSegHandlersToEl(this.segPopover.el);\n },\n renderSegPopoverContent: function renderSegPopoverContent(e, n, i) {\n var r,\n s = this.view,\n o = s.opt("theme"),\n l = this.getCellDate(e, n).format(s.opt("dayPopoverFormat")),\n a = t(\'<div class="fc-header \' + s.widgetHeaderClass + \'"><span class="fc-close \' + (o ? "ui-icon ui-icon-closethick" : "fc-icon fc-icon-x") + \'"></span><span class="fc-title">\' + tt(l) + \'</span><div class="fc-clear"/></div><div class="fc-body \' + s.widgetContentClass + \'"><div class="fc-event-container"></div></div>\'),\n u = a.find(".fc-event-container");\n for (i = this.renderFgSegEls(i, !0), this.popoverSegs = i, r = 0; r < i.length; r++) this.prepareHits(), i[r].hit = this.getCellHit(e, n), this.releaseHits(), u.append(i[r].el);\n return a;\n },\n resliceDaySegs: function resliceDaySegs(e, n) {\n var i = t.map(e, function (t) {\n return t.event;\n }),\n r = n.clone(),\n s = r.clone().add(1, "days"),\n o = {\n start: r,\n end: s\n };\n return e = this.eventsToSegs(i, function (t) {\n var e = F(t, o);\n return e ? [e] : [];\n }), this.sortEventSegs(e), e;\n },\n getMoreLinkText: function getMoreLinkText(t) {\n var e = this.view.opt("eventLimitText");\n return "function" == typeof e ? e(t) : "+" + t + " " + e;\n },\n getCellSegs: function getCellSegs(t, e, n) {\n for (var i, r = this.rowStructs[t].segMatrix, s = n || 0, o = []; s < r.length;) i = r[s][e], i && o.push(i), s++;\n return o;\n }\n });\n var ye = jt.TimeGrid = pe.extend(ve, {\n slotDuration: null,\n snapDuration: null,\n snapsPerSlot: null,\n minTime: null,\n maxTime: null,\n labelFormat: null,\n labelInterval: null,\n colEls: null,\n slatContainerEl: null,\n slatEls: null,\n nowIndicatorEls: null,\n colCoordCache: null,\n slatCoordCache: null,\n constructor: function constructor() {\n pe.apply(this, arguments), this.processOptions();\n },\n renderDates: function renderDates() {\n this.el.html(this.renderHtml()), this.colEls = this.el.find(".fc-day"), this.slatContainerEl = this.el.find(".fc-slats"), this.slatEls = this.slatContainerEl.find("tr"), this.colCoordCache = new ce({\n els: this.colEls,\n isHorizontal: !0\n }), this.slatCoordCache = new ce({\n els: this.slatEls,\n isVertical: !0\n }), this.renderContentSkeleton();\n },\n renderHtml: function renderHtml() {\n return \'<div class="fc-bg"><table>\' + this.renderBgTrHtml(0) + \'</table></div><div class="fc-slats"><table>\' + this.renderSlatRowHtml() + "</table></div>";\n },\n renderSlatRowHtml: function renderSlatRowHtml() {\n for (var t, n, i, r = this.view, s = this.isRTL, o = "", l = e.duration(+this.minTime); l < this.maxTime;) t = this.start.clone().time(l), n = ot(_(l, this.labelInterval)), i = \'<td class="fc-axis fc-time \' + r.widgetContentClass + \'" \' + r.axisStyleAttr() + ">" + (n ? "<span>" + tt(t.format(this.labelFormat)) + "</span>" : "") + "</td>", o += \'<tr data-time="\' + t.format("HH:mm:ss") + \'"\' + (n ? "" : \' class="fc-minor"\') + ">" + (s ? "" : i) + \'<td class="\' + r.widgetContentClass + \'"/>\' + (s ? i : "") + "</tr>", l.add(this.slotDuration);\n return o;\n },\n processOptions: function processOptions() {\n var n,\n i = this.view,\n r = i.opt("slotDuration"),\n s = i.opt("snapDuration");\n r = e.duration(r), s = s ? e.duration(s) : r, this.slotDuration = r, this.snapDuration = s, this.snapsPerSlot = r / s, this.minResizeDuration = s, this.minTime = e.duration(i.opt("minTime")), this.maxTime = e.duration(i.opt("maxTime")), n = i.opt("slotLabelFormat"), t.isArray(n) && (n = n[n.length - 1]), this.labelFormat = n || i.opt("smallTimeFormat"), n = i.opt("slotLabelInterval"), this.labelInterval = n ? e.duration(n) : this.computeLabelInterval(r);\n },\n computeLabelInterval: function computeLabelInterval(t) {\n var n, i, r;\n for (n = Ne.length - 1; n >= 0; n--) if (i = e.duration(Ne[n]), r = _(i, t), ot(r) && r > 1) return i;\n return e.duration(t);\n },\n computeEventTimeFormat: function computeEventTimeFormat() {\n return this.view.opt("noMeridiemTimeFormat");\n },\n computeDisplayEventEnd: function computeDisplayEventEnd() {\n return !0;\n },\n prepareHits: function prepareHits() {\n this.colCoordCache.build(), this.slatCoordCache.build();\n },\n releaseHits: function releaseHits() {\n this.colCoordCache.clear();\n },\n queryHit: function queryHit(t, e) {\n var n = this.snapsPerSlot,\n i = this.colCoordCache,\n r = this.slatCoordCache;\n if (i.isLeftInBounds(t) && r.isTopInBounds(e)) {\n var s = i.getHorizontalIndex(t),\n o = r.getVerticalIndex(e);\n if (null != s && null != o) {\n var l = r.getTopOffset(o),\n a = r.getHeight(o),\n u = (e - l) / a,\n d = Math.floor(u * n),\n c = o * n + d,\n h = l + d / n * a,\n f = l + (d + 1) / n * a;\n return {\n col: s,\n snap: c,\n component: this,\n left: i.getLeftOffset(s),\n right: i.getRightOffset(s),\n top: h,\n bottom: f\n };\n }\n }\n },\n getHitSpan: function getHitSpan(t) {\n var e,\n n = this.getCellDate(0, t.col),\n i = this.computeSnapTime(t.snap);\n return n.time(i), e = n.clone().add(this.snapDuration), {\n start: n,\n end: e\n };\n },\n getHitEl: function getHitEl(t) {\n return this.colEls.eq(t.col);\n },\n rangeUpdated: function rangeUpdated() {\n this.updateDayTable();\n },\n computeSnapTime: function computeSnapTime(t) {\n return e.duration(this.minTime + this.snapDuration * t);\n },\n spanToSegs: function spanToSegs(t) {\n var e,\n n = this.sliceRangeByTimes(t);\n for (e = 0; e < n.length; e++) this.isRTL ? n[e].col = this.daysPerRow - 1 - n[e].dayIndex : n[e].col = n[e].dayIndex;\n return n;\n },\n sliceRangeByTimes: function sliceRangeByTimes(t) {\n var e,\n n,\n i,\n r,\n s = [];\n for (n = 0; n < this.daysPerRow; n++) i = this.dayDates[n].clone(), r = {\n start: i.clone().time(this.minTime),\n end: i.clone().time(this.maxTime)\n }, e = F(t, r), e && (e.dayIndex = n, s.push(e));\n return s;\n },\n updateSize: function updateSize(t) {\n this.slatCoordCache.build(), t && this.updateSegVerticals([].concat(this.fgSegs || [], this.bgSegs || [], this.businessSegs || []));\n },\n getTotalSlatHeight: function getTotalSlatHeight() {\n return this.slatContainerEl.outerHeight();\n },\n computeDateTop: function computeDateTop(t, n) {\n return this.computeTimeTop(e.duration(t - n.clone().stripTime()));\n },\n computeTimeTop: function computeTimeTop(t) {\n var e,\n n,\n i = this.slatEls.length,\n r = (t - this.minTime) / this.slotDuration;\n return r = Math.max(0, r), r = Math.min(i, r), e = Math.floor(r), e = Math.min(e, i - 1), n = r - e, this.slatCoordCache.getTopPosition(e) + this.slatCoordCache.getHeight(e) * n;\n },\n renderDrag: function renderDrag(t, e) {\n return e ? this.renderEventLocationHelper(t, e) : void this.renderHighlight(this.eventToSpan(t));\n },\n unrenderDrag: function unrenderDrag() {\n this.unrenderHelper(), this.unrenderHighlight();\n },\n renderEventResize: function renderEventResize(t, e) {\n return this.renderEventLocationHelper(t, e);\n },\n unrenderEventResize: function unrenderEventResize() {\n this.unrenderHelper();\n },\n renderHelper: function renderHelper(t, e) {\n return this.renderHelperSegs(this.eventToSegs(t), e);\n },\n unrenderHelper: function unrenderHelper() {\n this.unrenderHelperSegs();\n },\n renderBusinessHours: function renderBusinessHours() {\n this.renderBusinessSegs(this.buildBusinessHourSegs());\n },\n unrenderBusinessHours: function unrenderBusinessHours() {\n this.unrenderBusinessSegs();\n },\n getNowIndicatorUnit: function getNowIndicatorUnit() {\n return "minute";\n },\n renderNowIndicator: function renderNowIndicator(e) {\n var n,\n i = this.spanToSegs({\n start: e,\n end: e\n }),\n r = this.computeDateTop(e, e),\n s = [];\n for (n = 0; n < i.length; n++) s.push(t(\'<div class="fc-now-indicator fc-now-indicator-line"></div>\').css("top", r).appendTo(this.colContainerEls.eq(i[n].col))[0]);\n i.length > 0 && s.push(t(\'<div class="fc-now-indicator fc-now-indicator-arrow"></div>\').css("top", r).appendTo(this.el.find(".fc-content-skeleton"))[0]), this.nowIndicatorEls = t(s);\n },\n unrenderNowIndicator: function unrenderNowIndicator() {\n this.nowIndicatorEls && (this.nowIndicatorEls.remove(), this.nowIndicatorEls = null);\n },\n renderSelection: function renderSelection(t) {\n this.view.opt("selectHelper") ? this.renderEventLocationHelper(t) : this.renderHighlight(t);\n },\n unrenderSelection: function unrenderSelection() {\n this.unrenderHelper(), this.unrenderHighlight();\n },\n renderHighlight: function renderHighlight(t) {\n this.renderHighlightSegs(this.spanToSegs(t));\n },\n unrenderHighlight: function unrenderHighlight() {\n this.unrenderHighlightSegs();\n }\n });\n ye.mixin({\n colContainerEls: null,\n fgContainerEls: null,\n bgContainerEls: null,\n helperContainerEls: null,\n highlightContainerEls: null,\n businessContainerEls: null,\n fgSegs: null,\n bgSegs: null,\n helperSegs: null,\n highlightSegs: null,\n businessSegs: null,\n renderContentSkeleton: function renderContentSkeleton() {\n var e,\n n,\n i = "";\n for (e = 0; e < this.colCnt; e++) i += \'<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>\';\n n = t(\'<div class="fc-content-skeleton"><table><tr>\' + i + "</tr></table></div>"), this.colContainerEls = n.find(".fc-content-col"), this.helperContainerEls = n.find(".fc-helper-container"), this.fgContainerEls = n.find(".fc-event-container:not(.fc-helper-container)"), this.bgContainerEls = n.find(".fc-bgevent-container"), this.highlightContainerEls = n.find(".fc-highlight-container"), this.businessContainerEls = n.find(".fc-business-container"), this.bookendCells(n.find("tr")), this.el.append(n);\n },\n renderFgSegs: function renderFgSegs(t) {\n return t = this.renderFgSegsIntoContainers(t, this.fgContainerEls), this.fgSegs = t, t;\n },\n unrenderFgSegs: function unrenderFgSegs() {\n this.unrenderNamedSegs("fgSegs");\n },\n renderHelperSegs: function renderHelperSegs(e, n) {\n var i,\n r,\n s,\n o = [];\n for (e = this.renderFgSegsIntoContainers(e, this.helperContainerEls), i = 0; i < e.length; i++) r = e[i], n && n.col === r.col && (s = n.el, r.el.css({\n left: s.css("left"),\n right: s.css("right"),\n "margin-left": s.css("margin-left"),\n "margin-right": s.css("margin-right")\n })), o.push(r.el[0]);\n return this.helperSegs = e, t(o);\n },\n unrenderHelperSegs: function unrenderHelperSegs() {\n this.unrenderNamedSegs("helperSegs");\n },\n renderBgSegs: function renderBgSegs(t) {\n return t = this.renderFillSegEls("bgEvent", t), this.updateSegVerticals(t), this.attachSegsByCol(this.groupSegsByCol(t), this.bgContainerEls), this.bgSegs = t, t;\n },\n unrenderBgSegs: function unrenderBgSegs() {\n this.unrenderNamedSegs("bgSegs");\n },\n renderHighlightSegs: function renderHighlightSegs(t) {\n t = this.renderFillSegEls("highlight", t), this.updateSegVerticals(t), this.attachSegsByCol(this.groupSegsByCol(t), this.highlightContainerEls), this.highlightSegs = t;\n },\n unrenderHighlightSegs: function unrenderHighlightSegs() {\n this.unrenderNamedSegs("highlightSegs");\n },\n renderBusinessSegs: function renderBusinessSegs(t) {\n t = this.renderFillSegEls("businessHours", t), this.updateSegVerticals(t), this.attachSegsByCol(this.groupSegsByCol(t), this.businessContainerEls), this.businessSegs = t;\n },\n unrenderBusinessSegs: function unrenderBusinessSegs() {\n this.unrenderNamedSegs("businessSegs");\n },\n groupSegsByCol: function groupSegsByCol(t) {\n var e,\n n = [];\n for (e = 0; e < this.colCnt; e++) n.push([]);\n for (e = 0; e < t.length; e++) n[t[e].col].push(t[e]);\n return n;\n },\n attachSegsByCol: function attachSegsByCol(t, e) {\n var n, i, r;\n for (n = 0; n < this.colCnt; n++) for (i = t[n], r = 0; r < i.length; r++) e.eq(n).append(i[r].el);\n },\n unrenderNamedSegs: function unrenderNamedSegs(t) {\n var e,\n n = this[t];\n if (n) {\n for (e = 0; e < n.length; e++) n[e].el.remove();\n this[t] = null;\n }\n },\n renderFgSegsIntoContainers: function renderFgSegsIntoContainers(t, e) {\n var n, i;\n for (t = this.renderFgSegEls(t), n = this.groupSegsByCol(t), i = 0; i < this.colCnt; i++) this.updateFgSegCoords(n[i]);\n return this.attachSegsByCol(n, e), t;\n },\n fgSegHtml: function fgSegHtml(t, e) {\n var n,\n i,\n r,\n s = this.view,\n o = t.event,\n l = s.isEventDraggable(o),\n a = !e && t.isStart && s.isEventResizableFromStart(o),\n u = !e && t.isEnd && s.isEventResizableFromEnd(o),\n d = this.getSegClasses(t, l, a || u),\n c = nt(this.getSegSkinCss(t));\n return d.unshift("fc-time-grid-event", "fc-v-event"), s.isMultiDayEvent(o) ? (t.isStart || t.isEnd) && (n = this.getEventTimeText(t), i = this.getEventTimeText(t, "LT"), r = this.getEventTimeText(t, null, !1)) : (n = this.getEventTimeText(o), i = this.getEventTimeText(o, "LT"), r = this.getEventTimeText(o, null, !1)), \'<a class="\' + d.join(" ") + \'"\' + (o.url ? \' href="\' + tt(o.url) + \'"\' : "") + (c ? \' style="\' + c + \'"\' : "") + \'><div class="fc-content">\' + (n ? \'<div class="fc-time" data-start="\' + tt(r) + \'" data-full="\' + tt(i) + \'"><span>\' + tt(n) + "</span></div>" : "") + (o.title ? \'<div class="fc-title">\' + tt(o.title) + "</div>" : "") + \'</div><div class="fc-bg"/>\' + (u ? \'<div class="fc-resizer fc-end-resizer" />\' : "") + "</a>";\n },\n updateSegVerticals: function updateSegVerticals(t) {\n this.computeSegVerticals(t), this.assignSegVerticals(t);\n },\n computeSegVerticals: function computeSegVerticals(t) {\n var e, n;\n for (e = 0; e < t.length; e++) n = t[e], n.top = this.computeDateTop(n.start, n.start), n.bottom = this.computeDateTop(n.end, n.start);\n },\n assignSegVerticals: function assignSegVerticals(t) {\n var e, n;\n for (e = 0; e < t.length; e++) n = t[e], n.el.css(this.generateSegVerticalCss(n));\n },\n generateSegVerticalCss: function generateSegVerticalCss(t) {\n return {\n top: t.top,\n bottom: -t.bottom\n };\n },\n updateFgSegCoords: function updateFgSegCoords(t) {\n this.computeSegVerticals(t), this.computeFgSegHorizontals(t), this.assignSegVerticals(t), this.assignFgSegHorizontals(t);\n },\n computeFgSegHorizontals: function computeFgSegHorizontals(t) {\n var e, n, i;\n if (this.sortEventSegs(t), e = zt(t), Ft(e), n = e[0]) {\n for (i = 0; i < n.length; i++) Nt(n[i]);\n for (i = 0; i < n.length; i++) this.computeFgSegForwardBack(n[i], 0, 0);\n }\n },\n computeFgSegForwardBack: function computeFgSegForwardBack(t, e, n) {\n var i,\n r = t.forwardSegs;\n if (void 0 === t.forwardCoord) for (r.length ? (this.sortForwardSegs(r), this.computeFgSegForwardBack(r[0], e + 1, n), t.forwardCoord = r[0].backwardCoord) : t.forwardCoord = 1, t.backwardCoord = t.forwardCoord - (t.forwardCoord - n) / (e + 1), i = 0; i < r.length; i++) this.computeFgSegForwardBack(r[i], 0, t.forwardCoord);\n },\n sortForwardSegs: function sortForwardSegs(t) {\n t.sort(lt(this, "compareForwardSegs"));\n },\n compareForwardSegs: function compareForwardSegs(t, e) {\n return e.forwardPressure - t.forwardPressure || (t.backwardCoord || 0) - (e.backwardCoord || 0) || this.compareEventSegs(t, e);\n },\n assignFgSegHorizontals: function assignFgSegHorizontals(t) {\n var e, n;\n for (e = 0; e < t.length; e++) n = t[e], n.el.css(this.generateFgSegHorizontalCss(n)), n.bottom - n.top < 30 && n.el.addClass("fc-short");\n },\n generateFgSegHorizontalCss: function generateFgSegHorizontalCss(t) {\n var e,\n n,\n i = this.view.opt("slotEventOverlap"),\n r = t.backwardCoord,\n s = t.forwardCoord,\n o = this.generateSegVerticalCss(t);\n return i && (s = Math.min(1, r + 2 * (s - r))), this.isRTL ? (e = 1 - s, n = r) : (e = r, n = 1 - s), o.zIndex = t.level + 1, o.left = 100 * e + "%", o.right = 100 * n + "%", i && t.forwardPressure && (o[this.isRTL ? "marginLeft" : "marginRight"] = 20), o;\n }\n });\n var Se = jt.View = wt.extend(le, ae, {\n type: null,\n name: null,\n title: null,\n calendar: null,\n options: null,\n el: null,\n displaying: null,\n isSkeletonRendered: !1,\n isEventsRendered: !1,\n start: null,\n end: null,\n intervalStart: null,\n intervalEnd: null,\n intervalDuration: null,\n intervalUnit: null,\n isRTL: !1,\n isSelected: !1,\n selectedEvent: null,\n eventOrderSpecs: null,\n widgetHeaderClass: null,\n widgetContentClass: null,\n highlightStateClass: null,\n nextDayThreshold: null,\n isHiddenDayHash: null,\n isNowIndicatorRendered: null,\n initialNowDate: null,\n initialNowQueriedMs: null,\n nowIndicatorTimeoutID: null,\n nowIndicatorIntervalID: null,\n constructor: function constructor(t, n, i, r) {\n this.calendar = t, this.type = this.name = n, this.options = i, this.intervalDuration = r || e.duration(1, "day"), this.nextDayThreshold = e.duration(this.opt("nextDayThreshold")), this.initThemingProps(), this.initHiddenDays(), this.isRTL = this.opt("isRTL"), this.eventOrderSpecs = M(this.opt("eventOrder")), this.initialize();\n },\n initialize: function initialize() {},\n opt: function opt(t) {\n return this.options[t];\n },\n trigger: function trigger(t, e) {\n var n = this.calendar;\n return n.trigger.apply(n, [t, e || this].concat(Array.prototype.slice.call(arguments, 2), [this]));\n },\n setDate: function setDate(t) {\n this.setRange(this.computeRange(t));\n },\n setRange: function setRange(e) {\n t.extend(this, e), this.updateTitle();\n },\n computeRange: function computeRange(t) {\n var e,\n n,\n i = O(this.intervalDuration),\n r = t.clone().startOf(i),\n s = r.clone().add(this.intervalDuration);\n return /year|month|week|day/.test(i) ? (r.stripTime(), s.stripTime()) : (r.hasTime() || (r = this.calendar.time(0)), s.hasTime() || (s = this.calendar.time(0))), e = r.clone(), e = this.skipHiddenDays(e), n = s.clone(), n = this.skipHiddenDays(n, -1, !0), {\n intervalUnit: i,\n intervalStart: r,\n intervalEnd: s,\n start: e,\n end: n\n };\n },\n computePrevDate: function computePrevDate(t) {\n return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).subtract(this.intervalDuration), -1);\n },\n computeNextDate: function computeNextDate(t) {\n return this.massageCurrentDate(t.clone().startOf(this.intervalUnit).add(this.intervalDuration));\n },\n massageCurrentDate: function massageCurrentDate(t, e) {\n return this.intervalDuration.as("days") <= 1 && this.isHiddenDay(t) && (t = this.skipHiddenDays(t, e), t.startOf("day")), t;\n },\n updateTitle: function updateTitle() {\n this.title = this.computeTitle();\n },\n computeTitle: function computeTitle() {\n return this.formatRange({\n start: this.calendar.applyTimezone(this.intervalStart),\n end: this.calendar.applyTimezone(this.intervalEnd)\n }, this.opt("titleFormat") || this.computeTitleFormat(), this.opt("titleRangeSeparator"));\n },\n computeTitleFormat: function computeTitleFormat() {\n return "year" == this.intervalUnit ? "YYYY" : "month" == this.intervalUnit ? this.opt("monthYearFormat") : this.intervalDuration.as("days") > 1 ? "ll" : "LL";\n },\n formatRange: function formatRange(t, e, n) {\n var i = t.end;\n return i.hasTime() || (i = i.clone().subtract(1)), pt(t.start, i, e, n, this.opt("isRTL"));\n },\n getAllDayHtml: function getAllDayHtml() {\n return this.opt("allDayHtml") || tt(this.opt("allDayText"));\n },\n buildGotoAnchorHtml: function buildGotoAnchorHtml(e, n, i) {\n var r, s, o, l;\n return t.isPlainObject(e) ? (r = e.date, s = e.type, o = e.forceOff) : r = e, r = jt.moment(r), l = {\n date: r.format("YYYY-MM-DD"),\n type: s || "day"\n }, "string" == typeof n && (i = n, n = null), n = n ? " " + it(n) : "", i = i || "", !o && this.opt("navLinks") ? "<a" + n + \' data-goto="\' + tt(JSON.stringify(l)) + \'">\' + i + "</a>" : "<span" + n + ">" + i + "</span>";\n },\n setElement: function setElement(t) {\n this.el = t, this.bindGlobalHandlers();\n },\n removeElement: function removeElement() {\n this.clear(), this.isSkeletonRendered && (this.unrenderSkeleton(), this.isSkeletonRendered = !1), this.unbindGlobalHandlers(), this.el.remove();\n },\n display: function display(t, e) {\n var n = this,\n i = null;\n return null != e && this.displaying && (i = this.queryScroll()), this.calendar.freezeContentHeight(), ut(this.clear(), function () {\n return n.displaying = ut(n.displayView(t), function () {\n null != e ? n.setScroll(e) : n.forceScroll(n.computeInitialScroll(i)), n.calendar.unfreezeContentHeight(), n.triggerRender();\n });\n });\n },\n clear: function clear() {\n var e = this,\n n = this.displaying;\n return n ? ut(n, function () {\n return e.displaying = null, e.clearEvents(), e.clearView();\n }) : t.when();\n },\n displayView: function displayView(t) {\n this.isSkeletonRendered || (this.renderSkeleton(), this.isSkeletonRendered = !0), t && this.setDate(t), this.render && this.render(), this.renderDates(), this.updateSize(), this.renderBusinessHours(), this.startNowIndicator();\n },\n clearView: function clearView() {\n this.unselect(), this.stopNowIndicator(), this.triggerUnrender(), this.unrenderBusinessHours(), this.unrenderDates(), this.destroy && this.destroy();\n },\n renderSkeleton: function renderSkeleton() {},\n unrenderSkeleton: function unrenderSkeleton() {},\n renderDates: function renderDates() {},\n unrenderDates: function unrenderDates() {},\n triggerRender: function triggerRender() {\n this.trigger("viewRender", this, this, this.el);\n },\n triggerUnrender: function triggerUnrender() {\n this.trigger("viewDestroy", this, this, this.el);\n },\n bindGlobalHandlers: function bindGlobalHandlers() {\n this.listenTo(t(document), "mousedown", this.handleDocumentMousedown), this.listenTo(t(document), "touchstart", this.processUnselect);\n },\n unbindGlobalHandlers: function unbindGlobalHandlers() {\n this.stopListeningTo(t(document));\n },\n initThemingProps: function initThemingProps() {\n var t = this.opt("theme") ? "ui" : "fc";\n this.widgetHeaderClass = t + "-widget-header", this.widgetContentClass = t + "-widget-content", this.highlightStateClass = t + "-state-highlight";\n },\n renderBusinessHours: function renderBusinessHours() {},\n unrenderBusinessHours: function unrenderBusinessHours() {},\n startNowIndicator: function startNowIndicator() {\n var t,\n n,\n i,\n r = this;\n this.opt("nowIndicator") && (t = this.getNowIndicatorUnit(), t && (n = lt(this, "updateNowIndicator"), this.initialNowDate = this.calendar.getNow(), this.initialNowQueriedMs = +new Date(), this.renderNowIndicator(this.initialNowDate), this.isNowIndicatorRendered = !0, i = this.initialNowDate.clone().startOf(t).add(1, t) - this.initialNowDate, this.nowIndicatorTimeoutID = setTimeout(function () {\n r.nowIndicatorTimeoutID = null, n(), i = +e.duration(1, t), i = Math.max(100, i), r.nowIndicatorIntervalID = setInterval(n, i);\n }, i)));\n },\n updateNowIndicator: function updateNowIndicator() {\n this.isNowIndicatorRendered && (this.unrenderNowIndicator(), this.renderNowIndicator(this.initialNowDate.clone().add(new Date() - this.initialNowQueriedMs)));\n },\n stopNowIndicator: function stopNowIndicator() {\n this.isNowIndicatorRendered && (this.nowIndicatorTimeoutID && (clearTimeout(this.nowIndicatorTimeoutID), this.nowIndicatorTimeoutID = null), this.nowIndicatorIntervalID && (clearTimeout(this.nowIndicatorIntervalID), this.nowIndicatorIntervalID = null), this.unrenderNowIndicator(), this.isNowIndicatorRendered = !1);\n },\n getNowIndicatorUnit: function getNowIndicatorUnit() {},\n renderNowIndicator: function renderNowIndicator(t) {},\n unrenderNowIndicator: function unrenderNowIndicator() {},\n updateSize: function updateSize(t) {\n var e;\n t && (e = this.queryScroll()), this.updateHeight(t), this.updateWidth(t), this.updateNowIndicator(), t && this.setScroll(e);\n },\n updateWidth: function updateWidth(t) {},\n updateHeight: function updateHeight(t) {\n var e = this.calendar;\n this.setHeight(e.getSuggestedViewHeight(), e.isHeightAuto());\n },\n setHeight: function setHeight(t, e) {},\n computeInitialScroll: function computeInitialScroll(t) {\n return 0;\n },\n queryScroll: function queryScroll() {},\n setScroll: function setScroll(t) {},\n forceScroll: function forceScroll(t) {\n var e = this;\n this.setScroll(t), setTimeout(function () {\n e.setScroll(t);\n }, 0);\n },\n displayEvents: function displayEvents(t) {\n var e = this.queryScroll();\n this.clearEvents(), this.renderEvents(t), this.isEventsRendered = !0, this.setScroll(e), this.triggerEventRender();\n },\n clearEvents: function clearEvents() {\n var t;\n this.isEventsRendered && (t = this.queryScroll(), this.triggerEventUnrender(), this.destroyEvents && this.destroyEvents(), this.unrenderEvents(), this.setScroll(t), this.isEventsRendered = !1);\n },\n renderEvents: function renderEvents(t) {},\n unrenderEvents: function unrenderEvents() {},\n triggerEventRender: function triggerEventRender() {\n this.renderedEventSegEach(function (t) {\n this.trigger("eventAfterRender", t.event, t.event, t.el);\n }), this.trigger("eventAfterAllRender");\n },\n triggerEventUnrender: function triggerEventUnrender() {\n this.renderedEventSegEach(function (t) {\n this.trigger("eventDestroy", t.event, t.event, t.el);\n });\n },\n resolveEventEl: function resolveEventEl(e, n) {\n var i = this.trigger("eventRender", e, e, n);\n return i === !1 ? n = null : i && i !== !0 && (n = t(i)), n;\n },\n showEvent: function showEvent(t) {\n this.renderedEventSegEach(function (t) {\n t.el.css("visibility", "");\n }, t);\n },\n hideEvent: function hideEvent(t) {\n this.renderedEventSegEach(function (t) {\n t.el.css("visibility", "hidden");\n }, t);\n },\n renderedEventSegEach: function renderedEventSegEach(t, e) {\n var n,\n i = this.getEventSegs();\n for (n = 0; n < i.length; n++) e && i[n].event._id !== e._id || i[n].el && t.call(this, i[n]);\n },\n getEventSegs: function getEventSegs() {\n return [];\n },\n isEventDraggable: function isEventDraggable(t) {\n return this.isEventStartEditable(t);\n },\n isEventStartEditable: function isEventStartEditable(t) {\n return J(t.startEditable, (t.source || {}).startEditable, this.opt("eventStartEditable"), this.isEventGenerallyEditable(t));\n },\n isEventGenerallyEditable: function isEventGenerallyEditable(t) {\n return J(t.editable, (t.source || {}).editable, this.opt("editable"));\n },\n reportEventDrop: function reportEventDrop(t, e, n, i, r) {\n var s = this.calendar,\n o = s.mutateEvent(t, e, n),\n l = function l() {\n o.undo(), s.reportEventChange();\n };\n this.triggerEventDrop(t, o.dateDelta, l, i, r), s.reportEventChange();\n },\n triggerEventDrop: function triggerEventDrop(t, e, n, i, r) {\n this.trigger("eventDrop", i[0], t, e, n, r, {});\n },\n reportExternalDrop: function reportExternalDrop(e, n, i, r, s) {\n var o,\n l,\n a = e.eventProps;\n a && (o = t.extend({}, a, n), l = this.calendar.renderEvent(o, e.stick)[0]), this.triggerExternalDrop(l, n, i, r, s);\n },\n triggerExternalDrop: function triggerExternalDrop(t, e, n, i, r) {\n this.trigger("drop", n[0], e.start, i, r), t && this.trigger("eventReceive", null, t);\n },\n renderDrag: function renderDrag(t, e) {},\n unrenderDrag: function unrenderDrag() {},\n isEventResizableFromStart: function isEventResizableFromStart(t) {\n return this.opt("eventResizableFromStart") && this.isEventResizable(t);\n },\n isEventResizableFromEnd: function isEventResizableFromEnd(t) {\n return this.isEventResizable(t);\n },\n isEventResizable: function isEventResizable(t) {\n var e = t.source || {};\n return J(t.durationEditable, e.durationEditable, this.opt("eventDurationEditable"), t.editable, e.editable, this.opt("editable"));\n },\n reportEventResize: function reportEventResize(t, e, n, i, r) {\n var s = this.calendar,\n o = s.mutateEvent(t, e, n),\n l = function l() {\n o.undo(), s.reportEventChange();\n };\n this.triggerEventResize(t, o.durationDelta, l, i, r), s.reportEventChange();\n },\n triggerEventResize: function triggerEventResize(t, e, n, i, r) {\n this.trigger("eventResize", i[0], t, e, n, r, {});\n },\n select: function select(t, e) {\n this.unselect(e), this.renderSelection(t), this.reportSelection(t, e);\n },\n renderSelection: function renderSelection(t) {},\n reportSelection: function reportSelection(t, e) {\n this.isSelected = !0, this.triggerSelect(t, e);\n },\n triggerSelect: function triggerSelect(t, e) {\n this.trigger("select", null, this.calendar.applyTimezone(t.start), this.calendar.applyTimezone(t.end), e);\n },\n unselect: function unselect(t) {\n this.isSelected && (this.isSelected = !1, this.destroySelection && this.destroySelection(), this.unrenderSelection(), this.trigger("unselect", null, t));\n },\n unrenderSelection: function unrenderSelection() {},\n selectEvent: function selectEvent(t) {\n this.selectedEvent && this.selectedEvent === t || (this.unselectEvent(), this.renderedEventSegEach(function (t) {\n t.el.addClass("fc-selected");\n }, t), this.selectedEvent = t);\n },\n unselectEvent: function unselectEvent() {\n this.selectedEvent && (this.renderedEventSegEach(function (t) {\n t.el.removeClass("fc-selected");\n }, this.selectedEvent), this.selectedEvent = null);\n },\n isEventSelected: function isEventSelected(t) {\n return this.selectedEvent && this.selectedEvent._id === t._id;\n },\n handleDocumentMousedown: function handleDocumentMousedown(t) {\n S(t) && this.processUnselect(t);\n },\n processUnselect: function processUnselect(t) {\n this.processRangeUnselect(t), this.processEventUnselect(t);\n },\n processRangeUnselect: function processRangeUnselect(e) {\n var n;\n this.isSelected && this.opt("unselectAuto") && (n = this.opt("unselectCancel"), n && t(e.target).closest(n).length || this.unselect(e));\n },\n processEventUnselect: function processEventUnselect(e) {\n this.selectedEvent && (t(e.target).closest(".fc-selected").length || this.unselectEvent());\n },\n triggerDayClick: function triggerDayClick(t, e, n) {\n this.trigger("dayClick", e, this.calendar.applyTimezone(t.start), n);\n },\n initHiddenDays: function initHiddenDays() {\n var e,\n n = this.opt("hiddenDays") || [],\n i = [],\n r = 0;\n for (this.opt("weekends") === !1 && n.push(0, 6), e = 0; e < 7; e++) (i[e] = t.inArray(e, n) !== -1) || r++;\n if (!r) throw "invalid hiddenDays";\n this.isHiddenDayHash = i;\n },\n isHiddenDay: function isHiddenDay(t) {\n return e.isMoment(t) && (t = t.day()), this.isHiddenDayHash[t];\n },\n skipHiddenDays: function skipHiddenDays(t, e, n) {\n var i = t.clone();\n for (e = e || 1; this.isHiddenDayHash[(i.day() + (n ? e : 0) + 7) % 7];) i.add(e, "days");\n return i;\n },\n computeDayRange: function computeDayRange(t) {\n var e,\n n = t.start.clone().stripTime(),\n i = t.end,\n r = null;\n return i && (r = i.clone().stripTime(), e = +i.time(), e && e >= this.nextDayThreshold && r.add(1, "days")), (!i || r <= n) && (r = n.clone().add(1, "days")), {\n start: n,\n end: r\n };\n },\n isMultiDayEvent: function isMultiDayEvent(t) {\n var e = this.computeDayRange(t);\n return e.end.diff(e.start, "days") > 1;\n }\n }),\n we = jt.Scroller = wt.extend({\n el: null,\n scrollEl: null,\n overflowX: null,\n overflowY: null,\n constructor: function constructor(t) {\n t = t || {}, this.overflowX = t.overflowX || t.overflow || "auto", this.overflowY = t.overflowY || t.overflow || "auto";\n },\n render: function render() {\n this.el = this.renderEl(), this.applyOverflow();\n },\n renderEl: function renderEl() {\n return this.scrollEl = t(\'<div class="fc-scroller"></div>\');\n },\n clear: function clear() {\n this.setHeight("auto"), this.applyOverflow();\n },\n destroy: function destroy() {\n this.el.remove();\n },\n applyOverflow: function applyOverflow() {\n this.scrollEl.css({\n "overflow-x": this.overflowX,\n "overflow-y": this.overflowY\n });\n },\n lockOverflow: function lockOverflow(t) {\n var e = this.overflowX,\n n = this.overflowY;\n t = t || this.getScrollbarWidths(), "auto" === e && (e = t.top || t.bottom || this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth ? "scroll" : "hidden"), "auto" === n && (n = t.left || t.right || this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight ? "scroll" : "hidden"), this.scrollEl.css({\n "overflow-x": e,\n "overflow-y": n\n });\n },\n setHeight: function setHeight(t) {\n this.scrollEl.height(t);\n },\n getScrollTop: function getScrollTop() {\n return this.scrollEl.scrollTop();\n },\n setScrollTop: function setScrollTop(t) {\n this.scrollEl.scrollTop(t);\n },\n getClientWidth: function getClientWidth() {\n return this.scrollEl[0].clientWidth;\n },\n getClientHeight: function getClientHeight() {\n return this.scrollEl[0].clientHeight;\n },\n getScrollbarWidths: function getScrollbarWidths() {\n return p(this.scrollEl);\n }\n }),\n Ee = jt.Calendar = wt.extend({\n dirDefaults: null,\n localeDefaults: null,\n overrides: null,\n dynamicOverrides: null,\n options: null,\n viewSpecCache: null,\n view: null,\n header: null,\n loadingLevel: 0,\n constructor: Ot,\n initialize: function initialize() {},\n populateOptionsHash: function populateOptionsHash() {\n var t, e, i, r;\n t = J(this.dynamicOverrides.locale, this.overrides.locale), e = De[t], e || (t = Ee.defaults.locale, e = De[t] || {}), i = J(this.dynamicOverrides.isRTL, this.overrides.isRTL, e.isRTL, Ee.defaults.isRTL), r = i ? Ee.rtlDefaults : {}, this.dirDefaults = r, this.localeDefaults = e, this.options = n([Ee.defaults, r, e, this.overrides, this.dynamicOverrides]), Vt(this.options);\n },\n getViewSpec: function getViewSpec(t) {\n var e = this.viewSpecCache;\n return e[t] || (e[t] = this.buildViewSpec(t));\n },\n getUnitViewSpec: function getUnitViewSpec(e) {\n var n, i, r;\n if (t.inArray(e, Xt) != -1) for (n = this.header.getViewsWithButtons(), t.each(jt.views, function (t) {\n n.push(t);\n }), i = 0; i < n.length; i++) if (r = this.getViewSpec(n[i]), r && r.singleUnit == e) return r;\n },\n buildViewSpec: function buildViewSpec(t) {\n for (var i, r, s, o, l = this.overrides.views || {}, a = [], u = [], d = [], c = t; c;) i = Ut[c], r = l[c], c = null, "function" == typeof i && (i = {\n "class": i\n }), i && (a.unshift(i), u.unshift(i.defaults || {}), s = s || i.duration, c = c || i.type), r && (d.unshift(r), s = s || r.duration, c = c || r.type);\n return i = q(a), i.type = t, !!i["class"] && (s && (s = e.duration(s), s.valueOf() && (i.duration = s, o = O(s), 1 === s.as(o) && (i.singleUnit = o, d.unshift(l[o] || {})))), i.defaults = n(u), i.overrides = n(d), this.buildViewSpecOptions(i), this.buildViewSpecButtonText(i, t), i);\n },\n buildViewSpecOptions: function buildViewSpecOptions(t) {\n t.options = n([Ee.defaults, t.defaults, this.dirDefaults, this.localeDefaults, this.overrides, t.overrides, this.dynamicOverrides]), Vt(t.options);\n },\n buildViewSpecButtonText: function buildViewSpecButtonText(t, e) {\n function n(n) {\n var i = n.buttonText || {};\n return i[e] || (t.buttonTextKey ? i[t.buttonTextKey] : null) || (t.singleUnit ? i[t.singleUnit] : null);\n }\n t.buttonTextOverride = n(this.dynamicOverrides) || n(this.overrides) || t.overrides.buttonText, t.buttonTextDefault = n(this.localeDefaults) || n(this.dirDefaults) || t.defaults.buttonText || n(Ee.defaults) || (t.duration ? this.humanizeDuration(t.duration) : null) || e;\n },\n instantiateView: function instantiateView(t) {\n var e = this.getViewSpec(t);\n return new e["class"](this, t, e.options, e.duration);\n },\n isValidViewType: function isValidViewType(t) {\n return Boolean(this.getViewSpec(t));\n },\n pushLoading: function pushLoading() {\n this.loadingLevel++ || this.trigger("loading", null, !0, this.view);\n },\n popLoading: function popLoading() {\n --this.loadingLevel || this.trigger("loading", null, !1, this.view);\n },\n buildSelectSpan: function buildSelectSpan(t, e) {\n var n,\n i = this.moment(t).stripZone();\n return n = e ? this.moment(e).stripZone() : i.hasTime() ? i.clone().add(this.defaultTimedEventDuration) : i.clone().add(this.defaultAllDayEventDuration), {\n start: i,\n end: n\n };\n }\n });\n Ee.mixin(le), Ee.mixin({\n optionHandlers: null,\n bindOption: function bindOption(t, e) {\n this.bindOptions([t], e);\n },\n bindOptions: function bindOptions(t, e) {\n var n,\n i = {\n func: e,\n names: t\n };\n for (n = 0; n < t.length; n++) this.registerOptionHandlerObj(t[n], i);\n this.triggerOptionHandlerObj(i);\n },\n registerOptionHandlerObj: function registerOptionHandlerObj(t, e) {\n (this.optionHandlers[t] || (this.optionHandlers[t] = [])).push(e);\n },\n triggerOptionHandlers: function triggerOptionHandlers(t) {\n var e,\n n = this.optionHandlers[t] || [];\n for (e = 0; e < n.length; e++) this.triggerOptionHandlerObj(n[e]);\n },\n triggerOptionHandlerObj: function triggerOptionHandlerObj(t) {\n var e,\n n = t.names,\n i = [];\n for (e = 0; e < n.length; e++) i.push(this.options[n[e]]);\n t.func.apply(this, i);\n }\n }), Ee.defaults = {\n titleRangeSeparator: " – ",\n monthYearFormat: "MMMM YYYY",\n defaultTimedEventDuration: "02:00:00",\n defaultAllDayEventDuration: {\n days: 1\n },\n forceEventDuration: !1,\n nextDayThreshold: "09:00:00",\n defaultView: "month",\n aspectRatio: 1.35,\n header: {\n left: "title",\n center: "",\n right: "today prev,next"\n },\n weekends: !0,\n weekNumbers: !1,\n weekNumberTitle: "W",\n weekNumberCalculation: "local",\n scrollTime: "06:00:00",\n lazyFetching: !0,\n startParam: "start",\n endParam: "end",\n timezoneParam: "timezone",\n timezone: !1,\n isRTL: !1,\n buttonText: {\n prev: "prev",\n next: "next",\n prevYear: "prev year",\n nextYear: "next year",\n year: "year",\n today: "today",\n month: "month",\n week: "week",\n day: "day"\n },\n buttonIcons: {\n prev: "left-single-arrow",\n next: "right-single-arrow",\n prevYear: "left-double-arrow",\n nextYear: "right-double-arrow"\n },\n allDayText: "all-day",\n theme: !1,\n themeButtonIcons: {\n prev: "circle-triangle-w",\n next: "circle-triangle-e",\n prevYear: "seek-prev",\n nextYear: "seek-next"\n },\n dragOpacity: .75,\n dragRevertDuration: 500,\n dragScroll: !0,\n unselectAuto: !0,\n dropAccept: "*",\n eventOrder: "title",\n eventLimit: !1,\n eventLimitText: "more",\n eventLimitClick: "popover",\n dayPopoverFormat: "LL",\n handleWindowResize: !0,\n windowResizeDelay: 100,\n longPressDelay: 1e3\n }, Ee.englishDefaults = {\n dayPopoverFormat: "dddd, MMMM D"\n }, Ee.rtlDefaults = {\n header: {\n left: "next,prev today",\n center: "",\n right: "title"\n },\n buttonIcons: {\n prev: "right-single-arrow",\n next: "left-single-arrow",\n prevYear: "right-double-arrow",\n nextYear: "left-double-arrow"\n },\n themeButtonIcons: {\n prev: "circle-triangle-e",\n next: "circle-triangle-w",\n nextYear: "seek-prev",\n prevYear: "seek-next"\n }\n };\n var De = jt.locales = {};\n jt.datepickerLocale = function (e, n, i) {\n var r = De[e] || (De[e] = {});\n r.isRTL = i.isRTL, r.weekNumberTitle = i.weekHeader, t.each(be, function (t, e) {\n r[t] = e(i);\n }), t.datepicker && (t.datepicker.regional[n] = t.datepicker.regional[e] = i, t.datepicker.regional.en = t.datepicker.regional[""], t.datepicker.setDefaults(i));\n }, jt.locale = function (e, i) {\n var r, s;\n r = De[e] || (De[e] = {}), i && (r = De[e] = n([r, i])), s = Pt(e), t.each(Ce, function (t, e) {\n null == r[t] && (r[t] = e(s, r));\n }), Ee.defaults.locale = e;\n };\n var be = {\n buttonText: function buttonText(t) {\n return {\n prev: et(t.prevText),\n next: et(t.nextText),\n today: et(t.currentText)\n };\n },\n monthYearFormat: function monthYearFormat(t) {\n return t.showMonthAfterYear ? "YYYY[" + t.yearSuffix + "] MMMM" : "MMMM YYYY[" + t.yearSuffix + "]";\n }\n },\n Ce = {\n dayOfMonthFormat: function dayOfMonthFormat(t, e) {\n var n = t.longDateFormat("l");\n return n = n.replace(/^Y+[^\\w\\s]*|[^\\w\\s]*Y+$/g, ""), e.isRTL ? n += " ddd" : n = "ddd " + n, n;\n },\n mediumTimeFormat: function mediumTimeFormat(t) {\n return t.longDateFormat("LT").replace(/\\s*a$/i, "a");\n },\n smallTimeFormat: function smallTimeFormat(t) {\n return t.longDateFormat("LT").replace(":mm", "(:mm)").replace(/(\\Wmm)$/, "($1)").replace(/\\s*a$/i, "a");\n },\n extraSmallTimeFormat: function extraSmallTimeFormat(t) {\n return t.longDateFormat("LT").replace(":mm", "(:mm)").replace(/(\\Wmm)$/, "($1)").replace(/\\s*a$/i, "t");\n },\n hourFormat: function hourFormat(t) {\n return t.longDateFormat("LT").replace(":mm", "").replace(/(\\Wmm)$/, "").replace(/\\s*a$/i, "a");\n },\n noMeridiemTimeFormat: function noMeridiemTimeFormat(t) {\n return t.longDateFormat("LT").replace(/\\s*a$/i, "");\n }\n },\n He = {\n smallDayDateFormat: function smallDayDateFormat(t) {\n return t.isRTL ? "D dd" : "dd D";\n },\n weekFormat: function weekFormat(t) {\n return t.isRTL ? "w[ " + t.weekNumberTitle + "]" : "[" + t.weekNumberTitle + " ]w";\n },\n smallWeekFormat: function smallWeekFormat(t) {\n return t.isRTL ? "w[" + t.weekNumberTitle + "]" : "[" + t.weekNumberTitle + "]w";\n }\n };\n jt.locale("en", Ee.englishDefaults), jt.sourceNormalizers = [], jt.sourceFetchers = [];\n var Te = {\n dataType: "json",\n cache: !1\n },\n xe = 1;\n Ee.prototype.normalizeEvent = function (t) {}, Ee.prototype.spanContainsSpan = function (t, e) {\n var n = t.start.clone().stripZone(),\n i = this.getEventEnd(t).stripZone();\n return e.start >= n && e.end <= i;\n }, Ee.prototype.getPeerEvents = function (t, e) {\n var n,\n i,\n r = this.getEventCache(),\n s = [];\n for (n = 0; n < r.length; n++) i = r[n], e && e._id === i._id || s.push(i);\n return s;\n }, Ee.prototype.isEventSpanAllowed = function (t, e) {\n var n = e.source || {},\n i = J(e.constraint, n.constraint, this.options.eventConstraint),\n r = J(e.overlap, n.overlap, this.options.eventOverlap);\n return this.isSpanAllowed(t, i, r, e) && (!this.options.eventAllow || this.options.eventAllow(t, e) !== !1);\n }, Ee.prototype.isExternalSpanAllowed = function (e, n, i) {\n var r, s;\n return i && (r = t.extend({}, i, n), s = this.expandEvent(this.buildEventFromInput(r))[0]), s ? this.isEventSpanAllowed(e, s) : this.isSelectionSpanAllowed(e);\n }, Ee.prototype.isSelectionSpanAllowed = function (t) {\n return this.isSpanAllowed(t, this.options.selectConstraint, this.options.selectOverlap) && (!this.options.selectAllow || this.options.selectAllow(t) !== !1);\n }, Ee.prototype.isSpanAllowed = function (t, e, n, i) {\n var r, s, o, l, a, u;\n if (null != e && (r = this.constraintToEvents(e))) {\n for (s = !1, l = 0; l < r.length; l++) if (this.spanContainsSpan(r[l], t)) {\n s = !0;\n break;\n }\n if (!s) return !1;\n }\n for (o = this.getPeerEvents(t, i), l = 0; l < o.length; l++) if (a = o[l], this.eventIntersectsRange(a, t)) {\n if (n === !1) return !1;\n if ("function" == typeof n && !n(a, i)) return !1;\n if (i) {\n if (u = J(a.overlap, (a.source || {}).overlap), u === !1) return !1;\n if ("function" == typeof u && !u(i, a)) return !1;\n }\n }\n return !0;\n }, Ee.prototype.constraintToEvents = function (t) {\n return "businessHours" === t ? this.getCurrentBusinessHourEvents() : "object" == _typeof(t) ? null != t.start ? this.expandEvent(this.buildEventFromInput(t)) : null : this.clientEvents(t);\n }, Ee.prototype.eventIntersectsRange = function (t, e) {\n var n = t.start.clone().stripZone(),\n i = this.getEventEnd(t).stripZone();\n return e.start < i && e.end > n;\n };\n var Re = {\n id: "_fcBusinessHours",\n start: "09:00",\n end: "17:00",\n dow: [1, 2, 3, 4, 5],\n rendering: "inverse-background"\n };\n Ee.prototype.getCurrentBusinessHourEvents = function (t) {\n return this.computeBusinessHourEvents(t, this.options.businessHours);\n }, Ee.prototype.computeBusinessHourEvents = function (e, n) {\n return n === !0 ? this.expandBusinessHourEvents(e, [{}]) : t.isPlainObject(n) ? this.expandBusinessHourEvents(e, [n]) : t.isArray(n) ? this.expandBusinessHourEvents(e, n, !0) : [];\n }, Ee.prototype.expandBusinessHourEvents = function (e, n, i) {\n var r,\n s,\n o = this.getView(),\n l = [];\n for (r = 0; r < n.length; r++) s = n[r], i && !s.dow || (s = t.extend({}, Re, s), e && (s.start = null, s.end = null), l.push.apply(l, this.expandEvent(this.buildEventFromInput(s), o.start, o.end)));\n return l;\n };\n var Ie = jt.BasicView = Se.extend({\n scroller: null,\n dayGridClass: me,\n dayGrid: null,\n dayNumbersVisible: !1,\n colWeekNumbersVisible: !1,\n cellWeekNumbersVisible: !1,\n weekNumberWidth: null,\n headContainerEl: null,\n headRowEl: null,\n initialize: function initialize() {\n this.dayGrid = this.instantiateDayGrid(), this.scroller = new we({\n overflowX: "hidden",\n overflowY: "auto"\n });\n },\n instantiateDayGrid: function instantiateDayGrid() {\n var t = this.dayGridClass.extend(ke);\n return new t(this);\n },\n setRange: function setRange(t) {\n Se.prototype.setRange.call(this, t), this.dayGrid.breakOnWeeks = /year|month|week/.test(this.intervalUnit), this.dayGrid.setRange(t);\n },\n computeRange: function computeRange(t) {\n var e = Se.prototype.computeRange.call(this, t);\n return /year|month/.test(e.intervalUnit) && (e.start.startOf("week"), e.start = this.skipHiddenDays(e.start), e.end.weekday() && (e.end.add(1, "week").startOf("week"), e.end = this.skipHiddenDays(e.end, -1, !0))), e;\n },\n renderDates: function renderDates() {\n this.dayNumbersVisible = this.dayGrid.rowCnt > 1, this.opt("weekNumbers") && (this.opt("weekNumbersWithinDays") ? (this.cellWeekNumbersVisible = !0, this.colWeekNumbersVisible = !1) : (this.cellWeekNumbersVisible = !1, this.colWeekNumbersVisible = !0)), this.dayGrid.numbersVisible = this.dayNumbersVisible || this.cellWeekNumbersVisible || this.colWeekNumbersVisible, this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()), this.renderHead(), this.scroller.render();\n var e = this.scroller.el.addClass("fc-day-grid-container"),\n n = t(\'<div class="fc-day-grid" />\').appendTo(e);\n this.el.find(".fc-body > tr > td").append(e), this.dayGrid.setElement(n), this.dayGrid.renderDates(this.hasRigidRows());\n },\n renderHead: function renderHead() {\n this.headContainerEl = this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()), this.headRowEl = this.headContainerEl.find(".fc-row");\n },\n unrenderDates: function unrenderDates() {\n this.dayGrid.unrenderDates(), this.dayGrid.removeElement(), this.scroller.destroy();\n },\n renderBusinessHours: function renderBusinessHours() {\n this.dayGrid.renderBusinessHours();\n },\n unrenderBusinessHours: function unrenderBusinessHours() {\n this.dayGrid.unrenderBusinessHours();\n },\n renderSkeletonHtml: function renderSkeletonHtml() {\n return \'<table><thead class="fc-head"><tr><td class="fc-head-container \' + this.widgetHeaderClass + \'"></td></tr></thead><tbody class="fc-body"><tr><td class="\' + this.widgetContentClass + \'"></td></tr></tbody></table>\';\n },\n weekNumberStyleAttr: function weekNumberStyleAttr() {\n return null !== this.weekNumberWidth ? \'style="width:\' + this.weekNumberWidth + \'px"\' : "";\n },\n hasRigidRows: function hasRigidRows() {\n var t = this.opt("eventLimit");\n return t && "number" != typeof t;\n },\n updateWidth: function updateWidth() {\n this.colWeekNumbersVisible && (this.weekNumberWidth = u(this.el.find(".fc-week-number")));\n },\n setHeight: function setHeight(t, e) {\n var n,\n s,\n o = this.opt("eventLimit");\n this.scroller.clear(), r(this.headRowEl), this.dayGrid.removeSegPopover(), o && "number" == typeof o && this.dayGrid.limitRows(o), n = this.computeScrollerHeight(t), this.setGridHeight(n, e), o && "number" != typeof o && this.dayGrid.limitRows(o), e || (this.scroller.setHeight(n), s = this.scroller.getScrollbarWidths(), (s.left || s.right) && (i(this.headRowEl, s), n = this.computeScrollerHeight(t), this.scroller.setHeight(n)), this.scroller.lockOverflow(s));\n },\n computeScrollerHeight: function computeScrollerHeight(t) {\n return t - d(this.el, this.scroller.el);\n },\n setGridHeight: function setGridHeight(t, e) {\n e ? a(this.dayGrid.rowEls) : l(this.dayGrid.rowEls, t, !0);\n },\n queryScroll: function queryScroll() {\n return this.scroller.getScrollTop();\n },\n setScroll: function setScroll(t) {\n this.scroller.setScrollTop(t);\n },\n prepareHits: function prepareHits() {\n this.dayGrid.prepareHits();\n },\n releaseHits: function releaseHits() {\n this.dayGrid.releaseHits();\n },\n queryHit: function queryHit(t, e) {\n return this.dayGrid.queryHit(t, e);\n },\n getHitSpan: function getHitSpan(t) {\n return this.dayGrid.getHitSpan(t);\n },\n getHitEl: function getHitEl(t) {\n return this.dayGrid.getHitEl(t);\n },\n renderEvents: function renderEvents(t) {\n this.dayGrid.renderEvents(t), this.updateHeight();\n },\n getEventSegs: function getEventSegs() {\n return this.dayGrid.getEventSegs();\n },\n unrenderEvents: function unrenderEvents() {\n this.dayGrid.unrenderEvents();\n },\n renderDrag: function renderDrag(t, e) {\n return this.dayGrid.renderDrag(t, e);\n },\n unrenderDrag: function unrenderDrag() {\n this.dayGrid.unrenderDrag();\n },\n renderSelection: function renderSelection(t) {\n this.dayGrid.renderSelection(t);\n },\n unrenderSelection: function unrenderSelection() {\n this.dayGrid.unrenderSelection();\n }\n }),\n ke = {\n renderHeadIntroHtml: function renderHeadIntroHtml() {\n var t = this.view;\n return t.colWeekNumbersVisible ? \'<th class="fc-week-number \' + t.widgetHeaderClass + \'" \' + t.weekNumberStyleAttr() + "><span>" + tt(t.opt("weekNumberTitle")) + "</span></th>" : "";\n },\n renderNumberIntroHtml: function renderNumberIntroHtml(t) {\n var e = this.view,\n n = this.getCellDate(t, 0);\n return e.colWeekNumbersVisible ? \'<td class="fc-week-number" \' + e.weekNumberStyleAttr() + ">" + e.buildGotoAnchorHtml({\n date: n,\n type: "week",\n forceOff: 1 === this.colCnt\n }, n.format("w")) + "</td>" : "";\n },\n renderBgIntroHtml: function renderBgIntroHtml() {\n var t = this.view;\n return t.colWeekNumbersVisible ? \'<td class="fc-week-number \' + t.widgetContentClass + \'" \' + t.weekNumberStyleAttr() + "></td>" : "";\n },\n renderIntroHtml: function renderIntroHtml() {\n var t = this.view;\n return t.colWeekNumbersVisible ? \'<td class="fc-week-number" \' + t.weekNumberStyleAttr() + "></td>" : "";\n }\n },\n Me = jt.MonthView = Ie.extend({\n computeRange: function computeRange(t) {\n var e,\n n = Ie.prototype.computeRange.call(this, t);\n return this.isFixedWeeks() && (e = Math.ceil(n.end.diff(n.start, "weeks", !0)), n.end.add(6 - e, "weeks")), n;\n },\n setGridHeight: function setGridHeight(t, e) {\n e && (t *= this.rowCnt / 6), l(this.dayGrid.rowEls, t, !e);\n },\n isFixedWeeks: function isFixedWeeks() {\n return this.opt("fixedWeekCount");\n }\n });\n Ut.basic = {\n "class": Ie\n }, Ut.basicDay = {\n type: "basic",\n duration: {\n days: 1\n }\n }, Ut.basicWeek = {\n type: "basic",\n duration: {\n weeks: 1\n }\n }, Ut.month = {\n "class": Me,\n duration: {\n months: 1\n },\n defaults: {\n fixedWeekCount: !0\n }\n };\n var Le = jt.AgendaView = Se.extend({\n scroller: null,\n timeGridClass: ye,\n timeGrid: null,\n dayGridClass: me,\n dayGrid: null,\n axisWidth: null,\n headContainerEl: null,\n noScrollRowEls: null,\n bottomRuleEl: null,\n initialize: function initialize() {\n this.timeGrid = this.instantiateTimeGrid(), this.opt("allDaySlot") && (this.dayGrid = this.instantiateDayGrid()), this.scroller = new we({\n overflowX: "hidden",\n overflowY: "auto"\n });\n },\n instantiateTimeGrid: function instantiateTimeGrid() {\n var t = this.timeGridClass.extend(Be);\n return new t(this);\n },\n instantiateDayGrid: function instantiateDayGrid() {\n var t = this.dayGridClass.extend(ze);\n return new t(this);\n },\n setRange: function setRange(t) {\n Se.prototype.setRange.call(this, t), this.timeGrid.setRange(t), this.dayGrid && this.dayGrid.setRange(t);\n },\n renderDates: function renderDates() {\n this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()), this.renderHead(), this.scroller.render();\n var e = this.scroller.el.addClass("fc-time-grid-container"),\n n = t(\'<div class="fc-time-grid" />\').appendTo(e);\n this.el.find(".fc-body > tr > td").append(e), this.timeGrid.setElement(n), this.timeGrid.renderDates(), this.bottomRuleEl = t(\'<hr class="fc-divider \' + this.widgetHeaderClass + \'"/>\').appendTo(this.timeGrid.el), this.dayGrid && (this.dayGrid.setElement(this.el.find(".fc-day-grid")), this.dayGrid.renderDates(), this.dayGrid.bottomCoordPadding = this.dayGrid.el.next("hr").outerHeight()), this.noScrollRowEls = this.el.find(".fc-row:not(.fc-scroller *)");\n },\n renderHead: function renderHead() {\n this.headContainerEl = this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml());\n },\n unrenderDates: function unrenderDates() {\n this.timeGrid.unrenderDates(), this.timeGrid.removeElement(), this.dayGrid && (this.dayGrid.unrenderDates(), this.dayGrid.removeElement()), this.scroller.destroy();\n },\n renderSkeletonHtml: function renderSkeletonHtml() {\n return \'<table><thead class="fc-head"><tr><td class="fc-head-container \' + this.widgetHeaderClass + \'"></td></tr></thead><tbody class="fc-body"><tr><td class="\' + this.widgetContentClass + \'">\' + (this.dayGrid ? \'<div class="fc-day-grid"/><hr class="fc-divider \' + this.widgetHeaderClass + \'"/>\' : "") + "</td></tr></tbody></table>";\n },\n axisStyleAttr: function axisStyleAttr() {\n return null !== this.axisWidth ? \'style="width:\' + this.axisWidth + \'px"\' : "";\n },\n renderBusinessHours: function renderBusinessHours() {\n this.timeGrid.renderBusinessHours(), this.dayGrid && this.dayGrid.renderBusinessHours();\n },\n unrenderBusinessHours: function unrenderBusinessHours() {\n this.timeGrid.unrenderBusinessHours(), this.dayGrid && this.dayGrid.unrenderBusinessHours();\n },\n getNowIndicatorUnit: function getNowIndicatorUnit() {\n return this.timeGrid.getNowIndicatorUnit();\n },\n renderNowIndicator: function renderNowIndicator(t) {\n this.timeGrid.renderNowIndicator(t);\n },\n unrenderNowIndicator: function unrenderNowIndicator() {\n this.timeGrid.unrenderNowIndicator();\n },\n updateSize: function updateSize(t) {\n this.timeGrid.updateSize(t), Se.prototype.updateSize.call(this, t);\n },\n updateWidth: function updateWidth() {\n this.axisWidth = u(this.el.find(".fc-axis"));\n },\n setHeight: function setHeight(t, e) {\n var n, s, o;\n this.bottomRuleEl.hide(), this.scroller.clear(), r(this.noScrollRowEls), this.dayGrid && (this.dayGrid.removeSegPopover(), n = this.opt("eventLimit"), n && "number" != typeof n && (n = Fe), n && this.dayGrid.limitRows(n)), e || (s = this.computeScrollerHeight(t), this.scroller.setHeight(s), o = this.scroller.getScrollbarWidths(), (o.left || o.right) && (i(this.noScrollRowEls, o), s = this.computeScrollerHeight(t), this.scroller.setHeight(s)), this.scroller.lockOverflow(o), this.timeGrid.getTotalSlatHeight() < s && this.bottomRuleEl.show());\n },\n computeScrollerHeight: function computeScrollerHeight(t) {\n return t - d(this.el, this.scroller.el);\n },\n computeInitialScroll: function computeInitialScroll() {\n var t = e.duration(this.opt("scrollTime")),\n n = this.timeGrid.computeTimeTop(t);\n return n = Math.ceil(n), n && n++, n;\n },\n queryScroll: function queryScroll() {\n return this.scroller.getScrollTop();\n },\n setScroll: function setScroll(t) {\n this.scroller.setScrollTop(t);\n },\n prepareHits: function prepareHits() {\n this.timeGrid.prepareHits(), this.dayGrid && this.dayGrid.prepareHits();\n },\n releaseHits: function releaseHits() {\n this.timeGrid.releaseHits(), this.dayGrid && this.dayGrid.releaseHits();\n },\n queryHit: function queryHit(t, e) {\n var n = this.timeGrid.queryHit(t, e);\n return !n && this.dayGrid && (n = this.dayGrid.queryHit(t, e)), n;\n },\n getHitSpan: function getHitSpan(t) {\n return t.component.getHitSpan(t);\n },\n getHitEl: function getHitEl(t) {\n return t.component.getHitEl(t);\n },\n renderEvents: function renderEvents(t) {\n var e,\n n,\n i = [],\n r = [],\n s = [];\n for (n = 0; n < t.length; n++) t[n].allDay ? i.push(t[n]) : r.push(t[n]);\n e = this.timeGrid.renderEvents(r), this.dayGrid && (s = this.dayGrid.renderEvents(i)), this.updateHeight();\n },\n getEventSegs: function getEventSegs() {\n return this.timeGrid.getEventSegs().concat(this.dayGrid ? this.dayGrid.getEventSegs() : []);\n },\n unrenderEvents: function unrenderEvents() {\n this.timeGrid.unrenderEvents(), this.dayGrid && this.dayGrid.unrenderEvents();\n },\n renderDrag: function renderDrag(t, e) {\n return t.start.hasTime() ? this.timeGrid.renderDrag(t, e) : this.dayGrid ? this.dayGrid.renderDrag(t, e) : void 0;\n },\n unrenderDrag: function unrenderDrag() {\n this.timeGrid.unrenderDrag(), this.dayGrid && this.dayGrid.unrenderDrag();\n },\n renderSelection: function renderSelection(t) {\n t.start.hasTime() || t.end.hasTime() ? this.timeGrid.renderSelection(t) : this.dayGrid && this.dayGrid.renderSelection(t);\n },\n unrenderSelection: function unrenderSelection() {\n this.timeGrid.unrenderSelection(), this.dayGrid && this.dayGrid.unrenderSelection();\n }\n }),\n Be = {\n renderHeadIntroHtml: function renderHeadIntroHtml() {\n var t,\n e = this.view;\n return e.opt("weekNumbers") ? (t = this.start.format(e.opt("smallWeekFormat")), \'<th class="fc-axis fc-week-number \' + e.widgetHeaderClass + \'" \' + e.axisStyleAttr() + ">" + e.buildGotoAnchorHtml({\n date: this.start,\n type: "week",\n forceOff: this.colCnt > 1\n }, tt(t)) + "</th>") : \'<th class="fc-axis \' + e.widgetHeaderClass + \'" \' + e.axisStyleAttr() + "></th>";\n },\n renderBgIntroHtml: function renderBgIntroHtml() {\n var t = this.view;\n return \'<td class="fc-axis \' + t.widgetContentClass + \'" \' + t.axisStyleAttr() + "></td>";\n },\n renderIntroHtml: function renderIntroHtml() {\n var t = this.view;\n return \'<td class="fc-axis" \' + t.axisStyleAttr() + "></td>";\n }\n },\n ze = {\n renderBgIntroHtml: function renderBgIntroHtml() {\n var t = this.view;\n return \'<td class="fc-axis \' + t.widgetContentClass + \'" \' + t.axisStyleAttr() + "><span>" + t.getAllDayHtml() + "</span></td>";\n },\n renderIntroHtml: function renderIntroHtml() {\n var t = this.view;\n return \'<td class="fc-axis" \' + t.axisStyleAttr() + "></td>";\n }\n },\n Fe = 5,\n Ne = [{\n hours: 1\n }, {\n minutes: 30\n }, {\n minutes: 15\n }, {\n seconds: 30\n }, {\n seconds: 15\n }];\n Ut.agenda = {\n "class": Le,\n defaults: {\n allDaySlot: !0,\n slotDuration: "00:30:00",\n minTime: "00:00:00",\n maxTime: "24:00:00",\n slotEventOverlap: !0\n }\n }, Ut.agendaDay = {\n type: "agenda",\n duration: {\n days: 1\n }\n }, Ut.agendaWeek = {\n type: "agenda",\n duration: {\n weeks: 1\n }\n };\n var Ge = Se.extend({\n grid: null,\n scroller: null,\n initialize: function initialize() {\n this.grid = new Ae(this), this.scroller = new we({\n overflowX: "hidden",\n overflowY: "auto"\n });\n },\n setRange: function setRange(t) {\n Se.prototype.setRange.call(this, t), this.grid.setRange(t);\n },\n renderSkeleton: function renderSkeleton() {\n this.el.addClass("fc-list-view " + this.widgetContentClass), this.scroller.render(), this.scroller.el.appendTo(this.el), this.grid.setElement(this.scroller.scrollEl);\n },\n unrenderSkeleton: function unrenderSkeleton() {\n this.scroller.destroy();\n },\n setHeight: function setHeight(t, e) {\n this.scroller.setHeight(this.computeScrollerHeight(t));\n },\n computeScrollerHeight: function computeScrollerHeight(t) {\n return t - d(this.el, this.scroller.el);\n },\n renderEvents: function renderEvents(t) {\n this.grid.renderEvents(t);\n },\n unrenderEvents: function unrenderEvents() {\n this.grid.unrenderEvents();\n },\n isEventResizable: function isEventResizable(t) {\n return !1;\n },\n isEventDraggable: function isEventDraggable(t) {\n return !1;\n }\n }),\n Ae = pe.extend({\n segSelector: ".fc-list-item",\n hasDayInteractions: !1,\n spanToSegs: function spanToSegs(t) {\n for (var e, n = this.view, i = n.start.clone().time(0), r = 0, s = []; i < n.end;) if (e = F(t, {\n start: i,\n end: i.clone().add(1, "day")\n }), e && (e.dayIndex = r, s.push(e)), i.add(1, "day"), r++, e && !e.isEnd && t.end.hasTime() && t.end < i.clone().add(this.view.nextDayThreshold)) {\n e.end = t.end.clone(), e.isEnd = !0;\n break;\n }\n return s;\n },\n computeEventTimeFormat: function computeEventTimeFormat() {\n return this.view.opt("mediumTimeFormat");\n },\n handleSegClick: function handleSegClick(e, n) {\n var i;\n pe.prototype.handleSegClick.apply(this, arguments), t(n.target).closest("a[href]").length || (i = e.event.url, i && !n.isDefaultPrevented() && (window.location.href = i));\n },\n renderFgSegs: function renderFgSegs(t) {\n return t = this.renderFgSegEls(t), t.length ? this.renderSegList(t) : this.renderEmptyMessage(), t;\n },\n renderEmptyMessage: function renderEmptyMessage() {\n this.el.html(\'<div class="fc-list-empty-wrap2"><div class="fc-list-empty-wrap1"><div class="fc-list-empty">\' + tt(this.view.opt("noEventsMessage")) + "</div></div></div>");\n },\n renderSegList: function renderSegList(e) {\n var n,\n i,\n r,\n s = this.groupSegsByDay(e),\n o = t(\'<table class="fc-list-table"><tbody/></table>\'),\n l = o.find("tbody");\n for (n = 0; n < s.length; n++) if (i = s[n]) for (l.append(this.dayHeaderHtml(this.view.start.clone().add(n, "days"))), this.sortEventSegs(i), r = 0; r < i.length; r++) l.append(i[r].el);\n this.el.empty().append(o);\n },\n groupSegsByDay: function groupSegsByDay(t) {\n var e,\n n,\n i = [];\n for (e = 0; e < t.length; e++) n = t[e], (i[n.dayIndex] || (i[n.dayIndex] = [])).push(n);\n return i;\n },\n dayHeaderHtml: function dayHeaderHtml(t) {\n var e = this.view,\n n = e.opt("listDayFormat"),\n i = e.opt("listDayAltFormat");\n return \'<tr class="fc-list-heading" data-date="\' + t.format("YYYY-MM-DD") + \'"><td class="\' + e.widgetHeaderClass + \'" colspan="3">\' + (n ? e.buildGotoAnchorHtml(t, {\n "class": "fc-list-heading-main"\n }, tt(t.format(n))) : "") + (i ? e.buildGotoAnchorHtml(t, {\n "class": "fc-list-heading-alt"\n }, tt(t.format(i))) : "") + "</td></tr>";\n },\n fgSegHtml: function fgSegHtml(t) {\n var e,\n n = this.view,\n i = ["fc-list-item"].concat(this.getSegCustomClasses(t)),\n r = this.getSegBackgroundColor(t),\n s = t.event,\n o = s.url;\n return e = s.allDay ? n.getAllDayHtml() : n.isMultiDayEvent(s) ? t.isStart || t.isEnd ? tt(this.getEventTimeText(t)) : n.getAllDayHtml() : tt(this.getEventTimeText(s)), o && i.push("fc-has-url"), \'<tr class="\' + i.join(" ") + \'">\' + (this.displayEventTime ? \'<td class="fc-list-item-time \' + n.widgetContentClass + \'">\' + (e || "") + "</td>" : "") + \'<td class="fc-list-item-marker \' + n.widgetContentClass + \'"><span class="fc-event-dot"\' + (r ? \' style="background-color:\' + r + \'"\' : "") + \'></span></td><td class="fc-list-item-title \' + n.widgetContentClass + \'"><a\' + (o ? \' href="\' + tt(o) + \'"\' : "") + ">" + tt(t.event.title || "") + "</a></td></tr>";\n }\n });\n return Ut.list = {\n "class": Ge,\n buttonTextKey: "list",\n defaults: {\n buttonText: "list",\n listDayFormat: "LL",\n noEventsMessage: "No events to display"\n }\n }, Ut.listDay = {\n type: "list",\n duration: {\n days: 1\n },\n defaults: {\n listDayFormat: "dddd"\n }\n }, Ut.listWeek = {\n type: "list",\n duration: {\n weeks: 1\n },\n defaults: {\n listDayFormat: "dddd",\n listDayAltFormat: "LL"\n }\n }, Ut.listMonth = {\n type: "list",\n duration: {\n month: 1\n },\n defaults: {\n listDayAltFormat: "dddd"\n }\n }, Ut.listYear = {\n type: "list",\n duration: {\n year: 1\n },\n defaults: {\n listDayAltFormat: "dddd"\n }\n }, jt;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/fullcalendar.min.js?')},"./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js":()=>{eval("/*!\n\n =========================================================\n * Bootstrap Wizard - v1.1.1\n =========================================================\n \n * Product Page: https://www.creative-tim.com/product/bootstrap-wizard\n * Copyright 2017 Creative Tim (http://www.creative-tim.com)\n * Licensed under MIT (https://github.com/creativetimofficial/bootstrap-wizard/blob/master/LICENSE.md)\n \n =========================================================\n \n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n */\n\n// Get Shit Done Kit Bootstrap Wizard Functions\n\nvar searchVisible = 0;\nvar transparent = true;\n$(document).ready(function () {\n /* Activate the tooltips */\n $('[rel=\"tooltip\"]').tooltip();\n\n // Code for the Validator\n var $validator = $('.wizard-card form').validate({\n rules: {\n firstname: {\n required: true,\n minlength: 3\n },\n lastname: {\n required: true,\n minlength: 3\n },\n email: {\n required: true,\n minlength: 3\n }\n }\n });\n\n // Wizard Initialization\n $('.wizard-card').bootstrapWizard({\n 'tabClass': 'nav nav-pills',\n 'nextSelector': '.btn-next',\n 'previousSelector': '.btn-previous',\n onNext: function onNext(tab, navigation, index) {\n var $valid = $('.wizard-card form').valid();\n if (!$valid) {\n $validator.focusInvalid();\n return false;\n }\n },\n onInit: function onInit(tab, navigation, index) {\n //check number of tabs and fill the entire row\n var $total = navigation.find('li').length,\n $width = 100 / $total,\n $wizard = navigation.closest('.wizard-card'),\n $display_width = $(document).width();\n if ($display_width < 600 && $total > 3) {\n $width = 50;\n }\n navigation.find('li').css('width', $width + '%');\n var $first_li = navigation.find('li:first-child a').html();\n var $moving_div = $('<div class=\"moving-tab\">' + $first_li + '</div>');\n $('.wizard-card .wizard-navigation').append($moving_div);\n refreshAnimation($wizard, index);\n $('.moving-tab').css('transition', 'transform 0s');\n },\n onTabClick: function onTabClick(tab, navigation, index) {\n var $valid = $('.wizard-card form').valid();\n if (!$valid) {\n return false;\n } else {\n return true;\n }\n },\n onTabShow: function onTabShow(tab, navigation, index) {\n var $total = navigation.find('li').length;\n var $current = index + 1;\n var $wizard = navigation.closest('.wizard-card');\n\n // If it's the last tab then hide the last button and show the finish instead\n if ($current >= $total) {\n $($wizard).find('.btn-next').hide();\n $($wizard).find('.btn-finish').show();\n } else {\n $($wizard).find('.btn-next').show();\n $($wizard).find('.btn-finish').hide();\n }\n var button_text = navigation.find('li:nth-child(' + $current + ') a').html();\n setTimeout(function () {\n $('.moving-tab').text(button_text);\n }, 150);\n var checkbox = $('.footer-checkbox');\n if (!index == 0) {\n $(checkbox).css({\n 'opacity': '0',\n 'visibility': 'hidden',\n 'position': 'absolute'\n });\n } else {\n $(checkbox).css({\n 'opacity': '1',\n 'visibility': 'visible'\n });\n }\n refreshAnimation($wizard, index);\n }\n });\n\n // Prepare the preview for profile picture\n $(\"#wizard-picture\").change(function () {\n readURL(this);\n });\n $('[data-toggle=\"wizard-radio\"]').click(function () {\n var $wizard = $(this).closest('.wizard-card');\n $wizard.find('[data-toggle=\"wizard-radio\"]').removeClass('active');\n $(this).addClass('active');\n $wizard.find('[type=\"radio\"]').prop('checked', false);\n $(this).find('[type=\"radio\"]').prop('checked', true);\n $(this).trigger('change:value');\n });\n $('[data-toggle=\"wizard-checkbox\"]').click(function () {\n if ($(this).hasClass('active')) {\n $(this).removeClass('active');\n $(this).find('[type=\"checkbox\"]').prop('checked', false);\n } else {\n $(this).addClass('active');\n $(this).find('[type=\"checkbox\"]').prop('checked', true);\n }\n $(this).trigger('change:value');\n });\n $('.set-full-height').css('height', 'auto');\n});\n\n//Function to show image before upload\n\nfunction readURL(input) {\n if (input.files && input.files[0]) {\n var reader = new FileReader();\n reader.onload = function (e) {\n $('#wizardPicturePreview').attr('src', e.target.result).fadeIn('slow');\n };\n reader.readAsDataURL(input.files[0]);\n }\n}\n$(window).resize(function () {\n $('.wizard-card').each(function () {\n var $wizard = $(this),\n index = $wizard.bootstrapWizard('currentIndex');\n refreshAnimation($wizard, index);\n $('.moving-tab').css({\n 'transition': 'transform 0s'\n });\n });\n});\nfunction refreshAnimation($wizard, index) {\n var total_steps = $wizard.find('li').length,\n move_distance = $wizard.width() / total_steps,\n step_width = move_distance;\n move_distance *= index;\n $wizard.find('.moving-tab').css('width', step_width);\n $('.moving-tab').css({\n 'transform': 'translate3d(' + move_distance + 'px, 0, 0)',\n 'transition': 'all 0.3s ease-out'\n });\n}\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n }, wait);\n if (immediate && !timeout) func.apply(context, args);\n };\n}\n;\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js?")},"./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js":()=>{eval('function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/*!\n * Jasny Bootstrap v3.1.3 (http://jasny.github.io/bootstrap)\n * Copyright 2012-2014 Arnold Daniels\n * Licensed under Apache-2.0 (https://github.com/jasny/bootstrap/blob/master/LICENSE)\n */\nif ("undefined" == typeof jQuery) throw new Error("Jasny Bootstrap\'s JavaScript requires jQuery");\n+function (a) {\n "use strict";\n\n function b() {\n var a = document.createElement("bootstrap"),\n b = {\n WebkitTransition: "webkitTransitionEnd",\n MozTransition: "transitionend",\n OTransition: "oTransitionEnd otransitionend",\n transition: "transitionend"\n };\n for (var c in b) if (void 0 !== a.style[c]) return {\n end: b[c]\n };\n return !1;\n }\n void 0 === a.support.transition && (a.fn.emulateTransitionEnd = function (b) {\n var c = !1,\n d = this;\n a(this).one(a.support.transition.end, function () {\n c = !0;\n });\n var e = function e() {\n c || a(d).trigger(a.support.transition.end);\n };\n return setTimeout(e, b), this;\n }, a(function () {\n a.support.transition = b();\n }));\n}(window.jQuery), +function (a) {\n "use strict";\n\n var b = function b(c, d) {\n this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.state = null, this.placement = null, this.options.recalc && (this.calcClone(), a(window).on("resize", a.proxy(this.recalc, this))), this.options.autohide && a(document).on("click", a.proxy(this.autohide, this)), this.options.toggle && this.toggle(), this.options.disablescrolling && (this.options.disableScrolling = this.options.disablescrolling, delete this.options.disablescrolling);\n };\n b.DEFAULTS = {\n toggle: !0,\n placement: "auto",\n autohide: !0,\n recalc: !0,\n disableScrolling: !0\n }, b.prototype.offset = function () {\n switch (this.placement) {\n case "left":\n case "right":\n return this.$element.outerWidth();\n case "top":\n case "bottom":\n return this.$element.outerHeight();\n }\n }, b.prototype.calcPlacement = function () {\n function b(a, b) {\n if ("auto" === e.css(b)) return a;\n if ("auto" === e.css(a)) return b;\n var c = parseInt(e.css(a), 10),\n d = parseInt(e.css(b), 10);\n return c > d ? b : a;\n }\n if ("auto" !== this.options.placement) return void (this.placement = this.options.placement);\n this.$element.hasClass("in") || this.$element.css("visiblity", "hidden !important").addClass("in");\n var c = a(window).width() / this.$element.width(),\n d = a(window).height() / this.$element.height(),\n e = this.$element;\n this.placement = c >= d ? b("left", "right") : b("top", "bottom"), "hidden !important" === this.$element.css("visibility") && this.$element.removeClass("in").css("visiblity", "");\n }, b.prototype.opposite = function (a) {\n switch (a) {\n case "top":\n return "bottom";\n case "left":\n return "right";\n case "bottom":\n return "top";\n case "right":\n return "left";\n }\n }, b.prototype.getCanvasElements = function () {\n var b = this.options.canvas ? a(this.options.canvas) : this.$element,\n c = b.find("*").filter(function () {\n return "fixed" === a(this).css("position");\n }).not(this.options.exclude);\n return b.add(c);\n }, b.prototype.slide = function (b, c, d) {\n if (!a.support.transition) {\n var e = {};\n return e[this.placement] = "+=" + c, b.animate(e, 350, d);\n }\n var f = this.placement,\n g = this.opposite(f);\n b.each(function () {\n "auto" !== a(this).css(f) && a(this).css(f, (parseInt(a(this).css(f), 10) || 0) + c), "auto" !== a(this).css(g) && a(this).css(g, (parseInt(a(this).css(g), 10) || 0) - c);\n }), this.$element.one(a.support.transition.end, d).emulateTransitionEnd(350);\n }, b.prototype.disableScrolling = function () {\n var b = a("body").width(),\n c = "padding-" + this.opposite(this.placement);\n if (void 0 === a("body").data("offcanvas-style") && a("body").data("offcanvas-style", a("body").attr("style") || ""), a("body").css("overflow", "hidden"), a("body").width() > b) {\n var d = parseInt(a("body").css(c), 10) + a("body").width() - b;\n setTimeout(function () {\n a("body").css(c, d);\n }, 1);\n }\n }, b.prototype.show = function () {\n if (!this.state) {\n var b = a.Event("show.bs.offcanvas");\n if (this.$element.trigger(b), !b.isDefaultPrevented()) {\n this.state = "slide-in", this.calcPlacement();\n var c = this.getCanvasElements(),\n d = this.placement,\n e = this.opposite(d),\n f = this.offset();\n -1 !== c.index(this.$element) && (a(this.$element).data("offcanvas-style", a(this.$element).attr("style") || ""), this.$element.css(d, -1 * f), this.$element.css(d)), c.addClass("canvas-sliding").each(function () {\n void 0 === a(this).data("offcanvas-style") && a(this).data("offcanvas-style", a(this).attr("style") || ""), "static" === a(this).css("position") && a(this).css("position", "relative"), "auto" !== a(this).css(d) && "0px" !== a(this).css(d) || "auto" !== a(this).css(e) && "0px" !== a(this).css(e) || a(this).css(d, 0);\n }), this.options.disableScrolling && this.disableScrolling();\n var g = function g() {\n "slide-in" == this.state && (this.state = "slid", c.removeClass("canvas-sliding").addClass("canvas-slid"), this.$element.trigger("shown.bs.offcanvas"));\n };\n setTimeout(a.proxy(function () {\n this.$element.addClass("in"), this.slide(c, f, a.proxy(g, this));\n }, this), 1);\n }\n }\n }, b.prototype.hide = function () {\n if ("slid" === this.state) {\n var b = a.Event("hide.bs.offcanvas");\n if (this.$element.trigger(b), !b.isDefaultPrevented()) {\n this.state = "slide-out";\n var c = a(".canvas-slid"),\n d = (this.placement, -1 * this.offset()),\n e = function e() {\n "slide-out" == this.state && (this.state = null, this.placement = null, this.$element.removeClass("in"), c.removeClass("canvas-sliding"), c.add(this.$element).add("body").each(function () {\n a(this).attr("style", a(this).data("offcanvas-style")).removeData("offcanvas-style");\n }), this.$element.trigger("hidden.bs.offcanvas"));\n };\n c.removeClass("canvas-slid").addClass("canvas-sliding"), setTimeout(a.proxy(function () {\n this.slide(c, d, a.proxy(e, this));\n }, this), 1);\n }\n }\n }, b.prototype.toggle = function () {\n "slide-in" !== this.state && "slide-out" !== this.state && this["slid" === this.state ? "hide" : "show"]();\n }, b.prototype.calcClone = function () {\n this.$calcClone = this.$element.clone().html("").addClass("offcanvas-clone").removeClass("in").appendTo(a("body"));\n }, b.prototype.recalc = function () {\n if ("none" !== this.$calcClone.css("display") && ("slid" === this.state || "slide-in" === this.state)) {\n this.state = null, this.placement = null;\n var b = this.getCanvasElements();\n this.$element.removeClass("in"), b.removeClass("canvas-slid"), b.add(this.$element).add("body").each(function () {\n a(this).attr("style", a(this).data("offcanvas-style")).removeData("offcanvas-style");\n });\n }\n }, b.prototype.autohide = function (b) {\n 0 === a(b.target).closest(this.$element).length && this.hide();\n };\n var c = a.fn.offcanvas;\n a.fn.offcanvas = function (c) {\n return this.each(function () {\n var d = a(this),\n e = d.data("bs.offcanvas"),\n f = a.extend({}, b.DEFAULTS, d.data(), "object" == _typeof(c) && c);\n e || d.data("bs.offcanvas", e = new b(this, f)), "string" == typeof c && e[c]();\n });\n }, a.fn.offcanvas.Constructor = b, a.fn.offcanvas.noConflict = function () {\n return a.fn.offcanvas = c, this;\n }, a(document).on("click.bs.offcanvas.data-api", "[data-toggle=offcanvas]", function (b) {\n var c,\n d = a(this),\n e = d.attr("data-target") || b.preventDefault() || (c = d.attr("href")) && c.replace(/.*(?=#[^\\s]+$)/, ""),\n f = a(e),\n g = f.data("bs.offcanvas"),\n h = g ? "toggle" : d.data();\n b.stopPropagation(), g ? g.toggle() : f.offcanvas(h);\n });\n}(window.jQuery), +function (a) {\n "use strict";\n\n var b = function b(c, d) {\n this.$element = a(c), this.options = a.extend({}, b.DEFAULTS, d), this.$element.on("click.bs.rowlink", "td:not(.rowlink-skip)", a.proxy(this.click, this));\n };\n b.DEFAULTS = {\n target: "a"\n }, b.prototype.click = function (b) {\n var c = a(b.currentTarget).closest("tr").find(this.options.target)[0];\n if (a(b.target)[0] !== c) if (b.preventDefault(), c.click) c.click();else if (document.createEvent) {\n var d = document.createEvent("MouseEvents");\n d.initMouseEvent("click", !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), c.dispatchEvent(d);\n }\n };\n var c = a.fn.rowlink;\n a.fn.rowlink = function (c) {\n return this.each(function () {\n var d = a(this),\n e = d.data("bs.rowlink");\n e || d.data("bs.rowlink", e = new b(this, c));\n });\n }, a.fn.rowlink.Constructor = b, a.fn.rowlink.noConflict = function () {\n return a.fn.rowlink = c, this;\n }, a(document).on("click.bs.rowlink.data-api", \'[data-link="row"]\', function (b) {\n if (0 === a(b.target).closest(".rowlink-skip").length) {\n var c = a(this);\n c.data("bs.rowlink") || (c.rowlink(c.data()), a(b.target).trigger("click.bs.rowlink"));\n }\n });\n}(window.jQuery), +function (a) {\n "use strict";\n\n var b = void 0 !== window.orientation,\n c = navigator.userAgent.toLowerCase().indexOf("android") > -1,\n d = "Microsoft Internet Explorer" == window.navigator.appName,\n e = function e(b, d) {\n c || (this.$element = a(b), this.options = a.extend({}, e.DEFAULTS, d), this.mask = String(this.options.mask), this.init(), this.listen(), this.checkVal());\n };\n e.DEFAULTS = {\n mask: "",\n placeholder: "_",\n definitions: {\n 9: "[0-9]",\n a: "[A-Za-z]",\n w: "[A-Za-z0-9]",\n "*": "."\n }\n }, e.prototype.init = function () {\n var b = this.options.definitions,\n c = this.mask.length;\n this.tests = [], this.partialPosition = this.mask.length, this.firstNonMaskPos = null, a.each(this.mask.split(""), a.proxy(function (a, d) {\n "?" == d ? (c--, this.partialPosition = a) : b[d] ? (this.tests.push(new RegExp(b[d])), null === this.firstNonMaskPos && (this.firstNonMaskPos = this.tests.length - 1)) : this.tests.push(null);\n }, this)), this.buffer = a.map(this.mask.split(""), a.proxy(function (a) {\n return "?" != a ? b[a] ? this.options.placeholder : a : void 0;\n }, this)), this.focusText = this.$element.val(), this.$element.data("rawMaskFn", a.proxy(function () {\n return a.map(this.buffer, function (a, b) {\n return this.tests[b] && a != this.options.placeholder ? a : null;\n }).join("");\n }, this));\n }, e.prototype.listen = function () {\n if (!this.$element.attr("readonly")) {\n var b = (d ? "paste" : "input") + ".mask";\n this.$element.on("unmask.bs.inputmask", a.proxy(this.unmask, this)).on("focus.bs.inputmask", a.proxy(this.focusEvent, this)).on("blur.bs.inputmask", a.proxy(this.blurEvent, this)).on("keydown.bs.inputmask", a.proxy(this.keydownEvent, this)).on("keypress.bs.inputmask", a.proxy(this.keypressEvent, this)).on(b, a.proxy(this.pasteEvent, this));\n }\n }, e.prototype.caret = function (a, b) {\n if (0 !== this.$element.length) {\n if ("number" == typeof a) return b = "number" == typeof b ? b : a, this.$element.each(function () {\n if (this.setSelectionRange) this.setSelectionRange(a, b);else if (this.createTextRange) {\n var c = this.createTextRange();\n c.collapse(!0), c.moveEnd("character", b), c.moveStart("character", a), c.select();\n }\n });\n if (this.$element[0].setSelectionRange) a = this.$element[0].selectionStart, b = this.$element[0].selectionEnd;else if (document.selection && document.selection.createRange) {\n var c = document.selection.createRange();\n a = 0 - c.duplicate().moveStart("character", -1e5), b = a + c.text.length;\n }\n return {\n begin: a,\n end: b\n };\n }\n }, e.prototype.seekNext = function (a) {\n for (var b = this.mask.length; ++a <= b && !this.tests[a];);\n return a;\n }, e.prototype.seekPrev = function (a) {\n for (; --a >= 0 && !this.tests[a];);\n return a;\n }, e.prototype.shiftL = function (a, b) {\n var c = this.mask.length;\n if (!(0 > a)) {\n for (var d = a, e = this.seekNext(b); c > d; d++) if (this.tests[d]) {\n if (!(c > e && this.tests[d].test(this.buffer[e]))) break;\n this.buffer[d] = this.buffer[e], this.buffer[e] = this.options.placeholder, e = this.seekNext(e);\n }\n this.writeBuffer(), this.caret(Math.max(this.firstNonMaskPos, a));\n }\n }, e.prototype.shiftR = function (a) {\n for (var b = this.mask.length, c = a, d = this.options.placeholder; b > c; c++) if (this.tests[c]) {\n var e = this.seekNext(c),\n f = this.buffer[c];\n if (this.buffer[c] = d, !(b > e && this.tests[e].test(f))) break;\n d = f;\n }\n }, e.prototype.unmask = function () {\n this.$element.unbind(".mask").removeData("inputmask");\n }, e.prototype.focusEvent = function () {\n this.focusText = this.$element.val();\n var a = this.mask.length,\n b = this.checkVal();\n this.writeBuffer();\n var c = this,\n d = function d() {\n b == a ? c.caret(0, b) : c.caret(b);\n };\n d(), setTimeout(d, 50);\n }, e.prototype.blurEvent = function () {\n this.checkVal(), this.$element.val() !== this.focusText && this.$element.trigger("change");\n }, e.prototype.keydownEvent = function (a) {\n var c = a.which;\n if (8 == c || 46 == c || b && 127 == c) {\n var d = this.caret(),\n e = d.begin,\n f = d.end;\n return f - e === 0 && (e = 46 != c ? this.seekPrev(e) : f = this.seekNext(e - 1), f = 46 == c ? this.seekNext(f) : f), this.clearBuffer(e, f), this.shiftL(e, f - 1), !1;\n }\n return 27 == c ? (this.$element.val(this.focusText), this.caret(0, this.checkVal()), !1) : void 0;\n }, e.prototype.keypressEvent = function (a) {\n var b = this.mask.length,\n c = a.which,\n d = this.caret();\n if (a.ctrlKey || a.altKey || a.metaKey || 32 > c) return !0;\n if (c) {\n d.end - d.begin !== 0 && (this.clearBuffer(d.begin, d.end), this.shiftL(d.begin, d.end - 1));\n var e = this.seekNext(d.begin - 1);\n if (b > e) {\n var f = String.fromCharCode(c);\n if (this.tests[e].test(f)) {\n this.shiftR(e), this.buffer[e] = f, this.writeBuffer();\n var g = this.seekNext(e);\n this.caret(g);\n }\n }\n return !1;\n }\n }, e.prototype.pasteEvent = function () {\n var a = this;\n setTimeout(function () {\n a.caret(a.checkVal(!0));\n }, 0);\n }, e.prototype.clearBuffer = function (a, b) {\n for (var c = this.mask.length, d = a; b > d && c > d; d++) this.tests[d] && (this.buffer[d] = this.options.placeholder);\n }, e.prototype.writeBuffer = function () {\n return this.$element.val(this.buffer.join("")).val();\n }, e.prototype.checkVal = function (a) {\n for (var b = this.mask.length, c = this.$element.val(), d = -1, e = 0, f = 0; b > e; e++) if (this.tests[e]) {\n for (this.buffer[e] = this.options.placeholder; f++ < c.length;) {\n var g = c.charAt(f - 1);\n if (this.tests[e].test(g)) {\n this.buffer[e] = g, d = e;\n break;\n }\n }\n if (f > c.length) break;\n } else this.buffer[e] == c.charAt(f) && e != this.partialPosition && (f++, d = e);\n return !a && d + 1 < this.partialPosition ? (this.$element.val(""), this.clearBuffer(0, b)) : (a || d + 1 >= this.partialPosition) && (this.writeBuffer(), a || this.$element.val(this.$element.val().substring(0, d + 1))), this.partialPosition ? e : this.firstNonMaskPos;\n };\n var f = a.fn.inputmask;\n a.fn.inputmask = function (b) {\n return this.each(function () {\n var c = a(this),\n d = c.data("bs.inputmask");\n d || c.data("bs.inputmask", d = new e(this, b));\n });\n }, a.fn.inputmask.Constructor = e, a.fn.inputmask.noConflict = function () {\n return a.fn.inputmask = f, this;\n }, a(document).on("focus.bs.inputmask.data-api", "[data-mask]", function () {\n var b = a(this);\n b.data("bs.inputmask") || b.inputmask(b.data());\n });\n}(window.jQuery), +function (a) {\n "use strict";\n\n var b = "Microsoft Internet Explorer" == window.navigator.appName,\n c = function c(b, _c) {\n if (this.$element = a(b), this.$input = this.$element.find(":file"), 0 !== this.$input.length) {\n this.name = this.$input.attr("name") || _c.name, this.$hidden = this.$element.find(\'input[type=hidden][name="\' + this.name + \'"]\'), 0 === this.$hidden.length && (this.$hidden = a(\'<input type="hidden">\').insertBefore(this.$input)), this.$preview = this.$element.find(".fileinput-preview");\n var d = this.$preview.css("height");\n "inline" !== this.$preview.css("display") && "0px" !== d && "none" !== d && this.$preview.css("line-height", d), this.original = {\n exists: this.$element.hasClass("fileinput-exists"),\n preview: this.$preview.html(),\n hiddenVal: this.$hidden.val()\n }, this.listen();\n }\n };\n c.prototype.listen = function () {\n this.$input.on("change.bs.fileinput", a.proxy(this.change, this)), a(this.$input[0].form).on("reset.bs.fileinput", a.proxy(this.reset, this)), this.$element.find(\'[data-trigger="fileinput"]\').on("click.bs.fileinput", a.proxy(this.trigger, this)), this.$element.find(\'[data-dismiss="fileinput"]\').on("click.bs.fileinput", a.proxy(this.clear, this));\n }, c.prototype.change = function (b) {\n var c = void 0 === b.target.files ? b.target && b.target.value ? [{\n name: b.target.value.replace(/^.+\\\\/, "")\n }] : [] : b.target.files;\n if (b.stopPropagation(), 0 === c.length) return void this.clear();\n this.$hidden.val(""), this.$hidden.attr("name", ""), this.$input.attr("name", this.name);\n var d = c[0];\n if (this.$preview.length > 0 && ("undefined" != typeof d.type ? d.type.match(/^image\\/(gif|png|jpeg)$/) : d.name.match(/\\.(gif|png|jpe?g)$/i)) && "undefined" != typeof FileReader) {\n var e = new FileReader(),\n f = this.$preview,\n g = this.$element;\n e.onload = function (b) {\n var e = a("<img>");\n e[0].src = b.target.result, c[0].result = b.target.result, g.find(".fileinput-filename").text(d.name), "none" != f.css("max-height") && e.css("max-height", parseInt(f.css("max-height"), 10) - parseInt(f.css("padding-top"), 10) - parseInt(f.css("padding-bottom"), 10) - parseInt(f.css("border-top"), 10) - parseInt(f.css("border-bottom"), 10)), f.html(e), g.addClass("fileinput-exists").removeClass("fileinput-new"), g.trigger("change.bs.fileinput", c);\n }, e.readAsDataURL(d);\n } else this.$element.find(".fileinput-filename").text(d.name), this.$preview.text(d.name), this.$element.addClass("fileinput-exists").removeClass("fileinput-new"), this.$element.trigger("change.bs.fileinput");\n }, c.prototype.clear = function (a) {\n if (a && a.preventDefault(), this.$hidden.val(""), this.$hidden.attr("name", this.name), this.$input.attr("name", ""), b) {\n var c = this.$input.clone(!0);\n this.$input.after(c), this.$input.remove(), this.$input = c;\n } else this.$input.val("");\n this.$preview.html(""), this.$element.find(".fileinput-filename").text(""), this.$element.addClass("fileinput-new").removeClass("fileinput-exists"), void 0 !== a && (this.$input.trigger("change"), this.$element.trigger("clear.bs.fileinput"));\n }, c.prototype.reset = function () {\n this.clear(), this.$hidden.val(this.original.hiddenVal), this.$preview.html(this.original.preview), this.$element.find(".fileinput-filename").text(""), this.original.exists ? this.$element.addClass("fileinput-exists").removeClass("fileinput-new") : this.$element.addClass("fileinput-new").removeClass("fileinput-exists"), this.$element.trigger("reset.bs.fileinput");\n }, c.prototype.trigger = function (a) {\n this.$input.trigger("click"), a.preventDefault();\n };\n var d = a.fn.fileinput;\n a.fn.fileinput = function (b) {\n return this.each(function () {\n var d = a(this),\n e = d.data("bs.fileinput");\n e || d.data("bs.fileinput", e = new c(this, b)), "string" == typeof b && e[b]();\n });\n }, a.fn.fileinput.Constructor = c, a.fn.fileinput.noConflict = function () {\n return a.fn.fileinput = d, this;\n }, a(document).on("click.fileinput.data-api", \'[data-provides="fileinput"]\', function (b) {\n var c = a(this);\n if (!c.data("bs.fileinput")) {\n c.fileinput(c.data());\n var d = a(b.target).closest(\'[data-dismiss="fileinput"],[data-trigger="fileinput"]\');\n d.length > 0 && (b.preventDefault(), d.trigger("click.bs.fileinput"));\n }\n });\n}(window.jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js?')},"./buyercall/assets/scripts/vendor/jquery-jvectormap.js":(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/**\n * jVectorMap version 2.0.4\n *\n * Copyright 2011-2014, Kirill Lebedev\n *\n */\n\n(function ($) {\n var apiParams = {\n set: {\n colors: 1,\n values: 1,\n backgroundColor: 1,\n scaleColors: 1,\n normalizeFunction: 1,\n focus: 1\n },\n get: {\n selectedRegions: 1,\n selectedMarkers: 1,\n mapObject: 1,\n regionName: 1\n }\n };\n $.fn.vectorMap = function (options) {\n var map,\n methodName,\n map = this.children(\'.jvectormap-container\').data(\'mapObject\');\n if (options === \'addMap\') {\n jvm.Map.maps[arguments[1]] = arguments[2];\n } else if ((options === \'set\' || options === \'get\') && apiParams[options][arguments[1]]) {\n methodName = arguments[1].charAt(0).toUpperCase() + arguments[1].substr(1);\n return map[options + methodName].apply(map, Array.prototype.slice.call(arguments, 2));\n } else {\n options = options || {};\n options.container = this;\n map = new jvm.Map(options);\n }\n return this;\n };\n})(jQuery);\n/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 3.1.9\n *\n * Requires: jQuery 1.2.2+\n */\n\n(function (factory) {\n if (true) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(function ($) {\n var toFix = [\'wheel\', \'mousewheel\', \'DOMMouseScroll\', \'MozMousePixelScroll\'],\n toBind = \'onwheel\' in document || document.documentMode >= 9 ? [\'wheel\'] : [\'mousewheel\', \'DomMouseScroll\', \'MozMousePixelScroll\'],\n slice = Array.prototype.slice,\n nullLowestDeltaTimeout,\n lowestDelta;\n if ($.event.fixHooks) {\n for (var i = toFix.length; i;) {\n $.event.fixHooks[toFix[--i]] = $.event.mouseHooks;\n }\n }\n var special = $.event.special.mousewheel = {\n version: \'3.1.9\',\n setup: function setup() {\n if (this.addEventListener) {\n for (var i = toBind.length; i;) {\n this.addEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = handler;\n }\n // Store the line height and page height for this particular element\n $.data(this, \'mousewheel-line-height\', special.getLineHeight(this));\n $.data(this, \'mousewheel-page-height\', special.getPageHeight(this));\n },\n teardown: function teardown() {\n if (this.removeEventListener) {\n for (var i = toBind.length; i;) {\n this.removeEventListener(toBind[--i], handler, false);\n }\n } else {\n this.onmousewheel = null;\n }\n },\n getLineHeight: function getLineHeight(elem) {\n return parseInt($(elem)[\'offsetParent\' in $.fn ? \'offsetParent\' : \'parent\']().css(\'fontSize\'), 10);\n },\n getPageHeight: function getPageHeight(elem) {\n return $(elem).height();\n },\n settings: {\n adjustOldDeltas: true\n }\n };\n $.fn.extend({\n mousewheel: function mousewheel(fn) {\n return fn ? this.bind(\'mousewheel\', fn) : this.trigger(\'mousewheel\');\n },\n unmousewheel: function unmousewheel(fn) {\n return this.unbind(\'mousewheel\', fn);\n }\n });\n function handler(event) {\n var orgEvent = event || window.event,\n args = slice.call(arguments, 1),\n delta = 0,\n deltaX = 0,\n deltaY = 0,\n absDelta = 0;\n event = $.event.fix(orgEvent);\n event.type = \'mousewheel\';\n\n // Old school scrollwheel delta\n if (\'detail\' in orgEvent) {\n deltaY = orgEvent.detail * -1;\n }\n if (\'wheelDelta\' in orgEvent) {\n deltaY = orgEvent.wheelDelta;\n }\n if (\'wheelDeltaY\' in orgEvent) {\n deltaY = orgEvent.wheelDeltaY;\n }\n if (\'wheelDeltaX\' in orgEvent) {\n deltaX = orgEvent.wheelDeltaX * -1;\n }\n\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n if (\'axis\' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {\n deltaX = deltaY * -1;\n deltaY = 0;\n }\n\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n delta = deltaY === 0 ? deltaX : deltaY;\n\n // New school wheel delta (wheel event)\n if (\'deltaY\' in orgEvent) {\n deltaY = orgEvent.deltaY * -1;\n delta = deltaY;\n }\n if (\'deltaX\' in orgEvent) {\n deltaX = orgEvent.deltaX;\n if (deltaY === 0) {\n delta = deltaX * -1;\n }\n }\n\n // No change actually happened, no reason to go any further\n if (deltaY === 0 && deltaX === 0) {\n return;\n }\n\n // Need to convert lines and pages to pixels if we aren\'t already in pixels\n // There are three delta modes:\n // * deltaMode 0 is by pixels, nothing to do\n // * deltaMode 1 is by lines\n // * deltaMode 2 is by pages\n if (orgEvent.deltaMode === 1) {\n var lineHeight = $.data(this, \'mousewheel-line-height\');\n delta *= lineHeight;\n deltaY *= lineHeight;\n deltaX *= lineHeight;\n } else if (orgEvent.deltaMode === 2) {\n var pageHeight = $.data(this, \'mousewheel-page-height\');\n delta *= pageHeight;\n deltaY *= pageHeight;\n deltaX *= pageHeight;\n }\n\n // Store lowest absolute delta to normalize the delta values\n absDelta = Math.max(Math.abs(deltaY), Math.abs(deltaX));\n if (!lowestDelta || absDelta < lowestDelta) {\n lowestDelta = absDelta;\n\n // Adjust older deltas if necessary\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n lowestDelta /= 40;\n }\n }\n\n // Adjust older deltas if necessary\n if (shouldAdjustOldDeltas(orgEvent, absDelta)) {\n // Divide all the things by 40!\n delta /= 40;\n deltaX /= 40;\n deltaY /= 40;\n }\n\n // Get a whole, normalized value for the deltas\n delta = Math[delta >= 1 ? \'floor\' : \'ceil\'](delta / lowestDelta);\n deltaX = Math[deltaX >= 1 ? \'floor\' : \'ceil\'](deltaX / lowestDelta);\n deltaY = Math[deltaY >= 1 ? \'floor\' : \'ceil\'](deltaY / lowestDelta);\n\n // Add information to the event object\n event.deltaX = deltaX;\n event.deltaY = deltaY;\n event.deltaFactor = lowestDelta;\n // Go ahead and set deltaMode to 0 since we converted to pixels\n // Although this is a little odd since we overwrite the deltaX/Y\n // properties with normalized deltas.\n event.deltaMode = 0;\n\n // Add event and delta to the front of the arguments\n args.unshift(event, delta, deltaX, deltaY);\n\n // Clearout lowestDelta after sometime to better\n // handle multiple device types that give different\n // a different lowestDelta\n // Ex: trackpad = 3 and mouse wheel = 120\n if (nullLowestDeltaTimeout) {\n clearTimeout(nullLowestDeltaTimeout);\n }\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n return ($.event.dispatch || $.event.handle).apply(this, args);\n }\n function nullLowestDelta() {\n lowestDelta = null;\n }\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\n // If this is an older event and the delta is divisable by 120,\n // then we are assuming that the browser is treating this as an\n // older mouse wheel event and that we should divide the deltas\n // by 40 to try and get a more usable deltaFactor.\n // Side note, this actually impacts the reported scroll distance\n // in older browsers and can cause scrolling to be slower than native.\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n return special.settings.adjustOldDeltas && orgEvent.type === \'mousewheel\' && absDelta % 120 === 0;\n }\n}); /**\n * @namespace jvm Holds core methods and classes used by jVectorMap.\n */\nvar jvm = {\n /**\n * Inherits child\'s prototype from the parent\'s one.\n * @param {Function} child\n * @param {Function} parent\n */\n inherits: function inherits(child, parent) {\n function temp() {}\n temp.prototype = parent.prototype;\n child.prototype = new temp();\n child.prototype.constructor = child;\n child.parentClass = parent;\n },\n /**\n * Mixes in methods from the source constructor to the target one.\n * @param {Function} target\n * @param {Function} source\n */\n mixin: function mixin(target, source) {\n var prop;\n for (prop in source.prototype) {\n if (source.prototype.hasOwnProperty(prop)) {\n target.prototype[prop] = source.prototype[prop];\n }\n }\n },\n min: function min(values) {\n var min = Number.MAX_VALUE,\n i;\n if (values instanceof Array) {\n for (i = 0; i < values.length; i++) {\n if (values[i] < min) {\n min = values[i];\n }\n }\n } else {\n for (i in values) {\n if (values[i] < min) {\n min = values[i];\n }\n }\n }\n return min;\n },\n max: function max(values) {\n var max = Number.MIN_VALUE,\n i;\n if (values instanceof Array) {\n for (i = 0; i < values.length; i++) {\n if (values[i] > max) {\n max = values[i];\n }\n }\n } else {\n for (i in values) {\n if (values[i] > max) {\n max = values[i];\n }\n }\n }\n return max;\n },\n keys: function keys(object) {\n var keys = [],\n key;\n for (key in object) {\n keys.push(key);\n }\n return keys;\n },\n values: function values(object) {\n var values = [],\n key,\n i;\n for (i = 0; i < arguments.length; i++) {\n object = arguments[i];\n for (key in object) {\n values.push(object[key]);\n }\n }\n return values;\n },\n whenImageLoaded: function whenImageLoaded(url) {\n var deferred = new jvm.$.Deferred(),\n img = jvm.$(\'<img/>\');\n img.error(function () {\n deferred.reject();\n }).load(function () {\n deferred.resolve(img);\n });\n img.attr(\'src\', url);\n return deferred;\n },\n isImageUrl: function isImageUrl(s) {\n return /\\.\\w{3,4}$/.test(s);\n }\n};\njvm.$ = jQuery;\n\n/**\n * indexOf polyfill for IE < 9\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf\n */\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function (searchElement, fromIndex) {\n var k;\n\n // 1. Let O be the result of calling ToObject passing\n // the this value as the argument.\n if (this == null) {\n throw new TypeError(\'"this" is null or not defined\');\n }\n var O = Object(this);\n\n // 2. Let lenValue be the result of calling the Get\n // internal method of O with the argument "length".\n // 3. Let len be ToUint32(lenValue).\n var len = O.length >>> 0;\n\n // 4. If len is 0, return -1.\n if (len === 0) {\n return -1;\n }\n\n // 5. If argument fromIndex was passed let n be\n // ToInteger(fromIndex); else let n be 0.\n var n = +fromIndex || 0;\n if (Math.abs(n) === Infinity) {\n n = 0;\n }\n\n // 6. If n >= len, return -1.\n if (n >= len) {\n return -1;\n }\n\n // 7. If n >= 0, then Let k be n.\n // 8. Else, n<0, Let k be len - abs(n).\n // If k is less than 0, then let k be 0.\n k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);\n\n // 9. Repeat, while k < len\n while (k < len) {\n // a. Let Pk be ToString(k).\n // This is implicit for LHS operands of the in operator\n // b. Let kPresent be the result of calling the\n // HasProperty internal method of O with argument Pk.\n // This step can be combined with c\n // c. If kPresent is true, then\n // i. Let elementK be the result of calling the Get\n // internal method of O with the argument ToString(k).\n // ii. Let same be the result of applying the\n // Strict Equality Comparison Algorithm to\n // searchElement and elementK.\n // iii. If same is true, return k.\n if (k in O && O[k] === searchElement) {\n return k;\n }\n k++;\n }\n return -1;\n };\n} /**\n * Basic wrapper for DOM element.\n * @constructor\n * @param {String} name Tag name of the element\n * @param {Object} config Set of parameters to initialize element with\n */\njvm.AbstractElement = function (name, config) {\n /**\n * Underlying DOM element\n * @type {DOMElement}\n * @private\n */\n this.node = this.createElement(name);\n\n /**\n * Name of underlying element\n * @type {String}\n * @private\n */\n this.name = name;\n\n /**\n * Internal store of attributes\n * @type {Object}\n * @private\n */\n this.properties = {};\n if (config) {\n this.set(config);\n }\n};\n\n/**\n * Set attribute of the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Set of parameters to initialize element with\n */\njvm.AbstractElement.prototype.set = function (property, value) {\n var key;\n if (_typeof(property) === \'object\') {\n for (key in property) {\n this.properties[key] = property[key];\n this.applyAttr(key, property[key]);\n }\n } else {\n this.properties[property] = value;\n this.applyAttr(property, value);\n }\n};\n\n/**\n * Returns value of attribute.\n * @param {String} name Name of attribute\n */\njvm.AbstractElement.prototype.get = function (property) {\n return this.properties[property];\n};\n\n/**\n * Applies attribute value to the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Value of attribute to apply\n * @private\n */\njvm.AbstractElement.prototype.applyAttr = function (property, value) {\n this.node.setAttribute(property, value);\n};\njvm.AbstractElement.prototype.remove = function () {\n jvm.$(this.node).remove();\n}; /**\n * Implements abstract vector canvas.\n * @constructor\n * @param {HTMLElement} container Container to put element to.\n * @param {Number} width Width of canvas.\n * @param {Number} height Height of canvas.\n */\njvm.AbstractCanvasElement = function (container, width, height) {\n this.container = container;\n this.setSize(width, height);\n this.rootElement = new jvm[this.classPrefix + \'GroupElement\']();\n this.node.appendChild(this.rootElement.node);\n this.container.appendChild(this.node);\n};\n\n/**\n * Add element to the certain group inside of the canvas.\n * @param {HTMLElement} element Element to add to canvas.\n * @param {HTMLElement} group Group to add element into or into root group if not provided.\n */\njvm.AbstractCanvasElement.prototype.add = function (element, group) {\n group = group || this.rootElement;\n group.add(element);\n element.canvas = this;\n};\n\n/**\n * Create path and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add path into.\n */\njvm.AbstractCanvasElement.prototype.addPath = function (config, style, group) {\n var el = new jvm[this.classPrefix + \'PathElement\'](config, style);\n this.add(el, group);\n return el;\n};\n\n/**\n * Create circle and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addCircle = function (config, style, group) {\n var el = new jvm[this.classPrefix + \'CircleElement\'](config, style);\n this.add(el, group);\n return el;\n};\n\n/**\n * Create circle and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addImage = function (config, style, group) {\n var el = new jvm[this.classPrefix + \'ImageElement\'](config, style);\n this.add(el, group);\n return el;\n};\n\n/**\n * Create text and add it to the canvas.\n * @param {Object} config Parameters of path to create.\n * @param {Object} style Styles of the path to create.\n * @param {HTMLElement} group Group to add circle into.\n */\njvm.AbstractCanvasElement.prototype.addText = function (config, style, group) {\n var el = new jvm[this.classPrefix + \'TextElement\'](config, style);\n this.add(el, group);\n return el;\n};\n\n/**\n * Add group to the another group inside of the canvas.\n * @param {HTMLElement} group Group to add circle into or root group if not provided.\n */\njvm.AbstractCanvasElement.prototype.addGroup = function (parentGroup) {\n var el = new jvm[this.classPrefix + \'GroupElement\']();\n if (parentGroup) {\n parentGroup.node.appendChild(el.node);\n } else {\n this.node.appendChild(el.node);\n }\n el.canvas = this;\n return el;\n}; /**\n * Abstract shape element. Shape element represents some visual vector or raster object.\n * @constructor\n * @param {String} name Tag name of the element.\n * @param {Object} config Set of parameters to initialize element with.\n * @param {Object} style Object with styles to set on element initialization.\n */\njvm.AbstractShapeElement = function (name, config, style) {\n this.style = style || {};\n this.style.current = this.style.current || {};\n this.isHovered = false;\n this.isSelected = false;\n this.updateStyle();\n};\n\n/**\n * Set element\'s style.\n * @param {Object|String} property Could be string to set only one property or object to set several style properties at once.\n * @param {String} value Value to set in case only one property should be set.\n */\njvm.AbstractShapeElement.prototype.setStyle = function (property, value) {\n var styles = {};\n if (_typeof(property) === \'object\') {\n styles = property;\n } else {\n styles[property] = value;\n }\n jvm.$.extend(this.style.current, styles);\n this.updateStyle();\n};\njvm.AbstractShapeElement.prototype.updateStyle = function () {\n var attrs = {};\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.initial);\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.current);\n if (this.isHovered) {\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.hover);\n }\n if (this.isSelected) {\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selected);\n if (this.isHovered) {\n jvm.AbstractShapeElement.mergeStyles(attrs, this.style.selectedHover);\n }\n }\n this.set(attrs);\n};\njvm.AbstractShapeElement.mergeStyles = function (styles, newStyles) {\n var key;\n newStyles = newStyles || {};\n for (key in newStyles) {\n if (newStyles[key] === null) {\n delete styles[key];\n } else {\n styles[key] = newStyles[key];\n }\n }\n}; /**\n * Wrapper for SVG element.\n * @constructor\n * @extends jvm.AbstractElement\n * @param {String} name Tag name of the element\n * @param {Object} config Set of parameters to initialize element with\n */\n\njvm.SVGElement = function (name, config) {\n jvm.SVGElement.parentClass.apply(this, arguments);\n};\njvm.inherits(jvm.SVGElement, jvm.AbstractElement);\njvm.SVGElement.svgns = "http://www.w3.org/2000/svg";\n\n/**\n * Creates DOM element.\n * @param {String} tagName Name of element\n * @private\n * @returns DOMElement\n */\njvm.SVGElement.prototype.createElement = function (tagName) {\n return document.createElementNS(jvm.SVGElement.svgns, tagName);\n};\n\n/**\n * Adds CSS class for underlying DOM element.\n * @param {String} className Name of CSS class name\n */\njvm.SVGElement.prototype.addClass = function (className) {\n this.node.setAttribute(\'class\', className);\n};\n\n/**\n * Returns constructor for element by name prefixed with \'VML\'.\n * @param {String} ctr Name of basic constructor to return\n * proper implementation for.\n * @returns Function\n * @private\n */\njvm.SVGElement.prototype.getElementCtr = function (ctr) {\n return jvm[\'SVG\' + ctr];\n};\njvm.SVGElement.prototype.getBBox = function () {\n return this.node.getBBox();\n};\njvm.SVGGroupElement = function () {\n jvm.SVGGroupElement.parentClass.call(this, \'g\');\n};\njvm.inherits(jvm.SVGGroupElement, jvm.SVGElement);\njvm.SVGGroupElement.prototype.add = function (element) {\n this.node.appendChild(element.node);\n};\njvm.SVGCanvasElement = function (container, width, height) {\n this.classPrefix = \'SVG\';\n jvm.SVGCanvasElement.parentClass.call(this, \'svg\');\n this.defsElement = new jvm.SVGElement(\'defs\');\n this.node.appendChild(this.defsElement.node);\n jvm.AbstractCanvasElement.apply(this, arguments);\n};\njvm.inherits(jvm.SVGCanvasElement, jvm.SVGElement);\njvm.mixin(jvm.SVGCanvasElement, jvm.AbstractCanvasElement);\njvm.SVGCanvasElement.prototype.setSize = function (width, height) {\n this.width = width;\n this.height = height;\n this.node.setAttribute(\'width\', width);\n this.node.setAttribute(\'height\', height);\n};\njvm.SVGCanvasElement.prototype.applyTransformParams = function (scale, transX, transY) {\n this.scale = scale;\n this.transX = transX;\n this.transY = transY;\n this.rootElement.node.setAttribute(\'transform\', \'scale(\' + scale + \') translate(\' + transX + \', \' + transY + \')\');\n};\njvm.SVGShapeElement = function (name, config, style) {\n jvm.SVGShapeElement.parentClass.call(this, name, config);\n jvm.AbstractShapeElement.apply(this, arguments);\n};\njvm.inherits(jvm.SVGShapeElement, jvm.SVGElement);\njvm.mixin(jvm.SVGShapeElement, jvm.AbstractShapeElement);\njvm.SVGShapeElement.prototype.applyAttr = function (attr, value) {\n var patternEl,\n imageEl,\n that = this;\n if (attr === \'fill\' && jvm.isImageUrl(value)) {\n if (!jvm.SVGShapeElement.images[value]) {\n jvm.whenImageLoaded(value).then(function (img) {\n imageEl = new jvm.SVGElement(\'image\');\n imageEl.node.setAttributeNS(\'http://www.w3.org/1999/xlink\', \'href\', value);\n imageEl.applyAttr(\'x\', \'0\');\n imageEl.applyAttr(\'y\', \'0\');\n imageEl.applyAttr(\'width\', img[0].width);\n imageEl.applyAttr(\'height\', img[0].height);\n patternEl = new jvm.SVGElement(\'pattern\');\n patternEl.applyAttr(\'id\', \'image\' + jvm.SVGShapeElement.imageCounter);\n patternEl.applyAttr(\'x\', 0);\n patternEl.applyAttr(\'y\', 0);\n patternEl.applyAttr(\'width\', img[0].width / 2);\n patternEl.applyAttr(\'height\', img[0].height / 2);\n patternEl.applyAttr(\'viewBox\', \'0 0 \' + img[0].width + \' \' + img[0].height);\n patternEl.applyAttr(\'patternUnits\', \'userSpaceOnUse\');\n patternEl.node.appendChild(imageEl.node);\n that.canvas.defsElement.node.appendChild(patternEl.node);\n jvm.SVGShapeElement.images[value] = jvm.SVGShapeElement.imageCounter++;\n that.applyAttr(\'fill\', \'url(#image\' + jvm.SVGShapeElement.images[value] + \')\');\n });\n } else {\n this.applyAttr(\'fill\', \'url(#image\' + jvm.SVGShapeElement.images[value] + \')\');\n }\n } else {\n jvm.SVGShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};\njvm.SVGShapeElement.imageCounter = 1;\njvm.SVGShapeElement.images = {};\njvm.SVGPathElement = function (config, style) {\n jvm.SVGPathElement.parentClass.call(this, \'path\', config, style);\n this.node.setAttribute(\'fill-rule\', \'evenodd\');\n};\njvm.inherits(jvm.SVGPathElement, jvm.SVGShapeElement);\njvm.SVGCircleElement = function (config, style) {\n jvm.SVGCircleElement.parentClass.call(this, \'circle\', config, style);\n};\njvm.inherits(jvm.SVGCircleElement, jvm.SVGShapeElement);\njvm.SVGImageElement = function (config, style) {\n jvm.SVGImageElement.parentClass.call(this, \'image\', config, style);\n};\njvm.inherits(jvm.SVGImageElement, jvm.SVGShapeElement);\njvm.SVGImageElement.prototype.applyAttr = function (attr, value) {\n var that = this;\n if (attr == \'image\') {\n jvm.whenImageLoaded(value).then(function (img) {\n that.node.setAttributeNS(\'http://www.w3.org/1999/xlink\', \'href\', value);\n that.width = img[0].width;\n that.height = img[0].height;\n that.applyAttr(\'width\', that.width);\n that.applyAttr(\'height\', that.height);\n that.applyAttr(\'x\', that.cx - that.width / 2);\n that.applyAttr(\'y\', that.cy - that.height / 2);\n jvm.$(that.node).trigger(\'imageloaded\', [img]);\n });\n } else if (attr == \'cx\') {\n this.cx = value;\n if (this.width) {\n this.applyAttr(\'x\', value - this.width / 2);\n }\n } else if (attr == \'cy\') {\n this.cy = value;\n if (this.height) {\n this.applyAttr(\'y\', value - this.height / 2);\n }\n } else {\n jvm.SVGImageElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};\njvm.SVGTextElement = function (config, style) {\n jvm.SVGTextElement.parentClass.call(this, \'text\', config, style);\n};\njvm.inherits(jvm.SVGTextElement, jvm.SVGShapeElement);\njvm.SVGTextElement.prototype.applyAttr = function (attr, value) {\n if (attr === \'text\') {\n this.node.textContent = value;\n } else {\n jvm.SVGTextElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n}; /**\n * Wrapper for VML element.\n * @constructor\n * @extends jvm.AbstractElement\n * @param {String} name Tag name of the element\n * @param {Object} config Set of parameters to initialize element with\n */\n\njvm.VMLElement = function (name, config) {\n if (!jvm.VMLElement.VMLInitialized) {\n jvm.VMLElement.initializeVML();\n }\n jvm.VMLElement.parentClass.apply(this, arguments);\n};\njvm.inherits(jvm.VMLElement, jvm.AbstractElement);\n\n/**\n * Shows if VML was already initialized for the current document or not.\n * @static\n * @private\n * @type {Boolean}\n */\njvm.VMLElement.VMLInitialized = false;\n\n/**\n * Initializes VML handling before creating the first element\n * (adds CSS class and creates namespace). Adds one of two forms\n * of createElement method depending of support by browser.\n * @static\n * @private\n */\n\n// The following method of VML handling is borrowed from the\n// Raphael library by Dmitry Baranovsky.\n\njvm.VMLElement.initializeVML = function () {\n try {\n if (!document.namespaces.rvml) {\n document.namespaces.add("rvml", "urn:schemas-microsoft-com:vml");\n }\n /**\n * Creates DOM element.\n * @param {String} tagName Name of element\n * @private\n * @returns DOMElement\n */\n jvm.VMLElement.prototype.createElement = function (tagName) {\n return document.createElement(\'<rvml:\' + tagName + \' class="rvml">\');\n };\n } catch (e) {\n /**\n * @private\n */\n jvm.VMLElement.prototype.createElement = function (tagName) {\n return document.createElement(\'<\' + tagName + \' xmlns="urn:schemas-microsoft.com:vml" class="rvml">\');\n };\n }\n document.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)");\n jvm.VMLElement.VMLInitialized = true;\n};\n\n/**\n * Returns constructor for element by name prefixed with \'VML\'.\n * @param {String} ctr Name of basic constructor to return\n * proper implementation for.\n * @returns Function\n * @private\n */\njvm.VMLElement.prototype.getElementCtr = function (ctr) {\n return jvm[\'VML\' + ctr];\n};\n\n/**\n * Adds CSS class for underlying DOM element.\n * @param {String} className Name of CSS class name\n */\njvm.VMLElement.prototype.addClass = function (className) {\n jvm.$(this.node).addClass(className);\n};\n\n/**\n * Applies attribute value to the underlying DOM element.\n * @param {String} name Name of attribute\n * @param {Number|String} config Value of attribute to apply\n * @private\n */\njvm.VMLElement.prototype.applyAttr = function (attr, value) {\n this.node[attr] = value;\n};\n\n/**\n * Returns boundary box for the element.\n * @returns {Object} Boundary box with numeric fields: x, y, width, height\n * @override\n */\njvm.VMLElement.prototype.getBBox = function () {\n var node = jvm.$(this.node);\n return {\n x: node.position().left / this.canvas.scale,\n y: node.position().top / this.canvas.scale,\n width: node.width() / this.canvas.scale,\n height: node.height() / this.canvas.scale\n };\n};\njvm.VMLGroupElement = function () {\n jvm.VMLGroupElement.parentClass.call(this, \'group\');\n this.node.style.left = \'0px\';\n this.node.style.top = \'0px\';\n this.node.coordorigin = "0 0";\n};\njvm.inherits(jvm.VMLGroupElement, jvm.VMLElement);\njvm.VMLGroupElement.prototype.add = function (element) {\n this.node.appendChild(element.node);\n};\njvm.VMLCanvasElement = function (container, width, height) {\n this.classPrefix = \'VML\';\n jvm.VMLCanvasElement.parentClass.call(this, \'group\');\n jvm.AbstractCanvasElement.apply(this, arguments);\n this.node.style.position = \'absolute\';\n};\njvm.inherits(jvm.VMLCanvasElement, jvm.VMLElement);\njvm.mixin(jvm.VMLCanvasElement, jvm.AbstractCanvasElement);\njvm.VMLCanvasElement.prototype.setSize = function (width, height) {\n var paths, groups, i, l;\n this.width = width;\n this.height = height;\n this.node.style.width = width + "px";\n this.node.style.height = height + "px";\n this.node.coordsize = width + \' \' + height;\n this.node.coordorigin = "0 0";\n if (this.rootElement) {\n paths = this.rootElement.node.getElementsByTagName(\'shape\');\n for (i = 0, l = paths.length; i < l; i++) {\n paths[i].coordsize = width + \' \' + height;\n paths[i].style.width = width + \'px\';\n paths[i].style.height = height + \'px\';\n }\n groups = this.node.getElementsByTagName(\'group\');\n for (i = 0, l = groups.length; i < l; i++) {\n groups[i].coordsize = width + \' \' + height;\n groups[i].style.width = width + \'px\';\n groups[i].style.height = height + \'px\';\n }\n }\n};\njvm.VMLCanvasElement.prototype.applyTransformParams = function (scale, transX, transY) {\n this.scale = scale;\n this.transX = transX;\n this.transY = transY;\n this.rootElement.node.coordorigin = this.width - transX - this.width / 100 + \',\' + (this.height - transY - this.height / 100);\n this.rootElement.node.coordsize = this.width / scale + \',\' + this.height / scale;\n};\njvm.VMLShapeElement = function (name, config) {\n jvm.VMLShapeElement.parentClass.call(this, name, config);\n this.fillElement = new jvm.VMLElement(\'fill\');\n this.strokeElement = new jvm.VMLElement(\'stroke\');\n this.node.appendChild(this.fillElement.node);\n this.node.appendChild(this.strokeElement.node);\n this.node.stroked = false;\n jvm.AbstractShapeElement.apply(this, arguments);\n};\njvm.inherits(jvm.VMLShapeElement, jvm.VMLElement);\njvm.mixin(jvm.VMLShapeElement, jvm.AbstractShapeElement);\njvm.VMLShapeElement.prototype.applyAttr = function (attr, value) {\n switch (attr) {\n case \'fill\':\n this.node.fillcolor = value;\n break;\n case \'fill-opacity\':\n this.fillElement.node.opacity = Math.round(value * 100) + \'%\';\n break;\n case \'stroke\':\n if (value === \'none\') {\n this.node.stroked = false;\n } else {\n this.node.stroked = true;\n }\n this.node.strokecolor = value;\n break;\n case \'stroke-opacity\':\n this.strokeElement.node.opacity = Math.round(value * 100) + \'%\';\n break;\n case \'stroke-width\':\n if (parseInt(value, 10) === 0) {\n this.node.stroked = false;\n } else {\n this.node.stroked = true;\n }\n this.node.strokeweight = value;\n break;\n case \'d\':\n this.node.path = jvm.VMLPathElement.pathSvgToVml(value);\n break;\n default:\n jvm.VMLShapeElement.parentClass.prototype.applyAttr.apply(this, arguments);\n }\n};\njvm.VMLPathElement = function (config, style) {\n var scale = new jvm.VMLElement(\'skew\');\n jvm.VMLPathElement.parentClass.call(this, \'shape\', config, style);\n this.node.coordorigin = "0 0";\n scale.node.on = true;\n scale.node.matrix = \'0.01,0,0,0.01,0,0\';\n scale.node.offset = \'0,0\';\n this.node.appendChild(scale.node);\n};\njvm.inherits(jvm.VMLPathElement, jvm.VMLShapeElement);\njvm.VMLPathElement.prototype.applyAttr = function (attr, value) {\n if (attr === \'d\') {\n this.node.path = jvm.VMLPathElement.pathSvgToVml(value);\n } else {\n jvm.VMLShapeElement.prototype.applyAttr.call(this, attr, value);\n }\n};\njvm.VMLPathElement.pathSvgToVml = function (path) {\n var cx = 0,\n cy = 0,\n ctrlx,\n ctrly;\n path = path.replace(/(-?\\d+)e(-?\\d+)/g, \'0\');\n return path.replace(/([MmLlHhVvCcSs])\\s*((?:-?\\d*(?:\\.\\d+)?\\s*,?\\s*)+)/g, function (segment, letter, coords, index) {\n coords = coords.replace(/(\\d)-/g, \'$1,-\').replace(/^\\s+/g, \'\').replace(/\\s+$/g, \'\').replace(/\\s+/g, \',\').split(\',\');\n if (!coords[0]) coords.shift();\n for (var i = 0, l = coords.length; i < l; i++) {\n coords[i] = Math.round(100 * coords[i]);\n }\n switch (letter) {\n case \'m\':\n cx += coords[0];\n cy += coords[1];\n return \'t\' + coords.join(\',\');\n case \'M\':\n cx = coords[0];\n cy = coords[1];\n return \'m\' + coords.join(\',\');\n case \'l\':\n cx += coords[0];\n cy += coords[1];\n return \'r\' + coords.join(\',\');\n case \'L\':\n cx = coords[0];\n cy = coords[1];\n return \'l\' + coords.join(\',\');\n case \'h\':\n cx += coords[0];\n return \'r\' + coords[0] + \',0\';\n case \'H\':\n cx = coords[0];\n return \'l\' + cx + \',\' + cy;\n case \'v\':\n cy += coords[0];\n return \'r0,\' + coords[0];\n case \'V\':\n cy = coords[0];\n return \'l\' + cx + \',\' + cy;\n case \'c\':\n ctrlx = cx + coords[coords.length - 4];\n ctrly = cy + coords[coords.length - 3];\n cx += coords[coords.length - 2];\n cy += coords[coords.length - 1];\n return \'v\' + coords.join(\',\');\n case \'C\':\n ctrlx = coords[coords.length - 4];\n ctrly = coords[coords.length - 3];\n cx = coords[coords.length - 2];\n cy = coords[coords.length - 1];\n return \'c\' + coords.join(\',\');\n case \'s\':\n coords.unshift(cy - ctrly);\n coords.unshift(cx - ctrlx);\n ctrlx = cx + coords[coords.length - 4];\n ctrly = cy + coords[coords.length - 3];\n cx += coords[coords.length - 2];\n cy += coords[coords.length - 1];\n return \'v\' + coords.join(\',\');\n case \'S\':\n coords.unshift(cy + cy - ctrly);\n coords.unshift(cx + cx - ctrlx);\n ctrlx = coords[coords.length - 4];\n ctrly = coords[coords.length - 3];\n cx = coords[coords.length - 2];\n cy = coords[coords.length - 1];\n return \'c\' + coords.join(\',\');\n }\n return \'\';\n }).replace(/z/g, \'e\');\n};\njvm.VMLCircleElement = function (config, style) {\n jvm.VMLCircleElement.parentClass.call(this, \'oval\', config, style);\n};\njvm.inherits(jvm.VMLCircleElement, jvm.VMLShapeElement);\njvm.VMLCircleElement.prototype.applyAttr = function (attr, value) {\n switch (attr) {\n case \'r\':\n this.node.style.width = value * 2 + \'px\';\n this.node.style.height = value * 2 + \'px\';\n this.applyAttr(\'cx\', this.get(\'cx\') || 0);\n this.applyAttr(\'cy\', this.get(\'cy\') || 0);\n break;\n case \'cx\':\n if (!value) return;\n this.node.style.left = value - (this.get(\'r\') || 0) + \'px\';\n break;\n case \'cy\':\n if (!value) return;\n this.node.style.top = value - (this.get(\'r\') || 0) + \'px\';\n break;\n default:\n jvm.VMLCircleElement.parentClass.prototype.applyAttr.call(this, attr, value);\n }\n}; /**\n * Class for vector images manipulations.\n * @constructor\n * @param {DOMElement} container to place canvas to\n * @param {Number} width\n * @param {Number} height\n */\njvm.VectorCanvas = function (container, width, height) {\n this.mode = window.SVGAngle ? \'svg\' : \'vml\';\n if (this.mode == \'svg\') {\n this.impl = new jvm.SVGCanvasElement(container, width, height);\n } else {\n this.impl = new jvm.VMLCanvasElement(container, width, height);\n }\n this.impl.mode = this.mode;\n return this.impl;\n};\njvm.SimpleScale = function (scale) {\n this.scale = scale;\n};\njvm.SimpleScale.prototype.getValue = function (value) {\n return value;\n};\njvm.OrdinalScale = function (scale) {\n this.scale = scale;\n};\njvm.OrdinalScale.prototype.getValue = function (value) {\n return this.scale[value];\n};\njvm.OrdinalScale.prototype.getTicks = function () {\n var ticks = [],\n key;\n for (key in this.scale) {\n ticks.push({\n label: key,\n value: this.scale[key]\n });\n }\n return ticks;\n};\njvm.NumericScale = function (scale, normalizeFunction, minValue, maxValue) {\n this.scale = [];\n normalizeFunction = normalizeFunction || \'linear\';\n if (scale) this.setScale(scale);\n if (normalizeFunction) this.setNormalizeFunction(normalizeFunction);\n if (typeof minValue !== \'undefined\') this.setMin(minValue);\n if (typeof maxValue !== \'undefined\') this.setMax(maxValue);\n};\njvm.NumericScale.prototype = {\n setMin: function setMin(min) {\n this.clearMinValue = min;\n if (typeof this.normalize === \'function\') {\n this.minValue = this.normalize(min);\n } else {\n this.minValue = min;\n }\n },\n setMax: function setMax(max) {\n this.clearMaxValue = max;\n if (typeof this.normalize === \'function\') {\n this.maxValue = this.normalize(max);\n } else {\n this.maxValue = max;\n }\n },\n setScale: function setScale(scale) {\n var i;\n this.scale = [];\n for (i = 0; i < scale.length; i++) {\n this.scale[i] = [scale[i]];\n }\n },\n setNormalizeFunction: function setNormalizeFunction(f) {\n if (f === \'polynomial\') {\n this.normalize = function (value) {\n return Math.pow(value, 0.2);\n };\n } else if (f === \'linear\') {\n delete this.normalize;\n } else {\n this.normalize = f;\n }\n this.setMin(this.clearMinValue);\n this.setMax(this.clearMaxValue);\n },\n getValue: function getValue(value) {\n var lengthes = [],\n fullLength = 0,\n l,\n i = 0,\n c;\n if (typeof this.normalize === \'function\') {\n value = this.normalize(value);\n }\n for (i = 0; i < this.scale.length - 1; i++) {\n l = this.vectorLength(this.vectorSubtract(this.scale[i + 1], this.scale[i]));\n lengthes.push(l);\n fullLength += l;\n }\n c = (this.maxValue - this.minValue) / fullLength;\n for (i = 0; i < lengthes.length; i++) {\n lengthes[i] *= c;\n }\n i = 0;\n value -= this.minValue;\n while (value - lengthes[i] >= 0) {\n value -= lengthes[i];\n i++;\n }\n if (i == this.scale.length - 1) {\n value = this.vectorToNum(this.scale[i]);\n } else {\n value = this.vectorToNum(this.vectorAdd(this.scale[i], this.vectorMult(this.vectorSubtract(this.scale[i + 1], this.scale[i]), value / lengthes[i])));\n }\n return value;\n },\n vectorToNum: function vectorToNum(vector) {\n var num = 0,\n i;\n for (i = 0; i < vector.length; i++) {\n num += Math.round(vector[i]) * Math.pow(256, vector.length - i - 1);\n }\n return num;\n },\n vectorSubtract: function vectorSubtract(vector1, vector2) {\n var vector = [],\n i;\n for (i = 0; i < vector1.length; i++) {\n vector[i] = vector1[i] - vector2[i];\n }\n return vector;\n },\n vectorAdd: function vectorAdd(vector1, vector2) {\n var vector = [],\n i;\n for (i = 0; i < vector1.length; i++) {\n vector[i] = vector1[i] + vector2[i];\n }\n return vector;\n },\n vectorMult: function vectorMult(vector, num) {\n var result = [],\n i;\n for (i = 0; i < vector.length; i++) {\n result[i] = vector[i] * num;\n }\n return result;\n },\n vectorLength: function vectorLength(vector) {\n var result = 0,\n i;\n for (i = 0; i < vector.length; i++) {\n result += vector[i] * vector[i];\n }\n return Math.sqrt(result);\n },\n /* Derived from d3 implementation https://github.com/mbostock/d3/blob/master/src/scale/linear.js#L94 */\n getTicks: function getTicks() {\n var m = 5,\n extent = [this.clearMinValue, this.clearMaxValue],\n span = extent[1] - extent[0],\n step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)),\n err = m / span * step,\n ticks = [],\n tick,\n v;\n if (err <= .15) step *= 10;else if (err <= .35) step *= 5;else if (err <= .75) step *= 2;\n extent[0] = Math.floor(extent[0] / step) * step;\n extent[1] = Math.ceil(extent[1] / step) * step;\n tick = extent[0];\n while (tick <= extent[1]) {\n if (tick == extent[0]) {\n v = this.clearMinValue;\n } else if (tick == extent[1]) {\n v = this.clearMaxValue;\n } else {\n v = tick;\n }\n ticks.push({\n label: tick,\n value: this.getValue(v)\n });\n tick += step;\n }\n return ticks;\n }\n};\njvm.ColorScale = function (colors, normalizeFunction, minValue, maxValue) {\n jvm.ColorScale.parentClass.apply(this, arguments);\n};\njvm.inherits(jvm.ColorScale, jvm.NumericScale);\njvm.ColorScale.prototype.setScale = function (scale) {\n var i;\n for (i = 0; i < scale.length; i++) {\n this.scale[i] = jvm.ColorScale.rgbToArray(scale[i]);\n }\n};\njvm.ColorScale.prototype.getValue = function (value) {\n return jvm.ColorScale.numToRgb(jvm.ColorScale.parentClass.prototype.getValue.call(this, value));\n};\njvm.ColorScale.arrayToRgb = function (ar) {\n var rgb = \'#\',\n d,\n i;\n for (i = 0; i < ar.length; i++) {\n d = ar[i].toString(16);\n rgb += d.length == 1 ? \'0\' + d : d;\n }\n return rgb;\n};\njvm.ColorScale.numToRgb = function (num) {\n num = num.toString(16);\n while (num.length < 6) {\n num = \'0\' + num;\n }\n return \'#\' + num;\n};\njvm.ColorScale.rgbToArray = function (rgb) {\n rgb = rgb.substr(1);\n return [parseInt(rgb.substr(0, 2), 16), parseInt(rgb.substr(2, 2), 16), parseInt(rgb.substr(4, 2), 16)];\n}; /**\n * Represents map legend.\n * @constructor\n * @param {Object} params Configuration parameters.\n * @param {String} params.cssClass Additional CSS class to apply to legend element.\n * @param {Boolean} params.vertical If <code>true</code> legend will be rendered as vertical.\n * @param {String} params.title Legend title.\n * @param {Function} params.labelRender Method to convert series values to legend labels.\n */\njvm.Legend = function (params) {\n this.params = params || {};\n this.map = this.params.map;\n this.series = this.params.series;\n this.body = jvm.$(\'<div/>\');\n this.body.addClass(\'jvectormap-legend\');\n if (this.params.cssClass) {\n this.body.addClass(this.params.cssClass);\n }\n if (params.vertical) {\n this.map.legendCntVertical.append(this.body);\n } else {\n this.map.legendCntHorizontal.append(this.body);\n }\n this.render();\n};\njvm.Legend.prototype.render = function () {\n var ticks = this.series.scale.getTicks(),\n i,\n inner = jvm.$(\'<div/>\').addClass(\'jvectormap-legend-inner\'),\n tick,\n sample,\n label;\n this.body.html(\'\');\n if (this.params.title) {\n this.body.append(jvm.$(\'<div/>\').addClass(\'jvectormap-legend-title\').html(this.params.title));\n }\n this.body.append(inner);\n for (i = 0; i < ticks.length; i++) {\n tick = jvm.$(\'<div/>\').addClass(\'jvectormap-legend-tick\');\n sample = jvm.$(\'<div/>\').addClass(\'jvectormap-legend-tick-sample\');\n switch (this.series.params.attribute) {\n case \'fill\':\n if (jvm.isImageUrl(ticks[i].value)) {\n sample.css(\'background\', \'url(\' + ticks[i].value + \')\');\n } else {\n sample.css(\'background\', ticks[i].value);\n }\n break;\n case \'stroke\':\n sample.css(\'background\', ticks[i].value);\n break;\n case \'image\':\n sample.css(\'background\', \'url(\' + ticks[i].value + \') no-repeat center center\');\n break;\n case \'r\':\n jvm.$(\'<div/>\').css({\n \'border-radius\': ticks[i].value,\n border: this.map.params.markerStyle.initial[\'stroke-width\'] + \'px \' + this.map.params.markerStyle.initial[\'stroke\'] + \' solid\',\n width: ticks[i].value * 2 + \'px\',\n height: ticks[i].value * 2 + \'px\',\n background: this.map.params.markerStyle.initial[\'fill\']\n }).appendTo(sample);\n break;\n }\n tick.append(sample);\n label = ticks[i].label;\n if (this.params.labelRender) {\n label = this.params.labelRender(label);\n }\n tick.append(jvm.$(\'<div>\' + label + \' </div>\').addClass(\'jvectormap-legend-tick-text\'));\n inner.append(tick);\n }\n inner.append(jvm.$(\'<div/>\').css(\'clear\', \'both\'));\n}; /**\n * Creates data series.\n * @constructor\n * @param {Object} params Parameters to initialize series with.\n * @param {Array} params.values The data set to visualize.\n * @param {String} params.attribute Numberic or color attribute to use for data visualization. This could be: <code>fill</code>, <code>stroke</code>, <code>fill-opacity</code>, <code>stroke-opacity</code> for markers and regions and <code>r</code> (radius) for markers only.\n * @param {Array} params.scale Values used to map a dimension of data to a visual representation. The first value sets visualization for minimum value from the data set and the last value sets visualization for the maximum value. There also could be intermidiate values. Default value is <code>[\'#C8EEFF\', \'#0071A4\']</code>\n * @param {Function|String} params.normalizeFunction The function used to map input values to the provided scale. This parameter could be provided as function or one of the strings: <code>\'linear\'</code> or <code>\'polynomial\'</code>, while <code>\'linear\'</code> is used by default. The function provided takes value from the data set as an input and returns corresponding value from the scale.\n * @param {Number} params.min Minimum value of the data set. Could be calculated automatically if not provided.\n * @param {Number} params.min Maximum value of the data set. Could be calculated automatically if not provided.\n */\njvm.DataSeries = function (params, elements, map) {\n var scaleConstructor;\n params = params || {};\n params.attribute = params.attribute || \'fill\';\n this.elements = elements;\n this.params = params;\n this.map = map;\n if (params.attributes) {\n this.setAttributes(params.attributes);\n }\n if (jvm.$.isArray(params.scale)) {\n scaleConstructor = params.attribute === \'fill\' || params.attribute === \'stroke\' ? jvm.ColorScale : jvm.NumericScale;\n this.scale = new scaleConstructor(params.scale, params.normalizeFunction, params.min, params.max);\n } else if (params.scale) {\n this.scale = new jvm.OrdinalScale(params.scale);\n } else {\n this.scale = new jvm.SimpleScale(params.scale);\n }\n this.values = params.values || {};\n this.setValues(this.values);\n if (this.params.legend) {\n this.legend = new jvm.Legend($.extend({\n map: this.map,\n series: this\n }, this.params.legend));\n }\n};\njvm.DataSeries.prototype = {\n setAttributes: function setAttributes(key, attr) {\n var attrs = key,\n code;\n if (typeof key == \'string\') {\n if (this.elements[key]) {\n this.elements[key].setStyle(this.params.attribute, attr);\n }\n } else {\n for (code in attrs) {\n if (this.elements[code]) {\n this.elements[code].element.setStyle(this.params.attribute, attrs[code]);\n }\n }\n }\n },\n /**\n * Set values for the data set.\n * @param {Object} values Object which maps codes of regions or markers to values.\n */\n setValues: function setValues(values) {\n var max = -Number.MAX_VALUE,\n min = Number.MAX_VALUE,\n val,\n cc,\n attrs = {};\n if (!(this.scale instanceof jvm.OrdinalScale) && !(this.scale instanceof jvm.SimpleScale)) {\n // we have a color scale as an array\n if (typeof this.params.min === \'undefined\' || typeof this.params.max === \'undefined\') {\n // min and/or max are not defined, so calculate them\n for (cc in values) {\n val = parseFloat(values[cc]);\n if (val > max) max = val;\n if (val < min) min = val;\n }\n }\n if (typeof this.params.min === \'undefined\') {\n this.scale.setMin(min);\n this.params.min = min;\n } else {\n this.scale.setMin(this.params.min);\n }\n if (typeof this.params.max === \'undefined\') {\n this.scale.setMax(max);\n this.params.max = max;\n } else {\n this.scale.setMax(this.params.max);\n }\n for (cc in values) {\n if (cc != \'indexOf\') {\n val = parseFloat(values[cc]);\n if (!isNaN(val)) {\n attrs[cc] = this.scale.getValue(val);\n } else {\n attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];\n }\n }\n }\n } else {\n for (cc in values) {\n if (values[cc]) {\n attrs[cc] = this.scale.getValue(values[cc]);\n } else {\n attrs[cc] = this.elements[cc].element.style.initial[this.params.attribute];\n }\n }\n }\n this.setAttributes(attrs);\n jvm.$.extend(this.values, values);\n },\n clear: function clear() {\n var key,\n attrs = {};\n for (key in this.values) {\n if (this.elements[key]) {\n attrs[key] = this.elements[key].element.shape.style.initial[this.params.attribute];\n }\n }\n this.setAttributes(attrs);\n this.values = {};\n },\n /**\n * Set scale of the data series.\n * @param {Array} scale Values representing scale.\n */\n setScale: function setScale(scale) {\n this.scale.setScale(scale);\n if (this.values) {\n this.setValues(this.values);\n }\n },\n /**\n * Set normalize function of the data series.\n * @param {Function|String} normilizeFunction.\n */\n setNormalizeFunction: function setNormalizeFunction(f) {\n this.scale.setNormalizeFunction(f);\n if (this.values) {\n this.setValues(this.values);\n }\n }\n};\n/**\n * Contains methods for transforming point on sphere to\n * Cartesian coordinates using various projections.\n * @class\n */\njvm.Proj = {\n degRad: 180 / Math.PI,\n radDeg: Math.PI / 180,\n radius: 6381372,\n sgn: function sgn(n) {\n if (n > 0) {\n return 1;\n } else if (n < 0) {\n return -1;\n } else {\n return n;\n }\n },\n /**\n * Converts point on sphere to the Cartesian coordinates using Miller projection\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n mill: function mill(lat, lng, c) {\n return {\n x: this.radius * (lng - c) * this.radDeg,\n y: -this.radius * Math.log(Math.tan((45 + 0.4 * lat) * this.radDeg)) / 0.8\n };\n },\n /**\n * Inverse function of mill()\n * Converts Cartesian coordinates to point on sphere using Miller projection\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n mill_inv: function mill_inv(x, y, c) {\n return {\n lat: (2.5 * Math.atan(Math.exp(0.8 * y / this.radius)) - 5 * Math.PI / 8) * this.degRad,\n lng: (c * this.radDeg + x / this.radius) * this.degRad\n };\n },\n /**\n * Converts point on sphere to the Cartesian coordinates using Mercator projection\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n merc: function merc(lat, lng, c) {\n return {\n x: this.radius * (lng - c) * this.radDeg,\n y: -this.radius * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))\n };\n },\n /**\n * Inverse function of merc()\n * Converts Cartesian coordinates to point on sphere using Mercator projection\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n merc_inv: function merc_inv(x, y, c) {\n return {\n lat: (2 * Math.atan(Math.exp(y / this.radius)) - Math.PI / 2) * this.degRad,\n lng: (c * this.radDeg + x / this.radius) * this.degRad\n };\n },\n /**\n * Converts point on sphere to the Cartesian coordinates using Albers Equal-Area Conic\n * projection\n * @see <a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection</a>\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n aea: function aea(lat, lng, c) {\n var fi0 = 0,\n lambda0 = c * this.radDeg,\n fi1 = 29.5 * this.radDeg,\n fi2 = 45.5 * this.radDeg,\n fi = lat * this.radDeg,\n lambda = lng * this.radDeg,\n n = (Math.sin(fi1) + Math.sin(fi2)) / 2,\n C = Math.cos(fi1) * Math.cos(fi1) + 2 * n * Math.sin(fi1),\n theta = n * (lambda - lambda0),\n ro = Math.sqrt(C - 2 * n * Math.sin(fi)) / n,\n ro0 = Math.sqrt(C - 2 * n * Math.sin(fi0)) / n;\n return {\n x: ro * Math.sin(theta) * this.radius,\n y: -(ro0 - ro * Math.cos(theta)) * this.radius\n };\n },\n /**\n * Converts Cartesian coordinates to the point on sphere using Albers Equal-Area Conic\n * projection\n * @see <a href="http://mathworld.wolfram.com/AlbersEqual-AreaConicProjection.html">Albers Equal-Area Conic projection</a>\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n aea_inv: function aea_inv(xCoord, yCoord, c) {\n var x = xCoord / this.radius,\n y = yCoord / this.radius,\n fi0 = 0,\n lambda0 = c * this.radDeg,\n fi1 = 29.5 * this.radDeg,\n fi2 = 45.5 * this.radDeg,\n n = (Math.sin(fi1) + Math.sin(fi2)) / 2,\n C = Math.cos(fi1) * Math.cos(fi1) + 2 * n * Math.sin(fi1),\n ro0 = Math.sqrt(C - 2 * n * Math.sin(fi0)) / n,\n ro = Math.sqrt(x * x + (ro0 - y) * (ro0 - y)),\n theta = Math.atan(x / (ro0 - y));\n return {\n lat: Math.asin((C - ro * ro * n * n) / (2 * n)) * this.degRad,\n lng: (lambda0 + theta / n) * this.degRad\n };\n },\n /**\n * Converts point on sphere to the Cartesian coordinates using Lambert conformal\n * conic projection\n * @see <a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic Projection</a>\n * @param {Number} lat Latitude in degrees\n * @param {Number} lng Longitude in degrees\n * @param {Number} c Central meridian in degrees\n */\n lcc: function lcc(lat, lng, c) {\n var fi0 = 0,\n lambda0 = c * this.radDeg,\n lambda = lng * this.radDeg,\n fi1 = 33 * this.radDeg,\n fi2 = 45 * this.radDeg,\n fi = lat * this.radDeg,\n n = Math.log(Math.cos(fi1) * (1 / Math.cos(fi2))) / Math.log(Math.tan(Math.PI / 4 + fi2 / 2) * (1 / Math.tan(Math.PI / 4 + fi1 / 2))),\n F = Math.cos(fi1) * Math.pow(Math.tan(Math.PI / 4 + fi1 / 2), n) / n,\n ro = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi / 2), n),\n ro0 = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi0 / 2), n);\n return {\n x: ro * Math.sin(n * (lambda - lambda0)) * this.radius,\n y: -(ro0 - ro * Math.cos(n * (lambda - lambda0))) * this.radius\n };\n },\n /**\n * Converts Cartesian coordinates to the point on sphere using Lambert conformal conic\n * projection\n * @see <a href="http://mathworld.wolfram.com/LambertConformalConicProjection.html">Lambert Conformal Conic Projection</a>\n * @param {Number} x X of point in Cartesian system as integer\n * @param {Number} y Y of point in Cartesian system as integer\n * @param {Number} c Central meridian in degrees\n */\n lcc_inv: function lcc_inv(xCoord, yCoord, c) {\n var x = xCoord / this.radius,\n y = yCoord / this.radius,\n fi0 = 0,\n lambda0 = c * this.radDeg,\n fi1 = 33 * this.radDeg,\n fi2 = 45 * this.radDeg,\n n = Math.log(Math.cos(fi1) * (1 / Math.cos(fi2))) / Math.log(Math.tan(Math.PI / 4 + fi2 / 2) * (1 / Math.tan(Math.PI / 4 + fi1 / 2))),\n F = Math.cos(fi1) * Math.pow(Math.tan(Math.PI / 4 + fi1 / 2), n) / n,\n ro0 = F * Math.pow(1 / Math.tan(Math.PI / 4 + fi0 / 2), n),\n ro = this.sgn(n) * Math.sqrt(x * x + (ro0 - y) * (ro0 - y)),\n theta = Math.atan(x / (ro0 - y));\n return {\n lat: (2 * Math.atan(Math.pow(F / ro, 1 / n)) - Math.PI / 2) * this.degRad,\n lng: (lambda0 + theta / n) * this.degRad\n };\n }\n};\njvm.MapObject = function (config) {};\njvm.MapObject.prototype.getLabelText = function (key) {\n var text;\n if (this.config.label) {\n if (typeof this.config.label.render === \'function\') {\n text = this.config.label.render(key);\n } else {\n text = key;\n }\n } else {\n text = null;\n }\n return text;\n};\njvm.MapObject.prototype.getLabelOffsets = function (key) {\n var offsets;\n if (this.config.label) {\n if (typeof this.config.label.offsets === \'function\') {\n offsets = this.config.label.offsets(key);\n } else if (_typeof(this.config.label.offsets) === \'object\') {\n offsets = this.config.label.offsets[key];\n }\n }\n return offsets || [0, 0];\n};\n\n/**\n * Set hovered state to the element. Hovered state means mouse cursor is over element. Styles will be updates respectively.\n * @param {Boolean} isHovered <code>true</code> to make element hovered, <code>false</code> otherwise.\n */\njvm.MapObject.prototype.setHovered = function (isHovered) {\n if (this.isHovered !== isHovered) {\n this.isHovered = isHovered;\n this.shape.isHovered = isHovered;\n this.shape.updateStyle();\n if (this.label) {\n this.label.isHovered = isHovered;\n this.label.updateStyle();\n }\n }\n};\n\n/**\n * Set selected state to the element. Styles will be updates respectively.\n * @param {Boolean} isSelected <code>true</code> to make element selected, <code>false</code> otherwise.\n */\njvm.MapObject.prototype.setSelected = function (isSelected) {\n if (this.isSelected !== isSelected) {\n this.isSelected = isSelected;\n this.shape.isSelected = isSelected;\n this.shape.updateStyle();\n if (this.label) {\n this.label.isSelected = isSelected;\n this.label.updateStyle();\n }\n jvm.$(this.shape).trigger(\'selected\', [isSelected]);\n }\n};\njvm.MapObject.prototype.setStyle = function () {\n this.shape.setStyle.apply(this.shape, arguments);\n};\njvm.MapObject.prototype.remove = function () {\n this.shape.remove();\n if (this.label) {\n this.label.remove();\n }\n};\njvm.Region = function (config) {\n var bbox, text, offsets, labelDx, labelDy;\n this.config = config;\n this.map = this.config.map;\n this.shape = config.canvas.addPath({\n d: config.path,\n \'data-code\': config.code\n }, config.style, config.canvas.rootElement);\n this.shape.addClass(\'jvectormap-region jvectormap-element\');\n bbox = this.shape.getBBox();\n text = this.getLabelText(config.code);\n if (this.config.label && text) {\n offsets = this.getLabelOffsets(config.code);\n this.labelX = bbox.x + bbox.width / 2 + offsets[0];\n this.labelY = bbox.y + bbox.height / 2 + offsets[1];\n this.label = config.canvas.addText({\n text: text,\n \'text-anchor\': \'middle\',\n \'alignment-baseline\': \'central\',\n x: this.labelX,\n y: this.labelY,\n \'data-code\': config.code\n }, config.labelStyle, config.labelsGroup);\n this.label.addClass(\'jvectormap-region jvectormap-element\');\n }\n};\njvm.inherits(jvm.Region, jvm.MapObject);\njvm.Region.prototype.updateLabelPosition = function () {\n if (this.label) {\n this.label.set({\n x: this.labelX * this.map.scale + this.map.transX * this.map.scale,\n y: this.labelY * this.map.scale + this.map.transY * this.map.scale\n });\n }\n};\njvm.Marker = function (config) {\n var text, offsets;\n this.config = config;\n this.map = this.config.map;\n this.isImage = !!this.config.style.initial.image;\n this.createShape();\n text = this.getLabelText(config.index);\n if (this.config.label && text) {\n this.offsets = this.getLabelOffsets(config.index);\n this.labelX = config.cx / this.map.scale - this.map.transX;\n this.labelY = config.cy / this.map.scale - this.map.transY;\n this.label = config.canvas.addText({\n text: text,\n \'data-index\': config.index,\n dy: "0.6ex",\n x: this.labelX,\n y: this.labelY\n }, config.labelStyle, config.labelsGroup);\n this.label.addClass(\'jvectormap-marker jvectormap-element\');\n }\n};\njvm.inherits(jvm.Marker, jvm.MapObject);\njvm.Marker.prototype.createShape = function () {\n var that = this;\n if (this.shape) {\n this.shape.remove();\n }\n this.shape = this.config.canvas[this.isImage ? \'addImage\' : \'addCircle\']({\n "data-index": this.config.index,\n cx: this.config.cx,\n cy: this.config.cy\n }, this.config.style, this.config.group);\n this.shape.addClass(\'jvectormap-marker jvectormap-element\');\n if (this.isImage) {\n jvm.$(this.shape.node).on(\'imageloaded\', function () {\n that.updateLabelPosition();\n });\n }\n};\njvm.Marker.prototype.updateLabelPosition = function () {\n if (this.label) {\n this.label.set({\n x: this.labelX * this.map.scale + this.offsets[0] + this.map.transX * this.map.scale + 5 + (this.isImage ? (this.shape.width || 0) / 2 : this.shape.properties.r),\n y: this.labelY * this.map.scale + this.map.transY * this.map.scale + this.offsets[1]\n });\n }\n};\njvm.Marker.prototype.setStyle = function (property, value) {\n var isImage;\n jvm.Marker.parentClass.prototype.setStyle.apply(this, arguments);\n if (property === \'r\') {\n this.updateLabelPosition();\n }\n isImage = !!this.shape.get(\'image\');\n if (isImage != this.isImage) {\n this.isImage = isImage;\n this.config.style = jvm.$.extend(true, {}, this.shape.style);\n this.createShape();\n }\n}; /**\n * Creates map, draws paths, binds events.\n * @constructor\n * @param {Object} params Parameters to initialize map with.\n * @param {String} params.map Name of the map in the format <code>territory_proj_lang</code> where <code>territory</code> is a unique code or name of the territory which the map represents (ISO 3166 standard is used where possible), <code>proj</code> is a name of projection used to generate representation of the map on the plane (projections are named according to the conventions of proj4 utility) and <code>lang</code> is a code of the language, used for the names of regions.\n * @param {String} params.backgroundColor Background color of the map in CSS format.\n * @param {Boolean} params.zoomOnScroll When set to true map could be zoomed using mouse scroll. Default value is <code>true</code>.\n * @param {Boolean} params.zoomOnScrollSpeed Mouse scroll speed. Number from 1 to 10. Default value is <code>3</code>.\n * @param {Boolean} params.panOnDrag When set to true, the map pans when being dragged. Default value is <code>true</code>.\n * @param {Number} params.zoomMax Indicates the maximum zoom ratio which could be reached zooming the map. Default value is <code>8</code>.\n * @param {Number} params.zoomMin Indicates the minimum zoom ratio which could be reached zooming the map. Default value is <code>1</code>.\n * @param {Number} params.zoomStep Indicates the multiplier used to zoom map with +/- buttons. Default value is <code>1.6</code>.\n * @param {Boolean} params.zoomAnimate Indicates whether or not to animate changing of map zoom with zoom buttons.\n * @param {Boolean} params.regionsSelectable When set to true regions of the map could be selected. Default value is <code>false</code>.\n * @param {Boolean} params.regionsSelectableOne Allow only one region to be selected at the moment. Default value is <code>false</code>.\n * @param {Boolean} params.markersSelectable When set to true markers on the map could be selected. Default value is <code>false</code>.\n * @param {Boolean} params.markersSelectableOne Allow only one marker to be selected at the moment. Default value is <code>false</code>.\n * @param {Object} params.regionStyle Set the styles for the map\'s regions. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it\'s selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:\n <pre>{\n initial: {\n fill: \'white\',\n "fill-opacity": 1,\n stroke: \'none\',\n "stroke-width": 0,\n "stroke-opacity": 1\n },\n hover: {\n "fill-opacity": 0.8,\n cursor: \'pointer\'\n },\n selected: {\n fill: \'yellow\'\n },\n selectedHover: {\n }\n }</pre>\n * @param {Object} params.regionLabelStyle Set the styles for the regions\' labels. Each region or marker has four states: <code>initial</code> (default state), <code>hover</code> (when the mouse cursor is over the region or marker), <code>selected</code> (when region or marker is selected), <code>selectedHover</code> (when the mouse cursor is over the region or marker and it\'s selected simultaneously). Styles could be set for each of this states. Default value for that parameter is:\n <pre>{\n initial: {\n \'font-family\': \'Verdana\',\n \'font-size\': \'12\',\n \'font-weight\': \'bold\',\n cursor: \'default\',\n fill: \'black\'\n },\n hover: {\n cursor: \'pointer\'\n }\n }</pre>\n * @param {Object} params.markerStyle Set the styles for the map\'s markers. Any parameter suitable for <code>regionStyle</code> could be used as well as numeric parameter <code>r</code> to set the marker\'s radius. Default value for that parameter is:\n <pre>{\n initial: {\n fill: \'grey\',\n stroke: \'#505050\',\n "fill-opacity": 1,\n "stroke-width": 1,\n "stroke-opacity": 1,\n r: 5\n },\n hover: {\n stroke: \'black\',\n "stroke-width": 2,\n cursor: \'pointer\'\n },\n selected: {\n fill: \'blue\'\n },\n selectedHover: {\n }\n }</pre>\n * @param {Object} params.markerLabelStyle Set the styles for the markers\' labels. Default value for that parameter is:\n <pre>{\n initial: {\n \'font-family\': \'Verdana\',\n \'font-size\': \'12\',\n \'font-weight\': \'bold\',\n cursor: \'default\',\n fill: \'black\'\n },\n hover: {\n cursor: \'pointer\'\n }\n }</pre>\n * @param {Object|Array} params.markers Set of markers to add to the map during initialization. In case of array is provided, codes of markers will be set as string representations of array indexes. Each marker is represented by <code>latLng</code> (array of two numeric values), <code>name</code> (string which will be show on marker\'s tip) and any marker styles.\n * @param {Object} params.series Object with two keys: <code>markers</code> and <code>regions</code>. Each of which is an array of series configs to be applied to the respective map elements. See <a href="jvm.DataSeries.html">DataSeries</a> description for a list of parameters available.\n * @param {Object|String} params.focusOn This parameter sets the initial position and scale of the map viewport. See <code>setFocus</code> docuemntation for possible parameters.\n * @param {Object} params.labels Defines parameters for rendering static labels. Object could contain two keys: <code>regions</code> and <code>markers</code>. Each key value defines configuration object with the following possible options:\n <ul>\n <li><code>render {Function}</code> - defines method for converting region code or marker index to actual label value.</li>\n <li><code>offsets {Object|Function}</code> - provides method or object which could be used to define label offset by region code or marker index.</li>\n </ul>\n <b>Plase note: static labels feature is not supported in Internet Explorer 8 and below.</b>\n * @param {Array|Object|String} params.selectedRegions Set initially selected regions.\n * @param {Array|Object|String} params.selectedMarkers Set initially selected markers.\n * @param {Function} params.onRegionTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the region tip is going to be shown.\n * @param {Function} params.onRegionOver <code>(Event e, String code)</code> Will be called on region mouse over event.\n * @param {Function} params.onRegionOut <code>(Event e, String code)</code> Will be called on region mouse out event.\n * @param {Function} params.onRegionClick <code>(Event e, String code)</code> Will be called on region click event.\n * @param {Function} params.onRegionSelected <code>(Event e, String code, Boolean isSelected, Array selectedRegions)</code> Will be called when region is (de)selected. <code>isSelected</code> parameter of the callback indicates whether region is selected or not. <code>selectedRegions</code> contains codes of all currently selected regions.\n * @param {Function} params.onMarkerTipShow <code>(Event e, Object tip, String code)</code> Will be called right before the marker tip is going to be shown.\n * @param {Function} params.onMarkerOver <code>(Event e, String code)</code> Will be called on marker mouse over event.\n * @param {Function} params.onMarkerOut <code>(Event e, String code)</code> Will be called on marker mouse out event.\n * @param {Function} params.onMarkerClick <code>(Event e, String code)</code> Will be called on marker click event.\n * @param {Function} params.onMarkerSelected <code>(Event e, String code, Boolean isSelected, Array selectedMarkers)</code> Will be called when marker is (de)selected. <code>isSelected</code> parameter of the callback indicates whether marker is selected or not. <code>selectedMarkers</code> contains codes of all currently selected markers.\n * @param {Function} params.onViewportChange <code>(Event e, Number scale)</code> Triggered when the map\'s viewport is changed (map was panned or zoomed).\n */\njvm.Map = function (params) {\n var map = this,\n e;\n this.params = jvm.$.extend(true, {}, jvm.Map.defaultParams, params);\n if (!jvm.Map.maps[this.params.map]) {\n throw new Error(\'Attempt to use map which was not loaded: \' + this.params.map);\n }\n this.mapData = jvm.Map.maps[this.params.map];\n this.markers = {};\n this.regions = {};\n this.regionsColors = {};\n this.regionsData = {};\n this.container = jvm.$(\'<div>\').addClass(\'jvectormap-container\');\n if (this.params.container) {\n this.params.container.append(this.container);\n }\n this.container.data(\'mapObject\', this);\n this.defaultWidth = this.mapData.width;\n this.defaultHeight = this.mapData.height;\n this.setBackgroundColor(this.params.backgroundColor);\n this.onResize = function () {\n map.updateSize();\n };\n jvm.$(window).resize(this.onResize);\n for (e in jvm.Map.apiEvents) {\n if (this.params[e]) {\n this.container.bind(jvm.Map.apiEvents[e] + \'.jvectormap\', this.params[e]);\n }\n }\n this.canvas = new jvm.VectorCanvas(this.container[0], this.width, this.height);\n if (this.params.bindTouchEvents) {\n if (\'ontouchstart\' in window || window.DocumentTouch && document instanceof DocumentTouch) {\n this.bindContainerTouchEvents();\n } else if (window.MSGesture) {\n this.bindContainerPointerEvents();\n }\n }\n this.bindContainerEvents();\n this.bindElementEvents();\n this.createTip();\n if (this.params.zoomButtons) {\n this.bindZoomButtons();\n }\n this.createRegions();\n this.createMarkers(this.params.markers || {});\n this.updateSize();\n if (this.params.focusOn) {\n if (typeof this.params.focusOn === \'string\') {\n this.params.focusOn = {\n region: this.params.focusOn\n };\n } else if (jvm.$.isArray(this.params.focusOn)) {\n this.params.focusOn = {\n regions: this.params.focusOn\n };\n }\n this.setFocus(this.params.focusOn);\n }\n if (this.params.selectedRegions) {\n this.setSelectedRegions(this.params.selectedRegions);\n }\n if (this.params.selectedMarkers) {\n this.setSelectedMarkers(this.params.selectedMarkers);\n }\n this.legendCntHorizontal = jvm.$(\'<div/>\').addClass(\'jvectormap-legend-cnt jvectormap-legend-cnt-h\');\n this.legendCntVertical = jvm.$(\'<div/>\').addClass(\'jvectormap-legend-cnt jvectormap-legend-cnt-v\');\n this.container.append(this.legendCntHorizontal);\n this.container.append(this.legendCntVertical);\n if (this.params.series) {\n this.createSeries();\n }\n};\njvm.Map.prototype = {\n transX: 0,\n transY: 0,\n scale: 1,\n baseTransX: 0,\n baseTransY: 0,\n baseScale: 1,\n width: 0,\n height: 0,\n /**\n * Set background color of the map.\n * @param {String} backgroundColor Background color in CSS format.\n */\n setBackgroundColor: function setBackgroundColor(backgroundColor) {\n this.container.css(\'background-color\', backgroundColor);\n },\n resize: function resize() {\n var curBaseScale = this.baseScale;\n if (this.width / this.height > this.defaultWidth / this.defaultHeight) {\n this.baseScale = this.height / this.defaultHeight;\n this.baseTransX = Math.abs(this.width - this.defaultWidth * this.baseScale) / (2 * this.baseScale);\n } else {\n this.baseScale = this.width / this.defaultWidth;\n this.baseTransY = Math.abs(this.height - this.defaultHeight * this.baseScale) / (2 * this.baseScale);\n }\n this.scale *= this.baseScale / curBaseScale;\n this.transX *= this.baseScale / curBaseScale;\n this.transY *= this.baseScale / curBaseScale;\n },\n /**\n * Synchronize the size of the map with the size of the container. Suitable in situations where the size of the container is changed programmatically or container is shown after it became visible.\n */\n updateSize: function updateSize() {\n this.width = this.container.width();\n this.height = this.container.height();\n this.resize();\n this.canvas.setSize(this.width, this.height);\n this.applyTransform();\n },\n /**\n * Reset all the series and show the map with the initial zoom.\n */\n reset: function reset() {\n var key, i;\n for (key in this.series) {\n for (i = 0; i < this.series[key].length; i++) {\n this.series[key][i].clear();\n }\n }\n this.scale = this.baseScale;\n this.transX = this.baseTransX;\n this.transY = this.baseTransY;\n this.applyTransform();\n },\n applyTransform: function applyTransform() {\n var maxTransX, maxTransY, minTransX, minTransY;\n if (this.defaultWidth * this.scale <= this.width) {\n maxTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n minTransX = (this.width - this.defaultWidth * this.scale) / (2 * this.scale);\n } else {\n maxTransX = 0;\n minTransX = (this.width - this.defaultWidth * this.scale) / this.scale;\n }\n if (this.defaultHeight * this.scale <= this.height) {\n maxTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n minTransY = (this.height - this.defaultHeight * this.scale) / (2 * this.scale);\n } else {\n maxTransY = 0;\n minTransY = (this.height - this.defaultHeight * this.scale) / this.scale;\n }\n if (this.transY > maxTransY) {\n this.transY = maxTransY;\n } else if (this.transY < minTransY) {\n this.transY = minTransY;\n }\n if (this.transX > maxTransX) {\n this.transX = maxTransX;\n } else if (this.transX < minTransX) {\n this.transX = minTransX;\n }\n this.canvas.applyTransformParams(this.scale, this.transX, this.transY);\n if (this.markers) {\n this.repositionMarkers();\n }\n this.repositionLabels();\n this.container.trigger(\'viewportChange\', [this.scale / this.baseScale, this.transX, this.transY]);\n },\n bindContainerEvents: function bindContainerEvents() {\n var mouseDown = false,\n oldPageX,\n oldPageY,\n map = this;\n if (this.params.panOnDrag) {\n this.container.mousemove(function (e) {\n if (mouseDown) {\n map.transX -= (oldPageX - e.pageX) / map.scale;\n map.transY -= (oldPageY - e.pageY) / map.scale;\n map.applyTransform();\n oldPageX = e.pageX;\n oldPageY = e.pageY;\n }\n return false;\n }).mousedown(function (e) {\n mouseDown = true;\n oldPageX = e.pageX;\n oldPageY = e.pageY;\n return false;\n });\n this.onContainerMouseUp = function () {\n mouseDown = false;\n };\n jvm.$(\'body\').mouseup(this.onContainerMouseUp);\n }\n if (this.params.zoomOnScroll) {\n this.container.mousewheel(function (event, delta, deltaX, deltaY) {\n var offset = jvm.$(map.container).offset(),\n centerX = event.pageX - offset.left,\n centerY = event.pageY - offset.top,\n zoomStep = Math.pow(1 + map.params.zoomOnScrollSpeed / 1000, event.deltaFactor * event.deltaY);\n map.tip.hide();\n map.setScale(map.scale * zoomStep, centerX, centerY);\n event.preventDefault();\n });\n }\n },\n bindContainerTouchEvents: function bindContainerTouchEvents() {\n var touchStartScale,\n touchStartDistance,\n map = this,\n touchX,\n touchY,\n centerTouchX,\n centerTouchY,\n lastTouchesLength,\n handleTouchEvent = function handleTouchEvent(e) {\n var touches = e.originalEvent.touches,\n offset,\n scale,\n transXOld,\n transYOld;\n if (e.type == \'touchstart\') {\n lastTouchesLength = 0;\n }\n if (touches.length == 1) {\n if (lastTouchesLength == 1) {\n transXOld = map.transX;\n transYOld = map.transY;\n map.transX -= (touchX - touches[0].pageX) / map.scale;\n map.transY -= (touchY - touches[0].pageY) / map.scale;\n map.applyTransform();\n map.tip.hide();\n if (transXOld != map.transX || transYOld != map.transY) {\n e.preventDefault();\n }\n }\n touchX = touches[0].pageX;\n touchY = touches[0].pageY;\n } else if (touches.length == 2) {\n if (lastTouchesLength == 2) {\n scale = Math.sqrt(Math.pow(touches[0].pageX - touches[1].pageX, 2) + Math.pow(touches[0].pageY - touches[1].pageY, 2)) / touchStartDistance;\n map.setScale(touchStartScale * scale, centerTouchX, centerTouchY);\n map.tip.hide();\n e.preventDefault();\n } else {\n offset = jvm.$(map.container).offset();\n if (touches[0].pageX > touches[1].pageX) {\n centerTouchX = touches[1].pageX + (touches[0].pageX - touches[1].pageX) / 2;\n } else {\n centerTouchX = touches[0].pageX + (touches[1].pageX - touches[0].pageX) / 2;\n }\n if (touches[0].pageY > touches[1].pageY) {\n centerTouchY = touches[1].pageY + (touches[0].pageY - touches[1].pageY) / 2;\n } else {\n centerTouchY = touches[0].pageY + (touches[1].pageY - touches[0].pageY) / 2;\n }\n centerTouchX -= offset.left;\n centerTouchY -= offset.top;\n touchStartScale = map.scale;\n touchStartDistance = Math.sqrt(Math.pow(touches[0].pageX - touches[1].pageX, 2) + Math.pow(touches[0].pageY - touches[1].pageY, 2));\n }\n }\n lastTouchesLength = touches.length;\n };\n jvm.$(this.container).bind(\'touchstart\', handleTouchEvent);\n jvm.$(this.container).bind(\'touchmove\', handleTouchEvent);\n },\n bindContainerPointerEvents: function bindContainerPointerEvents() {\n var map = this,\n gesture = new MSGesture(),\n element = this.container[0],\n handlePointerDownEvent = function handlePointerDownEvent(e) {\n gesture.addPointer(e.pointerId);\n },\n handleGestureEvent = function handleGestureEvent(e) {\n var offset, scale, transXOld, transYOld;\n if (e.translationX != 0 || e.translationY != 0) {\n transXOld = map.transX;\n transYOld = map.transY;\n map.transX += e.translationX / map.scale;\n map.transY += e.translationY / map.scale;\n map.applyTransform();\n map.tip.hide();\n if (transXOld != map.transX || transYOld != map.transY) {\n e.preventDefault();\n }\n }\n if (e.scale != 1) {\n map.setScale(map.scale * e.scale, e.offsetX, e.offsetY);\n map.tip.hide();\n e.preventDefault();\n }\n };\n gesture.target = element;\n element.addEventListener("MSGestureChange", handleGestureEvent, false);\n element.addEventListener("pointerdown", handlePointerDownEvent, false);\n },\n bindElementEvents: function bindElementEvents() {\n var map = this,\n pageX,\n pageY,\n mouseMoved;\n this.container.mousemove(function (e) {\n if (Math.abs(pageX - e.pageX) + Math.abs(pageY - e.pageY) > 2) {\n mouseMoved = true;\n }\n });\n\n /* Can not use common class selectors here because of the bug in jQuery\n SVG handling, use with caution. */\n this.container.delegate("[class~=\'jvectormap-element\']", \'mouseover mouseout\', function (e) {\n var baseVal = jvm.$(this).attr(\'class\').baseVal || jvm.$(this).attr(\'class\'),\n type = baseVal.indexOf(\'jvectormap-region\') === -1 ? \'marker\' : \'region\',\n code = type == \'region\' ? jvm.$(this).attr(\'data-code\') : jvm.$(this).attr(\'data-index\'),\n element = type == \'region\' ? map.regions[code].element : map.markers[code].element,\n tipText = type == \'region\' ? map.mapData.paths[code].name : map.markers[code].config.name || \'\',\n tipShowEvent = jvm.$.Event(type + \'TipShow.jvectormap\'),\n overEvent = jvm.$.Event(type + \'Over.jvectormap\');\n if (e.type == \'mouseover\') {\n map.container.trigger(overEvent, [code]);\n if (!overEvent.isDefaultPrevented()) {\n element.setHovered(true);\n }\n map.tip.text(tipText);\n map.container.trigger(tipShowEvent, [map.tip, code]);\n if (!tipShowEvent.isDefaultPrevented()) {\n map.tip.show();\n map.tipWidth = map.tip.width();\n map.tipHeight = map.tip.height();\n }\n } else {\n element.setHovered(false);\n map.tip.hide();\n map.container.trigger(type + \'Out.jvectormap\', [code]);\n }\n });\n\n /* Can not use common class selectors here because of the bug in jQuery\n SVG handling, use with caution. */\n this.container.delegate("[class~=\'jvectormap-element\']", \'mousedown\', function (e) {\n pageX = e.pageX;\n pageY = e.pageY;\n mouseMoved = false;\n });\n\n /* Can not use common class selectors here because of the bug in jQuery\n SVG handling, use with caution. */\n this.container.delegate("[class~=\'jvectormap-element\']", \'mouseup\', function () {\n var baseVal = jvm.$(this).attr(\'class\').baseVal ? jvm.$(this).attr(\'class\').baseVal : jvm.$(this).attr(\'class\'),\n type = baseVal.indexOf(\'jvectormap-region\') === -1 ? \'marker\' : \'region\',\n code = type == \'region\' ? jvm.$(this).attr(\'data-code\') : jvm.$(this).attr(\'data-index\'),\n clickEvent = jvm.$.Event(type + \'Click.jvectormap\'),\n element = type == \'region\' ? map.regions[code].element : map.markers[code].element;\n if (!mouseMoved) {\n map.container.trigger(clickEvent, [code]);\n if (type === \'region\' && map.params.regionsSelectable || type === \'marker\' && map.params.markersSelectable) {\n if (!clickEvent.isDefaultPrevented()) {\n if (map.params[type + \'sSelectableOne\']) {\n map.clearSelected(type + \'s\');\n }\n element.setSelected(!element.isSelected);\n }\n }\n }\n });\n },\n bindZoomButtons: function bindZoomButtons() {\n var map = this;\n jvm.$(\'<div/>\').addClass(\'jvectormap-zoomin\').text(\'+\').appendTo(this.container);\n jvm.$(\'<div/>\').addClass(\'jvectormap-zoomout\').html(\'−\').appendTo(this.container);\n this.container.find(\'.jvectormap-zoomin\').click(function () {\n map.setScale(map.scale * map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);\n });\n this.container.find(\'.jvectormap-zoomout\').click(function () {\n map.setScale(map.scale / map.params.zoomStep, map.width / 2, map.height / 2, false, map.params.zoomAnimate);\n });\n },\n createTip: function createTip() {\n var map = this;\n this.tip = jvm.$(\'<div/>\').addClass(\'jvectormap-tip\').appendTo(jvm.$(\'body\'));\n this.container.mousemove(function (e) {\n var left = e.pageX - 15 - map.tipWidth,\n top = e.pageY - 15 - map.tipHeight;\n if (left < 5) {\n left = e.pageX + 15;\n }\n if (top < 5) {\n top = e.pageY + 15;\n }\n map.tip.css({\n left: left,\n top: top\n });\n });\n },\n setScale: function setScale(scale, anchorX, anchorY, isCentered, animate) {\n var viewportChangeEvent = jvm.$.Event(\'zoom.jvectormap\'),\n interval,\n that = this,\n i = 0,\n count = Math.abs(Math.round((scale - this.scale) * 60 / Math.max(scale, this.scale))),\n scaleStart,\n scaleDiff,\n transXStart,\n transXDiff,\n transYStart,\n transYDiff,\n transX,\n transY,\n deferred = new jvm.$.Deferred();\n if (scale > this.params.zoomMax * this.baseScale) {\n scale = this.params.zoomMax * this.baseScale;\n } else if (scale < this.params.zoomMin * this.baseScale) {\n scale = this.params.zoomMin * this.baseScale;\n }\n if (typeof anchorX != \'undefined\' && typeof anchorY != \'undefined\') {\n zoomStep = scale / this.scale;\n if (isCentered) {\n transX = anchorX + this.defaultWidth * (this.width / (this.defaultWidth * scale)) / 2;\n transY = anchorY + this.defaultHeight * (this.height / (this.defaultHeight * scale)) / 2;\n } else {\n transX = this.transX - (zoomStep - 1) / scale * anchorX;\n transY = this.transY - (zoomStep - 1) / scale * anchorY;\n }\n }\n if (animate && count > 0) {\n scaleStart = this.scale;\n scaleDiff = (scale - scaleStart) / count;\n transXStart = this.transX * this.scale;\n transYStart = this.transY * this.scale;\n transXDiff = (transX * scale - transXStart) / count;\n transYDiff = (transY * scale - transYStart) / count;\n interval = setInterval(function () {\n i += 1;\n that.scale = scaleStart + scaleDiff * i;\n that.transX = (transXStart + transXDiff * i) / that.scale;\n that.transY = (transYStart + transYDiff * i) / that.scale;\n that.applyTransform();\n if (i == count) {\n clearInterval(interval);\n that.container.trigger(viewportChangeEvent, [scale / that.baseScale]);\n deferred.resolve();\n }\n }, 10);\n } else {\n this.transX = transX;\n this.transY = transY;\n this.scale = scale;\n this.applyTransform();\n this.container.trigger(viewportChangeEvent, [scale / this.baseScale]);\n deferred.resolve();\n }\n return deferred;\n },\n /**\n * Set the map\'s viewport to the specific point and set zoom of the map to the specific level. Point and zoom level could be defined in two ways: using the code of some region to focus on or a central point and zoom level as numbers.\n * @param This method takes a configuration object as the single argument. The options passed to it are the following:\n * @param {Array} params.regions Array of region codes to zoom to.\n * @param {String} params.region Region code to zoom to.\n * @param {Number} params.scale Map scale to set.\n * @param {Number} params.lat Latitude to set viewport to.\n * @param {Number} params.lng Longitude to set viewport to.\n * @param {Number} params.x Number from 0 to 1 specifying the horizontal coordinate of the central point of the viewport.\n * @param {Number} params.y Number from 0 to 1 specifying the vertical coordinate of the central point of the viewport.\n * @param {Boolean} params.animate Indicates whether or not to animate the scale change and transition.\n */\n setFocus: function setFocus(config) {\n var bbox, itemBbox, newBbox, codes, i, point;\n config = config || {};\n if (config.region) {\n codes = [config.region];\n } else if (config.regions) {\n codes = config.regions;\n }\n if (codes) {\n for (i = 0; i < codes.length; i++) {\n if (this.regions[codes[i]]) {\n itemBbox = this.regions[codes[i]].element.shape.getBBox();\n if (itemBbox) {\n if (typeof bbox == \'undefined\') {\n bbox = itemBbox;\n } else {\n newBbox = {\n x: Math.min(bbox.x, itemBbox.x),\n y: Math.min(bbox.y, itemBbox.y),\n width: Math.max(bbox.x + bbox.width, itemBbox.x + itemBbox.width) - Math.min(bbox.x, itemBbox.x),\n height: Math.max(bbox.y + bbox.height, itemBbox.y + itemBbox.height) - Math.min(bbox.y, itemBbox.y)\n };\n bbox = newBbox;\n }\n }\n }\n }\n return this.setScale(Math.min(this.width / bbox.width, this.height / bbox.height), -(bbox.x + bbox.width / 2), -(bbox.y + bbox.height / 2), true, config.animate);\n } else {\n if (config.lat && config.lng) {\n point = this.latLngToPoint(config.lat, config.lng);\n config.x = this.transX - point.x / this.scale;\n config.y = this.transY - point.y / this.scale;\n } else if (config.x && config.y) {\n config.x *= -this.defaultWidth;\n config.y *= -this.defaultHeight;\n }\n return this.setScale(config.scale * this.baseScale, config.x, config.y, true, config.animate);\n }\n },\n getSelected: function getSelected(type) {\n var key,\n selected = [];\n for (key in this[type]) {\n if (this[type][key].element.isSelected) {\n selected.push(key);\n }\n }\n return selected;\n },\n /**\n * Return the codes of currently selected regions.\n * @returns {Array}\n */\n getSelectedRegions: function getSelectedRegions() {\n return this.getSelected(\'regions\');\n },\n /**\n * Return the codes of currently selected markers.\n * @returns {Array}\n */\n getSelectedMarkers: function getSelectedMarkers() {\n return this.getSelected(\'markers\');\n },\n setSelected: function setSelected(type, keys) {\n var i;\n if (_typeof(keys) != \'object\') {\n keys = [keys];\n }\n if (jvm.$.isArray(keys)) {\n for (i = 0; i < keys.length; i++) {\n this[type][keys[i]].element.setSelected(true);\n }\n } else {\n for (i in keys) {\n this[type][i].element.setSelected(!!keys[i]);\n }\n }\n },\n /**\n * Set or remove selected state for the regions.\n * @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the region(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are codes of regions, state of which should be changed. Selected state will be set if value is true, removed otherwise.\n */\n setSelectedRegions: function setSelectedRegions(keys) {\n this.setSelected(\'regions\', keys);\n },\n /**\n * Set or remove selected state for the markers.\n * @param {String|Array|Object} keys If <code>String</code> or <code>Array</code> the marker(s) with the corresponding code(s) will be selected. If <code>Object</code> was provided its keys are codes of markers, state of which should be changed. Selected state will be set if value is true, removed otherwise.\n */\n setSelectedMarkers: function setSelectedMarkers(keys) {\n this.setSelected(\'markers\', keys);\n },\n clearSelected: function clearSelected(type) {\n var select = {},\n selected = this.getSelected(type),\n i;\n for (i = 0; i < selected.length; i++) {\n select[selected[i]] = false;\n }\n ;\n this.setSelected(type, select);\n },\n /**\n * Remove the selected state from all the currently selected regions.\n */\n clearSelectedRegions: function clearSelectedRegions() {\n this.clearSelected(\'regions\');\n },\n /**\n * Remove the selected state from all the currently selected markers.\n */\n clearSelectedMarkers: function clearSelectedMarkers() {\n this.clearSelected(\'markers\');\n },\n /**\n * Return the instance of Map. Useful when instantiated as a jQuery plug-in.\n * @returns {Map}\n */\n getMapObject: function getMapObject() {\n return this;\n },\n /**\n * Return the name of the region by region code.\n * @returns {String}\n */\n getRegionName: function getRegionName(code) {\n return this.mapData.paths[code].name;\n },\n createRegions: function createRegions() {\n var key,\n region,\n map = this;\n this.regionLabelsGroup = this.regionLabelsGroup || this.canvas.addGroup();\n for (key in this.mapData.paths) {\n region = new jvm.Region({\n map: this,\n path: this.mapData.paths[key].path,\n code: key,\n style: jvm.$.extend(true, {}, this.params.regionStyle),\n labelStyle: jvm.$.extend(true, {}, this.params.regionLabelStyle),\n canvas: this.canvas,\n labelsGroup: this.regionLabelsGroup,\n label: this.canvas.mode != \'vml\' ? this.params.labels && this.params.labels.regions : null\n });\n jvm.$(region.shape).bind(\'selected\', function (e, isSelected) {\n map.container.trigger(\'regionSelected.jvectormap\', [jvm.$(this.node).attr(\'data-code\'), isSelected, map.getSelectedRegions()]);\n });\n this.regions[key] = {\n element: region,\n config: this.mapData.paths[key]\n };\n }\n },\n createMarkers: function createMarkers(markers) {\n var i,\n marker,\n point,\n markerConfig,\n markersArray,\n map = this;\n this.markersGroup = this.markersGroup || this.canvas.addGroup();\n this.markerLabelsGroup = this.markerLabelsGroup || this.canvas.addGroup();\n if (jvm.$.isArray(markers)) {\n markersArray = markers.slice();\n markers = {};\n for (i = 0; i < markersArray.length; i++) {\n markers[i] = markersArray[i];\n }\n }\n for (i in markers) {\n markerConfig = markers[i] instanceof Array ? {\n latLng: markers[i]\n } : markers[i];\n point = this.getMarkerPosition(markerConfig);\n if (point !== false) {\n marker = new jvm.Marker({\n map: this,\n style: jvm.$.extend(true, {}, this.params.markerStyle, {\n initial: markerConfig.style || {}\n }),\n labelStyle: jvm.$.extend(true, {}, this.params.markerLabelStyle),\n index: i,\n cx: point.x,\n cy: point.y,\n group: this.markersGroup,\n canvas: this.canvas,\n labelsGroup: this.markerLabelsGroup,\n label: this.canvas.mode != \'vml\' ? this.params.labels && this.params.labels.markers : null\n });\n jvm.$(marker.shape).bind(\'selected\', function (e, isSelected) {\n map.container.trigger(\'markerSelected.jvectormap\', [jvm.$(this.node).attr(\'data-index\'), isSelected, map.getSelectedMarkers()]);\n });\n if (this.markers[i]) {\n this.removeMarkers([i]);\n }\n this.markers[i] = {\n element: marker,\n config: markerConfig\n };\n }\n }\n },\n repositionMarkers: function repositionMarkers() {\n var i, point;\n for (i in this.markers) {\n point = this.getMarkerPosition(this.markers[i].config);\n if (point !== false) {\n this.markers[i].element.setStyle({\n cx: point.x,\n cy: point.y\n });\n }\n }\n },\n repositionLabels: function repositionLabels() {\n var key;\n for (key in this.regions) {\n this.regions[key].element.updateLabelPosition();\n }\n for (key in this.markers) {\n this.markers[key].element.updateLabelPosition();\n }\n },\n getMarkerPosition: function getMarkerPosition(markerConfig) {\n if (jvm.Map.maps[this.params.map].projection) {\n return this.latLngToPoint.apply(this, markerConfig.latLng || [0, 0]);\n } else {\n return {\n x: markerConfig.coords[0] * this.scale + this.transX * this.scale,\n y: markerConfig.coords[1] * this.scale + this.transY * this.scale\n };\n }\n },\n /**\n * Add one marker to the map.\n * @param {String} key Marker unique code.\n * @param {Object} marker Marker configuration parameters.\n * @param {Array} seriesData Values to add to the data series.\n */\n addMarker: function addMarker(key, marker, seriesData) {\n var markers = {},\n data = [],\n values,\n i,\n seriesData = seriesData || [];\n markers[key] = marker;\n for (i = 0; i < seriesData.length; i++) {\n values = {};\n if (typeof seriesData[i] !== \'undefined\') {\n values[key] = seriesData[i];\n }\n data.push(values);\n }\n this.addMarkers(markers, data);\n },\n /**\n * Add set of marker to the map.\n * @param {Object|Array} markers Markers to add to the map. In case of array is provided, codes of markers will be set as string representations of array indexes.\n * @param {Array} seriesData Values to add to the data series.\n */\n addMarkers: function addMarkers(markers, seriesData) {\n var i;\n seriesData = seriesData || [];\n this.createMarkers(markers);\n for (i = 0; i < seriesData.length; i++) {\n this.series.markers[i].setValues(seriesData[i] || {});\n }\n ;\n },\n /**\n * Remove some markers from the map.\n * @param {Array} markers Array of marker codes to be removed.\n */\n removeMarkers: function removeMarkers(markers) {\n var i;\n for (i = 0; i < markers.length; i++) {\n this.markers[markers[i]].element.remove();\n delete this.markers[markers[i]];\n }\n ;\n },\n /**\n * Remove all markers from the map.\n */\n removeAllMarkers: function removeAllMarkers() {\n var i,\n markers = [];\n for (i in this.markers) {\n markers.push(i);\n }\n this.removeMarkers(markers);\n },\n /**\n * Converts coordinates expressed as latitude and longitude to the coordinates in pixels on the map.\n * @param {Number} lat Latitide of point in degrees.\n * @param {Number} lng Longitude of point in degrees.\n */\n latLngToPoint: function latLngToPoint(lat, lng) {\n var point,\n proj = jvm.Map.maps[this.params.map].projection,\n centralMeridian = proj.centralMeridian,\n inset,\n bbox;\n if (lng < -180 + centralMeridian) {\n lng += 360;\n }\n point = jvm.Proj[proj.type](lat, lng, centralMeridian);\n inset = this.getInsetForPoint(point.x, point.y);\n if (inset) {\n bbox = inset.bbox;\n point.x = (point.x - bbox[0].x) / (bbox[1].x - bbox[0].x) * inset.width * this.scale;\n point.y = (point.y - bbox[0].y) / (bbox[1].y - bbox[0].y) * inset.height * this.scale;\n return {\n x: point.x + this.transX * this.scale + inset.left * this.scale,\n y: point.y + this.transY * this.scale + inset.top * this.scale\n };\n } else {\n return false;\n }\n },\n /**\n * Converts cartesian coordinates into coordinates expressed as latitude and longitude.\n * @param {Number} x X-axis of point on map in pixels.\n * @param {Number} y Y-axis of point on map in pixels.\n */\n pointToLatLng: function pointToLatLng(x, y) {\n var proj = jvm.Map.maps[this.params.map].projection,\n centralMeridian = proj.centralMeridian,\n insets = jvm.Map.maps[this.params.map].insets,\n i,\n inset,\n bbox,\n nx,\n ny;\n for (i = 0; i < insets.length; i++) {\n inset = insets[i];\n bbox = inset.bbox;\n nx = x - (this.transX * this.scale + inset.left * this.scale);\n ny = y - (this.transY * this.scale + inset.top * this.scale);\n nx = nx / (inset.width * this.scale) * (bbox[1].x - bbox[0].x) + bbox[0].x;\n ny = ny / (inset.height * this.scale) * (bbox[1].y - bbox[0].y) + bbox[0].y;\n if (nx > bbox[0].x && nx < bbox[1].x && ny > bbox[0].y && ny < bbox[1].y) {\n return jvm.Proj[proj.type + \'_inv\'](nx, -ny, centralMeridian);\n }\n }\n return false;\n },\n getInsetForPoint: function getInsetForPoint(x, y) {\n var insets = jvm.Map.maps[this.params.map].insets,\n i,\n bbox;\n for (i = 0; i < insets.length; i++) {\n bbox = insets[i].bbox;\n if (x > bbox[0].x && x < bbox[1].x && y > bbox[0].y && y < bbox[1].y) {\n return insets[i];\n }\n }\n },\n createSeries: function createSeries() {\n var i, key;\n this.series = {\n markers: [],\n regions: []\n };\n for (key in this.params.series) {\n for (i = 0; i < this.params.series[key].length; i++) {\n this.series[key][i] = new jvm.DataSeries(this.params.series[key][i], this[key], this);\n }\n }\n },\n /**\n * Gracefully remove the map and and all its accessories, unbind event handlers.\n */\n remove: function remove() {\n this.tip.remove();\n this.container.remove();\n jvm.$(window).unbind(\'resize\', this.onResize);\n jvm.$(\'body\').unbind(\'mouseup\', this.onContainerMouseUp);\n }\n};\njvm.Map.maps = {};\njvm.Map.defaultParams = {\n map: \'world_mill_en\',\n backgroundColor: \'#505050\',\n zoomButtons: true,\n zoomOnScroll: true,\n zoomOnScrollSpeed: 3,\n panOnDrag: true,\n zoomMax: 8,\n zoomMin: 1,\n zoomStep: 1.6,\n zoomAnimate: true,\n regionsSelectable: false,\n markersSelectable: false,\n bindTouchEvents: true,\n regionStyle: {\n initial: {\n fill: \'white\',\n "fill-opacity": 1,\n stroke: \'none\',\n "stroke-width": 0,\n "stroke-opacity": 1\n },\n hover: {\n "fill-opacity": 0.8,\n cursor: \'pointer\'\n },\n selected: {\n fill: \'yellow\'\n },\n selectedHover: {}\n },\n regionLabelStyle: {\n initial: {\n \'font-family\': \'Verdana\',\n \'font-size\': \'12\',\n \'font-weight\': \'bold\',\n cursor: \'default\',\n fill: \'black\'\n },\n hover: {\n cursor: \'pointer\'\n }\n },\n markerStyle: {\n initial: {\n fill: \'grey\',\n stroke: \'#505050\',\n "fill-opacity": 1,\n "stroke-width": 1,\n "stroke-opacity": 1,\n r: 5\n },\n hover: {\n stroke: \'black\',\n "stroke-width": 2,\n cursor: \'pointer\'\n },\n selected: {\n fill: \'blue\'\n },\n selectedHover: {}\n },\n markerLabelStyle: {\n initial: {\n \'font-family\': \'Verdana\',\n \'font-size\': \'12\',\n \'font-weight\': \'bold\',\n cursor: \'default\',\n fill: \'black\'\n },\n hover: {\n cursor: \'pointer\'\n }\n }\n};\njvm.Map.apiEvents = {\n onRegionTipShow: \'regionTipShow\',\n onRegionOver: \'regionOver\',\n onRegionOut: \'regionOut\',\n onRegionClick: \'regionClick\',\n onRegionSelected: \'regionSelected\',\n onMarkerTipShow: \'markerTipShow\',\n onMarkerOver: \'markerOver\',\n onMarkerOut: \'markerOut\',\n onMarkerClick: \'markerClick\',\n onMarkerSelected: \'markerSelected\',\n onViewportChange: \'viewportChange\'\n}; /**\n * Creates map with drill-down functionality.\n * @constructor\n * @param {Object} params Parameters to initialize map with.\n * @param {Number} params.maxLevel Maximum number of levels user can go through\n * @param {Object} params.main Config of the main map. See <a href="./jvm-map/">jvm.Map</a> for more information.\n * @param {Function} params.mapNameByCode Function go generate map name by region code. Default value is:\n <pre>\n function(code, multiMap) {\n return code.toLowerCase()+\'_\'+\n multiMap.defaultProjection+\'_en\';\n }\n </pre>\n * @param {Function} params.mapUrlByCode Function to generate map url by region code. Default value is:\n <pre>\n function(code, multiMap){\n return \'jquery-jvectormap-data-\'+\n code.toLowerCase()+\'-\'+\n multiMap.defaultProjection+\'-en.js\';\n }\n </pre>\n */\njvm.MultiMap = function (params) {\n var that = this;\n this.maps = {};\n this.params = jvm.$.extend(true, {}, jvm.MultiMap.defaultParams, params);\n this.params.maxLevel = this.params.maxLevel || Number.MAX_VALUE;\n this.params.main = this.params.main || {};\n this.params.main.multiMapLevel = 0;\n this.history = [this.addMap(this.params.main.map, this.params.main)];\n this.defaultProjection = this.history[0].mapData.projection.type;\n this.mapsLoaded = {};\n this.params.container.css({\n position: \'relative\'\n });\n this.backButton = jvm.$(\'<div/>\').addClass(\'jvectormap-goback\').text(\'Back\').appendTo(this.params.container);\n this.backButton.hide();\n this.backButton.click(function () {\n that.goBack();\n });\n this.spinner = jvm.$(\'<div/>\').addClass(\'jvectormap-spinner\').appendTo(this.params.container);\n this.spinner.hide();\n};\njvm.MultiMap.prototype = {\n addMap: function addMap(name, config) {\n var cnt = jvm.$(\'<div/>\').css({\n width: \'100%\',\n height: \'100%\'\n });\n this.params.container.append(cnt);\n this.maps[name] = new jvm.Map(jvm.$.extend(config, {\n container: cnt\n }));\n if (this.params.maxLevel > config.multiMapLevel) {\n this.maps[name].container.on(\'regionClick.jvectormap\', {\n scope: this\n }, function (e, code) {\n var multimap = e.data.scope,\n mapName = multimap.params.mapNameByCode(code, multimap);\n if (!multimap.drillDownPromise || multimap.drillDownPromise.state() !== \'pending\') {\n multimap.drillDown(mapName, code);\n }\n });\n }\n return this.maps[name];\n },\n downloadMap: function downloadMap(code) {\n var that = this,\n deferred = jvm.$.Deferred();\n if (!this.mapsLoaded[code]) {\n jvm.$.get(this.params.mapUrlByCode(code, this)).then(function () {\n that.mapsLoaded[code] = true;\n deferred.resolve();\n }, function () {\n deferred.reject();\n });\n } else {\n deferred.resolve();\n }\n return deferred;\n },\n drillDown: function drillDown(name, code) {\n var currentMap = this.history[this.history.length - 1],\n that = this,\n focusPromise = currentMap.setFocus({\n region: code,\n animate: true\n }),\n downloadPromise = this.downloadMap(code);\n focusPromise.then(function () {\n if (downloadPromise.state() === \'pending\') {\n that.spinner.show();\n }\n });\n downloadPromise.always(function () {\n that.spinner.hide();\n });\n this.drillDownPromise = jvm.$.when(downloadPromise, focusPromise);\n this.drillDownPromise.then(function () {\n currentMap.params.container.hide();\n if (!that.maps[name]) {\n that.addMap(name, {\n map: name,\n multiMapLevel: currentMap.params.multiMapLevel + 1\n });\n } else {\n that.maps[name].params.container.show();\n }\n that.history.push(that.maps[name]);\n that.backButton.show();\n });\n },\n goBack: function goBack() {\n var currentMap = this.history.pop(),\n prevMap = this.history[this.history.length - 1],\n that = this;\n currentMap.setFocus({\n scale: 1,\n x: 0.5,\n y: 0.5,\n animate: true\n }).then(function () {\n currentMap.params.container.hide();\n prevMap.params.container.show();\n prevMap.updateSize();\n if (that.history.length === 1) {\n that.backButton.hide();\n }\n prevMap.setFocus({\n scale: 1,\n x: 0.5,\n y: 0.5,\n animate: true\n });\n });\n }\n};\njvm.MultiMap.defaultParams = {\n mapNameByCode: function mapNameByCode(code, multiMap) {\n return code.toLowerCase() + \'_\' + multiMap.defaultProjection + \'_en\';\n },\n mapUrlByCode: function mapUrlByCode(code, multiMap) {\n return \'jquery-jvectormap-data-\' + code.toLowerCase() + \'-\' + multiMap.defaultProjection + \'-en.js\';\n }\n};\n\n// World_mill_en code \n\n$.fn.vectorMap(\'addMap\', \'world_mill_en\', {\n "insets": [{\n "width": 900.0,\n "top": 0,\n "height": 440.7063107441331,\n "bbox": [{\n "y": -12671671.123330014,\n "x": -20004297.151525836\n }, {\n "y": 6930392.02513512,\n "x": 20026572.394749384\n }],\n "left": 0\n }],\n "paths": {\n "BD": {\n "path": "M652.71,228.85l-0.04,1.38l-0.46,-0.21l-0.42,0.3l0.05,0.65l-0.17,-1.37l-0.48,-1.26l-1.08,-1.6l-0.23,-0.13l-2.31,-0.11l-0.31,0.36l0.21,0.98l-0.6,1.11l-0.8,-0.4l-0.37,0.09l-0.23,0.3l-0.54,-0.21l-0.78,-0.19l-0.38,-2.04l-0.83,-1.89l0.4,-1.5l-0.16,-0.35l-1.24,-0.57l0.36,-0.62l1.5,-0.95l0.02,-0.49l-1.62,-1.26l0.64,-1.31l1.7,1.0l0.12,0.04l0.96,0.11l0.19,1.62l0.25,0.26l2.38,0.37l2.32,-0.04l1.06,0.33l-0.92,1.79l-0.97,0.13l-0.23,0.16l-0.77,1.51l0.05,0.35l1.37,1.37l0.5,-0.14l0.35,-1.46l0.24,-0.0l1.24,3.92Z",\n "name": "Bangladesh"\n },\n "BE": {\n "path": "M429.28,143.95l1.76,0.25l0.13,-0.01l2.16,-0.64l1.46,1.34l1.26,0.71l-0.23,1.8l-0.44,0.08l-0.24,0.25l-0.2,1.36l-1.8,-1.22l-0.23,-0.05l-1.14,0.23l-1.62,-1.43l-1.15,-1.31l-0.21,-0.1l-0.95,-0.04l-0.21,-0.68l1.66,-0.54Z",\n "name": "Belgium"\n },\n "BF": {\n "path": "M413.48,260.21l-1.22,-0.46l-0.13,-0.02l-1.17,0.1l-0.15,0.06l-0.73,0.53l-0.87,-0.41l-0.39,-0.75l-0.13,-0.13l-0.98,-0.48l-0.14,-1.2l0.63,-0.99l0.05,-0.18l-0.05,-0.73l1.9,-2.01l0.08,-0.14l0.35,-1.65l0.49,-0.44l1.05,0.3l0.21,-0.02l1.05,-0.52l0.13,-0.13l0.3,-0.58l1.87,-1.1l0.11,-0.1l0.43,-0.72l2.23,-1.01l1.21,-0.32l0.51,0.4l0.19,0.06l1.25,-0.01l-0.14,0.89l0.01,0.13l0.34,1.16l0.06,0.11l1.35,1.59l0.07,1.13l0.24,0.28l2.64,0.53l-0.05,1.39l-0.42,0.59l-1.11,0.21l-0.22,0.17l-0.46,0.99l-0.69,0.23l-2.12,-0.05l-1.14,-0.2l-0.19,0.03l-0.72,0.36l-1.07,-0.17l-4.35,0.12l-0.29,0.29l-0.06,1.44l0.25,1.45Z",\n "name": "Burkina Faso"\n },\n "BG": {\n "path": "M477.63,166.84l0.51,0.9l0.33,0.14l0.9,-0.21l1.91,0.47l3.68,0.16l0.17,-0.05l1.2,-0.75l2.78,-0.67l1.72,1.05l1.02,0.24l-0.97,0.97l-0.91,2.17l0.0,0.24l0.56,1.19l-1.58,-0.3l-0.16,0.01l-2.55,0.95l-0.2,0.28l-0.02,1.23l-1.92,0.24l-1.68,-0.99l-0.27,-0.02l-1.94,0.8l-1.52,-0.07l-0.15,-1.72l-0.12,-0.21l-0.99,-0.76l0.18,-0.18l0.02,-0.39l-0.17,-0.22l0.33,-0.75l0.91,-0.91l0.01,-0.42l-1.16,-1.25l-0.18,-0.89l0.24,-0.27Z",\n "name": "Bulgaria"\n },\n "BA": {\n "path": "M468.39,164.66l0.16,0.04l0.43,-0.0l-0.43,0.93l0.06,0.34l1.08,1.06l-0.28,1.09l-0.5,0.13l-0.47,0.28l-0.86,0.74l-0.1,0.16l-0.28,1.29l-1.81,-0.94l-0.9,-1.22l-1.0,-0.73l-1.1,-1.1l-0.55,-0.96l-1.11,-1.3l0.3,-0.75l0.59,0.46l0.42,-0.04l0.46,-0.54l1.0,-0.06l2.11,0.5l1.72,-0.03l1.06,0.64Z",\n "name": "Bosnia and Herzegovina"\n },\n "BN": {\n "path": "M707.34,273.57l0.76,-0.72l1.59,-1.03l-0.18,1.93l-0.9,-0.06l-0.28,0.14l-0.31,0.51l-0.68,-0.78Z",\n "name": "Brunei"\n },\n "BO": {\n "path": "M263.83,340.79l-0.23,-0.12l-2.86,-0.11l-0.28,0.17l-0.77,1.67l-1.17,-1.51l-0.18,-0.11l-3.28,-0.64l-0.28,0.1l-2.02,2.3l-1.43,0.29l-0.91,-3.35l-1.31,-2.88l0.75,-2.41l-0.09,-0.32l-1.23,-1.03l-0.31,-1.76l-0.05,-0.12l-1.12,-1.6l1.49,-2.62l0.01,-0.28l-1.0,-2.0l0.48,-0.72l0.02,-0.29l-0.37,-0.78l0.87,-1.13l0.06,-0.18l0.05,-2.17l0.12,-1.71l0.5,-0.8l0.01,-0.3l-1.9,-3.58l1.3,0.15l1.34,-0.05l0.23,-0.12l0.51,-0.7l2.12,-0.99l1.31,-0.93l2.81,-0.37l-0.21,1.51l0.01,0.13l0.29,0.91l-0.19,1.64l0.11,0.27l2.72,2.27l0.15,0.07l2.71,0.41l0.92,0.88l0.12,0.07l1.64,0.49l1.0,0.71l0.18,0.06l1.5,-0.02l1.24,0.64l0.1,1.31l0.05,0.14l0.44,0.68l0.02,0.73l-0.44,0.03l-0.27,0.39l0.96,2.99l0.28,0.21l4.43,0.1l-0.28,1.12l0.0,0.15l0.27,1.02l0.15,0.19l1.27,0.67l0.52,1.42l-0.42,1.91l-0.66,1.1l-0.04,0.2l0.21,1.3l-0.19,0.13l-0.01,-0.27l-0.15,-0.24l-2.33,-1.33l-0.14,-0.04l-2.38,-0.03l-4.36,0.76l-0.21,0.16l-1.2,2.29l-0.03,0.13l-0.06,1.37l-0.79,2.53l-0.05,-0.08Z",\n "name": "Bolivia"\n },\n "JP": {\n "path": "M781.17,166.78l1.8,0.67l0.28,-0.04l1.38,-1.01l0.43,2.67l-3.44,0.77l-0.18,0.12l-2.04,2.79l-3.71,-1.94l-0.42,0.15l-1.29,3.11l-2.32,0.04l-0.3,-2.63l1.12,-2.1l2.51,-0.16l0.28,-0.25l0.73,-4.22l0.58,-1.9l2.59,2.84l2.0,1.1ZM773.66,187.36l-0.92,2.24l-0.01,0.2l0.4,1.3l-1.18,1.81l-3.06,1.28l-4.35,0.17l-0.19,0.08l-3.4,3.06l-1.36,-0.87l-0.1,-1.95l-0.34,-0.28l-4.35,0.62l-2.99,1.33l-2.87,0.05l-0.28,0.2l0.09,0.33l2.37,1.93l-1.57,4.44l-1.35,0.97l-0.9,-0.79l0.57,-2.32l-0.15,-0.34l-1.5,-0.77l-0.81,-1.53l2.04,-0.75l0.14,-0.1l1.28,-1.72l2.47,-1.43l1.84,-1.92l4.83,-0.82l2.62,0.57l0.33,-0.16l2.45,-4.77l1.38,1.14l0.38,0.0l5.1,-4.02l0.09,-0.11l1.57,-3.57l0.02,-0.16l-0.42,-3.22l0.94,-1.67l2.27,-0.47l1.26,3.82l-0.07,2.23l-2.26,2.86l-0.06,0.19l0.04,2.93ZM757.85,196.18l0.22,0.66l-1.11,1.33l-0.8,-0.7l-0.33,-0.04l-1.28,0.65l-0.14,0.15l-0.54,1.34l-1.17,-0.57l0.02,-1.03l1.2,-1.45l1.24,0.28l0.29,-0.1l0.9,-1.03l1.51,0.5Z",\n "name": "Japan"\n },\n "BI": {\n "path": "M494.7,295.83l-0.14,-2.71l-0.04,-0.13l-0.34,-0.62l0.93,0.12l0.3,-0.16l0.67,-1.25l0.9,0.11l0.11,0.76l0.08,0.16l0.46,0.48l0.02,0.56l-0.55,0.48l-0.96,1.29l-0.82,0.82l-0.61,0.07Z",\n "name": "Burundi"\n },\n "BJ": {\n "path": "M427.4,268.94l-1.58,0.22l-0.52,-1.45l0.11,-5.73l-0.08,-0.21l-0.43,-0.44l-0.09,-1.13l-0.09,-0.19l-1.52,-1.52l0.24,-1.01l0.7,-0.23l0.18,-0.16l0.45,-0.97l1.07,-0.21l0.19,-0.12l0.53,-0.73l0.73,-0.65l0.68,-0.0l1.69,1.3l-0.08,0.67l0.02,0.14l0.52,1.38l-0.44,0.9l-0.01,0.24l0.2,0.52l-1.1,1.42l-0.76,0.76l-0.08,0.13l-0.47,1.59l0.05,1.69l-0.13,3.79Z",\n "name": "Benin"\n },\n "BT": {\n "path": "M650.38,213.78l0.88,0.75l-0.13,1.24l-1.77,0.07l-2.1,-0.18l-1.57,0.4l-2.02,-0.91l-0.02,-0.24l1.54,-1.87l1.18,-0.6l1.67,0.59l1.32,0.08l1.01,0.67Z",\n "name": "Bhutan"\n },\n "JM": {\n "path": "M226.67,238.37l1.64,0.23l1.2,0.56l0.11,0.19l-1.25,0.03l-0.14,0.04l-0.65,0.37l-1.24,-0.37l-1.17,-0.77l0.11,-0.22l0.86,-0.15l0.52,0.08Z",\n "name": "Jamaica"\n },\n "BW": {\n "path": "M484.91,331.96l0.53,0.52l0.82,1.53l2.83,2.86l0.14,0.08l0.85,0.22l0.03,0.81l0.74,1.66l0.21,0.17l1.87,0.39l1.17,0.87l-3.13,1.71l-2.3,2.01l-0.07,0.1l-0.82,1.74l-0.66,0.88l-1.24,0.19l-0.24,0.2l-0.65,1.98l-1.4,0.55l-1.9,-0.12l-1.2,-0.74l-1.06,-0.32l-0.22,0.02l-1.22,0.62l-0.14,0.14l-0.58,1.21l-1.16,0.79l-1.18,1.13l-1.5,0.23l-0.4,-0.68l0.22,-1.53l-0.04,-0.19l-1.48,-2.54l-0.11,-0.11l-0.53,-0.31l-0.0,-7.25l2.18,-0.08l0.29,-0.3l0.07,-9.0l1.63,-0.08l3.69,-0.86l0.84,0.93l0.38,0.05l1.53,-0.97l0.79,-0.03l1.3,-0.53l0.23,0.1l0.92,1.96Z",\n "name": "Botswana"\n },\n "BR": {\n "path": "M259.49,274.87l1.42,0.25l1.97,0.62l0.28,-0.05l0.67,-0.55l1.76,-0.38l2.8,-0.94l0.12,-0.08l0.92,-0.96l0.05,-0.33l-0.15,-0.32l0.73,-0.06l0.36,0.35l-0.27,0.93l0.17,0.36l0.76,0.34l0.44,0.9l-0.58,0.73l-0.06,0.13l-0.4,2.13l0.03,0.19l0.62,1.22l0.17,1.11l0.11,0.19l1.54,1.18l0.15,0.06l1.23,0.12l0.29,-0.15l0.2,-0.36l0.71,-0.11l1.13,-0.44l0.79,-0.63l1.25,0.19l0.65,-0.08l1.32,0.2l0.32,-0.18l0.23,-0.51l-0.05,-0.31l-0.31,-0.37l0.11,-0.31l0.75,0.17l0.13,0.0l1.1,-0.24l1.34,0.5l1.08,0.51l0.33,-0.05l0.67,-0.58l0.27,0.05l0.28,0.57l0.31,0.17l1.2,-0.18l0.17,-0.08l1.03,-1.05l0.76,-1.82l1.39,-2.16l0.49,-0.07l0.52,1.17l1.4,4.37l0.2,0.2l1.14,0.35l0.05,1.39l-1.8,1.97l0.01,0.42l0.78,0.75l0.18,0.08l4.16,0.37l0.08,2.25l0.5,0.22l1.78,-1.54l2.98,0.85l4.07,1.5l1.07,1.28l-0.37,1.23l0.36,0.38l2.83,-0.75l4.8,1.3l3.75,-0.09l3.6,2.02l3.27,2.84l1.93,0.72l2.13,0.11l0.76,0.66l1.22,4.56l-0.96,4.03l-1.22,1.58l-3.52,3.51l-1.63,2.91l-1.75,2.09l-0.5,0.04l-0.26,0.19l-0.72,1.99l0.18,4.76l-0.95,5.56l-0.74,0.96l-0.06,0.15l-0.43,3.39l-2.49,3.34l-0.06,0.13l-0.4,2.56l-1.9,1.07l-0.13,0.16l-0.51,1.38l-2.59,0.0l-3.94,1.01l-1.82,1.19l-2.85,0.81l-3.01,2.17l-2.12,2.65l-0.06,0.13l-0.36,2.0l0.01,0.13l0.4,1.42l-0.45,2.63l-0.53,1.23l-1.76,1.53l-2.76,4.79l-2.16,2.15l-1.69,1.29l-0.09,0.12l-1.12,2.6l-1.3,1.26l-0.45,-1.02l0.99,-1.18l0.01,-0.37l-1.5,-1.95l-1.98,-1.54l-2.58,-1.77l-0.2,-0.05l-0.81,0.07l-2.42,-2.05l-0.25,-0.07l-0.77,0.14l2.75,-3.07l2.8,-2.61l1.67,-1.09l2.11,-1.49l0.13,-0.24l0.05,-2.15l-0.07,-0.2l-1.26,-1.54l-0.35,-0.09l-0.64,0.27l0.3,-0.95l0.34,-1.57l0.01,-1.52l-0.16,-0.26l-0.9,-0.48l-0.27,-0.01l-0.86,0.39l-0.65,-0.08l-0.23,-0.8l-0.23,-2.39l-0.04,-0.12l-0.47,-0.79l-0.14,-0.12l-1.69,-0.71l-0.25,0.01l-0.93,0.47l-2.29,-0.44l0.15,-3.3l-0.03,-0.15l-0.62,-1.22l0.57,-0.39l0.13,-0.3l-0.22,-1.37l0.67,-1.13l0.44,-2.04l-0.01,-0.17l-0.59,-1.61l-0.14,-0.16l-1.25,-0.66l-0.22,-0.82l0.35,-1.41l-0.28,-0.37l-4.59,-0.1l-0.78,-2.41l0.34,-0.02l0.28,-0.31l-0.03,-1.1l-0.05,-0.16l-0.45,-0.68l-0.1,-1.4l-0.16,-0.24l-1.45,-0.76l-0.14,-0.03l-1.48,0.02l-1.04,-0.73l-1.62,-0.48l-0.93,-0.9l-0.16,-0.08l-2.72,-0.41l-2.53,-2.12l0.18,-1.54l-0.01,-0.13l-0.29,-0.91l0.26,-1.83l-0.34,-0.34l-3.28,0.43l-0.14,0.05l-1.3,0.93l-2.16,1.01l-0.12,0.09l-0.47,0.65l-1.12,0.05l-1.84,-0.21l-0.12,0.01l-1.33,0.41l-0.82,-0.21l0.16,-3.6l-0.48,-0.26l-1.97,1.43l-1.96,-0.06l-0.86,-1.23l-0.22,-0.13l-1.23,-0.11l0.34,-0.69l-0.05,-0.33l-1.36,-1.5l-0.92,-2.0l0.45,-0.32l0.13,-0.25l-0.0,-0.87l1.34,-0.64l0.17,-0.32l-0.23,-1.23l0.56,-0.77l0.05,-0.13l0.16,-1.03l2.7,-1.61l2.01,-0.47l0.16,-0.09l0.24,-0.27l2.11,0.11l0.31,-0.25l1.13,-6.87l0.06,-1.12l-0.4,-1.53l-0.1,-0.15l-1.0,-0.82l0.01,-1.45l1.08,-0.32l0.39,0.2l0.44,-0.24l0.08,-0.96l-0.25,-0.32l-1.22,-0.22l-0.02,-1.01l4.57,0.05l0.22,-0.09l0.6,-0.63l0.44,0.5l0.47,1.42l0.45,0.16l0.27,-0.18l1.21,1.16l0.23,0.08l1.95,-0.16l0.23,-0.14l0.43,-0.67l1.76,-0.55l1.05,-0.42l0.18,-0.2l0.25,-0.92l1.65,-0.66l0.18,-0.35l-0.14,-0.53l-0.26,-0.22l-1.91,-0.19l-0.29,-1.33l0.1,-1.64l-0.15,-0.28l-0.44,-0.25Z",\n "name": "Brazil"\n },\n "BS": {\n "path": "M227.51,216.69l0.3,0.18l-0.24,1.07l0.03,-1.04l-0.09,-0.21ZM226.5,224.03l-0.13,0.03l-0.54,-1.3l-0.09,-0.12l-0.78,-0.64l0.4,-1.26l0.33,0.05l0.79,2.0l0.01,1.24ZM225.76,216.5l-2.16,0.34l-0.07,-0.41l0.85,-0.16l1.36,0.07l0.02,0.16Z",\n "name": "The Bahamas"\n },\n "BY": {\n "path": "M480.08,135.28l2.09,0.02l0.13,-0.03l2.72,-1.3l0.16,-0.19l0.55,-1.83l1.94,-1.06l0.15,-0.31l-0.2,-1.33l1.33,-0.52l2.58,-1.3l2.39,0.8l0.3,0.75l0.37,0.17l1.22,-0.39l2.18,0.75l0.2,1.36l-0.48,0.85l0.01,0.32l1.57,2.26l0.92,0.6l-0.1,0.41l0.19,0.35l1.61,0.57l0.48,0.6l-0.64,0.49l-1.91,-0.11l-0.18,0.05l-0.48,0.32l-0.1,0.39l0.57,1.1l0.51,1.78l-1.79,0.17l-0.18,0.08l-0.77,0.73l-0.09,0.19l-0.13,1.31l-0.75,-0.22l-2.11,0.15l-0.56,-0.66l-0.39,-0.06l-0.8,0.49l-0.79,-0.4l-0.13,-0.03l-1.94,-0.07l-2.76,-0.79l-2.58,-0.27l-1.98,0.07l-0.15,0.05l-1.31,0.86l-0.8,0.09l-0.04,-1.16l-0.03,-0.12l-0.63,-1.28l1.22,-0.56l0.17,-0.27l0.01,-1.35l-0.04,-0.15l-0.66,-1.24l-0.08,-1.12Z",\n "name": "Belarus"\n },\n "BZ": {\n "path": "M198.03,239.7l0.28,0.19l0.43,-0.1l0.82,-1.42l0.0,0.07l0.29,0.29l0.16,0.0l-0.02,0.35l-0.39,1.08l0.02,0.25l0.16,0.29l-0.23,0.8l0.04,0.24l0.09,0.14l-0.25,1.12l-0.38,0.53l-0.33,0.06l-0.21,0.15l-0.41,0.74l-0.25,0.0l0.17,-2.58l0.01,-2.2Z",\n "name": "Belize"\n },\n "RU": {\n "path": "M688.57,38.85l0.63,2.39l0.44,0.19l2.22,-1.23l7.18,0.07l5.54,2.49l1.85,1.77l-0.55,2.34l-2.64,1.42l-6.57,2.76l-1.95,1.5l0.12,0.53l3.09,0.68l3.69,1.23l0.21,-0.01l1.98,-0.81l1.16,2.84l0.5,0.08l1.03,-1.18l3.86,-0.74l7.79,0.78l0.56,2.05l0.27,0.22l10.47,0.71l0.32,-0.29l0.13,-3.34l4.98,0.8l3.96,-0.02l3.88,2.43l1.06,2.79l-1.38,1.83l0.01,0.38l3.15,3.64l0.1,0.08l3.94,1.86l0.4,-0.14l2.28,-4.56l3.75,1.94l0.22,0.02l4.18,-1.22l4.76,1.4l0.26,-0.04l1.74,-1.23l3.98,0.63l0.32,-0.41l-1.71,-4.1l3.0,-1.86l22.39,3.04l2.06,2.67l0.1,0.08l6.55,3.51l0.17,0.03l10.08,-0.86l4.86,0.73l1.91,1.72l-0.29,3.13l0.18,0.31l3.08,1.26l0.19,0.01l3.32,-0.9l4.37,-0.11l4.78,0.87l4.61,-0.48l4.26,3.82l0.32,0.05l3.1,-1.4l0.12,-0.45l-1.91,-2.67l0.92,-1.64l7.78,1.22l5.22,-0.26l7.12,2.1l9.6,5.22l6.4,4.15l-0.2,2.44l0.14,0.28l1.69,1.04l0.45,-0.31l-0.51,-2.66l6.31,0.58l4.52,3.61l-2.1,1.52l-4.02,0.42l-0.27,0.29l-0.06,3.83l-0.81,0.67l-2.14,-0.11l-1.91,-1.39l-3.19,-1.13l-0.51,-1.63l-0.21,-0.2l-2.54,-0.67l-0.13,-0.0l-2.69,0.5l-1.12,-1.19l0.48,-1.36l-0.38,-0.39l-3.0,0.98l-0.17,0.44l1.02,1.76l-1.27,1.55l-3.09,1.71l-3.15,-0.29l-0.3,0.18l0.07,0.34l2.22,2.1l1.47,3.22l1.15,1.09l0.25,1.41l-0.48,0.76l-4.47,-0.81l-0.17,0.02l-6.97,2.9l-2.2,0.44l-0.11,0.05l-3.83,2.68l-3.63,2.32l-0.1,0.11l-0.76,1.4l-3.3,-2.4l-0.3,-0.03l-6.31,2.85l-0.99,-1.21l-0.4,-0.06l-2.32,1.54l-3.23,-0.49l-0.33,0.2l-0.79,2.39l-2.97,3.51l-0.07,0.21l0.09,1.47l0.22,0.27l2.62,0.74l-0.3,4.7l-2.06,0.12l-0.26,0.2l-1.07,2.94l0.04,0.27l0.83,1.19l-4.03,1.63l-0.18,0.21l-0.83,3.72l-3.55,0.79l-0.23,0.23l-0.73,3.32l-3.22,2.76l-0.76,-1.88l-1.07,-4.88l-1.39,-7.59l1.17,-4.76l2.05,-2.08l0.09,-0.19l0.11,-1.46l3.67,-0.77l0.15,-0.08l4.47,-4.61l4.29,-3.82l4.48,-3.01l0.11,-0.14l2.01,-5.43l-0.31,-0.4l-3.04,0.33l-0.24,0.17l-1.47,3.11l-5.98,3.94l-1.91,-4.36l-0.33,-0.17l-6.46,1.3l-0.15,0.08l-6.27,6.33l-0.01,0.41l1.7,1.87l-5.04,0.87l-3.51,0.34l0.16,-2.32l-0.26,-0.32l-3.89,-0.56l-0.19,0.04l-3.02,1.77l-7.63,-0.63l-8.24,1.1l-0.16,0.07l-8.11,7.09l-9.6,8.31l0.16,0.52l3.79,0.42l1.16,2.03l0.17,0.14l2.43,0.76l0.31,-0.08l1.5,-1.61l2.49,0.2l3.46,3.6l0.08,2.67l-1.91,3.26l-0.04,0.14l-0.21,3.91l-1.11,5.09l-3.73,4.55l-0.87,2.21l-6.73,7.14l-1.59,1.77l-3.23,1.72l-1.38,0.03l-1.48,-1.39l-0.37,-0.03l-3.36,2.22l-0.11,0.14l-0.16,0.42l-0.01,-1.09l1.0,-0.06l0.28,-0.27l0.36,-3.6l-0.61,-2.51l1.85,-0.94l2.94,0.53l0.32,-0.15l1.71,-3.1l0.84,-3.38l0.97,-1.18l1.32,-2.88l-0.34,-0.42l-4.14,0.95l-2.18,1.25l-3.51,-0.0l-0.95,-2.81l-0.1,-0.14l-2.97,-2.3l-0.11,-0.05l-4.19,-1.0l-0.89,-3.08l-0.87,-2.03l-0.95,-1.46l-1.54,-3.37l-0.12,-0.14l-2.27,-1.28l-3.83,-1.02l-3.37,0.1l-3.11,0.61l-0.13,0.06l-2.07,1.69l0.04,0.49l1.23,0.72l0.03,1.53l-1.34,1.05l-2.26,3.51l-0.05,0.17l0.02,1.27l-3.25,1.9l-2.87,-1.17l-0.14,-0.02l-2.86,0.26l-1.22,-1.02l-0.12,-0.06l-1.5,-0.35l-0.23,0.04l-3.62,2.27l-3.24,0.53l-2.28,0.79l-3.08,-0.51l-2.24,0.03l-1.49,-1.61l-2.45,-1.57l-0.11,-0.04l-2.6,-0.43l-3.17,0.43l-2.31,0.59l-3.31,-1.28l-0.45,-2.31l-0.21,-0.23l-2.94,-0.85l-2.26,-0.39l-2.77,-1.36l-0.37,0.09l-2.59,3.45l-0.03,0.32l0.91,1.74l-2.15,2.01l-3.47,-0.79l-2.44,-0.12l-1.59,-1.46l-0.2,-0.08l-2.55,-0.05l-2.12,-0.98l-0.24,-0.01l-3.85,1.57l-4.74,2.79l-2.59,0.55l-0.79,0.21l-1.21,-1.81l-0.29,-0.13l-3.05,0.41l-0.96,-1.25l-0.14,-0.1l-1.65,-0.6l-1.15,-1.82l-0.13,-0.12l-1.38,-0.6l-0.19,-0.02l-3.49,0.82l-3.35,-1.85l-0.38,0.08l-1.08,1.4l-5.36,-8.17l-3.02,-2.52l0.72,-0.85l0.01,-0.38l-0.37,-0.08l-6.22,3.21l-1.98,0.16l0.17,-1.51l-0.2,-0.31l-3.22,-1.17l-0.19,-0.0l-2.3,0.74l-0.72,-3.27l-0.24,-0.23l-4.5,-0.75l-0.21,0.04l-2.2,1.42l-6.21,1.27l-0.11,0.05l-1.16,0.81l-9.3,1.19l-0.18,0.09l-1.15,1.17l-0.02,0.39l1.56,2.01l-2.02,0.74l-0.16,0.42l0.35,0.68l-2.18,1.49l0.02,0.51l3.83,2.16l-0.45,1.13l-3.31,-0.13l-0.25,0.12l-0.57,0.77l-2.97,-1.59l-0.15,-0.04l-3.97,0.07l-0.13,0.03l-2.53,1.32l-2.84,-1.28l-5.52,-2.3l-0.12,-0.02l-3.91,0.09l-0.16,0.05l-5.17,3.6l-0.13,0.21l-0.25,1.89l-2.17,-1.6l-0.44,0.1l-2.0,3.59l0.06,0.37l0.55,0.5l-1.32,2.23l0.04,0.36l2.13,2.17l0.23,0.09l1.7,-0.08l1.42,1.89l-0.23,1.5l0.19,0.32l0.94,0.38l-0.89,1.44l-2.3,0.49l-0.17,0.11l-2.49,3.2l0.0,0.37l2.2,2.81l-0.23,1.93l0.06,0.22l2.56,3.32l-1.27,1.02l-0.4,0.66l-0.8,-0.15l-1.65,-1.75l-0.18,-0.09l-0.66,-0.09l-1.45,-0.64l-0.72,-1.16l-0.18,-0.13l-2.34,-0.63l-0.17,0.0l-1.32,0.41l-0.31,-0.4l-0.12,-0.09l-3.49,-1.48l-3.67,-0.49l-2.1,-0.52l-0.3,0.1l-0.12,0.14l-2.96,-2.4l-2.89,-1.19l-1.69,-1.42l1.27,-0.35l0.16,-0.1l2.08,-2.61l-0.04,-0.41l-1.02,-0.9l3.21,-1.12l0.2,-0.31l-0.07,-0.69l-0.37,-0.26l-1.86,0.42l0.05,-0.86l1.11,-0.76l2.35,-0.23l0.25,-0.19l0.39,-1.07l0.0,-0.19l-0.51,-1.64l0.95,-1.58l0.04,-0.16l-0.03,-0.95l-0.22,-0.28l-3.69,-1.06l-1.43,0.02l-1.45,-1.44l-0.29,-0.08l-1.83,0.49l-2.88,-1.04l0.04,-0.42l-0.04,-0.18l-0.89,-1.43l-0.23,-0.14l-1.77,-0.14l-0.13,-0.66l0.52,-0.56l0.01,-0.4l-1.6,-1.9l-0.27,-0.1l-2.55,0.32l-0.71,-0.16l-0.3,0.1l-0.53,0.63l-0.58,-0.08l-0.56,-1.97l-0.48,-0.94l0.17,-0.11l1.92,0.11l0.2,-0.06l0.97,-0.74l0.05,-0.42l-0.72,-0.91l-0.13,-0.1l-1.43,-0.51l0.09,-0.36l-0.13,-0.33l-0.97,-0.59l-1.43,-2.06l0.44,-0.77l0.04,-0.19l-0.25,-1.64l-0.2,-0.24l-2.45,-0.84l-0.19,-0.0l-1.05,0.34l-0.25,-0.62l-0.18,-0.17l-2.5,-0.84l-0.74,-1.93l-0.21,-1.7l-0.13,-0.21l-0.92,-0.63l0.83,-0.89l0.07,-0.27l-0.71,-3.26l1.69,-2.01l0.03,-0.34l-0.24,-0.41l2.63,-1.9l-0.01,-0.49l-2.31,-1.57l5.08,-4.61l2.33,-2.24l1.01,-2.08l-0.09,-0.37l-3.52,-2.56l0.94,-2.38l-0.04,-0.29l-2.14,-2.86l1.61,-3.35l-0.01,-0.29l-2.81,-4.58l2.19,-3.04l-0.06,-0.42l-3.7,-2.76l0.32,-2.67l1.87,-0.38l4.26,-1.77l2.46,-1.47l3.96,2.58l0.12,0.05l6.81,1.04l9.37,4.87l1.81,1.92l0.15,2.55l-2.61,2.06l-3.95,1.07l-11.1,-3.15l-0.17,0.0l-1.84,0.53l-0.1,0.53l3.97,2.97l0.15,1.77l0.16,4.14l0.19,0.27l3.21,1.22l1.94,1.03l0.44,-0.22l0.32,-1.94l-0.07,-0.25l-1.32,-1.52l1.25,-1.2l5.87,2.45l0.24,-0.01l2.11,-0.98l0.13,-0.42l-1.55,-2.75l5.52,-3.84l2.13,0.22l2.28,1.42l0.43,-0.12l1.46,-2.87l-0.04,-0.33l-1.97,-2.37l1.14,-2.38l-0.02,-0.3l-1.42,-2.07l6.15,1.22l1.14,1.92l-2.74,0.46l-0.25,0.3l0.02,2.36l0.12,0.24l1.97,1.44l0.25,0.05l3.87,-0.91l0.22,-0.23l0.58,-2.55l5.09,-1.98l8.67,-3.69l1.22,0.14l-2.06,2.2l0.18,0.5l3.11,0.45l0.23,-0.07l1.71,-1.41l4.59,-0.12l0.12,-0.03l3.53,-1.72l2.7,2.48l0.42,-0.01l2.85,-2.88l-0.0,-0.43l-2.42,-2.35l1.0,-1.13l7.2,1.31l3.42,1.36l9.06,4.97l0.39,-0.08l1.67,-2.27l-0.04,-0.4l-2.46,-2.23l-0.06,-0.82l-0.26,-0.27l-2.64,-0.38l0.69,-1.76l0.0,-0.22l-1.32,-3.47l-0.07,-1.27l4.52,-4.09l0.08,-0.11l1.6,-4.18l1.67,-0.84l6.33,1.2l0.46,2.31l-2.31,3.67l0.05,0.38l1.49,1.41l0.77,3.04l-0.56,6.05l0.09,0.24l2.62,2.54l-0.99,2.65l-4.87,5.96l0.17,0.48l2.86,0.61l0.31,-0.13l0.94,-1.42l2.67,-1.04l0.18,-0.19l0.64,-2.01l2.11,-1.98l0.05,-0.37l-1.38,-2.32l1.11,-2.74l-0.24,-0.41l-2.53,-0.33l-0.53,-2.16l1.96,-4.42l-0.05,-0.32l-3.03,-3.48l4.21,-2.94l0.12,-0.3l-0.52,-3.04l0.72,-0.06l1.18,2.35l-0.97,4.39l0.2,0.35l2.68,0.84l0.37,-0.38l-1.05,-3.07l3.89,-1.71l5.05,-0.24l4.55,2.62l0.36,-0.05l0.05,-0.36l-2.19,-3.84l-0.23,-4.78l4.07,-0.92l5.98,0.21l5.47,-0.64l0.2,-0.48l-1.88,-2.37l2.65,-2.99l2.75,-0.13l0.12,-0.03l4.82,-2.48l6.56,-0.67l0.23,-0.14l0.76,-1.27l6.33,-0.46l1.97,1.11l0.28,0.01l5.55,-2.71l4.53,0.08l0.29,-0.21l0.67,-2.18l2.29,-2.15l5.75,-2.13l3.48,1.4l-2.7,1.03l-0.19,0.31l0.26,0.26l5.47,0.78ZM871.83,65.73l0.25,-0.15l1.99,0.01l3.3,1.2l-0.08,0.22l-2.41,1.03l-5.73,0.49l-0.31,-1.0l2.99,-1.8ZM797.64,48.44l-2.22,1.51l-3.85,-0.43l-4.35,-1.85l0.42,-1.13l4.42,0.72l5.59,1.17ZM783.82,46.06l-1.71,3.25l-9.05,-0.14l-4.11,1.15l-4.64,-3.04l1.21,-3.13l3.11,-0.91l6.53,0.22l8.66,2.59ZM780.37,145.71l2.28,5.23l-3.09,-0.89l-0.37,0.19l-1.54,4.65l0.04,0.27l2.38,3.17l-0.05,1.4l-1.41,-1.41l-0.46,0.04l-1.23,1.81l-0.33,-1.86l0.28,-3.1l-0.28,-3.41l0.58,-2.46l0.11,-4.39l-0.03,-0.13l-1.44,-3.2l0.21,-4.39l2.19,-1.49l0.09,-0.41l-0.81,-1.3l0.48,-0.21l0.56,1.94l0.86,3.23l-0.05,3.36l1.03,3.35ZM780.16,57.18l-3.4,0.03l-5.06,-0.53l1.97,-1.59l2.95,-0.42l3.35,1.75l0.18,0.77ZM683.84,31.18l-13.29,1.97l4.16,-6.56l1.88,-0.58l1.77,0.34l6.08,3.02l-0.6,1.8ZM670.94,28.02l-5.18,0.65l-6.89,-1.58l-4.03,-2.07l-1.88,-3.98l-0.18,-0.16l-2.8,-0.93l5.91,-3.62l5.25,-1.29l4.73,2.88l5.63,5.44l-0.57,4.66ZM564.37,68.98l-0.85,0.23l-7.93,-0.57l-0.6,-1.84l-0.21,-0.2l-4.34,-1.18l-0.3,-2.08l2.34,-0.92l0.19,-0.29l-0.08,-2.43l4.85,-4.0l-0.12,-0.52l-1.68,-0.43l5.47,-3.94l0.11,-0.33l-0.6,-2.02l5.36,-2.55l8.22,-3.27l8.29,-0.96l4.34,-1.94l4.67,-0.65l1.45,1.72l-1.43,1.37l-8.8,2.52l-7.65,2.42l-7.92,4.84l-3.73,4.75l-3.92,4.58l-0.07,0.23l0.51,3.88l0.11,0.2l4.32,3.39ZM548.86,18.57l-3.28,0.75l-2.25,0.44l-0.22,0.19l-0.3,0.81l-2.67,0.86l-2.27,-1.14l1.2,-1.51l-0.23,-0.49l-3.14,-0.1l2.48,-0.54l3.55,-0.07l0.44,1.36l0.49,0.12l1.4,-1.35l2.2,-0.9l3.13,1.08l-0.54,0.49ZM477.5,133.25l-4.21,0.05l-2.69,-0.34l0.39,-1.03l3.24,-1.06l2.51,0.58l0.85,0.43l-0.2,0.71l-0.0,0.15l0.12,0.52Z",\n "name": "Russia"\n },\n "RW": {\n "path": "M497.03,288.12l0.78,1.11l-0.12,1.19l-0.49,0.21l-1.25,-0.15l-0.3,0.16l-0.67,1.24l-1.01,-0.13l0.16,-0.92l0.22,-0.12l0.15,-0.24l0.09,-1.37l0.49,-0.48l0.42,0.18l0.25,-0.01l1.26,-0.65Z",\n "name": "Rwanda"\n },\n "RS": {\n "path": "M469.75,168.65l0.21,-0.21l0.36,-1.44l-0.08,-0.29l-1.06,-1.03l0.54,-1.16l-0.28,-0.43l-0.26,0.0l0.55,-0.67l-0.01,-0.39l-0.77,-0.86l-0.45,-0.89l1.56,-0.67l1.39,0.12l1.22,1.1l0.26,0.91l0.16,0.19l1.38,0.66l0.17,1.12l0.14,0.21l1.46,0.9l0.35,-0.03l0.62,-0.54l0.09,0.06l-0.28,0.25l-0.03,0.42l0.29,0.34l-0.44,0.5l-0.07,0.26l0.22,1.12l0.07,0.14l1.02,1.1l-0.81,0.84l-0.42,0.96l0.04,0.3l0.12,0.15l-0.15,0.16l-1.04,0.04l-0.39,0.08l0.33,-0.81l-0.29,-0.41l-0.21,0.01l-0.39,-0.45l-0.13,-0.09l-0.32,-0.11l-0.27,-0.4l-0.14,-0.11l-0.4,-0.16l-0.31,-0.37l-0.34,-0.09l-0.45,0.17l-0.18,0.18l-0.29,0.84l-0.96,-0.65l-0.81,-0.33l-0.32,-0.37l-0.22,-0.18Z",\n "name": "Republic of Serbia"\n },\n "LT": {\n "path": "M478.13,133.31l-0.14,-0.63l0.25,-0.88l-0.15,-0.35l-1.17,-0.58l-2.43,-0.57l-0.45,-2.51l2.58,-0.97l4.14,0.22l2.3,-0.32l0.26,0.54l0.22,0.17l1.26,0.22l2.25,1.6l0.19,1.23l-1.87,1.01l-0.14,0.18l-0.54,1.83l-2.54,1.21l-2.18,-0.02l-0.52,-0.91l-0.18,-0.14l-1.11,-0.32Z",\n "name": "Lithuania"\n },\n "LU": {\n "path": "M435.95,147.99l0.33,0.49l-0.11,1.07l-0.39,0.04l-0.29,-0.15l0.21,-1.4l0.25,-0.05Z",\n "name": "Luxembourg"\n },\n "LR": {\n "path": "M401.37,273.67l-0.32,0.01l-2.48,-1.15l-2.24,-1.89l-2.14,-1.38l-1.47,-1.42l0.44,-0.59l0.05,-0.13l0.12,-0.65l1.07,-1.3l1.08,-1.09l0.52,-0.07l0.43,-0.18l0.84,1.24l-0.15,0.89l0.07,0.25l0.49,0.54l0.22,0.1l0.71,0.01l0.27,-0.16l0.42,-0.83l0.19,0.02l-0.06,0.52l0.23,1.12l-0.5,1.03l0.06,0.35l0.73,0.69l0.14,0.08l0.71,0.15l0.92,0.91l0.06,0.76l-0.17,0.22l-0.06,0.15l-0.17,1.8Z",\n "name": "Liberia"\n },\n "RO": {\n "path": "M477.94,155.19l1.02,-0.64l1.49,0.33l1.52,0.01l1.09,0.73l0.32,0.01l0.81,-0.46l1.8,-0.3l0.18,-0.1l0.54,-0.64l0.86,0.0l0.64,0.26l0.71,0.87l0.8,1.35l1.39,1.81l0.07,1.25l-0.26,1.3l0.01,0.15l0.45,1.42l0.15,0.18l1.12,0.57l0.25,0.01l1.05,-0.45l0.86,0.4l0.03,0.43l-0.92,0.51l-0.63,-0.24l-0.4,0.22l-0.64,3.41l-1.12,-0.24l-1.78,-1.09l-0.23,-0.04l-2.95,0.71l-1.25,0.77l-3.55,-0.16l-1.89,-0.47l-0.14,-0.0l-0.75,0.17l-0.61,-1.07l-0.3,-0.36l0.36,-0.32l-0.04,-0.48l-0.62,-0.38l-0.36,0.03l-0.62,0.54l-1.15,-0.71l-0.18,-1.14l-0.17,-0.22l-1.4,-0.67l-0.24,-0.86l-0.09,-0.14l-0.96,-0.87l1.49,-0.44l0.16,-0.11l1.51,-2.14l1.15,-2.09l1.44,-0.63Z",\n "name": "Romania"\n },\n "GW": {\n "path": "M383.03,256.73l-1.12,-0.88l-0.14,-0.06l-0.94,-0.15l-0.43,-0.54l0.01,-0.27l-0.13,-0.26l-0.68,-0.48l-0.05,-0.16l0.99,-0.31l0.77,0.08l0.15,-0.02l0.61,-0.26l4.25,0.1l-0.02,0.44l-0.19,0.18l-0.08,0.29l0.17,0.66l-0.17,0.14l-0.44,0.0l-0.16,0.05l-0.57,0.37l-0.66,-0.04l-0.24,0.1l-0.92,1.03Z",\n "name": "Guinea Bissau"\n },\n "GT": {\n "path": "M195.13,249.89l-1.05,-0.35l-1.5,-0.04l-1.06,-0.47l-1.19,-0.93l0.04,-0.53l0.27,-0.55l-0.03,-0.31l-0.24,-0.32l1.02,-1.77l3.04,-0.01l0.3,-0.28l0.06,-0.88l-0.19,-0.3l-0.3,-0.11l-0.23,-0.45l-0.11,-0.12l-0.9,-0.58l-0.35,-0.33l0.37,-0.0l0.3,-0.3l0.0,-1.15l4.05,0.02l-0.02,1.74l-0.2,2.89l0.3,0.32l0.67,-0.0l0.75,0.42l0.4,-0.11l-0.62,0.53l-1.17,0.7l-0.13,0.16l-0.18,0.49l0.0,0.21l0.14,0.34l-0.35,0.44l-0.49,0.13l-0.2,0.41l0.03,0.06l-0.27,0.16l-0.86,0.64l-0.12,0.22ZM199.35,245.38l0.07,-0.13l0.05,0.02l-0.13,0.11Z",\n "name": "Guatemala"\n },\n "GR": {\n "path": "M487.2,174.55l-0.64,1.54l-0.43,0.24l-1.41,-0.08l-1.28,-0.28l-0.14,0.0l-3.03,0.77l-0.13,0.51l1.39,1.34l-0.78,0.29l-1.2,0.0l-1.23,-1.42l-0.47,0.02l-0.47,0.65l-0.04,0.27l0.56,1.76l0.06,0.11l1.02,1.12l-0.66,0.45l-0.04,0.46l1.39,1.35l1.15,0.79l0.02,1.06l-1.91,-0.63l-0.36,0.42l0.56,1.12l-1.2,0.23l-0.22,0.4l0.8,2.14l-1.15,0.02l-1.89,-1.15l-0.89,-2.19l-0.43,-1.91l-0.05,-0.11l-0.98,-1.35l-1.24,-1.62l-0.13,-0.63l1.07,-1.32l0.06,-0.14l0.13,-0.81l0.68,-0.36l0.16,-0.25l0.03,-0.54l1.4,-0.23l0.12,-0.05l0.87,-0.6l1.26,0.05l0.25,-0.11l0.34,-0.43l0.33,-0.07l1.81,0.08l0.13,-0.02l1.87,-0.77l1.64,0.97l0.19,0.04l2.28,-0.28l0.26,-0.29l0.02,-0.95l0.56,0.36ZM480.44,192.0l1.05,0.74l0.01,0.0l-1.26,-0.23l0.2,-0.51ZM481.76,192.79l1.86,-0.15l1.53,0.17l-0.02,0.19l0.34,0.3l-2.28,0.15l0.01,-0.13l-0.25,-0.31l-1.19,-0.22ZM485.65,193.28l0.65,-0.16l-0.05,0.12l-0.6,0.04Z",\n "name": "Greece"\n },\n "GQ": {\n "path": "M444.81,282.04l-0.21,-0.17l0.74,-2.4l3.56,0.05l0.02,2.42l-3.34,-0.02l-0.76,0.13Z",\n "name": "Equatorial Guinea"\n },\n "GY": {\n "path": "M271.34,264.25l1.43,0.81l1.44,1.53l0.06,1.19l0.28,0.28l0.84,0.05l2.13,1.92l-0.34,1.93l-1.37,0.59l-0.17,0.34l0.12,0.51l-0.43,1.21l0.03,0.26l1.11,1.82l0.26,0.14l0.56,0.0l0.32,1.29l1.25,1.78l-0.08,0.01l-1.34,-0.21l-0.24,0.06l-0.78,0.64l-1.06,0.41l-0.76,0.1l-0.22,0.15l-0.18,0.32l-0.95,-0.1l-1.38,-1.05l-0.19,-1.13l-0.6,-1.18l0.37,-1.96l0.65,-0.83l0.03,-0.32l-0.57,-1.17l-0.15,-0.14l-0.62,-0.27l0.25,-0.85l-0.08,-0.3l-0.58,-0.58l-0.24,-0.09l-1.15,0.1l-1.41,-1.58l0.48,-0.49l0.09,-0.22l-0.04,-0.92l1.31,-0.34l0.73,-0.52l0.04,-0.44l-0.75,-0.82l0.16,-0.66l1.74,-1.3Z",\n "name": "Guyana"\n },\n "GE": {\n "path": "M525.41,174.19l0.26,-0.88l-0.0,-0.17l-0.63,-2.06l-0.1,-0.15l-1.45,-1.12l-0.11,-0.05l-1.31,-0.33l-0.66,-0.69l1.97,0.48l3.65,0.49l3.3,1.41l0.39,0.5l0.33,0.1l1.43,-0.45l2.14,0.58l0.7,1.14l0.13,0.12l1.06,0.47l-0.18,0.11l-0.08,0.43l1.08,1.41l-0.06,0.06l-1.16,-0.15l-1.82,-0.84l-0.31,0.04l-0.55,0.44l-3.29,0.44l-2.32,-1.41l-0.17,-0.04l-2.25,0.12Z",\n "name": "Georgia"\n },\n "GB": {\n "path": "M412.82,118.6l-2.31,3.4l-0.0,0.33l0.31,0.13l2.52,-0.49l2.34,0.02l-0.56,2.51l-2.22,3.13l0.22,0.47l2.43,0.21l2.35,4.35l0.17,0.14l1.58,0.51l1.49,3.78l0.73,1.37l0.2,0.15l2.76,0.59l-0.25,1.75l-1.18,0.91l-0.08,0.39l0.87,1.49l-1.96,1.51l-3.31,-0.02l-4.15,0.88l-1.07,-0.59l-0.35,0.04l-1.55,1.44l-2.17,-0.35l-0.22,0.05l-1.61,1.15l-0.78,-0.38l3.31,-3.12l2.18,-0.7l0.21,-0.31l-0.26,-0.27l-3.78,-0.54l-0.48,-0.9l2.3,-0.92l0.13,-0.46l-1.29,-1.71l0.39,-1.83l3.46,0.29l0.32,-0.24l0.37,-1.99l-0.06,-0.24l-1.71,-2.17l-0.18,-0.11l-2.91,-0.58l-0.43,-0.68l0.82,-1.4l-0.03,-0.35l-0.82,-0.97l-0.46,0.01l-0.85,1.05l-0.11,-2.6l-0.05,-0.16l-1.19,-1.7l0.86,-3.53l1.81,-2.75l1.88,0.26l2.38,-0.24ZM406.39,132.84l-1.09,1.92l-1.65,-0.62l-1.26,0.02l0.41,-1.46l0.0,-0.16l-0.42,-1.51l1.62,-0.11l2.39,1.92Z",\n "name": "United Kingdom"\n },\n "GA": {\n "path": "M448.76,294.47l-2.38,-2.34l-1.63,-2.04l-1.46,-2.48l0.06,-0.66l0.54,-0.81l0.61,-1.82l0.46,-1.69l0.63,-0.11l3.62,0.03l0.3,-0.3l-0.02,-2.75l0.88,-0.12l1.47,0.32l0.13,0.0l1.39,-0.3l-0.13,0.87l0.03,0.19l0.7,1.29l0.3,0.16l1.74,-0.19l0.36,0.29l-1.01,2.7l0.05,0.29l1.13,1.42l0.25,1.82l-0.3,1.56l-0.64,0.99l-1.93,-0.09l-1.26,-1.13l-0.5,0.17l-0.16,0.91l-1.48,0.27l-0.12,0.05l-0.86,0.63l-0.08,0.39l0.81,1.42l-1.48,1.08Z",\n "name": "Gabon"\n },\n "GN": {\n "path": "M399.83,265.31l-0.69,-0.06l-0.3,0.16l-0.43,0.85l-0.39,-0.01l-0.3,-0.33l0.14,-0.87l-0.05,-0.22l-1.05,-1.54l-0.37,-0.11l-0.61,0.27l-0.84,0.12l0.02,-0.54l-0.04,-0.17l-0.35,-0.57l0.07,-0.63l-0.03,-0.17l-0.57,-1.11l-0.7,-0.9l-0.24,-0.12l-2.0,-0.0l-0.19,0.07l-0.51,0.42l-0.6,0.05l-0.21,0.11l-0.43,0.55l-0.3,0.7l-1.04,0.86l-0.91,-1.24l-1.0,-1.02l-0.69,-0.37l-0.52,-0.42l-0.3,-1.11l-0.37,-0.56l-0.1,-0.1l-0.4,-0.23l0.77,-0.85l0.62,0.04l0.18,-0.05l0.58,-0.38l0.46,-0.0l0.19,-0.07l0.39,-0.34l0.1,-0.3l-0.17,-0.67l0.15,-0.14l0.09,-0.2l0.03,-0.57l0.87,0.02l1.76,0.6l0.13,0.01l0.55,-0.06l0.22,-0.13l0.08,-0.12l1.18,0.17l0.17,-0.02l0.09,0.56l0.3,0.25l0.4,-0.0l0.14,-0.03l0.56,-0.29l0.23,0.05l0.63,0.59l0.15,0.07l1.07,0.2l0.24,-0.06l0.65,-0.52l0.77,-0.32l0.55,-0.32l0.3,0.04l0.44,0.45l0.34,0.74l0.84,0.87l-0.35,0.45l-0.06,0.15l-0.1,0.82l0.42,0.31l0.35,-0.16l0.05,0.04l-0.1,0.59l0.09,0.27l0.42,0.4l-0.06,0.02l-0.18,0.21l-0.2,0.86l0.03,0.21l0.56,1.02l0.52,1.71l-0.65,0.21l-0.15,0.12l-0.24,0.35l-0.03,0.28l0.16,0.41l-0.1,0.76l-0.12,0.0Z",\n "name": "Guinea"\n },\n "GM": {\n "path": "M379.18,251.48l0.15,-0.55l2.51,-0.07l0.21,-0.09l0.48,-0.52l0.58,-0.03l0.91,0.58l0.16,0.05l0.78,0.01l0.14,-0.03l0.59,-0.31l0.16,0.24l-0.71,0.38l-0.94,-0.04l-1.02,-0.51l-0.3,0.01l-0.86,0.55l-0.37,0.02l-0.14,0.04l-0.53,0.31l-1.81,-0.04Z",\n "name": "Gambia"\n },\n "GL": {\n "path": "M304.13,6.6l8.19,-3.63l8.72,0.28l0.19,-0.06l3.12,-2.28l8.75,-0.61l19.94,0.8l14.93,4.75l-3.92,2.01l-9.52,0.27l-13.48,0.6l-0.27,0.2l0.09,0.33l1.26,1.09l0.22,0.07l8.81,-0.67l7.49,2.07l0.19,-0.01l4.68,-1.78l1.76,1.84l-2.59,3.26l-0.01,0.36l0.34,0.11l6.35,-2.2l12.09,-2.32l7.31,1.14l1.17,2.13l-9.9,4.05l-1.43,1.32l-7.91,0.98l-0.26,0.31l0.29,0.29l5.25,0.25l-2.63,3.72l-2.02,3.61l-0.04,0.15l0.08,6.05l0.07,0.19l2.61,3.0l-3.4,0.2l-4.12,1.66l-0.04,0.54l4.5,2.67l0.53,3.9l-2.39,0.42l-0.19,0.48l2.91,3.83l-5.0,0.32l-0.27,0.22l0.12,0.33l2.69,1.84l-0.65,1.35l-3.36,0.71l-3.46,0.01l-0.21,0.51l3.05,3.15l0.02,1.53l-4.54,-1.79l-0.32,0.06l-1.29,1.26l0.11,0.5l3.33,1.15l3.17,2.74l0.85,3.29l-4.0,0.78l-1.83,-1.66l-3.1,-2.64l-0.36,-0.02l-0.13,0.33l0.8,2.92l-2.76,2.26l-0.09,0.33l0.28,0.2l6.59,0.19l2.47,0.18l-5.86,3.38l-6.76,3.43l-7.26,1.48l-2.73,0.02l-0.16,0.05l-2.67,1.72l-3.44,4.42l-5.28,2.86l-1.73,0.18l-3.33,1.01l-3.59,0.96l-0.15,0.1l-2.15,2.52l-0.07,0.19l-0.03,2.76l-1.21,2.49l-4.03,3.1l-0.1,0.33l0.98,2.94l-2.31,6.57l-3.21,0.21l-3.6,-3.0l-0.19,-0.07l-4.9,-0.02l-2.29,-1.97l-1.69,-3.78l-4.31,-4.86l-1.23,-2.52l-0.34,-3.58l-0.08,-0.17l-3.35,-3.67l0.85,-2.92l-0.09,-0.31l-1.5,-1.34l2.33,-4.7l3.67,-1.57l0.15,-0.13l1.02,-1.93l0.52,-3.47l-0.44,-0.31l-2.85,1.57l-1.33,0.64l-2.12,0.59l-2.81,-1.32l-0.15,-2.79l0.88,-2.17l2.09,-0.06l5.07,1.2l0.34,-0.17l-0.11,-0.37l-4.3,-2.9l-2.24,-1.58l-0.25,-0.05l-2.38,0.62l-1.7,-0.93l2.62,-4.1l-0.03,-0.36l-1.51,-1.75l-1.97,-3.3l-3.01,-5.21l-0.1,-0.11l-3.04,-1.85l0.03,-1.94l-0.18,-0.28l-6.82,-3.01l-5.35,-0.38l-6.69,0.21l-6.03,0.37l-2.81,-1.59l-3.84,-2.9l5.94,-1.5l5.01,-0.28l0.28,-0.29l-0.26,-0.31l-10.68,-1.38l-5.38,-2.1l0.27,-1.68l9.3,-2.6l9.18,-2.68l0.19,-0.16l0.97,-2.05l-0.18,-0.42l-6.29,-1.91l1.81,-1.9l8.58,-4.05l3.6,-0.63l0.23,-0.4l-0.92,-2.37l5.59,-1.5l7.66,-0.95l7.58,-0.05l2.65,1.84l0.31,0.02l6.52,-3.29l5.85,2.24l3.55,0.49l5.17,1.95l0.38,-0.16l-0.13,-0.39l-5.77,-3.16l0.29,-2.26Z",\n "name": "Greenland"\n },\n "KW": {\n "path": "M540.87,207.81l0.41,0.94l-0.18,0.51l0.0,0.21l0.65,1.66l-1.15,0.05l-0.54,-1.12l-0.24,-0.17l-1.73,-0.2l1.44,-2.06l1.33,0.18Z",\n "name": "Kuwait"\n },\n "GH": {\n "path": "M423.16,269.88l-3.58,1.34l-1.41,0.87l-2.13,0.69l-1.91,-0.61l0.09,-0.75l-0.03,-0.17l-1.04,-2.07l0.62,-2.7l1.04,-2.08l0.03,-0.19l-1.0,-5.46l0.05,-1.12l4.04,-0.11l1.08,0.18l0.18,-0.03l0.72,-0.36l0.75,0.13l-0.11,0.48l0.06,0.26l0.98,1.22l-0.0,1.77l0.24,1.99l0.05,0.13l0.55,0.81l-0.52,2.14l0.19,1.37l0.69,1.66l0.38,0.62Z",\n "name": "Ghana"\n },\n "OM": {\n "path": "M568.16,231.0l-0.08,0.1l-0.84,1.61l-0.93,-0.11l-0.27,0.11l-0.58,0.73l-0.4,1.32l-0.01,0.14l0.29,1.61l-0.07,0.09l-1.0,-0.01l-0.16,0.04l-1.56,0.97l-0.14,0.2l-0.23,1.17l-0.41,0.4l-1.44,-0.02l-0.17,0.05l-0.98,0.65l-0.13,0.25l0.01,0.87l-0.97,0.57l-1.27,-0.22l-0.19,0.03l-1.63,0.84l-0.88,0.11l-2.55,-5.57l7.2,-2.49l0.19,-0.19l1.67,-5.23l-0.03,-0.25l-1.1,-1.78l0.05,-0.89l0.68,-1.03l0.05,-0.16l0.01,-0.89l0.96,-0.44l0.07,-0.5l-0.32,-0.26l0.16,-1.31l0.85,-0.01l1.03,1.67l0.09,0.09l1.4,0.96l0.11,0.05l1.82,0.34l1.37,0.45l1.75,2.32l0.13,0.1l0.7,0.26l-0.0,0.3l-1.25,2.19l-1.01,0.8ZM561.88,218.47l-0.01,0.02l-0.15,-0.29l0.3,-0.38l-0.14,0.65Z",\n "name": "Oman"\n },\n "_3": {\n "path": "M543.2,261.06l-1.07,1.46l-1.65,1.99l-1.91,0.01l-8.08,-2.95l-0.89,-0.84l-0.9,-1.19l-0.81,-1.23l0.44,-0.73l0.76,-1.12l0.49,0.28l0.52,1.05l1.13,1.06l0.2,0.08l1.24,0.01l2.42,-0.65l2.77,-0.31l2.17,-0.78l1.31,-0.19l0.84,-0.43l1.03,-0.06l-0.01,4.54Z",\n "name": "Somaliland"\n },\n "_2": {\n "path": "M384.23,230.37l0.07,-0.06l0.28,-0.89l0.99,-1.13l0.07,-0.13l0.8,-3.54l3.4,-2.8l0.09,-0.13l0.76,-2.17l0.07,5.5l-2.07,0.21l-0.24,0.17l-0.61,1.36l-0.02,0.16l0.43,3.46l-4.01,-0.01ZM391.82,218.2l0.07,-0.06l0.75,-1.93l1.86,-0.25l0.94,0.34l1.14,0.0l0.18,-0.06l0.73,-0.56l1.41,-0.08l-0.0,2.72l-7.08,-0.12Z",\n "name": "Western Sahara"\n },\n "_1": {\n "path": "M472.71,172.84l-0.07,-0.43l-0.16,-0.22l-0.53,-0.27l-0.38,-0.58l0.3,-0.43l0.51,-0.19l0.18,-0.18l0.3,-0.87l0.12,-0.04l0.22,0.26l0.12,0.09l0.38,0.15l0.28,0.41l0.15,0.12l0.34,0.12l0.43,0.5l0.15,0.07l-0.12,0.3l-0.27,0.32l-0.03,0.18l-0.31,0.06l-1.48,0.47l-0.15,0.17Z",\n "name": "Kosovo"\n },\n "_0": {\n "path": "M503.54,192.92l0.09,-0.17l0.41,0.01l-0.08,0.01l-0.42,0.15ZM504.23,192.76l1.02,0.02l0.4,-0.13l-0.09,0.29l0.03,0.08l-0.35,0.16l-0.24,-0.04l-0.06,-0.1l-0.18,-0.17l-0.19,-0.08l-0.33,-0.02Z",\n "name": "Northern Cyprus"\n },\n "JO": {\n "path": "M510.26,200.93l0.28,-0.57l2.53,1.0l0.27,-0.02l4.57,-2.77l0.84,2.84l-0.28,0.25l-4.95,1.37l-0.14,0.49l2.24,2.48l-0.5,0.28l-0.13,0.14l-0.35,0.78l-1.76,0.35l-0.2,0.14l-0.57,0.94l-0.94,0.73l-2.45,-0.38l-0.03,-0.12l1.23,-4.32l-0.04,-1.1l0.34,-0.75l0.03,-0.12l0.0,-1.63Z",\n "name": "Jordan"\n },\n "HR": {\n "path": "M455.49,162.73l1.53,0.09l0.24,-0.1l0.29,-0.34l0.64,0.38l0.14,0.04l0.98,0.06l0.32,-0.3l-0.01,-0.66l0.67,-0.25l0.19,-0.22l0.21,-1.11l1.72,-0.72l0.65,0.32l1.94,1.37l2.07,0.6l0.22,-0.02l0.67,-0.33l0.47,0.94l0.67,0.76l-0.63,0.77l-0.91,-0.55l-0.16,-0.04l-1.69,0.04l-2.2,-0.51l-1.17,0.07l-0.21,0.11l-0.36,0.42l-0.67,-0.53l-0.46,0.12l-0.52,1.29l0.05,0.31l1.21,1.42l0.58,0.99l1.15,1.14l0.95,0.68l0.92,1.23l0.1,0.09l1.75,0.91l-1.87,-0.89l-1.5,-1.11l-2.23,-0.88l-1.77,-1.9l0.12,-0.06l0.1,-0.47l-1.07,-1.22l-0.04,-0.94l-0.21,-0.27l-1.61,-0.49l-0.35,0.14l-0.53,0.93l-0.41,-0.57l0.04,-0.73Z",\n "name": "Croatia"\n },\n "HT": {\n "path": "M237.82,234.68l1.35,0.1l1.95,0.37l0.18,1.15l-0.16,0.83l-0.51,0.37l-0.06,0.44l0.57,0.68l-0.02,0.22l-1.31,-0.35l-1.26,0.17l-1.49,-0.18l-0.15,0.02l-1.03,0.43l-1.02,-0.61l0.09,-0.36l2.04,0.32l1.9,0.21l0.19,-0.05l0.9,-0.58l0.05,-0.47l-1.05,-1.03l0.02,-0.86l-0.23,-0.3l-1.13,-0.29l0.18,-0.23Z",\n "name": "Haiti"\n },\n "HU": {\n "path": "M461.96,157.92l0.68,-1.66l-0.03,-0.29l-0.15,-0.22l0.84,-0.0l0.3,-0.26l0.12,-0.84l0.88,0.57l0.98,0.38l0.16,0.01l2.1,-0.39l0.23,-0.21l0.14,-0.45l0.88,-0.1l1.06,-0.43l0.13,0.1l0.28,0.04l1.18,-0.4l0.14,-0.1l0.52,-0.67l0.63,-0.15l2.6,0.95l0.26,-0.03l0.38,-0.23l1.12,0.7l0.1,0.49l-1.31,0.57l-0.14,0.13l-1.18,2.14l-1.44,2.04l-1.85,0.55l-1.51,-0.13l-0.14,0.02l-1.92,0.82l-0.85,0.42l-1.91,-0.55l-1.83,-1.31l-0.74,-0.37l-0.44,-0.97l-0.26,-0.18Z",\n "name": "Hungary"\n },\n "HN": {\n "path": "M202.48,251.87l-0.33,-0.62l-0.18,-0.14l-0.5,-0.15l0.13,-0.76l-0.11,-0.28l-0.34,-0.28l-0.6,-0.23l-0.18,-0.01l-0.81,0.22l-0.16,-0.24l-0.72,-0.39l-0.51,-0.48l-0.12,-0.07l-0.31,-0.09l0.24,-0.3l0.04,-0.3l-0.16,-0.4l0.1,-0.28l1.14,-0.69l1.0,-0.86l0.09,0.04l0.3,-0.05l0.47,-0.39l0.49,-0.03l0.14,0.13l0.29,0.06l0.31,-0.1l1.16,0.22l1.24,-0.08l0.81,-0.28l0.29,-0.25l0.63,0.1l0.69,0.18l0.65,-0.06l0.49,-0.2l1.04,0.32l0.38,0.06l0.7,0.44l0.71,0.56l0.92,0.41l0.1,0.11l-0.11,-0.01l-0.23,0.09l-0.3,0.3l-0.76,0.29l-0.58,0.0l-0.15,0.04l-0.45,0.26l-0.31,-0.07l-0.37,-0.34l-0.28,-0.07l-0.26,0.07l-0.18,0.15l-0.23,0.43l-0.04,-0.0l-0.33,0.28l-0.03,0.4l-0.76,0.61l-0.45,0.3l-0.15,0.16l-0.51,-0.36l-0.41,0.06l-0.45,0.56l-0.41,-0.01l-0.59,0.06l-0.27,0.31l0.04,0.96l-0.07,0.0l-0.25,0.16l-0.24,0.45l-0.42,0.06Z",\n "name": "Honduras"\n },\n "PR": {\n "path": "M254.95,238.31l1.15,0.21l0.2,0.23l-0.36,0.36l-1.76,-0.01l-1.2,0.07l-0.09,-0.69l0.17,-0.18l1.89,0.01Z",\n "name": "Puerto Rico"\n },\n "PS": {\n "path": "M509.66,201.06l-0.0,1.44l-0.29,0.63l-0.59,0.19l0.02,-0.11l0.52,-0.31l-0.02,-0.53l-0.41,-0.2l0.36,-1.28l0.41,0.17Z",\n "name": "West Bank"\n },\n "PT": {\n "path": "M398.65,173.6l0.75,-0.63l0.7,-0.3l0.51,1.2l0.28,0.18l1.48,-0.0l0.2,-0.08l0.33,-0.3l1.16,0.08l0.52,1.11l-0.95,0.66l-0.13,0.24l-0.03,2.2l-0.33,0.35l-0.08,0.18l-0.08,1.17l-0.86,0.19l-0.2,0.44l0.93,1.64l-0.64,1.79l0.07,0.31l0.72,0.72l-0.24,0.56l-0.9,1.05l-0.07,0.26l0.17,0.77l-0.73,0.54l-1.18,-0.36l-0.16,-0.0l-0.85,0.21l0.31,-1.81l-0.23,-1.87l-0.23,-0.25l-0.99,-0.24l-0.49,-0.91l0.18,-1.72l0.93,-0.99l0.08,-0.16l0.17,-1.17l0.52,-1.76l-0.04,-1.36l-0.51,-1.14l-0.09,-0.8Z",\n "name": "Portugal"\n },\n "PY": {\n "path": "M264.33,341.43l0.93,-2.96l0.07,-1.42l1.1,-2.1l4.19,-0.73l2.22,0.04l2.12,1.21l0.07,0.76l0.7,1.38l-0.16,3.48l0.24,0.31l2.64,0.5l0.19,-0.03l0.9,-0.45l1.47,0.62l0.38,0.64l0.23,2.35l0.3,1.07l0.25,0.21l0.93,0.12l0.16,-0.02l0.8,-0.37l0.61,0.33l-0.0,1.25l-0.33,1.53l-0.5,1.57l-0.39,2.26l-2.14,1.94l-1.85,0.4l-2.74,-0.4l-2.13,-0.62l2.26,-3.75l0.03,-0.24l-0.36,-1.18l-0.17,-0.19l-2.55,-1.03l-3.04,-1.95l-2.07,-0.43l-4.4,-4.12Z",\n "name": "Paraguay"\n },\n "PA": {\n "path": "M213.65,263.79l0.18,-0.43l0.02,-0.18l-0.06,-0.28l0.23,-0.18l-0.01,-0.48l-0.4,-0.29l-0.01,-0.62l0.57,-0.13l0.68,0.69l-0.04,0.39l0.26,0.33l1.0,0.11l0.27,-0.1l0.49,0.44l0.24,0.07l1.34,-0.22l1.04,-0.62l1.49,-0.5l0.86,-0.73l0.99,0.11l0.18,0.28l1.35,0.08l1.02,0.4l0.78,0.72l0.71,0.53l-0.1,0.12l-0.05,0.3l0.53,1.34l-0.28,0.44l-0.6,-0.13l-0.36,0.22l-0.2,0.76l-0.41,-0.36l-0.44,-1.12l0.49,-0.53l-0.14,-0.49l-0.51,-0.14l-0.41,-0.72l-0.11,-0.11l-1.25,-0.7l-0.19,-0.04l-1.1,0.16l-0.22,0.15l-0.47,0.81l-0.9,0.56l-0.49,0.08l-0.22,0.17l-0.25,0.52l0.05,0.32l0.93,1.07l-0.41,0.21l-0.29,0.3l-0.81,0.09l-0.36,-1.26l-0.53,-0.1l-0.21,0.28l-0.5,-0.09l-0.44,-0.88l-0.22,-0.16l-0.99,-0.16l-0.61,-0.28l-0.13,-0.03l-1.0,0.0Z",\n "name": "Panama"\n },\n "PG": {\n "path": "M808.4,298.6l0.62,0.46l1.19,1.56l1.04,0.77l-0.18,0.37l-0.42,0.15l-0.92,-0.82l-1.05,-1.53l-0.27,-0.96ZM804.09,296.06l-0.3,0.26l-0.36,-1.11l-0.66,-1.06l-2.55,-1.89l-1.42,-0.59l0.17,-0.15l1.16,0.6l0.85,0.55l1.01,0.58l0.97,1.02l0.9,0.76l0.24,1.03ZM796.71,297.99l0.15,0.82l0.34,0.24l1.43,-0.19l0.19,-0.11l0.68,-0.82l1.36,-0.87l0.13,-0.31l-0.21,-1.13l1.04,-0.03l0.3,0.25l-0.04,1.17l-0.74,1.34l-1.17,0.18l-0.22,0.15l-0.35,0.62l-2.51,1.13l-1.21,-0.0l-1.99,-0.71l-1.19,-0.58l0.07,-0.28l1.98,0.32l1.46,-0.2l0.24,-0.21l0.25,-0.79ZM789.24,303.52l0.11,0.15l2.19,1.62l1.6,2.62l0.27,0.14l1.09,-0.06l-0.07,0.77l0.23,0.32l1.23,0.27l-0.14,0.09l0.05,0.53l2.39,0.95l-0.11,0.28l-1.33,0.14l-0.51,-0.55l-0.18,-0.09l-4.59,-0.65l-1.87,-1.55l-1.38,-1.35l-1.28,-2.17l-0.16,-0.13l-3.27,-1.1l-0.19,0.0l-2.12,0.72l-1.58,0.85l-0.15,0.31l0.28,1.63l-1.65,0.73l-1.37,-0.4l-2.3,-0.09l-0.08,-15.65l3.95,1.57l4.58,1.42l1.67,1.25l1.32,1.19l0.36,1.39l0.19,0.21l4.06,1.51l0.39,0.85l-1.9,0.22l-0.25,0.39l0.55,1.68Z",\n "name": "Papua New Guinea"\n },\n "PE": {\n "path": "M246.44,329.21l-0.63,1.25l-1.05,0.54l-2.25,-1.33l-0.19,-0.93l-0.16,-0.21l-4.95,-2.58l-4.46,-2.79l-1.87,-1.52l-0.94,-1.91l0.33,-0.6l-0.01,-0.31l-2.11,-3.33l-2.46,-4.66l-2.36,-5.02l-1.04,-1.18l-0.77,-1.81l-0.08,-0.11l-1.95,-1.64l-1.54,-0.88l0.61,-0.85l0.02,-0.31l-1.15,-2.27l0.69,-1.56l1.59,-1.26l0.12,0.42l-0.56,0.47l-0.11,0.25l0.07,0.92l0.36,0.27l0.97,-0.19l0.85,0.23l0.99,1.19l0.41,0.05l1.42,-1.03l0.11,-0.16l0.46,-1.64l1.45,-2.06l2.92,-0.96l0.11,-0.07l2.73,-2.62l0.84,-1.72l0.02,-0.18l-0.3,-1.65l0.28,-0.1l1.49,1.06l0.77,1.14l0.1,0.09l1.08,0.6l1.43,2.55l0.21,0.15l1.86,0.31l0.18,-0.03l1.25,-0.6l0.77,0.37l0.17,0.03l1.4,-0.2l1.57,0.96l-1.45,2.29l0.23,0.46l0.63,0.05l0.66,0.7l-1.51,-0.08l-0.24,0.1l-0.27,0.31l-1.96,0.46l-2.95,1.74l-0.14,0.21l-0.17,1.1l-0.6,0.82l-0.05,0.23l0.21,1.13l-1.31,0.63l-0.17,0.27l0.0,0.91l-0.53,0.37l-0.1,0.37l1.04,2.27l1.31,1.46l-0.44,0.9l0.24,0.43l1.52,0.13l0.87,1.23l0.24,0.13l2.21,0.07l0.18,-0.06l1.55,-1.13l-0.14,3.22l0.23,0.3l1.14,0.29l0.16,-0.0l1.18,-0.36l1.97,3.71l-0.45,0.71l-0.04,0.14l-0.12,1.8l-0.05,2.07l-0.92,1.2l-0.03,0.31l0.38,0.8l-0.48,0.72l-0.02,0.3l1.01,2.02l-1.5,2.64Z",\n "name": "Peru"\n },\n "PK": {\n "path": "M609.08,187.76l1.66,1.21l0.71,2.11l0.2,0.19l3.62,1.01l-1.98,1.95l-2.65,0.4l-3.75,-0.68l-0.26,0.08l-1.23,1.22l-0.07,0.31l0.89,2.46l0.88,1.92l0.1,0.12l1.67,1.14l-1.8,1.35l-0.12,0.25l0.04,1.85l-2.35,2.67l-1.59,2.79l-2.5,2.72l-2.76,-0.2l-0.24,0.09l-2.76,2.83l0.04,0.45l1.54,1.13l0.27,1.94l0.09,0.17l1.34,1.29l0.4,1.83l-5.14,-0.01l-0.22,0.09l-1.53,1.63l-1.52,-0.56l-0.76,-1.88l-1.93,-2.03l-0.25,-0.09l-4.6,0.5l-4.05,0.05l-3.1,0.33l0.77,-2.53l3.48,-1.33l0.19,-0.33l-0.21,-1.24l-0.19,-0.23l-1.01,-0.37l-0.06,-2.18l-0.17,-0.26l-2.32,-1.16l-0.96,-1.57l-0.56,-0.65l3.16,1.05l0.14,0.01l2.45,-0.4l1.44,0.33l0.3,-0.1l0.4,-0.47l1.58,0.22l0.14,-0.01l3.25,-1.14l0.2,-0.27l0.08,-2.23l1.23,-1.38l1.73,0.0l0.28,-0.2l0.22,-0.61l1.68,-0.32l0.86,0.24l0.27,-0.05l0.98,-0.78l0.11,-0.26l-0.13,-1.57l0.96,-1.52l1.51,-0.67l0.14,-0.41l-0.74,-1.4l1.86,0.07l0.26,-0.13l0.69,-1.01l0.05,-0.2l-0.09,-0.94l1.14,-1.09l0.09,-0.28l-0.29,-1.41l-0.51,-1.07l1.23,-1.05l2.6,-0.58l2.86,-0.33l1.33,-0.54l1.3,-0.29Z",\n "name": "Pakistan"\n },\n "PH": {\n "path": "M737.11,263.82l0.25,1.66l0.14,1.34l-0.54,1.46l-0.64,-1.79l-0.5,-0.1l-1.17,1.28l-0.05,0.32l0.74,1.71l-0.49,0.81l-2.6,-1.28l-0.61,-1.57l0.68,-1.07l-0.07,-0.4l-1.59,-1.19l-0.42,0.06l-0.69,0.91l-1.01,-0.08l-0.21,0.06l-1.58,1.2l-0.17,-0.3l0.87,-1.88l1.48,-0.66l1.18,-0.81l0.71,0.92l0.34,0.1l1.9,-0.69l0.18,-0.18l0.34,-0.94l1.57,-0.06l0.29,-0.32l-0.1,-1.38l1.41,0.83l0.36,2.06ZM734.94,254.42l0.56,2.24l-1.41,-0.49l-0.4,0.3l0.07,0.94l0.51,1.3l-0.54,0.26l-0.08,-1.34l-0.25,-0.28l-0.56,-0.1l-0.23,-0.91l1.03,0.14l0.34,-0.31l-0.03,-0.96l-0.06,-0.18l-1.14,-1.44l1.62,0.04l0.57,0.78ZM724.68,238.33l1.48,0.71l0.33,-0.04l0.44,-0.38l0.05,0.13l-0.37,0.97l0.01,0.23l0.81,1.75l-0.59,1.92l-1.37,0.79l-0.14,0.2l-0.39,2.07l0.01,0.14l0.56,2.04l0.23,0.21l1.33,0.28l0.14,-0.0l1.0,-0.27l2.82,1.28l-0.2,1.16l0.12,0.29l0.66,0.5l-0.13,0.56l-1.54,-0.99l-0.89,-1.29l-0.49,0.0l-0.44,0.65l-1.34,-1.28l-0.26,-0.08l-2.18,0.36l-0.96,-0.44l0.09,-0.72l0.69,-0.57l-0.01,-0.47l-0.75,-0.59l-0.47,0.14l-0.15,0.43l-0.86,-1.02l-0.34,-1.02l-0.07,-1.74l0.49,0.41l0.49,-0.21l0.26,-3.99l0.73,-2.1l1.23,0.0ZM731.12,258.92l-0.82,0.75l-0.83,1.64l-0.52,0.5l-1.17,-1.33l0.36,-0.47l0.62,-0.7l0.07,-0.15l0.24,-1.35l0.73,-0.08l-0.31,1.29l0.16,0.34l0.37,-0.09l1.21,-1.6l-0.12,1.24ZM726.66,255.58l0.85,0.45l0.14,0.03l1.28,-0.0l-0.03,0.62l-1.04,0.96l-1.15,0.55l-0.05,-0.71l0.17,-1.26l-0.01,-0.13l-0.16,-0.51ZM724.92,252.06l-0.45,1.5l-0.7,-0.83l-0.95,-1.43l1.44,0.06l0.67,0.7ZM717.48,261.28l-1.87,1.35l0.21,-0.3l1.81,-1.57l1.5,-1.75l0.97,-1.84l0.23,1.08l-1.56,1.33l-1.29,1.7Z",\n "name": "Philippines"\n },\n "PL": {\n "path": "M458.8,144.25l-0.96,-1.98l0.18,-1.06l-0.01,-0.15l-0.62,-1.8l-0.82,-1.11l0.56,-0.73l0.05,-0.28l-0.51,-1.51l1.48,-0.87l3.88,-1.58l3.06,-1.14l2.23,0.52l0.15,0.66l0.29,0.23l2.4,0.04l3.11,0.39l4.56,-0.05l1.12,0.32l0.51,0.89l0.1,1.45l0.03,0.12l0.66,1.23l-0.01,1.08l-1.33,0.61l-0.14,0.41l0.74,1.5l0.07,1.53l1.22,2.79l-0.19,0.66l-1.09,0.33l-0.14,0.09l-2.27,2.72l-0.04,0.31l0.35,0.8l-2.22,-1.16l-0.21,-0.02l-1.72,0.44l-1.1,-0.31l-0.21,0.02l-1.3,0.61l-1.11,-1.02l-0.32,-0.05l-0.81,0.35l-1.15,-1.61l-0.21,-0.12l-1.65,-0.17l-0.19,-0.82l-0.23,-0.23l-1.72,-0.37l-0.34,0.17l-0.25,0.56l-0.88,-0.44l0.12,-0.69l-0.25,-0.35l-1.78,-0.27l-1.08,-0.97Z",\n "name": "Poland"\n },\n "ZM": {\n "path": "M502.81,308.32l1.09,1.04l0.58,1.94l-0.39,0.66l-0.5,2.05l-0.0,0.14l0.45,1.95l-0.69,0.77l-0.06,0.11l-0.76,2.37l0.15,0.36l0.62,0.31l-6.85,1.9l-0.22,0.33l0.2,1.54l-1.62,0.3l-0.12,0.05l-1.43,1.02l-0.11,0.15l-0.25,0.73l-0.73,0.17l-0.14,0.08l-2.18,2.12l-1.33,1.6l-0.65,0.05l-0.83,-0.29l-2.75,-0.28l-0.24,-0.1l-0.15,-0.27l-0.99,-0.58l-0.12,-0.04l-1.73,-0.14l-1.88,0.54l-1.5,-1.48l-1.61,-2.01l0.11,-7.73l4.92,0.03l0.29,-0.37l-0.19,-0.79l0.34,-0.86l0.0,-0.21l-0.41,-1.11l0.26,-1.14l-0.01,-0.16l-0.12,-0.36l0.18,0.01l0.1,0.56l0.31,0.25l1.14,-0.06l1.44,0.21l0.76,1.05l0.19,0.12l2.01,0.35l0.19,-0.03l1.24,-0.65l0.44,1.03l0.22,0.18l1.81,0.34l0.85,0.99l1.02,1.39l0.24,0.12l1.92,0.02l0.3,-0.32l-0.21,-2.74l-0.47,-0.23l-0.53,0.36l-1.58,-0.89l-0.51,-0.34l0.29,-2.36l0.44,-2.99l-0.03,-0.18l-0.5,-0.99l0.61,-1.38l0.53,-0.24l3.26,-0.41l0.89,0.23l1.01,0.62l1.04,0.44l1.6,0.43l1.35,0.72Z",\n "name": "Zambia"\n },\n "EE": {\n "path": "M482.19,120.88l0.23,-1.68l-0.43,-0.31l-0.75,0.37l-1.34,-1.1l-0.18,-1.75l2.92,-0.95l3.07,-0.53l2.66,0.6l2.48,-0.1l0.18,0.31l-1.65,1.96l-0.06,0.26l0.71,3.25l-0.88,0.94l-1.85,-0.01l-2.08,-1.3l-1.14,-0.47l-0.2,-0.01l-1.69,0.51Z",\n "name": "Estonia"\n },\n "EG": {\n "path": "M508.07,208.8l-0.66,1.06l-0.53,2.03l-0.64,1.32l-0.32,0.26l-1.74,-1.85l-1.77,-3.86l-0.48,-0.09l-0.26,0.25l-0.07,0.32l1.04,2.88l1.55,2.76l1.89,4.18l0.94,1.48l0.83,1.54l2.08,2.73l-0.3,0.28l-0.1,0.23l0.08,1.72l0.11,0.22l2.91,2.37l-28.78,0.0l0.0,-19.06l-0.73,-2.2l0.61,-1.59l0.0,-0.2l-0.34,-1.04l0.73,-1.08l3.13,-0.04l2.36,0.72l2.48,0.81l1.15,0.43l0.23,-0.01l1.93,-0.87l1.02,-0.78l2.08,-0.21l1.59,0.31l0.62,1.24l0.52,0.03l0.46,-0.71l1.86,0.59l1.95,0.16l0.17,-0.04l0.92,-0.52l1.48,4.24Z",\n "name": "Egypt"\n },\n "ZA": {\n "path": "M467.06,373.27l-0.13,-0.29l0.01,-1.58l-0.02,-0.12l-0.71,-1.64l0.59,-0.37l0.14,-0.26l-0.07,-2.13l-0.05,-0.15l-1.63,-2.58l-1.25,-2.31l-1.71,-3.37l0.88,-0.98l0.7,0.52l0.39,1.08l0.23,0.19l1.1,0.19l1.55,0.51l0.14,0.01l1.35,-0.2l0.11,-0.04l2.24,-1.39l0.14,-0.25l0.0,-9.4l0.16,0.09l1.39,2.38l-0.22,1.53l0.04,0.19l0.56,0.94l0.3,0.14l1.79,-0.27l0.16,-0.08l1.23,-1.18l1.17,-0.79l0.1,-0.12l0.57,-1.19l1.02,-0.52l0.9,0.28l1.16,0.73l0.14,0.05l2.04,0.13l0.13,-0.02l1.6,-0.62l0.18,-0.19l0.63,-1.93l1.18,-0.19l0.19,-0.12l0.78,-1.05l0.81,-1.71l2.18,-1.91l3.44,-1.88l0.89,0.02l1.17,0.43l0.21,-0.0l0.76,-0.29l1.07,0.21l1.15,3.55l0.63,1.82l-0.44,2.9l0.1,0.52l-0.74,-0.29l-0.18,-0.01l-0.72,0.19l-0.21,0.2l-0.22,0.74l-0.66,0.97l-0.05,0.18l0.02,0.93l0.09,0.21l1.49,1.46l0.27,0.08l1.47,-0.29l0.22,-0.18l0.43,-1.01l1.29,0.02l-0.51,1.63l-0.29,2.2l-0.59,1.12l-2.2,1.78l-1.06,1.39l-0.72,1.44l-1.39,1.93l-2.81,2.84l-1.75,1.65l-1.85,1.24l-2.55,1.06l-1.23,0.14l-0.24,0.18l-0.22,0.54l-1.27,-0.35l-0.2,0.01l-1.15,0.5l-2.62,-0.52l-0.12,0.0l-1.46,0.33l-0.98,-0.14l-0.16,0.02l-2.55,1.1l-2.11,0.44l-1.59,1.07l-0.93,0.06l-0.97,-0.92l-0.19,-0.08l-0.72,-0.04l-1.0,-1.16l-0.25,0.05ZM493.72,359.24l-1.12,-0.86l-0.31,-0.03l-1.23,0.59l-1.36,1.07l-1.39,1.78l0.01,0.38l1.88,2.11l0.31,0.09l0.9,-0.27l0.18,-0.15l0.4,-0.77l1.28,-0.39l0.18,-0.16l0.42,-0.88l0.76,-1.32l-0.05,-0.37l-0.87,-0.82Z",\n "name": "South Africa"\n },\n "EC": {\n "path": "M220.2,293.48l1.25,-1.76l0.02,-0.31l-0.54,-1.09l-0.5,-0.06l-0.78,0.94l-1.03,-0.75l0.33,-0.46l0.05,-0.23l-0.38,-2.04l0.66,-0.28l0.17,-0.19l0.45,-1.52l0.93,-1.58l0.04,-0.2l-0.13,-0.78l1.19,-0.47l1.57,-0.91l2.35,1.34l0.17,0.04l0.28,-0.02l0.52,0.91l0.21,0.15l2.12,0.35l0.2,-0.03l0.55,-0.31l1.08,0.73l0.97,0.54l0.31,1.67l-0.71,1.49l-2.64,2.54l-2.95,0.97l-0.15,0.11l-1.53,2.18l-0.49,1.68l-1.1,0.8l-0.87,-1.05l-0.15,-0.1l-1.01,-0.27l-0.13,-0.0l-0.7,0.14l-0.03,-0.43l0.6,-0.5l0.1,-0.31l-0.26,-0.91Z",\n "name": "Ecuador"\n },\n "AL": {\n "path": "M470.27,171.7l0.38,0.19l0.45,-0.18l0.4,0.61l0.11,0.1l0.46,0.24l0.13,0.87l-0.3,0.95l-0.0,0.17l0.36,1.28l0.12,0.17l0.9,0.63l-0.03,0.44l-0.67,0.35l-0.16,0.22l-0.14,0.88l-0.96,1.18l-0.06,-0.03l-0.04,-0.48l-0.12,-0.22l-1.28,-0.92l-0.19,-1.25l0.2,-1.96l0.33,-0.89l-0.06,-0.3l-0.36,-0.41l-0.13,-0.75l0.66,-0.9Z",\n "name": "Albania"\n },\n "AO": {\n "path": "M461.62,299.93l0.55,1.67l0.73,1.54l1.56,2.18l0.28,0.12l1.66,-0.2l0.81,-0.34l1.28,0.33l0.33,-0.14l0.39,-0.67l0.56,-1.3l1.37,-0.09l0.27,-0.21l0.07,-0.23l0.67,-0.01l-0.13,0.53l0.29,0.37l2.74,-0.02l0.04,1.29l0.03,0.13l0.46,0.87l-0.35,1.52l0.18,1.55l0.07,0.16l0.75,0.85l-0.13,2.89l0.41,0.29l0.56,-0.21l1.11,0.05l1.5,-0.37l0.9,0.12l0.18,0.53l-0.27,1.15l0.01,0.17l0.4,1.08l-0.33,0.85l-0.01,0.18l0.12,0.51l-4.83,-0.03l-0.3,0.3l-0.12,8.13l0.07,0.19l1.69,2.1l1.27,1.25l-4.03,0.92l-5.93,-0.36l-1.66,-1.19l-0.18,-0.06l-10.15,0.11l-0.34,0.13l-1.35,-1.05l-0.17,-0.06l-1.62,-0.08l-1.6,0.45l-0.88,0.36l-0.17,-1.2l0.34,-2.19l0.85,-2.32l0.14,-1.13l0.79,-2.24l0.57,-1.0l1.42,-1.64l0.82,-1.15l0.05,-0.13l0.26,-1.88l-0.13,-1.51l-0.07,-0.16l-0.72,-0.87l-1.23,-2.91l0.09,-0.37l0.73,-0.95l0.05,-0.27l-1.27,-4.12l-1.19,-1.54l0.1,-0.2l0.86,-0.28l0.78,0.03l0.83,-0.29l7.12,0.03ZM451.81,298.94l-0.17,0.07l-0.5,-1.42l0.85,-0.92l0.53,-0.29l0.48,0.44l-0.56,0.32l-0.1,0.1l-0.41,0.65l-0.05,0.14l-0.07,0.91Z",\n "name": "Angola"\n },\n "KZ": {\n "path": "M598.42,172.08l-1.37,0.54l-3.3,2.09l-0.11,0.12l-1.01,1.97l-0.56,0.01l-0.6,-1.24l-0.26,-0.17l-2.95,-0.09l-0.46,-2.22l-0.29,-0.24l-0.91,-0.02l0.17,-2.72l-0.12,-0.26l-3.0,-2.22l-0.2,-0.06l-4.29,0.24l-2.8,0.42l-2.36,-2.7l-6.4,-3.65l-0.23,-0.03l-6.45,1.83l-0.22,0.29l0.1,10.94l-0.84,0.1l-1.65,-2.21l-0.11,-0.09l-1.69,-0.84l-0.2,-0.02l-2.84,0.63l-0.14,0.07l-0.71,0.64l-0.02,-0.11l0.57,-1.17l0.0,-0.26l-0.48,-1.05l-0.17,-0.16l-2.78,-0.99l-1.08,-2.62l-0.13,-0.15l-1.24,-0.7l-0.04,-0.48l2.07,0.25l0.34,-0.29l0.09,-2.03l1.84,-0.44l2.12,0.45l0.36,-0.25l0.45,-3.04l-0.45,-2.06l-0.31,-0.23l-2.44,0.15l-2.07,-0.75l-0.23,0.01l-2.88,1.38l-2.21,0.62l-0.96,-0.38l0.22,-1.39l-0.06,-0.23l-1.6,-2.12l-0.25,-0.12l-1.72,0.08l-1.87,-1.91l1.33,-2.24l-0.06,-0.38l-0.55,-0.5l1.72,-3.08l2.3,1.7l0.48,-0.2l0.29,-2.26l4.99,-3.48l3.76,-0.08l5.46,2.27l2.96,1.33l0.26,-0.01l2.59,-1.36l3.82,-0.06l3.13,1.67l0.38,-0.09l0.63,-0.85l3.36,0.14l0.29,-0.19l0.63,-1.57l-0.13,-0.37l-3.64,-2.05l2.0,-1.36l0.1,-0.38l-0.32,-0.62l2.09,-0.76l0.13,-0.47l-1.65,-2.13l0.89,-0.91l9.27,-1.18l0.13,-0.05l1.17,-0.82l6.2,-1.27l2.26,-1.43l4.19,0.7l0.74,3.39l0.38,0.22l2.52,-0.81l2.9,1.06l-0.18,1.63l0.32,0.33l2.52,-0.23l5.0,-2.58l0.03,0.39l3.16,2.62l5.57,8.48l0.49,0.02l1.18,-1.53l3.22,1.78l0.21,0.03l3.5,-0.83l1.21,0.52l1.16,1.82l0.15,0.12l1.67,0.61l1.01,1.32l0.28,0.11l3.04,-0.41l1.1,1.64l-1.68,1.89l-1.97,0.28l-0.26,0.29l-0.12,3.09l-1.2,1.23l-4.81,-1.01l-0.35,0.2l-1.77,5.51l-1.14,0.62l-4.92,1.23l-0.2,0.41l2.14,5.06l-1.45,0.67l-0.17,0.31l0.15,1.28l-1.05,-0.3l-1.21,-1.04l-0.17,-0.07l-3.73,-0.32l-4.15,-0.08l-0.92,0.31l-3.46,-1.24l-0.22,0.01l-1.42,0.63l-0.17,0.21l-0.32,1.49l-3.82,-0.97l-0.15,0.0l-1.65,0.43l-0.2,0.17l-0.51,1.21Z",\n "name": "Kazakhstan"\n },\n "ET": {\n "path": "M516.0,247.63l1.21,0.92l0.3,0.04l1.3,-0.53l0.46,0.41l0.19,0.08l1.65,0.03l2.05,0.96l0.67,0.88l1.07,0.79l1.0,1.45l0.7,0.68l-0.72,0.92l-0.85,1.19l-0.04,0.25l0.19,0.67l0.04,0.74l0.29,0.28l1.4,0.04l0.55,-0.15l0.23,0.19l-0.41,0.67l0.01,0.32l0.92,1.39l0.93,1.23l0.99,0.94l0.1,0.06l8.19,2.99l1.51,0.01l-6.51,6.95l-3.14,0.11l-0.18,0.06l-2.15,1.71l-1.51,0.04l-0.22,0.1l-0.6,0.69l-1.46,-0.0l-0.93,-0.78l-0.32,-0.04l-2.29,1.05l-0.12,0.1l-0.64,0.9l-1.44,-0.17l-0.51,-0.26l-0.17,-0.03l-0.56,0.07l-0.68,-0.02l-3.1,-2.08l-0.17,-0.05l-1.62,0.0l-0.68,-0.65l0.0,-1.28l-0.21,-0.29l-1.19,-0.38l-1.42,-2.63l-0.13,-0.12l-1.05,-0.53l-0.46,-1.0l-1.27,-1.23l-0.17,-0.08l-1.08,-0.13l0.53,-0.9l1.17,-0.05l0.26,-0.17l0.37,-0.77l0.03,-0.14l-0.03,-2.23l0.7,-2.49l1.08,-0.65l0.14,-0.19l0.24,-1.0l1.03,-1.85l1.47,-1.22l0.09,-0.12l1.02,-2.51l0.36,-1.96l2.62,0.48l0.33,-0.18l0.63,-1.55Z",\n "name": "Ethiopia"\n },\n "ZW": {\n "path": "M498.95,341.2l-1.16,-0.23l-0.16,0.01l-0.74,0.28l-1.11,-0.41l-1.02,-0.04l-1.52,-1.13l-0.12,-0.05l-1.79,-0.37l-0.65,-1.46l-0.01,-0.86l-0.22,-0.29l-0.99,-0.26l-2.74,-2.77l-0.77,-1.46l-0.52,-0.5l-0.72,-1.54l2.24,0.23l0.78,0.28l0.12,0.02l0.85,-0.06l0.21,-0.11l1.38,-1.66l2.11,-2.05l0.81,-0.18l0.22,-0.2l0.27,-0.8l1.29,-0.93l1.53,-0.28l0.11,0.66l0.3,0.25l2.02,-0.05l1.04,0.48l0.5,0.59l0.18,0.1l1.13,0.18l1.11,0.7l0.01,3.06l-0.49,1.82l-0.11,1.94l0.03,0.16l0.35,0.68l-0.24,1.3l-0.27,0.17l-0.12,0.15l-0.64,1.83l-2.49,2.8Z",\n "name": "Zimbabwe"\n },\n "ES": {\n "path": "M398.67,172.8l0.09,-1.45l-0.06,-0.2l-0.82,-1.05l3.16,-1.96l3.01,0.54l3.33,-0.02l2.64,0.52l2.14,-0.15l3.9,0.1l0.91,1.08l0.14,0.09l4.61,1.38l0.26,-0.04l0.77,-0.55l2.66,1.29l0.17,0.03l2.59,-0.35l0.1,1.28l-2.2,1.85l-3.13,0.62l-0.23,0.23l-0.21,0.92l-1.54,1.68l-0.97,2.4l0.02,0.26l0.85,1.46l-1.27,1.14l-0.09,0.14l-0.5,1.73l-1.73,0.53l-0.15,0.1l-1.68,2.1l-3.03,0.04l-2.38,-0.05l-0.17,0.05l-1.57,1.01l-0.9,1.01l-0.96,-0.19l-0.82,-0.86l-0.69,-1.6l-0.22,-0.18l-2.14,-0.41l-0.13,-0.62l0.83,-0.97l0.39,-0.86l-0.06,-0.33l-0.73,-0.73l0.63,-1.74l-0.02,-0.25l-0.8,-1.41l0.69,-0.15l0.23,-0.27l0.09,-1.29l0.33,-0.36l0.08,-0.2l0.03,-2.16l1.03,-0.72l0.1,-0.37l-0.7,-1.5l-0.25,-0.17l-1.46,-0.11l-0.22,0.07l-0.34,0.3l-1.17,0.0l-0.55,-1.29l-0.39,-0.16l-1.02,0.44l-0.45,0.36Z",\n "name": "Spain"\n },\n "ER": {\n "path": "M527.15,253.05l-0.77,-0.74l-1.01,-1.47l-1.14,-0.86l-0.62,-0.84l-0.11,-0.09l-2.18,-1.02l-0.12,-0.03l-1.61,-0.03l-0.52,-0.46l-0.31,-0.05l-1.31,0.54l-1.38,-1.06l-0.46,0.12l-0.69,1.68l-2.49,-0.46l-0.2,-0.76l1.06,-3.69l0.24,-1.65l0.66,-0.66l1.76,-0.4l0.16,-0.1l0.97,-1.13l1.24,2.55l0.68,2.34l0.09,0.14l1.4,1.27l3.39,2.4l1.37,1.43l2.14,2.34l0.94,0.6l-0.32,0.26l-0.85,-0.17Z",\n "name": "Eritrea"\n },\n "ME": {\n "path": "M469.05,172.9l-0.57,-0.8l-0.1,-0.09l-0.82,-0.46l0.16,-0.33l0.35,-1.57l0.72,-0.62l0.27,-0.16l0.48,0.38l0.35,0.4l0.12,0.08l0.79,0.32l0.66,0.43l-0.43,0.62l-0.28,0.11l-0.07,-0.25l-0.53,-0.1l-1.09,1.49l-0.05,0.23l0.06,0.32Z",\n "name": "Montenegro"\n },\n "MD": {\n "path": "M488.2,153.75l0.14,-0.11l1.49,-0.28l1.75,0.95l1.06,0.14l0.92,0.7l-0.15,0.9l0.15,0.31l0.8,0.46l0.33,1.2l0.09,0.14l0.72,0.66l-0.11,0.28l0.1,0.33l-0.06,0.02l-1.25,-0.08l-0.17,-0.29l-0.39,-0.12l-0.52,0.25l-0.16,0.36l0.13,0.42l-0.6,0.88l-0.43,1.03l-0.22,0.12l-0.32,-1.0l0.25,-1.34l-0.08,-1.38l-0.06,-0.17l-1.43,-1.87l-0.81,-1.36l-0.78,-0.95l-0.12,-0.09l-0.29,-0.12Z",\n "name": "Moldova"\n },\n "MG": {\n "path": "M544.77,316.45l0.64,1.04l0.6,1.62l0.4,3.04l0.63,1.21l-0.22,1.07l-0.15,0.26l-0.59,-1.05l-0.52,-0.01l-0.47,0.76l-0.04,0.23l0.46,1.84l-0.19,0.92l-0.61,0.53l-0.1,0.21l-0.16,2.15l-0.97,2.98l-1.24,3.59l-1.55,4.97l-0.96,3.67l-1.08,2.93l-1.94,0.61l-2.05,1.06l-3.2,-1.53l-0.62,-1.26l-0.18,-2.39l-0.87,-2.07l-0.22,-1.8l0.4,-1.69l1.01,-0.4l0.19,-0.28l0.01,-0.79l1.15,-1.91l0.04,-0.11l0.23,-1.66l-0.03,-0.17l-0.57,-1.21l-0.46,-1.58l-0.19,-2.25l0.82,-1.36l0.33,-1.51l1.11,-0.1l1.4,-0.53l0.9,-0.45l1.03,-0.03l0.21,-0.09l1.41,-1.45l2.12,-1.65l0.75,-1.29l0.03,-0.24l-0.17,-0.56l0.53,0.15l0.32,-0.1l1.38,-1.77l0.06,-0.18l0.04,-1.44l0.54,-0.74l0.62,0.77Z",\n "name": "Madagascar"\n },\n "MA": {\n "path": "M378.66,230.13l0.07,-0.75l0.93,-0.72l0.82,-1.37l0.04,-0.21l-0.14,-0.8l0.8,-1.74l1.33,-1.61l0.79,-0.4l0.14,-0.15l0.66,-1.55l0.08,-1.46l0.83,-1.52l1.6,-0.94l0.11,-0.11l1.56,-2.71l1.2,-0.99l2.24,-0.29l0.17,-0.08l1.95,-1.83l1.3,-0.77l2.09,-2.28l0.07,-0.26l-0.61,-3.34l0.92,-2.3l0.33,-1.44l1.52,-1.79l2.48,-1.27l1.86,-1.16l0.1,-0.11l1.67,-2.93l0.72,-1.59l1.54,0.01l1.43,1.14l0.21,0.06l2.33,-0.19l2.55,0.62l0.97,0.03l0.83,1.6l0.15,1.71l0.86,2.96l0.09,0.14l0.5,0.45l-0.31,0.73l-3.11,0.44l-0.16,0.07l-1.07,0.97l-1.36,0.23l-0.25,0.28l-0.1,1.85l-2.74,1.02l-0.14,0.11l-0.9,1.3l-1.93,0.69l-2.56,0.44l-4.04,2.01l-0.17,0.27l0.02,2.91l-0.08,0.0l-0.3,0.31l0.05,1.15l-1.25,0.07l-0.16,0.06l-0.73,0.55l-0.98,0.0l-0.85,-0.33l-0.15,-0.02l-2.11,0.29l-0.24,0.19l-0.76,1.95l-0.63,0.16l-0.21,0.19l-1.15,3.29l-3.42,2.81l-0.1,0.17l-0.81,3.57l-0.98,1.12l-0.3,0.85l-5.13,0.19Z",\n "name": "Morocco"\n },\n "UZ": {\n "path": "M587.83,186.48l0.06,-1.46l-0.19,-0.29l-3.31,-1.24l-2.57,-1.4l-1.63,-1.38l-2.79,-1.98l-1.2,-2.98l-0.12,-0.14l-0.84,-0.54l-0.18,-0.05l-2.61,0.13l-0.76,-0.48l-0.25,-2.25l-0.17,-0.24l-3.37,-1.6l-0.32,0.04l-2.08,1.73l-2.11,1.02l-0.16,0.35l0.31,1.14l-2.14,0.03l-0.09,-10.68l6.1,-1.74l6.25,3.57l2.36,2.72l0.27,0.1l2.92,-0.44l4.17,-0.23l2.78,2.06l-0.18,2.87l0.29,0.32l0.98,0.02l0.46,2.22l0.28,0.24l3.0,0.09l0.61,1.25l0.28,0.17l0.93,-0.02l0.26,-0.16l1.06,-2.06l3.21,-2.03l1.3,-0.5l0.19,0.08l-1.75,1.62l0.05,0.48l1.85,1.12l0.27,0.02l1.65,-0.69l2.4,1.27l-2.69,1.79l-1.79,-0.27l-0.89,0.06l-0.22,-0.52l0.48,-1.26l-0.34,-0.4l-3.35,0.69l-0.22,0.18l-0.78,1.87l-1.07,1.47l-1.93,-0.13l-0.29,0.16l-0.65,1.29l0.16,0.42l1.69,0.64l0.48,1.91l-1.25,2.6l-1.64,-0.53l-1.18,-0.03Z",\n "name": "Uzbekistan"\n },\n "MM": {\n "path": "M670.1,233.39l-1.46,1.11l-1.68,0.11l-0.26,0.19l-1.1,2.7l-0.95,0.42l-0.14,0.42l1.21,2.27l1.61,1.92l0.94,1.55l-0.82,1.99l-0.77,0.42l-0.13,0.39l0.64,1.35l1.62,1.97l0.26,1.32l-0.04,1.15l0.02,0.13l0.92,2.18l-1.3,2.23l-0.79,1.69l-0.1,-0.77l0.74,-1.87l-0.02,-0.26l-0.8,-1.42l0.2,-2.68l-0.06,-0.2l-0.98,-1.27l-0.8,-2.98l-0.45,-3.22l-1.11,-2.22l-0.45,-0.1l-1.64,1.28l-2.74,1.76l-1.26,-0.2l-1.27,-0.49l0.79,-2.93l0.0,-0.14l-0.52,-2.42l-1.93,-2.97l0.26,-0.8l-0.22,-0.39l-1.37,-0.31l-1.65,-1.98l-0.12,-1.5l0.41,0.19l0.42,-0.26l0.05,-1.7l1.08,-0.54l0.16,-0.34l-0.24,-1.0l0.5,-0.79l0.05,-0.15l0.08,-2.35l1.58,0.49l0.36,-0.15l1.12,-2.19l0.15,-1.34l1.35,-2.18l0.04,-0.17l-0.07,-1.35l2.97,-1.71l1.67,0.45l0.38,-0.33l-0.18,-1.46l0.7,-0.4l0.15,-0.32l-0.13,-0.72l0.94,-0.13l0.74,1.41l0.11,0.12l0.95,0.56l0.07,1.89l-0.09,2.08l-2.28,2.15l-0.09,0.19l-0.3,3.15l0.35,0.32l2.37,-0.39l0.53,2.17l0.2,0.21l1.3,0.42l-0.63,1.9l0.14,0.36l1.86,0.99l1.1,0.49l0.24,0.0l1.45,-0.6l0.04,0.51l-2.01,1.6l-0.56,0.96l-1.34,0.56Z",\n "name": "Myanmar"\n },\n "ML": {\n "path": "M390.79,248.2l0.67,-0.37l0.14,-0.18l0.36,-1.31l0.51,-0.04l1.68,0.69l0.21,0.0l1.34,-0.48l0.89,0.16l0.3,-0.13l0.29,-0.44l9.89,-0.04l0.29,-0.21l0.56,-1.8l-0.11,-0.33l-0.33,-0.24l-2.37,-22.1l3.41,-0.04l8.37,5.73l8.38,5.68l0.56,1.15l0.14,0.14l1.56,0.75l0.99,0.36l0.03,1.45l0.33,0.29l2.45,-0.22l0.01,5.52l-1.3,1.64l-0.06,0.15l-0.18,1.37l-1.99,0.36l-3.4,0.22l-0.19,0.09l-0.85,0.83l-1.48,0.09l-1.49,0.01l-0.54,-0.43l-0.26,-0.05l-1.38,0.36l-2.39,1.08l-0.13,0.12l-0.44,0.73l-1.88,1.11l-0.11,0.12l-0.3,0.57l-0.86,0.42l-1.1,-0.31l-0.28,0.07l-0.69,0.62l-0.09,0.16l-0.35,1.66l-1.93,2.04l-0.08,0.23l0.05,0.76l-0.63,0.99l-0.04,0.19l0.14,1.23l-0.81,0.29l-0.32,0.17l-0.27,-0.75l-0.39,-0.18l-0.65,0.26l-0.36,-0.04l-0.29,0.14l-0.37,0.6l-1.69,-0.02l-0.63,-0.34l-0.32,0.02l-0.12,0.09l-0.47,-0.45l0.1,-0.6l-0.09,-0.27l-0.31,-0.3l-0.33,-0.05l-0.05,0.02l0.02,-0.21l0.46,-0.59l-0.02,-0.39l-0.99,-1.02l-0.34,-0.74l-0.56,-0.56l-0.17,-0.09l-0.5,-0.07l-0.19,0.04l-0.58,0.35l-0.79,0.33l-0.65,0.51l-0.85,-0.16l-0.63,-0.59l-0.14,-0.07l-0.41,-0.08l-0.2,0.03l-0.59,0.31l-0.07,0.0l-0.1,-0.63l0.11,-0.85l-0.21,-0.98l-0.11,-0.17l-0.86,-0.66l-0.45,-1.34l-0.1,-1.36Z",\n "name": "Mali"\n },\n "MN": {\n "path": "M641.06,150.59l2.41,-0.53l4.76,-2.8l3.67,-1.49l2.06,0.96l0.12,0.03l2.5,0.05l1.59,1.45l0.19,0.08l2.47,0.12l3.59,0.81l0.27,-0.07l2.43,-2.28l0.06,-0.36l-0.93,-1.77l2.33,-3.1l2.66,1.3l2.26,0.39l2.75,0.8l0.44,2.3l0.19,0.22l3.56,1.38l0.18,0.01l2.35,-0.6l3.1,-0.42l2.4,0.41l2.37,1.52l1.49,1.63l0.23,0.1l2.29,-0.03l3.13,0.52l0.15,-0.01l2.28,-0.79l3.27,-0.53l0.11,-0.04l3.56,-2.23l1.31,0.31l1.26,1.05l0.22,0.07l2.45,-0.22l-0.98,1.96l-1.77,3.21l-0.01,0.28l0.64,1.31l0.35,0.16l1.35,-0.38l2.4,0.48l0.22,-0.04l1.78,-1.09l1.82,0.92l2.11,2.07l-0.17,0.68l-1.79,-0.31l-3.74,0.45l-1.85,0.96l-1.78,2.01l-3.74,1.18l-2.46,1.61l-2.45,-0.6l-1.42,-0.28l-0.31,0.13l-1.31,1.99l0.0,0.33l0.78,1.15l0.3,0.74l-1.58,0.93l-1.75,1.59l-2.83,1.03l-3.77,0.12l-4.05,1.05l-2.81,1.54l-0.95,-0.8l-0.19,-0.07l-2.96,0.0l-3.64,-1.8l-2.55,-0.48l-3.38,0.41l-5.13,-0.67l-2.66,0.06l-1.35,-1.65l-1.12,-2.78l-0.21,-0.18l-1.5,-0.33l-2.98,-1.89l-0.12,-0.04l-3.37,-0.43l-2.84,-0.51l-0.75,-1.13l0.93,-3.54l-0.04,-0.24l-1.73,-2.55l-0.15,-0.12l-3.52,-1.18l-1.99,-1.61l-0.54,-1.85Z",\n "name": "Mongolia"\n },\n "MK": {\n "path": "M472.73,173.87l0.08,0.01l0.32,-0.25l0.08,-0.44l1.29,-0.41l1.37,-0.28l1.03,-0.04l1.06,0.82l0.14,1.59l-0.22,0.04l-0.17,0.11l-0.32,0.4l-1.2,-0.05l-0.18,0.05l-0.9,0.61l-1.45,0.23l-0.85,-0.59l-0.3,-1.09l0.22,-0.71Z",\n "name": "Macedonia"\n },\n "MW": {\n "path": "M507.18,313.84l-0.67,1.85l-0.01,0.16l0.7,3.31l0.31,0.24l0.75,-0.03l0.78,0.71l0.99,1.75l0.2,3.03l-0.91,0.45l-0.14,0.15l-0.59,1.38l-1.24,-1.21l-0.17,-1.62l0.49,-1.12l0.02,-0.16l-0.15,-1.03l-0.13,-0.21l-0.99,-0.65l-0.26,-0.03l-0.53,0.18l-1.31,-1.12l-1.15,-0.59l0.66,-2.06l0.75,-0.84l0.07,-0.27l-0.47,-2.04l0.48,-1.94l0.4,-0.65l0.03,-0.24l-0.64,-2.15l-0.08,-0.13l-0.44,-0.42l1.34,0.26l1.25,1.73l0.67,3.3Z",\n "name": "Malawi"\n },\n "MR": {\n "path": "M390.54,247.66l-1.48,-1.58l-1.51,-1.88l-0.12,-0.09l-1.64,-0.67l-1.17,-0.74l-0.17,-0.05l-1.4,0.03l-0.12,0.03l-1.14,0.52l-1.15,-0.21l-0.26,0.08l-0.44,0.43l-0.11,-0.72l0.68,-1.29l0.31,-2.43l-0.28,-2.63l-0.29,-1.27l0.24,-1.24l-0.03,-0.2l-0.65,-1.24l-1.19,-1.05l0.32,-0.51l9.64,0.02l0.3,-0.34l-0.46,-3.71l0.51,-1.12l2.17,-0.22l0.27,-0.3l-0.08,-6.5l7.91,0.13l0.31,-0.3l0.01,-3.5l8.17,5.63l-2.89,0.04l-0.29,0.33l2.42,22.56l0.12,0.21l0.26,0.19l-0.43,1.38l-9.83,0.04l-0.25,0.13l-0.27,0.41l-0.77,-0.14l-0.15,0.01l-1.3,0.47l-1.64,-0.67l-0.14,-0.02l-0.79,0.06l-0.27,0.22l-0.39,1.39l-0.53,0.29Z",\n "name": "Mauritania"\n },\n "UG": {\n "path": "M500.74,287.17l-2.84,-0.02l-0.92,0.32l-1.37,0.71l-0.29,-0.12l0.02,-1.6l0.54,-0.89l0.04,-0.13l0.14,-1.96l0.49,-1.09l0.91,-1.24l0.97,-0.68l0.8,-0.89l-0.13,-0.49l-0.79,-0.27l0.13,-2.55l0.78,-0.52l1.45,0.51l0.18,0.01l1.97,-0.57l1.72,0.01l0.18,-0.06l1.29,-0.97l0.98,1.44l0.29,1.24l1.05,2.75l-0.84,1.68l-1.94,2.66l-0.06,0.18l0.02,2.36l-4.8,0.18Z",\n "name": "Uganda"\n },\n "MY": {\n "path": "M717.6,273.52l-1.51,0.7l-2.13,-0.41l-2.88,-0.0l-0.29,0.21l-0.84,2.77l-0.9,0.82l-0.08,0.12l-1.23,3.34l-1.81,0.47l-2.29,-0.68l-0.14,-0.01l-1.2,0.22l-0.14,0.07l-1.36,1.18l-1.47,-0.17l-0.12,0.01l-1.46,0.46l-1.51,-1.25l-0.24,-0.97l1.26,0.59l0.2,0.02l1.93,-0.47l0.22,-0.22l0.47,-1.98l0.9,-0.4l2.97,-0.54l0.17,-0.09l1.8,-1.98l1.02,-1.32l0.9,1.03l0.48,-0.04l0.43,-0.7l1.02,0.07l0.32,-0.27l0.25,-2.72l1.84,-1.67l1.23,-1.89l0.73,-0.01l1.12,1.11l0.1,0.99l0.18,0.24l1.66,0.71l1.85,0.67l-0.09,0.51l-1.45,0.11l-0.26,0.4l0.35,0.97ZM673.78,269.53l0.17,1.14l0.35,0.25l1.65,-0.3l0.18,-0.11l0.68,-0.86l0.31,0.13l1.41,1.45l0.99,1.59l0.13,1.57l-0.26,1.09l0.0,0.15l0.24,0.84l0.18,1.46l0.11,0.2l0.82,0.64l0.92,2.08l-0.03,0.52l-1.4,0.13l-2.29,-1.79l-2.86,-1.92l-0.27,-1.16l-0.07,-0.13l-1.39,-1.61l-0.33,-1.99l-0.05,-0.12l-0.84,-1.27l0.26,-1.72l-0.03,-0.18l-0.45,-0.87l0.13,-0.13l1.71,0.92Z",\n "name": "Malaysia"\n },\n "MX": {\n "path": "M133.41,213.83l0.61,0.09l0.27,-0.09l0.93,-1.01l0.08,-0.18l0.09,-1.22l-0.09,-0.23l-1.93,-1.94l-1.46,-0.77l-2.96,-5.62l-0.86,-2.1l2.44,-0.18l2.68,-0.25l-0.03,0.08l0.17,0.4l3.79,1.35l5.81,1.97l6.96,-0.02l0.3,-0.3l0.0,-0.84l3.91,0.0l0.87,0.93l1.27,0.87l1.44,1.17l0.79,1.37l0.62,1.49l0.12,0.14l1.35,0.85l2.08,0.82l0.35,-0.1l1.49,-2.04l1.81,-0.05l1.63,1.01l1.21,1.8l0.86,1.58l1.47,1.55l0.53,1.82l0.73,1.32l0.14,0.13l1.98,0.84l1.78,0.59l0.61,-0.03l-0.78,1.89l-0.45,1.96l-0.19,3.58l-0.24,1.27l0.01,0.14l0.43,1.43l0.78,1.31l0.49,1.98l0.06,0.12l1.63,1.9l0.61,1.51l0.98,1.28l0.16,0.11l2.58,0.67l0.98,1.02l0.31,0.08l2.17,-0.71l1.91,-0.26l1.87,-0.47l1.67,-0.49l1.59,-1.06l0.11,-0.14l0.6,-1.52l0.22,-2.21l0.35,-0.62l1.58,-0.64l2.59,-0.59l2.18,0.09l1.43,-0.2l0.39,0.36l-0.07,1.02l-1.28,1.48l-0.65,1.68l0.07,0.32l0.33,0.32l-0.79,2.49l-0.28,-0.3l-0.24,-0.09l-1.0,0.08l-0.24,0.15l-0.74,1.28l-0.19,-0.13l-0.28,-0.03l-0.3,0.12l-0.19,0.29l0.0,0.06l-4.34,-0.02l-0.3,0.3l-0.0,1.16l-0.83,0.0l-0.28,0.19l0.08,0.33l0.93,0.86l0.9,0.58l0.24,0.48l0.16,0.15l0.2,0.08l-0.03,0.38l-2.94,0.01l-0.26,0.15l-1.21,2.09l0.02,0.33l0.25,0.33l-0.21,0.44l-0.04,0.22l-2.42,-2.35l-1.36,-0.87l-2.04,-0.67l-0.13,-0.01l-1.4,0.19l-2.07,0.98l-1.14,0.23l-1.72,-0.66l-1.85,-0.48l-2.31,-1.16l-1.92,-0.38l-2.79,-1.18l-2.04,-1.2l-0.6,-0.66l-0.19,-0.1l-1.37,-0.15l-2.45,-0.78l-1.07,-1.18l-2.63,-1.44l-1.2,-1.56l-0.44,-0.93l0.5,-0.15l0.2,-0.39l-0.2,-0.58l0.46,-0.55l0.07,-0.19l0.01,-0.91l-0.06,-0.18l-0.81,-1.13l-0.25,-1.08l-0.86,-1.36l-2.21,-2.63l-2.53,-2.09l-1.2,-1.63l-0.11,-0.09l-2.08,-1.06l-0.34,-0.48l0.35,-1.53l-0.16,-0.34l-1.24,-0.61l-1.39,-1.23l-0.6,-1.81l-0.24,-0.2l-1.25,-0.2l-1.38,-1.35l-1.11,-1.25l-0.1,-0.76l-0.05,-0.13l-1.33,-2.04l-0.85,-2.02l0.04,-0.99l-0.14,-0.27l-1.81,-1.1l-0.2,-0.04l-0.74,0.11l-1.34,-0.72l-0.42,0.16l-0.4,1.12l-0.0,0.19l0.41,1.3l0.24,2.04l0.06,0.15l0.88,1.16l1.84,1.86l0.4,0.61l0.12,0.1l0.27,0.14l0.29,0.82l0.31,0.2l0.2,-0.02l0.43,1.51l0.09,0.14l0.72,0.65l0.51,0.91l1.58,1.4l0.8,2.42l0.77,1.23l0.66,1.19l0.13,1.34l0.28,0.27l1.08,0.08l0.92,1.1l0.83,1.08l-0.03,0.24l-0.88,0.81l-0.13,-0.0l-0.59,-1.42l-0.07,-0.11l-1.67,-1.53l-1.81,-1.28l-1.15,-0.61l0.07,-1.85l-0.38,-1.45l-0.12,-0.17l-2.91,-2.03l-0.39,0.04l-0.11,0.11l-0.42,-0.46l-0.11,-0.08l-1.49,-0.63l-1.09,-1.16Z",\n "name": "Mexico"\n },\n "VU": {\n "path": "M839.92,325.66l0.78,0.73l-0.18,0.07l-0.6,-0.8ZM839.13,322.74l0.27,1.36l-0.13,-0.06l-0.21,-0.02l-0.29,0.08l-0.22,-0.43l-0.03,-1.32l0.61,0.4Z",\n "name": "Vanuatu"\n },\n "FR": {\n "path": "M444.58,172.63l-0.68,1.92l-0.72,-0.38l-0.51,-1.79l0.43,-0.95l1.15,-0.83l0.33,2.04ZM429.71,147.03l1.77,1.57l0.26,0.07l1.16,-0.23l2.12,1.44l0.56,0.28l0.16,0.03l0.61,-0.06l1.09,0.78l0.13,0.05l3.18,0.53l-1.09,1.94l-0.3,2.16l-0.48,0.38l-1.0,-0.26l-0.37,0.32l0.07,0.66l-1.73,1.68l-0.09,0.21l-0.04,1.42l0.41,0.29l0.96,-0.4l0.67,1.07l-0.09,0.78l0.04,0.19l0.61,0.97l-0.71,0.78l-0.07,0.28l0.65,2.39l0.21,0.21l1.09,0.31l-0.2,0.95l-2.08,1.58l-4.81,-0.8l-0.13,0.01l-3.65,0.99l-0.22,0.24l-0.25,1.6l-2.59,0.35l-2.74,-1.33l-0.31,0.03l-0.79,0.57l-4.38,-1.31l-0.79,-0.94l1.16,-1.64l0.05,-0.15l0.48,-6.17l-0.06,-0.21l-2.58,-3.3l-1.89,-1.65l-0.11,-0.06l-3.64,-1.17l-0.2,-1.88l2.92,-0.63l4.14,0.82l0.35,-0.36l-0.65,-3.0l1.77,1.05l0.27,0.02l5.83,-2.54l0.17,-0.19l0.71,-2.54l1.75,-0.53l0.27,0.88l0.27,0.21l1.04,0.05l1.08,1.23ZM289.1,278.45l-0.85,0.84l-0.88,0.13l-0.25,-0.51l-0.21,-0.16l-0.56,-0.1l-0.25,0.07l-0.63,0.55l-0.62,-0.29l0.5,-0.88l0.21,-1.11l0.42,-1.05l-0.03,-0.28l-0.93,-1.42l-0.18,-1.54l1.13,-1.87l2.42,0.78l2.55,2.04l0.33,0.81l-1.4,2.16l-0.77,1.84Z",\n "name": "France"\n },\n "FI": {\n "path": "M492.26,76.42l-0.38,3.12l0.12,0.28l3.6,2.69l-2.14,2.96l-0.01,0.33l2.83,4.61l-1.61,3.36l0.03,0.31l2.15,2.87l-0.96,2.44l0.1,0.35l3.51,2.55l-0.81,1.72l-2.28,2.19l-5.28,4.79l-4.51,0.31l-4.39,1.37l-3.87,0.75l-1.34,-1.89l-0.11,-0.09l-2.23,-1.14l0.53,-3.54l-0.01,-0.14l-1.17,-3.37l1.12,-2.13l2.23,-2.44l5.69,-4.33l1.65,-0.84l0.16,-0.31l-0.26,-1.73l-0.15,-0.22l-3.4,-1.91l-0.77,-1.47l-0.07,-6.45l-0.12,-0.24l-3.91,-2.94l-3.0,-1.92l0.97,-0.76l2.6,2.17l0.21,0.07l3.2,-0.21l2.63,1.03l0.3,-0.05l2.39,-1.94l0.09,-0.13l1.18,-3.12l3.63,-1.42l2.87,1.59l-0.98,2.87Z",\n "name": "Finland"\n },\n "FJ": {\n "path": "M869.98,327.07l-1.31,0.44l-0.14,-0.41l0.96,-0.41l0.85,-0.17l1.43,-0.78l-0.16,0.65l-1.64,0.67ZM867.58,329.12l0.54,0.47l-0.31,1.0l-1.32,0.3l-1.13,-0.26l-0.17,-0.78l0.72,-0.66l0.98,0.27l0.25,-0.04l0.43,-0.29Z",\n "name": "Fiji"\n },\n "FK": {\n "path": "M268.15,427.89l2.6,-1.73l1.98,0.77l0.31,-0.05l1.32,-1.17l1.58,1.18l-0.54,0.84l-3.1,0.92l-1.0,-1.04l-0.39,-0.04l-1.9,1.35l-0.86,-1.04Z",\n "name": "Falkland Islands"\n },\n "NI": {\n "path": "M202.1,252.6l0.23,-0.0l0.12,-0.11l0.68,-0.09l0.22,-0.15l0.23,-0.43l0.2,-0.01l0.28,-0.31l-0.04,-0.97l0.29,-0.03l0.5,0.02l0.25,-0.11l0.37,-0.46l0.51,0.35l0.4,-0.06l0.23,-0.28l0.45,-0.29l0.87,-0.7l0.11,-0.21l0.02,-0.26l0.23,-0.12l0.25,-0.48l0.29,0.27l0.14,0.07l0.5,0.12l0.22,-0.03l0.48,-0.28l0.66,-0.02l0.87,-0.33l0.36,-0.32l0.21,0.01l-0.11,0.48l0.0,0.14l0.22,0.8l-0.54,0.85l-0.27,1.03l-0.09,1.18l0.14,0.72l0.05,0.95l-0.24,0.15l-0.13,0.19l-0.23,1.09l0.0,0.14l0.14,0.53l-0.42,0.53l-0.06,0.24l0.12,0.69l0.08,0.15l0.18,0.19l-0.26,0.23l-0.49,-0.11l-0.35,-0.44l-0.16,-0.1l-0.79,-0.21l-0.23,0.03l-0.45,0.26l-1.51,-0.62l-0.31,0.05l-0.17,0.15l-1.81,-1.62l-0.6,-0.9l-1.04,-0.79l-0.77,-0.71Z",\n "name": "Nicaragua"\n },\n "NL": {\n "path": "M436.22,136.65l1.82,0.08l0.36,0.89l-0.6,2.96l-0.53,1.06l-1.32,0.0l-0.3,0.34l0.35,2.89l-0.83,-0.47l-1.56,-1.43l-0.29,-0.07l-2.26,0.67l-1.02,-0.15l0.68,-0.48l0.1,-0.12l2.14,-4.84l3.25,-1.35Z",\n "name": "Netherlands"\n },\n "NO": {\n "path": "M491.45,67.31l7.06,3.0l-2.52,0.94l-0.11,0.49l2.43,2.49l-3.82,1.59l-1.48,0.3l0.89,-2.61l-0.14,-0.36l-3.21,-1.78l-0.25,-0.02l-3.89,1.52l-0.17,0.17l-1.2,3.17l-2.19,1.78l-2.53,-0.99l-0.13,-0.02l-3.15,0.21l-2.69,-2.25l-0.38,-0.01l-1.43,1.11l-1.47,0.17l-0.26,0.26l-0.33,2.57l-4.42,-0.65l-0.33,0.22l-0.6,2.19l-2.17,-0.01l-0.27,0.16l-4.15,7.68l-3.88,5.76l-0.0,0.33l0.81,1.23l-0.7,1.27l-2.3,-0.06l-0.28,0.18l-1.63,3.72l-0.02,0.13l0.15,5.17l0.07,0.18l1.51,1.84l-0.79,4.24l-2.04,2.5l-0.92,1.75l-1.39,-1.88l-0.44,-0.05l-4.89,4.21l-3.16,0.81l-3.24,-1.74l-0.86,-3.82l-0.78,-8.6l2.18,-2.36l6.56,-3.28l5.0,-4.16l4.63,-5.74l5.99,-8.09l4.17,-3.23l6.84,-5.49l5.39,-1.92l4.06,0.24l0.23,-0.09l3.72,-3.67l4.51,0.19l4.4,-0.89ZM484.58,19.95l4.42,1.82l-3.25,2.68l-7.14,0.65l-7.16,-0.91l-0.39,-1.37l-0.28,-0.22l-3.48,-0.1l-2.25,-2.15l7.09,-1.48l3.55,1.36l0.28,-0.03l2.42,-1.66l6.18,1.41ZM481.99,33.92l-4.73,1.85l-3.76,-1.06l1.27,-1.02l0.04,-0.43l-1.18,-1.35l4.46,-0.94l0.89,1.83l0.17,0.15l2.83,0.96ZM466.5,23.95l7.64,3.87l-5.63,1.94l-0.19,0.19l-1.35,3.88l-2.08,0.96l-0.16,0.19l-1.14,4.18l-2.71,0.18l-4.94,-2.95l1.95,-1.63l-0.08,-0.51l-3.7,-1.54l-4.79,-4.54l-1.78,-4.01l6.29,-1.88l1.25,1.81l0.25,0.13l3.57,-0.08l0.26,-0.17l0.87,-1.79l3.41,-0.18l3.08,1.94Z",\n "name": "Norway"\n },\n "NA": {\n "path": "M461.88,357.98l-1.61,-1.77l-0.94,-1.9l-0.54,-2.58l-0.62,-1.95l-0.83,-4.05l-0.06,-3.13l-0.33,-1.5l-0.07,-0.14l-0.95,-1.06l-1.27,-2.12l-1.3,-3.1l-0.59,-1.71l-1.98,-2.46l-0.13,-1.67l0.99,-0.4l1.44,-0.42l1.48,0.07l1.42,1.11l0.31,0.03l0.32,-0.15l9.99,-0.11l1.66,1.18l0.16,0.06l6.06,0.37l4.69,-1.06l2.01,-0.57l1.5,0.14l0.63,0.37l-1.0,0.41l-0.7,0.01l-0.16,0.05l-1.38,0.88l-0.79,-0.88l-0.29,-0.09l-3.83,0.9l-1.84,0.08l-0.29,0.3l-0.07,8.99l-2.18,0.08l-0.29,0.3l-0.0,17.47l-2.04,1.27l-1.21,0.18l-1.51,-0.49l-0.99,-0.18l-0.36,-1.0l-0.1,-0.14l-0.99,-0.74l-0.4,0.04l-0.98,1.09Z",\n "name": "Namibia"\n },\n "NC": {\n "path": "M835.87,338.68l2.06,1.63l1.01,0.94l-0.49,0.32l-1.21,-0.62l-1.76,-1.16l-1.58,-1.36l-1.61,-1.79l-0.16,-0.41l0.54,0.02l1.32,0.83l1.08,0.87l0.79,0.73Z",\n "name": "New Caledonia"\n },\n "NE": {\n "path": "M426.67,254.17l0.03,-1.04l-0.24,-0.3l-2.66,-0.53l-0.06,-1.0l-0.07,-0.17l-1.37,-1.62l-0.3,-1.04l0.15,-0.94l1.37,-0.09l0.19,-0.09l0.85,-0.83l3.34,-0.22l2.22,-0.41l0.24,-0.26l0.2,-1.5l1.32,-1.65l0.07,-0.19l-0.01,-5.74l3.4,-1.13l7.24,-5.12l8.46,-4.95l3.76,1.08l1.35,1.39l0.36,0.05l1.39,-0.77l0.55,3.66l0.12,0.2l0.82,0.6l0.03,0.69l0.1,0.21l0.87,0.74l-0.47,0.99l-0.96,5.26l-0.13,3.25l-3.08,2.34l-0.1,0.15l-1.08,3.37l0.08,0.31l0.94,0.86l-0.01,1.51l0.29,0.3l1.25,0.05l-0.14,0.66l-0.51,0.11l-0.24,0.26l-0.06,0.57l-0.04,0.0l-1.59,-2.62l-0.21,-0.14l-0.59,-0.1l-0.23,0.05l-1.83,1.33l-1.79,-0.68l-1.42,-0.17l-0.17,0.03l-0.65,0.32l-1.39,-0.07l-0.19,0.06l-1.4,1.03l-1.12,0.05l-2.97,-1.29l-0.26,0.01l-1.12,0.59l-1.08,-0.04l-0.85,-0.88l-0.11,-0.07l-2.51,-0.95l-0.14,-0.02l-2.69,0.3l-0.16,0.07l-0.65,0.55l-0.1,0.16l-0.34,1.41l-0.69,0.98l-0.05,0.15l-0.13,1.72l-1.47,-1.13l-0.18,-0.06l-0.9,0.01l-0.2,0.08l-0.32,0.28Z",\n "name": "Niger"\n },\n "NG": {\n "path": "M442.0,272.7l-2.4,0.83l-0.88,-0.12l-0.19,0.04l-0.89,0.52l-1.78,-0.05l-1.23,-1.44l-0.88,-1.87l-1.77,-1.66l-0.21,-0.08l-3.78,0.03l0.13,-3.75l-0.06,-1.58l0.44,-1.47l0.74,-0.75l1.21,-1.56l0.04,-0.29l-0.22,-0.56l0.44,-0.9l0.01,-0.24l-0.54,-1.44l0.26,-2.97l0.72,-1.06l0.33,-1.37l0.51,-0.43l2.53,-0.28l2.38,0.9l0.89,0.91l0.2,0.09l1.28,0.04l0.15,-0.03l1.06,-0.56l2.9,1.26l0.13,0.02l1.28,-0.06l0.16,-0.06l1.39,-1.02l1.36,0.07l0.15,-0.03l0.64,-0.32l1.22,0.13l1.9,0.73l0.28,-0.04l1.86,-1.35l0.33,0.06l1.62,2.67l0.29,0.14l0.32,-0.04l0.73,0.74l-0.19,0.37l-0.12,0.74l-2.03,1.89l-0.07,0.11l-0.66,1.62l-0.35,1.28l-0.48,0.51l-0.07,0.12l-0.48,1.67l-1.26,0.98l-0.1,0.15l-0.38,1.24l-0.58,1.07l-0.2,0.91l-1.43,0.7l-1.26,-0.93l-0.19,-0.06l-0.95,0.04l-0.2,0.09l-1.41,1.39l-0.61,0.02l-0.26,0.17l-1.19,2.42l-0.61,1.67Z",\n "name": "Nigeria"\n },\n "NZ": {\n "path": "M857.9,379.62l1.85,3.1l0.33,0.14l0.22,-0.28l0.04,-1.41l0.57,0.4l0.35,2.06l0.17,0.22l2.02,0.94l1.78,0.26l0.22,-0.06l1.31,-1.01l0.84,0.22l-0.53,2.27l-0.67,1.5l-1.71,-0.05l-0.25,0.12l-0.67,0.89l-0.05,0.23l0.21,1.15l-0.31,0.46l-2.15,3.57l-1.6,0.99l-0.28,-0.51l-0.15,-0.13l-0.72,-0.3l1.27,-2.15l0.01,-0.29l-0.82,-1.63l-0.15,-0.14l-2.5,-1.09l0.05,-0.69l1.67,-0.94l0.15,-0.21l0.42,-2.24l-0.11,-1.95l-0.03,-0.12l-0.97,-1.85l0.05,-0.41l-0.09,-0.25l-1.18,-1.17l-1.94,-2.49l-0.86,-1.64l0.38,-0.09l1.24,1.43l0.12,0.08l1.81,0.68l0.67,2.39ZM853.93,393.55l0.57,1.24l0.44,0.12l1.51,-1.03l0.52,0.91l0.0,1.09l-0.88,1.31l-1.62,2.2l-1.26,1.2l-0.05,0.38l0.64,1.02l-1.4,0.03l-0.14,0.04l-2.14,1.16l-0.14,0.17l-0.67,2.0l-1.38,3.06l-3.07,2.19l-2.12,-0.06l-1.55,-0.99l-0.14,-0.05l-2.53,-0.2l-0.31,-0.84l1.25,-2.15l3.07,-2.97l1.62,-0.59l1.81,-1.17l2.18,-1.63l1.55,-1.65l1.08,-2.18l0.9,-0.72l0.11,-0.17l0.35,-1.56l1.37,-1.07l0.4,0.91Z",\n "name": "New Zealand"\n },\n "NP": {\n "path": "M641.26,213.53l-0.14,0.95l0.32,1.64l-0.21,0.78l-1.83,0.04l-2.98,-0.62l-1.86,-0.25l-1.37,-1.3l-0.18,-0.08l-3.38,-0.34l-3.21,-1.49l-2.38,-1.34l-2.16,-0.92l0.84,-2.2l1.51,-1.18l0.89,-0.57l1.83,0.77l2.5,1.76l1.39,0.41l0.78,1.21l0.17,0.13l1.91,0.53l2.0,1.17l2.92,0.66l2.63,0.24Z",\n "name": "Nepal"\n },\n "CI": {\n "path": "M413.53,272.08l-0.83,0.02l-1.79,-0.49l-1.64,0.03l-3.04,0.46l-1.73,0.72l-2.4,0.89l-0.12,-0.02l0.16,-1.7l0.19,-0.25l0.06,-0.2l-0.08,-0.99l-0.09,-0.19l-1.06,-1.05l-0.15,-0.08l-0.71,-0.15l-0.51,-0.48l0.45,-0.92l0.02,-0.19l-0.24,-1.16l0.07,-0.43l0.14,-0.0l0.3,-0.26l0.15,-1.1l-0.02,-0.15l-0.13,-0.34l0.09,-0.13l0.83,-0.27l0.19,-0.37l-0.62,-2.02l-0.55,-1.0l0.14,-0.59l0.35,-0.14l0.24,-0.16l0.53,0.29l0.14,0.04l1.93,0.02l0.26,-0.14l0.36,-0.58l0.39,0.01l0.43,-0.17l0.28,0.79l0.43,0.16l0.56,-0.31l0.89,-0.32l0.92,0.45l0.39,0.75l0.14,0.13l1.13,0.53l0.3,-0.03l0.81,-0.59l1.02,-0.08l1.49,0.57l0.62,3.33l-1.03,2.09l-0.65,2.84l0.02,0.2l1.05,2.08l-0.07,0.64Z",\n "name": "Ivory Coast"\n },\n "CH": {\n "path": "M444.71,156.27l0.05,0.3l-0.34,0.69l0.13,0.4l1.13,0.58l1.07,0.1l-0.12,0.81l-0.87,0.42l-1.75,-0.37l-0.34,0.18l-0.47,1.1l-0.86,0.07l-0.33,-0.38l-0.41,-0.04l-1.34,1.01l-1.02,0.13l-0.93,-0.58l-0.82,-1.32l-0.37,-0.12l-0.77,0.32l0.02,-0.84l1.74,-1.69l0.09,-0.25l-0.04,-0.38l0.73,0.19l0.26,-0.06l0.6,-0.48l2.02,0.02l0.24,-0.12l0.38,-0.51l2.31,0.84Z",\n "name": "Switzerland"\n },\n "CO": {\n "path": "M232.24,284.95l-0.94,-0.52l-1.22,-0.82l-0.31,-0.01l-0.62,0.35l-1.88,-0.31l-0.54,-0.95l-0.29,-0.15l-0.37,0.03l-2.34,-1.33l-0.15,-0.35l0.57,-0.11l0.24,-0.32l-0.1,-1.15l0.46,-0.71l1.11,-0.15l0.21,-0.13l1.05,-1.57l0.95,-1.31l-0.08,-0.43l-0.73,-0.47l0.4,-1.24l0.01,-0.16l-0.53,-2.15l0.44,-0.54l0.06,-0.24l-0.4,-2.13l-0.06,-0.13l-0.93,-1.22l0.21,-0.8l0.52,0.12l0.32,-0.13l0.47,-0.75l0.03,-0.27l-0.52,-1.32l0.09,-0.11l1.14,0.07l0.22,-0.08l1.82,-1.71l0.96,-0.25l0.22,-0.28l0.02,-0.81l0.43,-2.01l1.28,-1.04l1.48,-0.05l0.27,-0.19l0.12,-0.31l1.73,0.19l0.2,-0.05l1.96,-1.28l0.97,-0.56l1.16,-1.16l0.64,0.11l0.43,0.44l-0.31,0.55l-1.49,0.39l-0.19,0.16l-0.6,1.2l-0.97,0.74l-0.73,0.94l-0.06,0.13l-0.3,1.76l-0.68,1.44l0.23,0.43l1.1,0.14l0.27,0.97l0.08,0.13l0.49,0.49l0.17,0.85l-0.27,0.86l-0.01,0.14l0.09,0.53l0.2,0.23l0.52,0.18l0.54,0.79l0.27,0.13l3.18,-0.24l1.31,0.29l1.7,2.08l0.31,0.1l0.96,-0.26l1.75,0.13l1.41,-0.27l0.56,0.27l-0.36,1.07l-0.54,0.81l-0.05,0.13l-0.2,1.8l0.51,1.79l0.07,0.12l0.65,0.68l0.05,0.32l-1.16,1.14l0.05,0.47l0.86,0.52l0.6,0.79l0.31,1.01l-0.7,-0.81l-0.44,-0.01l-0.74,0.77l-4.75,-0.05l-0.3,0.31l0.03,1.57l0.25,0.29l1.2,0.21l-0.02,0.24l-0.1,-0.05l-0.22,-0.02l-1.41,0.41l-0.22,0.29l-0.01,1.82l0.11,0.23l1.04,0.85l0.35,1.3l-0.06,1.02l-1.02,6.26l-0.84,-0.89l-0.19,-0.09l-0.25,-0.02l1.35,-2.13l-0.1,-0.42l-1.92,-1.17l-0.2,-0.04l-1.41,0.2l-0.82,-0.39l-0.26,0.0l-1.29,0.62l-1.63,-0.27l-1.4,-2.5l-0.12,-0.12l-1.1,-0.61l-0.83,-1.2l-1.67,-1.19l-0.27,-0.04l-0.54,0.19Z",\n "name": "Colombia"\n },\n "CN": {\n "path": "M740.32,148.94l0.22,0.21l4.3,1.03l2.84,2.2l0.99,2.92l0.28,0.2l3.8,0.0l0.15,-0.04l2.13,-1.24l3.5,-0.8l-1.05,2.29l-0.95,1.13l-0.06,0.12l-0.85,3.41l-1.56,2.81l-2.83,-0.51l-0.19,0.03l-2.15,1.09l-0.15,0.34l0.65,2.59l-0.33,3.3l-1.03,0.07l-0.28,0.3l0.01,0.75l-1.09,-1.2l-0.48,0.05l-0.94,1.6l-3.76,1.26l-0.2,0.36l0.29,1.19l-1.67,-0.08l-1.11,-0.88l-0.42,0.05l-1.69,2.08l-2.71,1.57l-2.04,1.88l-3.42,0.84l-0.11,0.05l-1.8,1.34l-1.54,0.46l0.52,-0.53l0.06,-0.33l-0.44,-0.96l1.84,-1.84l0.02,-0.41l-1.32,-1.56l-0.36,-0.08l-2.23,1.08l-2.83,2.06l-1.52,1.85l-2.32,0.13l-0.2,0.09l-1.28,1.37l-0.03,0.37l1.32,1.97l0.18,0.13l1.83,0.43l0.07,1.08l0.18,0.26l1.98,0.84l0.3,-0.03l2.66,-1.96l2.06,1.04l0.12,0.03l1.4,0.07l0.27,1.0l-3.24,0.73l-0.17,0.11l-1.13,1.5l-2.38,1.4l-0.1,0.1l-1.29,1.99l0.1,0.42l2.6,1.5l0.97,2.72l1.52,2.56l1.66,2.08l-0.03,1.76l-1.4,0.67l-0.15,0.38l0.6,1.47l0.13,0.15l1.29,0.75l-0.35,2.0l-0.58,1.96l-1.22,0.21l-0.2,0.14l-1.83,2.93l-2.02,3.51l-2.29,3.13l-3.4,2.42l-3.42,2.18l-2.75,0.3l-0.15,0.06l-1.32,1.01l-0.68,-0.67l-0.41,-0.01l-1.37,1.27l-3.42,1.28l-2.62,0.4l-0.24,0.21l-0.8,2.57l-0.95,0.11l-0.53,-1.54l0.52,-0.89l-0.19,-0.44l-3.36,-0.84l-0.17,0.01l-1.09,0.4l-2.36,-0.64l-1.0,-0.9l0.35,-1.34l-0.23,-0.37l-2.22,-0.47l-1.15,-0.94l-0.36,-0.02l-2.08,1.37l-2.35,0.29l-1.98,-0.01l-0.13,0.03l-1.32,0.63l-1.28,0.38l-0.21,0.33l0.33,2.65l-0.78,-0.04l-0.14,-0.39l-0.07,-1.04l-0.41,-0.26l-1.72,0.71l-0.96,-0.43l-1.63,-0.86l0.65,-1.95l-0.19,-0.38l-1.43,-0.46l-0.56,-2.27l-0.34,-0.22l-2.26,0.38l0.25,-2.65l2.29,-2.15l0.09,-0.2l0.1,-2.21l-0.07,-2.09l-0.15,-0.25l-1.02,-0.6l-0.8,-1.52l-0.31,-0.16l-1.42,0.2l-2.16,-0.32l0.55,-0.74l0.01,-0.35l-1.17,-1.7l-0.41,-0.08l-1.67,1.07l-1.97,-0.63l-0.25,0.03l-2.89,1.73l-2.26,1.99l-1.82,0.3l-1.0,-0.66l-0.15,-0.05l-1.28,-0.06l-1.75,-0.61l-0.24,0.02l-1.35,0.69l-0.1,0.08l-1.2,1.45l-0.14,-1.41l-0.4,-0.25l-1.46,0.55l-2.83,-0.26l-2.77,-0.61l-1.99,-1.17l-1.91,-0.54l-0.78,-1.21l-0.17,-0.13l-1.36,-0.38l-2.54,-1.79l-2.01,-0.84l-0.28,0.02l-0.89,0.56l-3.31,-1.83l-2.35,-1.67l-0.57,-2.49l1.34,0.28l0.36,-0.28l0.08,-1.42l-0.05,-0.19l-0.93,-1.34l0.24,-2.18l-0.07,-0.22l-2.69,-3.32l-0.15,-0.1l-3.97,-1.11l-0.69,-2.05l-0.11,-0.15l-1.79,-1.3l-0.39,-0.73l-0.36,-1.57l0.08,-1.09l-0.18,-0.3l-1.52,-0.66l-0.22,-0.01l-0.51,0.18l-0.52,-2.21l0.59,-0.55l0.06,-0.35l-0.22,-0.44l2.12,-1.24l1.63,-0.55l2.58,0.39l0.31,-0.16l0.87,-1.75l3.05,-0.34l0.21,-0.12l0.84,-1.12l3.87,-1.59l0.15,-0.14l0.35,-0.68l0.03,-0.17l-0.17,-1.51l1.52,-0.7l0.15,-0.39l-2.12,-5.0l4.62,-1.15l1.35,-0.72l0.14,-0.17l1.72,-5.37l4.7,0.99l0.28,-0.08l1.39,-1.43l0.08,-0.2l0.11,-2.95l1.83,-0.26l0.18,-0.1l1.85,-2.08l0.61,-0.17l0.57,1.97l0.1,0.15l2.2,1.75l3.48,1.17l1.59,2.36l-0.93,3.53l0.04,0.24l0.9,1.35l0.2,0.13l2.98,0.53l3.32,0.43l2.97,1.89l1.49,0.35l1.08,2.67l1.52,1.88l0.24,0.11l2.74,-0.07l5.15,0.67l3.36,-0.41l2.39,0.43l3.67,1.81l0.13,0.03l2.92,-0.0l1.02,0.86l0.34,0.03l2.88,-1.59l3.98,-1.03l3.81,-0.13l3.02,-1.12l1.77,-1.61l1.73,-1.01l0.13,-0.37l-0.41,-1.01l-0.72,-1.07l1.09,-1.66l1.21,0.24l2.57,0.63l0.24,-0.04l2.46,-1.62l3.78,-1.19l0.13,-0.09l1.8,-2.03l1.66,-0.84l3.54,-0.41l1.93,0.35l0.34,-0.22l0.27,-1.12l-0.08,-0.29l-2.27,-2.22l-2.08,-1.07l-0.29,0.01l-1.82,1.12l-2.36,-0.47l-0.14,0.01l-1.18,0.34l-0.46,-0.94l1.69,-3.08l1.1,-2.21l2.75,1.12l0.26,-0.02l3.53,-2.06l0.15,-0.26l-0.02,-1.35l2.18,-3.39l1.35,-1.04l0.12,-0.24l-0.03,-1.85l-0.15,-0.25l-1.0,-0.58l1.68,-1.37l3.01,-0.59l3.25,-0.09l3.67,0.99l2.08,1.18l1.51,3.3l0.95,1.45l0.85,1.99l0.92,3.19ZM697.0,237.37l-1.95,1.12l-1.74,-0.68l-0.06,-1.9l1.08,-1.03l2.62,-0.7l1.23,0.05l0.37,0.65l-1.01,1.08l-0.54,1.4Z",\n "name": "China"\n },\n "CM": {\n "path": "M453.76,278.92l-0.26,-0.11l-0.18,-0.02l-1.42,0.31l-1.56,-0.33l-1.17,0.16l-3.7,-0.05l0.3,-1.63l-0.04,-0.21l-0.98,-1.66l-0.15,-0.13l-1.03,-0.38l-0.46,-1.01l-0.13,-0.14l-0.48,-0.27l0.02,-0.46l0.62,-1.72l1.1,-2.25l0.54,-0.02l0.2,-0.09l1.41,-1.39l0.73,-0.03l1.32,0.97l0.31,0.03l1.72,-0.85l0.16,-0.2l0.22,-1.0l0.57,-1.03l0.36,-1.18l1.26,-0.98l0.1,-0.15l0.49,-1.7l0.48,-0.51l0.07,-0.13l0.35,-1.3l0.63,-1.54l2.06,-1.92l0.09,-0.17l0.12,-0.79l0.24,-0.41l-0.04,-0.36l-0.89,-0.91l0.04,-0.45l0.28,-0.06l0.85,1.39l0.16,1.59l-0.09,1.66l0.04,0.17l1.09,1.84l-0.86,-0.02l-0.72,0.17l-1.07,-0.24l-0.34,0.17l-0.54,1.19l0.06,0.34l1.48,1.47l1.06,0.44l0.32,0.94l0.73,1.6l-0.32,0.57l-1.23,2.49l-0.54,0.41l-0.12,0.21l-0.19,1.95l0.24,1.08l-0.18,0.67l0.07,0.28l1.13,1.25l0.24,0.93l0.92,1.29l1.1,0.8l0.1,1.01l0.26,0.73l-0.12,0.93l-1.65,-0.49l-2.02,-0.66l-3.19,-0.11Z",\n "name": "Cameroon"\n },\n "CL": {\n "path": "M246.8,429.1l-1.14,0.78l-2.25,1.21l-0.16,0.23l-0.37,2.94l-0.75,0.06l-2.72,-1.07l-2.83,-2.34l-3.06,-1.9l-0.71,-1.92l0.67,-1.84l-0.02,-0.25l-1.22,-2.13l-0.31,-5.41l1.02,-2.95l2.59,-2.4l-0.13,-0.51l-3.32,-0.8l2.06,-2.4l0.07,-0.15l0.79,-4.77l2.44,0.95l0.4,-0.22l1.31,-6.31l-0.16,-0.33l-1.68,-0.8l-0.42,0.21l-0.72,3.47l-1.01,-0.27l0.74,-4.06l0.85,-5.46l1.12,-1.96l0.03,-0.22l-0.71,-2.82l-0.19,-2.94l0.76,-0.07l0.26,-0.2l1.53,-4.62l1.73,-4.52l1.07,-4.2l-0.56,-4.2l0.73,-2.2l0.01,-0.12l-0.29,-3.3l1.46,-3.34l0.45,-5.19l0.8,-5.52l0.78,-5.89l-0.18,-4.33l-0.49,-3.47l1.1,-0.56l0.13,-0.13l0.44,-0.88l0.9,1.29l0.32,1.8l0.1,0.18l1.16,0.97l-0.73,2.33l0.01,0.21l1.33,2.91l0.97,3.6l0.35,0.22l1.57,-0.31l0.16,0.34l-0.79,2.51l-2.61,1.25l-0.17,0.28l0.08,4.36l-0.48,0.79l0.01,0.33l0.6,0.84l-1.62,1.55l-1.67,2.6l-0.89,2.47l-0.02,0.13l0.23,2.56l-1.5,2.76l-0.03,0.21l1.15,4.8l0.11,0.17l0.54,0.42l-0.01,2.37l-1.4,2.7l-0.03,0.15l0.06,2.25l-1.8,1.78l-0.09,0.21l0.02,2.73l0.71,2.63l-1.33,0.94l-0.12,0.17l-0.67,2.64l-0.59,3.03l0.4,3.55l-0.84,0.51l-0.14,0.31l0.58,3.5l0.08,0.16l0.96,0.99l-0.7,1.08l0.11,0.43l1.04,0.55l0.19,0.8l-0.89,0.48l-0.16,0.31l0.26,1.77l-0.89,4.06l-1.31,2.67l-0.03,0.19l0.28,1.53l-0.73,1.88l-1.85,1.37l-0.12,0.26l0.22,3.46l0.06,0.16l0.88,1.19l0.28,0.12l1.32,-0.17l-0.04,2.13l0.04,0.15l1.04,1.95l0.24,0.16l5.94,0.44ZM248.79,430.71l0.0,7.41l0.3,0.3l2.67,0.0l1.01,0.06l-0.54,0.91l-1.99,1.01l-1.13,-0.1l-1.42,-0.27l-1.87,-1.06l-2.57,-0.49l-3.09,-1.9l-2.52,-1.83l-2.65,-2.93l0.93,0.32l3.54,2.29l3.32,1.23l0.34,-0.09l1.29,-1.57l0.83,-2.32l2.11,-1.28l1.43,0.32Z",\n "name": "Chile"\n },\n "CA": {\n "path": "M280.14,145.66l-1.66,2.88l0.06,0.37l0.37,0.03l1.5,-1.01l1.17,0.49l-0.64,0.83l0.13,0.46l2.22,0.89l0.28,-0.03l1.02,-0.7l2.09,0.83l-0.69,2.1l0.37,0.38l1.43,-0.45l0.27,1.43l0.74,1.88l-0.95,2.5l-0.88,0.09l-1.34,-0.48l0.49,-2.34l-0.14,-0.32l-0.7,-0.4l-0.36,0.04l-2.81,2.66l-0.63,-0.05l1.2,-1.01l-0.1,-0.52l-2.4,-0.77l-2.79,0.18l-4.65,-0.09l-0.22,-0.54l1.37,-0.99l0.01,-0.48l-0.82,-0.65l1.91,-1.79l2.57,-5.17l1.49,-1.81l2.04,-1.07l0.63,0.08l-0.27,0.51l-1.33,2.07ZM193.92,74.85l-0.01,4.24l0.19,0.28l0.33,-0.07l3.14,-3.22l2.65,2.5l-0.71,3.04l0.06,0.26l2.42,2.88l0.46,0.0l2.66,-3.14l1.83,-3.74l0.03,-0.12l0.13,-4.53l3.23,0.31l3.63,0.64l3.18,2.08l0.13,1.91l-1.79,2.22l-0.0,0.37l1.69,2.2l-0.28,1.8l-4.74,2.84l-3.33,0.62l-2.5,-1.21l-0.41,0.17l-0.73,2.05l-2.39,3.44l-0.74,1.78l-2.78,2.61l-3.48,0.26l-0.17,0.07l-1.98,1.68l-0.1,0.21l-0.15,2.33l-2.68,0.45l-0.17,0.09l-3.1,3.2l-2.75,4.38l-0.99,3.06l-0.14,4.31l0.25,0.31l3.5,0.58l1.07,3.24l1.18,2.76l0.34,0.18l3.43,-0.69l4.55,1.52l2.45,1.32l1.76,1.65l0.12,0.07l3.11,0.96l2.63,1.46l0.13,0.04l4.12,0.2l2.41,0.3l-0.36,2.81l0.8,3.51l1.81,3.78l0.08,0.1l3.73,3.17l0.34,0.03l1.93,-1.08l0.13,-0.15l1.35,-3.44l0.01,-0.18l-1.31,-5.38l-0.08,-0.14l-1.46,-1.5l3.68,-1.51l2.84,-2.46l1.45,-2.55l0.04,-0.17l-0.2,-2.39l-0.04,-0.12l-1.7,-3.07l-2.9,-2.64l2.79,-3.66l0.05,-0.27l-1.08,-3.38l-0.8,-5.75l1.45,-0.75l4.18,1.03l2.6,0.38l0.18,-0.03l1.93,-0.95l2.18,1.23l3.01,2.18l0.73,1.42l0.25,0.16l4.18,0.27l-0.06,2.95l0.83,4.7l0.22,0.24l2.19,0.55l1.75,2.08l0.38,0.07l3.63,-2.03l0.11,-0.11l2.38,-4.06l1.36,-1.43l1.76,3.01l3.26,4.68l2.68,4.19l-0.94,2.09l0.12,0.38l3.31,1.98l2.23,1.98l0.13,0.07l3.94,0.89l1.48,1.02l0.96,2.82l0.22,0.2l1.85,0.43l0.88,1.13l0.17,3.53l-1.68,1.16l-1.76,1.14l-4.08,1.17l-0.11,0.06l-3.08,2.65l-4.11,0.52l-5.35,-0.69l-3.76,-0.02l-2.62,0.23l-0.2,0.1l-2.05,2.29l-3.13,1.41l-0.11,0.08l-3.6,4.24l-2.87,2.92l-0.05,0.36l0.33,0.14l2.13,-0.52l0.15,-0.08l3.98,-4.15l5.16,-2.63l3.58,-0.31l1.82,1.3l-2.09,1.91l-0.09,0.29l0.8,3.46l0.82,2.37l0.15,0.17l3.25,1.56l0.16,0.03l4.14,-0.45l0.21,-0.12l2.03,-2.86l0.11,1.46l0.13,0.22l1.26,0.88l-2.7,1.78l-5.51,1.83l-2.52,1.26l-2.75,2.16l-1.52,-0.18l-0.08,-2.16l4.19,-2.47l0.14,-0.34l-0.3,-0.22l-4.01,0.1l-2.66,0.36l-1.45,-1.56l0.0,-4.16l-0.11,-0.23l-1.11,-0.91l-0.28,-0.05l-1.5,0.48l-0.7,-0.7l-0.45,0.02l-1.91,2.39l-0.8,2.5l-0.82,1.31l-0.95,0.43l-0.77,0.15l-0.23,0.2l-0.18,0.56l-8.2,0.02l-0.13,0.03l-1.19,0.61l-2.95,2.45l-0.78,1.13l-4.6,0.01l-0.12,0.02l-1.13,0.48l-0.13,0.44l0.37,0.55l0.2,0.82l-0.01,0.09l-3.1,1.42l-2.63,0.5l-2.84,1.57l-0.47,0.0l-0.72,-0.4l-0.18,-0.27l0.03,-0.15l0.52,-1.0l1.2,-1.71l0.73,-1.8l0.02,-0.17l-1.03,-5.47l-0.15,-0.21l-2.35,-1.32l0.16,-0.29l-0.05,-0.35l-0.37,-0.38l-0.22,-0.09l-0.56,0.0l-0.35,-0.34l-0.11,-0.65l-0.46,-0.2l-0.39,0.26l-0.2,-0.03l-0.11,-0.33l-0.48,-0.25l-0.21,-0.71l-0.15,-0.18l-3.97,-2.07l-4.8,-2.39l-0.25,-0.01l-2.19,0.89l-0.72,0.03l-3.04,-0.82l-0.14,-0.0l-1.94,0.4l-2.4,-0.98l-2.56,-0.51l-1.7,-0.19l-0.62,-0.44l-0.42,-1.67l-0.3,-0.23l-0.85,0.02l-0.29,0.3l-0.01,0.95l-69.26,-0.01l-4.77,-3.14l-1.78,-1.41l-4.51,-1.38l-1.3,-2.73l0.34,-1.96l-0.17,-0.33l-3.06,-1.37l-0.41,-2.58l-0.11,-0.18l-2.92,-2.4l-0.05,-1.53l1.32,-1.59l0.07,-0.2l-0.07,-2.21l-0.16,-0.26l-4.19,-2.22l-2.52,-4.02l-1.56,-2.6l-0.08,-0.09l-2.28,-1.64l-1.65,-1.48l-1.31,-1.89l-0.38,-0.1l-2.51,1.21l-2.28,1.92l-2.03,-2.22l-1.85,-1.71l-2.44,-1.04l-2.28,-0.12l0.03,-37.72l4.27,0.98l4.0,2.13l2.61,0.4l0.24,-0.07l2.17,-1.81l2.92,-1.33l3.63,0.53l0.18,-0.03l3.72,-1.94l3.89,-1.06l1.6,1.72l0.37,0.06l1.87,-1.04l0.14,-0.19l0.48,-1.83l1.37,0.38l4.18,3.96l0.41,0.0l2.89,-2.62l0.28,2.79l0.37,0.26l3.08,-0.73l0.17,-0.12l0.85,-1.16l2.81,0.24l3.83,1.86l5.86,1.61l3.46,0.75l2.44,-0.26l2.89,1.89l-3.12,1.89l-0.14,0.31l0.24,0.24l4.53,0.92l6.84,-0.5l2.04,-0.71l2.54,2.44l0.39,0.02l2.72,-2.16l-0.01,-0.48l-2.26,-1.61l1.27,-1.16l2.94,-0.19l1.94,-0.42l1.89,0.97l2.49,2.32l0.24,0.08l2.71,-0.33l4.35,1.9l0.17,0.02l3.86,-0.67l3.62,0.1l0.31,-0.33l-0.26,-2.44l1.9,-0.65l3.58,1.36l-0.01,3.84l0.23,0.29l0.34,-0.17l1.51,-3.23l1.81,0.1l0.31,-0.22l1.13,-4.37l-0.08,-0.29l-2.68,-2.73l-2.83,-1.76l0.19,-4.73l2.77,-3.15l3.06,0.69l2.44,1.97l3.24,4.88l-2.05,2.02l0.15,0.51l4.41,0.85ZM265.85,150.7l-0.84,0.04l-3.15,-0.99l-1.77,-1.17l0.19,-0.06l3.17,0.79l2.39,1.27l0.01,0.12ZM249.41,3.71l6.68,0.49l5.34,0.79l4.34,1.6l-0.08,1.24l-5.91,2.56l-6.03,1.21l-2.36,1.38l-0.14,0.34l0.29,0.22l4.37,-0.02l-4.96,3.01l-4.06,1.64l-0.11,0.08l-4.21,4.62l-5.07,0.92l-0.12,0.05l-1.53,1.1l-7.5,0.59l-0.28,0.28l0.24,0.31l2.67,0.54l-1.04,0.6l-0.09,0.44l1.89,2.49l-2.11,1.66l-3.83,1.52l-0.15,0.13l-1.14,2.01l-3.41,1.55l-0.16,0.36l0.35,1.19l0.3,0.22l3.98,-0.19l0.03,0.78l-6.42,2.99l-6.44,-1.41l-7.41,0.79l-3.72,-0.62l-4.48,-0.26l-0.25,-2.0l4.37,-1.13l0.21,-0.38l-1.14,-3.55l1.13,-0.28l6.61,2.29l0.35,-0.12l-0.04,-0.37l-3.41,-3.45l-0.14,-0.08l-3.57,-0.92l1.62,-1.7l4.36,-1.3l0.2,-0.18l0.71,-1.94l-0.12,-0.36l-3.45,-2.15l-0.88,-2.43l6.36,0.23l1.94,0.61l0.23,-0.02l3.91,-2.1l0.15,-0.32l-0.26,-0.24l-5.69,-0.67l-8.69,0.37l-4.3,-1.92l-2.12,-2.39l-2.82,-1.68l-0.44,-1.65l3.41,-1.06l2.93,-0.2l4.91,-0.99l3.69,-2.28l2.93,0.31l2.64,1.68l0.42,-0.1l1.84,-3.23l3.17,-0.96l4.45,-0.69l7.56,-0.26l1.26,0.64l0.18,0.03l7.2,-1.06l10.81,0.8ZM203.94,57.59l0.01,0.32l1.97,2.97l0.51,-0.01l2.26,-3.75l6.05,-1.89l4.08,4.72l-0.36,2.95l0.38,0.33l4.95,-1.36l0.11,-0.05l2.23,-1.77l5.37,2.31l3.32,2.14l0.3,1.89l0.36,0.25l4.48,-1.01l2.49,2.8l0.14,0.09l5.99,1.78l2.09,1.74l2.18,3.83l-4.29,1.91l-0.01,0.54l5.9,2.83l3.95,0.94l3.54,3.84l0.2,0.1l3.58,0.25l-0.67,2.51l-4.18,4.54l-2.84,-1.61l-3.91,-3.95l-0.26,-0.09l-3.24,0.52l-0.25,0.26l-0.32,2.37l0.1,0.26l2.63,2.38l3.42,1.89l0.96,1.0l1.57,3.8l-0.74,2.43l-2.85,-0.96l-6.26,-3.15l-0.38,0.09l0.04,0.39l3.54,3.4l2.55,2.31l0.23,0.78l-6.26,-1.43l-5.33,-2.25l-2.73,-1.73l0.67,-0.86l-0.09,-0.45l-7.38,-4.01l-0.44,0.27l0.03,0.89l-6.85,0.61l-1.8,-1.17l1.43,-2.6l4.56,-0.07l5.15,-0.52l0.23,-0.45l-0.76,-1.34l0.8,-1.89l3.21,-4.06l0.05,-0.29l-0.72,-1.95l-0.97,-1.47l-0.11,-0.1l-3.84,-2.1l-4.53,-1.33l1.09,-0.75l0.05,-0.45l-2.65,-2.75l-0.18,-0.09l-2.12,-0.24l-1.91,-1.47l-0.39,0.02l-1.27,1.25l-4.4,0.56l-9.06,-0.99l-5.28,-1.31l-4.01,-0.67l-1.72,-1.31l2.32,-1.85l0.1,-0.33l-0.28,-0.2l-3.3,-0.02l-0.74,-4.36l1.86,-4.09l2.46,-1.88l5.74,-1.15l-1.5,2.55ZM261.28,159.28l0.19,0.14l1.82,0.42l1.66,-0.05l-0.66,0.68l-0.75,0.16l-3.0,-1.25l-0.46,-0.77l0.51,-0.52l0.68,1.19ZM230.87,84.48l-2.48,0.19l-0.52,-1.74l0.96,-2.17l2.03,-0.53l1.71,1.04l0.02,1.6l-0.22,0.46l-1.5,1.16ZM229.52,58.19l0.14,0.82l-4.99,-0.22l-2.73,0.63l-0.59,-0.23l-2.61,-2.4l0.08,-1.38l0.94,-0.25l5.61,0.51l4.14,2.54ZM222.12,105.0l-0.79,1.63l-0.75,-0.22l-0.52,-0.91l0.04,-0.09l0.84,-1.01l0.74,0.06l0.44,0.55ZM183.77,38.22l2.72,1.65l0.16,0.04l4.83,-0.01l1.92,1.52l-0.51,1.75l0.18,0.36l2.84,1.14l1.56,1.19l0.16,0.06l3.37,0.22l3.65,0.42l4.07,-1.1l5.05,-0.43l3.96,0.35l2.53,1.8l0.48,1.79l-1.37,1.16l-3.6,1.03l-3.22,-0.59l-7.17,0.76l-5.1,0.09l-4.0,-0.6l-6.48,-1.56l-0.81,-2.57l-0.3,-2.49l-0.1,-0.19l-2.51,-2.25l-0.16,-0.07l-5.12,-0.63l-2.61,-1.45l0.75,-1.71l4.88,0.32ZM207.46,91.26l0.42,1.62l0.42,0.19l1.12,-0.55l1.35,0.99l2.74,1.39l2.73,1.2l0.2,1.74l0.35,0.26l1.72,-0.29l1.31,0.97l-1.72,0.96l-3.68,-0.9l-1.34,-1.71l-0.43,-0.04l-2.46,2.1l-3.23,1.85l-0.74,-1.98l-0.31,-0.19l-2.47,0.28l1.49,-1.34l0.1,-0.19l0.32,-3.15l0.79,-3.45l1.34,0.25ZM215.59,102.66l-2.73,2.0l-1.49,-0.08l-0.37,-0.7l1.61,-1.56l3.0,0.03l-0.02,0.3ZM202.79,24.07l0.11,0.12l2.54,1.53l-3.01,1.47l-4.55,4.07l-4.3,0.38l-5.07,-0.68l-2.51,-2.09l0.03,-1.72l1.86,-1.4l0.1,-0.34l-0.29,-0.2l-4.49,0.04l-2.63,-1.79l-1.45,-2.36l1.61,-2.38l1.65,-1.69l2.47,-0.4l0.19,-0.48l-0.72,-0.89l5.1,-0.26l3.1,3.05l0.13,0.07l4.21,1.25l3.99,1.06l1.92,3.65ZM187.5,59.3l-0.15,0.1l-2.59,3.4l-2.5,-0.15l-1.47,-3.92l0.04,-2.24l1.22,-1.92l2.34,-1.26l5.11,0.17l4.28,1.06l-3.36,3.86l-2.9,0.9ZM186.19,48.8l-1.15,1.63l-3.42,-0.35l-2.68,-1.15l1.11,-1.88l3.34,-1.27l2.01,1.63l0.79,1.38ZM185.78,35.41l-0.95,0.13l-4.48,-0.33l-0.4,-0.91l4.5,0.07l1.45,0.82l-0.1,0.21ZM180.76,32.56l-3.43,1.03l-1.85,-1.14l-1.01,-1.92l-0.16,-1.87l2.87,0.2l1.39,0.35l2.75,1.75l-0.55,1.6ZM181.03,76.32l-1.21,1.2l-3.19,-1.26l-0.18,-0.01l-1.92,0.45l-2.88,-1.67l1.84,-1.16l1.6,-1.77l2.45,1.17l1.45,0.77l2.05,2.28ZM169.72,54.76l2.83,0.97l0.14,0.01l4.25,-0.58l0.47,1.01l-2.19,2.16l0.07,0.48l3.61,1.95l-0.41,3.84l-3.87,1.68l-2.23,-0.36l-1.73,-1.75l-6.07,-3.53l0.03,-1.01l4.79,0.55l0.3,-0.16l-0.04,-0.34l-2.55,-2.89l2.59,-2.05ZM174.44,40.56l1.49,1.87l0.07,2.48l-1.07,3.52l-3.87,0.48l-2.41,-0.72l0.05,-2.72l-0.33,-0.3l-3.79,0.36l-0.13,-3.31l2.36,0.14l0.15,-0.03l3.7,-1.74l3.44,0.29l0.31,-0.22l0.03,-0.12ZM170.14,31.5l0.75,1.74l-3.52,-0.52l-4.19,-1.77l-4.65,-0.17l1.65,-1.11l-0.05,-0.52l-2.86,-1.26l-0.13,-1.58l4.52,0.7l6.66,1.99l1.84,2.5ZM134.64,58.08l-1.08,1.93l0.34,0.44l5.44,-1.41l3.37,2.32l0.37,-0.02l2.66,-2.28l2.03,1.38l2.01,4.53l0.53,0.04l1.26,-1.93l0.03,-0.27l-1.67,-4.55l1.82,-0.58l2.36,0.73l2.69,1.84l1.53,4.46l0.77,3.24l0.15,0.19l4.22,2.26l4.32,2.04l-0.21,1.51l-3.87,0.34l-0.19,0.5l1.45,1.54l-0.65,1.23l-4.3,-0.65l-4.4,-1.19l-2.97,0.28l-4.67,1.48l-6.31,0.65l-4.27,0.39l-1.26,-1.91l-0.15,-0.12l-3.42,-1.2l-0.16,-0.01l-2.05,0.45l-2.66,-3.02l1.2,-0.34l3.82,-0.76l3.58,0.19l3.27,-0.78l0.23,-0.29l-0.24,-0.29l-4.84,-1.06l-5.42,0.35l-3.4,-0.09l-0.97,-1.22l5.39,-1.7l0.21,-0.33l-0.3,-0.25l-3.82,0.06l-3.95,-1.1l1.88,-3.13l1.68,-1.81l6.54,-2.84l2.11,0.77ZM158.85,56.58l-1.82,2.62l-3.38,-2.9l0.49,-0.39l3.17,-0.18l1.54,0.86ZM149.71,42.7l1.0,1.87l0.37,0.14l2.17,-0.83l2.33,0.2l0.38,2.16l-1.38,2.17l-8.33,0.76l-6.34,2.15l-3.51,0.1l-0.22,-1.13l4.98,-2.12l0.17,-0.34l-0.31,-0.23l-11.27,0.6l-3.04,-0.78l3.14,-4.57l2.2,-1.35l6.87,1.7l4.4,3.0l0.14,0.05l4.37,0.39l0.27,-0.48l-3.41,-4.68l1.96,-1.62l2.28,0.53l0.79,2.32ZM145.44,29.83l-2.18,0.77l-3.79,-0.0l0.02,-0.31l2.34,-1.5l1.2,0.23l2.42,0.83ZM144.83,34.5l-4.44,1.46l-3.18,-1.48l1.6,-1.36l3.51,-0.53l3.1,0.75l-0.6,1.16ZM119.02,65.87l-6.17,2.07l-1.19,-1.82l-0.13,-0.11l-5.48,-2.32l0.92,-1.7l1.73,-3.44l2.16,-3.15l-0.02,-0.36l-2.09,-2.56l7.84,-0.71l3.59,1.02l6.32,0.27l2.35,1.37l2.25,1.71l-2.68,1.04l-6.21,3.41l-3.1,3.28l-0.08,0.21l0.0,1.81ZM129.66,35.4l-0.3,3.55l-1.77,1.67l-2.34,0.27l-4.62,2.2l-3.89,0.76l-2.83,-0.93l3.85,-3.52l5.04,-3.36l3.75,0.07l3.11,-0.7ZM111.24,152.74l-0.82,0.29l-3.92,-1.39l-0.7,-1.06l-0.12,-0.1l-2.15,-1.09l-0.41,-0.84l-0.2,-0.16l-2.44,-0.56l-0.84,-1.56l0.1,-0.36l2.34,0.64l1.53,0.5l2.28,0.34l0.78,1.04l1.24,1.55l0.09,0.08l2.42,1.3l0.81,1.39ZM88.54,134.82l0.14,0.02l2.0,-0.23l-0.67,3.48l0.06,0.24l1.78,2.22l-0.24,-0.0l-1.4,-1.42l-0.91,-1.53l-1.26,-1.08l-0.42,-1.35l0.09,-0.66l0.82,0.31Z",\n "name": "Canada"\n },\n "CG": {\n "path": "M453.66,296.61l-0.9,-0.82l-0.35,-0.04l-0.83,0.48l-0.77,0.83l-1.65,-2.13l1.66,-1.2l0.08,-0.39l-0.81,-1.43l0.59,-0.43l1.62,-0.29l0.24,-0.24l0.1,-0.58l0.94,0.84l0.19,0.08l2.21,0.11l0.27,-0.14l0.81,-1.29l0.32,-1.76l-0.27,-1.96l-0.06,-0.15l-1.08,-1.35l1.02,-2.74l-0.09,-0.34l-0.62,-0.5l-0.22,-0.06l-1.66,0.18l-0.55,-1.03l0.12,-0.73l2.85,0.09l1.98,0.65l2.0,0.59l0.38,-0.25l0.17,-1.3l1.26,-2.24l1.34,-1.19l1.54,0.38l1.35,0.12l-0.11,1.15l-0.74,1.34l-0.5,1.61l-0.31,2.22l0.12,1.41l-0.4,0.9l-0.06,0.88l-0.24,0.67l-1.57,1.15l-1.24,1.41l-1.09,2.43l-0.03,0.13l0.08,1.95l-0.55,0.69l-1.46,1.23l-1.32,1.41l-0.61,-0.29l-0.13,-0.57l-0.29,-0.23l-1.36,-0.02l-0.23,0.1l-0.72,0.81l-0.41,-0.16Z",\n "name": "Republic of the Congo"\n },\n "CF": {\n "path": "M459.41,266.56l1.9,-0.17l0.22,-0.12l0.36,-0.5l0.14,0.02l0.55,0.51l0.29,0.07l3.15,-0.96l0.12,-0.07l1.05,-0.97l1.29,-0.87l0.12,-0.33l-0.17,-0.61l0.38,-0.12l2.36,0.15l0.15,-0.03l2.36,-1.17l0.12,-0.1l1.78,-2.72l1.18,-0.96l1.23,-0.34l0.21,0.79l0.07,0.13l1.37,1.5l0.01,0.86l-0.39,1.0l-0.01,0.17l0.16,0.78l0.1,0.17l0.91,0.76l1.89,1.09l1.24,0.92l0.02,0.67l0.12,0.23l1.67,1.3l0.99,1.03l0.61,1.46l0.14,0.15l1.79,0.95l0.2,0.4l-0.44,0.14l-1.54,-0.06l-1.98,-0.26l-0.93,0.22l-0.19,0.14l-0.3,0.48l-0.57,0.05l-0.91,-0.49l-0.26,-0.01l-2.7,1.21l-1.04,-0.23l-0.21,0.03l-0.34,0.19l-0.12,0.13l-0.64,1.3l-1.67,-0.43l-1.77,-0.24l-1.58,-0.91l-2.06,-0.85l-0.27,0.02l-1.42,0.88l-0.97,1.27l-0.06,0.14l-0.19,1.46l-1.3,-0.11l-1.67,-0.42l-0.27,0.07l-1.55,1.41l-0.99,1.76l-0.14,-1.18l-0.13,-0.22l-1.1,-0.78l-0.86,-1.2l-0.2,-0.84l-0.07,-0.13l-1.07,-1.19l0.16,-0.59l0.0,-0.15l-0.24,-1.01l0.18,-1.77l0.5,-0.38l0.09,-0.11l1.18,-2.4Z",\n "name": "Central African Republic"\n },\n "CD": {\n "path": "M497.85,276.25l-0.14,2.77l0.2,0.3l0.57,0.19l-0.47,0.52l-1.0,0.71l-0.96,1.31l-0.56,1.22l-0.16,2.04l-0.54,0.89l-0.04,0.15l-0.02,1.76l-0.63,0.61l-0.09,0.2l-0.08,1.33l-0.2,0.11l-0.15,0.21l-0.23,1.37l0.03,0.2l0.6,1.08l0.16,2.96l0.44,2.29l-0.24,1.25l0.01,0.15l0.5,1.46l0.07,0.12l1.41,1.37l1.09,2.56l-0.51,-0.11l-3.45,0.45l-0.67,0.3l-0.15,0.15l-0.71,1.61l0.01,0.26l0.52,1.03l-0.43,2.9l-0.31,2.55l0.13,0.29l0.7,0.46l1.75,0.99l0.31,-0.01l0.26,-0.17l0.15,1.9l-1.44,-0.02l-0.94,-1.28l-0.94,-1.1l-0.17,-0.1l-1.76,-0.33l-0.5,-1.18l-0.42,-0.15l-1.44,0.75l-1.79,-0.32l-0.77,-1.05l-0.2,-0.12l-1.59,-0.23l-0.97,0.04l-0.1,-0.53l-0.27,-0.25l-0.86,-0.06l-1.13,-0.15l-1.62,0.37l-1.04,-0.06l-0.32,0.09l0.11,-2.56l-0.08,-0.21l-0.77,-0.87l-0.17,-1.41l0.36,-1.47l-0.03,-0.21l-0.48,-0.91l-0.04,-1.52l-0.3,-0.29l-2.65,0.02l0.13,-0.53l-0.29,-0.37l-1.28,0.01l-0.28,0.21l-0.07,0.24l-1.35,0.09l-0.26,0.18l-0.62,1.45l-0.25,0.42l-1.17,-0.3l-0.19,0.01l-0.79,0.34l-1.44,0.18l-1.41,-1.96l-0.7,-1.47l-0.61,-1.86l-0.28,-0.21l-7.39,-0.03l-0.92,0.3l-0.78,-0.03l-0.78,0.25l-0.11,-0.25l0.35,-0.15l0.18,-0.26l0.07,-1.02l0.33,-0.52l0.72,-0.42l0.52,0.2l0.33,-0.08l0.76,-0.86l0.99,0.02l0.11,0.48l0.16,0.2l0.94,0.44l0.35,-0.07l1.46,-1.56l1.44,-1.21l0.68,-0.85l0.06,-0.2l-0.08,-1.99l1.04,-2.33l1.1,-1.23l1.62,-1.19l0.11,-0.14l0.29,-0.8l0.08,-0.94l0.38,-0.82l0.03,-0.16l-0.13,-1.38l0.3,-2.16l0.47,-1.51l0.73,-1.31l0.04,-0.12l0.15,-1.51l0.21,-1.66l0.89,-1.16l1.16,-0.7l1.9,0.79l1.69,0.95l1.81,0.24l1.85,0.48l0.35,-0.16l0.71,-1.43l0.16,-0.09l1.03,0.23l0.19,-0.02l2.65,-1.19l0.86,0.46l0.17,0.03l0.81,-0.08l0.23,-0.14l0.31,-0.5l0.75,-0.17l1.83,0.26l1.64,0.06l0.72,-0.21l1.39,1.9l0.16,0.11l1.12,0.3l0.24,-0.04l0.58,-0.36l1.05,0.15l0.15,-0.02l1.15,-0.44l0.47,0.84l0.08,0.09l2.08,1.57Z",\n "name": "Democratic Republic of the Congo"\n },\n "CZ": {\n "path": "M463.29,152.22l-0.88,-0.47l-0.18,-0.03l-1.08,0.15l-1.86,-0.94l-0.21,-0.02l-0.88,0.24l-0.13,0.07l-1.25,1.17l-1.63,-0.91l-1.38,-1.36l-1.22,-0.75l-0.24,-1.24l-0.33,-0.75l1.53,-0.6l0.98,-0.84l1.74,-0.62l0.11,-0.07l0.47,-0.47l0.46,0.27l0.24,0.03l0.96,-0.3l1.06,0.95l0.15,0.07l1.57,0.24l-0.1,0.6l0.16,0.32l1.36,0.68l0.41,-0.15l0.28,-0.62l1.29,0.28l0.19,0.84l0.26,0.23l1.73,0.18l0.74,1.02l-0.17,0.0l-0.25,0.13l-0.32,0.49l-0.46,0.11l-0.22,0.23l-0.13,0.57l-0.32,0.1l-0.2,0.22l-0.03,0.14l-0.65,0.25l-1.05,-0.05l-0.28,0.17l-0.22,0.43Z",\n "name": "Czech Republic"\n },\n "CY": {\n "path": "M505.03,193.75l-1.51,0.68l-1.0,-0.3l-0.32,-0.63l0.69,-0.06l0.41,0.13l0.19,-0.0l0.62,-0.22l0.31,0.02l0.06,0.22l0.49,0.17l0.06,-0.01Z",\n "name": "Cyprus"\n },\n "CR": {\n "path": "M213.0,263.84l-0.98,-0.4l-0.3,-0.31l0.16,-0.24l0.05,-0.21l-0.09,-0.56l-0.1,-0.18l-0.76,-0.65l-0.99,-0.5l-0.74,-0.28l-0.13,-0.58l-0.12,-0.18l-0.66,-0.45l-0.34,-0.0l-0.13,0.31l0.13,0.59l-0.17,0.21l-0.34,-0.42l-0.14,-0.1l-0.7,-0.22l-0.23,-0.34l0.01,-0.62l0.31,-0.74l-0.14,-0.38l-0.3,-0.15l0.47,-0.4l1.48,0.6l0.26,-0.02l0.47,-0.27l0.58,0.15l0.35,0.44l0.17,0.11l0.74,0.17l0.27,-0.07l0.3,-0.27l0.52,1.09l0.97,1.02l0.77,0.71l-0.41,0.1l-0.23,0.3l0.01,1.02l0.12,0.24l0.2,0.14l-0.07,0.05l-0.11,0.3l0.08,0.37l-0.23,0.63Z",\n "name": "Costa Rica"\n },\n "CU": {\n "path": "M215.01,226.09l2.08,0.18l1.94,0.03l2.24,0.86l0.95,0.92l0.25,0.08l2.22,-0.28l0.79,0.55l3.68,2.81l0.19,0.06l0.77,-0.03l1.18,0.42l-0.12,0.47l0.27,0.37l1.78,0.1l1.59,0.9l-0.11,0.22l-1.5,0.3l-1.64,0.13l-1.75,-0.2l-2.69,0.19l1.0,-0.86l-0.03,-0.48l-1.02,-0.68l-0.13,-0.05l-1.52,-0.16l-0.74,-0.64l-0.57,-1.42l-0.3,-0.19l-1.36,0.1l-2.23,-0.67l-0.71,-0.52l-0.14,-0.06l-3.2,-0.4l-0.42,-0.25l0.56,-0.39l0.12,-0.33l-0.27,-0.22l-2.46,-0.13l-0.2,0.06l-1.72,1.31l-0.94,0.03l-0.25,0.15l-0.29,0.53l-1.04,0.24l-0.29,-0.07l0.7,-0.43l0.1,-0.11l0.5,-0.87l1.04,-0.54l1.23,-0.49l1.86,-0.25l0.62,-0.28Z",\n "name": "Cuba"\n },\n "SZ": {\n "path": "M500.95,353.41l-0.41,0.97l-1.16,0.23l-1.29,-1.26l-0.02,-0.71l0.63,-0.93l0.23,-0.7l0.47,-0.12l1.04,0.4l0.32,1.05l0.2,1.08Z",\n "name": "Swaziland"\n },\n "SY": {\n "path": "M510.84,199.83l0.09,-0.11l0.07,-0.2l-0.04,-1.08l0.56,-1.4l1.3,-1.01l0.1,-0.34l-0.41,-1.11l-0.24,-0.19l-0.89,-0.11l-0.2,-1.84l0.55,-1.05l1.3,-1.22l0.09,-0.19l0.09,-1.09l0.39,0.27l0.25,0.04l2.66,-0.77l1.35,0.52l2.06,-0.01l2.93,-1.08l1.35,0.04l2.14,-0.34l-0.83,1.16l-1.31,0.68l-0.16,0.3l0.23,2.03l-0.9,3.25l-5.43,2.87l-4.79,2.91l-2.32,-0.92Z",\n "name": "Syria"\n },\n "KG": {\n "path": "M599.04,172.15l0.38,-0.9l1.43,-0.37l4.04,1.02l0.37,-0.23l0.36,-1.64l1.17,-0.52l3.45,1.24l0.2,-0.0l0.86,-0.31l4.09,0.08l3.61,0.31l1.18,1.02l0.11,0.06l1.19,0.34l-0.13,0.26l-3.84,1.58l-0.13,0.1l-0.81,1.08l-3.08,0.34l-0.24,0.16l-0.85,1.7l-2.43,-0.37l-0.14,0.01l-1.79,0.61l-2.39,1.4l-0.12,0.39l0.25,0.49l-0.48,0.45l-4.57,0.43l-3.04,-0.94l-2.45,0.18l0.14,-1.02l2.42,0.44l0.27,-0.08l0.81,-0.81l1.76,0.27l0.21,-0.05l3.21,-2.14l-0.03,-0.51l-2.97,-1.57l-0.26,-0.01l-1.64,0.69l-1.38,-0.84l1.81,-1.67l-0.09,-0.5l-0.46,-0.18Z",\n "name": "Kyrgyzstan"\n },\n "KE": {\n "path": "M523.3,287.04l0.06,0.17l1.29,1.8l-1.46,0.84l-0.11,0.11l-0.55,0.93l-0.81,0.16l-0.24,0.24l-0.34,1.69l-0.81,1.06l-0.46,1.58l-0.76,0.63l-3.3,-2.3l-0.16,-1.32l-0.15,-0.23l-9.35,-5.28l-0.02,-2.4l1.92,-2.63l0.91,-1.83l0.01,-0.24l-1.09,-2.86l-0.29,-1.24l-1.09,-1.63l2.93,-2.85l0.92,0.3l0.0,1.19l0.09,0.22l0.86,0.83l0.21,0.08l1.65,0.0l3.09,2.08l0.16,0.05l0.79,0.03l0.54,-0.06l0.58,0.28l1.67,0.2l0.28,-0.12l0.69,-0.98l2.04,-0.94l0.86,0.73l0.19,0.07l1.1,0.0l-1.82,2.36l-0.06,0.18l0.03,9.12Z",\n "name": "Kenya"\n },\n "SS": {\n "path": "M505.7,261.39l0.02,1.64l-0.27,0.55l-1.15,0.05l-0.24,0.15l-0.85,1.44l0.22,0.45l1.44,0.17l1.15,1.12l0.42,0.95l0.14,0.15l1.06,0.54l1.33,2.45l-3.06,2.98l-1.44,1.08l-1.75,0.01l-1.92,0.56l-1.5,-0.53l-0.27,0.03l-0.85,0.57l-1.98,-1.5l-0.56,-1.02l-0.37,-0.13l-1.32,0.5l-1.08,-0.15l-0.2,0.04l-0.56,0.35l-0.9,-0.24l-1.44,-1.97l-0.39,-0.77l-0.13,-0.13l-1.78,-0.94l-0.65,-1.5l-1.08,-1.12l-1.57,-1.22l-0.02,-0.68l-0.12,-0.23l-1.37,-1.02l-1.17,-0.68l0.2,-0.08l0.86,-0.48l0.14,-0.18l0.63,-2.22l0.6,-1.02l1.47,-0.28l0.35,0.56l1.29,1.48l0.14,0.09l0.69,0.22l0.22,-0.02l0.83,-0.4l1.58,0.08l0.26,0.39l0.25,0.13l2.49,0.0l0.3,-0.25l0.06,-0.35l1.13,-0.42l0.18,-0.18l0.22,-0.63l0.68,-0.38l1.95,1.37l0.23,0.05l1.29,-0.26l0.19,-0.12l1.23,-1.8l1.36,-1.37l0.08,-0.25l-0.21,-1.52l-0.06,-0.15l-0.25,-0.3l0.94,-0.08l0.26,-0.21l0.1,-0.32l0.6,0.09l-0.25,1.67l0.3,1.83l0.11,0.19l1.22,0.94l0.25,0.73l-0.04,1.2l0.26,0.31l0.09,0.01Z",\n "name": "South Sudan"\n },\n "SR": {\n "path": "M278.1,270.26l2.71,0.45l0.31,-0.14l0.19,-0.32l1.82,-0.16l2.25,0.56l-1.09,1.81l-0.04,0.19l0.2,1.72l0.05,0.13l0.9,1.35l-0.39,0.99l-0.21,1.09l-0.48,0.8l-1.2,-0.44l-0.17,-0.01l-1.12,0.24l-0.95,-0.21l-0.35,0.2l-0.25,0.73l0.05,0.29l0.3,0.35l-0.06,0.13l-1.01,-0.15l-1.42,-2.03l-0.32,-1.36l-0.29,-0.23l-0.63,-0.0l-0.95,-1.56l0.41,-1.16l0.01,-0.17l-0.08,-0.35l1.29,-0.56l0.18,-0.22l0.35,-1.97Z",\n "name": "Suriname"\n },\n "KH": {\n "path": "M680.28,257.89l-0.93,-1.2l-1.24,-2.56l-0.56,-2.9l1.45,-1.92l3.07,-0.46l2.26,0.35l2.03,0.98l0.38,-0.11l1.0,-1.55l1.86,0.79l0.52,1.51l-0.28,2.82l-4.05,1.88l-0.12,0.45l0.79,1.1l-2.2,0.17l-2.08,0.98l-1.89,-0.33Z",\n "name": "Cambodia"\n },\n "SV": {\n "path": "M197.02,248.89l0.18,-0.05l0.59,0.17l0.55,0.51l0.64,0.35l0.06,0.22l0.37,0.21l1.01,-0.28l0.38,0.13l0.16,0.13l-0.14,0.81l-0.18,0.38l-1.22,-0.03l-0.84,-0.23l-1.11,-0.52l-1.31,-0.15l-0.49,-0.38l0.02,-0.08l0.76,-0.57l0.46,-0.27l0.11,-0.35Z",\n "name": "El Salvador"\n },\n "SK": {\n "path": "M468.01,150.02l0.05,0.07l0.36,0.1l0.85,-0.37l1.12,1.02l0.33,0.05l1.38,-0.65l1.07,0.3l0.16,0.0l1.69,-0.43l1.95,1.02l-0.51,0.64l-0.45,1.2l-0.32,0.2l-2.55,-0.93l-0.17,-0.01l-0.82,0.2l-0.17,0.11l-0.53,0.68l-0.94,0.32l-0.14,-0.11l-0.29,-0.04l-1.18,0.48l-0.95,0.09l-0.26,0.21l-0.15,0.47l-1.84,0.34l-0.82,-0.31l-1.14,-0.73l-0.2,-0.89l0.42,-0.84l0.91,0.05l0.12,-0.02l0.86,-0.33l0.18,-0.21l0.03,-0.13l0.32,-0.1l0.2,-0.22l0.12,-0.55l0.39,-0.1l0.18,-0.13l0.3,-0.45l0.43,-0.0Z",\n "name": "Slovakia"\n },\n "KR": {\n "path": "M737.31,185.72l0.84,0.08l0.27,-0.12l0.89,-1.2l1.63,-0.13l1.1,-0.2l0.21,-0.16l0.12,-0.24l1.86,2.95l0.59,1.79l0.02,3.17l-0.84,1.38l-2.23,0.55l-1.95,1.14l-1.91,0.21l-0.22,-1.21l0.45,-2.07l-0.01,-0.17l-0.99,-2.67l1.54,-0.4l0.17,-0.46l-1.55,-2.24Z",\n "name": "South Korea"\n },\n "SI": {\n "path": "M455.77,159.59l1.79,0.21l0.18,-0.04l1.2,-0.68l2.12,-0.08l0.21,-0.1l0.38,-0.42l0.1,0.01l0.28,0.62l-1.71,0.71l-0.18,0.22l-0.21,1.1l-0.71,0.26l-0.2,0.28l0.01,0.55l-0.59,-0.04l-0.79,-0.47l-0.38,0.06l-0.36,0.41l-0.84,-0.05l0.05,-0.15l-0.56,-1.24l0.21,-1.17Z",\n "name": "Slovenia"\n },\n "KP": {\n "path": "M747.76,172.02l-0.23,-0.04l-0.26,0.08l-1.09,1.02l-0.78,1.06l-0.06,0.19l0.09,1.95l-1.12,0.57l-0.53,0.58l-0.88,0.82l-1.69,0.51l-1.09,0.79l-0.12,0.22l-0.07,1.17l-0.22,0.25l0.09,0.47l0.96,0.46l1.22,1.1l-0.19,0.37l-0.91,0.16l-1.75,0.14l-0.22,0.12l-0.87,1.18l-0.95,-0.09l-0.3,0.18l-0.97,-0.44l-0.39,0.13l-0.25,0.44l-0.29,0.09l-0.03,-0.2l-0.18,-0.23l-0.62,-0.25l-0.43,-0.29l0.52,-0.97l0.52,-0.3l0.13,-0.38l-0.18,-0.42l0.59,-1.47l0.01,-0.21l-0.16,-0.48l-0.22,-0.2l-1.41,-0.31l-0.82,-0.55l1.74,-1.62l2.73,-1.58l1.62,-1.96l0.96,0.76l0.17,0.06l2.17,0.11l0.31,-0.37l-0.32,-1.31l3.61,-1.21l0.16,-0.13l0.79,-1.34l1.25,1.38Z",\n "name": "North Korea"\n },\n "SO": {\n "path": "M543.8,256.48l0.61,-0.05l1.14,-0.37l1.31,-0.25l0.12,-0.05l1.11,-0.81l0.57,-0.0l0.03,0.39l-0.23,1.49l0.01,1.25l-0.52,0.92l-0.7,2.71l-1.19,2.79l-1.54,3.2l-2.13,3.66l-2.12,2.79l-2.92,3.39l-2.47,2.0l-3.76,2.5l-2.33,1.9l-2.77,3.06l-0.61,1.35l-0.28,0.29l-1.22,-1.69l-0.03,-8.92l2.12,-2.76l0.59,-0.68l1.47,-0.04l0.18,-0.06l2.15,-1.71l3.16,-0.11l0.21,-0.09l7.08,-7.55l1.76,-2.12l1.14,-1.57l0.06,-0.18l0.01,-4.67Z",\n "name": "Somalia"\n },\n "SN": {\n "path": "M379.28,250.34l-0.95,-1.82l-0.09,-0.1l-0.83,-0.6l0.62,-0.28l0.13,-0.11l1.21,-1.8l0.6,-1.31l0.71,-0.68l1.09,0.2l0.18,-0.02l1.17,-0.53l1.25,-0.03l1.17,0.73l1.59,0.65l1.47,1.83l1.59,1.7l0.12,1.56l0.49,1.46l0.1,0.14l0.85,0.65l0.18,0.82l-0.08,0.57l-0.13,0.05l-1.29,-0.19l-0.29,0.13l-0.11,0.16l-0.35,0.04l-1.83,-0.61l-5.84,-0.13l-0.12,0.02l-0.6,0.26l-0.87,-0.06l-1.01,0.32l-0.26,-1.26l1.9,0.04l0.16,-0.04l0.54,-0.32l0.37,-0.02l0.15,-0.05l0.78,-0.5l0.92,0.46l0.12,0.03l1.09,0.04l0.15,-0.03l1.08,-0.57l0.11,-0.44l-0.51,-0.74l-0.39,-0.1l-0.76,0.39l-0.62,-0.01l-0.92,-0.58l-0.18,-0.05l-0.79,0.04l-0.2,0.09l-0.48,0.51l-2.41,0.06Z",\n "name": "Senegal"\n },\n "SL": {\n "path": "M392.19,267.53l-0.44,-0.12l-1.73,-0.97l-1.24,-1.28l-0.4,-0.84l-0.27,-1.65l1.21,-1.0l0.09,-0.12l0.27,-0.66l0.32,-0.41l0.56,-0.05l0.16,-0.07l0.5,-0.41l1.75,0.0l0.59,0.77l0.49,0.96l-0.07,0.64l0.04,0.19l0.36,0.58l-0.03,0.84l0.24,0.2l-0.64,0.65l-1.13,1.37l-0.06,0.14l-0.12,0.66l-0.43,0.58Z",\n "name": "Sierra Leone"\n },\n "SB": {\n "path": "M826.74,311.51l0.23,0.29l-0.95,-0.01l-0.39,-0.63l0.65,0.27l0.45,0.09ZM825.01,308.52l-1.18,-1.39l-0.37,-1.06l0.24,0.0l0.82,1.84l0.49,0.6ZM823.21,309.42l-0.44,0.03l-1.43,-0.24l-0.32,-0.24l0.08,-0.5l1.29,0.31l0.72,0.47l0.11,0.18ZM817.9,303.81l2.59,1.44l0.3,0.41l-1.21,-0.66l-1.34,-0.89l-0.34,-0.3ZM813.77,302.4l0.48,0.34l0.1,0.08l-0.33,-0.17l-0.25,-0.25Z",\n "name": "Solomon Islands"\n },\n "SA": {\n "path": "M528.24,243.1l-0.2,-0.69l-0.07,-0.12l-0.69,-0.71l-0.18,-0.94l-0.12,-0.19l-1.24,-0.89l-1.28,-2.09l-0.7,-2.08l-0.07,-0.11l-1.73,-1.79l-0.11,-0.07l-1.03,-0.39l-1.57,-2.36l-0.27,-1.72l0.1,-1.53l-0.03,-0.15l-1.44,-2.93l-1.25,-1.13l-1.34,-0.56l-0.72,-1.33l0.11,-0.49l-0.02,-0.2l-0.7,-1.38l-0.08,-0.1l-0.68,-0.56l-0.97,-1.98l-2.8,-4.03l-0.25,-0.13l-0.85,0.01l0.29,-1.11l0.12,-0.97l0.23,-0.81l2.52,0.39l0.23,-0.06l1.08,-0.84l0.6,-0.95l1.78,-0.35l0.22,-0.17l0.37,-0.83l0.74,-0.42l0.08,-0.46l-2.17,-2.4l4.55,-1.26l0.12,-0.06l0.36,-0.32l2.83,0.71l3.67,1.91l7.04,5.5l0.17,0.06l4.64,0.22l2.06,0.24l0.55,1.15l0.28,0.17l1.56,-0.06l0.9,2.15l0.14,0.15l1.14,0.57l0.39,0.85l0.11,0.13l1.59,1.06l0.12,0.91l-0.23,0.83l0.01,0.18l0.32,0.9l0.07,0.11l0.68,0.7l0.33,0.86l0.37,0.65l0.09,0.1l0.76,0.53l0.25,0.04l0.45,-0.12l0.35,0.75l0.1,0.63l0.96,2.68l0.23,0.19l7.53,1.33l0.27,-0.09l0.24,-0.26l0.87,1.41l-1.58,4.96l-7.34,2.54l-7.28,1.02l-2.34,1.17l-0.12,0.1l-1.74,2.63l-0.86,0.32l-0.49,-0.68l-0.28,-0.12l-0.92,0.12l-2.32,-0.25l-0.41,-0.23l-0.15,-0.04l-2.89,0.06l-0.63,0.2l-0.91,-0.59l-0.43,0.11l-0.66,1.27l-0.03,0.21l0.21,0.89l-0.6,0.45Z",\n "name": "Saudi Arabia"\n },\n "SE": {\n "path": "M476.42,90.44l-0.15,0.1l-2.43,2.86l-0.07,0.24l0.36,2.31l-3.84,3.1l-4.83,3.38l-0.11,0.15l-1.82,5.45l0.03,0.26l1.78,2.68l2.27,1.99l-2.13,3.88l-2.49,0.82l-0.2,0.24l-0.95,6.05l-1.32,3.09l-2.82,-0.32l-0.3,0.16l-1.34,2.64l-2.48,0.14l-0.76,-3.15l-2.09,-4.04l-1.85,-5.01l1.03,-1.98l2.06,-2.53l0.06,-0.13l0.83,-4.45l-0.06,-0.25l-1.54,-1.86l-0.15,-5.0l1.52,-3.48l2.28,0.06l0.27,-0.16l0.87,-1.59l-0.01,-0.31l-0.8,-1.21l3.79,-5.63l4.07,-7.54l2.23,0.01l0.29,-0.22l0.59,-2.15l4.46,0.66l0.34,-0.26l0.34,-2.64l1.21,-0.14l3.24,2.08l3.78,2.85l0.06,6.37l0.03,0.14l0.67,1.29l-3.95,1.07Z",\n "name": "Sweden"\n },\n "SD": {\n "path": "M505.98,259.75l-0.31,-0.9l-0.1,-0.14l-1.2,-0.93l-0.27,-1.66l0.29,-1.83l-0.25,-0.34l-1.16,-0.17l-0.33,0.21l-0.11,0.37l-1.3,0.11l-0.21,0.49l0.55,0.68l0.18,1.29l-1.31,1.33l-1.18,1.72l-1.04,0.21l-2.0,-1.4l-0.32,-0.02l-0.95,0.52l-0.14,0.16l-0.21,0.6l-1.16,0.43l-0.19,0.23l-0.04,0.27l-2.08,0.0l-0.25,-0.39l-0.24,-0.13l-1.81,-0.09l-0.14,0.03l-0.8,0.38l-0.49,-0.16l-1.22,-1.39l-0.42,-0.67l-0.31,-0.14l-1.81,0.35l-0.2,0.14l-0.72,1.24l-0.61,2.14l-0.73,0.4l-0.62,0.22l-0.83,-0.68l-0.12,-0.6l0.38,-0.97l0.01,-1.14l-0.08,-0.2l-1.39,-1.53l-0.25,-0.97l0.03,-0.57l-0.11,-0.25l-0.81,-0.66l-0.03,-1.34l-0.04,-0.14l-0.52,-0.98l-0.31,-0.15l-0.42,0.07l0.12,-0.44l0.63,-1.03l0.03,-0.23l-0.24,-0.88l0.69,-0.66l0.02,-0.41l-0.4,-0.46l0.58,-1.39l1.04,-1.71l1.97,0.16l0.32,-0.3l-0.12,-10.24l0.02,-0.8l2.59,-0.01l0.3,-0.3l0.0,-4.92l29.19,0.0l0.68,2.17l-0.4,0.35l-0.1,0.27l0.36,2.69l0.93,3.15l0.12,0.16l2.05,1.4l-0.99,1.15l-1.75,0.4l-0.15,0.08l-0.79,0.79l-0.08,0.17l-0.24,1.69l-1.07,3.75l-0.0,0.16l0.25,0.96l-0.38,2.1l-0.98,2.41l-1.52,1.3l-1.07,1.94l-0.25,0.99l-1.08,0.64l-0.13,0.18l-0.46,1.65Z",\n "name": "Sudan"\n },\n "DO": {\n "path": "M241.7,234.97l0.15,-0.22l1.73,0.01l1.43,0.64l0.15,0.03l0.45,-0.04l0.36,0.74l0.28,0.17l1.02,-0.04l-0.04,0.43l0.27,0.33l1.03,0.09l0.91,0.7l-0.57,0.64l-0.99,-0.47l-0.16,-0.03l-1.11,0.11l-0.79,-0.12l-0.26,0.09l-0.38,0.4l-0.66,0.11l-0.28,-0.45l-0.38,-0.12l-0.83,0.37l-0.14,0.13l-0.85,1.49l-0.27,-0.17l-0.1,-0.58l0.05,-0.67l-0.07,-0.21l-0.44,-0.53l0.35,-0.25l0.12,-0.19l0.19,-1.0l-0.2,-1.4Z",\n "name": "Dominican Republic"\n },\n "DJ": {\n "path": "M528.78,253.36l0.34,0.45l-0.06,0.76l-1.26,0.54l-0.05,0.53l0.82,0.53l-0.57,0.83l-0.3,-0.25l-0.27,-0.05l-0.56,0.17l-1.07,-0.03l-0.04,-0.56l-0.16,-0.56l0.76,-1.07l0.76,-0.97l0.89,0.18l0.25,-0.06l0.51,-0.42Z",\n "name": "Djibouti"\n },\n "DK": {\n "path": "M452.4,129.07l-1.27,2.39l-2.25,-1.69l-0.26,-1.08l3.15,-1.0l0.63,1.39ZM447.87,126.25l-0.35,0.76l-0.47,-0.24l-0.38,0.09l-1.8,2.53l-0.03,0.29l0.56,1.4l-1.22,0.4l-1.68,-0.41l-0.92,-1.76l-0.07,-3.47l0.38,-0.88l0.62,-0.93l2.07,-0.21l0.19,-0.1l0.84,-0.95l1.5,-0.76l-0.06,1.26l-0.7,1.1l-0.03,0.25l0.3,1.0l0.18,0.19l1.06,0.42Z",\n "name": "Denmark"\n },\n "DE": {\n "path": "M445.51,131.69l0.03,0.94l0.21,0.28l2.32,0.74l-0.02,1.0l0.37,0.3l2.55,-0.65l1.36,-0.89l2.63,1.27l1.09,1.01l0.51,1.51l-0.6,0.78l-0.0,0.36l0.88,1.17l0.58,1.68l-0.18,1.08l0.03,0.18l0.87,1.81l-0.66,0.2l-0.55,-0.32l-0.36,0.05l-0.58,0.58l-1.73,0.62l-0.99,0.84l-1.77,0.7l-0.16,0.4l0.42,0.94l0.26,1.34l0.14,0.2l1.25,0.76l1.22,1.2l-0.71,1.2l-0.81,0.37l-0.17,0.32l0.34,1.99l-0.04,0.09l-0.47,-0.39l-0.17,-0.07l-1.2,-0.1l-1.85,0.57l-2.15,-0.13l-0.29,0.18l-0.21,0.5l-0.96,-0.67l-0.24,-0.05l-0.67,0.16l-2.6,-0.94l-0.34,0.1l-0.42,0.57l-1.64,-0.02l0.26,-1.88l1.24,-2.15l-0.21,-0.45l-3.54,-0.58l-0.98,-0.71l0.12,-1.26l-0.05,-0.2l-0.44,-0.64l0.27,-2.18l-0.38,-3.14l1.17,-0.0l0.27,-0.17l0.63,-1.26l0.65,-3.17l-0.02,-0.17l-0.41,-1.0l0.32,-0.47l1.77,-0.16l0.37,0.6l0.47,0.06l1.7,-1.69l0.06,-0.33l-0.55,-1.24l-0.09,-1.51l1.5,0.36l0.16,-0.01l1.22,-0.4Z",\n "name": "Germany"\n },\n "YE": {\n "path": "M553.53,242.65l-1.51,0.58l-0.17,0.16l-0.48,1.14l-0.07,0.79l-2.31,1.0l-3.98,1.19l-2.28,1.8l-0.97,0.12l-0.7,-0.14l-0.23,0.05l-1.42,1.03l-1.51,0.47l-2.07,0.13l-0.68,0.15l-0.17,0.1l-0.49,0.6l-0.57,0.16l-0.18,0.13l-0.3,0.49l-1.06,-0.05l-0.13,0.02l-0.73,0.32l-1.48,-0.11l-0.55,-1.26l0.07,-1.32l-0.04,-0.16l-0.39,-0.72l-0.48,-1.85l-0.52,-0.79l0.08,-0.02l0.22,-0.36l-0.23,-1.05l0.24,-0.39l0.04,-0.19l-0.09,-0.95l0.96,-0.72l0.11,-0.31l-0.23,-0.98l0.46,-0.88l0.75,0.49l0.26,0.03l0.63,-0.22l2.76,-0.06l0.5,0.25l2.42,0.26l0.85,-0.11l0.52,0.71l0.35,0.1l1.17,-0.43l0.15,-0.12l1.75,-2.64l2.22,-1.11l6.95,-0.96l2.55,5.58Z",\n "name": "Yemen"\n },\n "AT": {\n "path": "M463.17,154.15l-0.14,0.99l-1.15,0.01l-0.24,0.47l0.39,0.56l-0.75,1.84l-0.36,0.4l-2.06,0.07l-0.14,0.04l-1.18,0.67l-1.96,-0.23l-3.43,-0.78l-0.5,-0.97l-0.33,-0.16l-2.47,0.55l-0.2,0.16l-0.18,0.37l-1.27,-0.38l-1.28,-0.09l-0.81,-0.41l0.25,-0.51l0.03,-0.18l-0.05,-0.28l0.35,-0.08l1.16,0.81l0.45,-0.13l0.27,-0.64l2.0,0.12l1.84,-0.57l1.05,0.09l0.71,0.59l0.47,-0.11l0.23,-0.54l0.02,-0.17l-0.32,-1.85l0.69,-0.31l0.13,-0.12l0.73,-1.23l1.61,0.89l0.35,-0.04l1.35,-1.27l0.7,-0.19l1.84,0.93l0.18,0.03l1.08,-0.15l0.81,0.43l-0.07,0.15l-0.02,0.2l0.24,1.06Z",\n "name": "Austria"\n },\n "DZ": {\n "path": "M450.58,224.94l-8.31,4.86l-7.23,5.12l-3.46,1.13l-2.42,0.22l-0.02,-1.33l-0.2,-0.28l-1.15,-0.42l-1.45,-0.69l-0.55,-1.13l-0.1,-0.12l-8.45,-5.72l-17.72,-12.17l0.03,-0.38l-0.02,-3.21l3.84,-1.91l2.46,-0.41l2.1,-0.75l0.14,-0.11l0.9,-1.3l2.84,-1.06l0.19,-0.27l0.09,-1.81l1.21,-0.2l0.15,-0.07l1.06,-0.96l3.19,-0.46l0.23,-0.18l0.46,-1.08l-0.08,-0.34l-0.6,-0.54l-0.83,-2.85l-0.18,-1.8l-0.82,-1.57l2.13,-1.37l2.65,-0.49l0.13,-0.05l1.55,-1.15l2.34,-0.85l4.2,-0.51l4.07,-0.23l1.21,0.41l0.23,-0.01l2.3,-1.11l2.52,-0.02l0.94,0.62l0.2,0.05l1.25,-0.13l-0.36,1.03l-0.01,0.14l0.39,2.66l-0.56,2.2l-1.49,1.52l-0.08,0.24l0.22,2.12l0.11,0.2l1.94,1.58l0.02,0.54l0.12,0.23l1.45,1.06l1.04,4.85l0.81,2.42l0.13,1.19l-0.43,2.17l0.17,1.28l-0.31,1.53l0.2,1.56l-0.9,1.02l-0.01,0.38l1.43,1.88l0.09,1.06l0.04,0.13l0.89,1.48l0.37,0.12l1.03,-0.43l1.79,1.12l0.89,1.34Z",\n "name": "Algeria"\n },\n "US": {\n "path": "M892.64,99.05l1.16,0.57l0.21,0.02l1.45,-0.38l1.92,0.99l2.17,0.47l-1.65,0.72l-1.75,-0.79l-0.93,-0.7l-0.21,-0.06l-2.11,0.22l-0.35,-0.2l0.09,-0.87ZM183.29,150.37l0.39,1.54l0.12,0.17l0.78,0.55l0.14,0.05l1.74,0.2l2.52,0.5l2.4,0.98l0.17,0.02l1.96,-0.4l3.01,0.81l0.91,-0.02l2.22,-0.88l4.67,2.33l3.86,2.01l0.21,0.71l0.15,0.18l0.33,0.17l-0.02,0.05l0.23,0.43l0.67,0.1l0.21,-0.05l0.1,-0.07l0.05,0.29l0.09,0.16l0.5,0.5l0.21,0.09l0.56,0.0l0.13,0.13l-0.2,0.36l0.12,0.41l2.49,1.39l0.99,5.24l-0.69,1.68l-1.16,1.64l-0.6,1.18l-0.06,0.31l0.04,0.22l0.28,0.43l0.11,0.1l0.85,0.47l0.15,0.04l0.63,0.0l0.14,-0.04l2.87,-1.58l2.6,-0.49l3.28,-1.5l0.17,-0.23l0.04,-0.43l-0.23,-0.93l-0.24,-0.39l0.74,-0.32l4.7,-0.01l0.25,-0.13l0.77,-1.15l2.9,-2.41l1.04,-0.52l8.35,-0.02l0.28,-0.21l0.2,-0.6l0.7,-0.14l1.06,-0.48l0.13,-0.11l0.92,-1.49l0.75,-2.39l1.67,-2.08l0.59,0.6l0.3,0.07l1.52,-0.49l0.88,0.72l-0.0,4.14l0.08,0.2l1.6,1.72l0.31,0.72l-2.42,1.35l-2.55,1.05l-2.64,0.9l-0.14,0.11l-1.33,1.81l-0.44,0.7l-0.05,0.15l-0.03,1.6l0.03,0.14l0.83,1.59l0.24,0.16l0.78,0.06l-1.15,0.33l-1.25,-0.04l-1.83,0.52l-2.51,0.29l-2.17,0.88l-0.17,0.36l0.33,0.22l3.55,-0.54l0.15,0.11l-2.87,0.73l-1.19,0.0l-0.16,-0.33l-0.36,0.06l-0.76,0.82l0.17,0.5l0.42,0.08l-0.45,1.75l-1.4,1.74l-0.04,-0.17l-0.21,-0.22l-0.48,-0.13l-0.77,-0.69l-0.36,-0.03l-0.12,0.34l0.52,1.58l0.09,0.14l0.52,0.43l0.03,0.87l-0.74,1.05l-0.39,0.63l0.05,-0.12l-0.08,-0.34l-1.19,-1.03l-0.28,-2.31l-0.26,-0.26l-0.32,0.19l-0.48,1.27l-0.01,0.19l0.39,1.33l-1.14,-0.31l-0.36,0.18l0.14,0.38l1.57,0.85l0.1,2.58l0.22,0.28l0.55,0.15l0.21,0.81l0.33,2.72l-1.46,1.94l-2.5,0.81l-0.12,0.07l-1.58,1.58l-1.15,0.17l-0.15,0.06l-1.27,1.03l-0.09,0.13l-0.32,0.85l-2.71,1.79l-1.45,1.37l-1.18,1.64l-0.05,0.12l-0.39,1.96l0.0,0.13l0.44,1.91l0.85,2.37l1.1,1.91l0.03,1.2l1.16,3.07l-0.08,1.74l-0.1,0.99l-0.57,1.48l-0.54,0.24l-0.97,-0.26l-0.34,-1.02l-0.12,-0.16l-0.89,-0.58l-2.44,-4.28l-0.34,-0.94l0.49,-1.71l-0.02,-0.21l-0.7,-1.5l-2.0,-2.35l-0.11,-0.08l-0.98,-0.42l-0.25,0.01l-2.42,1.19l-0.26,-0.08l-1.26,-1.29l-1.57,-0.68l-0.16,-0.02l-2.79,0.34l-2.18,-0.3l-1.98,0.19l-1.12,0.45l-0.14,0.44l0.4,0.65l-0.04,1.02l0.09,0.22l0.29,0.3l-0.06,0.05l-0.77,-0.33l-0.26,0.01l-0.87,0.48l-1.64,-0.08l-1.79,-1.39l-0.23,-0.06l-2.11,0.33l-1.75,-0.61l-0.14,-0.01l-1.61,0.2l-2.11,0.64l-0.11,0.06l-2.25,1.99l-2.53,1.21l-1.43,1.38l-0.58,1.22l-0.03,0.12l-0.03,1.86l0.13,1.32l0.3,0.62l-0.46,0.04l-1.71,-0.57l-1.85,-0.79l-0.63,-1.14l-0.54,-1.85l-0.07,-0.12l-1.45,-1.51l-0.86,-1.58l-1.26,-1.87l-0.09,-0.09l-1.76,-1.09l-0.17,-0.04l-2.05,0.05l-0.23,0.12l-1.44,1.97l-1.84,-0.72l-1.19,-0.76l-0.6,-1.45l-0.9,-1.52l-1.49,-1.21l-1.27,-0.87l-0.89,-0.96l-0.22,-0.1l-4.34,-0.0l-0.3,0.3l-0.0,0.84l-6.62,0.02l-5.66,-1.93l-3.48,-1.24l0.11,-0.25l-0.3,-0.42l-3.18,0.3l-2.6,0.2l-0.35,-1.19l-0.08,-0.13l-1.62,-1.61l-0.13,-0.08l-1.02,-0.29l-0.22,-0.66l-0.25,-0.2l-1.31,-0.13l-0.82,-0.7l-0.16,-0.07l-2.25,-0.27l-0.48,-0.34l-0.28,-1.44l-0.07,-0.14l-2.41,-2.84l-2.03,-3.89l0.08,-0.58l-0.1,-0.27l-1.08,-0.94l-1.87,-2.36l-0.33,-2.31l-0.07,-0.15l-1.24,-1.5l0.52,-2.4l-0.09,-2.57l-0.78,-2.3l0.96,-2.83l0.61,-5.66l-0.46,-4.26l-0.79,-2.71l-0.68,-1.4l0.13,-0.26l3.24,0.97l1.28,2.88l0.52,0.06l0.62,-0.84l0.06,-0.22l-0.4,-2.61l-0.74,-2.29l68.9,-0.0l0.3,-0.3l0.01,-0.95l0.32,-0.01ZM32.5,67.43l1.75,1.99l0.41,0.04l1.02,-0.81l3.79,0.25l-0.1,0.72l0.24,0.34l3.83,0.77l2.6,-0.44l5.21,1.41l4.84,0.43l1.9,0.57l0.15,0.01l3.25,-0.71l3.72,1.32l2.52,0.58l-0.03,38.14l0.29,0.3l2.41,0.11l2.34,1.0l1.7,1.59l2.22,2.42l0.42,0.03l2.41,-2.04l2.25,-1.08l1.23,1.76l1.71,1.53l2.24,1.62l1.54,2.56l2.56,4.09l0.11,0.11l4.1,2.17l0.06,1.93l-1.12,1.35l-1.22,-1.14l-2.08,-1.05l-0.68,-2.94l-0.09,-0.16l-3.18,-2.84l-1.32,-3.35l-0.25,-0.19l-2.43,-0.24l-3.93,-0.09l-2.85,-1.02l-5.24,-3.85l-6.77,-2.04l-3.52,0.3l-4.84,-1.7l-2.96,-1.6l-0.23,-0.02l-2.78,0.8l-0.21,0.35l0.46,2.31l-1.11,0.19l-2.9,0.78l-2.24,1.26l-2.42,0.68l-0.29,-1.79l1.07,-3.49l2.54,-1.11l0.12,-0.45l-0.69,-0.96l-0.41,-0.07l-3.19,2.12l-1.76,2.54l-3.57,2.62l-0.03,0.46l1.63,1.59l-2.14,2.38l-2.64,1.49l-2.49,1.09l-0.16,0.17l-0.58,1.48l-3.8,1.79l-0.14,0.14l-0.75,1.57l-2.75,1.41l-1.62,-0.25l-0.16,0.02l-2.35,0.98l-2.54,1.19l-2.06,1.15l-4.05,0.93l-0.1,-0.15l2.45,-1.45l2.49,-1.1l2.61,-1.88l3.03,-0.39l0.19,-0.1l1.2,-1.41l3.43,-2.11l0.61,-0.75l1.81,-1.24l0.13,-0.2l0.42,-2.7l1.24,-2.12l-0.03,-0.35l-0.34,-0.09l-2.73,1.05l-0.67,-0.53l-0.39,0.02l-1.13,1.11l-1.43,-1.62l-0.49,0.06l-0.41,0.8l-0.67,-1.31l-0.42,-0.12l-2.43,1.43l-1.18,-0.0l-0.18,-1.86l0.43,-1.3l-0.09,-0.33l-1.61,-1.33l-0.26,-0.06l-3.11,0.68l-2.0,-1.66l-1.61,-0.85l-0.01,-1.97l-0.11,-0.23l-1.76,-1.48l0.86,-1.96l2.01,-2.13l0.88,-1.94l1.79,-0.25l1.65,0.6l0.31,-0.06l1.91,-1.8l1.67,0.31l0.22,-0.04l1.91,-1.23l0.13,-0.33l-0.47,-1.82l-0.15,-0.19l-1.0,-0.52l1.51,-1.27l0.09,-0.34l-0.29,-0.19l-1.62,0.06l-2.66,0.88l-0.13,0.09l-0.62,0.72l-1.77,-0.8l-0.16,-0.02l-3.48,0.44l-3.5,-0.92l-1.06,-1.61l-2.78,-2.09l3.07,-1.51l5.52,-2.01l1.65,0.0l-0.28,1.73l0.31,0.35l5.29,-0.16l0.23,-0.49l-2.03,-2.59l-0.1,-0.08l-3.03,-1.58l-1.79,-2.12l-2.4,-1.83l-3.18,-1.27l1.13,-1.84l4.28,-0.14l0.15,-0.05l3.16,-2.0l0.13,-0.17l0.57,-2.07l2.43,-2.02l2.42,-0.52l4.67,-1.98l2.22,0.29l0.2,-0.04l3.74,-2.37l3.57,0.91ZM37.66,123.49l-2.31,1.26l-1.04,-0.75l-0.31,-1.35l2.06,-1.16l1.24,-0.51l1.48,0.22l0.76,0.81l-1.89,1.49ZM30.89,233.84l1.2,0.57l0.35,0.3l0.48,0.69l-1.6,0.86l-0.3,0.31l-0.24,-0.14l0.05,-0.54l-0.02,-0.15l-0.36,-0.83l0.05,-0.12l0.39,-0.38l0.07,-0.31l-0.09,-0.27ZM29.06,231.89l0.5,0.14l0.31,0.19l-0.46,0.1l-0.34,-0.43ZM25.02,230.13l0.2,-0.11l0.4,0.47l-0.43,-0.05l-0.17,-0.31ZM21.29,228.68l0.1,-0.07l0.22,0.02l0.02,0.21l-0.02,0.02l-0.32,-0.18ZM6.0,113.33l-1.19,0.45l-1.5,-0.64l-0.94,-0.63l1.76,-0.46l1.71,0.29l0.16,0.98Z",\n "name": "United States of America"\n },\n "LV": {\n "path": "M473.99,127.16l0.07,-2.15l1.15,-2.11l2.05,-1.07l1.84,2.48l0.25,0.12l2.01,-0.07l0.29,-0.25l0.45,-2.58l1.85,-0.56l0.98,0.4l2.13,1.33l0.16,0.05l1.97,0.01l1.02,0.7l0.21,1.67l0.71,1.84l-2.44,1.23l-1.36,0.53l-2.28,-1.62l-0.12,-0.05l-1.18,-0.2l-0.28,-0.6l-0.31,-0.17l-2.43,0.35l-4.17,-0.23l-0.12,0.02l-2.45,0.93Z",\n "name": "Latvia"\n },\n "UY": {\n "path": "M276.9,363.17l1.3,-0.23l2.4,2.04l0.22,0.07l0.82,-0.07l2.48,1.7l1.93,1.5l1.28,1.67l-0.95,1.14l-0.04,0.31l0.63,1.45l-0.96,1.57l-2.65,1.47l-1.73,-0.53l-0.15,-0.01l-1.25,0.28l-2.22,-1.16l-0.16,-0.03l-1.56,0.08l-1.33,-1.36l0.17,-1.58l0.48,-0.55l0.07,-0.2l-0.02,-2.74l0.66,-2.8l0.57,-2.02Z",\n "name": "Uruguay"\n },\n "LB": {\n "path": "M510.44,198.11l-0.48,0.03l-0.26,0.17l-0.15,0.32l-0.21,-0.0l0.72,-1.85l1.19,-1.9l0.74,0.09l0.27,0.73l-1.19,0.93l-0.09,0.13l-0.54,1.36Z",\n "name": "Lebanon"\n },\n "LA": {\n "path": "M684.87,248.8l0.61,-0.86l0.05,-0.16l0.11,-2.17l-0.08,-0.22l-1.96,-2.16l-0.15,-2.44l-0.08,-0.18l-1.9,-2.1l-0.19,-0.1l-1.89,-0.18l-0.29,0.15l-0.42,0.76l-1.21,0.06l-0.67,-0.41l-0.31,-0.0l-2.2,1.29l-0.05,-1.77l0.61,-2.7l-0.27,-0.37l-1.44,-0.1l-0.12,-1.31l-0.12,-0.21l-0.87,-0.65l0.38,-0.68l1.76,-1.41l0.08,0.22l0.27,0.2l1.33,0.07l0.31,-0.34l-0.35,-2.75l0.85,-0.25l1.32,1.88l1.11,2.36l0.27,0.17l2.89,0.02l0.78,1.82l-1.32,0.56l-0.12,0.09l-0.72,0.93l0.1,0.45l2.93,1.52l3.62,5.27l1.88,1.78l0.58,1.67l-0.38,2.11l-1.87,-0.79l-0.37,0.11l-0.99,1.54l-1.51,-0.73Z",\n "name": "Laos"\n },\n "TW": {\n "path": "M725.6,222.5l-1.5,4.22l-0.82,1.65l-1.01,-1.7l-0.26,-1.8l1.4,-2.48l1.8,-1.81l0.76,0.53l-0.38,1.39Z",\n "name": "Taiwan"\n },\n "TT": {\n "path": "M266.35,259.46l0.41,-0.39l0.09,-0.23l-0.04,-0.75l1.14,-0.26l0.2,0.03l-0.07,1.37l-1.73,0.23Z",\n "name": "Trinidad and Tobago"\n },\n "TR": {\n "path": "M513.25,175.38l3.63,1.17l0.14,0.01l2.88,-0.45l2.11,0.26l0.18,-0.03l2.9,-1.53l2.51,-0.13l2.25,1.37l0.36,0.88l-0.23,1.36l0.19,0.33l1.81,0.72l0.61,0.53l-1.31,0.64l-0.16,0.34l0.76,3.24l-0.44,0.8l0.01,0.3l1.19,2.02l-0.71,0.29l-0.74,-0.62l-0.15,-0.07l-2.91,-0.37l-0.15,0.02l-1.04,0.43l-2.78,0.44l-1.44,-0.03l-2.83,1.06l-1.95,0.01l-1.28,-0.52l-0.2,-0.01l-2.62,0.76l-0.7,-0.48l-0.47,0.22l-0.13,1.49l-1.01,0.94l-0.58,-0.82l0.79,-0.9l0.04,-0.34l-0.31,-0.15l-1.46,0.23l-2.03,-0.64l-0.3,0.07l-1.65,1.58l-3.58,0.3l-1.94,-1.47l-0.17,-0.06l-2.7,-0.1l-0.28,0.17l-0.51,1.06l-1.47,0.29l-2.32,-1.46l-0.17,-0.05l-2.55,0.05l-1.4,-2.7l-1.72,-1.54l1.11,-2.06l-0.07,-0.37l-1.35,-1.19l2.47,-2.51l3.74,-0.11l0.26,-0.17l0.96,-2.07l4.56,0.38l0.19,-0.05l2.97,-1.92l2.84,-0.83l4.03,-0.06l4.31,2.08ZM488.85,176.8l-1.81,1.38l-0.57,-1.01l0.02,-0.36l0.45,-0.25l0.13,-0.15l0.78,-1.87l-0.11,-0.37l-0.72,-0.47l1.91,-0.71l1.89,0.35l0.25,0.97l0.17,0.2l1.87,0.83l-0.19,0.31l-2.82,0.16l-0.18,0.07l-1.06,0.91Z",\n "name": "Turkey"\n },\n "LK": {\n "path": "M625.44,266.07l-0.35,2.4l-0.9,0.61l-1.91,0.5l-1.04,-1.75l-0.43,-3.5l1.0,-3.6l1.34,1.09l1.13,1.72l1.16,2.52Z",\n "name": "Sri Lanka"\n },\n "TN": {\n "path": "M444.91,206.18l-0.99,-4.57l-0.12,-0.18l-1.43,-1.04l-0.02,-0.53l-0.11,-0.22l-1.95,-1.59l-0.19,-1.85l1.44,-1.47l0.08,-0.14l0.59,-2.34l-0.38,-2.77l0.44,-1.28l2.52,-1.08l1.41,0.28l-0.06,1.2l0.43,0.28l1.81,-0.9l0.02,0.06l-1.14,1.28l-0.08,0.2l-0.02,1.32l0.11,0.24l0.74,0.6l-0.29,2.18l-1.56,1.35l-0.09,0.32l0.48,1.54l0.28,0.21l1.11,0.04l0.55,1.17l0.15,0.14l0.76,0.35l-0.12,1.79l-1.1,0.72l-0.8,0.91l-1.68,1.04l-0.13,0.32l0.25,1.08l-0.18,0.96l-0.74,0.39Z",\n "name": "Tunisia"\n },\n "TL": {\n "path": "M734.21,307.22l0.17,-0.34l1.99,-0.52l1.72,-0.08l0.78,-0.3l0.29,0.1l-0.43,0.32l-2.57,1.09l-1.71,0.59l-0.05,-0.49l-0.19,-0.36Z",\n "name": "East Timor"\n },\n "TM": {\n "path": "M553.16,173.51l-0.12,1.0l-0.26,-0.65l0.38,-0.34ZM553.54,173.16l0.13,-0.12l0.43,-0.09l-0.56,0.21ZM555.68,172.6l0.65,-0.14l1.53,0.76l1.71,2.29l0.27,0.12l1.27,-0.14l2.81,-0.04l0.29,-0.38l-0.35,-1.27l1.98,-0.97l1.96,-1.63l3.05,1.44l0.25,2.23l0.14,0.22l0.96,0.61l0.18,0.05l2.61,-0.13l0.68,0.44l1.2,2.97l0.1,0.13l2.85,2.03l1.67,1.41l2.66,1.45l3.13,1.17l-0.05,1.23l-0.36,-0.04l-1.12,-0.73l-0.44,0.14l-0.34,0.89l-1.96,0.52l-0.22,0.23l-0.47,2.17l-1.26,0.78l-1.93,0.42l-0.21,0.18l-0.46,1.14l-1.64,0.33l-2.3,-0.97l-0.2,-2.23l-0.28,-0.27l-1.76,-0.1l-2.78,-2.48l-0.15,-0.07l-1.95,-0.31l-2.82,-1.48l-1.78,-0.27l-0.18,0.03l-1.03,0.51l-1.6,-0.08l-0.22,0.08l-1.72,1.6l-1.83,0.46l-0.39,-1.7l0.36,-3.0l-0.16,-0.3l-1.73,-0.88l0.57,-1.77l-0.25,-0.39l-1.33,-0.14l0.41,-1.85l2.05,0.63l0.21,-0.01l2.2,-0.95l0.09,-0.49l-1.78,-1.75l-0.69,-1.66l-0.07,-0.03Z",\n "name": "Turkmenistan"\n },\n "TJ": {\n "path": "M597.99,178.71l-0.23,0.23l-2.57,-0.47l-0.35,0.25l-0.24,1.7l0.32,0.34l2.66,-0.22l3.15,0.95l4.47,-0.42l0.58,2.45l0.39,0.21l0.71,-0.25l1.22,0.53l-0.06,1.01l0.29,1.28l-2.19,-0.0l-1.71,-0.21l-0.23,0.07l-1.51,1.25l-1.05,0.27l-0.77,0.51l-0.71,-0.67l0.22,-2.28l-0.24,-0.32l-0.43,-0.08l0.17,-0.57l-0.16,-0.36l-1.36,-0.66l-0.34,0.05l-1.08,1.01l-0.09,0.15l-0.25,1.09l-0.24,0.26l-1.36,-0.05l-0.27,0.14l-0.65,1.06l-0.58,-0.39l-0.3,-0.02l-1.68,0.86l-0.36,-0.16l1.28,-2.65l0.02,-0.2l-0.54,-2.17l-0.18,-0.21l-1.53,-0.58l0.41,-0.82l1.89,0.13l0.26,-0.12l1.19,-1.63l0.77,-1.82l2.66,-0.55l-0.33,0.87l0.01,0.23l0.36,0.82l0.3,0.18l0.23,-0.02Z",\n "name": "Tajikistan"\n },\n "LS": {\n "path": "M493.32,359.69l0.69,0.65l-0.65,1.12l-0.38,0.8l-1.27,0.39l-0.18,0.15l-0.4,0.77l-0.59,0.18l-1.59,-1.78l1.16,-1.5l1.3,-1.02l0.97,-0.46l0.94,0.72Z",\n "name": "Lesotho"\n },\n "TH": {\n "path": "M677.42,253.68l-1.7,-0.88l-0.14,-0.03l-1.77,0.04l0.3,-1.64l-0.3,-0.35l-2.21,0.01l-0.3,0.28l-0.2,2.76l-2.15,5.9l-0.02,0.13l0.17,1.83l0.28,0.27l1.45,0.07l0.93,2.1l0.44,2.15l0.08,0.15l1.4,1.44l0.16,0.09l1.43,0.27l1.04,1.05l-0.58,0.73l-1.24,0.22l-0.15,-0.99l-0.15,-0.22l-2.04,-1.1l-0.36,0.06l-0.23,0.23l-0.72,-0.71l-0.41,-1.18l-0.06,-0.11l-1.33,-1.42l-1.22,-1.2l-0.5,0.13l-0.15,0.54l-0.14,-0.41l0.26,-1.48l0.73,-2.38l1.2,-2.57l1.37,-2.35l0.02,-0.27l-0.95,-2.26l0.03,-1.19l-0.29,-1.42l-0.06,-0.13l-1.65,-2.0l-0.46,-0.99l0.62,-0.34l0.13,-0.15l0.92,-2.23l-0.02,-0.27l-1.05,-1.74l-1.57,-1.86l-1.04,-1.96l0.76,-0.34l0.16,-0.16l1.07,-2.63l1.58,-0.1l0.16,-0.06l1.43,-1.11l1.24,-0.52l0.84,0.62l0.13,1.43l0.28,0.27l1.34,0.09l-0.54,2.39l0.05,2.39l0.45,0.25l2.48,-1.45l0.6,0.36l0.17,0.04l1.47,-0.07l0.25,-0.15l0.41,-0.73l1.58,0.15l1.76,1.93l0.15,2.44l0.08,0.18l1.94,2.15l-0.1,1.96l-0.66,0.93l-2.25,-0.34l-3.24,0.49l-0.19,0.12l-1.6,2.12l-0.06,0.24l0.48,2.46Z",\n "name": "Thailand"\n },\n "TF": {\n "path": "M593.76,417.73l1.38,0.84l2.15,0.37l0.04,0.31l-0.59,1.24l-3.36,0.19l-0.05,-1.38l0.43,-1.56Z",\n "name": "French Southern and Antarctic Lands"\n },\n "TG": {\n "path": "M425.23,269.29l-1.49,0.4l-0.43,-0.68l-0.64,-1.54l-0.18,-1.16l0.54,-2.21l-0.04,-0.24l-0.59,-0.86l-0.23,-1.9l0.0,-1.82l-0.07,-0.19l-0.95,-1.19l0.1,-0.41l1.58,0.04l-0.23,0.97l0.08,0.28l1.55,1.55l0.09,1.13l0.08,0.19l0.42,0.43l-0.11,5.66l0.52,1.53Z",\n "name": "Togo"\n },\n "TD": {\n "path": "M457.57,252.46l0.23,-1.08l-0.28,-0.36l-1.32,-0.05l0.0,-1.35l-0.1,-0.22l-0.9,-0.82l0.99,-3.1l3.12,-2.37l0.12,-0.23l0.13,-3.33l0.95,-5.2l0.53,-1.09l-0.07,-0.36l-0.94,-0.81l-0.03,-0.7l-0.12,-0.23l-0.84,-0.61l-0.57,-3.76l2.21,-1.26l19.67,9.88l0.12,9.74l-1.83,-0.15l-0.28,0.14l-1.14,1.89l-0.68,1.62l0.05,0.31l0.33,0.38l-0.61,0.58l-0.08,0.3l0.25,0.93l-0.58,0.95l-0.29,1.01l0.34,0.37l0.67,-0.11l0.39,0.73l0.03,1.4l0.11,0.23l0.8,0.65l-0.01,0.24l-1.38,0.37l-0.11,0.06l-1.27,1.03l-1.83,2.76l-2.21,1.1l-2.34,-0.15l-0.82,0.25l-0.2,0.37l0.19,0.68l-1.16,0.79l-1.01,0.94l-2.92,0.89l-0.5,-0.46l-0.17,-0.08l-0.41,-0.05l-0.28,0.12l-0.38,0.54l-1.36,0.12l0.1,-0.18l0.01,-0.27l-0.78,-1.72l-0.35,-1.03l-0.17,-0.18l-1.03,-0.41l-1.29,-1.28l0.36,-0.78l0.9,0.2l0.14,-0.0l0.67,-0.17l1.36,0.02l0.26,-0.45l-1.32,-2.22l0.09,-1.64l-0.17,-1.68l-0.04,-0.13l-0.93,-1.53Z",\n "name": "Chad"\n },\n "LY": {\n "path": "M457.99,226.38l-1.57,0.87l-1.25,-1.28l-0.13,-0.08l-3.85,-1.11l-1.04,-1.57l-0.09,-0.09l-1.98,-1.23l-0.27,-0.02l-0.93,0.39l-0.72,-1.2l-0.09,-1.07l-0.06,-0.16l-1.33,-1.75l0.83,-0.94l0.07,-0.24l-0.21,-1.64l0.31,-1.43l-0.17,-1.29l0.43,-2.26l-0.15,-1.33l-0.73,-2.18l0.99,-0.52l0.16,-0.21l0.22,-1.16l-0.22,-1.06l1.54,-0.95l0.81,-0.92l1.19,-0.78l0.14,-0.23l0.12,-1.76l2.57,0.84l0.16,0.01l0.99,-0.23l2.01,0.45l3.19,1.2l1.12,2.36l0.2,0.16l2.24,0.53l3.5,1.14l2.65,1.36l0.29,-0.01l1.22,-0.71l1.27,-1.32l0.07,-0.29l-0.55,-2.0l0.69,-1.19l1.7,-1.23l1.61,-0.35l3.2,0.54l0.78,1.14l0.24,0.13l0.85,0.01l0.84,0.47l2.35,0.31l0.42,0.63l-0.79,1.16l-0.04,0.26l0.35,1.08l-0.61,1.6l-0.0,0.2l0.73,2.16l0.0,24.24l-2.58,0.01l-0.3,0.29l-0.02,0.62l-19.55,-9.83l-0.28,0.01l-2.53,1.44Z",\n "name": "Libya"\n },\n "AE": {\n "path": "M550.59,223.8l0.12,0.08l1.92,-0.41l3.54,0.15l0.23,-0.09l1.71,-1.79l1.86,-1.7l1.31,-1.36l0.26,0.5l0.28,1.72l-0.93,0.01l-0.3,0.26l-0.21,1.73l0.11,0.27l0.08,0.06l-0.7,0.32l-0.17,0.27l-0.01,0.99l-0.68,1.02l-0.05,0.15l-0.06,0.96l-0.32,0.36l-7.19,-1.27l-0.79,-2.22Z",\n "name": "United Arab Emirates"\n },\n "VE": {\n "path": "M240.66,256.5l0.65,0.91l-0.03,1.13l-1.05,1.39l-0.03,0.31l0.95,2.0l0.32,0.17l1.08,-0.16l0.24,-0.21l0.56,-1.83l-0.06,-0.29l-0.71,-0.81l-0.1,-1.58l2.9,-0.96l0.19,-0.37l-0.29,-1.02l0.45,-0.41l0.72,1.43l0.26,0.16l1.65,0.04l1.46,1.27l0.08,0.72l0.3,0.27l2.28,0.02l2.55,-0.25l1.34,1.06l0.14,0.06l1.92,0.31l0.2,-0.03l1.4,-0.79l0.15,-0.25l0.02,-0.36l2.82,-0.14l1.17,-0.01l-0.41,0.14l-0.14,0.46l0.86,1.19l0.22,0.12l1.93,0.18l1.73,1.13l0.37,1.9l0.31,0.24l1.21,-0.05l0.52,0.32l-1.63,1.21l-0.11,0.17l-0.22,0.92l0.07,0.27l0.63,0.69l-0.31,0.24l-1.48,0.39l-0.22,0.3l0.04,1.03l-0.59,0.6l-0.01,0.41l1.67,1.87l0.23,0.48l-0.72,0.76l-2.71,0.91l-1.78,0.39l-0.13,0.06l-0.6,0.49l-1.84,-0.58l-1.89,-0.33l-0.18,0.03l-0.47,0.23l-0.02,0.53l0.96,0.56l-0.08,1.58l0.35,1.58l0.26,0.23l1.91,0.19l0.02,0.07l-1.54,0.62l-0.18,0.2l-0.25,0.92l-0.88,0.35l-1.85,0.58l-0.16,0.13l-0.4,0.64l-1.66,0.14l-1.22,-1.18l-0.79,-2.52l-0.67,-0.88l-0.66,-0.43l0.99,-0.98l0.09,-0.26l-0.09,-0.56l-0.08,-0.16l-0.66,-0.69l-0.47,-1.54l0.18,-1.67l0.55,-0.85l0.45,-1.35l-0.15,-0.36l-0.89,-0.43l-0.19,-0.02l-1.39,0.28l-1.76,-0.13l-0.92,0.23l-1.64,-2.01l-0.17,-0.1l-1.54,-0.33l-3.05,0.23l-0.5,-0.73l-0.15,-0.12l-0.45,-0.15l-0.05,-0.28l0.28,-0.86l0.01,-0.15l-0.2,-1.01l-0.08,-0.15l-0.5,-0.5l-0.3,-1.08l-0.25,-0.22l-0.89,-0.12l0.54,-1.18l0.29,-1.73l0.66,-0.85l0.94,-0.7l0.09,-0.11l0.3,-0.6Z",\n "name": "Venezuela"\n },\n "AF": {\n "path": "M574.42,192.1l2.24,0.95l0.18,0.02l1.89,-0.38l0.22,-0.18l0.46,-1.14l1.82,-0.4l1.5,-0.91l0.14,-0.19l0.46,-2.12l1.93,-0.51l0.2,-0.18l0.26,-0.68l0.87,0.57l0.13,0.05l0.79,0.09l1.35,0.02l1.83,0.59l0.75,0.34l0.26,-0.01l1.66,-0.85l0.7,0.46l0.42,-0.09l0.72,-1.17l1.32,0.05l0.23,-0.1l0.39,-0.43l0.07,-0.14l0.24,-1.08l0.86,-0.81l0.94,0.46l-0.2,0.64l0.23,0.38l0.49,0.09l-0.21,2.15l0.09,0.25l0.99,0.94l0.38,0.03l0.83,-0.57l1.06,-0.27l0.12,-0.06l1.46,-1.21l1.63,0.2l2.4,0.0l0.17,0.32l-1.12,0.25l-1.23,0.52l-2.86,0.33l-2.69,0.6l-0.13,0.06l-1.46,1.25l-0.07,0.36l0.58,1.18l0.25,1.21l-1.13,1.08l-0.09,0.25l0.09,0.98l-0.53,0.79l-2.22,-0.08l-0.28,0.44l0.83,1.57l-1.3,0.58l-0.13,0.11l-1.06,1.69l-0.05,0.18l0.13,1.51l-0.73,0.58l-0.78,-0.22l-0.14,-0.01l-1.91,0.36l-0.23,0.19l-0.2,0.57l-1.65,-0.0l-0.22,0.1l-1.4,1.56l-0.08,0.19l-0.08,2.13l-2.99,1.05l-1.67,-0.23l-0.27,0.1l-0.39,0.46l-1.43,-0.31l-2.43,0.4l-3.69,-1.23l1.96,-2.15l0.08,-0.24l-0.21,-1.78l-0.23,-0.26l-1.69,-0.42l-0.19,-1.62l-0.77,-2.08l0.98,-1.41l-0.14,-0.45l-0.82,-0.31l0.6,-1.79l0.93,-3.21Z",\n "name": "Afghanistan"\n },\n "IQ": {\n "path": "M534.42,190.89l0.13,0.14l1.5,0.78l0.15,1.34l-1.13,0.87l-0.11,0.16l-0.58,2.2l0.04,0.24l1.73,2.67l0.12,0.1l2.99,1.49l1.18,1.94l-0.39,1.89l0.29,0.36l0.5,-0.0l0.02,1.17l0.08,0.2l0.83,0.86l-2.36,-0.29l-0.29,0.13l-1.74,2.49l-4.4,-0.21l-7.03,-5.49l-3.73,-1.94l-2.92,-0.74l-0.89,-3.0l5.33,-2.81l0.15,-0.19l0.95,-3.43l-0.2,-2.0l1.19,-0.61l0.11,-0.09l1.23,-1.73l0.92,-0.38l2.75,0.35l0.81,0.68l0.31,0.05l0.94,-0.38l1.5,3.17Z",\n "name": "Iraq"\n },\n "IS": {\n "path": "M384.26,87.96l-0.51,2.35l0.08,0.28l2.61,2.58l-2.99,2.83l-7.16,2.72l-2.08,0.7l-9.51,-1.71l1.89,-1.36l-0.07,-0.53l-4.4,-1.59l3.33,-0.59l0.25,-0.32l-0.11,-1.2l-0.25,-0.27l-4.82,-0.88l1.38,-2.2l3.54,-0.57l3.8,2.74l0.33,0.01l3.68,-2.18l3.02,1.12l0.25,-0.02l4.01,-2.18l3.72,0.27Z",\n "name": "Iceland"\n },\n "IR": {\n "path": "M556.2,187.5l2.05,-0.52l0.13,-0.07l1.69,-1.57l1.55,0.08l0.15,-0.03l1.02,-0.5l1.64,0.25l2.82,1.48l1.91,0.3l2.8,2.49l0.18,0.08l1.61,0.09l0.19,2.09l-1.0,3.47l-0.69,2.04l0.18,0.38l0.73,0.28l-0.85,1.22l-0.04,0.28l0.81,2.19l0.19,1.72l0.23,0.26l1.69,0.42l0.17,1.43l-2.18,2.39l-0.01,0.4l1.22,1.42l1.0,1.62l0.12,0.11l2.23,1.11l0.06,2.2l0.2,0.27l1.03,0.38l0.14,0.83l-3.38,1.3l-0.18,0.19l-0.87,2.85l-4.44,-0.76l-2.75,-0.62l-2.64,-0.32l-1.01,-3.11l-0.17,-0.19l-1.2,-0.48l-0.18,-0.01l-1.99,0.51l-2.42,1.25l-2.89,-0.84l-2.48,-2.03l-2.41,-0.79l-1.61,-2.47l-1.84,-3.63l-0.36,-0.15l-1.22,0.4l-1.48,-0.84l-0.37,0.06l-0.72,0.82l-1.08,-1.12l-0.02,-1.35l-0.3,-0.29l-0.43,0.0l0.34,-1.64l-0.04,-0.22l-1.29,-2.11l-0.12,-0.11l-3.0,-1.49l-1.62,-2.49l0.52,-1.98l1.18,-0.92l0.11,-0.27l-0.19,-1.66l-0.16,-0.23l-1.55,-0.81l-1.58,-3.33l-1.3,-2.2l0.41,-0.75l0.03,-0.21l-0.73,-3.12l1.2,-0.59l0.35,0.9l1.26,1.35l0.15,0.09l1.81,0.39l0.91,-0.09l0.15,-0.06l2.9,-2.13l0.7,-0.16l0.48,0.56l-0.75,1.26l0.05,0.37l1.56,1.53l0.28,0.08l0.37,-0.09l0.7,1.89l0.21,0.19l2.31,0.59l1.69,1.4l0.15,0.07l3.66,0.49l3.91,-0.76l0.23,-0.19l0.19,-0.52Z",\n "name": "Iran"\n },\n "AM": {\n "path": "M530.51,176.08l2.91,-0.39l0.41,0.63l0.11,0.1l0.66,0.36l-0.32,0.47l0.07,0.41l1.1,0.84l-0.53,0.7l0.06,0.42l1.06,0.8l1.01,0.44l0.04,1.56l-0.44,0.04l-0.88,-1.46l0.01,-0.37l-0.3,-0.31l-0.98,0.01l-0.65,-0.69l-0.26,-0.09l-0.38,0.06l-0.97,-0.82l-1.64,-0.65l0.2,-1.2l-0.02,-0.16l-0.28,-0.69Z",\n "name": "Armenia"\n },\n "IT": {\n "path": "M451.68,158.58l0.2,0.16l3.3,0.75l-0.22,1.26l0.02,0.18l0.35,0.78l-1.4,-0.32l-0.21,0.03l-2.04,1.1l-0.16,0.29l0.13,1.47l-0.29,0.82l0.02,0.24l0.82,1.57l0.1,0.11l2.28,1.5l1.29,2.53l2.79,2.43l0.2,0.07l1.83,-0.02l0.31,0.34l-0.46,0.39l0.06,0.5l4.06,1.97l2.06,1.49l0.17,0.36l-0.24,0.53l-1.08,-1.07l-0.15,-0.08l-2.18,-0.49l-0.33,0.15l-1.05,1.91l0.11,0.4l1.63,0.98l-0.22,1.12l-0.84,0.14l-0.22,0.15l-1.27,2.38l-0.54,0.12l0.01,-0.47l0.48,-1.46l0.5,-0.58l0.03,-0.35l-0.97,-1.69l-0.76,-1.48l-0.17,-0.15l-0.94,-0.33l-0.68,-1.18l-0.16,-0.13l-1.53,-0.52l-1.03,-1.14l-0.19,-0.1l-1.78,-0.19l-1.88,-1.3l-2.27,-1.94l-1.64,-1.68l-0.76,-2.94l-0.21,-0.21l-1.22,-0.35l-2.01,-1.0l-0.24,-0.01l-1.15,0.42l-0.11,0.07l-1.38,1.36l-0.5,0.11l0.19,-0.87l-0.21,-0.35l-1.19,-0.34l-0.56,-2.06l0.76,-0.82l0.03,-0.36l-0.68,-1.08l0.04,-0.31l0.68,0.42l0.19,0.04l1.21,-0.15l0.14,-0.06l1.18,-0.89l0.25,0.29l0.25,0.1l1.19,-0.1l0.25,-0.18l0.45,-1.04l1.61,0.34l0.19,-0.02l1.1,-0.53l0.17,-0.22l0.15,-0.95l1.19,0.35l0.35,-0.16l0.23,-0.47l2.11,-0.47l0.45,0.89ZM459.35,184.63l-0.71,1.81l0.0,0.23l0.33,0.79l-0.37,1.03l-1.6,-0.91l-1.33,-0.34l-3.24,-1.36l0.23,-0.99l2.73,0.24l3.95,-0.5ZM443.95,175.91l1.26,1.77l-0.31,3.47l-0.82,-0.13l-0.26,0.08l-0.83,0.79l-0.64,-0.52l-0.1,-3.42l-0.44,-1.34l0.91,0.1l0.21,-0.06l1.01,-0.74Z",\n "name": "Italy"\n },\n "VN": {\n "path": "M690.8,230.21l-2.86,1.93l-2.09,2.46l-0.06,0.11l-0.55,1.8l0.04,0.26l4.26,6.1l2.31,1.63l1.46,1.97l1.12,4.62l-0.32,4.3l-1.97,1.57l-2.85,1.62l-2.09,2.14l-2.83,2.13l-0.67,-1.19l0.65,-1.58l-0.09,-0.35l-1.47,-1.14l1.67,-0.79l2.57,-0.18l0.22,-0.47l-0.89,-1.24l3.88,-1.8l0.17,-0.24l0.31,-3.05l-0.01,-0.13l-0.56,-1.63l0.44,-2.48l-0.01,-0.15l-0.63,-1.81l-0.08,-0.12l-1.87,-1.77l-3.64,-5.3l-0.11,-0.1l-2.68,-1.39l0.45,-0.59l1.53,-0.65l0.16,-0.39l-0.97,-2.27l-0.27,-0.18l-2.89,-0.02l-1.04,-2.21l-1.28,-1.83l0.96,-0.46l1.97,0.01l2.43,-0.3l0.13,-0.05l1.95,-1.29l1.04,0.85l0.13,0.06l1.98,0.42l-0.32,1.21l0.09,0.3l1.19,1.07l0.12,0.07l1.88,0.51Z",\n "name": "Vietnam"\n },\n "AR": {\n "path": "M258.11,341.34l1.4,1.81l0.51,-0.06l0.89,-1.94l2.51,0.1l0.36,0.49l4.6,4.31l0.15,0.08l1.99,0.39l3.01,1.93l2.5,1.01l0.28,0.91l-2.4,3.97l0.17,0.44l2.57,0.74l2.81,0.41l2.09,-0.44l0.14,-0.07l2.27,-2.06l0.09,-0.17l0.38,-2.2l0.88,-0.36l1.05,1.29l-0.04,1.88l-1.98,1.4l-1.72,1.13l-2.84,2.65l-3.34,3.73l-0.07,0.12l-0.63,2.22l-0.67,2.85l0.02,2.73l-0.47,0.54l-0.07,0.17l-0.36,3.28l0.12,0.27l3.03,2.32l-0.31,1.78l0.11,0.29l1.44,1.15l-0.11,1.17l-2.32,3.57l-3.59,1.51l-4.95,0.6l-2.72,-0.29l-0.32,0.38l0.5,1.67l-0.49,2.13l0.01,0.16l0.4,1.29l-1.27,0.88l-2.41,0.39l-2.33,-1.05l-0.31,0.04l-0.97,0.78l-0.11,0.27l0.35,2.98l0.16,0.23l1.69,0.91l0.31,-0.02l1.08,-0.75l0.46,0.96l-2.1,0.88l-2.01,1.89l-0.09,0.18l-0.36,3.05l-0.51,1.42l-2.16,0.01l-0.19,0.07l-1.96,1.59l-0.1,0.15l-0.72,2.34l0.08,0.31l2.46,2.31l0.13,0.07l2.09,0.56l-0.74,2.45l-2.86,1.75l-0.12,0.14l-1.59,3.71l-2.2,1.24l-0.1,0.09l-1.03,1.54l-0.04,0.23l0.81,3.45l0.06,0.13l1.13,1.32l-2.59,-0.57l-5.89,-0.44l-0.92,-1.73l0.05,-2.4l-0.34,-0.3l-1.49,0.19l-0.72,-0.98l-0.2,-3.21l1.79,-1.33l0.1,-0.13l0.79,-2.04l0.02,-0.16l-0.27,-1.52l1.31,-2.69l0.91,-4.15l-0.23,-1.72l0.91,-0.49l0.15,-0.33l-0.27,-1.16l-0.15,-0.2l-0.87,-0.46l0.65,-1.01l-0.04,-0.37l-1.06,-1.09l-0.54,-3.2l0.83,-0.51l0.14,-0.29l-0.42,-3.6l0.58,-2.98l0.64,-2.5l1.41,-1.0l0.12,-0.32l-0.75,-2.8l-0.01,-2.48l1.81,-1.78l0.09,-0.22l-0.06,-2.3l1.39,-2.69l0.03,-0.14l0.01,-2.58l-0.11,-0.24l-0.57,-0.45l-1.1,-4.59l1.49,-2.73l0.04,-0.17l-0.23,-2.59l0.86,-2.38l1.6,-2.48l1.74,-1.65l0.04,-0.39l-0.64,-0.89l0.42,-0.7l0.04,-0.16l-0.08,-4.26l2.55,-1.23l0.16,-0.18l0.86,-2.75l-0.01,-0.22l-0.22,-0.48l1.84,-2.1l3.0,0.59ZM256.77,438.98l-2.1,0.15l-1.18,-1.14l-0.19,-0.08l-1.53,-0.09l-2.38,-0.0l-0.0,-6.28l0.4,0.65l1.25,2.55l0.11,0.12l3.26,2.07l3.19,0.8l-0.82,1.26Z",\n "name": "Argentina"\n },\n "AU": {\n "path": "M705.55,353.06l0.09,0.09l0.37,0.05l0.13,-0.35l-0.57,-1.69l0.48,0.3l0.71,0.99l0.34,0.11l0.2,-0.29l-0.04,-1.37l-0.04,-0.14l-1.22,-2.07l-0.28,-0.9l-0.51,-0.69l0.24,-1.33l0.52,-0.7l0.34,-1.32l0.01,-0.13l-0.25,-1.44l0.51,-0.94l0.1,1.03l0.23,0.26l0.32,-0.14l1.01,-1.72l1.94,-0.84l1.27,-1.14l1.84,-0.92l1.0,-0.18l0.6,0.28l0.26,-0.0l1.94,-0.96l1.48,-0.28l0.19,-0.13l0.32,-0.49l0.51,-0.18l1.42,0.05l2.63,-0.76l0.11,-0.06l1.36,-1.15l0.08,-0.1l0.61,-1.33l1.42,-1.27l0.1,-0.19l0.11,-1.03l0.06,-1.32l1.39,-1.74l0.85,1.79l0.4,0.14l1.07,-0.51l0.11,-0.45l-0.77,-1.05l0.53,-0.84l0.86,0.43l0.43,-0.22l0.29,-1.85l1.29,-1.19l0.6,-0.98l1.16,-0.4l0.2,-0.27l0.02,-0.34l0.74,0.2l0.38,-0.27l0.03,-0.44l1.98,-0.61l1.7,1.08l1.36,1.48l0.22,0.1l1.55,0.02l1.57,0.24l0.33,-0.4l-0.48,-1.27l1.09,-1.86l1.06,-0.63l0.1,-0.42l-0.28,-0.46l0.93,-1.24l1.36,-0.8l1.16,0.27l0.14,0.0l2.1,-0.48l0.23,-0.3l-0.05,-1.3l-0.18,-0.26l-1.08,-0.49l0.44,-0.12l1.52,0.58l1.39,1.06l2.11,0.65l0.19,-0.0l0.59,-0.21l1.44,0.72l0.27,0.0l1.37,-0.68l0.84,0.2l0.26,-0.06l0.37,-0.3l0.82,0.89l-0.56,1.14l-0.84,0.91l-0.75,0.07l-0.26,0.38l0.26,0.9l-0.67,1.15l-0.88,1.24l-0.05,0.25l0.18,0.72l0.12,0.17l1.99,1.42l1.96,0.84l1.25,0.86l1.8,1.51l0.19,0.07l0.63,-0.0l1.15,0.58l0.34,0.7l0.17,0.15l2.39,0.88l0.24,-0.02l1.65,-0.88l0.14,-0.16l0.49,-1.37l0.52,-1.19l0.31,-1.39l0.75,-2.02l0.01,-0.19l-0.33,-1.16l0.16,-0.67l0.0,-0.13l-0.28,-1.41l0.3,-1.78l0.42,-0.45l0.05,-0.33l-0.33,-0.73l0.56,-1.25l0.48,-1.39l0.07,-0.69l0.58,-0.59l0.48,0.84l0.17,1.53l0.17,0.24l0.47,0.23l0.09,0.9l0.05,0.14l0.87,1.23l0.17,1.33l-0.09,0.89l0.03,0.15l0.9,2.0l0.43,0.13l1.38,-0.83l0.71,0.92l1.06,0.88l-0.22,0.96l0.0,0.14l0.53,2.2l0.38,1.3l0.15,0.18l0.52,0.26l0.62,2.01l-0.23,1.27l0.02,0.18l0.81,1.76l0.14,0.14l2.69,1.35l3.21,2.21l-0.2,0.4l0.04,0.34l1.39,1.6l0.95,2.78l0.43,0.16l0.79,-0.46l0.85,0.96l0.39,0.05l0.22,-0.15l0.36,2.33l0.09,0.18l1.78,1.63l1.16,1.01l1.9,2.1l0.67,2.05l0.06,1.47l-0.17,1.64l0.03,0.17l1.16,2.22l-0.14,2.28l-0.43,1.24l-0.68,2.44l0.04,1.63l-0.48,1.92l-1.06,2.43l-1.79,1.32l-0.1,0.12l-0.91,2.15l-0.82,1.37l-0.76,2.47l-0.98,1.46l-0.63,2.14l-0.33,2.02l0.1,0.82l-1.21,0.85l-2.71,0.1l-0.13,0.03l-2.31,1.19l-1.21,1.17l-1.34,1.11l-1.89,-1.18l-1.33,-0.46l0.32,-1.24l-0.4,-0.35l-1.46,0.61l-2.06,1.98l-1.99,-0.73l-1.43,-0.46l-1.45,-0.22l-2.32,-0.81l-1.51,-1.67l-0.45,-2.11l-0.6,-1.5l-0.07,-0.11l-1.23,-1.16l-0.16,-0.08l-1.96,-0.28l0.59,-0.99l0.03,-0.24l-0.61,-2.1l-0.54,-0.08l-1.16,1.85l-1.23,0.29l0.73,-0.88l0.06,-0.12l0.37,-1.57l0.93,-1.33l0.05,-0.2l-0.2,-2.07l-0.53,-0.17l-2.01,2.35l-1.52,0.94l-0.12,0.14l-0.82,1.93l-1.5,-0.9l0.07,-1.32l-0.06,-0.2l-1.57,-2.04l-1.15,-0.92l0.3,-0.41l-0.1,-0.44l-3.21,-1.69l-0.13,-0.03l-1.69,-0.08l-2.35,-1.31l-0.16,-0.04l-4.55,0.27l-3.24,0.99l-2.8,0.91l-2.33,-0.18l-0.17,0.03l-2.63,1.41l-2.14,0.64l-0.2,0.19l-0.47,1.42l-0.8,0.99l-1.99,0.06l-1.55,0.24l-2.27,-0.5l-1.79,0.3l-1.71,0.13l-0.19,0.09l-1.38,1.39l-0.58,-0.1l-0.21,0.04l-1.26,0.8l-1.13,0.85l-1.72,-0.1l-1.6,-0.0l-2.58,-1.76l-1.21,-0.49l0.04,-1.19l1.04,-0.32l0.16,-0.12l0.42,-0.64l0.05,-0.19l-0.09,-0.97l0.3,-2.0l-0.28,-1.64l-1.34,-2.84l-0.39,-1.49l0.1,-1.51l-0.04,-0.17l-0.96,-1.72l-0.06,-0.73l-0.09,-0.19l-1.04,-1.01l-0.3,-2.02l-0.05,-0.12l-1.23,-1.83ZM784.95,393.35l2.39,1.01l0.2,0.01l3.26,-0.96l1.19,0.16l0.16,3.19l-0.78,0.95l-0.07,0.16l-0.19,1.83l-0.43,-0.41l-0.44,0.03l-1.61,1.96l-0.4,-0.12l-1.38,-0.09l-1.43,-2.42l-0.37,-2.03l-1.4,-2.53l0.04,-0.94l1.27,0.2Z",\n "name": "Australia"\n },\n "IL": {\n "path": "M509.04,199.22l0.71,0.0l0.27,-0.17l0.15,-0.33l0.19,-0.01l0.02,0.73l-0.27,0.34l0.02,0.08l-0.32,0.62l-0.65,-0.27l-0.41,0.19l-0.52,1.85l0.16,0.35l0.14,0.07l-0.17,0.1l-0.14,0.21l-0.11,0.73l0.39,0.33l0.81,-0.26l0.03,0.64l-0.97,3.43l-1.28,-3.67l0.62,-0.78l-0.03,-0.41l0.58,-1.16l0.5,-2.07l0.27,-0.54Z",\n "name": "Israel"\n },\n "IN": {\n "path": "M615.84,192.58l2.4,2.97l-0.24,2.17l0.05,0.2l0.94,1.35l-0.06,0.97l-1.46,-0.3l-0.35,0.36l0.7,3.06l0.12,0.18l2.46,1.75l3.11,1.72l-1.23,0.96l-0.1,0.13l-0.97,2.55l0.16,0.38l2.41,1.02l2.37,1.33l3.27,1.52l3.43,0.37l1.37,1.3l0.17,0.08l1.92,0.25l3.0,0.62l2.15,-0.04l0.28,-0.22l0.29,-1.06l0.0,-0.13l-0.32,-1.66l0.16,-0.94l1.0,-0.37l0.23,2.28l0.18,0.24l2.28,1.02l0.2,0.02l1.52,-0.41l2.06,0.18l2.08,-0.08l0.29,-0.27l0.18,-1.66l-0.1,-0.26l-0.53,-0.44l1.38,-0.23l0.15,-0.07l2.26,-2.0l2.75,-1.65l1.97,0.63l0.25,-0.03l1.54,-0.99l0.89,1.28l-0.72,0.97l0.2,0.48l2.49,0.37l0.11,0.61l-0.69,0.39l-0.15,0.3l0.15,1.22l-1.36,-0.37l-0.23,0.03l-3.24,1.86l-0.15,0.28l0.07,1.44l-1.33,2.16l-0.04,0.13l-0.12,1.24l-0.98,1.91l-1.72,-0.53l-0.39,0.28l-0.09,2.66l-0.52,0.83l-0.04,0.23l0.21,0.89l-0.71,0.36l-1.21,-3.85l-0.29,-0.21l-0.69,0.01l-0.29,0.23l-0.28,1.17l-0.84,-0.84l0.6,-1.17l0.97,-0.13l0.23,-0.16l1.15,-2.25l-0.18,-0.42l-1.54,-0.47l-2.3,0.04l-2.13,-0.33l-0.19,-1.63l-0.26,-0.26l-1.13,-0.13l-1.93,-1.13l-0.42,0.13l-0.88,1.82l0.08,0.37l1.47,1.15l-1.21,0.77l-0.1,0.1l-0.56,0.97l0.13,0.42l1.31,0.61l-0.36,1.35l0.01,0.2l0.85,1.95l0.37,2.05l-0.26,0.68l-1.55,-0.02l-3.09,0.54l-0.25,0.32l0.13,1.84l-1.21,1.4l-3.64,1.79l-2.79,3.04l-1.86,1.61l-2.48,1.68l-0.13,0.25l-0.0,1.0l-1.07,0.55l-2.21,0.9l-1.13,0.13l-0.25,0.19l-0.75,1.96l-0.02,0.15l0.52,3.31l0.13,2.03l-1.03,2.35l-0.03,0.12l-0.01,4.03l-1.02,0.1l-0.23,0.15l-1.14,1.93l0.04,0.36l0.44,0.48l-1.83,0.57l-0.18,0.15l-0.81,1.65l-0.74,0.53l-2.14,-2.12l-1.14,-3.47l-0.96,-2.57l-0.9,-1.26l-1.3,-2.38l-0.61,-3.14l-0.44,-1.62l-2.29,-3.56l-1.03,-4.94l-0.74,-3.29l0.01,-3.12l-0.49,-2.51l-0.41,-0.22l-3.56,1.53l-1.59,-0.28l-2.96,-2.87l0.94,-0.74l0.06,-0.41l-0.74,-1.03l-2.73,-2.1l1.35,-1.43l5.38,0.01l0.29,-0.36l-0.5,-2.29l-0.09,-0.15l-1.33,-1.28l-0.27,-1.96l-0.12,-0.2l-1.36,-1.0l2.42,-2.48l2.77,0.2l0.24,-0.1l2.62,-2.85l1.59,-2.8l2.41,-2.74l0.07,-0.2l-0.04,-1.82l2.01,-1.51l-0.01,-0.49l-1.95,-1.33l-0.83,-1.81l-0.82,-2.27l0.98,-0.97l3.64,0.66l2.89,-0.42l0.17,-0.08l2.18,-2.15Z",\n "name": "India"\n },\n "TZ": {\n "path": "M505.77,287.58l0.36,0.23l8.95,5.03l0.15,1.3l0.13,0.21l3.4,2.37l-1.07,2.88l-0.02,0.14l0.15,1.42l0.15,0.23l1.47,0.84l0.05,0.42l-0.66,1.44l-0.02,0.18l0.13,0.72l-0.16,1.16l0.03,0.19l0.87,1.57l1.03,2.48l0.12,0.14l0.53,0.32l-1.59,1.18l-2.64,0.95l-1.45,-0.04l-0.2,0.07l-0.81,0.69l-1.64,0.06l-0.68,0.3l-2.9,-0.69l-1.71,0.17l-0.65,-3.18l-0.05,-0.12l-1.35,-1.88l-0.19,-0.12l-2.41,-0.46l-1.38,-0.74l-1.63,-0.44l-0.96,-0.41l-0.95,-0.58l-1.31,-3.09l-1.47,-1.46l-0.45,-1.31l0.24,-1.34l-0.39,-1.99l0.71,-0.08l0.18,-0.09l0.91,-0.91l0.98,-1.31l0.59,-0.5l0.11,-0.24l-0.02,-0.81l-0.08,-0.2l-0.47,-0.5l-0.1,-0.67l0.51,-0.23l0.18,-0.25l0.14,-1.47l-0.05,-0.2l-0.76,-1.09l0.45,-0.15l2.71,0.03l5.01,-0.19Z",\n "name": "Tanzania"\n },\n "AZ": {\n "path": "M539.36,175.66l0.16,0.09l1.11,0.2l0.32,-0.15l0.4,-0.71l1.22,-0.99l1.11,1.33l1.26,2.09l0.22,0.14l1.06,0.13l0.28,0.29l-1.46,0.17l-0.26,0.24l-0.43,2.26l-0.39,0.92l-0.85,0.63l-0.12,0.25l0.06,1.2l-0.22,0.05l-1.28,-1.25l0.74,-1.25l-0.03,-0.35l-0.74,-0.86l-0.3,-0.1l-1.05,0.27l-2.49,1.82l-0.04,-1.46l-0.18,-0.27l-1.09,-0.47l-0.8,-0.6l0.53,-0.7l-0.06,-0.42l-1.11,-0.84l0.34,-0.51l-0.11,-0.43l-0.89,-0.48l-0.33,-0.49l0.25,-0.2l1.78,0.81l1.35,0.18l0.25,-0.09l0.34,-0.35l0.02,-0.39l-1.04,-1.36l0.28,-0.18l0.49,0.07l1.65,1.74ZM533.53,180.16l0.63,0.67l0.22,0.09l0.8,-0.0l0.04,0.31l0.66,1.09l-0.94,-0.21l-1.16,-1.24l-0.25,-0.71Z",\n "name": "Azerbaijan"\n },\n "IE": {\n "path": "M405.17,135.35l0.36,2.16l-1.78,2.84l-4.28,1.91l-3.02,-0.43l1.81,-3.13l0.02,-0.26l-1.23,-3.26l3.24,-2.56l1.54,-1.32l0.37,1.33l-0.49,1.77l0.3,0.38l1.49,-0.05l1.68,0.63Z",\n "name": "Ireland"\n },\n "ID": {\n "path": "M756.56,287.86l0.69,4.02l0.15,0.21l2.59,1.5l0.39,-0.07l2.05,-2.61l2.75,-1.45l2.09,-0.0l2.08,0.85l1.85,0.89l2.52,0.46l0.08,15.44l-1.72,-1.6l-0.15,-0.07l-2.54,-0.51l-0.29,0.1l-0.53,0.62l-2.53,0.06l0.78,-1.51l1.48,-0.66l0.17,-0.34l-0.65,-2.74l-1.23,-2.19l-0.14,-0.13l-4.85,-2.13l-2.09,-0.23l-3.7,-2.28l-0.41,0.1l-0.67,1.11l-0.63,0.14l-0.41,-0.67l-0.01,-1.01l-0.14,-0.25l-1.39,-0.89l2.05,-0.69l1.73,0.05l0.29,-0.39l-0.21,-0.66l-0.29,-0.21l-3.5,-0.0l-0.9,-1.36l-0.19,-0.13l-2.14,-0.44l-0.65,-0.76l2.86,-0.51l1.28,-0.79l3.75,0.96l0.32,0.76ZM758.01,300.37l-0.79,1.04l-0.14,-1.07l0.4,-0.81l0.29,-0.47l0.24,0.31l-0.0,1.0ZM747.45,292.9l0.48,1.02l-1.45,-0.69l-2.09,-0.21l-1.45,0.16l-1.28,-0.07l0.35,-0.81l2.86,-0.1l2.58,0.68ZM741.15,285.69l-0.16,-0.25l-0.72,-3.08l0.47,-1.86l0.35,-0.38l0.1,0.73l0.25,0.26l1.28,0.19l0.18,0.78l-0.11,1.8l-0.96,-0.18l-0.35,0.22l-0.38,1.52l0.05,0.24ZM741.19,285.75l0.76,0.97l-0.11,0.05l-0.65,-1.02ZM739.18,293.52l-0.61,0.54l-1.44,-0.38l-0.25,-0.55l1.93,-0.09l0.36,0.48ZM728.4,295.87l-0.27,-0.07l-2.26,0.89l-0.37,-0.41l0.27,-0.8l-0.09,-0.33l-1.68,-1.37l0.17,-2.29l-0.42,-0.3l-1.67,0.76l-0.17,0.29l0.21,2.92l0.09,3.34l-1.22,0.28l-0.78,-0.54l0.65,-2.1l0.01,-0.14l-0.39,-2.42l-0.29,-0.25l-0.86,-0.02l-0.63,-1.4l0.99,-1.61l0.35,-1.97l1.24,-3.73l0.49,-0.96l1.95,-1.7l1.86,0.69l3.16,0.35l2.92,-0.1l0.17,-0.06l2.24,-1.65l0.11,0.14l-1.8,2.22l-1.72,0.44l-2.41,-0.48l-4.21,0.13l-2.19,0.36l-0.25,0.24l-0.36,1.9l0.08,0.27l2.24,2.23l0.4,0.02l1.29,-1.08l3.19,-0.58l-0.19,0.06l-1.04,1.4l-2.13,0.94l-0.12,0.45l2.26,3.06l-0.37,0.69l0.03,0.32l1.51,1.95ZM728.48,295.97l0.59,0.76l-0.02,1.37l-1.0,0.55l-0.64,-0.58l1.09,-1.84l-0.02,-0.26ZM728.64,286.95l0.79,-0.14l-0.07,0.39l-0.72,-0.24ZM732.38,310.1l-1.89,0.49l-0.06,-0.06l0.17,-0.64l1.0,-1.42l2.14,-0.87l0.1,0.2l0.04,0.58l-1.49,1.72ZM728.26,305.71l-0.17,0.63l-3.53,0.67l-3.02,-0.28l-0.0,-0.42l1.66,-0.44l1.47,0.71l0.16,0.03l1.75,-0.21l1.69,-0.69ZM722.98,310.33l-0.74,0.03l-2.52,-1.35l1.42,-0.3l1.19,0.7l0.72,0.63l-0.06,0.28ZM716.24,305.63l0.66,0.49l0.22,0.06l1.35,-0.18l0.31,0.53l-4.18,0.77l-0.8,-0.01l0.51,-0.86l1.2,-0.02l0.24,-0.12l0.49,-0.65ZM715.84,280.21l0.09,0.34l2.25,1.86l-2.25,0.22l-0.24,0.17l-0.84,1.71l-0.03,0.15l0.1,2.11l-2.27,1.62l-0.13,0.24l-0.06,2.46l-0.74,2.92l-0.02,-0.05l-0.39,-0.16l-2.62,1.04l-0.86,-1.33l-0.23,-0.14l-1.71,-0.14l-1.19,-0.76l-0.25,-0.03l-2.78,0.84l-0.79,-1.05l-0.26,-0.12l-1.61,0.13l-1.8,-0.25l-0.36,-3.13l-0.15,-0.23l-1.18,-0.65l-1.13,-2.02l-0.33,-2.1l0.27,-2.19l1.05,-1.17l0.28,1.12l0.1,0.16l1.71,1.41l0.28,0.05l1.55,-0.49l1.54,0.17l0.23,-0.07l1.4,-1.21l1.05,-0.19l2.3,0.68l0.16,0.0l2.04,-0.53l0.21,-0.19l1.26,-3.41l0.91,-0.82l0.09,-0.14l0.8,-2.64l2.63,0.0l1.71,0.33l-1.19,1.89l0.02,0.34l1.74,2.24l-0.37,1.0ZM692.67,302.0l0.26,0.19l4.8,0.25l0.28,-0.16l0.44,-0.83l4.29,1.12l0.85,1.52l0.23,0.15l3.71,0.45l2.37,1.15l-2.06,0.69l-2.77,-1.0l-2.25,0.07l-2.57,-0.18l-2.31,-0.45l-2.94,-0.97l-1.84,-0.25l-0.13,0.01l-0.97,0.29l-4.34,-0.98l-0.38,-0.94l-0.25,-0.19l-1.76,-0.14l1.31,-1.84l2.81,0.14l1.97,0.96l0.95,0.19l0.28,0.74ZM685.63,299.27l-2.36,0.04l-2.07,-2.05l-3.17,-2.02l-1.06,-1.5l-1.88,-2.02l-1.22,-1.85l-1.9,-3.49l-2.2,-2.11l-0.71,-2.08l-0.94,-1.99l-0.1,-0.12l-2.21,-1.54l-1.35,-2.17l-1.86,-1.39l-2.53,-2.68l-0.14,-0.81l1.22,0.08l3.76,0.47l2.16,2.4l1.94,1.7l1.37,1.04l2.35,2.67l0.22,0.1l2.44,0.04l1.99,1.62l1.42,2.06l0.09,0.09l1.67,1.0l-0.88,1.8l0.11,0.39l1.44,0.87l0.13,0.04l0.68,0.05l0.41,1.62l0.87,1.4l0.22,0.14l1.71,0.21l1.06,1.38l-0.61,3.04l-0.09,3.6Z",\n "name": "Indonesia"\n },\n "UA": {\n "path": "M500.54,141.42l0.9,0.13l0.27,-0.11l0.52,-0.62l0.68,0.13l2.43,-0.3l1.32,1.57l-0.45,0.48l-0.07,0.26l0.21,1.03l0.27,0.24l1.85,0.15l0.76,1.22l-0.05,0.55l0.2,0.31l3.18,1.15l0.18,0.01l1.75,-0.47l1.42,1.41l0.22,0.09l1.42,-0.03l3.44,0.99l0.02,0.65l-0.97,1.62l-0.03,0.24l0.52,1.67l-0.29,0.79l-2.24,0.22l-0.14,0.05l-1.29,0.89l-0.13,0.23l-0.07,1.16l-1.75,0.22l-0.12,0.04l-1.6,0.98l-2.27,0.16l-0.12,0.04l-2.16,1.17l-0.16,0.29l0.15,1.94l0.14,0.23l1.23,0.75l0.18,0.04l2.06,-0.15l-0.22,0.51l-2.67,0.54l-3.27,1.72l-1.0,-0.45l0.45,-1.19l-0.19,-0.39l-2.34,-0.78l0.15,-0.2l2.32,-1.0l0.09,-0.49l-0.73,-0.72l-0.15,-0.08l-3.69,-0.75l-0.14,-0.96l-0.35,-0.25l-2.32,0.39l-0.21,0.15l-0.91,1.7l-1.77,2.1l-0.93,-0.44l-0.24,-0.0l-1.05,0.45l-0.48,-0.25l0.13,-0.07l0.14,-0.15l0.43,-1.04l0.67,-0.97l0.04,-0.26l-0.1,-0.31l0.04,-0.02l0.11,0.19l0.24,0.15l1.48,0.09l0.78,-0.25l0.07,-0.53l-0.27,-0.19l0.09,-0.25l-0.08,-0.33l-0.81,-0.74l-0.34,-1.24l-0.14,-0.18l-0.73,-0.42l0.15,-0.87l-0.11,-0.29l-1.13,-0.86l-0.15,-0.06l-0.97,-0.11l-1.79,-0.97l-0.2,-0.03l-1.66,0.32l-0.13,0.06l-0.52,0.41l-0.95,-0.0l-0.23,0.11l-0.56,0.66l-1.74,0.29l-0.79,0.43l-1.01,-0.68l-0.16,-0.05l-1.57,-0.01l-1.52,-0.35l-0.23,0.04l-0.71,0.45l-0.09,-0.43l-0.13,-0.19l-1.18,-0.74l0.38,-1.02l0.53,-0.64l0.35,0.12l0.37,-0.41l-0.57,-1.29l2.1,-2.5l1.16,-0.36l0.2,-0.2l0.27,-0.92l-0.01,-0.2l-1.1,-2.52l0.79,-0.09l0.13,-0.05l1.3,-0.86l1.83,-0.07l2.48,0.26l2.84,0.8l1.91,0.06l0.88,0.45l0.29,-0.01l0.72,-0.44l0.49,0.58l0.25,0.11l2.2,-0.16l0.94,0.3l0.39,-0.26l0.15,-1.57l0.61,-0.59l2.01,-0.19Z",\n "name": "Ukraine"\n },\n "QA": {\n "path": "M548.47,221.47l-0.15,-1.72l0.59,-1.23l0.38,-0.16l0.54,0.6l0.04,1.4l-0.47,1.37l-0.41,0.11l-0.53,-0.37Z",\n "name": "Qatar"\n },\n "MZ": {\n "path": "M507.71,314.14l1.65,-0.18l2.96,0.7l0.2,-0.02l0.6,-0.29l1.68,-0.06l0.18,-0.07l0.8,-0.69l1.5,0.02l2.74,-0.98l1.74,-1.27l0.25,0.7l-0.1,2.47l0.31,2.27l0.1,3.97l0.42,1.24l-0.7,1.71l-0.94,1.73l-1.52,1.52l-5.06,2.21l-2.88,2.8l-1.01,0.51l-1.72,1.81l-0.99,0.58l-0.15,0.23l-0.21,1.86l0.04,0.19l1.17,1.95l0.47,1.47l0.03,0.74l0.39,0.28l0.05,-0.01l-0.06,2.13l-0.39,1.19l0.1,0.33l0.42,0.32l-0.28,0.83l-0.95,0.86l-2.03,0.88l-3.08,1.49l-1.1,0.99l-0.09,0.28l0.21,1.13l0.21,0.23l0.38,0.11l-0.14,0.89l-1.39,-0.02l-0.17,-0.94l-0.38,-1.23l-0.2,-0.89l0.44,-2.91l-0.01,-0.14l-0.65,-1.88l-1.15,-3.55l2.52,-2.85l0.68,-1.89l0.29,-0.18l0.14,-0.2l0.28,-1.53l-0.03,-0.19l-0.36,-0.7l0.1,-1.83l0.49,-1.84l-0.01,-3.26l-0.14,-0.25l-1.3,-0.83l-0.11,-0.04l-1.08,-0.17l-0.47,-0.55l-0.1,-0.08l-1.16,-0.54l-0.13,-0.03l-1.83,0.04l-0.32,-2.25l7.19,-1.99l1.32,1.12l0.29,0.06l0.55,-0.19l0.75,0.49l0.11,0.81l-0.49,1.11l-0.02,0.15l0.19,1.81l0.09,0.18l1.63,1.59l0.48,-0.1l0.72,-1.68l0.99,-0.49l0.17,-0.29l-0.21,-3.29l-0.04,-0.13l-1.11,-1.92l-0.9,-0.82l-0.21,-0.08l-0.62,0.03l-0.63,-2.98l0.61,-1.67Z",\n "name": "Mozambique"\n }\n },\n "height": 440.7063107441331,\n "projection": {\n "type": "mill",\n "centralMeridian": 11.5\n },\n "width": 900.0\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery-jvectormap.js?')},"./buyercall/assets/scripts/vendor/jquery-ui.min.js":(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/*! jQuery UI - v1.12.0 - 2016-07-08\n* http://jqueryui.com\n* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js\n* Copyright jQuery Foundation and other contributors; Licensed MIT */\n\n(function (t) {\n true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n})(function (t) {\n function e(t) {\n for (var e = t.css("visibility"); "inherit" === e;) t = t.parent(), e = t.css("visibility");\n return "hidden" !== e;\n }\n function i(t) {\n for (var e, i; t.length && t[0] !== document;) {\n if (e = t.css("position"), ("absolute" === e || "relative" === e || "fixed" === e) && (i = parseInt(t.css("zIndex"), 10), !isNaN(i) && 0 !== i)) return i;\n t = t.parent();\n }\n return 0;\n }\n function s() {\n this._curInst = null, this._keyEvent = !1, this._disabledInputs = [], this._datepickerShowing = !1, this._inDialog = !1, this._mainDivId = "ui-datepicker-div", this._inlineClass = "ui-datepicker-inline", this._appendClass = "ui-datepicker-append", this._triggerClass = "ui-datepicker-trigger", this._dialogClass = "ui-datepicker-dialog", this._disableClass = "ui-datepicker-disabled", this._unselectableClass = "ui-datepicker-unselectable", this._currentClass = "ui-datepicker-current-day", this._dayOverClass = "ui-datepicker-days-cell-over", this.regional = [], this.regional[""] = {\n closeText: "Done",\n prevText: "Prev",\n nextText: "Next",\n currentText: "Today",\n monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],\n monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],\n dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],\n dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],\n dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],\n weekHeader: "Wk",\n dateFormat: "mm/dd/yy",\n firstDay: 0,\n isRTL: !1,\n showMonthAfterYear: !1,\n yearSuffix: ""\n }, this._defaults = {\n showOn: "focus",\n showAnim: "fadeIn",\n showOptions: {},\n defaultDate: null,\n appendText: "",\n buttonText: "...",\n buttonImage: "",\n buttonImageOnly: !1,\n hideIfNoPrevNext: !1,\n navigationAsDateFormat: !1,\n gotoCurrent: !1,\n changeMonth: !1,\n changeYear: !1,\n yearRange: "c-10:c+10",\n showOtherMonths: !1,\n selectOtherMonths: !1,\n showWeek: !1,\n calculateWeek: this.iso8601Week,\n shortYearCutoff: "+10",\n minDate: null,\n maxDate: null,\n duration: "fast",\n beforeShowDay: null,\n beforeShow: null,\n onSelect: null,\n onChangeMonthYear: null,\n onClose: null,\n numberOfMonths: 1,\n showCurrentAtPos: 0,\n stepMonths: 1,\n stepBigMonths: 12,\n altField: "",\n altFormat: "",\n constrainInput: !0,\n showButtonPanel: !1,\n autoSize: !1,\n disabled: !1\n }, t.extend(this._defaults, this.regional[""]), this.regional.en = t.extend(!0, {}, this.regional[""]), this.regional["en-US"] = t.extend(!0, {}, this.regional.en), this.dpDiv = n(t("<div id=\'" + this._mainDivId + "\' class=\'ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\'></div>"));\n }\n function n(e) {\n var i = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";\n return e.on("mouseout", i, function () {\n t(this).removeClass("ui-state-hover"), -1 !== this.className.indexOf("ui-datepicker-prev") && t(this).removeClass("ui-datepicker-prev-hover"), -1 !== this.className.indexOf("ui-datepicker-next") && t(this).removeClass("ui-datepicker-next-hover");\n }).on("mouseover", i, o);\n }\n function o() {\n t.datepicker._isDisabledDatepicker(m.inline ? m.dpDiv.parent()[0] : m.input[0]) || (t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"), t(this).addClass("ui-state-hover"), -1 !== this.className.indexOf("ui-datepicker-prev") && t(this).addClass("ui-datepicker-prev-hover"), -1 !== this.className.indexOf("ui-datepicker-next") && t(this).addClass("ui-datepicker-next-hover"));\n }\n function a(e, i) {\n t.extend(e, i);\n for (var s in i) null == i[s] && (e[s] = i[s]);\n return e;\n }\n function r(t) {\n return function () {\n var e = this.element.val();\n t.apply(this, arguments), this._refresh(), e !== this.element.val() && this._trigger("change");\n };\n }\n t.ui = t.ui || {}, t.ui.version = "1.12.0";\n var h = 0,\n l = Array.prototype.slice;\n t.cleanData = function (e) {\n return function (i) {\n var s, n, o;\n for (o = 0; null != (n = i[o]); o++) try {\n s = t._data(n, "events"), s && s.remove && t(n).triggerHandler("remove");\n } catch (a) {}\n e(i);\n };\n }(t.cleanData), t.widget = function (e, i, s) {\n var n,\n o,\n a,\n r = {},\n h = e.split(".")[0];\n e = e.split(".")[1];\n var l = h + "-" + e;\n return s || (s = i, i = t.Widget), t.isArray(s) && (s = t.extend.apply(null, [{}].concat(s))), t.expr[":"][l.toLowerCase()] = function (e) {\n return !!t.data(e, l);\n }, t[h] = t[h] || {}, n = t[h][e], o = t[h][e] = function (t, e) {\n return this._createWidget ? (arguments.length && this._createWidget(t, e), void 0) : new o(t, e);\n }, t.extend(o, n, {\n version: s.version,\n _proto: t.extend({}, s),\n _childConstructors: []\n }), a = new i(), a.options = t.widget.extend({}, a.options), t.each(s, function (e, s) {\n return t.isFunction(s) ? (r[e] = function () {\n function t() {\n return i.prototype[e].apply(this, arguments);\n }\n function n(t) {\n return i.prototype[e].apply(this, t);\n }\n return function () {\n var e,\n i = this._super,\n o = this._superApply;\n return this._super = t, this._superApply = n, e = s.apply(this, arguments), this._super = i, this._superApply = o, e;\n };\n }(), void 0) : (r[e] = s, void 0);\n }), o.prototype = t.widget.extend(a, {\n widgetEventPrefix: n ? a.widgetEventPrefix || e : e\n }, r, {\n constructor: o,\n namespace: h,\n widgetName: e,\n widgetFullName: l\n }), n ? (t.each(n._childConstructors, function (e, i) {\n var s = i.prototype;\n t.widget(s.namespace + "." + s.widgetName, o, i._proto);\n }), delete n._childConstructors) : i._childConstructors.push(o), t.widget.bridge(e, o), o;\n }, t.widget.extend = function (e) {\n for (var i, s, n = l.call(arguments, 1), o = 0, a = n.length; a > o; o++) for (i in n[o]) s = n[o][i], n[o].hasOwnProperty(i) && void 0 !== s && (e[i] = t.isPlainObject(s) ? t.isPlainObject(e[i]) ? t.widget.extend({}, e[i], s) : t.widget.extend({}, s) : s);\n return e;\n }, t.widget.bridge = function (e, i) {\n var s = i.prototype.widgetFullName || e;\n t.fn[e] = function (n) {\n var o = "string" == typeof n,\n a = l.call(arguments, 1),\n r = this;\n return o ? this.each(function () {\n var i,\n o = t.data(this, s);\n return "instance" === n ? (r = o, !1) : o ? t.isFunction(o[n]) && "_" !== n.charAt(0) ? (i = o[n].apply(o, a), i !== o && void 0 !== i ? (r = i && i.jquery ? r.pushStack(i.get()) : i, !1) : void 0) : t.error("no such method \'" + n + "\' for " + e + " widget instance") : t.error("cannot call methods on " + e + " prior to initialization; " + "attempted to call method \'" + n + "\'");\n }) : (a.length && (n = t.widget.extend.apply(null, [n].concat(a))), this.each(function () {\n var e = t.data(this, s);\n e ? (e.option(n || {}), e._init && e._init()) : t.data(this, s, new i(n, this));\n })), r;\n };\n }, t.Widget = function () {}, t.Widget._childConstructors = [], t.Widget.prototype = {\n widgetName: "widget",\n widgetEventPrefix: "",\n defaultElement: "<div>",\n options: {\n classes: {},\n disabled: !1,\n create: null\n },\n _createWidget: function _createWidget(e, i) {\n i = t(i || this.defaultElement || this)[0], this.element = t(i), this.uuid = h++, this.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = t(), this.hoverable = t(), this.focusable = t(), this.classesElementLookup = {}, i !== this && (t.data(i, this.widgetFullName, this), this._on(!0, this.element, {\n remove: function remove(t) {\n t.target === i && this.destroy();\n }\n }), this.document = t(i.style ? i.ownerDocument : i.document || i), this.window = t(this.document[0].defaultView || this.document[0].parentWindow)), this.options = t.widget.extend({}, this.options, this._getCreateOptions(), e), this._create(), this.options.disabled && this._setOptionDisabled(this.options.disabled), this._trigger("create", null, this._getCreateEventData()), this._init();\n },\n _getCreateOptions: function _getCreateOptions() {\n return {};\n },\n _getCreateEventData: t.noop,\n _create: t.noop,\n _init: t.noop,\n destroy: function destroy() {\n var e = this;\n this._destroy(), t.each(this.classesElementLookup, function (t, i) {\n e._removeClass(i, t);\n }), this.element.off(this.eventNamespace).removeData(this.widgetFullName), this.widget().off(this.eventNamespace).removeAttr("aria-disabled"), this.bindings.off(this.eventNamespace);\n },\n _destroy: t.noop,\n widget: function widget() {\n return this.element;\n },\n option: function option(e, i) {\n var s,\n n,\n o,\n a = e;\n if (0 === arguments.length) return t.widget.extend({}, this.options);\n if ("string" == typeof e) if (a = {}, s = e.split("."), e = s.shift(), s.length) {\n for (n = a[e] = t.widget.extend({}, this.options[e]), o = 0; s.length - 1 > o; o++) n[s[o]] = n[s[o]] || {}, n = n[s[o]];\n if (e = s.pop(), 1 === arguments.length) return void 0 === n[e] ? null : n[e];\n n[e] = i;\n } else {\n if (1 === arguments.length) return void 0 === this.options[e] ? null : this.options[e];\n a[e] = i;\n }\n return this._setOptions(a), this;\n },\n _setOptions: function _setOptions(t) {\n var e;\n for (e in t) this._setOption(e, t[e]);\n return this;\n },\n _setOption: function _setOption(t, e) {\n return "classes" === t && this._setOptionClasses(e), this.options[t] = e, "disabled" === t && this._setOptionDisabled(e), this;\n },\n _setOptionClasses: function _setOptionClasses(e) {\n var i, s, n;\n for (i in e) n = this.classesElementLookup[i], e[i] !== this.options.classes[i] && n && n.length && (s = t(n.get()), this._removeClass(n, i), s.addClass(this._classes({\n element: s,\n keys: i,\n classes: e,\n add: !0\n })));\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!t), t && (this._removeClass(this.hoverable, null, "ui-state-hover"), this._removeClass(this.focusable, null, "ui-state-focus"));\n },\n enable: function enable() {\n return this._setOptions({\n disabled: !1\n });\n },\n disable: function disable() {\n return this._setOptions({\n disabled: !0\n });\n },\n _classes: function _classes(e) {\n function i(i, o) {\n var a, r;\n for (r = 0; i.length > r; r++) a = n.classesElementLookup[i[r]] || t(), a = e.add ? t(t.unique(a.get().concat(e.element.get()))) : t(a.not(e.element).get()), n.classesElementLookup[i[r]] = a, s.push(i[r]), o && e.classes[i[r]] && s.push(e.classes[i[r]]);\n }\n var s = [],\n n = this;\n return e = t.extend({\n element: this.element,\n classes: this.options.classes || {}\n }, e), e.keys && i(e.keys.match(/\\S+/g) || [], !0), e.extra && i(e.extra.match(/\\S+/g) || []), s.join(" ");\n },\n _removeClass: function _removeClass(t, e, i) {\n return this._toggleClass(t, e, i, !1);\n },\n _addClass: function _addClass(t, e, i) {\n return this._toggleClass(t, e, i, !0);\n },\n _toggleClass: function _toggleClass(t, e, i, s) {\n s = "boolean" == typeof s ? s : i;\n var n = "string" == typeof t || null === t,\n o = {\n extra: n ? e : i,\n keys: n ? t : e,\n element: n ? this.element : t,\n add: s\n };\n return o.element.toggleClass(this._classes(o), s), this;\n },\n _on: function _on(e, i, s) {\n var n,\n o = this;\n "boolean" != typeof e && (s = i, i = e, e = !1), s ? (i = n = t(i), this.bindings = this.bindings.add(i)) : (s = i, i = this.element, n = this.widget()), t.each(s, function (s, a) {\n function r() {\n return e || o.options.disabled !== !0 && !t(this).hasClass("ui-state-disabled") ? ("string" == typeof a ? o[a] : a).apply(o, arguments) : void 0;\n }\n "string" != typeof a && (r.guid = a.guid = a.guid || r.guid || t.guid++);\n var h = s.match(/^([\\w:-]*)\\s*(.*)$/),\n l = h[1] + o.eventNamespace,\n c = h[2];\n c ? n.on(l, c, r) : i.on(l, r);\n });\n },\n _off: function _off(e, i) {\n i = (i || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, e.off(i).off(i), this.bindings = t(this.bindings.not(e).get()), this.focusable = t(this.focusable.not(e).get()), this.hoverable = t(this.hoverable.not(e).get());\n },\n _delay: function _delay(t, e) {\n function i() {\n return ("string" == typeof t ? s[t] : t).apply(s, arguments);\n }\n var s = this;\n return setTimeout(i, e || 0);\n },\n _hoverable: function _hoverable(e) {\n this.hoverable = this.hoverable.add(e), this._on(e, {\n mouseenter: function mouseenter(e) {\n this._addClass(t(e.currentTarget), null, "ui-state-hover");\n },\n mouseleave: function mouseleave(e) {\n this._removeClass(t(e.currentTarget), null, "ui-state-hover");\n }\n });\n },\n _focusable: function _focusable(e) {\n this.focusable = this.focusable.add(e), this._on(e, {\n focusin: function focusin(e) {\n this._addClass(t(e.currentTarget), null, "ui-state-focus");\n },\n focusout: function focusout(e) {\n this._removeClass(t(e.currentTarget), null, "ui-state-focus");\n }\n });\n },\n _trigger: function _trigger(e, i, s) {\n var n,\n o,\n a = this.options[e];\n if (s = s || {}, i = t.Event(i), i.type = (e === this.widgetEventPrefix ? e : this.widgetEventPrefix + e).toLowerCase(), i.target = this.element[0], o = i.originalEvent) for (n in o) n in i || (i[n] = o[n]);\n return this.element.trigger(i, s), !(t.isFunction(a) && a.apply(this.element[0], [i].concat(s)) === !1 || i.isDefaultPrevented());\n }\n }, t.each({\n show: "fadeIn",\n hide: "fadeOut"\n }, function (e, i) {\n t.Widget.prototype["_" + e] = function (s, n, o) {\n "string" == typeof n && (n = {\n effect: n\n });\n var a,\n r = n ? n === !0 || "number" == typeof n ? i : n.effect || i : e;\n n = n || {}, "number" == typeof n && (n = {\n duration: n\n }), a = !t.isEmptyObject(n), n.complete = o, n.delay && s.delay(n.delay), a && t.effects && t.effects.effect[r] ? s[e](n) : r !== e && s[r] ? s[r](n.duration, n.easing, o) : s.queue(function (i) {\n t(this)[e](), o && o.call(s[0]), i();\n });\n };\n }), t.widget, function () {\n function e(t, e, i) {\n return [parseFloat(t[0]) * (p.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (p.test(t[1]) ? i / 100 : 1)];\n }\n function i(e, i) {\n return parseInt(t.css(e, i), 10) || 0;\n }\n function s(e) {\n var i = e[0];\n return 9 === i.nodeType ? {\n width: e.width(),\n height: e.height(),\n offset: {\n top: 0,\n left: 0\n }\n } : t.isWindow(i) ? {\n width: e.width(),\n height: e.height(),\n offset: {\n top: e.scrollTop(),\n left: e.scrollLeft()\n }\n } : i.preventDefault ? {\n width: 0,\n height: 0,\n offset: {\n top: i.pageY,\n left: i.pageX\n }\n } : {\n width: e.outerWidth(),\n height: e.outerHeight(),\n offset: e.offset()\n };\n }\n var n,\n _o,\n a = Math.max,\n r = Math.abs,\n h = Math.round,\n l = /left|center|right/,\n c = /top|center|bottom/,\n u = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n d = /^\\w+/,\n p = /%$/,\n f = t.fn.position;\n _o = function o() {\n var e = t("<div>").css("position", "absolute").appendTo("body").offset({\n top: 1.5,\n left: 1.5\n }),\n i = 1.5 === e.offset().top;\n return e.remove(), _o = function o() {\n return i;\n }, i;\n }, t.position = {\n scrollbarWidth: function scrollbarWidth() {\n if (void 0 !== n) return n;\n var e,\n i,\n s = t("<div style=\'display:block;position:absolute;width:50px;height:50px;overflow:hidden;\'><div style=\'height:100px;width:auto;\'></div></div>"),\n o = s.children()[0];\n return t("body").append(s), e = o.offsetWidth, s.css("overflow", "scroll"), i = o.offsetWidth, e === i && (i = s[0].clientWidth), s.remove(), n = e - i;\n },\n getScrollInfo: function getScrollInfo(e) {\n var i = e.isWindow || e.isDocument ? "" : e.element.css("overflow-x"),\n s = e.isWindow || e.isDocument ? "" : e.element.css("overflow-y"),\n n = "scroll" === i || "auto" === i && e.width < e.element[0].scrollWidth,\n o = "scroll" === s || "auto" === s && e.height < e.element[0].scrollHeight;\n return {\n width: o ? t.position.scrollbarWidth() : 0,\n height: n ? t.position.scrollbarWidth() : 0\n };\n },\n getWithinInfo: function getWithinInfo(e) {\n var i = t(e || window),\n s = t.isWindow(i[0]),\n n = !!i[0] && 9 === i[0].nodeType,\n o = !s && !n;\n return {\n element: i,\n isWindow: s,\n isDocument: n,\n offset: o ? t(e).offset() : {\n left: 0,\n top: 0\n },\n scrollLeft: i.scrollLeft(),\n scrollTop: i.scrollTop(),\n width: i.outerWidth(),\n height: i.outerHeight()\n };\n }\n }, t.fn.position = function (n) {\n if (!n || !n.of) return f.apply(this, arguments);\n n = t.extend({}, n);\n var p,\n g,\n m,\n _,\n v,\n b,\n y = t(n.of),\n w = t.position.getWithinInfo(n.within),\n k = t.position.getScrollInfo(w),\n x = (n.collision || "flip").split(" "),\n C = {};\n return b = s(y), y[0].preventDefault && (n.at = "left top"), g = b.width, m = b.height, _ = b.offset, v = t.extend({}, _), t.each(["my", "at"], function () {\n var t,\n e,\n i = (n[this] || "").split(" ");\n 1 === i.length && (i = l.test(i[0]) ? i.concat(["center"]) : c.test(i[0]) ? ["center"].concat(i) : ["center", "center"]), i[0] = l.test(i[0]) ? i[0] : "center", i[1] = c.test(i[1]) ? i[1] : "center", t = u.exec(i[0]), e = u.exec(i[1]), C[this] = [t ? t[0] : 0, e ? e[0] : 0], n[this] = [d.exec(i[0])[0], d.exec(i[1])[0]];\n }), 1 === x.length && (x[1] = x[0]), "right" === n.at[0] ? v.left += g : "center" === n.at[0] && (v.left += g / 2), "bottom" === n.at[1] ? v.top += m : "center" === n.at[1] && (v.top += m / 2), p = e(C.at, g, m), v.left += p[0], v.top += p[1], this.each(function () {\n var s,\n l,\n c = t(this),\n u = c.outerWidth(),\n d = c.outerHeight(),\n f = i(this, "marginLeft"),\n b = i(this, "marginTop"),\n D = u + f + i(this, "marginRight") + k.width,\n I = d + b + i(this, "marginBottom") + k.height,\n T = t.extend({}, v),\n P = e(C.my, c.outerWidth(), c.outerHeight());\n "right" === n.my[0] ? T.left -= u : "center" === n.my[0] && (T.left -= u / 2), "bottom" === n.my[1] ? T.top -= d : "center" === n.my[1] && (T.top -= d / 2), T.left += P[0], T.top += P[1], _o() || (T.left = h(T.left), T.top = h(T.top)), s = {\n marginLeft: f,\n marginTop: b\n }, t.each(["left", "top"], function (e, i) {\n t.ui.position[x[e]] && t.ui.position[x[e]][i](T, {\n targetWidth: g,\n targetHeight: m,\n elemWidth: u,\n elemHeight: d,\n collisionPosition: s,\n collisionWidth: D,\n collisionHeight: I,\n offset: [p[0] + P[0], p[1] + P[1]],\n my: n.my,\n at: n.at,\n within: w,\n elem: c\n });\n }), n.using && (l = function l(t) {\n var e = _.left - T.left,\n i = e + g - u,\n s = _.top - T.top,\n o = s + m - d,\n h = {\n target: {\n element: y,\n left: _.left,\n top: _.top,\n width: g,\n height: m\n },\n element: {\n element: c,\n left: T.left,\n top: T.top,\n width: u,\n height: d\n },\n horizontal: 0 > i ? "left" : e > 0 ? "right" : "center",\n vertical: 0 > o ? "top" : s > 0 ? "bottom" : "middle"\n };\n u > g && g > r(e + i) && (h.horizontal = "center"), d > m && m > r(s + o) && (h.vertical = "middle"), h.important = a(r(e), r(i)) > a(r(s), r(o)) ? "horizontal" : "vertical", n.using.call(this, t, h);\n }), c.offset(t.extend(T, {\n using: l\n }));\n });\n }, t.ui.position = {\n fit: {\n left: function left(t, e) {\n var i,\n s = e.within,\n n = s.isWindow ? s.scrollLeft : s.offset.left,\n o = s.width,\n r = t.left - e.collisionPosition.marginLeft,\n h = n - r,\n l = r + e.collisionWidth - o - n;\n e.collisionWidth > o ? h > 0 && 0 >= l ? (i = t.left + h + e.collisionWidth - o - n, t.left += h - i) : t.left = l > 0 && 0 >= h ? n : h > l ? n + o - e.collisionWidth : n : h > 0 ? t.left += h : l > 0 ? t.left -= l : t.left = a(t.left - r, t.left);\n },\n top: function top(t, e) {\n var i,\n s = e.within,\n n = s.isWindow ? s.scrollTop : s.offset.top,\n o = e.within.height,\n r = t.top - e.collisionPosition.marginTop,\n h = n - r,\n l = r + e.collisionHeight - o - n;\n e.collisionHeight > o ? h > 0 && 0 >= l ? (i = t.top + h + e.collisionHeight - o - n, t.top += h - i) : t.top = l > 0 && 0 >= h ? n : h > l ? n + o - e.collisionHeight : n : h > 0 ? t.top += h : l > 0 ? t.top -= l : t.top = a(t.top - r, t.top);\n }\n },\n flip: {\n left: function left(t, e) {\n var i,\n s,\n n = e.within,\n o = n.offset.left + n.scrollLeft,\n a = n.width,\n h = n.isWindow ? n.scrollLeft : n.offset.left,\n l = t.left - e.collisionPosition.marginLeft,\n c = l - h,\n u = l + e.collisionWidth - a - h,\n d = "left" === e.my[0] ? -e.elemWidth : "right" === e.my[0] ? e.elemWidth : 0,\n p = "left" === e.at[0] ? e.targetWidth : "right" === e.at[0] ? -e.targetWidth : 0,\n f = -2 * e.offset[0];\n 0 > c ? (i = t.left + d + p + f + e.collisionWidth - a - o, (0 > i || r(c) > i) && (t.left += d + p + f)) : u > 0 && (s = t.left - e.collisionPosition.marginLeft + d + p + f - h, (s > 0 || u > r(s)) && (t.left += d + p + f));\n },\n top: function top(t, e) {\n var i,\n s,\n n = e.within,\n o = n.offset.top + n.scrollTop,\n a = n.height,\n h = n.isWindow ? n.scrollTop : n.offset.top,\n l = t.top - e.collisionPosition.marginTop,\n c = l - h,\n u = l + e.collisionHeight - a - h,\n d = "top" === e.my[1],\n p = d ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0,\n f = "top" === e.at[1] ? e.targetHeight : "bottom" === e.at[1] ? -e.targetHeight : 0,\n g = -2 * e.offset[1];\n 0 > c ? (s = t.top + p + f + g + e.collisionHeight - a - o, (0 > s || r(c) > s) && (t.top += p + f + g)) : u > 0 && (i = t.top - e.collisionPosition.marginTop + p + f + g - h, (i > 0 || u > r(i)) && (t.top += p + f + g));\n }\n },\n flipfit: {\n left: function left() {\n t.ui.position.flip.left.apply(this, arguments), t.ui.position.fit.left.apply(this, arguments);\n },\n top: function top() {\n t.ui.position.flip.top.apply(this, arguments), t.ui.position.fit.top.apply(this, arguments);\n }\n }\n };\n }(), t.ui.position, t.extend(t.expr[":"], {\n data: t.expr.createPseudo ? t.expr.createPseudo(function (e) {\n return function (i) {\n return !!t.data(i, e);\n };\n }) : function (e, i, s) {\n return !!t.data(e, s[3]);\n }\n }), t.fn.extend({\n disableSelection: function () {\n var t = "onselectstart" in document.createElement("div") ? "selectstart" : "mousedown";\n return function () {\n return this.on(t + ".ui-disableSelection", function (t) {\n t.preventDefault();\n });\n };\n }(),\n enableSelection: function enableSelection() {\n return this.off(".ui-disableSelection");\n }\n });\n var c = "ui-effects-",\n u = "ui-effects-style",\n d = "ui-effects-animated",\n p = t;\n t.effects = {\n effect: {}\n }, function (t, e) {\n function i(t, e, i) {\n var s = u[e.type] || {};\n return null == t ? i || !e.def ? null : e.def : (t = s.floor ? ~~t : parseFloat(t), isNaN(t) ? e.def : s.mod ? (t + s.mod) % s.mod : 0 > t ? 0 : t > s.max ? s.max : t);\n }\n function s(i) {\n var s = l(),\n n = s._rgba = [];\n return i = i.toLowerCase(), f(h, function (t, o) {\n var a,\n r = o.re.exec(i),\n h = r && o.parse(r),\n l = o.space || "rgba";\n return h ? (a = s[l](h), s[c[l].cache] = a[c[l].cache], n = s._rgba = a._rgba, !1) : e;\n }), n.length ? ("0,0,0,0" === n.join() && t.extend(n, o.transparent), s) : o[i];\n }\n function n(t, e, i) {\n return i = (i + 1) % 1, 1 > 6 * i ? t + 6 * (e - t) * i : 1 > 2 * i ? e : 2 > 3 * i ? t + 6 * (e - t) * (2 / 3 - i) : t;\n }\n var o,\n a = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",\n r = /^([\\-+])=\\s*(\\d+\\.?\\d*)/,\n h = [{\n re: /rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function parse(t) {\n return [t[1], t[2], t[3], t[4]];\n }\n }, {\n re: /rgba?\\(\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function parse(t) {\n return [2.55 * t[1], 2.55 * t[2], 2.55 * t[3], t[4]];\n }\n }, {\n re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,\n parse: function parse(t) {\n return [parseInt(t[1], 16), parseInt(t[2], 16), parseInt(t[3], 16)];\n }\n }, {\n re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,\n parse: function parse(t) {\n return [parseInt(t[1] + t[1], 16), parseInt(t[2] + t[2], 16), parseInt(t[3] + t[3], 16)];\n }\n }, {\n re: /hsla?\\(\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*,\\s*(\\d+(?:\\.\\d+)?)\\%\\s*(?:,\\s*(\\d?(?:\\.\\d+)?)\\s*)?\\)/,\n space: "hsla",\n parse: function parse(t) {\n return [t[1], t[2] / 100, t[3] / 100, t[4]];\n }\n }],\n l = t.Color = function (e, i, s, n) {\n return new t.Color.fn.parse(e, i, s, n);\n },\n c = {\n rgba: {\n props: {\n red: {\n idx: 0,\n type: "byte"\n },\n green: {\n idx: 1,\n type: "byte"\n },\n blue: {\n idx: 2,\n type: "byte"\n }\n }\n },\n hsla: {\n props: {\n hue: {\n idx: 0,\n type: "degrees"\n },\n saturation: {\n idx: 1,\n type: "percent"\n },\n lightness: {\n idx: 2,\n type: "percent"\n }\n }\n }\n },\n u = {\n "byte": {\n floor: !0,\n max: 255\n },\n percent: {\n max: 1\n },\n degrees: {\n mod: 360,\n floor: !0\n }\n },\n d = l.support = {},\n p = t("<p>")[0],\n f = t.each;\n p.style.cssText = "background-color:rgba(1,1,1,.5)", d.rgba = p.style.backgroundColor.indexOf("rgba") > -1, f(c, function (t, e) {\n e.cache = "_" + t, e.props.alpha = {\n idx: 3,\n type: "percent",\n def: 1\n };\n }), l.fn = t.extend(l.prototype, {\n parse: function parse(n, a, r, h) {\n if (n === e) return this._rgba = [null, null, null, null], this;\n (n.jquery || n.nodeType) && (n = t(n).css(a), a = e);\n var u = this,\n d = t.type(n),\n p = this._rgba = [];\n return a !== e && (n = [n, a, r, h], d = "array"), "string" === d ? this.parse(s(n) || o._default) : "array" === d ? (f(c.rgba.props, function (t, e) {\n p[e.idx] = i(n[e.idx], e);\n }), this) : "object" === d ? (n instanceof l ? f(c, function (t, e) {\n n[e.cache] && (u[e.cache] = n[e.cache].slice());\n }) : f(c, function (e, s) {\n var o = s.cache;\n f(s.props, function (t, e) {\n if (!u[o] && s.to) {\n if ("alpha" === t || null == n[t]) return;\n u[o] = s.to(u._rgba);\n }\n u[o][e.idx] = i(n[t], e, !0);\n }), u[o] && 0 > t.inArray(null, u[o].slice(0, 3)) && (u[o][3] = 1, s.from && (u._rgba = s.from(u[o])));\n }), this) : e;\n },\n is: function is(t) {\n var i = l(t),\n s = !0,\n n = this;\n return f(c, function (t, o) {\n var a,\n r = i[o.cache];\n return r && (a = n[o.cache] || o.to && o.to(n._rgba) || [], f(o.props, function (t, i) {\n return null != r[i.idx] ? s = r[i.idx] === a[i.idx] : e;\n })), s;\n }), s;\n },\n _space: function _space() {\n var t = [],\n e = this;\n return f(c, function (i, s) {\n e[s.cache] && t.push(i);\n }), t.pop();\n },\n transition: function transition(t, e) {\n var s = l(t),\n n = s._space(),\n o = c[n],\n a = 0 === this.alpha() ? l("transparent") : this,\n r = a[o.cache] || o.to(a._rgba),\n h = r.slice();\n return s = s[o.cache], f(o.props, function (t, n) {\n var o = n.idx,\n a = r[o],\n l = s[o],\n c = u[n.type] || {};\n null !== l && (null === a ? h[o] = l : (c.mod && (l - a > c.mod / 2 ? a += c.mod : a - l > c.mod / 2 && (a -= c.mod)), h[o] = i((l - a) * e + a, n)));\n }), this[n](h);\n },\n blend: function blend(e) {\n if (1 === this._rgba[3]) return this;\n var i = this._rgba.slice(),\n s = i.pop(),\n n = l(e)._rgba;\n return l(t.map(i, function (t, e) {\n return (1 - s) * n[e] + s * t;\n }));\n },\n toRgbaString: function toRgbaString() {\n var e = "rgba(",\n i = t.map(this._rgba, function (t, e) {\n return null == t ? e > 2 ? 1 : 0 : t;\n });\n return 1 === i[3] && (i.pop(), e = "rgb("), e + i.join() + ")";\n },\n toHslaString: function toHslaString() {\n var e = "hsla(",\n i = t.map(this.hsla(), function (t, e) {\n return null == t && (t = e > 2 ? 1 : 0), e && 3 > e && (t = Math.round(100 * t) + "%"), t;\n });\n return 1 === i[3] && (i.pop(), e = "hsl("), e + i.join() + ")";\n },\n toHexString: function toHexString(e) {\n var i = this._rgba.slice(),\n s = i.pop();\n return e && i.push(~~(255 * s)), "#" + t.map(i, function (t) {\n return t = (t || 0).toString(16), 1 === t.length ? "0" + t : t;\n }).join("");\n },\n toString: function toString() {\n return 0 === this._rgba[3] ? "transparent" : this.toRgbaString();\n }\n }), l.fn.parse.prototype = l.fn, c.hsla.to = function (t) {\n if (null == t[0] || null == t[1] || null == t[2]) return [null, null, null, t[3]];\n var e,\n i,\n s = t[0] / 255,\n n = t[1] / 255,\n o = t[2] / 255,\n a = t[3],\n r = Math.max(s, n, o),\n h = Math.min(s, n, o),\n l = r - h,\n c = r + h,\n u = .5 * c;\n return e = h === r ? 0 : s === r ? 60 * (n - o) / l + 360 : n === r ? 60 * (o - s) / l + 120 : 60 * (s - n) / l + 240, i = 0 === l ? 0 : .5 >= u ? l / c : l / (2 - c), [Math.round(e) % 360, i, u, null == a ? 1 : a];\n }, c.hsla.from = function (t) {\n if (null == t[0] || null == t[1] || null == t[2]) return [null, null, null, t[3]];\n var e = t[0] / 360,\n i = t[1],\n s = t[2],\n o = t[3],\n a = .5 >= s ? s * (1 + i) : s + i - s * i,\n r = 2 * s - a;\n return [Math.round(255 * n(r, a, e + 1 / 3)), Math.round(255 * n(r, a, e)), Math.round(255 * n(r, a, e - 1 / 3)), o];\n }, f(c, function (s, n) {\n var o = n.props,\n a = n.cache,\n h = n.to,\n c = n.from;\n l.fn[s] = function (s) {\n if (h && !this[a] && (this[a] = h(this._rgba)), s === e) return this[a].slice();\n var n,\n r = t.type(s),\n u = "array" === r || "object" === r ? s : arguments,\n d = this[a].slice();\n return f(o, function (t, e) {\n var s = u["object" === r ? t : e.idx];\n null == s && (s = d[e.idx]), d[e.idx] = i(s, e);\n }), c ? (n = l(c(d)), n[a] = d, n) : l(d);\n }, f(o, function (e, i) {\n l.fn[e] || (l.fn[e] = function (n) {\n var o,\n a = t.type(n),\n h = "alpha" === e ? this._hsla ? "hsla" : "rgba" : s,\n l = this[h](),\n c = l[i.idx];\n return "undefined" === a ? c : ("function" === a && (n = n.call(this, c), a = t.type(n)), null == n && i.empty ? this : ("string" === a && (o = r.exec(n), o && (n = c + parseFloat(o[2]) * ("+" === o[1] ? 1 : -1))), l[i.idx] = n, this[h](l)));\n });\n });\n }), l.hook = function (e) {\n var i = e.split(" ");\n f(i, function (e, i) {\n t.cssHooks[i] = {\n set: function set(e, n) {\n var o,\n a,\n r = "";\n if ("transparent" !== n && ("string" !== t.type(n) || (o = s(n)))) {\n if (n = l(o || n), !d.rgba && 1 !== n._rgba[3]) {\n for (a = "backgroundColor" === i ? e.parentNode : e; ("" === r || "transparent" === r) && a && a.style;) try {\n r = t.css(a, "backgroundColor"), a = a.parentNode;\n } catch (h) {}\n n = n.blend(r && "transparent" !== r ? r : "_default");\n }\n n = n.toRgbaString();\n }\n try {\n e.style[i] = n;\n } catch (h) {}\n }\n }, t.fx.step[i] = function (e) {\n e.colorInit || (e.start = l(e.elem, i), e.end = l(e.end), e.colorInit = !0), t.cssHooks[i].set(e.elem, e.start.transition(e.end, e.pos));\n };\n });\n }, l.hook(a), t.cssHooks.borderColor = {\n expand: function expand(t) {\n var e = {};\n return f(["Top", "Right", "Bottom", "Left"], function (i, s) {\n e["border" + s + "Color"] = t;\n }), e;\n }\n }, o = t.Color.names = {\n aqua: "#00ffff",\n black: "#000000",\n blue: "#0000ff",\n fuchsia: "#ff00ff",\n gray: "#808080",\n green: "#008000",\n lime: "#00ff00",\n maroon: "#800000",\n navy: "#000080",\n olive: "#808000",\n purple: "#800080",\n red: "#ff0000",\n silver: "#c0c0c0",\n teal: "#008080",\n white: "#ffffff",\n yellow: "#ffff00",\n transparent: [null, null, null, 0],\n _default: "#ffffff"\n };\n }(p), function () {\n function e(e) {\n var i,\n s,\n n = e.ownerDocument.defaultView ? e.ownerDocument.defaultView.getComputedStyle(e, null) : e.currentStyle,\n o = {};\n if (n && n.length && n[0] && n[n[0]]) for (s = n.length; s--;) i = n[s], "string" == typeof n[i] && (o[t.camelCase(i)] = n[i]);else for (i in n) "string" == typeof n[i] && (o[i] = n[i]);\n return o;\n }\n function i(e, i) {\n var s,\n o,\n a = {};\n for (s in i) o = i[s], e[s] !== o && (n[s] || (t.fx.step[s] || !isNaN(parseFloat(o))) && (a[s] = o));\n return a;\n }\n var s = ["add", "remove", "toggle"],\n n = {\n border: 1,\n borderBottom: 1,\n borderColor: 1,\n borderLeft: 1,\n borderRight: 1,\n borderTop: 1,\n borderWidth: 1,\n margin: 1,\n padding: 1\n };\n t.each(["borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle"], function (e, i) {\n t.fx.step[i] = function (t) {\n ("none" !== t.end && !t.setAttr || 1 === t.pos && !t.setAttr) && (p.style(t.elem, i, t.end), t.setAttr = !0);\n };\n }), t.fn.addBack || (t.fn.addBack = function (t) {\n return this.add(null == t ? this.prevObject : this.prevObject.filter(t));\n }), t.effects.animateClass = function (n, o, a, r) {\n var h = t.speed(o, a, r);\n return this.queue(function () {\n var o,\n a = t(this),\n r = a.attr("class") || "",\n l = h.children ? a.find("*").addBack() : a;\n l = l.map(function () {\n var i = t(this);\n return {\n el: i,\n start: e(this)\n };\n }), o = function o() {\n t.each(s, function (t, e) {\n n[e] && a[e + "Class"](n[e]);\n });\n }, o(), l = l.map(function () {\n return this.end = e(this.el[0]), this.diff = i(this.start, this.end), this;\n }), a.attr("class", r), l = l.map(function () {\n var e = this,\n i = t.Deferred(),\n s = t.extend({}, h, {\n queue: !1,\n complete: function complete() {\n i.resolve(e);\n }\n });\n return this.el.animate(this.diff, s), i.promise();\n }), t.when.apply(t, l.get()).done(function () {\n o(), t.each(arguments, function () {\n var e = this.el;\n t.each(this.diff, function (t) {\n e.css(t, "");\n });\n }), h.complete.call(a[0]);\n });\n });\n }, t.fn.extend({\n addClass: function (e) {\n return function (i, s, n, o) {\n return s ? t.effects.animateClass.call(this, {\n add: i\n }, s, n, o) : e.apply(this, arguments);\n };\n }(t.fn.addClass),\n removeClass: function (e) {\n return function (i, s, n, o) {\n return arguments.length > 1 ? t.effects.animateClass.call(this, {\n remove: i\n }, s, n, o) : e.apply(this, arguments);\n };\n }(t.fn.removeClass),\n toggleClass: function (e) {\n return function (i, s, n, o, a) {\n return "boolean" == typeof s || void 0 === s ? n ? t.effects.animateClass.call(this, s ? {\n add: i\n } : {\n remove: i\n }, n, o, a) : e.apply(this, arguments) : t.effects.animateClass.call(this, {\n toggle: i\n }, s, n, o);\n };\n }(t.fn.toggleClass),\n switchClass: function switchClass(e, i, s, n, o) {\n return t.effects.animateClass.call(this, {\n add: i,\n remove: e\n }, s, n, o);\n }\n });\n }(), function () {\n function e(e, i, s, n) {\n return t.isPlainObject(e) && (i = e, e = e.effect), e = {\n effect: e\n }, null == i && (i = {}), t.isFunction(i) && (n = i, s = null, i = {}), ("number" == typeof i || t.fx.speeds[i]) && (n = s, s = i, i = {}), t.isFunction(s) && (n = s, s = null), i && t.extend(e, i), s = s || i.duration, e.duration = t.fx.off ? 0 : "number" == typeof s ? s : s in t.fx.speeds ? t.fx.speeds[s] : t.fx.speeds._default, e.complete = n || i.complete, e;\n }\n function i(e) {\n return !e || "number" == typeof e || t.fx.speeds[e] ? !0 : "string" != typeof e || t.effects.effect[e] ? t.isFunction(e) ? !0 : "object" != _typeof(e) || e.effect ? !1 : !0 : !0;\n }\n function s(t, e) {\n var i = e.outerWidth(),\n s = e.outerHeight(),\n n = /^rect\\((-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto),?\\s*(-?\\d*\\.?\\d*px|-?\\d+%|auto)\\)$/,\n o = n.exec(t) || ["", 0, i, s, 0];\n return {\n top: parseFloat(o[1]) || 0,\n right: "auto" === o[2] ? i : parseFloat(o[2]),\n bottom: "auto" === o[3] ? s : parseFloat(o[3]),\n left: parseFloat(o[4]) || 0\n };\n }\n t.expr && t.expr.filters && t.expr.filters.animated && (t.expr.filters.animated = function (e) {\n return function (i) {\n return !!t(i).data(d) || e(i);\n };\n }(t.expr.filters.animated)), t.uiBackCompat !== !1 && t.extend(t.effects, {\n save: function save(t, e) {\n for (var i = 0, s = e.length; s > i; i++) null !== e[i] && t.data(c + e[i], t[0].style[e[i]]);\n },\n restore: function restore(t, e) {\n for (var i, s = 0, n = e.length; n > s; s++) null !== e[s] && (i = t.data(c + e[s]), t.css(e[s], i));\n },\n setMode: function setMode(t, e) {\n return "toggle" === e && (e = t.is(":hidden") ? "show" : "hide"), e;\n },\n createWrapper: function createWrapper(e) {\n if (e.parent().is(".ui-effects-wrapper")) return e.parent();\n var i = {\n width: e.outerWidth(!0),\n height: e.outerHeight(!0),\n "float": e.css("float")\n },\n s = t("<div></div>").addClass("ui-effects-wrapper").css({\n fontSize: "100%",\n background: "transparent",\n border: "none",\n margin: 0,\n padding: 0\n }),\n n = {\n width: e.width(),\n height: e.height()\n },\n o = document.activeElement;\n try {\n o.id;\n } catch (a) {\n o = document.body;\n }\n return e.wrap(s), (e[0] === o || t.contains(e[0], o)) && t(o).trigger("focus"), s = e.parent(), "static" === e.css("position") ? (s.css({\n position: "relative"\n }), e.css({\n position: "relative"\n })) : (t.extend(i, {\n position: e.css("position"),\n zIndex: e.css("z-index")\n }), t.each(["top", "left", "bottom", "right"], function (t, s) {\n i[s] = e.css(s), isNaN(parseInt(i[s], 10)) && (i[s] = "auto");\n }), e.css({\n position: "relative",\n top: 0,\n left: 0,\n right: "auto",\n bottom: "auto"\n })), e.css(n), s.css(i).show();\n },\n removeWrapper: function removeWrapper(e) {\n var i = document.activeElement;\n return e.parent().is(".ui-effects-wrapper") && (e.parent().replaceWith(e), (e[0] === i || t.contains(e[0], i)) && t(i).trigger("focus")), e;\n }\n }), t.extend(t.effects, {\n version: "1.12.0",\n define: function define(e, i, s) {\n return s || (s = i, i = "effect"), t.effects.effect[e] = s, t.effects.effect[e].mode = i, s;\n },\n scaledDimensions: function scaledDimensions(t, e, i) {\n if (0 === e) return {\n height: 0,\n width: 0,\n outerHeight: 0,\n outerWidth: 0\n };\n var s = "horizontal" !== i ? (e || 100) / 100 : 1,\n n = "vertical" !== i ? (e || 100) / 100 : 1;\n return {\n height: t.height() * n,\n width: t.width() * s,\n outerHeight: t.outerHeight() * n,\n outerWidth: t.outerWidth() * s\n };\n },\n clipToBox: function clipToBox(t) {\n return {\n width: t.clip.right - t.clip.left,\n height: t.clip.bottom - t.clip.top,\n left: t.clip.left,\n top: t.clip.top\n };\n },\n unshift: function unshift(t, e, i) {\n var s = t.queue();\n e > 1 && s.splice.apply(s, [1, 0].concat(s.splice(e, i))), t.dequeue();\n },\n saveStyle: function saveStyle(t) {\n t.data(u, t[0].style.cssText);\n },\n restoreStyle: function restoreStyle(t) {\n t[0].style.cssText = t.data(u) || "", t.removeData(u);\n },\n mode: function mode(t, e) {\n var i = t.is(":hidden");\n return "toggle" === e && (e = i ? "show" : "hide"), (i ? "hide" === e : "show" === e) && (e = "none"), e;\n },\n getBaseline: function getBaseline(t, e) {\n var i, s;\n switch (t[0]) {\n case "top":\n i = 0;\n break;\n case "middle":\n i = .5;\n break;\n case "bottom":\n i = 1;\n break;\n default:\n i = t[0] / e.height;\n }\n switch (t[1]) {\n case "left":\n s = 0;\n break;\n case "center":\n s = .5;\n break;\n case "right":\n s = 1;\n break;\n default:\n s = t[1] / e.width;\n }\n return {\n x: s,\n y: i\n };\n },\n createPlaceholder: function createPlaceholder(e) {\n var i,\n s = e.css("position"),\n n = e.position();\n return e.css({\n marginTop: e.css("marginTop"),\n marginBottom: e.css("marginBottom"),\n marginLeft: e.css("marginLeft"),\n marginRight: e.css("marginRight")\n }).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()), /^(static|relative)/.test(s) && (s = "absolute", i = t("<" + e[0].nodeName + ">").insertAfter(e).css({\n display: /^(inline|ruby)/.test(e.css("display")) ? "inline-block" : "block",\n visibility: "hidden",\n marginTop: e.css("marginTop"),\n marginBottom: e.css("marginBottom"),\n marginLeft: e.css("marginLeft"),\n marginRight: e.css("marginRight"),\n "float": e.css("float")\n }).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"), e.data(c + "placeholder", i)), e.css({\n position: s,\n left: n.left,\n top: n.top\n }), i;\n },\n removePlaceholder: function removePlaceholder(t) {\n var e = c + "placeholder",\n i = t.data(e);\n i && (i.remove(), t.removeData(e));\n },\n cleanUp: function cleanUp(e) {\n t.effects.restoreStyle(e), t.effects.removePlaceholder(e);\n },\n setTransition: function setTransition(e, i, s, n) {\n return n = n || {}, t.each(i, function (t, i) {\n var o = e.cssUnit(i);\n o[0] > 0 && (n[i] = o[0] * s + o[1]);\n }), n;\n }\n }), t.fn.extend({\n effect: function effect() {\n function i(e) {\n function i() {\n r.removeData(d), t.effects.cleanUp(r), "hide" === s.mode && r.hide(), a();\n }\n function a() {\n t.isFunction(h) && h.call(r[0]), t.isFunction(e) && e();\n }\n var r = t(this);\n s.mode = c.shift(), t.uiBackCompat === !1 || o ? "none" === s.mode ? (r[l](), a()) : n.call(r[0], s, i) : (r.is(":hidden") ? "hide" === l : "show" === l) ? (r[l](), a()) : n.call(r[0], s, a);\n }\n var s = e.apply(this, arguments),\n n = t.effects.effect[s.effect],\n o = n.mode,\n a = s.queue,\n r = a || "fx",\n h = s.complete,\n l = s.mode,\n c = [],\n u = function u(e) {\n var i = t(this),\n s = t.effects.mode(i, l) || o;\n i.data(d, !0), c.push(s), o && ("show" === s || s === o && "hide" === s) && i.show(), o && "none" === s || t.effects.saveStyle(i), t.isFunction(e) && e();\n };\n return t.fx.off || !n ? l ? this[l](s.duration, h) : this.each(function () {\n h && h.call(this);\n }) : a === !1 ? this.each(u).each(i) : this.queue(r, u).queue(r, i);\n },\n show: function (t) {\n return function (s) {\n if (i(s)) return t.apply(this, arguments);\n var n = e.apply(this, arguments);\n return n.mode = "show", this.effect.call(this, n);\n };\n }(t.fn.show),\n hide: function (t) {\n return function (s) {\n if (i(s)) return t.apply(this, arguments);\n var n = e.apply(this, arguments);\n return n.mode = "hide", this.effect.call(this, n);\n };\n }(t.fn.hide),\n toggle: function (t) {\n return function (s) {\n if (i(s) || "boolean" == typeof s) return t.apply(this, arguments);\n var n = e.apply(this, arguments);\n return n.mode = "toggle", this.effect.call(this, n);\n };\n }(t.fn.toggle),\n cssUnit: function cssUnit(e) {\n var i = this.css(e),\n s = [];\n return t.each(["em", "px", "%", "pt"], function (t, e) {\n i.indexOf(e) > 0 && (s = [parseFloat(i), e]);\n }), s;\n },\n cssClip: function cssClip(t) {\n return t ? this.css("clip", "rect(" + t.top + "px " + t.right + "px " + t.bottom + "px " + t.left + "px)") : s(this.css("clip"), this);\n },\n transfer: function transfer(e, i) {\n var s = t(this),\n n = t(e.to),\n o = "fixed" === n.css("position"),\n a = t("body"),\n r = o ? a.scrollTop() : 0,\n h = o ? a.scrollLeft() : 0,\n l = n.offset(),\n c = {\n top: l.top - r,\n left: l.left - h,\n height: n.innerHeight(),\n width: n.innerWidth()\n },\n u = s.offset(),\n d = t("<div class=\'ui-effects-transfer\'></div>").appendTo("body").addClass(e.className).css({\n top: u.top - r,\n left: u.left - h,\n height: s.innerHeight(),\n width: s.innerWidth(),\n position: o ? "fixed" : "absolute"\n }).animate(c, e.duration, e.easing, function () {\n d.remove(), t.isFunction(i) && i();\n });\n }\n }), t.fx.step.clip = function (e) {\n e.clipInit || (e.start = t(e.elem).cssClip(), "string" == typeof e.end && (e.end = s(e.end, e.elem)), e.clipInit = !0), t(e.elem).cssClip({\n top: e.pos * (e.end.top - e.start.top) + e.start.top,\n right: e.pos * (e.end.right - e.start.right) + e.start.right,\n bottom: e.pos * (e.end.bottom - e.start.bottom) + e.start.bottom,\n left: e.pos * (e.end.left - e.start.left) + e.start.left\n });\n };\n }(), function () {\n var e = {};\n t.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function (t, i) {\n e[i] = function (e) {\n return Math.pow(e, t + 2);\n };\n }), t.extend(e, {\n Sine: function Sine(t) {\n return 1 - Math.cos(t * Math.PI / 2);\n },\n Circ: function Circ(t) {\n return 1 - Math.sqrt(1 - t * t);\n },\n Elastic: function Elastic(t) {\n return 0 === t || 1 === t ? t : -Math.pow(2, 8 * (t - 1)) * Math.sin((80 * (t - 1) - 7.5) * Math.PI / 15);\n },\n Back: function Back(t) {\n return t * t * (3 * t - 2);\n },\n Bounce: function Bounce(t) {\n for (var e, i = 4; ((e = Math.pow(2, --i)) - 1) / 11 > t;);\n return 1 / Math.pow(4, 3 - i) - 7.5625 * Math.pow((3 * e - 2) / 22 - t, 2);\n }\n }), t.each(e, function (e, i) {\n t.easing["easeIn" + e] = i, t.easing["easeOut" + e] = function (t) {\n return 1 - i(1 - t);\n }, t.easing["easeInOut" + e] = function (t) {\n return .5 > t ? i(2 * t) / 2 : 1 - i(-2 * t + 2) / 2;\n };\n });\n }();\n var f = t.effects;\n t.effects.define("blind", "hide", function (e, i) {\n var s = {\n up: ["bottom", "top"],\n vertical: ["bottom", "top"],\n down: ["top", "bottom"],\n left: ["right", "left"],\n horizontal: ["right", "left"],\n right: ["left", "right"]\n },\n n = t(this),\n o = e.direction || "up",\n a = n.cssClip(),\n r = {\n clip: t.extend({}, a)\n },\n h = t.effects.createPlaceholder(n);\n r.clip[s[o][0]] = r.clip[s[o][1]], "show" === e.mode && (n.cssClip(r.clip), h && h.css(t.effects.clipToBox(r)), r.clip = a), h && h.animate(t.effects.clipToBox(r), e.duration, e.easing), n.animate(r, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: i\n });\n }), t.effects.define("bounce", function (e, i) {\n var s,\n n,\n o,\n a = t(this),\n r = e.mode,\n h = "hide" === r,\n l = "show" === r,\n c = e.direction || "up",\n u = e.distance,\n d = e.times || 5,\n p = 2 * d + (l || h ? 1 : 0),\n f = e.duration / p,\n g = e.easing,\n m = "up" === c || "down" === c ? "top" : "left",\n _ = "up" === c || "left" === c,\n v = 0,\n b = a.queue().length;\n for (t.effects.createPlaceholder(a), o = a.css(m), u || (u = a["top" === m ? "outerHeight" : "outerWidth"]() / 3), l && (n = {\n opacity: 1\n }, n[m] = o, a.css("opacity", 0).css(m, _ ? 2 * -u : 2 * u).animate(n, f, g)), h && (u /= Math.pow(2, d - 1)), n = {}, n[m] = o; d > v; v++) s = {}, s[m] = (_ ? "-=" : "+=") + u, a.animate(s, f, g).animate(n, f, g), u = h ? 2 * u : u / 2;\n h && (s = {\n opacity: 0\n }, s[m] = (_ ? "-=" : "+=") + u, a.animate(s, f, g)), a.queue(i), t.effects.unshift(a, b, p + 1);\n }), t.effects.define("clip", "hide", function (e, i) {\n var s,\n n = {},\n o = t(this),\n a = e.direction || "vertical",\n r = "both" === a,\n h = r || "horizontal" === a,\n l = r || "vertical" === a;\n s = o.cssClip(), n.clip = {\n top: l ? (s.bottom - s.top) / 2 : s.top,\n right: h ? (s.right - s.left) / 2 : s.right,\n bottom: l ? (s.bottom - s.top) / 2 : s.bottom,\n left: h ? (s.right - s.left) / 2 : s.left\n }, t.effects.createPlaceholder(o), "show" === e.mode && (o.cssClip(n.clip), n.clip = s), o.animate(n, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: i\n });\n }), t.effects.define("drop", "hide", function (e, i) {\n var s,\n n = t(this),\n o = e.mode,\n a = "show" === o,\n r = e.direction || "left",\n h = "up" === r || "down" === r ? "top" : "left",\n l = "up" === r || "left" === r ? "-=" : "+=",\n c = "+=" === l ? "-=" : "+=",\n u = {\n opacity: 0\n };\n t.effects.createPlaceholder(n), s = e.distance || n["top" === h ? "outerHeight" : "outerWidth"](!0) / 2, u[h] = l + s, a && (n.css(u), u[h] = c + s, u.opacity = 1), n.animate(u, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: i\n });\n }), t.effects.define("explode", "hide", function (e, i) {\n function s() {\n b.push(this), b.length === u * d && n();\n }\n function n() {\n p.css({\n visibility: "visible"\n }), t(b).remove(), i();\n }\n var o,\n a,\n r,\n h,\n l,\n c,\n u = e.pieces ? Math.round(Math.sqrt(e.pieces)) : 3,\n d = u,\n p = t(this),\n f = e.mode,\n g = "show" === f,\n m = p.show().css("visibility", "hidden").offset(),\n _ = Math.ceil(p.outerWidth() / d),\n v = Math.ceil(p.outerHeight() / u),\n b = [];\n for (o = 0; u > o; o++) for (h = m.top + o * v, c = o - (u - 1) / 2, a = 0; d > a; a++) r = m.left + a * _, l = a - (d - 1) / 2, p.clone().appendTo("body").wrap("<div></div>").css({\n position: "absolute",\n visibility: "visible",\n left: -a * _,\n top: -o * v\n }).parent().addClass("ui-effects-explode").css({\n position: "absolute",\n overflow: "hidden",\n width: _,\n height: v,\n left: r + (g ? l * _ : 0),\n top: h + (g ? c * v : 0),\n opacity: g ? 0 : 1\n }).animate({\n left: r + (g ? 0 : l * _),\n top: h + (g ? 0 : c * v),\n opacity: g ? 1 : 0\n }, e.duration || 500, e.easing, s);\n }), t.effects.define("fade", "toggle", function (e, i) {\n var s = "show" === e.mode;\n t(this).css("opacity", s ? 0 : 1).animate({\n opacity: s ? 1 : 0\n }, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: i\n });\n }), t.effects.define("fold", "hide", function (e, i) {\n var s = t(this),\n n = e.mode,\n o = "show" === n,\n a = "hide" === n,\n r = e.size || 15,\n h = /([0-9]+)%/.exec(r),\n l = !!e.horizFirst,\n c = l ? ["right", "bottom"] : ["bottom", "right"],\n u = e.duration / 2,\n d = t.effects.createPlaceholder(s),\n p = s.cssClip(),\n f = {\n clip: t.extend({}, p)\n },\n g = {\n clip: t.extend({}, p)\n },\n m = [p[c[0]], p[c[1]]],\n _ = s.queue().length;\n h && (r = parseInt(h[1], 10) / 100 * m[a ? 0 : 1]), f.clip[c[0]] = r, g.clip[c[0]] = r, g.clip[c[1]] = 0, o && (s.cssClip(g.clip), d && d.css(t.effects.clipToBox(g)), g.clip = p), s.queue(function (i) {\n d && d.animate(t.effects.clipToBox(f), u, e.easing).animate(t.effects.clipToBox(g), u, e.easing), i();\n }).animate(f, u, e.easing).animate(g, u, e.easing).queue(i), t.effects.unshift(s, _, 4);\n }), t.effects.define("highlight", "show", function (e, i) {\n var s = t(this),\n n = {\n backgroundColor: s.css("backgroundColor")\n };\n "hide" === e.mode && (n.opacity = 0), t.effects.saveStyle(s), s.css({\n backgroundImage: "none",\n backgroundColor: e.color || "#ffff99"\n }).animate(n, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: i\n });\n }), t.effects.define("size", function (e, i) {\n var s,\n n,\n o,\n a = t(this),\n r = ["fontSize"],\n h = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"],\n l = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"],\n c = e.mode,\n u = "effect" !== c,\n d = e.scale || "both",\n p = e.origin || ["middle", "center"],\n f = a.css("position"),\n g = a.position(),\n m = t.effects.scaledDimensions(a),\n _ = e.from || m,\n v = e.to || t.effects.scaledDimensions(a, 0);\n t.effects.createPlaceholder(a), "show" === c && (o = _, _ = v, v = o), n = {\n from: {\n y: _.height / m.height,\n x: _.width / m.width\n },\n to: {\n y: v.height / m.height,\n x: v.width / m.width\n }\n }, ("box" === d || "both" === d) && (n.from.y !== n.to.y && (_ = t.effects.setTransition(a, h, n.from.y, _), v = t.effects.setTransition(a, h, n.to.y, v)), n.from.x !== n.to.x && (_ = t.effects.setTransition(a, l, n.from.x, _), v = t.effects.setTransition(a, l, n.to.x, v))), ("content" === d || "both" === d) && n.from.y !== n.to.y && (_ = t.effects.setTransition(a, r, n.from.y, _), v = t.effects.setTransition(a, r, n.to.y, v)), p && (s = t.effects.getBaseline(p, m), _.top = (m.outerHeight - _.outerHeight) * s.y + g.top, _.left = (m.outerWidth - _.outerWidth) * s.x + g.left, v.top = (m.outerHeight - v.outerHeight) * s.y + g.top, v.left = (m.outerWidth - v.outerWidth) * s.x + g.left), a.css(_), ("content" === d || "both" === d) && (h = h.concat(["marginTop", "marginBottom"]).concat(r), l = l.concat(["marginLeft", "marginRight"]), a.find("*[width]").each(function () {\n var i = t(this),\n s = t.effects.scaledDimensions(i),\n o = {\n height: s.height * n.from.y,\n width: s.width * n.from.x,\n outerHeight: s.outerHeight * n.from.y,\n outerWidth: s.outerWidth * n.from.x\n },\n a = {\n height: s.height * n.to.y,\n width: s.width * n.to.x,\n outerHeight: s.height * n.to.y,\n outerWidth: s.width * n.to.x\n };\n n.from.y !== n.to.y && (o = t.effects.setTransition(i, h, n.from.y, o), a = t.effects.setTransition(i, h, n.to.y, a)), n.from.x !== n.to.x && (o = t.effects.setTransition(i, l, n.from.x, o), a = t.effects.setTransition(i, l, n.to.x, a)), u && t.effects.saveStyle(i), i.css(o), i.animate(a, e.duration, e.easing, function () {\n u && t.effects.restoreStyle(i);\n });\n })), a.animate(v, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: function complete() {\n var e = a.offset();\n 0 === v.opacity && a.css("opacity", _.opacity), u || (a.css("position", "static" === f ? "relative" : f).offset(e), t.effects.saveStyle(a)), i();\n }\n });\n }), t.effects.define("scale", function (e, i) {\n var s = t(this),\n n = e.mode,\n o = parseInt(e.percent, 10) || (0 === parseInt(e.percent, 10) ? 0 : "effect" !== n ? 0 : 100),\n a = t.extend(!0, {\n from: t.effects.scaledDimensions(s),\n to: t.effects.scaledDimensions(s, o, e.direction || "both"),\n origin: e.origin || ["middle", "center"]\n }, e);\n e.fade && (a.from.opacity = 1, a.to.opacity = 0), t.effects.effect.size.call(this, a, i);\n }), t.effects.define("puff", "hide", function (e, i) {\n var s = t.extend(!0, {}, e, {\n fade: !0,\n percent: parseInt(e.percent, 10) || 150\n });\n t.effects.effect.scale.call(this, s, i);\n }), t.effects.define("pulsate", "show", function (e, i) {\n var s = t(this),\n n = e.mode,\n o = "show" === n,\n a = "hide" === n,\n r = o || a,\n h = 2 * (e.times || 5) + (r ? 1 : 0),\n l = e.duration / h,\n c = 0,\n u = 1,\n d = s.queue().length;\n for ((o || !s.is(":visible")) && (s.css("opacity", 0).show(), c = 1); h > u; u++) s.animate({\n opacity: c\n }, l, e.easing), c = 1 - c;\n s.animate({\n opacity: c\n }, l, e.easing), s.queue(i), t.effects.unshift(s, d, h + 1);\n }), t.effects.define("shake", function (e, i) {\n var s = 1,\n n = t(this),\n o = e.direction || "left",\n a = e.distance || 20,\n r = e.times || 3,\n h = 2 * r + 1,\n l = Math.round(e.duration / h),\n c = "up" === o || "down" === o ? "top" : "left",\n u = "up" === o || "left" === o,\n d = {},\n p = {},\n f = {},\n g = n.queue().length;\n for (t.effects.createPlaceholder(n), d[c] = (u ? "-=" : "+=") + a, p[c] = (u ? "+=" : "-=") + 2 * a, f[c] = (u ? "-=" : "+=") + 2 * a, n.animate(d, l, e.easing); r > s; s++) n.animate(p, l, e.easing).animate(f, l, e.easing);\n n.animate(p, l, e.easing).animate(d, l / 2, e.easing).queue(i), t.effects.unshift(n, g, h + 1);\n }), t.effects.define("slide", "show", function (e, i) {\n var s,\n n,\n o = t(this),\n a = {\n up: ["bottom", "top"],\n down: ["top", "bottom"],\n left: ["right", "left"],\n right: ["left", "right"]\n },\n r = e.mode,\n h = e.direction || "left",\n l = "up" === h || "down" === h ? "top" : "left",\n c = "up" === h || "left" === h,\n u = e.distance || o["top" === l ? "outerHeight" : "outerWidth"](!0),\n d = {};\n t.effects.createPlaceholder(o), s = o.cssClip(), n = o.position()[l], d[l] = (c ? -1 : 1) * u + n, d.clip = o.cssClip(), d.clip[a[h][1]] = d.clip[a[h][0]], "show" === r && (o.cssClip(d.clip), o.css(l, d[l]), d.clip = s, d[l] = n), o.animate(d, {\n queue: !1,\n duration: e.duration,\n easing: e.easing,\n complete: i\n });\n });\n var f;\n t.uiBackCompat !== !1 && (f = t.effects.define("transfer", function (e, i) {\n t(this).transfer(e, i);\n })), t.ui.focusable = function (i, s) {\n var n,\n o,\n a,\n r,\n h,\n l = i.nodeName.toLowerCase();\n return "area" === l ? (n = i.parentNode, o = n.name, i.href && o && "map" === n.nodeName.toLowerCase() ? (a = t("img[usemap=\'#" + o + "\']"), a.length > 0 && a.is(":visible")) : !1) : (/^(input|select|textarea|button|object)$/.test(l) ? (r = !i.disabled, r && (h = t(i).closest("fieldset")[0], h && (r = !h.disabled))) : r = "a" === l ? i.href || s : s, r && t(i).is(":visible") && e(t(i)));\n }, t.extend(t.expr[":"], {\n focusable: function focusable(e) {\n return t.ui.focusable(e, null != t.attr(e, "tabindex"));\n }\n }), t.ui.focusable, t.fn.form = function () {\n return "string" == typeof this[0].form ? this.closest("form") : t(this[0].form);\n }, t.ui.formResetMixin = {\n _formResetHandler: function _formResetHandler() {\n var e = t(this);\n setTimeout(function () {\n var i = e.data("ui-form-reset-instances");\n t.each(i, function () {\n this.refresh();\n });\n });\n },\n _bindFormResetHandler: function _bindFormResetHandler() {\n if (this.form = this.element.form(), this.form.length) {\n var t = this.form.data("ui-form-reset-instances") || [];\n t.length || this.form.on("reset.ui-form-reset", this._formResetHandler), t.push(this), this.form.data("ui-form-reset-instances", t);\n }\n },\n _unbindFormResetHandler: function _unbindFormResetHandler() {\n if (this.form.length) {\n var e = this.form.data("ui-form-reset-instances");\n e.splice(t.inArray(this, e), 1), e.length ? this.form.data("ui-form-reset-instances", e) : this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset");\n }\n }\n }, "1.7" === t.fn.jquery.substring(0, 3) && (t.each(["Width", "Height"], function (e, i) {\n function s(e, i, s, o) {\n return t.each(n, function () {\n i -= parseFloat(t.css(e, "padding" + this)) || 0, s && (i -= parseFloat(t.css(e, "border" + this + "Width")) || 0), o && (i -= parseFloat(t.css(e, "margin" + this)) || 0);\n }), i;\n }\n var n = "Width" === i ? ["Left", "Right"] : ["Top", "Bottom"],\n o = i.toLowerCase(),\n a = {\n innerWidth: t.fn.innerWidth,\n innerHeight: t.fn.innerHeight,\n outerWidth: t.fn.outerWidth,\n outerHeight: t.fn.outerHeight\n };\n t.fn["inner" + i] = function (e) {\n return void 0 === e ? a["inner" + i].call(this) : this.each(function () {\n t(this).css(o, s(this, e) + "px");\n });\n }, t.fn["outer" + i] = function (e, n) {\n return "number" != typeof e ? a["outer" + i].call(this, e) : this.each(function () {\n t(this).css(o, s(this, e, !0, n) + "px");\n });\n };\n }), t.fn.addBack = function (t) {\n return this.add(null == t ? this.prevObject : this.prevObject.filter(t));\n }), t.ui.keyCode = {\n BACKSPACE: 8,\n COMMA: 188,\n DELETE: 46,\n DOWN: 40,\n END: 35,\n ENTER: 13,\n ESCAPE: 27,\n HOME: 36,\n LEFT: 37,\n PAGE_DOWN: 34,\n PAGE_UP: 33,\n PERIOD: 190,\n RIGHT: 39,\n SPACE: 32,\n TAB: 9,\n UP: 38\n }, t.ui.escapeSelector = function () {\n var t = /([!"#$%&\'()*+,./:;<=>?@[\\]^`{|}~])/g;\n return function (e) {\n return e.replace(t, "\\\\$1");\n };\n }(), t.fn.labels = function () {\n var e, i, s, n, o;\n return this[0].labels && this[0].labels.length ? this.pushStack(this[0].labels) : (n = this.eq(0).parents("label"), s = this.attr("id"), s && (e = this.eq(0).parents().last(), o = e.add(e.length ? e.siblings() : this.siblings()), i = "label[for=\'" + t.ui.escapeSelector(s) + "\']", n = n.add(o.find(i).addBack(i))), this.pushStack(n));\n }, t.fn.scrollParent = function (e) {\n var i = this.css("position"),\n s = "absolute" === i,\n n = e ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n o = this.parents().filter(function () {\n var e = t(this);\n return s && "static" === e.css("position") ? !1 : n.test(e.css("overflow") + e.css("overflow-y") + e.css("overflow-x"));\n }).eq(0);\n return "fixed" !== i && o.length ? o : t(this[0].ownerDocument || document);\n }, t.extend(t.expr[":"], {\n tabbable: function tabbable(e) {\n var i = t.attr(e, "tabindex"),\n s = null != i;\n return (!s || i >= 0) && t.ui.focusable(e, s);\n }\n }), t.fn.extend({\n uniqueId: function () {\n var t = 0;\n return function () {\n return this.each(function () {\n this.id || (this.id = "ui-id-" + ++t);\n });\n };\n }(),\n removeUniqueId: function removeUniqueId() {\n return this.each(function () {\n /^ui-id-\\d+$/.test(this.id) && t(this).removeAttr("id");\n });\n }\n }), t.widget("ui.accordion", {\n version: "1.12.0",\n options: {\n active: 0,\n animate: {},\n classes: {\n "ui-accordion-header": "ui-corner-top",\n "ui-accordion-header-collapsed": "ui-corner-all",\n "ui-accordion-content": "ui-corner-bottom"\n },\n collapsible: !1,\n event: "click",\n header: "> li > :first-child, > :not(li):even",\n heightStyle: "auto",\n icons: {\n activeHeader: "ui-icon-triangle-1-s",\n header: "ui-icon-triangle-1-e"\n },\n activate: null,\n beforeActivate: null\n },\n hideProps: {\n borderTopWidth: "hide",\n borderBottomWidth: "hide",\n paddingTop: "hide",\n paddingBottom: "hide",\n height: "hide"\n },\n showProps: {\n borderTopWidth: "show",\n borderBottomWidth: "show",\n paddingTop: "show",\n paddingBottom: "show",\n height: "show"\n },\n _create: function _create() {\n var e = this.options;\n this.prevShow = this.prevHide = t(), this._addClass("ui-accordion", "ui-widget ui-helper-reset"), this.element.attr("role", "tablist"), e.collapsible || e.active !== !1 && null != e.active || (e.active = 0), this._processPanels(), 0 > e.active && (e.active += this.headers.length), this._refresh();\n },\n _getCreateEventData: function _getCreateEventData() {\n return {\n header: this.active,\n panel: this.active.length ? this.active.next() : t()\n };\n },\n _createIcons: function _createIcons() {\n var e,\n i,\n s = this.options.icons;\n s && (e = t("<span>"), this._addClass(e, "ui-accordion-header-icon", "ui-icon " + s.header), e.prependTo(this.headers), i = this.active.children(".ui-accordion-header-icon"), this._removeClass(i, s.header)._addClass(i, null, s.activeHeader)._addClass(this.headers, "ui-accordion-icons"));\n },\n _destroyIcons: function _destroyIcons() {\n this._removeClass(this.headers, "ui-accordion-icons"), this.headers.children(".ui-accordion-header-icon").remove();\n },\n _destroy: function _destroy() {\n var t;\n this.element.removeAttr("role"), this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(), this._destroyIcons(), t = this.headers.next().css("display", "").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(), "content" !== this.options.heightStyle && t.css("height", "");\n },\n _setOption: function _setOption(t, e) {\n return "active" === t ? (this._activate(e), void 0) : ("event" === t && (this.options.event && this._off(this.headers, this.options.event), this._setupEvents(e)), this._super(t, e), "collapsible" !== t || e || this.options.active !== !1 || this._activate(0), "icons" === t && (this._destroyIcons(), e && this._createIcons()), void 0);\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._super(t), this.element.attr("aria-disabled", t), this._toggleClass(null, "ui-state-disabled", !!t), this._toggleClass(this.headers.add(this.headers.next()), null, "ui-state-disabled", !!t);\n },\n _keydown: function _keydown(e) {\n if (!e.altKey && !e.ctrlKey) {\n var i = t.ui.keyCode,\n s = this.headers.length,\n n = this.headers.index(e.target),\n o = !1;\n switch (e.keyCode) {\n case i.RIGHT:\n case i.DOWN:\n o = this.headers[(n + 1) % s];\n break;\n case i.LEFT:\n case i.UP:\n o = this.headers[(n - 1 + s) % s];\n break;\n case i.SPACE:\n case i.ENTER:\n this._eventHandler(e);\n break;\n case i.HOME:\n o = this.headers[0];\n break;\n case i.END:\n o = this.headers[s - 1];\n }\n o && (t(e.target).attr("tabIndex", -1), t(o).attr("tabIndex", 0), t(o).trigger("focus"), e.preventDefault());\n }\n },\n _panelKeyDown: function _panelKeyDown(e) {\n e.keyCode === t.ui.keyCode.UP && e.ctrlKey && t(e.currentTarget).prev().trigger("focus");\n },\n refresh: function refresh() {\n var e = this.options;\n this._processPanels(), e.active === !1 && e.collapsible === !0 || !this.headers.length ? (e.active = !1, this.active = t()) : e.active === !1 ? this._activate(0) : this.active.length && !t.contains(this.element[0], this.active[0]) ? this.headers.length === this.headers.find(".ui-state-disabled").length ? (e.active = !1, this.active = t()) : this._activate(Math.max(0, e.active - 1)) : e.active = this.headers.index(this.active), this._destroyIcons(), this._refresh();\n },\n _processPanels: function _processPanels() {\n var t = this.headers,\n e = this.panels;\n this.headers = this.element.find(this.options.header), this._addClass(this.headers, "ui-accordion-header ui-accordion-header-collapsed", "ui-state-default"), this.panels = this.headers.next().filter(":not(.ui-accordion-content-active)").hide(), this._addClass(this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content"), e && (this._off(t.not(this.headers)), this._off(e.not(this.panels)));\n },\n _refresh: function _refresh() {\n var e,\n i = this.options,\n s = i.heightStyle,\n n = this.element.parent();\n this.active = this._findActive(i.active), this._addClass(this.active, "ui-accordion-header-active", "ui-state-active")._removeClass(this.active, "ui-accordion-header-collapsed"), this._addClass(this.active.next(), "ui-accordion-content-active"), this.active.next().show(), this.headers.attr("role", "tab").each(function () {\n var e = t(this),\n i = e.uniqueId().attr("id"),\n s = e.next(),\n n = s.uniqueId().attr("id");\n e.attr("aria-controls", n), s.attr("aria-labelledby", i);\n }).next().attr("role", "tabpanel"), this.headers.not(this.active).attr({\n "aria-selected": "false",\n "aria-expanded": "false",\n tabIndex: -1\n }).next().attr({\n "aria-hidden": "true"\n }).hide(), this.active.length ? this.active.attr({\n "aria-selected": "true",\n "aria-expanded": "true",\n tabIndex: 0\n }).next().attr({\n "aria-hidden": "false"\n }) : this.headers.eq(0).attr("tabIndex", 0), this._createIcons(), this._setupEvents(i.event), "fill" === s ? (e = n.height(), this.element.siblings(":visible").each(function () {\n var i = t(this),\n s = i.css("position");\n "absolute" !== s && "fixed" !== s && (e -= i.outerHeight(!0));\n }), this.headers.each(function () {\n e -= t(this).outerHeight(!0);\n }), this.headers.next().each(function () {\n t(this).height(Math.max(0, e - t(this).innerHeight() + t(this).height()));\n }).css("overflow", "auto")) : "auto" === s && (e = 0, this.headers.next().each(function () {\n var i = t(this).is(":visible");\n i || t(this).show(), e = Math.max(e, t(this).css("height", "").height()), i || t(this).hide();\n }).height(e));\n },\n _activate: function _activate(e) {\n var i = this._findActive(e)[0];\n i !== this.active[0] && (i = i || this.active[0], this._eventHandler({\n target: i,\n currentTarget: i,\n preventDefault: t.noop\n }));\n },\n _findActive: function _findActive(e) {\n return "number" == typeof e ? this.headers.eq(e) : t();\n },\n _setupEvents: function _setupEvents(e) {\n var i = {\n keydown: "_keydown"\n };\n e && t.each(e.split(" "), function (t, e) {\n i[e] = "_eventHandler";\n }), this._off(this.headers.add(this.headers.next())), this._on(this.headers, i), this._on(this.headers.next(), {\n keydown: "_panelKeyDown"\n }), this._hoverable(this.headers), this._focusable(this.headers);\n },\n _eventHandler: function _eventHandler(e) {\n var i,\n s,\n n = this.options,\n o = this.active,\n a = t(e.currentTarget),\n r = a[0] === o[0],\n h = r && n.collapsible,\n l = h ? t() : a.next(),\n c = o.next(),\n u = {\n oldHeader: o,\n oldPanel: c,\n newHeader: h ? t() : a,\n newPanel: l\n };\n e.preventDefault(), r && !n.collapsible || this._trigger("beforeActivate", e, u) === !1 || (n.active = h ? !1 : this.headers.index(a), this.active = r ? t() : a, this._toggle(u), this._removeClass(o, "ui-accordion-header-active", "ui-state-active"), n.icons && (i = o.children(".ui-accordion-header-icon"), this._removeClass(i, null, n.icons.activeHeader)._addClass(i, null, n.icons.header)), r || (this._removeClass(a, "ui-accordion-header-collapsed")._addClass(a, "ui-accordion-header-active", "ui-state-active"), n.icons && (s = a.children(".ui-accordion-header-icon"), this._removeClass(s, null, n.icons.header)._addClass(s, null, n.icons.activeHeader)), this._addClass(a.next(), "ui-accordion-content-active")));\n },\n _toggle: function _toggle(e) {\n var i = e.newPanel,\n s = this.prevShow.length ? this.prevShow : e.oldPanel;\n this.prevShow.add(this.prevHide).stop(!0, !0), this.prevShow = i, this.prevHide = s, this.options.animate ? this._animate(i, s, e) : (s.hide(), i.show(), this._toggleComplete(e)), s.attr({\n "aria-hidden": "true"\n }), s.prev().attr({\n "aria-selected": "false",\n "aria-expanded": "false"\n }), i.length && s.length ? s.prev().attr({\n tabIndex: -1,\n "aria-expanded": "false"\n }) : i.length && this.headers.filter(function () {\n return 0 === parseInt(t(this).attr("tabIndex"), 10);\n }).attr("tabIndex", -1), i.attr("aria-hidden", "false").prev().attr({\n "aria-selected": "true",\n "aria-expanded": "true",\n tabIndex: 0\n });\n },\n _animate: function _animate(t, e, i) {\n var s,\n n,\n o,\n a = this,\n r = 0,\n h = t.css("box-sizing"),\n l = t.length && (!e.length || t.index() < e.index()),\n c = this.options.animate || {},\n u = l && c.down || c,\n d = function d() {\n a._toggleComplete(i);\n };\n return "number" == typeof u && (o = u), "string" == typeof u && (n = u), n = n || u.easing || c.easing, o = o || u.duration || c.duration, e.length ? t.length ? (s = t.show().outerHeight(), e.animate(this.hideProps, {\n duration: o,\n easing: n,\n step: function step(t, e) {\n e.now = Math.round(t);\n }\n }), t.hide().animate(this.showProps, {\n duration: o,\n easing: n,\n complete: d,\n step: function step(t, i) {\n i.now = Math.round(t), "height" !== i.prop ? "content-box" === h && (r += i.now) : "content" !== a.options.heightStyle && (i.now = Math.round(s - e.outerHeight() - r), r = 0);\n }\n }), void 0) : e.animate(this.hideProps, o, n, d) : t.animate(this.showProps, o, n, d);\n },\n _toggleComplete: function _toggleComplete(t) {\n var e = t.oldPanel,\n i = e.prev();\n this._removeClass(e, "ui-accordion-content-active"), this._removeClass(i, "ui-accordion-header-active")._addClass(i, "ui-accordion-header-collapsed"), e.length && (e.parent()[0].className = e.parent()[0].className), this._trigger("activate", null, t);\n }\n }), t.ui.safeActiveElement = function (t) {\n var e;\n try {\n e = t.activeElement;\n } catch (i) {\n e = t.body;\n }\n return e || (e = t.body), e.nodeName || (e = t.body), e;\n }, t.widget("ui.menu", {\n version: "1.12.0",\n defaultElement: "<ul>",\n delay: 300,\n options: {\n icons: {\n submenu: "ui-icon-caret-1-e"\n },\n items: "> *",\n menus: "ul",\n position: {\n my: "left top",\n at: "right top"\n },\n role: "menu",\n blur: null,\n focus: null,\n select: null\n },\n _create: function _create() {\n this.activeMenu = this.element, this.mouseHandled = !1, this.element.uniqueId().attr({\n role: this.options.role,\n tabIndex: 0\n }), this._addClass("ui-menu", "ui-widget ui-widget-content"), this._on({\n "mousedown .ui-menu-item": function mousedownUiMenuItem(t) {\n t.preventDefault();\n },\n "click .ui-menu-item": function clickUiMenuItem(e) {\n var i = t(e.target),\n s = t(t.ui.safeActiveElement(this.document[0]));\n !this.mouseHandled && i.not(".ui-state-disabled").length && (this.select(e), e.isPropagationStopped() || (this.mouseHandled = !0), i.has(".ui-menu").length ? this.expand(e) : !this.element.is(":focus") && s.closest(".ui-menu").length && (this.element.trigger("focus", [!0]), this.active && 1 === this.active.parents(".ui-menu").length && clearTimeout(this.timer)));\n },\n "mouseenter .ui-menu-item": function mouseenterUiMenuItem(e) {\n if (!this.previousFilter) {\n var i = t(e.target).closest(".ui-menu-item"),\n s = t(e.currentTarget);\n i[0] === s[0] && (this._removeClass(s.siblings().children(".ui-state-active"), null, "ui-state-active"), this.focus(e, s));\n }\n },\n mouseleave: "collapseAll",\n "mouseleave .ui-menu": "collapseAll",\n focus: function focus(t, e) {\n var i = this.active || this.element.find(this.options.items).eq(0);\n e || this.focus(t, i);\n },\n blur: function blur(e) {\n this._delay(function () {\n var i = !t.contains(this.element[0], t.ui.safeActiveElement(this.document[0]));\n i && this.collapseAll(e);\n });\n },\n keydown: "_keydown"\n }), this.refresh(), this._on(this.document, {\n click: function click(t) {\n this._closeOnDocumentClick(t) && this.collapseAll(t), this.mouseHandled = !1;\n }\n });\n },\n _destroy: function _destroy() {\n var e = this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),\n i = e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");\n this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(), i.children().each(function () {\n var e = t(this);\n e.data("ui-menu-submenu-caret") && e.remove();\n });\n },\n _keydown: function _keydown(e) {\n var i,\n s,\n n,\n o,\n a = !0;\n switch (e.keyCode) {\n case t.ui.keyCode.PAGE_UP:\n this.previousPage(e);\n break;\n case t.ui.keyCode.PAGE_DOWN:\n this.nextPage(e);\n break;\n case t.ui.keyCode.HOME:\n this._move("first", "first", e);\n break;\n case t.ui.keyCode.END:\n this._move("last", "last", e);\n break;\n case t.ui.keyCode.UP:\n this.previous(e);\n break;\n case t.ui.keyCode.DOWN:\n this.next(e);\n break;\n case t.ui.keyCode.LEFT:\n this.collapse(e);\n break;\n case t.ui.keyCode.RIGHT:\n this.active && !this.active.is(".ui-state-disabled") && this.expand(e);\n break;\n case t.ui.keyCode.ENTER:\n case t.ui.keyCode.SPACE:\n this._activate(e);\n break;\n case t.ui.keyCode.ESCAPE:\n this.collapse(e);\n break;\n default:\n a = !1, s = this.previousFilter || "", n = String.fromCharCode(e.keyCode), o = !1, clearTimeout(this.filterTimer), n === s ? o = !0 : n = s + n, i = this._filterMenuItems(n), i = o && -1 !== i.index(this.active.next()) ? this.active.nextAll(".ui-menu-item") : i, i.length || (n = String.fromCharCode(e.keyCode), i = this._filterMenuItems(n)), i.length ? (this.focus(e, i), this.previousFilter = n, this.filterTimer = this._delay(function () {\n delete this.previousFilter;\n }, 1e3)) : delete this.previousFilter;\n }\n a && e.preventDefault();\n },\n _activate: function _activate(t) {\n this.active && !this.active.is(".ui-state-disabled") && (this.active.children("[aria-haspopup=\'true\']").length ? this.expand(t) : this.select(t));\n },\n refresh: function refresh() {\n var e,\n i,\n s,\n n,\n o,\n a = this,\n r = this.options.icons.submenu,\n h = this.element.find(this.options.menus);\n this._toggleClass("ui-menu-icons", null, !!this.element.find(".ui-icon").length), s = h.filter(":not(.ui-menu)").hide().attr({\n role: this.options.role,\n "aria-hidden": "true",\n "aria-expanded": "false"\n }).each(function () {\n var e = t(this),\n i = e.prev(),\n s = t("<span>").data("ui-menu-submenu-caret", !0);\n a._addClass(s, "ui-menu-icon", "ui-icon " + r), i.attr("aria-haspopup", "true").prepend(s), e.attr("aria-labelledby", i.attr("id"));\n }), this._addClass(s, "ui-menu", "ui-widget ui-widget-content ui-front"), e = h.add(this.element), i = e.find(this.options.items), i.not(".ui-menu-item").each(function () {\n var e = t(this);\n a._isDivider(e) && a._addClass(e, "ui-menu-divider", "ui-widget-content");\n }), n = i.not(".ui-menu-item, .ui-menu-divider"), o = n.children().not(".ui-menu").uniqueId().attr({\n tabIndex: -1,\n role: this._itemRole()\n }), this._addClass(n, "ui-menu-item")._addClass(o, "ui-menu-item-wrapper"), i.filter(".ui-state-disabled").attr("aria-disabled", "true"), this.active && !t.contains(this.element[0], this.active[0]) && this.blur();\n },\n _itemRole: function _itemRole() {\n return {\n menu: "menuitem",\n listbox: "option"\n }[this.options.role];\n },\n _setOption: function _setOption(t, e) {\n if ("icons" === t) {\n var i = this.element.find(".ui-menu-icon");\n this._removeClass(i, null, this.options.icons.submenu)._addClass(i, null, e.submenu);\n }\n this._super(t, e);\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._super(t), this.element.attr("aria-disabled", t + ""), this._toggleClass(null, "ui-state-disabled", !!t);\n },\n focus: function focus(t, e) {\n var i, s, n;\n this.blur(t, t && "focus" === t.type), this._scrollIntoView(e), this.active = e.first(), s = this.active.children(".ui-menu-item-wrapper"), this._addClass(s, null, "ui-state-active"), this.options.role && this.element.attr("aria-activedescendant", s.attr("id")), n = this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"), this._addClass(n, null, "ui-state-active"), t && "keydown" === t.type ? this._close() : this.timer = this._delay(function () {\n this._close();\n }, this.delay), i = e.children(".ui-menu"), i.length && t && /^mouse/.test(t.type) && this._startOpening(i), this.activeMenu = e.parent(), this._trigger("focus", t, {\n item: e\n });\n },\n _scrollIntoView: function _scrollIntoView(e) {\n var i, s, n, o, a, r;\n this._hasScroll() && (i = parseFloat(t.css(this.activeMenu[0], "borderTopWidth")) || 0, s = parseFloat(t.css(this.activeMenu[0], "paddingTop")) || 0, n = e.offset().top - this.activeMenu.offset().top - i - s, o = this.activeMenu.scrollTop(), a = this.activeMenu.height(), r = e.outerHeight(), 0 > n ? this.activeMenu.scrollTop(o + n) : n + r > a && this.activeMenu.scrollTop(o + n - a + r));\n },\n blur: function blur(t, e) {\n e || clearTimeout(this.timer), this.active && (this._removeClass(this.active.children(".ui-menu-item-wrapper"), null, "ui-state-active"), this._trigger("blur", t, {\n item: this.active\n }), this.active = null);\n },\n _startOpening: function _startOpening(t) {\n clearTimeout(this.timer), "true" === t.attr("aria-hidden") && (this.timer = this._delay(function () {\n this._close(), this._open(t);\n }, this.delay));\n },\n _open: function _open(e) {\n var i = t.extend({\n of: this.active\n }, this.options.position);\n clearTimeout(this.timer), this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden", "true"), e.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(i);\n },\n collapseAll: function collapseAll(e, i) {\n clearTimeout(this.timer), this.timer = this._delay(function () {\n var s = i ? this.element : t(e && e.target).closest(this.element.find(".ui-menu"));\n s.length || (s = this.element), this._close(s), this.blur(e), this._removeClass(s.find(".ui-state-active"), null, "ui-state-active"), this.activeMenu = s;\n }, this.delay);\n },\n _close: function _close(t) {\n t || (t = this.active ? this.active.parent() : this.element), t.find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false");\n },\n _closeOnDocumentClick: function _closeOnDocumentClick(e) {\n return !t(e.target).closest(".ui-menu").length;\n },\n _isDivider: function _isDivider(t) {\n return !/[^\\-\\u2014\\u2013\\s]/.test(t.text());\n },\n collapse: function collapse(t) {\n var e = this.active && this.active.parent().closest(".ui-menu-item", this.element);\n e && e.length && (this._close(), this.focus(t, e));\n },\n expand: function expand(t) {\n var e = this.active && this.active.children(".ui-menu ").find(this.options.items).first();\n e && e.length && (this._open(e.parent()), this._delay(function () {\n this.focus(t, e);\n }));\n },\n next: function next(t) {\n this._move("next", "first", t);\n },\n previous: function previous(t) {\n this._move("prev", "last", t);\n },\n isFirstItem: function isFirstItem() {\n return this.active && !this.active.prevAll(".ui-menu-item").length;\n },\n isLastItem: function isLastItem() {\n return this.active && !this.active.nextAll(".ui-menu-item").length;\n },\n _move: function _move(t, e, i) {\n var s;\n this.active && (s = "first" === t || "last" === t ? this.active["first" === t ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1) : this.active[t + "All"](".ui-menu-item").eq(0)), s && s.length && this.active || (s = this.activeMenu.find(this.options.items)[e]()), this.focus(i, s);\n },\n nextPage: function nextPage(e) {\n var i, s, n;\n return this.active ? (this.isLastItem() || (this._hasScroll() ? (s = this.active.offset().top, n = this.element.height(), this.active.nextAll(".ui-menu-item").each(function () {\n return i = t(this), 0 > i.offset().top - s - n;\n }), this.focus(e, i)) : this.focus(e, this.activeMenu.find(this.options.items)[this.active ? "last" : "first"]())), void 0) : (this.next(e), void 0);\n },\n previousPage: function previousPage(e) {\n var i, s, n;\n return this.active ? (this.isFirstItem() || (this._hasScroll() ? (s = this.active.offset().top, n = this.element.height(), this.active.prevAll(".ui-menu-item").each(function () {\n return i = t(this), i.offset().top - s + n > 0;\n }), this.focus(e, i)) : this.focus(e, this.activeMenu.find(this.options.items).first())), void 0) : (this.next(e), void 0);\n },\n _hasScroll: function _hasScroll() {\n return this.element.outerHeight() < this.element.prop("scrollHeight");\n },\n select: function select(e) {\n this.active = this.active || t(e.target).closest(".ui-menu-item");\n var i = {\n item: this.active\n };\n this.active.has(".ui-menu").length || this.collapseAll(e, !0), this._trigger("select", e, i);\n },\n _filterMenuItems: function _filterMenuItems(e) {\n var i = e.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, "\\\\$&"),\n s = RegExp("^" + i, "i");\n return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function () {\n return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()));\n });\n }\n }), t.widget("ui.autocomplete", {\n version: "1.12.0",\n defaultElement: "<input>",\n options: {\n appendTo: null,\n autoFocus: !1,\n delay: 300,\n minLength: 1,\n position: {\n my: "left top",\n at: "left bottom",\n collision: "none"\n },\n source: null,\n change: null,\n close: null,\n focus: null,\n open: null,\n response: null,\n search: null,\n select: null\n },\n requestIndex: 0,\n pending: 0,\n _create: function _create() {\n var e,\n i,\n s,\n n = this.element[0].nodeName.toLowerCase(),\n o = "textarea" === n,\n a = "input" === n;\n this.isMultiLine = o || !a && this._isContentEditable(this.element), this.valueMethod = this.element[o || a ? "val" : "text"], this.isNewMenu = !0, this._addClass("ui-autocomplete-input"), this.element.attr("autocomplete", "off"), this._on(this.element, {\n keydown: function keydown(n) {\n if (this.element.prop("readOnly")) return e = !0, s = !0, i = !0, void 0;\n e = !1, s = !1, i = !1;\n var o = t.ui.keyCode;\n switch (n.keyCode) {\n case o.PAGE_UP:\n e = !0, this._move("previousPage", n);\n break;\n case o.PAGE_DOWN:\n e = !0, this._move("nextPage", n);\n break;\n case o.UP:\n e = !0, this._keyEvent("previous", n);\n break;\n case o.DOWN:\n e = !0, this._keyEvent("next", n);\n break;\n case o.ENTER:\n this.menu.active && (e = !0, n.preventDefault(), this.menu.select(n));\n break;\n case o.TAB:\n this.menu.active && this.menu.select(n);\n break;\n case o.ESCAPE:\n this.menu.element.is(":visible") && (this.isMultiLine || this._value(this.term), this.close(n), n.preventDefault());\n break;\n default:\n i = !0, this._searchTimeout(n);\n }\n },\n keypress: function keypress(s) {\n if (e) return e = !1, (!this.isMultiLine || this.menu.element.is(":visible")) && s.preventDefault(), void 0;\n if (!i) {\n var n = t.ui.keyCode;\n switch (s.keyCode) {\n case n.PAGE_UP:\n this._move("previousPage", s);\n break;\n case n.PAGE_DOWN:\n this._move("nextPage", s);\n break;\n case n.UP:\n this._keyEvent("previous", s);\n break;\n case n.DOWN:\n this._keyEvent("next", s);\n }\n }\n },\n input: function input(t) {\n return s ? (s = !1, t.preventDefault(), void 0) : (this._searchTimeout(t), void 0);\n },\n focus: function focus() {\n this.selectedItem = null, this.previous = this._value();\n },\n blur: function blur(t) {\n return this.cancelBlur ? (delete this.cancelBlur, void 0) : (clearTimeout(this.searching), this.close(t), this._change(t), void 0);\n }\n }), this._initSource(), this.menu = t("<ul>").appendTo(this._appendTo()).menu({\n role: null\n }).hide().menu("instance"), this._addClass(this.menu.element, "ui-autocomplete", "ui-front"), this._on(this.menu.element, {\n mousedown: function mousedown(e) {\n e.preventDefault(), this.cancelBlur = !0, this._delay(function () {\n delete this.cancelBlur, this.element[0] !== t.ui.safeActiveElement(this.document[0]) && this.element.trigger("focus");\n });\n },\n menufocus: function menufocus(e, i) {\n var s, n;\n return this.isNewMenu && (this.isNewMenu = !1, e.originalEvent && /^mouse/.test(e.originalEvent.type)) ? (this.menu.blur(), this.document.one("mousemove", function () {\n t(e.target).trigger(e.originalEvent);\n }), void 0) : (n = i.item.data("ui-autocomplete-item"), !1 !== this._trigger("focus", e, {\n item: n\n }) && e.originalEvent && /^key/.test(e.originalEvent.type) && this._value(n.value), s = i.item.attr("aria-label") || n.value, s && t.trim(s).length && (this.liveRegion.children().hide(), t("<div>").text(s).appendTo(this.liveRegion)), void 0);\n },\n menuselect: function menuselect(e, i) {\n var s = i.item.data("ui-autocomplete-item"),\n n = this.previous;\n this.element[0] !== t.ui.safeActiveElement(this.document[0]) && (this.element.trigger("focus"), this.previous = n, this._delay(function () {\n this.previous = n, this.selectedItem = s;\n })), !1 !== this._trigger("select", e, {\n item: s\n }) && this._value(s.value), this.term = this._value(), this.close(e), this.selectedItem = s;\n }\n }), this.liveRegion = t("<div>", {\n role: "status",\n "aria-live": "assertive",\n "aria-relevant": "additions"\n }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"), this._on(this.window, {\n beforeunload: function beforeunload() {\n this.element.removeAttr("autocomplete");\n }\n });\n },\n _destroy: function _destroy() {\n clearTimeout(this.searching), this.element.removeAttr("autocomplete"), this.menu.element.remove(), this.liveRegion.remove();\n },\n _setOption: function _setOption(t, e) {\n this._super(t, e), "source" === t && this._initSource(), "appendTo" === t && this.menu.element.appendTo(this._appendTo()), "disabled" === t && e && this.xhr && this.xhr.abort();\n },\n _isEventTargetInWidget: function _isEventTargetInWidget(e) {\n var i = this.menu.element[0];\n return e.target === this.element[0] || e.target === i || t.contains(i, e.target);\n },\n _closeOnClickOutside: function _closeOnClickOutside(t) {\n this._isEventTargetInWidget(t) || this.close();\n },\n _appendTo: function _appendTo() {\n var e = this.options.appendTo;\n return e && (e = e.jquery || e.nodeType ? t(e) : this.document.find(e).eq(0)), e && e[0] || (e = this.element.closest(".ui-front, dialog")), e.length || (e = this.document[0].body), e;\n },\n _initSource: function _initSource() {\n var e,\n i,\n s = this;\n t.isArray(this.options.source) ? (e = this.options.source, this.source = function (i, s) {\n s(t.ui.autocomplete.filter(e, i.term));\n }) : "string" == typeof this.options.source ? (i = this.options.source, this.source = function (e, n) {\n s.xhr && s.xhr.abort(), s.xhr = t.ajax({\n url: i,\n data: e,\n dataType: "json",\n success: function success(t) {\n n(t);\n },\n error: function error() {\n n([]);\n }\n });\n }) : this.source = this.options.source;\n },\n _searchTimeout: function _searchTimeout(t) {\n clearTimeout(this.searching), this.searching = this._delay(function () {\n var e = this.term === this._value(),\n i = this.menu.element.is(":visible"),\n s = t.altKey || t.ctrlKey || t.metaKey || t.shiftKey;\n (!e || e && !i && !s) && (this.selectedItem = null, this.search(null, t));\n }, this.options.delay);\n },\n search: function search(t, e) {\n return t = null != t ? t : this._value(), this.term = this._value(), t.length < this.options.minLength ? this.close(e) : this._trigger("search", e) !== !1 ? this._search(t) : void 0;\n },\n _search: function _search(t) {\n this.pending++, this._addClass("ui-autocomplete-loading"), this.cancelSearch = !1, this.source({\n term: t\n }, this._response());\n },\n _response: function _response() {\n var e = ++this.requestIndex;\n return t.proxy(function (t) {\n e === this.requestIndex && this.__response(t), this.pending--, this.pending || this._removeClass("ui-autocomplete-loading");\n }, this);\n },\n __response: function __response(t) {\n t && (t = this._normalize(t)), this._trigger("response", null, {\n content: t\n }), !this.options.disabled && t && t.length && !this.cancelSearch ? (this._suggest(t), this._trigger("open")) : this._close();\n },\n close: function close(t) {\n this.cancelSearch = !0, this._close(t);\n },\n _close: function _close(t) {\n this._off(this.document, "mousedown"), this.menu.element.is(":visible") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger("close", t));\n },\n _change: function _change(t) {\n this.previous !== this._value() && this._trigger("change", t, {\n item: this.selectedItem\n });\n },\n _normalize: function _normalize(e) {\n return e.length && e[0].label && e[0].value ? e : t.map(e, function (e) {\n return "string" == typeof e ? {\n label: e,\n value: e\n } : t.extend({}, e, {\n label: e.label || e.value,\n value: e.value || e.label\n });\n });\n },\n _suggest: function _suggest(e) {\n var i = this.menu.element.empty();\n this._renderMenu(i, e), this.isNewMenu = !0, this.menu.refresh(), i.show(), this._resizeMenu(), i.position(t.extend({\n of: this.element\n }, this.options.position)), this.options.autoFocus && this.menu.next(), this._on(this.document, {\n mousedown: "_closeOnClickOutside"\n });\n },\n _resizeMenu: function _resizeMenu() {\n var t = this.menu.element;\n t.outerWidth(Math.max(t.width("").outerWidth() + 1, this.element.outerWidth()));\n },\n _renderMenu: function _renderMenu(e, i) {\n var s = this;\n t.each(i, function (t, i) {\n s._renderItemData(e, i);\n });\n },\n _renderItemData: function _renderItemData(t, e) {\n return this._renderItem(t, e).data("ui-autocomplete-item", e);\n },\n _renderItem: function _renderItem(e, i) {\n return t("<li>").append(t("<div>").text(i.label)).appendTo(e);\n },\n _move: function _move(t, e) {\n return this.menu.element.is(":visible") ? this.menu.isFirstItem() && /^previous/.test(t) || this.menu.isLastItem() && /^next/.test(t) ? (this.isMultiLine || this._value(this.term), this.menu.blur(), void 0) : (this.menu[t](e), void 0) : (this.search(null, e), void 0);\n },\n widget: function widget() {\n return this.menu.element;\n },\n _value: function _value() {\n return this.valueMethod.apply(this.element, arguments);\n },\n _keyEvent: function _keyEvent(t, e) {\n (!this.isMultiLine || this.menu.element.is(":visible")) && (this._move(t, e), e.preventDefault());\n },\n _isContentEditable: function _isContentEditable(t) {\n if (!t.length) return !1;\n var e = t.prop("contentEditable");\n return "inherit" === e ? this._isContentEditable(t.parent()) : "true" === e;\n }\n }), t.extend(t.ui.autocomplete, {\n escapeRegex: function escapeRegex(t) {\n return t.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, "\\\\$&");\n },\n filter: function filter(e, i) {\n var s = RegExp(t.ui.autocomplete.escapeRegex(i), "i");\n return t.grep(e, function (t) {\n return s.test(t.label || t.value || t);\n });\n }\n }), t.widget("ui.autocomplete", t.ui.autocomplete, {\n options: {\n messages: {\n noResults: "No search results.",\n results: function results(t) {\n return t + (t > 1 ? " results are" : " result is") + " available, use up and down arrow keys to navigate.";\n }\n }\n },\n __response: function __response(e) {\n var i;\n this._superApply(arguments), this.options.disabled || this.cancelSearch || (i = e && e.length ? this.options.messages.results(e.length) : this.options.messages.noResults, this.liveRegion.children().hide(), t("<div>").text(i).appendTo(this.liveRegion));\n }\n }), t.ui.autocomplete;\n var g = /ui-corner-([a-z]){2,6}/g;\n t.widget("ui.controlgroup", {\n version: "1.12.0",\n defaultElement: "<div>",\n options: {\n direction: "horizontal",\n disabled: null,\n onlyVisible: !0,\n items: {\n button: "input[type=button], input[type=submit], input[type=reset], button, a",\n controlgroupLabel: ".ui-controlgroup-label",\n checkboxradio: "input[type=\'checkbox\'], input[type=\'radio\']",\n selectmenu: "select",\n spinner: ".ui-spinner-input"\n }\n },\n _create: function _create() {\n this._enhance();\n },\n _enhance: function _enhance() {\n this.element.attr("role", "toolbar"), this.refresh();\n },\n _destroy: function _destroy() {\n this._callChildMethod("destroy"), this.childWidgets.removeData("ui-controlgroup-data"), this.element.removeAttr("role"), this.options.items.controlgroupLabel && this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap();\n },\n _initWidgets: function _initWidgets() {\n var e = this,\n i = [];\n t.each(this.options.items, function (s, n) {\n var o,\n a = {};\n return n ? "controlgroupLabel" === s ? (o = e.element.find(n), o.each(function () {\n var e = t(this);\n e.children(".ui-controlgroup-label-contents").length || e.contents().wrapAll("<span class=\'ui-controlgroup-label-contents\'></span>");\n }), e._addClass(o, null, "ui-widget ui-widget-content ui-state-default"), i = i.concat(o.get()), void 0) : (t.fn[s] && (e["_" + s + "Options"] && (a = e["_" + s + "Options"]("middle")), e.element.find(n).each(function () {\n var n = t(this),\n o = n[s]("instance"),\n r = t.widget.extend({}, a);\n if ("button" !== s || !n.parent(".ui-spinner").length) {\n o || (o = n[s]()[s]("instance")), o && (r.classes = e._resolveClassesValues(r.classes, o)), n[s](r);\n var h = n[s]("widget");\n t.data(h[0], "ui-controlgroup-data", o ? o : n[s]("instance")), i.push(h[0]);\n }\n })), void 0) : void 0;\n }), this.childWidgets = t(t.unique(i)), this._addClass(this.childWidgets, "ui-controlgroup-item");\n },\n _callChildMethod: function _callChildMethod(e) {\n this.childWidgets.each(function () {\n var i = t(this),\n s = i.data("ui-controlgroup-data");\n s && s[e] && s[e]();\n });\n },\n _updateCornerClass: function _updateCornerClass(t, e) {\n var i = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",\n s = this._buildSimpleOptions(e, "label").classes.label;\n this._removeClass(t, null, i), this._addClass(t, null, s);\n },\n _buildSimpleOptions: function _buildSimpleOptions(t, e) {\n var i = "vertical" === this.options.direction,\n s = {\n classes: {}\n };\n return s.classes[e] = {\n middle: "",\n first: "ui-corner-" + (i ? "top" : "left"),\n last: "ui-corner-" + (i ? "bottom" : "right"),\n only: "ui-corner-all"\n }[t], s;\n },\n _spinnerOptions: function _spinnerOptions(t) {\n var e = this._buildSimpleOptions(t, "ui-spinner");\n return e.classes["ui-spinner-up"] = "", e.classes["ui-spinner-down"] = "", e;\n },\n _buttonOptions: function _buttonOptions(t) {\n return this._buildSimpleOptions(t, "ui-button");\n },\n _checkboxradioOptions: function _checkboxradioOptions(t) {\n return this._buildSimpleOptions(t, "ui-checkboxradio-label");\n },\n _selectmenuOptions: function _selectmenuOptions(t) {\n var e = "vertical" === this.options.direction;\n return {\n width: e ? "auto" : !1,\n classes: {\n middle: {\n "ui-selectmenu-button-open": "",\n "ui-selectmenu-button-closed": ""\n },\n first: {\n "ui-selectmenu-button-open": "ui-corner-" + (e ? "top" : "tl"),\n "ui-selectmenu-button-closed": "ui-corner-" + (e ? "top" : "left")\n },\n last: {\n "ui-selectmenu-button-open": e ? "" : "ui-corner-tr",\n "ui-selectmenu-button-closed": "ui-corner-" + (e ? "bottom" : "right")\n },\n only: {\n "ui-selectmenu-button-open": "ui-corner-top",\n "ui-selectmenu-button-closed": "ui-corner-all"\n }\n }[t]\n };\n },\n _resolveClassesValues: function _resolveClassesValues(e, i) {\n var s = {};\n return t.each(e, function (t) {\n var n = i.options.classes[t] || "";\n n = n.replace(g, "").trim(), s[t] = (n + " " + e[t]).replace(/\\s+/g, " ");\n }), s;\n },\n _setOption: function _setOption(t, e) {\n return "direction" === t && this._removeClass("ui-controlgroup-" + this.options.direction), this._super(t, e), "disabled" === t ? (this._callChildMethod(e ? "disable" : "enable"), void 0) : (this.refresh(), void 0);\n },\n refresh: function refresh() {\n var e,\n i = this;\n this._addClass("ui-controlgroup ui-controlgroup-" + this.options.direction), "horizontal" === this.options.direction && this._addClass(null, "ui-helper-clearfix"), this._initWidgets(), e = this.childWidgets, this.options.onlyVisible && (e = e.filter(":visible")), e.length && (t.each(["first", "last"], function (t, s) {\n var n = e[s]().data("ui-controlgroup-data");\n if (n && i["_" + n.widgetName + "Options"]) {\n var o = i["_" + n.widgetName + "Options"](1 === e.length ? "only" : s);\n o.classes = i._resolveClassesValues(o.classes, n), n.element[n.widgetName](o);\n } else i._updateCornerClass(e[s](), s);\n }), this._callChildMethod("refresh"));\n }\n }), t.widget("ui.checkboxradio", [t.ui.formResetMixin, {\n version: "1.12.0",\n options: {\n disabled: null,\n label: null,\n icon: !0,\n classes: {\n "ui-checkboxradio-label": "ui-corner-all",\n "ui-checkboxradio-icon": "ui-corner-all"\n }\n },\n _getCreateOptions: function _getCreateOptions() {\n var e,\n i,\n s = this,\n n = this._super() || {};\n return this._readType(), i = this.element.labels(), this.label = t(i[i.length - 1]), this.label.length || t.error("No label found for checkboxradio widget"), this.originalLabel = "", this.label.contents().not(this.element).each(function () {\n s.originalLabel += 3 === this.nodeType ? t(this).text() : this.outerHTML;\n }), this.originalLabel && (n.label = this.originalLabel), e = this.element[0].disabled, null != e && (n.disabled = e), n;\n },\n _create: function _create() {\n var t = this.element[0].checked;\n this._bindFormResetHandler(), null == this.options.disabled && (this.options.disabled = this.element[0].disabled), this._setOption("disabled", this.options.disabled), this._addClass("ui-checkboxradio", "ui-helper-hidden-accessible"), this._addClass(this.label, "ui-checkboxradio-label", "ui-button ui-widget"), "radio" === this.type && this._addClass(this.label, "ui-checkboxradio-radio-label"), this.options.label && this.options.label !== this.originalLabel ? this._updateLabel() : this.originalLabel && (this.options.label = this.originalLabel), this._enhance(), t && (this._addClass(this.label, "ui-checkboxradio-checked", "ui-state-active"), this.icon && this._addClass(this.icon, null, "ui-state-hover")), this._on({\n change: "_toggleClasses",\n focus: function focus() {\n this._addClass(this.label, null, "ui-state-focus ui-visual-focus");\n },\n blur: function blur() {\n this._removeClass(this.label, null, "ui-state-focus ui-visual-focus");\n }\n });\n },\n _readType: function _readType() {\n var e = this.element[0].nodeName.toLowerCase();\n this.type = this.element[0].type, "input" === e && /radio|checkbox/.test(this.type) || t.error("Can\'t create checkboxradio on element.nodeName=" + e + " and element.type=" + this.type);\n },\n _enhance: function _enhance() {\n this._updateIcon(this.element[0].checked);\n },\n widget: function widget() {\n return this.label;\n },\n _getRadioGroup: function _getRadioGroup() {\n var e,\n i = this.element[0].name,\n s = "input[name=\'" + t.ui.escapeSelector(i) + "\']";\n return i ? (e = this.form.length ? t(this.form[0].elements).filter(s) : t(s).filter(function () {\n return 0 === t(this).form().length;\n }), e.not(this.element)) : t([]);\n },\n _toggleClasses: function _toggleClasses() {\n var e = this.element[0].checked;\n this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", e), this.options.icon && "checkbox" === this.type && this._toggleClass(this.icon, null, "ui-icon-check ui-state-checked", e)._toggleClass(this.icon, null, "ui-icon-blank", !e), "radio" === this.type && this._getRadioGroup().each(function () {\n var e = t(this).checkboxradio("instance");\n e && e._removeClass(e.label, "ui-checkboxradio-checked", "ui-state-active");\n });\n },\n _destroy: function _destroy() {\n this._unbindFormResetHandler(), this.icon && (this.icon.remove(), this.iconSpace.remove());\n },\n _setOption: function _setOption(t, e) {\n return "label" !== t || e ? (this._super(t, e), "disabled" === t ? (this._toggleClass(this.label, null, "ui-state-disabled", e), this.element[0].disabled = e, void 0) : (this.refresh(), void 0)) : void 0;\n },\n _updateIcon: function _updateIcon(e) {\n var i = "ui-icon ui-icon-background ";\n this.options.icon ? (this.icon || (this.icon = t("<span>"), this.iconSpace = t("<span> </span>"), this._addClass(this.iconSpace, "ui-checkboxradio-icon-space")), "checkbox" === this.type ? (i += e ? "ui-icon-check ui-state-checked" : "ui-icon-blank", this._removeClass(this.icon, null, e ? "ui-icon-blank" : "ui-icon-check")) : i += "ui-icon-blank", this._addClass(this.icon, "ui-checkboxradio-icon", i), e || this._removeClass(this.icon, null, "ui-icon-check ui-state-checked"), this.icon.prependTo(this.label).after(this.iconSpace)) : void 0 !== this.icon && (this.icon.remove(), this.iconSpace.remove(), delete this.icon);\n },\n _updateLabel: function _updateLabel() {\n this.label.contents().not(this.element.add(this.icon).add(this.iconSpace)).remove(), this.label.append(this.options.label);\n },\n refresh: function refresh() {\n var t = this.element[0].checked,\n e = this.element[0].disabled;\n this._updateIcon(t), this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", t), null !== this.options.label && this._updateLabel(), e !== this.options.disabled && this._setOptions({\n disabled: e\n });\n }\n }]), t.ui.checkboxradio, t.widget("ui.button", {\n version: "1.12.0",\n defaultElement: "<button>",\n options: {\n classes: {\n "ui-button": "ui-corner-all"\n },\n disabled: null,\n icon: null,\n iconPosition: "beginning",\n label: null,\n showLabel: !0\n },\n _getCreateOptions: function _getCreateOptions() {\n var t,\n e = this._super() || {};\n return this.isInput = this.element.is("input"), t = this.element[0].disabled, null != t && (e.disabled = t), this.originalLabel = this.isInput ? this.element.val() : this.element.html(), this.originalLabel && (e.label = this.originalLabel), e;\n },\n _create: function _create() {\n !this.option.showLabel & !this.options.icon && (this.options.showLabel = !0), null == this.options.disabled && (this.options.disabled = this.element[0].disabled || !1), this.hasTitle = !!this.element.attr("title"), this.options.label && this.options.label !== this.originalLabel && (this.isInput ? this.element.val(this.options.label) : this.element.html(this.options.label)), this._addClass("ui-button", "ui-widget"), this._setOption("disabled", this.options.disabled), this._enhance(), this.element.is("a") && this._on({\n keyup: function keyup(e) {\n e.keyCode === t.ui.keyCode.SPACE && (e.preventDefault(), this.element[0].click ? this.element[0].click() : this.element.trigger("click"));\n }\n });\n },\n _enhance: function _enhance() {\n this.element.is("button") || this.element.attr("role", "button"), this.options.icon && (this._updateIcon("icon", this.options.icon), this._updateTooltip());\n },\n _updateTooltip: function _updateTooltip() {\n this.title = this.element.attr("title"), this.options.showLabel || this.title || this.element.attr("title", this.options.label);\n },\n _updateIcon: function _updateIcon(e, i) {\n var s = "iconPosition" !== e,\n n = s ? this.options.iconPosition : i,\n o = "top" === n || "bottom" === n;\n this.icon ? s && this._removeClass(this.icon, null, this.options.icon) : (this.icon = t("<span>"), this._addClass(this.icon, "ui-button-icon", "ui-icon"), this.options.showLabel || this._addClass("ui-button-icon-only")), s && this._addClass(this.icon, null, i), this._attachIcon(n), o ? (this._addClass(this.icon, null, "ui-widget-icon-block"), this.iconSpace && this.iconSpace.remove()) : (this.iconSpace || (this.iconSpace = t("<span> </span>"), this._addClass(this.iconSpace, "ui-button-icon-space")), this._removeClass(this.icon, null, "ui-wiget-icon-block"), this._attachIconSpace(n));\n },\n _destroy: function _destroy() {\n this.element.removeAttr("role"), this.icon && this.icon.remove(), this.iconSpace && this.iconSpace.remove(), this.hasTitle || this.element.removeAttr("title");\n },\n _attachIconSpace: function _attachIconSpace(t) {\n this.icon[/^(?:end|bottom)/.test(t) ? "before" : "after"](this.iconSpace);\n },\n _attachIcon: function _attachIcon(t) {\n this.element[/^(?:end|bottom)/.test(t) ? "append" : "prepend"](this.icon);\n },\n _setOptions: function _setOptions(t) {\n var e = void 0 === t.showLabel ? this.options.showLabel : t.showLabel,\n i = void 0 === t.icon ? this.options.icon : t.icon;\n e || i || (t.showLabel = !0), this._super(t);\n },\n _setOption: function _setOption(t, e) {\n "icon" === t && (e ? this._updateIcon(t, e) : this.icon && (this.icon.remove(), this.iconSpace && this.iconSpace.remove())), "iconPosition" === t && this._updateIcon(t, e), "showLabel" === t && (this._toggleClass("ui-button-icon-only", null, !e), this._updateTooltip()), "label" === t && (this.isInput ? this.element.val(e) : (this.element.html(e), this.icon && (this._attachIcon(this.options.iconPosition), this._attachIconSpace(this.options.iconPosition)))), this._super(t, e), "disabled" === t && (this._toggleClass(null, "ui-state-disabled", e), this.element[0].disabled = e, e && this.element.blur());\n },\n refresh: function refresh() {\n var t = this.element.is("input, button") ? this.element[0].disabled : this.element.hasClass("ui-button-disabled");\n t !== this.options.disabled && this._setOptions({\n disabled: t\n }), this._updateTooltip();\n }\n }), t.uiBackCompat !== !1 && (t.widget("ui.button", t.ui.button, {\n options: {\n text: !0,\n icons: {\n primary: null,\n secondary: null\n }\n },\n _create: function _create() {\n this.options.showLabel && !this.options.text && (this.options.showLabel = this.options.text), !this.options.showLabel && this.options.text && (this.options.text = this.options.showLabel), this.options.icon || !this.options.icons.primary && !this.options.icons.secondary ? this.options.icon && (this.options.icons.primary = this.options.icon) : this.options.icons.primary ? this.options.icon = this.options.icons.primary : (this.options.icon = this.options.icons.secondary, this.options.iconPosition = "end"), this._super();\n },\n _setOption: function _setOption(t, e) {\n return "text" === t ? (this._super("showLabel", e), void 0) : ("showLabel" === t && (this.options.text = e), "icon" === t && (this.options.icons.primary = e), "icons" === t && (e.primary ? (this._super("icon", e.primary), this._super("iconPosition", "beginning")) : e.secondary && (this._super("icon", e.secondary), this._super("iconPosition", "end"))), this._superApply(arguments), void 0);\n }\n }), t.fn.button = function (e) {\n return function () {\n return !this.length || this.length && "INPUT" !== this[0].tagName || this.length && "INPUT" === this[0].tagName && "checkbox" !== this.attr("type") && "radio" !== this.attr("type") ? e.apply(this, arguments) : (t.ui.checkboxradio || t.error("Checkboxradio widget missing"), 0 === arguments.length ? this.checkboxradio({\n icon: !1\n }) : this.checkboxradio.apply(this, arguments));\n };\n }(t.fn.button), t.fn.buttonset = function () {\n return t.ui.controlgroup || t.error("Controlgroup widget missing"), "option" === arguments[0] && "items" === arguments[1] && arguments[2] ? this.controlgroup.apply(this, [arguments[0], "items.button", arguments[2]]) : "option" === arguments[0] && "items" === arguments[1] ? this.controlgroup.apply(this, [arguments[0], "items.button"]) : ("object" == _typeof(arguments[0]) && arguments[0].items && (arguments[0].items = {\n button: arguments[0].items\n }), this.controlgroup.apply(this, arguments));\n }), t.ui.button, t.extend(t.ui, {\n datepicker: {\n version: "1.12.0"\n }\n });\n var m;\n t.extend(s.prototype, {\n markerClassName: "hasDatepicker",\n maxRows: 4,\n _widgetDatepicker: function _widgetDatepicker() {\n return this.dpDiv;\n },\n setDefaults: function setDefaults(t) {\n return a(this._defaults, t || {}), this;\n },\n _attachDatepicker: function _attachDatepicker(e, i) {\n var s, n, o;\n s = e.nodeName.toLowerCase(), n = "div" === s || "span" === s, e.id || (this.uuid += 1, e.id = "dp" + this.uuid), o = this._newInst(t(e), n), o.settings = t.extend({}, i || {}), "input" === s ? this._connectDatepicker(e, o) : n && this._inlineDatepicker(e, o);\n },\n _newInst: function _newInst(e, i) {\n var s = e[0].id.replace(/([^A-Za-z0-9_\\-])/g, "\\\\\\\\$1");\n return {\n id: s,\n input: e,\n selectedDay: 0,\n selectedMonth: 0,\n selectedYear: 0,\n drawMonth: 0,\n drawYear: 0,\n inline: i,\n dpDiv: i ? n(t("<div class=\'" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all\'></div>")) : this.dpDiv\n };\n },\n _connectDatepicker: function _connectDatepicker(e, i) {\n var s = t(e);\n i.append = t([]), i.trigger = t([]), s.hasClass(this.markerClassName) || (this._attachments(s, i), s.addClass(this.markerClassName).on("keydown", this._doKeyDown).on("keypress", this._doKeyPress).on("keyup", this._doKeyUp), this._autoSize(i), t.data(e, "datepicker", i), i.settings.disabled && this._disableDatepicker(e));\n },\n _attachments: function _attachments(e, i) {\n var s,\n n,\n o,\n a = this._get(i, "appendText"),\n r = this._get(i, "isRTL");\n i.append && i.append.remove(), a && (i.append = t("<span class=\'" + this._appendClass + "\'>" + a + "</span>"), e[r ? "before" : "after"](i.append)), e.off("focus", this._showDatepicker), i.trigger && i.trigger.remove(), s = this._get(i, "showOn"), ("focus" === s || "both" === s) && e.on("focus", this._showDatepicker), ("button" === s || "both" === s) && (n = this._get(i, "buttonText"), o = this._get(i, "buttonImage"), i.trigger = t(this._get(i, "buttonImageOnly") ? t("<img/>").addClass(this._triggerClass).attr({\n src: o,\n alt: n,\n title: n\n }) : t("<button type=\'button\'></button>").addClass(this._triggerClass).html(o ? t("<img/>").attr({\n src: o,\n alt: n,\n title: n\n }) : n)), e[r ? "before" : "after"](i.trigger), i.trigger.on("click", function () {\n return t.datepicker._datepickerShowing && t.datepicker._lastInput === e[0] ? t.datepicker._hideDatepicker() : t.datepicker._datepickerShowing && t.datepicker._lastInput !== e[0] ? (t.datepicker._hideDatepicker(), t.datepicker._showDatepicker(e[0])) : t.datepicker._showDatepicker(e[0]), !1;\n }));\n },\n _autoSize: function _autoSize(t) {\n if (this._get(t, "autoSize") && !t.inline) {\n var e,\n i,\n s,\n n,\n o = new Date(2009, 11, 20),\n a = this._get(t, "dateFormat");\n a.match(/[DM]/) && (e = function e(t) {\n for (i = 0, s = 0, n = 0; t.length > n; n++) t[n].length > i && (i = t[n].length, s = n);\n return s;\n }, o.setMonth(e(this._get(t, a.match(/MM/) ? "monthNames" : "monthNamesShort"))), o.setDate(e(this._get(t, a.match(/DD/) ? "dayNames" : "dayNamesShort")) + 20 - o.getDay())), t.input.attr("size", this._formatDate(t, o).length);\n }\n },\n _inlineDatepicker: function _inlineDatepicker(e, i) {\n var s = t(e);\n s.hasClass(this.markerClassName) || (s.addClass(this.markerClassName).append(i.dpDiv), t.data(e, "datepicker", i), this._setDate(i, this._getDefaultDate(i), !0), this._updateDatepicker(i), this._updateAlternate(i), i.settings.disabled && this._disableDatepicker(e), i.dpDiv.css("display", "block"));\n },\n _dialogDatepicker: function _dialogDatepicker(e, i, s, n, o) {\n var r,\n h,\n l,\n c,\n u,\n d = this._dialogInst;\n return d || (this.uuid += 1, r = "dp" + this.uuid, this._dialogInput = t("<input type=\'text\' id=\'" + r + "\' style=\'position: absolute; top: -100px; width: 0px;\'/>"), this._dialogInput.on("keydown", this._doKeyDown), t("body").append(this._dialogInput), d = this._dialogInst = this._newInst(this._dialogInput, !1), d.settings = {}, t.data(this._dialogInput[0], "datepicker", d)), a(d.settings, n || {}), i = i && i.constructor === Date ? this._formatDate(d, i) : i, this._dialogInput.val(i), this._pos = o ? o.length ? o : [o.pageX, o.pageY] : null, this._pos || (h = document.documentElement.clientWidth, l = document.documentElement.clientHeight, c = document.documentElement.scrollLeft || document.body.scrollLeft, u = document.documentElement.scrollTop || document.body.scrollTop, this._pos = [h / 2 - 100 + c, l / 2 - 150 + u]), this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top", this._pos[1] + "px"), d.settings.onSelect = s, this._inDialog = !0, this.dpDiv.addClass(this._dialogClass), this._showDatepicker(this._dialogInput[0]), t.blockUI && t.blockUI(this.dpDiv), t.data(this._dialogInput[0], "datepicker", d), this;\n },\n _destroyDatepicker: function _destroyDatepicker(e) {\n var i,\n s = t(e),\n n = t.data(e, "datepicker");\n s.hasClass(this.markerClassName) && (i = e.nodeName.toLowerCase(), t.removeData(e, "datepicker"), "input" === i ? (n.append.remove(), n.trigger.remove(), s.removeClass(this.markerClassName).off("focus", this._showDatepicker).off("keydown", this._doKeyDown).off("keypress", this._doKeyPress).off("keyup", this._doKeyUp)) : ("div" === i || "span" === i) && s.removeClass(this.markerClassName).empty(), m === n && (m = null));\n },\n _enableDatepicker: function _enableDatepicker(e) {\n var i,\n s,\n n = t(e),\n o = t.data(e, "datepicker");\n n.hasClass(this.markerClassName) && (i = e.nodeName.toLowerCase(), "input" === i ? (e.disabled = !1, o.trigger.filter("button").each(function () {\n this.disabled = !1;\n }).end().filter("img").css({\n opacity: "1.0",\n cursor: ""\n })) : ("div" === i || "span" === i) && (s = n.children("." + this._inlineClass), s.children().removeClass("ui-state-disabled"), s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !1)), this._disabledInputs = t.map(this._disabledInputs, function (t) {\n return t === e ? null : t;\n }));\n },\n _disableDatepicker: function _disableDatepicker(e) {\n var i,\n s,\n n = t(e),\n o = t.data(e, "datepicker");\n n.hasClass(this.markerClassName) && (i = e.nodeName.toLowerCase(), "input" === i ? (e.disabled = !0, o.trigger.filter("button").each(function () {\n this.disabled = !0;\n }).end().filter("img").css({\n opacity: "0.5",\n cursor: "default"\n })) : ("div" === i || "span" === i) && (s = n.children("." + this._inlineClass), s.children().addClass("ui-state-disabled"), s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !0)), this._disabledInputs = t.map(this._disabledInputs, function (t) {\n return t === e ? null : t;\n }), this._disabledInputs[this._disabledInputs.length] = e);\n },\n _isDisabledDatepicker: function _isDisabledDatepicker(t) {\n if (!t) return !1;\n for (var e = 0; this._disabledInputs.length > e; e++) if (this._disabledInputs[e] === t) return !0;\n return !1;\n },\n _getInst: function _getInst(e) {\n try {\n return t.data(e, "datepicker");\n } catch (i) {\n throw "Missing instance data for this datepicker";\n }\n },\n _optionDatepicker: function _optionDatepicker(e, i, s) {\n var n,\n o,\n r,\n h,\n l = this._getInst(e);\n return 2 === arguments.length && "string" == typeof i ? "defaults" === i ? t.extend({}, t.datepicker._defaults) : l ? "all" === i ? t.extend({}, l.settings) : this._get(l, i) : null : (n = i || {}, "string" == typeof i && (n = {}, n[i] = s), l && (this._curInst === l && this._hideDatepicker(), o = this._getDateDatepicker(e, !0), r = this._getMinMaxDate(l, "min"), h = this._getMinMaxDate(l, "max"), a(l.settings, n), null !== r && void 0 !== n.dateFormat && void 0 === n.minDate && (l.settings.minDate = this._formatDate(l, r)), null !== h && void 0 !== n.dateFormat && void 0 === n.maxDate && (l.settings.maxDate = this._formatDate(l, h)), "disabled" in n && (n.disabled ? this._disableDatepicker(e) : this._enableDatepicker(e)), this._attachments(t(e), l), this._autoSize(l), this._setDate(l, o), this._updateAlternate(l), this._updateDatepicker(l)), void 0);\n },\n _changeDatepicker: function _changeDatepicker(t, e, i) {\n this._optionDatepicker(t, e, i);\n },\n _refreshDatepicker: function _refreshDatepicker(t) {\n var e = this._getInst(t);\n e && this._updateDatepicker(e);\n },\n _setDateDatepicker: function _setDateDatepicker(t, e) {\n var i = this._getInst(t);\n i && (this._setDate(i, e), this._updateDatepicker(i), this._updateAlternate(i));\n },\n _getDateDatepicker: function _getDateDatepicker(t, e) {\n var i = this._getInst(t);\n return i && !i.inline && this._setDateFromField(i, e), i ? this._getDate(i) : null;\n },\n _doKeyDown: function _doKeyDown(e) {\n var i,\n s,\n n,\n o = t.datepicker._getInst(e.target),\n a = !0,\n r = o.dpDiv.is(".ui-datepicker-rtl");\n if (o._keyEvent = !0, t.datepicker._datepickerShowing) switch (e.keyCode) {\n case 9:\n t.datepicker._hideDatepicker(), a = !1;\n break;\n case 13:\n return n = t("td." + t.datepicker._dayOverClass + ":not(." + t.datepicker._currentClass + ")", o.dpDiv), n[0] && t.datepicker._selectDay(e.target, o.selectedMonth, o.selectedYear, n[0]), i = t.datepicker._get(o, "onSelect"), i ? (s = t.datepicker._formatDate(o), i.apply(o.input ? o.input[0] : null, [s, o])) : t.datepicker._hideDatepicker(), !1;\n case 27:\n t.datepicker._hideDatepicker();\n break;\n case 33:\n t.datepicker._adjustDate(e.target, e.ctrlKey ? -t.datepicker._get(o, "stepBigMonths") : -t.datepicker._get(o, "stepMonths"), "M");\n break;\n case 34:\n t.datepicker._adjustDate(e.target, e.ctrlKey ? +t.datepicker._get(o, "stepBigMonths") : +t.datepicker._get(o, "stepMonths"), "M");\n break;\n case 35:\n (e.ctrlKey || e.metaKey) && t.datepicker._clearDate(e.target), a = e.ctrlKey || e.metaKey;\n break;\n case 36:\n (e.ctrlKey || e.metaKey) && t.datepicker._gotoToday(e.target), a = e.ctrlKey || e.metaKey;\n break;\n case 37:\n (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, r ? 1 : -1, "D"), a = e.ctrlKey || e.metaKey, e.originalEvent.altKey && t.datepicker._adjustDate(e.target, e.ctrlKey ? -t.datepicker._get(o, "stepBigMonths") : -t.datepicker._get(o, "stepMonths"), "M");\n break;\n case 38:\n (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, -7, "D"), a = e.ctrlKey || e.metaKey;\n break;\n case 39:\n (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, r ? -1 : 1, "D"), a = e.ctrlKey || e.metaKey, e.originalEvent.altKey && t.datepicker._adjustDate(e.target, e.ctrlKey ? +t.datepicker._get(o, "stepBigMonths") : +t.datepicker._get(o, "stepMonths"), "M");\n break;\n case 40:\n (e.ctrlKey || e.metaKey) && t.datepicker._adjustDate(e.target, 7, "D"), a = e.ctrlKey || e.metaKey;\n break;\n default:\n a = !1;\n } else 36 === e.keyCode && e.ctrlKey ? t.datepicker._showDatepicker(this) : a = !1;\n a && (e.preventDefault(), e.stopPropagation());\n },\n _doKeyPress: function _doKeyPress(e) {\n var i,\n s,\n n = t.datepicker._getInst(e.target);\n return t.datepicker._get(n, "constrainInput") ? (i = t.datepicker._possibleChars(t.datepicker._get(n, "dateFormat")), s = String.fromCharCode(null == e.charCode ? e.keyCode : e.charCode), e.ctrlKey || e.metaKey || " " > s || !i || i.indexOf(s) > -1) : void 0;\n },\n _doKeyUp: function _doKeyUp(e) {\n var i,\n s = t.datepicker._getInst(e.target);\n if (s.input.val() !== s.lastVal) try {\n i = t.datepicker.parseDate(t.datepicker._get(s, "dateFormat"), s.input ? s.input.val() : null, t.datepicker._getFormatConfig(s)), i && (t.datepicker._setDateFromField(s), t.datepicker._updateAlternate(s), t.datepicker._updateDatepicker(s));\n } catch (n) {}\n return !0;\n },\n _showDatepicker: function _showDatepicker(e) {\n if (e = e.target || e, "input" !== e.nodeName.toLowerCase() && (e = t("input", e.parentNode)[0]), !t.datepicker._isDisabledDatepicker(e) && t.datepicker._lastInput !== e) {\n var s, n, o, r, h, l, c;\n s = t.datepicker._getInst(e), t.datepicker._curInst && t.datepicker._curInst !== s && (t.datepicker._curInst.dpDiv.stop(!0, !0), s && t.datepicker._datepickerShowing && t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])), n = t.datepicker._get(s, "beforeShow"), o = n ? n.apply(e, [e, s]) : {}, o !== !1 && (a(s.settings, o), s.lastVal = null, t.datepicker._lastInput = e, t.datepicker._setDateFromField(s), t.datepicker._inDialog && (e.value = ""), t.datepicker._pos || (t.datepicker._pos = t.datepicker._findPos(e), t.datepicker._pos[1] += e.offsetHeight), r = !1, t(e).parents().each(function () {\n return r |= "fixed" === t(this).css("position"), !r;\n }), h = {\n left: t.datepicker._pos[0],\n top: t.datepicker._pos[1]\n }, t.datepicker._pos = null, s.dpDiv.empty(), s.dpDiv.css({\n position: "absolute",\n display: "block",\n top: "-1000px"\n }), t.datepicker._updateDatepicker(s), h = t.datepicker._checkOffset(s, h, r), s.dpDiv.css({\n position: t.datepicker._inDialog && t.blockUI ? "static" : r ? "fixed" : "absolute",\n display: "none",\n left: h.left + "px",\n top: h.top + "px"\n }), s.inline || (l = t.datepicker._get(s, "showAnim"), c = t.datepicker._get(s, "duration"), s.dpDiv.css("z-index", i(t(e)) + 1), t.datepicker._datepickerShowing = !0, t.effects && t.effects.effect[l] ? s.dpDiv.show(l, t.datepicker._get(s, "showOptions"), c) : s.dpDiv[l || "show"](l ? c : null), t.datepicker._shouldFocusInput(s) && s.input.trigger("focus"), t.datepicker._curInst = s));\n }\n },\n _updateDatepicker: function _updateDatepicker(e) {\n this.maxRows = 4, m = e, e.dpDiv.empty().append(this._generateHTML(e)), this._attachHandlers(e);\n var i,\n s = this._getNumberOfMonths(e),\n n = s[1],\n a = 17,\n r = e.dpDiv.find("." + this._dayOverClass + " a");\n r.length > 0 && o.apply(r.get(0)), e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""), n > 1 && e.dpDiv.addClass("ui-datepicker-multi-" + n).css("width", a * n + "em"), e.dpDiv[(1 !== s[0] || 1 !== s[1] ? "add" : "remove") + "Class"]("ui-datepicker-multi"), e.dpDiv[(this._get(e, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl"), e === t.datepicker._curInst && t.datepicker._datepickerShowing && t.datepicker._shouldFocusInput(e) && e.input.trigger("focus"), e.yearshtml && (i = e.yearshtml, setTimeout(function () {\n i === e.yearshtml && e.yearshtml && e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml), i = e.yearshtml = null;\n }, 0));\n },\n _shouldFocusInput: function _shouldFocusInput(t) {\n return t.input && t.input.is(":visible") && !t.input.is(":disabled") && !t.input.is(":focus");\n },\n _checkOffset: function _checkOffset(e, i, s) {\n var n = e.dpDiv.outerWidth(),\n o = e.dpDiv.outerHeight(),\n a = e.input ? e.input.outerWidth() : 0,\n r = e.input ? e.input.outerHeight() : 0,\n h = document.documentElement.clientWidth + (s ? 0 : t(document).scrollLeft()),\n l = document.documentElement.clientHeight + (s ? 0 : t(document).scrollTop());\n return i.left -= this._get(e, "isRTL") ? n - a : 0, i.left -= s && i.left === e.input.offset().left ? t(document).scrollLeft() : 0, i.top -= s && i.top === e.input.offset().top + r ? t(document).scrollTop() : 0, i.left -= Math.min(i.left, i.left + n > h && h > n ? Math.abs(i.left + n - h) : 0), i.top -= Math.min(i.top, i.top + o > l && l > o ? Math.abs(o + r) : 0), i;\n },\n _findPos: function _findPos(e) {\n for (var i, s = this._getInst(e), n = this._get(s, "isRTL"); e && ("hidden" === e.type || 1 !== e.nodeType || t.expr.filters.hidden(e));) e = e[n ? "previousSibling" : "nextSibling"];\n return i = t(e).offset(), [i.left, i.top];\n },\n _hideDatepicker: function _hideDatepicker(e) {\n var i,\n s,\n n,\n o,\n a = this._curInst;\n !a || e && a !== t.data(e, "datepicker") || this._datepickerShowing && (i = this._get(a, "showAnim"), s = this._get(a, "duration"), n = function n() {\n t.datepicker._tidyDialog(a);\n }, t.effects && (t.effects.effect[i] || t.effects[i]) ? a.dpDiv.hide(i, t.datepicker._get(a, "showOptions"), s, n) : a.dpDiv["slideDown" === i ? "slideUp" : "fadeIn" === i ? "fadeOut" : "hide"](i ? s : null, n), i || n(), this._datepickerShowing = !1, o = this._get(a, "onClose"), o && o.apply(a.input ? a.input[0] : null, [a.input ? a.input.val() : "", a]), this._lastInput = null, this._inDialog && (this._dialogInput.css({\n position: "absolute",\n left: "0",\n top: "-100px"\n }), t.blockUI && (t.unblockUI(), t("body").append(this.dpDiv))), this._inDialog = !1);\n },\n _tidyDialog: function _tidyDialog(t) {\n t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar");\n },\n _checkExternalClick: function _checkExternalClick(e) {\n if (t.datepicker._curInst) {\n var i = t(e.target),\n s = t.datepicker._getInst(i[0]);\n (i[0].id !== t.datepicker._mainDivId && 0 === i.parents("#" + t.datepicker._mainDivId).length && !i.hasClass(t.datepicker.markerClassName) && !i.closest("." + t.datepicker._triggerClass).length && t.datepicker._datepickerShowing && (!t.datepicker._inDialog || !t.blockUI) || i.hasClass(t.datepicker.markerClassName) && t.datepicker._curInst !== s) && t.datepicker._hideDatepicker();\n }\n },\n _adjustDate: function _adjustDate(e, i, s) {\n var n = t(e),\n o = this._getInst(n[0]);\n this._isDisabledDatepicker(n[0]) || (this._adjustInstDate(o, i + ("M" === s ? this._get(o, "showCurrentAtPos") : 0), s), this._updateDatepicker(o));\n },\n _gotoToday: function _gotoToday(e) {\n var i,\n s = t(e),\n n = this._getInst(s[0]);\n this._get(n, "gotoCurrent") && n.currentDay ? (n.selectedDay = n.currentDay, n.drawMonth = n.selectedMonth = n.currentMonth, n.drawYear = n.selectedYear = n.currentYear) : (i = new Date(), n.selectedDay = i.getDate(), n.drawMonth = n.selectedMonth = i.getMonth(), n.drawYear = n.selectedYear = i.getFullYear()), this._notifyChange(n), this._adjustDate(s);\n },\n _selectMonthYear: function _selectMonthYear(e, i, s) {\n var n = t(e),\n o = this._getInst(n[0]);\n o["selected" + ("M" === s ? "Month" : "Year")] = o["draw" + ("M" === s ? "Month" : "Year")] = parseInt(i.options[i.selectedIndex].value, 10), this._notifyChange(o), this._adjustDate(n);\n },\n _selectDay: function _selectDay(e, i, s, n) {\n var o,\n a = t(e);\n t(n).hasClass(this._unselectableClass) || this._isDisabledDatepicker(a[0]) || (o = this._getInst(a[0]), o.selectedDay = o.currentDay = t("a", n).html(), o.selectedMonth = o.currentMonth = i, o.selectedYear = o.currentYear = s, this._selectDate(e, this._formatDate(o, o.currentDay, o.currentMonth, o.currentYear)));\n },\n _clearDate: function _clearDate(e) {\n var i = t(e);\n this._selectDate(i, "");\n },\n _selectDate: function _selectDate(e, i) {\n var s,\n n = t(e),\n o = this._getInst(n[0]);\n i = null != i ? i : this._formatDate(o), o.input && o.input.val(i), this._updateAlternate(o), s = this._get(o, "onSelect"), s ? s.apply(o.input ? o.input[0] : null, [i, o]) : o.input && o.input.trigger("change"), o.inline ? this._updateDatepicker(o) : (this._hideDatepicker(), this._lastInput = o.input[0], "object" != _typeof(o.input[0]) && o.input.trigger("focus"), this._lastInput = null);\n },\n _updateAlternate: function _updateAlternate(e) {\n var i,\n s,\n n,\n o = this._get(e, "altField");\n o && (i = this._get(e, "altFormat") || this._get(e, "dateFormat"), s = this._getDate(e), n = this.formatDate(i, s, this._getFormatConfig(e)), t(o).val(n));\n },\n noWeekends: function noWeekends(t) {\n var e = t.getDay();\n return [e > 0 && 6 > e, ""];\n },\n iso8601Week: function iso8601Week(t) {\n var e,\n i = new Date(t.getTime());\n return i.setDate(i.getDate() + 4 - (i.getDay() || 7)), e = i.getTime(), i.setMonth(0), i.setDate(1), Math.floor(Math.round((e - i) / 864e5) / 7) + 1;\n },\n parseDate: function parseDate(e, i, s) {\n if (null == e || null == i) throw "Invalid arguments";\n if (i = "object" == _typeof(i) ? "" + i : i + "", "" === i) return null;\n var n,\n o,\n a,\n r,\n h = 0,\n l = (s ? s.shortYearCutoff : null) || this._defaults.shortYearCutoff,\n c = "string" != typeof l ? l : new Date().getFullYear() % 100 + parseInt(l, 10),\n u = (s ? s.dayNamesShort : null) || this._defaults.dayNamesShort,\n d = (s ? s.dayNames : null) || this._defaults.dayNames,\n p = (s ? s.monthNamesShort : null) || this._defaults.monthNamesShort,\n f = (s ? s.monthNames : null) || this._defaults.monthNames,\n g = -1,\n m = -1,\n _ = -1,\n v = -1,\n b = !1,\n y = function y(t) {\n var i = e.length > n + 1 && e.charAt(n + 1) === t;\n return i && n++, i;\n },\n w = function w(t) {\n var e = y(t),\n s = "@" === t ? 14 : "!" === t ? 20 : "y" === t && e ? 4 : "o" === t ? 3 : 2,\n n = "y" === t ? s : 1,\n o = RegExp("^\\\\d{" + n + "," + s + "}"),\n a = i.substring(h).match(o);\n if (!a) throw "Missing number at position " + h;\n return h += a[0].length, parseInt(a[0], 10);\n },\n k = function k(e, s, n) {\n var o = -1,\n a = t.map(y(e) ? n : s, function (t, e) {\n return [[e, t]];\n }).sort(function (t, e) {\n return -(t[1].length - e[1].length);\n });\n if (t.each(a, function (t, e) {\n var s = e[1];\n return i.substr(h, s.length).toLowerCase() === s.toLowerCase() ? (o = e[0], h += s.length, !1) : void 0;\n }), -1 !== o) return o + 1;\n throw "Unknown name at position " + h;\n },\n x = function x() {\n if (i.charAt(h) !== e.charAt(n)) throw "Unexpected literal at position " + h;\n h++;\n };\n for (n = 0; e.length > n; n++) if (b) "\'" !== e.charAt(n) || y("\'") ? x() : b = !1;else switch (e.charAt(n)) {\n case "d":\n _ = w("d");\n break;\n case "D":\n k("D", u, d);\n break;\n case "o":\n v = w("o");\n break;\n case "m":\n m = w("m");\n break;\n case "M":\n m = k("M", p, f);\n break;\n case "y":\n g = w("y");\n break;\n case "@":\n r = new Date(w("@")), g = r.getFullYear(), m = r.getMonth() + 1, _ = r.getDate();\n break;\n case "!":\n r = new Date((w("!") - this._ticksTo1970) / 1e4), g = r.getFullYear(), m = r.getMonth() + 1, _ = r.getDate();\n break;\n case "\'":\n y("\'") ? x() : b = !0;\n break;\n default:\n x();\n }\n if (i.length > h && (a = i.substr(h), !/^\\s+/.test(a))) throw "Extra/unparsed characters found in date: " + a;\n if (-1 === g ? g = new Date().getFullYear() : 100 > g && (g += new Date().getFullYear() - new Date().getFullYear() % 100 + (c >= g ? 0 : -100)), v > -1) for (m = 1, _ = v;;) {\n if (o = this._getDaysInMonth(g, m - 1), o >= _) break;\n m++, _ -= o;\n }\n if (r = this._daylightSavingAdjust(new Date(g, m - 1, _)), r.getFullYear() !== g || r.getMonth() + 1 !== m || r.getDate() !== _) throw "Invalid date";\n return r;\n },\n ATOM: "yy-mm-dd",\n COOKIE: "D, dd M yy",\n ISO_8601: "yy-mm-dd",\n RFC_822: "D, d M y",\n RFC_850: "DD, dd-M-y",\n RFC_1036: "D, d M y",\n RFC_1123: "D, d M yy",\n RFC_2822: "D, d M yy",\n RSS: "D, d M y",\n TICKS: "!",\n TIMESTAMP: "@",\n W3C: "yy-mm-dd",\n _ticksTo1970: 1e7 * 60 * 60 * 24 * (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)),\n formatDate: function formatDate(t, e, i) {\n if (!e) return "";\n var s,\n n = (i ? i.dayNamesShort : null) || this._defaults.dayNamesShort,\n o = (i ? i.dayNames : null) || this._defaults.dayNames,\n a = (i ? i.monthNamesShort : null) || this._defaults.monthNamesShort,\n r = (i ? i.monthNames : null) || this._defaults.monthNames,\n h = function h(e) {\n var i = t.length > s + 1 && t.charAt(s + 1) === e;\n return i && s++, i;\n },\n l = function l(t, e, i) {\n var s = "" + e;\n if (h(t)) for (; i > s.length;) s = "0" + s;\n return s;\n },\n c = function c(t, e, i, s) {\n return h(t) ? s[e] : i[e];\n },\n u = "",\n d = !1;\n if (e) for (s = 0; t.length > s; s++) if (d) "\'" !== t.charAt(s) || h("\'") ? u += t.charAt(s) : d = !1;else switch (t.charAt(s)) {\n case "d":\n u += l("d", e.getDate(), 2);\n break;\n case "D":\n u += c("D", e.getDay(), n, o);\n break;\n case "o":\n u += l("o", Math.round((new Date(e.getFullYear(), e.getMonth(), e.getDate()).getTime() - new Date(e.getFullYear(), 0, 0).getTime()) / 864e5), 3);\n break;\n case "m":\n u += l("m", e.getMonth() + 1, 2);\n break;\n case "M":\n u += c("M", e.getMonth(), a, r);\n break;\n case "y":\n u += h("y") ? e.getFullYear() : (10 > e.getFullYear() % 100 ? "0" : "") + e.getFullYear() % 100;\n break;\n case "@":\n u += e.getTime();\n break;\n case "!":\n u += 1e4 * e.getTime() + this._ticksTo1970;\n break;\n case "\'":\n h("\'") ? u += "\'" : d = !0;\n break;\n default:\n u += t.charAt(s);\n }\n return u;\n },\n _possibleChars: function _possibleChars(t) {\n var e,\n i = "",\n s = !1,\n n = function n(i) {\n var s = t.length > e + 1 && t.charAt(e + 1) === i;\n return s && e++, s;\n };\n for (e = 0; t.length > e; e++) if (s) "\'" !== t.charAt(e) || n("\'") ? i += t.charAt(e) : s = !1;else switch (t.charAt(e)) {\n case "d":\n case "m":\n case "y":\n case "@":\n i += "0123456789";\n break;\n case "D":\n case "M":\n return null;\n case "\'":\n n("\'") ? i += "\'" : s = !0;\n break;\n default:\n i += t.charAt(e);\n }\n return i;\n },\n _get: function _get(t, e) {\n return void 0 !== t.settings[e] ? t.settings[e] : this._defaults[e];\n },\n _setDateFromField: function _setDateFromField(t, e) {\n if (t.input.val() !== t.lastVal) {\n var i = this._get(t, "dateFormat"),\n s = t.lastVal = t.input ? t.input.val() : null,\n n = this._getDefaultDate(t),\n o = n,\n a = this._getFormatConfig(t);\n try {\n o = this.parseDate(i, s, a) || n;\n } catch (r) {\n s = e ? "" : s;\n }\n t.selectedDay = o.getDate(), t.drawMonth = t.selectedMonth = o.getMonth(), t.drawYear = t.selectedYear = o.getFullYear(), t.currentDay = s ? o.getDate() : 0, t.currentMonth = s ? o.getMonth() : 0, t.currentYear = s ? o.getFullYear() : 0, this._adjustInstDate(t);\n }\n },\n _getDefaultDate: function _getDefaultDate(t) {\n return this._restrictMinMax(t, this._determineDate(t, this._get(t, "defaultDate"), new Date()));\n },\n _determineDate: function _determineDate(e, i, s) {\n var n = function n(t) {\n var e = new Date();\n return e.setDate(e.getDate() + t), e;\n },\n o = function o(i) {\n try {\n return t.datepicker.parseDate(t.datepicker._get(e, "dateFormat"), i, t.datepicker._getFormatConfig(e));\n } catch (s) {}\n for (var n = (i.toLowerCase().match(/^c/) ? t.datepicker._getDate(e) : null) || new Date(), o = n.getFullYear(), a = n.getMonth(), r = n.getDate(), h = /([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g, l = h.exec(i); l;) {\n switch (l[2] || "d") {\n case "d":\n case "D":\n r += parseInt(l[1], 10);\n break;\n case "w":\n case "W":\n r += 7 * parseInt(l[1], 10);\n break;\n case "m":\n case "M":\n a += parseInt(l[1], 10), r = Math.min(r, t.datepicker._getDaysInMonth(o, a));\n break;\n case "y":\n case "Y":\n o += parseInt(l[1], 10), r = Math.min(r, t.datepicker._getDaysInMonth(o, a));\n }\n l = h.exec(i);\n }\n return new Date(o, a, r);\n },\n a = null == i || "" === i ? s : "string" == typeof i ? o(i) : "number" == typeof i ? isNaN(i) ? s : n(i) : new Date(i.getTime());\n return a = a && "Invalid Date" == "" + a ? s : a, a && (a.setHours(0), a.setMinutes(0), a.setSeconds(0), a.setMilliseconds(0)), this._daylightSavingAdjust(a);\n },\n _daylightSavingAdjust: function _daylightSavingAdjust(t) {\n return t ? (t.setHours(t.getHours() > 12 ? t.getHours() + 2 : 0), t) : null;\n },\n _setDate: function _setDate(t, e, i) {\n var s = !e,\n n = t.selectedMonth,\n o = t.selectedYear,\n a = this._restrictMinMax(t, this._determineDate(t, e, new Date()));\n t.selectedDay = t.currentDay = a.getDate(), t.drawMonth = t.selectedMonth = t.currentMonth = a.getMonth(), t.drawYear = t.selectedYear = t.currentYear = a.getFullYear(), n === t.selectedMonth && o === t.selectedYear || i || this._notifyChange(t), this._adjustInstDate(t), t.input && t.input.val(s ? "" : this._formatDate(t));\n },\n _getDate: function _getDate(t) {\n var e = !t.currentYear || t.input && "" === t.input.val() ? null : this._daylightSavingAdjust(new Date(t.currentYear, t.currentMonth, t.currentDay));\n return e;\n },\n _attachHandlers: function _attachHandlers(e) {\n var i = this._get(e, "stepMonths"),\n s = "#" + e.id.replace(/\\\\\\\\/g, "\\\\");\n e.dpDiv.find("[data-handler]").map(function () {\n var e = {\n prev: function prev() {\n t.datepicker._adjustDate(s, -i, "M");\n },\n next: function next() {\n t.datepicker._adjustDate(s, +i, "M");\n },\n hide: function hide() {\n t.datepicker._hideDatepicker();\n },\n today: function today() {\n t.datepicker._gotoToday(s);\n },\n selectDay: function selectDay() {\n return t.datepicker._selectDay(s, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this), !1;\n },\n selectMonth: function selectMonth() {\n return t.datepicker._selectMonthYear(s, this, "M"), !1;\n },\n selectYear: function selectYear() {\n return t.datepicker._selectMonthYear(s, this, "Y"), !1;\n }\n };\n t(this).on(this.getAttribute("data-event"), e[this.getAttribute("data-handler")]);\n });\n },\n _generateHTML: function _generateHTML(t) {\n var e,\n i,\n s,\n n,\n o,\n a,\n r,\n h,\n l,\n c,\n u,\n d,\n p,\n f,\n g,\n m,\n _,\n v,\n b,\n y,\n w,\n k,\n x,\n C,\n D,\n I,\n T,\n P,\n M,\n S,\n H,\n z,\n O,\n A,\n N,\n W,\n E,\n F,\n R,\n L = new Date(),\n B = this._daylightSavingAdjust(new Date(L.getFullYear(), L.getMonth(), L.getDate())),\n Y = this._get(t, "isRTL"),\n j = this._get(t, "showButtonPanel"),\n q = this._get(t, "hideIfNoPrevNext"),\n K = this._get(t, "navigationAsDateFormat"),\n U = this._getNumberOfMonths(t),\n V = this._get(t, "showCurrentAtPos"),\n X = this._get(t, "stepMonths"),\n $ = 1 !== U[0] || 1 !== U[1],\n G = this._daylightSavingAdjust(t.currentDay ? new Date(t.currentYear, t.currentMonth, t.currentDay) : new Date(9999, 9, 9)),\n Q = this._getMinMaxDate(t, "min"),\n J = this._getMinMaxDate(t, "max"),\n Z = t.drawMonth - V,\n te = t.drawYear;\n if (0 > Z && (Z += 12, te--), J) for (e = this._daylightSavingAdjust(new Date(J.getFullYear(), J.getMonth() - U[0] * U[1] + 1, J.getDate())), e = Q && Q > e ? Q : e; this._daylightSavingAdjust(new Date(te, Z, 1)) > e;) Z--, 0 > Z && (Z = 11, te--);\n for (t.drawMonth = Z, t.drawYear = te, i = this._get(t, "prevText"), i = K ? this.formatDate(i, this._daylightSavingAdjust(new Date(te, Z - X, 1)), this._getFormatConfig(t)) : i, s = this._canAdjustMonth(t, -1, te, Z) ? "<a class=\'ui-datepicker-prev ui-corner-all\' data-handler=\'prev\' data-event=\'click\' title=\'" + i + "\'><span class=\'ui-icon ui-icon-circle-triangle-" + (Y ? "e" : "w") + "\'>" + i + "</span></a>" : q ? "" : "<a class=\'ui-datepicker-prev ui-corner-all ui-state-disabled\' title=\'" + i + "\'><span class=\'ui-icon ui-icon-circle-triangle-" + (Y ? "e" : "w") + "\'>" + i + "</span></a>", n = this._get(t, "nextText"), n = K ? this.formatDate(n, this._daylightSavingAdjust(new Date(te, Z + X, 1)), this._getFormatConfig(t)) : n, o = this._canAdjustMonth(t, 1, te, Z) ? "<a class=\'ui-datepicker-next ui-corner-all\' data-handler=\'next\' data-event=\'click\' title=\'" + n + "\'><span class=\'ui-icon ui-icon-circle-triangle-" + (Y ? "w" : "e") + "\'>" + n + "</span></a>" : q ? "" : "<a class=\'ui-datepicker-next ui-corner-all ui-state-disabled\' title=\'" + n + "\'><span class=\'ui-icon ui-icon-circle-triangle-" + (Y ? "w" : "e") + "\'>" + n + "</span></a>", a = this._get(t, "currentText"), r = this._get(t, "gotoCurrent") && t.currentDay ? G : B, a = K ? this.formatDate(a, r, this._getFormatConfig(t)) : a, h = t.inline ? "" : "<button type=\'button\' class=\'ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all\' data-handler=\'hide\' data-event=\'click\'>" + this._get(t, "closeText") + "</button>", l = j ? "<div class=\'ui-datepicker-buttonpane ui-widget-content\'>" + (Y ? h : "") + (this._isInRange(t, r) ? "<button type=\'button\' class=\'ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all\' data-handler=\'today\' data-event=\'click\'>" + a + "</button>" : "") + (Y ? "" : h) + "</div>" : "", c = parseInt(this._get(t, "firstDay"), 10), c = isNaN(c) ? 0 : c, u = this._get(t, "showWeek"), d = this._get(t, "dayNames"), p = this._get(t, "dayNamesMin"), f = this._get(t, "monthNames"), g = this._get(t, "monthNamesShort"), m = this._get(t, "beforeShowDay"), _ = this._get(t, "showOtherMonths"), v = this._get(t, "selectOtherMonths"), b = this._getDefaultDate(t), y = "", k = 0; U[0] > k; k++) {\n for (x = "", this.maxRows = 4, C = 0; U[1] > C; C++) {\n if (D = this._daylightSavingAdjust(new Date(te, Z, t.selectedDay)), I = " ui-corner-all", T = "", $) {\n if (T += "<div class=\'ui-datepicker-group", U[1] > 1) switch (C) {\n case 0:\n T += " ui-datepicker-group-first", I = " ui-corner-" + (Y ? "right" : "left");\n break;\n case U[1] - 1:\n T += " ui-datepicker-group-last", I = " ui-corner-" + (Y ? "left" : "right");\n break;\n default:\n T += " ui-datepicker-group-middle", I = "";\n }\n T += "\'>";\n }\n for (T += "<div class=\'ui-datepicker-header ui-widget-header ui-helper-clearfix" + I + "\'>" + (/all|left/.test(I) && 0 === k ? Y ? o : s : "") + (/all|right/.test(I) && 0 === k ? Y ? s : o : "") + this._generateMonthYearHeader(t, Z, te, Q, J, k > 0 || C > 0, f, g) + "</div><table class=\'ui-datepicker-calendar\'><thead>" + "<tr>", P = u ? "<th class=\'ui-datepicker-week-col\'>" + this._get(t, "weekHeader") + "</th>" : "", w = 0; 7 > w; w++) M = (w + c) % 7, P += "<th scope=\'col\'" + ((w + c + 6) % 7 >= 5 ? " class=\'ui-datepicker-week-end\'" : "") + ">" + "<span title=\'" + d[M] + "\'>" + p[M] + "</span></th>";\n for (T += P + "</tr></thead><tbody>", S = this._getDaysInMonth(te, Z), te === t.selectedYear && Z === t.selectedMonth && (t.selectedDay = Math.min(t.selectedDay, S)), H = (this._getFirstDayOfMonth(te, Z) - c + 7) % 7, z = Math.ceil((H + S) / 7), O = $ ? this.maxRows > z ? this.maxRows : z : z, this.maxRows = O, A = this._daylightSavingAdjust(new Date(te, Z, 1 - H)), N = 0; O > N; N++) {\n for (T += "<tr>", W = u ? "<td class=\'ui-datepicker-week-col\'>" + this._get(t, "calculateWeek")(A) + "</td>" : "", w = 0; 7 > w; w++) E = m ? m.apply(t.input ? t.input[0] : null, [A]) : [!0, ""], F = A.getMonth() !== Z, R = F && !v || !E[0] || Q && Q > A || J && A > J, W += "<td class=\'" + ((w + c + 6) % 7 >= 5 ? " ui-datepicker-week-end" : "") + (F ? " ui-datepicker-other-month" : "") + (A.getTime() === D.getTime() && Z === t.selectedMonth && t._keyEvent || b.getTime() === A.getTime() && b.getTime() === D.getTime() ? " " + this._dayOverClass : "") + (R ? " " + this._unselectableClass + " ui-state-disabled" : "") + (F && !_ ? "" : " " + E[1] + (A.getTime() === G.getTime() ? " " + this._currentClass : "") + (A.getTime() === B.getTime() ? " ui-datepicker-today" : "")) + "\'" + (F && !_ || !E[2] ? "" : " title=\'" + E[2].replace(/\'/g, "'") + "\'") + (R ? "" : " data-handler=\'selectDay\' data-event=\'click\' data-month=\'" + A.getMonth() + "\' data-year=\'" + A.getFullYear() + "\'") + ">" + (F && !_ ? " " : R ? "<span class=\'ui-state-default\'>" + A.getDate() + "</span>" : "<a class=\'ui-state-default" + (A.getTime() === B.getTime() ? " ui-state-highlight" : "") + (A.getTime() === G.getTime() ? " ui-state-active" : "") + (F ? " ui-priority-secondary" : "") + "\' href=\'#\'>" + A.getDate() + "</a>") + "</td>", A.setDate(A.getDate() + 1), A = this._daylightSavingAdjust(A);\n T += W + "</tr>";\n }\n Z++, Z > 11 && (Z = 0, te++), T += "</tbody></table>" + ($ ? "</div>" + (U[0] > 0 && C === U[1] - 1 ? "<div class=\'ui-datepicker-row-break\'></div>" : "") : ""), x += T;\n }\n y += x;\n }\n return y += l, t._keyEvent = !1, y;\n },\n _generateMonthYearHeader: function _generateMonthYearHeader(t, e, i, s, n, o, a, r) {\n var h,\n l,\n c,\n u,\n d,\n p,\n f,\n g,\n m = this._get(t, "changeMonth"),\n _ = this._get(t, "changeYear"),\n v = this._get(t, "showMonthAfterYear"),\n b = "<div class=\'ui-datepicker-title\'>",\n y = "";\n if (o || !m) y += "<span class=\'ui-datepicker-month\'>" + a[e] + "</span>";else {\n for (h = s && s.getFullYear() === i, l = n && n.getFullYear() === i, y += "<select class=\'ui-datepicker-month\' data-handler=\'selectMonth\' data-event=\'change\'>", c = 0; 12 > c; c++) (!h || c >= s.getMonth()) && (!l || n.getMonth() >= c) && (y += "<option value=\'" + c + "\'" + (c === e ? " selected=\'selected\'" : "") + ">" + r[c] + "</option>");\n y += "</select>";\n }\n if (v || (b += y + (!o && m && _ ? "" : " ")), !t.yearshtml) if (t.yearshtml = "", o || !_) b += "<span class=\'ui-datepicker-year\'>" + i + "</span>";else {\n for (u = this._get(t, "yearRange").split(":"), d = new Date().getFullYear(), p = function p(t) {\n var e = t.match(/c[+\\-].*/) ? i + parseInt(t.substring(1), 10) : t.match(/[+\\-].*/) ? d + parseInt(t, 10) : parseInt(t, 10);\n return isNaN(e) ? d : e;\n }, f = p(u[0]), g = Math.max(f, p(u[1] || "")), f = s ? Math.max(f, s.getFullYear()) : f, g = n ? Math.min(g, n.getFullYear()) : g, t.yearshtml += "<select class=\'ui-datepicker-year\' data-handler=\'selectYear\' data-event=\'change\'>"; g >= f; f++) t.yearshtml += "<option value=\'" + f + "\'" + (f === i ? " selected=\'selected\'" : "") + ">" + f + "</option>";\n t.yearshtml += "</select>", b += t.yearshtml, t.yearshtml = null;\n }\n return b += this._get(t, "yearSuffix"), v && (b += (!o && m && _ ? "" : " ") + y), b += "</div>";\n },\n _adjustInstDate: function _adjustInstDate(t, e, i) {\n var s = t.selectedYear + ("Y" === i ? e : 0),\n n = t.selectedMonth + ("M" === i ? e : 0),\n o = Math.min(t.selectedDay, this._getDaysInMonth(s, n)) + ("D" === i ? e : 0),\n a = this._restrictMinMax(t, this._daylightSavingAdjust(new Date(s, n, o)));\n t.selectedDay = a.getDate(), t.drawMonth = t.selectedMonth = a.getMonth(), t.drawYear = t.selectedYear = a.getFullYear(), ("M" === i || "Y" === i) && this._notifyChange(t);\n },\n _restrictMinMax: function _restrictMinMax(t, e) {\n var i = this._getMinMaxDate(t, "min"),\n s = this._getMinMaxDate(t, "max"),\n n = i && i > e ? i : e;\n return s && n > s ? s : n;\n },\n _notifyChange: function _notifyChange(t) {\n var e = this._get(t, "onChangeMonthYear");\n e && e.apply(t.input ? t.input[0] : null, [t.selectedYear, t.selectedMonth + 1, t]);\n },\n _getNumberOfMonths: function _getNumberOfMonths(t) {\n var e = this._get(t, "numberOfMonths");\n return null == e ? [1, 1] : "number" == typeof e ? [1, e] : e;\n },\n _getMinMaxDate: function _getMinMaxDate(t, e) {\n return this._determineDate(t, this._get(t, e + "Date"), null);\n },\n _getDaysInMonth: function _getDaysInMonth(t, e) {\n return 32 - this._daylightSavingAdjust(new Date(t, e, 32)).getDate();\n },\n _getFirstDayOfMonth: function _getFirstDayOfMonth(t, e) {\n return new Date(t, e, 1).getDay();\n },\n _canAdjustMonth: function _canAdjustMonth(t, e, i, s) {\n var n = this._getNumberOfMonths(t),\n o = this._daylightSavingAdjust(new Date(i, s + (0 > e ? e : n[0] * n[1]), 1));\n return 0 > e && o.setDate(this._getDaysInMonth(o.getFullYear(), o.getMonth())), this._isInRange(t, o);\n },\n _isInRange: function _isInRange(t, e) {\n var i,\n s,\n n = this._getMinMaxDate(t, "min"),\n o = this._getMinMaxDate(t, "max"),\n a = null,\n r = null,\n h = this._get(t, "yearRange");\n return h && (i = h.split(":"), s = new Date().getFullYear(), a = parseInt(i[0], 10), r = parseInt(i[1], 10), i[0].match(/[+\\-].*/) && (a += s), i[1].match(/[+\\-].*/) && (r += s)), (!n || e.getTime() >= n.getTime()) && (!o || e.getTime() <= o.getTime()) && (!a || e.getFullYear() >= a) && (!r || r >= e.getFullYear());\n },\n _getFormatConfig: function _getFormatConfig(t) {\n var e = this._get(t, "shortYearCutoff");\n return e = "string" != typeof e ? e : new Date().getFullYear() % 100 + parseInt(e, 10), {\n shortYearCutoff: e,\n dayNamesShort: this._get(t, "dayNamesShort"),\n dayNames: this._get(t, "dayNames"),\n monthNamesShort: this._get(t, "monthNamesShort"),\n monthNames: this._get(t, "monthNames")\n };\n },\n _formatDate: function _formatDate(t, e, i, s) {\n e || (t.currentDay = t.selectedDay, t.currentMonth = t.selectedMonth, t.currentYear = t.selectedYear);\n var n = e ? "object" == _typeof(e) ? e : this._daylightSavingAdjust(new Date(s, i, e)) : this._daylightSavingAdjust(new Date(t.currentYear, t.currentMonth, t.currentDay));\n return this.formatDate(this._get(t, "dateFormat"), n, this._getFormatConfig(t));\n }\n }), t.fn.datepicker = function (e) {\n if (!this.length) return this;\n t.datepicker.initialized || (t(document).on("mousedown", t.datepicker._checkExternalClick), t.datepicker.initialized = !0), 0 === t("#" + t.datepicker._mainDivId).length && t("body").append(t.datepicker.dpDiv);\n var i = Array.prototype.slice.call(arguments, 1);\n return "string" != typeof e || "isDisabled" !== e && "getDate" !== e && "widget" !== e ? "option" === e && 2 === arguments.length && "string" == typeof arguments[1] ? t.datepicker["_" + e + "Datepicker"].apply(t.datepicker, [this[0]].concat(i)) : this.each(function () {\n "string" == typeof e ? t.datepicker["_" + e + "Datepicker"].apply(t.datepicker, [this].concat(i)) : t.datepicker._attachDatepicker(this, e);\n }) : t.datepicker["_" + e + "Datepicker"].apply(t.datepicker, [this[0]].concat(i));\n }, t.datepicker = new s(), t.datepicker.initialized = !1, t.datepicker.uuid = new Date().getTime(), t.datepicker.version = "1.12.0", t.datepicker, t.ui.ie = !!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase());\n var _ = !1;\n t(document).on("mouseup", function () {\n _ = !1;\n }), t.widget("ui.mouse", {\n version: "1.12.0",\n options: {\n cancel: "input, textarea, button, select, option",\n distance: 1,\n delay: 0\n },\n _mouseInit: function _mouseInit() {\n var e = this;\n this.element.on("mousedown." + this.widgetName, function (t) {\n return e._mouseDown(t);\n }).on("click." + this.widgetName, function (i) {\n return !0 === t.data(i.target, e.widgetName + ".preventClickEvent") ? (t.removeData(i.target, e.widgetName + ".preventClickEvent"), i.stopImmediatePropagation(), !1) : void 0;\n }), this.started = !1;\n },\n _mouseDestroy: function _mouseDestroy() {\n this.element.off("." + this.widgetName), this._mouseMoveDelegate && this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate);\n },\n _mouseDown: function _mouseDown(e) {\n if (!_) {\n this._mouseMoved = !1, this._mouseStarted && this._mouseUp(e), this._mouseDownEvent = e;\n var i = this,\n s = 1 === e.which,\n n = "string" == typeof this.options.cancel && e.target.nodeName ? t(e.target).closest(this.options.cancel).length : !1;\n return s && !n && this._mouseCapture(e) ? (this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function () {\n i.mouseDelayMet = !0;\n }, this.options.delay)), this._mouseDistanceMet(e) && this._mouseDelayMet(e) && (this._mouseStarted = this._mouseStart(e) !== !1, !this._mouseStarted) ? (e.preventDefault(), !0) : (!0 === t.data(e.target, this.widgetName + ".preventClickEvent") && t.removeData(e.target, this.widgetName + ".preventClickEvent"), this._mouseMoveDelegate = function (t) {\n return i._mouseMove(t);\n }, this._mouseUpDelegate = function (t) {\n return i._mouseUp(t);\n }, this.document.on("mousemove." + this.widgetName, this._mouseMoveDelegate).on("mouseup." + this.widgetName, this._mouseUpDelegate), e.preventDefault(), _ = !0, !0)) : !0;\n }\n },\n _mouseMove: function _mouseMove(e) {\n if (this._mouseMoved) {\n if (t.ui.ie && (!document.documentMode || 9 > document.documentMode) && !e.button) return this._mouseUp(e);\n if (!e.which) if (e.originalEvent.altKey || e.originalEvent.ctrlKey || e.originalEvent.metaKey || e.originalEvent.shiftKey) this.ignoreMissingWhich = !0;else if (!this.ignoreMissingWhich) return this._mouseUp(e);\n }\n return (e.which || e.button) && (this._mouseMoved = !0), this._mouseStarted ? (this._mouseDrag(e), e.preventDefault()) : (this._mouseDistanceMet(e) && this._mouseDelayMet(e) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, e) !== !1, this._mouseStarted ? this._mouseDrag(e) : this._mouseUp(e)), !this._mouseStarted);\n },\n _mouseUp: function _mouseUp(e) {\n this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, e.target === this._mouseDownEvent.target && t.data(e.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(e)), this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer), delete this._mouseDelayTimer), this.ignoreMissingWhich = !1, _ = !1, e.preventDefault();\n },\n _mouseDistanceMet: function _mouseDistanceMet(t) {\n return Math.max(Math.abs(this._mouseDownEvent.pageX - t.pageX), Math.abs(this._mouseDownEvent.pageY - t.pageY)) >= this.options.distance;\n },\n _mouseDelayMet: function _mouseDelayMet() {\n return this.mouseDelayMet;\n },\n _mouseStart: function _mouseStart() {},\n _mouseDrag: function _mouseDrag() {},\n _mouseStop: function _mouseStop() {},\n _mouseCapture: function _mouseCapture() {\n return !0;\n }\n }), t.ui.plugin = {\n add: function add(e, i, s) {\n var n,\n o = t.ui[e].prototype;\n for (n in s) o.plugins[n] = o.plugins[n] || [], o.plugins[n].push([i, s[n]]);\n },\n call: function call(t, e, i, s) {\n var n,\n o = t.plugins[e];\n if (o && (s || t.element[0].parentNode && 11 !== t.element[0].parentNode.nodeType)) for (n = 0; o.length > n; n++) t.options[o[n][0]] && o[n][1].apply(t.element, i);\n }\n }, t.ui.safeBlur = function (e) {\n e && "body" !== e.nodeName.toLowerCase() && t(e).trigger("blur");\n }, t.widget("ui.draggable", t.ui.mouse, {\n version: "1.12.0",\n widgetEventPrefix: "drag",\n options: {\n addClasses: !0,\n appendTo: "parent",\n axis: !1,\n connectToSortable: !1,\n containment: !1,\n cursor: "auto",\n cursorAt: !1,\n grid: !1,\n handle: !1,\n helper: "original",\n iframeFix: !1,\n opacity: !1,\n refreshPositions: !1,\n revert: !1,\n revertDuration: 500,\n scope: "default",\n scroll: !0,\n scrollSensitivity: 20,\n scrollSpeed: 20,\n snap: !1,\n snapMode: "both",\n snapTolerance: 20,\n stack: !1,\n zIndex: !1,\n drag: null,\n start: null,\n stop: null\n },\n _create: function _create() {\n "original" === this.options.helper && this._setPositionRelative(), this.options.addClasses && this._addClass("ui-draggable"), this._setHandleClassName(), this._mouseInit();\n },\n _setOption: function _setOption(t, e) {\n this._super(t, e), "handle" === t && (this._removeHandleClassName(), this._setHandleClassName());\n },\n _destroy: function _destroy() {\n return (this.helper || this.element).is(".ui-draggable-dragging") ? (this.destroyOnClear = !0, void 0) : (this._removeHandleClassName(), this._mouseDestroy(), void 0);\n },\n _mouseCapture: function _mouseCapture(e) {\n var i = this.options;\n return this._blurActiveElement(e), this.helper || i.disabled || t(e.target).closest(".ui-resizable-handle").length > 0 ? !1 : (this.handle = this._getHandle(e), this.handle ? (this._blockFrames(i.iframeFix === !0 ? "iframe" : i.iframeFix), !0) : !1);\n },\n _blockFrames: function _blockFrames(e) {\n this.iframeBlocks = this.document.find(e).map(function () {\n var e = t(this);\n return t("<div>").css("position", "absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0];\n });\n },\n _unblockFrames: function _unblockFrames() {\n this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks);\n },\n _blurActiveElement: function _blurActiveElement(e) {\n var i = t.ui.safeActiveElement(this.document[0]),\n s = t(e.target);\n this._getHandle(e) && s.closest(i).length || t.ui.safeBlur(i);\n },\n _mouseStart: function _mouseStart(e) {\n var i = this.options;\n return this.helper = this._createHelper(e), this._addClass(this.helper, "ui-draggable-dragging"), this._cacheHelperProportions(), t.ui.ddmanager && (t.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(!0), this.offsetParent = this.helper.offsetParent(), this.hasFixedAncestor = this.helper.parents().filter(function () {\n return "fixed" === t(this).css("position");\n }).length > 0, this.positionAbs = this.element.offset(), this._refreshOffsets(e), this.originalPosition = this.position = this._generatePosition(e, !1), this.originalPageX = e.pageX, this.originalPageY = e.pageY, i.cursorAt && this._adjustOffsetFromHelper(i.cursorAt), this._setContainment(), this._trigger("start", e) === !1 ? (this._clear(), !1) : (this._cacheHelperProportions(), t.ui.ddmanager && !i.dropBehaviour && t.ui.ddmanager.prepareOffsets(this, e), this._mouseDrag(e, !0), t.ui.ddmanager && t.ui.ddmanager.dragStart(this, e), !0);\n },\n _refreshOffsets: function _refreshOffsets(t) {\n this.offset = {\n top: this.positionAbs.top - this.margins.top,\n left: this.positionAbs.left - this.margins.left,\n scroll: !1,\n parent: this._getParentOffset(),\n relative: this._getRelativeOffset()\n }, this.offset.click = {\n left: t.pageX - this.offset.left,\n top: t.pageY - this.offset.top\n };\n },\n _mouseDrag: function _mouseDrag(e, i) {\n if (this.hasFixedAncestor && (this.offset.parent = this._getParentOffset()), this.position = this._generatePosition(e, !0), this.positionAbs = this._convertPositionTo("absolute"), !i) {\n var s = this._uiHash();\n if (this._trigger("drag", e, s) === !1) return this._mouseUp(new t.Event("mouseup", e)), !1;\n this.position = s.position;\n }\n return this.helper[0].style.left = this.position.left + "px", this.helper[0].style.top = this.position.top + "px", t.ui.ddmanager && t.ui.ddmanager.drag(this, e), !1;\n },\n _mouseStop: function _mouseStop(e) {\n var i = this,\n s = !1;\n return t.ui.ddmanager && !this.options.dropBehaviour && (s = t.ui.ddmanager.drop(this, e)), this.dropped && (s = this.dropped, this.dropped = !1), "invalid" === this.options.revert && !s || "valid" === this.options.revert && s || this.options.revert === !0 || t.isFunction(this.options.revert) && this.options.revert.call(this.element, s) ? t(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () {\n i._trigger("stop", e) !== !1 && i._clear();\n }) : this._trigger("stop", e) !== !1 && this._clear(), !1;\n },\n _mouseUp: function _mouseUp(e) {\n return this._unblockFrames(), t.ui.ddmanager && t.ui.ddmanager.dragStop(this, e), this.handleElement.is(e.target) && this.element.trigger("focus"), t.ui.mouse.prototype._mouseUp.call(this, e);\n },\n cancel: function cancel() {\n return this.helper.is(".ui-draggable-dragging") ? this._mouseUp(new t.Event("mouseup", {\n target: this.element[0]\n })) : this._clear(), this;\n },\n _getHandle: function _getHandle(e) {\n return this.options.handle ? !!t(e.target).closest(this.element.find(this.options.handle)).length : !0;\n },\n _setHandleClassName: function _setHandleClassName() {\n this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element, this._addClass(this.handleElement, "ui-draggable-handle");\n },\n _removeHandleClassName: function _removeHandleClassName() {\n this._removeClass(this.handleElement, "ui-draggable-handle");\n },\n _createHelper: function _createHelper(e) {\n var i = this.options,\n s = t.isFunction(i.helper),\n n = s ? t(i.helper.apply(this.element[0], [e])) : "clone" === i.helper ? this.element.clone().removeAttr("id") : this.element;\n return n.parents("body").length || n.appendTo("parent" === i.appendTo ? this.element[0].parentNode : i.appendTo), s && n[0] === this.element[0] && this._setPositionRelative(), n[0] === this.element[0] || /(fixed|absolute)/.test(n.css("position")) || n.css("position", "absolute"), n;\n },\n _setPositionRelative: function _setPositionRelative() {\n /^(?:r|a|f)/.test(this.element.css("position")) || (this.element[0].style.position = "relative");\n },\n _adjustOffsetFromHelper: function _adjustOffsetFromHelper(e) {\n "string" == typeof e && (e = e.split(" ")), t.isArray(e) && (e = {\n left: +e[0],\n top: +e[1] || 0\n }), "left" in e && (this.offset.click.left = e.left + this.margins.left), "right" in e && (this.offset.click.left = this.helperProportions.width - e.right + this.margins.left), "top" in e && (this.offset.click.top = e.top + this.margins.top), "bottom" in e && (this.offset.click.top = this.helperProportions.height - e.bottom + this.margins.top);\n },\n _isRootNode: function _isRootNode(t) {\n return /(html|body)/i.test(t.tagName) || t === this.document[0];\n },\n _getParentOffset: function _getParentOffset() {\n var e = this.offsetParent.offset(),\n i = this.document[0];\n return "absolute" === this.cssPosition && this.scrollParent[0] !== i && t.contains(this.scrollParent[0], this.offsetParent[0]) && (e.left += this.scrollParent.scrollLeft(), e.top += this.scrollParent.scrollTop()), this._isRootNode(this.offsetParent[0]) && (e = {\n top: 0,\n left: 0\n }), {\n top: e.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),\n left: e.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)\n };\n },\n _getRelativeOffset: function _getRelativeOffset() {\n if ("relative" !== this.cssPosition) return {\n top: 0,\n left: 0\n };\n var t = this.element.position(),\n e = this._isRootNode(this.scrollParent[0]);\n return {\n top: t.top - (parseInt(this.helper.css("top"), 10) || 0) + (e ? 0 : this.scrollParent.scrollTop()),\n left: t.left - (parseInt(this.helper.css("left"), 10) || 0) + (e ? 0 : this.scrollParent.scrollLeft())\n };\n },\n _cacheMargins: function _cacheMargins() {\n this.margins = {\n left: parseInt(this.element.css("marginLeft"), 10) || 0,\n top: parseInt(this.element.css("marginTop"), 10) || 0,\n right: parseInt(this.element.css("marginRight"), 10) || 0,\n bottom: parseInt(this.element.css("marginBottom"), 10) || 0\n };\n },\n _cacheHelperProportions: function _cacheHelperProportions() {\n this.helperProportions = {\n width: this.helper.outerWidth(),\n height: this.helper.outerHeight()\n };\n },\n _setContainment: function _setContainment() {\n var e,\n i,\n s,\n n = this.options,\n o = this.document[0];\n return this.relativeContainer = null, n.containment ? "window" === n.containment ? (this.containment = [t(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, t(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, t(window).scrollLeft() + t(window).width() - this.helperProportions.width - this.margins.left, t(window).scrollTop() + (t(window).height() || o.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top], void 0) : "document" === n.containment ? (this.containment = [0, 0, t(o).width() - this.helperProportions.width - this.margins.left, (t(o).height() || o.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top], void 0) : n.containment.constructor === Array ? (this.containment = n.containment, void 0) : ("parent" === n.containment && (n.containment = this.helper[0].parentNode), i = t(n.containment), s = i[0], s && (e = /(scroll|auto)/.test(i.css("overflow")), this.containment = [(parseInt(i.css("borderLeftWidth"), 10) || 0) + (parseInt(i.css("paddingLeft"), 10) || 0), (parseInt(i.css("borderTopWidth"), 10) || 0) + (parseInt(i.css("paddingTop"), 10) || 0), (e ? Math.max(s.scrollWidth, s.offsetWidth) : s.offsetWidth) - (parseInt(i.css("borderRightWidth"), 10) || 0) - (parseInt(i.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (e ? Math.max(s.scrollHeight, s.offsetHeight) : s.offsetHeight) - (parseInt(i.css("borderBottomWidth"), 10) || 0) - (parseInt(i.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom], this.relativeContainer = i), void 0) : (this.containment = null, void 0);\n },\n _convertPositionTo: function _convertPositionTo(t, e) {\n e || (e = this.position);\n var i = "absolute" === t ? 1 : -1,\n s = this._isRootNode(this.scrollParent[0]);\n return {\n top: e.top + this.offset.relative.top * i + this.offset.parent.top * i - ("fixed" === this.cssPosition ? -this.offset.scroll.top : s ? 0 : this.offset.scroll.top) * i,\n left: e.left + this.offset.relative.left * i + this.offset.parent.left * i - ("fixed" === this.cssPosition ? -this.offset.scroll.left : s ? 0 : this.offset.scroll.left) * i\n };\n },\n _generatePosition: function _generatePosition(t, e) {\n var i,\n s,\n n,\n o,\n a = this.options,\n r = this._isRootNode(this.scrollParent[0]),\n h = t.pageX,\n l = t.pageY;\n return r && this.offset.scroll || (this.offset.scroll = {\n top: this.scrollParent.scrollTop(),\n left: this.scrollParent.scrollLeft()\n }), e && (this.containment && (this.relativeContainer ? (s = this.relativeContainer.offset(), i = [this.containment[0] + s.left, this.containment[1] + s.top, this.containment[2] + s.left, this.containment[3] + s.top]) : i = this.containment, t.pageX - this.offset.click.left < i[0] && (h = i[0] + this.offset.click.left), t.pageY - this.offset.click.top < i[1] && (l = i[1] + this.offset.click.top), t.pageX - this.offset.click.left > i[2] && (h = i[2] + this.offset.click.left), t.pageY - this.offset.click.top > i[3] && (l = i[3] + this.offset.click.top)), a.grid && (n = a.grid[1] ? this.originalPageY + Math.round((l - this.originalPageY) / a.grid[1]) * a.grid[1] : this.originalPageY, l = i ? n - this.offset.click.top >= i[1] || n - this.offset.click.top > i[3] ? n : n - this.offset.click.top >= i[1] ? n - a.grid[1] : n + a.grid[1] : n, o = a.grid[0] ? this.originalPageX + Math.round((h - this.originalPageX) / a.grid[0]) * a.grid[0] : this.originalPageX, h = i ? o - this.offset.click.left >= i[0] || o - this.offset.click.left > i[2] ? o : o - this.offset.click.left >= i[0] ? o - a.grid[0] : o + a.grid[0] : o), "y" === a.axis && (h = this.originalPageX), "x" === a.axis && (l = this.originalPageY)), {\n top: l - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.offset.scroll.top : r ? 0 : this.offset.scroll.top),\n left: h - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.offset.scroll.left : r ? 0 : this.offset.scroll.left)\n };\n },\n _clear: function _clear() {\n this._removeClass(this.helper, "ui-draggable-dragging"), this.helper[0] === this.element[0] || this.cancelHelperRemoval || this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1, this.destroyOnClear && this.destroy();\n },\n _trigger: function _trigger(e, i, s) {\n return s = s || this._uiHash(), t.ui.plugin.call(this, e, [i, s, this], !0), /^(drag|start|stop)/.test(e) && (this.positionAbs = this._convertPositionTo("absolute"), s.offset = this.positionAbs), t.Widget.prototype._trigger.call(this, e, i, s);\n },\n plugins: {},\n _uiHash: function _uiHash() {\n return {\n helper: this.helper,\n position: this.position,\n originalPosition: this.originalPosition,\n offset: this.positionAbs\n };\n }\n }), t.ui.plugin.add("draggable", "connectToSortable", {\n start: function start(e, i, s) {\n var n = t.extend({}, i, {\n item: s.element\n });\n s.sortables = [], t(s.options.connectToSortable).each(function () {\n var i = t(this).sortable("instance");\n i && !i.options.disabled && (s.sortables.push(i), i.refreshPositions(), i._trigger("activate", e, n));\n });\n },\n stop: function stop(e, i, s) {\n var n = t.extend({}, i, {\n item: s.element\n });\n s.cancelHelperRemoval = !1, t.each(s.sortables, function () {\n var t = this;\n t.isOver ? (t.isOver = 0, s.cancelHelperRemoval = !0, t.cancelHelperRemoval = !1, t._storedCSS = {\n position: t.placeholder.css("position"),\n top: t.placeholder.css("top"),\n left: t.placeholder.css("left")\n }, t._mouseStop(e), t.options.helper = t.options._helper) : (t.cancelHelperRemoval = !0, t._trigger("deactivate", e, n));\n });\n },\n drag: function drag(e, i, s) {\n t.each(s.sortables, function () {\n var n = !1,\n o = this;\n o.positionAbs = s.positionAbs, o.helperProportions = s.helperProportions, o.offset.click = s.offset.click, o._intersectsWith(o.containerCache) && (n = !0, t.each(s.sortables, function () {\n return this.positionAbs = s.positionAbs, this.helperProportions = s.helperProportions, this.offset.click = s.offset.click, this !== o && this._intersectsWith(this.containerCache) && t.contains(o.element[0], this.element[0]) && (n = !1), n;\n })), n ? (o.isOver || (o.isOver = 1, s._parent = i.helper.parent(), o.currentItem = i.helper.appendTo(o.element).data("ui-sortable-item", !0), o.options._helper = o.options.helper, o.options.helper = function () {\n return i.helper[0];\n }, e.target = o.currentItem[0], o._mouseCapture(e, !0), o._mouseStart(e, !0, !0), o.offset.click.top = s.offset.click.top, o.offset.click.left = s.offset.click.left, o.offset.parent.left -= s.offset.parent.left - o.offset.parent.left, o.offset.parent.top -= s.offset.parent.top - o.offset.parent.top, s._trigger("toSortable", e), s.dropped = o.element, t.each(s.sortables, function () {\n this.refreshPositions();\n }), s.currentItem = s.element, o.fromOutside = s), o.currentItem && (o._mouseDrag(e), i.position = o.position)) : o.isOver && (o.isOver = 0, o.cancelHelperRemoval = !0, o.options._revert = o.options.revert, o.options.revert = !1, o._trigger("out", e, o._uiHash(o)), o._mouseStop(e, !0), o.options.revert = o.options._revert, o.options.helper = o.options._helper, o.placeholder && o.placeholder.remove(), i.helper.appendTo(s._parent), s._refreshOffsets(e), i.position = s._generatePosition(e, !0), s._trigger("fromSortable", e), s.dropped = !1, t.each(s.sortables, function () {\n this.refreshPositions();\n }));\n });\n }\n }), t.ui.plugin.add("draggable", "cursor", {\n start: function start(e, i, s) {\n var n = t("body"),\n o = s.options;\n n.css("cursor") && (o._cursor = n.css("cursor")), n.css("cursor", o.cursor);\n },\n stop: function stop(e, i, s) {\n var n = s.options;\n n._cursor && t("body").css("cursor", n._cursor);\n }\n }), t.ui.plugin.add("draggable", "opacity", {\n start: function start(e, i, s) {\n var n = t(i.helper),\n o = s.options;\n n.css("opacity") && (o._opacity = n.css("opacity")), n.css("opacity", o.opacity);\n },\n stop: function stop(e, i, s) {\n var n = s.options;\n n._opacity && t(i.helper).css("opacity", n._opacity);\n }\n }), t.ui.plugin.add("draggable", "scroll", {\n start: function start(t, e, i) {\n i.scrollParentNotHidden || (i.scrollParentNotHidden = i.helper.scrollParent(!1)), i.scrollParentNotHidden[0] !== i.document[0] && "HTML" !== i.scrollParentNotHidden[0].tagName && (i.overflowOffset = i.scrollParentNotHidden.offset());\n },\n drag: function drag(e, i, s) {\n var n = s.options,\n o = !1,\n a = s.scrollParentNotHidden[0],\n r = s.document[0];\n a !== r && "HTML" !== a.tagName ? (n.axis && "x" === n.axis || (s.overflowOffset.top + a.offsetHeight - e.pageY < n.scrollSensitivity ? a.scrollTop = o = a.scrollTop + n.scrollSpeed : e.pageY - s.overflowOffset.top < n.scrollSensitivity && (a.scrollTop = o = a.scrollTop - n.scrollSpeed)), n.axis && "y" === n.axis || (s.overflowOffset.left + a.offsetWidth - e.pageX < n.scrollSensitivity ? a.scrollLeft = o = a.scrollLeft + n.scrollSpeed : e.pageX - s.overflowOffset.left < n.scrollSensitivity && (a.scrollLeft = o = a.scrollLeft - n.scrollSpeed))) : (n.axis && "x" === n.axis || (e.pageY - t(r).scrollTop() < n.scrollSensitivity ? o = t(r).scrollTop(t(r).scrollTop() - n.scrollSpeed) : t(window).height() - (e.pageY - t(r).scrollTop()) < n.scrollSensitivity && (o = t(r).scrollTop(t(r).scrollTop() + n.scrollSpeed))), n.axis && "y" === n.axis || (e.pageX - t(r).scrollLeft() < n.scrollSensitivity ? o = t(r).scrollLeft(t(r).scrollLeft() - n.scrollSpeed) : t(window).width() - (e.pageX - t(r).scrollLeft()) < n.scrollSensitivity && (o = t(r).scrollLeft(t(r).scrollLeft() + n.scrollSpeed)))), o !== !1 && t.ui.ddmanager && !n.dropBehaviour && t.ui.ddmanager.prepareOffsets(s, e);\n }\n }), t.ui.plugin.add("draggable", "snap", {\n start: function start(e, i, s) {\n var n = s.options;\n s.snapElements = [], t(n.snap.constructor !== String ? n.snap.items || ":data(ui-draggable)" : n.snap).each(function () {\n var e = t(this),\n i = e.offset();\n this !== s.element[0] && s.snapElements.push({\n item: this,\n width: e.outerWidth(),\n height: e.outerHeight(),\n top: i.top,\n left: i.left\n });\n });\n },\n drag: function drag(e, i, s) {\n var n,\n o,\n a,\n r,\n h,\n l,\n c,\n u,\n d,\n p,\n f = s.options,\n g = f.snapTolerance,\n m = i.offset.left,\n _ = m + s.helperProportions.width,\n v = i.offset.top,\n b = v + s.helperProportions.height;\n for (d = s.snapElements.length - 1; d >= 0; d--) h = s.snapElements[d].left - s.margins.left, l = h + s.snapElements[d].width, c = s.snapElements[d].top - s.margins.top, u = c + s.snapElements[d].height, h - g > _ || m > l + g || c - g > b || v > u + g || !t.contains(s.snapElements[d].item.ownerDocument, s.snapElements[d].item) ? (s.snapElements[d].snapping && s.options.snap.release && s.options.snap.release.call(s.element, e, t.extend(s._uiHash(), {\n snapItem: s.snapElements[d].item\n })), s.snapElements[d].snapping = !1) : ("inner" !== f.snapMode && (n = g >= Math.abs(c - b), o = g >= Math.abs(u - v), a = g >= Math.abs(h - _), r = g >= Math.abs(l - m), n && (i.position.top = s._convertPositionTo("relative", {\n top: c - s.helperProportions.height,\n left: 0\n }).top), o && (i.position.top = s._convertPositionTo("relative", {\n top: u,\n left: 0\n }).top), a && (i.position.left = s._convertPositionTo("relative", {\n top: 0,\n left: h - s.helperProportions.width\n }).left), r && (i.position.left = s._convertPositionTo("relative", {\n top: 0,\n left: l\n }).left)), p = n || o || a || r, "outer" !== f.snapMode && (n = g >= Math.abs(c - v), o = g >= Math.abs(u - b), a = g >= Math.abs(h - m), r = g >= Math.abs(l - _), n && (i.position.top = s._convertPositionTo("relative", {\n top: c,\n left: 0\n }).top), o && (i.position.top = s._convertPositionTo("relative", {\n top: u - s.helperProportions.height,\n left: 0\n }).top), a && (i.position.left = s._convertPositionTo("relative", {\n top: 0,\n left: h\n }).left), r && (i.position.left = s._convertPositionTo("relative", {\n top: 0,\n left: l - s.helperProportions.width\n }).left)), !s.snapElements[d].snapping && (n || o || a || r || p) && s.options.snap.snap && s.options.snap.snap.call(s.element, e, t.extend(s._uiHash(), {\n snapItem: s.snapElements[d].item\n })), s.snapElements[d].snapping = n || o || a || r || p);\n }\n }), t.ui.plugin.add("draggable", "stack", {\n start: function start(e, i, s) {\n var n,\n o = s.options,\n a = t.makeArray(t(o.stack)).sort(function (e, i) {\n return (parseInt(t(e).css("zIndex"), 10) || 0) - (parseInt(t(i).css("zIndex"), 10) || 0);\n });\n a.length && (n = parseInt(t(a[0]).css("zIndex"), 10) || 0, t(a).each(function (e) {\n t(this).css("zIndex", n + e);\n }), this.css("zIndex", n + a.length));\n }\n }), t.ui.plugin.add("draggable", "zIndex", {\n start: function start(e, i, s) {\n var n = t(i.helper),\n o = s.options;\n n.css("zIndex") && (o._zIndex = n.css("zIndex")), n.css("zIndex", o.zIndex);\n },\n stop: function stop(e, i, s) {\n var n = s.options;\n n._zIndex && t(i.helper).css("zIndex", n._zIndex);\n }\n }), t.ui.draggable, t.widget("ui.resizable", t.ui.mouse, {\n version: "1.12.0",\n widgetEventPrefix: "resize",\n options: {\n alsoResize: !1,\n animate: !1,\n animateDuration: "slow",\n animateEasing: "swing",\n aspectRatio: !1,\n autoHide: !1,\n classes: {\n "ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"\n },\n containment: !1,\n ghost: !1,\n grid: !1,\n handles: "e,s,se",\n helper: !1,\n maxHeight: null,\n maxWidth: null,\n minHeight: 10,\n minWidth: 10,\n zIndex: 90,\n resize: null,\n start: null,\n stop: null\n },\n _num: function _num(t) {\n return parseFloat(t) || 0;\n },\n _isNumber: function _isNumber(t) {\n return !isNaN(parseFloat(t));\n },\n _hasScroll: function _hasScroll(e, i) {\n if ("hidden" === t(e).css("overflow")) return !1;\n var s = i && "left" === i ? "scrollLeft" : "scrollTop",\n n = !1;\n return e[s] > 0 ? !0 : (e[s] = 1, n = e[s] > 0, e[s] = 0, n);\n },\n _create: function _create() {\n var e,\n i = this.options,\n s = this;\n this._addClass("ui-resizable"), t.extend(this, {\n _aspectRatio: !!i.aspectRatio,\n aspectRatio: i.aspectRatio,\n originalElement: this.element,\n _proportionallyResizeElements: [],\n _helper: i.helper || i.ghost || i.animate ? i.helper || "ui-resizable-helper" : null\n }), this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i) && (this.element.wrap(t("<div class=\'ui-wrapper\' style=\'overflow: hidden;\'></div>").css({\n position: this.element.css("position"),\n width: this.element.outerWidth(),\n height: this.element.outerHeight(),\n top: this.element.css("top"),\n left: this.element.css("left")\n })), this.element = this.element.parent().data("ui-resizable", this.element.resizable("instance")), this.elementIsWrapper = !0, e = {\n marginTop: this.originalElement.css("marginTop"),\n marginRight: this.originalElement.css("marginRight"),\n marginBottom: this.originalElement.css("marginBottom"),\n marginLeft: this.originalElement.css("marginLeft")\n }, this.element.css(e), this.originalElement.css("margin", 0), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({\n position: "static",\n zoom: 1,\n display: "block"\n })), this.originalElement.css(e), this._proportionallyResize()), this._setupHandles(), i.autoHide && t(this.element).on("mouseenter", function () {\n i.disabled || (s._removeClass("ui-resizable-autohide"), s._handles.show());\n }).on("mouseleave", function () {\n i.disabled || s.resizing || (s._addClass("ui-resizable-autohide"), s._handles.hide());\n }), this._mouseInit();\n },\n _destroy: function _destroy() {\n this._mouseDestroy();\n var e,\n i = function i(e) {\n t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove();\n };\n return this.elementIsWrapper && (i(this.element), e = this.element, this.originalElement.css({\n position: e.css("position"),\n width: e.outerWidth(),\n height: e.outerHeight(),\n top: e.css("top"),\n left: e.css("left")\n }).insertAfter(e), e.remove()), this.originalElement.css("resize", this.originalResizeStyle), i(this.originalElement), this;\n },\n _setOption: function _setOption(t, e) {\n switch (this._super(t, e), t) {\n case "handles":\n this._removeHandles(), this._setupHandles();\n break;\n default:\n }\n },\n _setupHandles: function _setupHandles() {\n var e,\n i,\n s,\n n,\n o,\n a = this.options,\n r = this;\n if (this.handles = a.handles || (t(".ui-resizable-handle", this.element).length ? {\n n: ".ui-resizable-n",\n e: ".ui-resizable-e",\n s: ".ui-resizable-s",\n w: ".ui-resizable-w",\n se: ".ui-resizable-se",\n sw: ".ui-resizable-sw",\n ne: ".ui-resizable-ne",\n nw: ".ui-resizable-nw"\n } : "e,s,se"), this._handles = t(), this.handles.constructor === String) for ("all" === this.handles && (this.handles = "n,e,s,w,se,sw,ne,nw"), s = this.handles.split(","), this.handles = {}, i = 0; s.length > i; i++) e = t.trim(s[i]), n = "ui-resizable-" + e, o = t("<div>"), this._addClass(o, "ui-resizable-handle " + n), o.css({\n zIndex: a.zIndex\n }), this.handles[e] = ".ui-resizable-" + e, this.element.append(o);\n this._renderAxis = function (e) {\n var i, s, n, o;\n e = e || this.element;\n for (i in this.handles) this.handles[i].constructor === String ? this.handles[i] = this.element.children(this.handles[i]).first().show() : (this.handles[i].jquery || this.handles[i].nodeType) && (this.handles[i] = t(this.handles[i]), this._on(this.handles[i], {\n mousedown: r._mouseDown\n })), this.elementIsWrapper && this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i) && (s = t(this.handles[i], this.element), o = /sw|ne|nw|se|n|s/.test(i) ? s.outerHeight() : s.outerWidth(), n = ["padding", /ne|nw|n/.test(i) ? "Top" : /se|sw|s/.test(i) ? "Bottom" : /^e$/.test(i) ? "Right" : "Left"].join(""), e.css(n, o), this._proportionallyResize()), this._handles = this._handles.add(this.handles[i]);\n }, this._renderAxis(this.element), this._handles = this._handles.add(this.element.find(".ui-resizable-handle")), this._handles.disableSelection(), this._handles.on("mouseover", function () {\n r.resizing || (this.className && (o = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)), r.axis = o && o[1] ? o[1] : "se");\n }), a.autoHide && (this._handles.hide(), this._addClass("ui-resizable-autohide"));\n },\n _removeHandles: function _removeHandles() {\n this._handles.remove();\n },\n _mouseCapture: function _mouseCapture(e) {\n var i,\n s,\n n = !1;\n for (i in this.handles) s = t(this.handles[i])[0], (s === e.target || t.contains(s, e.target)) && (n = !0);\n return !this.options.disabled && n;\n },\n _mouseStart: function _mouseStart(e) {\n var i,\n s,\n n,\n o = this.options,\n a = this.element;\n return this.resizing = !0, this._renderProxy(), i = this._num(this.helper.css("left")), s = this._num(this.helper.css("top")), o.containment && (i += t(o.containment).scrollLeft() || 0, s += t(o.containment).scrollTop() || 0), this.offset = this.helper.offset(), this.position = {\n left: i,\n top: s\n }, this.size = this._helper ? {\n width: this.helper.width(),\n height: this.helper.height()\n } : {\n width: a.width(),\n height: a.height()\n }, this.originalSize = this._helper ? {\n width: a.outerWidth(),\n height: a.outerHeight()\n } : {\n width: a.width(),\n height: a.height()\n }, this.sizeDiff = {\n width: a.outerWidth() - a.width(),\n height: a.outerHeight() - a.height()\n }, this.originalPosition = {\n left: i,\n top: s\n }, this.originalMousePosition = {\n left: e.pageX,\n top: e.pageY\n }, this.aspectRatio = "number" == typeof o.aspectRatio ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1, n = t(".ui-resizable-" + this.axis).css("cursor"), t("body").css("cursor", "auto" === n ? this.axis + "-resize" : n), this._addClass("ui-resizable-resizing"), this._propagate("start", e), !0;\n },\n _mouseDrag: function _mouseDrag(e) {\n var i,\n s,\n n = this.originalMousePosition,\n o = this.axis,\n a = e.pageX - n.left || 0,\n r = e.pageY - n.top || 0,\n h = this._change[o];\n return this._updatePrevProperties(), h ? (i = h.apply(this, [e, a, r]), this._updateVirtualBoundaries(e.shiftKey), (this._aspectRatio || e.shiftKey) && (i = this._updateRatio(i, e)), i = this._respectSize(i, e), this._updateCache(i), this._propagate("resize", e), s = this._applyChanges(), !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(), t.isEmptyObject(s) || (this._updatePrevProperties(), this._trigger("resize", e, this.ui()), this._applyChanges()), !1) : !1;\n },\n _mouseStop: function _mouseStop(e) {\n this.resizing = !1;\n var i,\n s,\n n,\n o,\n a,\n r,\n h,\n l = this.options,\n c = this;\n return this._helper && (i = this._proportionallyResizeElements, s = i.length && /textarea/i.test(i[0].nodeName), n = s && this._hasScroll(i[0], "left") ? 0 : c.sizeDiff.height, o = s ? 0 : c.sizeDiff.width, a = {\n width: c.helper.width() - o,\n height: c.helper.height() - n\n }, r = parseFloat(c.element.css("left")) + (c.position.left - c.originalPosition.left) || null, h = parseFloat(c.element.css("top")) + (c.position.top - c.originalPosition.top) || null, l.animate || this.element.css(t.extend(a, {\n top: h,\n left: r\n })), c.helper.height(c.size.height), c.helper.width(c.size.width), this._helper && !l.animate && this._proportionallyResize()), t("body").css("cursor", "auto"), this._removeClass("ui-resizable-resizing"), this._propagate("stop", e), this._helper && this.helper.remove(), !1;\n },\n _updatePrevProperties: function _updatePrevProperties() {\n this.prevPosition = {\n top: this.position.top,\n left: this.position.left\n }, this.prevSize = {\n width: this.size.width,\n height: this.size.height\n };\n },\n _applyChanges: function _applyChanges() {\n var t = {};\n return this.position.top !== this.prevPosition.top && (t.top = this.position.top + "px"), this.position.left !== this.prevPosition.left && (t.left = this.position.left + "px"), this.size.width !== this.prevSize.width && (t.width = this.size.width + "px"), this.size.height !== this.prevSize.height && (t.height = this.size.height + "px"), this.helper.css(t), t;\n },\n _updateVirtualBoundaries: function _updateVirtualBoundaries(t) {\n var e,\n i,\n s,\n n,\n o,\n a = this.options;\n o = {\n minWidth: this._isNumber(a.minWidth) ? a.minWidth : 0,\n maxWidth: this._isNumber(a.maxWidth) ? a.maxWidth : 1 / 0,\n minHeight: this._isNumber(a.minHeight) ? a.minHeight : 0,\n maxHeight: this._isNumber(a.maxHeight) ? a.maxHeight : 1 / 0\n }, (this._aspectRatio || t) && (e = o.minHeight * this.aspectRatio, s = o.minWidth / this.aspectRatio, i = o.maxHeight * this.aspectRatio, n = o.maxWidth / this.aspectRatio, e > o.minWidth && (o.minWidth = e), s > o.minHeight && (o.minHeight = s), o.maxWidth > i && (o.maxWidth = i), o.maxHeight > n && (o.maxHeight = n)), this._vBoundaries = o;\n },\n _updateCache: function _updateCache(t) {\n this.offset = this.helper.offset(), this._isNumber(t.left) && (this.position.left = t.left), this._isNumber(t.top) && (this.position.top = t.top), this._isNumber(t.height) && (this.size.height = t.height), this._isNumber(t.width) && (this.size.width = t.width);\n },\n _updateRatio: function _updateRatio(t) {\n var e = this.position,\n i = this.size,\n s = this.axis;\n return this._isNumber(t.height) ? t.width = t.height * this.aspectRatio : this._isNumber(t.width) && (t.height = t.width / this.aspectRatio), "sw" === s && (t.left = e.left + (i.width - t.width), t.top = null), "nw" === s && (t.top = e.top + (i.height - t.height), t.left = e.left + (i.width - t.width)), t;\n },\n _respectSize: function _respectSize(t) {\n var e = this._vBoundaries,\n i = this.axis,\n s = this._isNumber(t.width) && e.maxWidth && e.maxWidth < t.width,\n n = this._isNumber(t.height) && e.maxHeight && e.maxHeight < t.height,\n o = this._isNumber(t.width) && e.minWidth && e.minWidth > t.width,\n a = this._isNumber(t.height) && e.minHeight && e.minHeight > t.height,\n r = this.originalPosition.left + this.originalSize.width,\n h = this.originalPosition.top + this.originalSize.height,\n l = /sw|nw|w/.test(i),\n c = /nw|ne|n/.test(i);\n return o && (t.width = e.minWidth), a && (t.height = e.minHeight), s && (t.width = e.maxWidth), n && (t.height = e.maxHeight), o && l && (t.left = r - e.minWidth), s && l && (t.left = r - e.maxWidth), a && c && (t.top = h - e.minHeight), n && c && (t.top = h - e.maxHeight), t.width || t.height || t.left || !t.top ? t.width || t.height || t.top || !t.left || (t.left = null) : t.top = null, t;\n },\n _getPaddingPlusBorderDimensions: function _getPaddingPlusBorderDimensions(t) {\n for (var e = 0, i = [], s = [t.css("borderTopWidth"), t.css("borderRightWidth"), t.css("borderBottomWidth"), t.css("borderLeftWidth")], n = [t.css("paddingTop"), t.css("paddingRight"), t.css("paddingBottom"), t.css("paddingLeft")]; 4 > e; e++) i[e] = parseFloat(s[e]) || 0, i[e] += parseFloat(n[e]) || 0;\n return {\n height: i[0] + i[2],\n width: i[1] + i[3]\n };\n },\n _proportionallyResize: function _proportionallyResize() {\n if (this._proportionallyResizeElements.length) for (var t, e = 0, i = this.helper || this.element; this._proportionallyResizeElements.length > e; e++) t = this._proportionallyResizeElements[e], this.outerDimensions || (this.outerDimensions = this._getPaddingPlusBorderDimensions(t)), t.css({\n height: i.height() - this.outerDimensions.height || 0,\n width: i.width() - this.outerDimensions.width || 0\n });\n },\n _renderProxy: function _renderProxy() {\n var e = this.element,\n i = this.options;\n this.elementOffset = e.offset(), this._helper ? (this.helper = this.helper || t("<div style=\'overflow:hidden;\'></div>"), this._addClass(this.helper, this._helper), this.helper.css({\n width: this.element.outerWidth(),\n height: this.element.outerHeight(),\n position: "absolute",\n left: this.elementOffset.left + "px",\n top: this.elementOffset.top + "px",\n zIndex: ++i.zIndex\n }), this.helper.appendTo("body").disableSelection()) : this.helper = this.element;\n },\n _change: {\n e: function e(t, _e) {\n return {\n width: this.originalSize.width + _e\n };\n },\n w: function w(t, e) {\n var i = this.originalSize,\n s = this.originalPosition;\n return {\n left: s.left + e,\n width: i.width - e\n };\n },\n n: function n(t, e, i) {\n var s = this.originalSize,\n n = this.originalPosition;\n return {\n top: n.top + i,\n height: s.height - i\n };\n },\n s: function s(t, e, i) {\n return {\n height: this.originalSize.height + i\n };\n },\n se: function se(e, i, s) {\n return t.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [e, i, s]));\n },\n sw: function sw(e, i, s) {\n return t.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [e, i, s]));\n },\n ne: function ne(e, i, s) {\n return t.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [e, i, s]));\n },\n nw: function nw(e, i, s) {\n return t.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [e, i, s]));\n }\n },\n _propagate: function _propagate(e, i) {\n t.ui.plugin.call(this, e, [i, this.ui()]), "resize" !== e && this._trigger(e, i, this.ui());\n },\n plugins: {},\n ui: function ui() {\n return {\n originalElement: this.originalElement,\n element: this.element,\n helper: this.helper,\n position: this.position,\n size: this.size,\n originalSize: this.originalSize,\n originalPosition: this.originalPosition\n };\n }\n }), t.ui.plugin.add("resizable", "animate", {\n stop: function stop(e) {\n var i = t(this).resizable("instance"),\n s = i.options,\n n = i._proportionallyResizeElements,\n o = n.length && /textarea/i.test(n[0].nodeName),\n a = o && i._hasScroll(n[0], "left") ? 0 : i.sizeDiff.height,\n r = o ? 0 : i.sizeDiff.width,\n h = {\n width: i.size.width - r,\n height: i.size.height - a\n },\n l = parseFloat(i.element.css("left")) + (i.position.left - i.originalPosition.left) || null,\n c = parseFloat(i.element.css("top")) + (i.position.top - i.originalPosition.top) || null;\n i.element.animate(t.extend(h, c && l ? {\n top: c,\n left: l\n } : {}), {\n duration: s.animateDuration,\n easing: s.animateEasing,\n step: function step() {\n var s = {\n width: parseFloat(i.element.css("width")),\n height: parseFloat(i.element.css("height")),\n top: parseFloat(i.element.css("top")),\n left: parseFloat(i.element.css("left"))\n };\n n && n.length && t(n[0]).css({\n width: s.width,\n height: s.height\n }), i._updateCache(s), i._propagate("resize", e);\n }\n });\n }\n }), t.ui.plugin.add("resizable", "containment", {\n start: function start() {\n var e,\n i,\n s,\n n,\n o,\n a,\n r,\n h = t(this).resizable("instance"),\n l = h.options,\n c = h.element,\n u = l.containment,\n d = u instanceof t ? u.get(0) : /parent/.test(u) ? c.parent().get(0) : u;\n d && (h.containerElement = t(d), /document/.test(u) || u === document ? (h.containerOffset = {\n left: 0,\n top: 0\n }, h.containerPosition = {\n left: 0,\n top: 0\n }, h.parentData = {\n element: t(document),\n left: 0,\n top: 0,\n width: t(document).width(),\n height: t(document).height() || document.body.parentNode.scrollHeight\n }) : (e = t(d), i = [], t(["Top", "Right", "Left", "Bottom"]).each(function (t, s) {\n i[t] = h._num(e.css("padding" + s));\n }), h.containerOffset = e.offset(), h.containerPosition = e.position(), h.containerSize = {\n height: e.innerHeight() - i[3],\n width: e.innerWidth() - i[1]\n }, s = h.containerOffset, n = h.containerSize.height, o = h.containerSize.width, a = h._hasScroll(d, "left") ? d.scrollWidth : o, r = h._hasScroll(d) ? d.scrollHeight : n, h.parentData = {\n element: d,\n left: s.left,\n top: s.top,\n width: a,\n height: r\n }));\n },\n resize: function resize(e) {\n var i,\n s,\n n,\n o,\n a = t(this).resizable("instance"),\n r = a.options,\n h = a.containerOffset,\n l = a.position,\n c = a._aspectRatio || e.shiftKey,\n u = {\n top: 0,\n left: 0\n },\n d = a.containerElement,\n p = !0;\n d[0] !== document && /static/.test(d.css("position")) && (u = h), l.left < (a._helper ? h.left : 0) && (a.size.width = a.size.width + (a._helper ? a.position.left - h.left : a.position.left - u.left), c && (a.size.height = a.size.width / a.aspectRatio, p = !1), a.position.left = r.helper ? h.left : 0), l.top < (a._helper ? h.top : 0) && (a.size.height = a.size.height + (a._helper ? a.position.top - h.top : a.position.top), c && (a.size.width = a.size.height * a.aspectRatio, p = !1), a.position.top = a._helper ? h.top : 0), n = a.containerElement.get(0) === a.element.parent().get(0), o = /relative|absolute/.test(a.containerElement.css("position")), n && 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), i = Math.abs(a.sizeDiff.width + (a._helper ? a.offset.left - u.left : a.offset.left - h.left)), s = Math.abs(a.sizeDiff.height + (a._helper ? a.offset.top - u.top : a.offset.top - h.top)), i + a.size.width >= a.parentData.width && (a.size.width = a.parentData.width - i, c && (a.size.height = a.size.width / a.aspectRatio, p = !1)), s + a.size.height >= a.parentData.height && (a.size.height = a.parentData.height - s, c && (a.size.width = a.size.height * a.aspectRatio, p = !1)), p || (a.position.left = a.prevPosition.left, a.position.top = a.prevPosition.top, a.size.width = a.prevSize.width, a.size.height = a.prevSize.height);\n },\n stop: function stop() {\n var e = t(this).resizable("instance"),\n i = e.options,\n s = e.containerOffset,\n n = e.containerPosition,\n o = e.containerElement,\n a = t(e.helper),\n r = a.offset(),\n h = a.outerWidth() - e.sizeDiff.width,\n l = a.outerHeight() - e.sizeDiff.height;\n e._helper && !i.animate && /relative/.test(o.css("position")) && t(this).css({\n left: r.left - n.left - s.left,\n width: h,\n height: l\n }), e._helper && !i.animate && /static/.test(o.css("position")) && t(this).css({\n left: r.left - n.left - s.left,\n width: h,\n height: l\n });\n }\n }), t.ui.plugin.add("resizable", "alsoResize", {\n start: function start() {\n var e = t(this).resizable("instance"),\n i = e.options;\n t(i.alsoResize).each(function () {\n var e = t(this);\n e.data("ui-resizable-alsoresize", {\n width: parseFloat(e.width()),\n height: parseFloat(e.height()),\n left: parseFloat(e.css("left")),\n top: parseFloat(e.css("top"))\n });\n });\n },\n resize: function resize(e, i) {\n var s = t(this).resizable("instance"),\n n = s.options,\n o = s.originalSize,\n a = s.originalPosition,\n r = {\n height: s.size.height - o.height || 0,\n width: s.size.width - o.width || 0,\n top: s.position.top - a.top || 0,\n left: s.position.left - a.left || 0\n };\n t(n.alsoResize).each(function () {\n var e = t(this),\n s = t(this).data("ui-resizable-alsoresize"),\n n = {},\n o = e.parents(i.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];\n t.each(o, function (t, e) {\n var i = (s[e] || 0) + (r[e] || 0);\n i && i >= 0 && (n[e] = i || null);\n }), e.css(n);\n });\n },\n stop: function stop() {\n t(this).removeData("ui-resizable-alsoresize");\n }\n }), t.ui.plugin.add("resizable", "ghost", {\n start: function start() {\n var e = t(this).resizable("instance"),\n i = e.size;\n e.ghost = e.originalElement.clone(), e.ghost.css({\n opacity: .25,\n display: "block",\n position: "relative",\n height: i.height,\n width: i.width,\n margin: 0,\n left: 0,\n top: 0\n }), e._addClass(e.ghost, "ui-resizable-ghost"), t.uiBackCompat !== !1 && "string" == typeof e.options.ghost && e.ghost.addClass(this.options.ghost), e.ghost.appendTo(e.helper);\n },\n resize: function resize() {\n var e = t(this).resizable("instance");\n e.ghost && e.ghost.css({\n position: "relative",\n height: e.size.height,\n width: e.size.width\n });\n },\n stop: function stop() {\n var e = t(this).resizable("instance");\n e.ghost && e.helper && e.helper.get(0).removeChild(e.ghost.get(0));\n }\n }), t.ui.plugin.add("resizable", "grid", {\n resize: function resize() {\n var e,\n i = t(this).resizable("instance"),\n s = i.options,\n n = i.size,\n o = i.originalSize,\n a = i.originalPosition,\n r = i.axis,\n h = "number" == typeof s.grid ? [s.grid, s.grid] : s.grid,\n l = h[0] || 1,\n c = h[1] || 1,\n u = Math.round((n.width - o.width) / l) * l,\n d = Math.round((n.height - o.height) / c) * c,\n p = o.width + u,\n f = o.height + d,\n g = s.maxWidth && p > s.maxWidth,\n m = s.maxHeight && f > s.maxHeight,\n _ = s.minWidth && s.minWidth > p,\n v = s.minHeight && s.minHeight > f;\n s.grid = h, _ && (p += l), v && (f += c), g && (p -= l), m && (f -= c), /^(se|s|e)$/.test(r) ? (i.size.width = p, i.size.height = f) : /^(ne)$/.test(r) ? (i.size.width = p, i.size.height = f, i.position.top = a.top - d) : /^(sw)$/.test(r) ? (i.size.width = p, i.size.height = f, i.position.left = a.left - u) : ((0 >= f - c || 0 >= p - l) && (e = i._getPaddingPlusBorderDimensions(this)), f - c > 0 ? (i.size.height = f, i.position.top = a.top - d) : (f = c - e.height, i.size.height = f, i.position.top = a.top + o.height - f), p - l > 0 ? (i.size.width = p, i.position.left = a.left - u) : (p = l - e.width, i.size.width = p, i.position.left = a.left + o.width - p));\n }\n }), t.ui.resizable, t.widget("ui.dialog", {\n version: "1.12.0",\n options: {\n appendTo: "body",\n autoOpen: !0,\n buttons: [],\n classes: {\n "ui-dialog": "ui-corner-all",\n "ui-dialog-titlebar": "ui-corner-all"\n },\n closeOnEscape: !0,\n closeText: "Close",\n draggable: !0,\n hide: null,\n height: "auto",\n maxHeight: null,\n maxWidth: null,\n minHeight: 150,\n minWidth: 150,\n modal: !1,\n position: {\n my: "center",\n at: "center",\n of: window,\n collision: "fit",\n using: function using(e) {\n var i = t(this).css(e).offset().top;\n 0 > i && t(this).css("top", e.top - i);\n }\n },\n resizable: !0,\n show: null,\n title: null,\n width: 300,\n beforeClose: null,\n close: null,\n drag: null,\n dragStart: null,\n dragStop: null,\n focus: null,\n open: null,\n resize: null,\n resizeStart: null,\n resizeStop: null\n },\n sizeRelatedOptions: {\n buttons: !0,\n height: !0,\n maxHeight: !0,\n maxWidth: !0,\n minHeight: !0,\n minWidth: !0,\n width: !0\n },\n resizableRelatedOptions: {\n maxHeight: !0,\n maxWidth: !0,\n minHeight: !0,\n minWidth: !0\n },\n _create: function _create() {\n this.originalCss = {\n display: this.element[0].style.display,\n width: this.element[0].style.width,\n minHeight: this.element[0].style.minHeight,\n maxHeight: this.element[0].style.maxHeight,\n height: this.element[0].style.height\n }, this.originalPosition = {\n parent: this.element.parent(),\n index: this.element.parent().children().index(this.element)\n }, this.originalTitle = this.element.attr("title"), null == this.options.title && null != this.originalTitle && (this.options.title = this.originalTitle), this.options.disabled && (this.options.disabled = !1), this._createWrapper(), this.element.show().removeAttr("title").appendTo(this.uiDialog), this._addClass("ui-dialog-content", "ui-widget-content"), this._createTitlebar(), this._createButtonPane(), this.options.draggable && t.fn.draggable && this._makeDraggable(), this.options.resizable && t.fn.resizable && this._makeResizable(), this._isOpen = !1, this._trackFocus();\n },\n _init: function _init() {\n this.options.autoOpen && this.open();\n },\n _appendTo: function _appendTo() {\n var e = this.options.appendTo;\n return e && (e.jquery || e.nodeType) ? t(e) : this.document.find(e || "body").eq(0);\n },\n _destroy: function _destroy() {\n var t,\n e = this.originalPosition;\n this._untrackInstance(), this._destroyOverlay(), this.element.removeUniqueId().css(this.originalCss).detach(), this.uiDialog.remove(), this.originalTitle && this.element.attr("title", this.originalTitle), t = e.parent.children().eq(e.index), t.length && t[0] !== this.element[0] ? t.before(this.element) : e.parent.append(this.element);\n },\n widget: function widget() {\n return this.uiDialog;\n },\n disable: t.noop,\n enable: t.noop,\n close: function close(e) {\n var i = this;\n this._isOpen && this._trigger("beforeClose", e) !== !1 && (this._isOpen = !1, this._focusedElement = null, this._destroyOverlay(), this._untrackInstance(), this.opener.filter(":focusable").trigger("focus").length || t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])), this._hide(this.uiDialog, this.options.hide, function () {\n i._trigger("close", e);\n }));\n },\n isOpen: function isOpen() {\n return this._isOpen;\n },\n moveToTop: function moveToTop() {\n this._moveToTop();\n },\n _moveToTop: function _moveToTop(e, i) {\n var s = !1,\n n = this.uiDialog.siblings(".ui-front:visible").map(function () {\n return +t(this).css("z-index");\n }).get(),\n o = Math.max.apply(null, n);\n return o >= +this.uiDialog.css("z-index") && (this.uiDialog.css("z-index", o + 1), s = !0), s && !i && this._trigger("focus", e), s;\n },\n open: function open() {\n var e = this;\n return this._isOpen ? (this._moveToTop() && this._focusTabbable(), void 0) : (this._isOpen = !0, this.opener = t(t.ui.safeActiveElement(this.document[0])), this._size(), this._position(), this._createOverlay(), this._moveToTop(null, !0), this.overlay && this.overlay.css("z-index", this.uiDialog.css("z-index") - 1), this._show(this.uiDialog, this.options.show, function () {\n e._focusTabbable(), e._trigger("focus");\n }), this._makeFocusTarget(), this._trigger("open"), void 0);\n },\n _focusTabbable: function _focusTabbable() {\n var t = this._focusedElement;\n t || (t = this.element.find("[autofocus]")), t.length || (t = this.element.find(":tabbable")), t.length || (t = this.uiDialogButtonPane.find(":tabbable")), t.length || (t = this.uiDialogTitlebarClose.filter(":tabbable")), t.length || (t = this.uiDialog), t.eq(0).trigger("focus");\n },\n _keepFocus: function _keepFocus(e) {\n function i() {\n var e = t.ui.safeActiveElement(this.document[0]),\n i = this.uiDialog[0] === e || t.contains(this.uiDialog[0], e);\n i || this._focusTabbable();\n }\n e.preventDefault(), i.call(this), this._delay(i);\n },\n _createWrapper: function _createWrapper() {\n this.uiDialog = t("<div>").hide().attr({\n tabIndex: -1,\n role: "dialog"\n }).appendTo(this._appendTo()), this._addClass(this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front"), this._on(this.uiDialog, {\n keydown: function keydown(e) {\n if (this.options.closeOnEscape && !e.isDefaultPrevented() && e.keyCode && e.keyCode === t.ui.keyCode.ESCAPE) return e.preventDefault(), this.close(e), void 0;\n if (e.keyCode === t.ui.keyCode.TAB && !e.isDefaultPrevented()) {\n var i = this.uiDialog.find(":tabbable"),\n s = i.filter(":first"),\n n = i.filter(":last");\n e.target !== n[0] && e.target !== this.uiDialog[0] || e.shiftKey ? e.target !== s[0] && e.target !== this.uiDialog[0] || !e.shiftKey || (this._delay(function () {\n n.trigger("focus");\n }), e.preventDefault()) : (this._delay(function () {\n s.trigger("focus");\n }), e.preventDefault());\n }\n },\n mousedown: function mousedown(t) {\n this._moveToTop(t) && this._focusTabbable();\n }\n }), this.element.find("[aria-describedby]").length || this.uiDialog.attr({\n "aria-describedby": this.element.uniqueId().attr("id")\n });\n },\n _createTitlebar: function _createTitlebar() {\n var e;\n this.uiDialogTitlebar = t("<div>"), this._addClass(this.uiDialogTitlebar, "ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix"), this._on(this.uiDialogTitlebar, {\n mousedown: function mousedown(e) {\n t(e.target).closest(".ui-dialog-titlebar-close") || this.uiDialog.trigger("focus");\n }\n }), this.uiDialogTitlebarClose = t("<button type=\'button\'></button>").button({\n label: t("<a>").text(this.options.closeText).html(),\n icon: "ui-icon-closethick",\n showLabel: !1\n }).appendTo(this.uiDialogTitlebar), this._addClass(this.uiDialogTitlebarClose, "ui-dialog-titlebar-close"), this._on(this.uiDialogTitlebarClose, {\n click: function click(t) {\n t.preventDefault(), this.close(t);\n }\n }), e = t("<span>").uniqueId().prependTo(this.uiDialogTitlebar), this._addClass(e, "ui-dialog-title"), this._title(e), this.uiDialogTitlebar.prependTo(this.uiDialog), this.uiDialog.attr({\n "aria-labelledby": e.attr("id")\n });\n },\n _title: function _title(t) {\n this.options.title ? t.text(this.options.title) : t.html(" ");\n },\n _createButtonPane: function _createButtonPane() {\n this.uiDialogButtonPane = t("<div>"), this._addClass(this.uiDialogButtonPane, "ui-dialog-buttonpane", "ui-widget-content ui-helper-clearfix"), this.uiButtonSet = t("<div>").appendTo(this.uiDialogButtonPane), this._addClass(this.uiButtonSet, "ui-dialog-buttonset"), this._createButtons();\n },\n _createButtons: function _createButtons() {\n var e = this,\n i = this.options.buttons;\n return this.uiDialogButtonPane.remove(), this.uiButtonSet.empty(), t.isEmptyObject(i) || t.isArray(i) && !i.length ? (this._removeClass(this.uiDialog, "ui-dialog-buttons"), void 0) : (t.each(i, function (i, s) {\n var n, o;\n s = t.isFunction(s) ? {\n click: s,\n text: i\n } : s, s = t.extend({\n type: "button"\n }, s), n = s.click, o = {\n icon: s.icon,\n iconPosition: s.iconPosition,\n showLabel: s.showLabel\n }, delete s.click, delete s.icon, delete s.iconPosition, delete s.showLabel, t("<button></button>", s).button(o).appendTo(e.uiButtonSet).on("click", function () {\n n.apply(e.element[0], arguments);\n });\n }), this._addClass(this.uiDialog, "ui-dialog-buttons"), this.uiDialogButtonPane.appendTo(this.uiDialog), void 0);\n },\n _makeDraggable: function _makeDraggable() {\n function e(t) {\n return {\n position: t.position,\n offset: t.offset\n };\n }\n var i = this,\n s = this.options;\n this.uiDialog.draggable({\n cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",\n handle: ".ui-dialog-titlebar",\n containment: "document",\n start: function start(s, n) {\n i._addClass(t(this), "ui-dialog-dragging"), i._blockFrames(), i._trigger("dragStart", s, e(n));\n },\n drag: function drag(t, s) {\n i._trigger("drag", t, e(s));\n },\n stop: function stop(n, o) {\n var a = o.offset.left - i.document.scrollLeft(),\n r = o.offset.top - i.document.scrollTop();\n s.position = {\n my: "left top",\n at: "left" + (a >= 0 ? "+" : "") + a + " " + "top" + (r >= 0 ? "+" : "") + r,\n of: i.window\n }, i._removeClass(t(this), "ui-dialog-dragging"), i._unblockFrames(), i._trigger("dragStop", n, e(o));\n }\n });\n },\n _makeResizable: function _makeResizable() {\n function e(t) {\n return {\n originalPosition: t.originalPosition,\n originalSize: t.originalSize,\n position: t.position,\n size: t.size\n };\n }\n var i = this,\n s = this.options,\n n = s.resizable,\n o = this.uiDialog.css("position"),\n a = "string" == typeof n ? n : "n,e,s,w,se,sw,ne,nw";\n this.uiDialog.resizable({\n cancel: ".ui-dialog-content",\n containment: "document",\n alsoResize: this.element,\n maxWidth: s.maxWidth,\n maxHeight: s.maxHeight,\n minWidth: s.minWidth,\n minHeight: this._minHeight(),\n handles: a,\n start: function start(s, n) {\n i._addClass(t(this), "ui-dialog-resizing"), i._blockFrames(), i._trigger("resizeStart", s, e(n));\n },\n resize: function resize(t, s) {\n i._trigger("resize", t, e(s));\n },\n stop: function stop(n, o) {\n var a = i.uiDialog.offset(),\n r = a.left - i.document.scrollLeft(),\n h = a.top - i.document.scrollTop();\n s.height = i.uiDialog.height(), s.width = i.uiDialog.width(), s.position = {\n my: "left top",\n at: "left" + (r >= 0 ? "+" : "") + r + " " + "top" + (h >= 0 ? "+" : "") + h,\n of: i.window\n }, i._removeClass(t(this), "ui-dialog-resizing"), i._unblockFrames(), i._trigger("resizeStop", n, e(o));\n }\n }).css("position", o);\n },\n _trackFocus: function _trackFocus() {\n this._on(this.widget(), {\n focusin: function focusin(e) {\n this._makeFocusTarget(), this._focusedElement = t(e.target);\n }\n });\n },\n _makeFocusTarget: function _makeFocusTarget() {\n this._untrackInstance(), this._trackingInstances().unshift(this);\n },\n _untrackInstance: function _untrackInstance() {\n var e = this._trackingInstances(),\n i = t.inArray(this, e);\n -1 !== i && e.splice(i, 1);\n },\n _trackingInstances: function _trackingInstances() {\n var t = this.document.data("ui-dialog-instances");\n return t || (t = [], this.document.data("ui-dialog-instances", t)), t;\n },\n _minHeight: function _minHeight() {\n var t = this.options;\n return "auto" === t.height ? t.minHeight : Math.min(t.minHeight, t.height);\n },\n _position: function _position() {\n var t = this.uiDialog.is(":visible");\n t || this.uiDialog.show(), this.uiDialog.position(this.options.position), t || this.uiDialog.hide();\n },\n _setOptions: function _setOptions(e) {\n var i = this,\n s = !1,\n n = {};\n t.each(e, function (t, e) {\n i._setOption(t, e), t in i.sizeRelatedOptions && (s = !0), t in i.resizableRelatedOptions && (n[t] = e);\n }), s && (this._size(), this._position()), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", n);\n },\n _setOption: function _setOption(e, i) {\n var s,\n n,\n o = this.uiDialog;\n "disabled" !== e && (this._super(e, i), "appendTo" === e && this.uiDialog.appendTo(this._appendTo()), "buttons" === e && this._createButtons(), "closeText" === e && this.uiDialogTitlebarClose.button({\n label: t("<a>").text("" + this.options.closeText).html()\n }), "draggable" === e && (s = o.is(":data(ui-draggable)"), s && !i && o.draggable("destroy"), !s && i && this._makeDraggable()), "position" === e && this._position(), "resizable" === e && (n = o.is(":data(ui-resizable)"), n && !i && o.resizable("destroy"), n && "string" == typeof i && o.resizable("option", "handles", i), n || i === !1 || this._makeResizable()), "title" === e && this._title(this.uiDialogTitlebar.find(".ui-dialog-title")));\n },\n _size: function _size() {\n var t,\n e,\n i,\n s = this.options;\n this.element.show().css({\n width: "auto",\n minHeight: 0,\n maxHeight: "none",\n height: 0\n }), s.minWidth > s.width && (s.width = s.minWidth), t = this.uiDialog.css({\n height: "auto",\n width: s.width\n }).outerHeight(), e = Math.max(0, s.minHeight - t), i = "number" == typeof s.maxHeight ? Math.max(0, s.maxHeight - t) : "none", "auto" === s.height ? this.element.css({\n minHeight: e,\n maxHeight: i,\n height: "auto"\n }) : this.element.height(Math.max(0, s.height - t)), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", "minHeight", this._minHeight());\n },\n _blockFrames: function _blockFrames() {\n this.iframeBlocks = this.document.find("iframe").map(function () {\n var e = t(this);\n return t("<div>").css({\n position: "absolute",\n width: e.outerWidth(),\n height: e.outerHeight()\n }).appendTo(e.parent()).offset(e.offset())[0];\n });\n },\n _unblockFrames: function _unblockFrames() {\n this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks);\n },\n _allowInteraction: function _allowInteraction(e) {\n return t(e.target).closest(".ui-dialog").length ? !0 : !!t(e.target).closest(".ui-datepicker").length;\n },\n _createOverlay: function _createOverlay() {\n if (this.options.modal) {\n var e = !0;\n this._delay(function () {\n e = !1;\n }), this.document.data("ui-dialog-overlays") || this._on(this.document, {\n focusin: function focusin(t) {\n e || this._allowInteraction(t) || (t.preventDefault(), this._trackingInstances()[0]._focusTabbable());\n }\n }), this.overlay = t("<div>").appendTo(this._appendTo()), this._addClass(this.overlay, null, "ui-widget-overlay ui-front"), this._on(this.overlay, {\n mousedown: "_keepFocus"\n }), this.document.data("ui-dialog-overlays", (this.document.data("ui-dialog-overlays") || 0) + 1);\n }\n },\n _destroyOverlay: function _destroyOverlay() {\n if (this.options.modal && this.overlay) {\n var t = this.document.data("ui-dialog-overlays") - 1;\n t ? this.document.data("ui-dialog-overlays", t) : (this._off(this.document, "focusin"), this.document.removeData("ui-dialog-overlays")), this.overlay.remove(), this.overlay = null;\n }\n }\n }), t.uiBackCompat !== !1 && t.widget("ui.dialog", t.ui.dialog, {\n options: {\n dialogClass: ""\n },\n _createWrapper: function _createWrapper() {\n this._super(), this.uiDialog.addClass(this.options.dialogClass);\n },\n _setOption: function _setOption(t, e) {\n "dialogClass" === t && this.uiDialog.removeClass(this.options.dialogClass).addClass(e), this._superApply(arguments);\n }\n }), t.ui.dialog, t.widget("ui.droppable", {\n version: "1.12.0",\n widgetEventPrefix: "drop",\n options: {\n accept: "*",\n addClasses: !0,\n greedy: !1,\n scope: "default",\n tolerance: "intersect",\n activate: null,\n deactivate: null,\n drop: null,\n out: null,\n over: null\n },\n _create: function _create() {\n var e,\n i = this.options,\n s = i.accept;\n this.isover = !1, this.isout = !0, this.accept = t.isFunction(s) ? s : function (t) {\n return t.is(s);\n }, this.proportions = function () {\n return arguments.length ? (e = arguments[0], void 0) : e ? e : e = {\n width: this.element[0].offsetWidth,\n height: this.element[0].offsetHeight\n };\n }, this._addToManager(i.scope), i.addClasses && this._addClass("ui-droppable");\n },\n _addToManager: function _addToManager(e) {\n t.ui.ddmanager.droppables[e] = t.ui.ddmanager.droppables[e] || [], t.ui.ddmanager.droppables[e].push(this);\n },\n _splice: function _splice(t) {\n for (var e = 0; t.length > e; e++) t[e] === this && t.splice(e, 1);\n },\n _destroy: function _destroy() {\n var e = t.ui.ddmanager.droppables[this.options.scope];\n this._splice(e);\n },\n _setOption: function _setOption(e, i) {\n if ("accept" === e) this.accept = t.isFunction(i) ? i : function (t) {\n return t.is(i);\n };else if ("scope" === e) {\n var s = t.ui.ddmanager.droppables[this.options.scope];\n this._splice(s), this._addToManager(i);\n }\n this._super(e, i);\n },\n _activate: function _activate(e) {\n var i = t.ui.ddmanager.current;\n this._addActiveClass(), i && this._trigger("activate", e, this.ui(i));\n },\n _deactivate: function _deactivate(e) {\n var i = t.ui.ddmanager.current;\n this._removeActiveClass(), i && this._trigger("deactivate", e, this.ui(i));\n },\n _over: function _over(e) {\n var i = t.ui.ddmanager.current;\n i && (i.currentItem || i.element)[0] !== this.element[0] && this.accept.call(this.element[0], i.currentItem || i.element) && (this._addHoverClass(), this._trigger("over", e, this.ui(i)));\n },\n _out: function _out(e) {\n var i = t.ui.ddmanager.current;\n i && (i.currentItem || i.element)[0] !== this.element[0] && this.accept.call(this.element[0], i.currentItem || i.element) && (this._removeHoverClass(), this._trigger("out", e, this.ui(i)));\n },\n _drop: function _drop(e, i) {\n var s = i || t.ui.ddmanager.current,\n n = !1;\n return s && (s.currentItem || s.element)[0] !== this.element[0] ? (this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function () {\n var i = t(this).droppable("instance");\n return i.options.greedy && !i.options.disabled && i.options.scope === s.options.scope && i.accept.call(i.element[0], s.currentItem || s.element) && v(s, t.extend(i, {\n offset: i.element.offset()\n }), i.options.tolerance, e) ? (n = !0, !1) : void 0;\n }), n ? !1 : this.accept.call(this.element[0], s.currentItem || s.element) ? (this._removeActiveClass(), this._removeHoverClass(), this._trigger("drop", e, this.ui(s)), this.element) : !1) : !1;\n },\n ui: function ui(t) {\n return {\n draggable: t.currentItem || t.element,\n helper: t.helper,\n position: t.position,\n offset: t.positionAbs\n };\n },\n _addHoverClass: function _addHoverClass() {\n this._addClass("ui-droppable-hover");\n },\n _removeHoverClass: function _removeHoverClass() {\n this._removeClass("ui-droppable-hover");\n },\n _addActiveClass: function _addActiveClass() {\n this._addClass("ui-droppable-active");\n },\n _removeActiveClass: function _removeActiveClass() {\n this._removeClass("ui-droppable-active");\n }\n });\n var v = t.ui.intersect = function () {\n function t(t, e, i) {\n return t >= e && e + i > t;\n }\n return function (e, i, s, n) {\n if (!i.offset) return !1;\n var o = (e.positionAbs || e.position.absolute).left + e.margins.left,\n a = (e.positionAbs || e.position.absolute).top + e.margins.top,\n r = o + e.helperProportions.width,\n h = a + e.helperProportions.height,\n l = i.offset.left,\n c = i.offset.top,\n u = l + i.proportions().width,\n d = c + i.proportions().height;\n switch (s) {\n case "fit":\n return o >= l && u >= r && a >= c && d >= h;\n case "intersect":\n return o + e.helperProportions.width / 2 > l && u > r - e.helperProportions.width / 2 && a + e.helperProportions.height / 2 > c && d > h - e.helperProportions.height / 2;\n case "pointer":\n return t(n.pageY, c, i.proportions().height) && t(n.pageX, l, i.proportions().width);\n case "touch":\n return (a >= c && d >= a || h >= c && d >= h || c > a && h > d) && (o >= l && u >= o || r >= l && u >= r || l > o && r > u);\n default:\n return !1;\n }\n };\n }();\n t.ui.ddmanager = {\n current: null,\n droppables: {\n "default": []\n },\n prepareOffsets: function prepareOffsets(e, i) {\n var s,\n n,\n o = t.ui.ddmanager.droppables[e.options.scope] || [],\n a = i ? i.type : null,\n r = (e.currentItem || e.element).find(":data(ui-droppable)").addBack();\n t: for (s = 0; o.length > s; s++) if (!(o[s].options.disabled || e && !o[s].accept.call(o[s].element[0], e.currentItem || e.element))) {\n for (n = 0; r.length > n; n++) if (r[n] === o[s].element[0]) {\n o[s].proportions().height = 0;\n continue t;\n }\n o[s].visible = "none" !== o[s].element.css("display"), o[s].visible && ("mousedown" === a && o[s]._activate.call(o[s], i), o[s].offset = o[s].element.offset(), o[s].proportions({\n width: o[s].element[0].offsetWidth,\n height: o[s].element[0].offsetHeight\n }));\n }\n },\n drop: function drop(e, i) {\n var s = !1;\n return t.each((t.ui.ddmanager.droppables[e.options.scope] || []).slice(), function () {\n this.options && (!this.options.disabled && this.visible && v(e, this, this.options.tolerance, i) && (s = this._drop.call(this, i) || s), !this.options.disabled && this.visible && this.accept.call(this.element[0], e.currentItem || e.element) && (this.isout = !0, this.isover = !1, this._deactivate.call(this, i)));\n }), s;\n },\n dragStart: function dragStart(e, i) {\n e.element.parentsUntil("body").on("scroll.droppable", function () {\n e.options.refreshPositions || t.ui.ddmanager.prepareOffsets(e, i);\n });\n },\n drag: function drag(e, i) {\n e.options.refreshPositions && t.ui.ddmanager.prepareOffsets(e, i), t.each(t.ui.ddmanager.droppables[e.options.scope] || [], function () {\n if (!this.options.disabled && !this.greedyChild && this.visible) {\n var s,\n n,\n o,\n a = v(e, this, this.options.tolerance, i),\n r = !a && this.isover ? "isout" : a && !this.isover ? "isover" : null;\n r && (this.options.greedy && (n = this.options.scope, o = this.element.parents(":data(ui-droppable)").filter(function () {\n return t(this).droppable("instance").options.scope === n;\n }), o.length && (s = t(o[0]).droppable("instance"), s.greedyChild = "isover" === r)), s && "isover" === r && (s.isover = !1, s.isout = !0, s._out.call(s, i)), this[r] = !0, this["isout" === r ? "isover" : "isout"] = !1, this["isover" === r ? "_over" : "_out"].call(this, i), s && "isout" === r && (s.isout = !1, s.isover = !0, s._over.call(s, i)));\n }\n });\n },\n dragStop: function dragStop(e, i) {\n e.element.parentsUntil("body").off("scroll.droppable"), e.options.refreshPositions || t.ui.ddmanager.prepareOffsets(e, i);\n }\n }, t.uiBackCompat !== !1 && t.widget("ui.droppable", t.ui.droppable, {\n options: {\n hoverClass: !1,\n activeClass: !1\n },\n _addActiveClass: function _addActiveClass() {\n this._super(), this.options.activeClass && this.element.addClass(this.options.activeClass);\n },\n _removeActiveClass: function _removeActiveClass() {\n this._super(), this.options.activeClass && this.element.removeClass(this.options.activeClass);\n },\n _addHoverClass: function _addHoverClass() {\n this._super(), this.options.hoverClass && this.element.addClass(this.options.hoverClass);\n },\n _removeHoverClass: function _removeHoverClass() {\n this._super(), this.options.hoverClass && this.element.removeClass(this.options.hoverClass);\n }\n }), t.ui.droppable, t.widget("ui.progressbar", {\n version: "1.12.0",\n options: {\n classes: {\n "ui-progressbar": "ui-corner-all",\n "ui-progressbar-value": "ui-corner-left",\n "ui-progressbar-complete": "ui-corner-right"\n },\n max: 100,\n value: 0,\n change: null,\n complete: null\n },\n min: 0,\n _create: function _create() {\n this.oldValue = this.options.value = this._constrainedValue(), this.element.attr({\n role: "progressbar",\n "aria-valuemin": this.min\n }), this._addClass("ui-progressbar", "ui-widget ui-widget-content"), this.valueDiv = t("<div>").appendTo(this.element), this._addClass(this.valueDiv, "ui-progressbar-value", "ui-widget-header"), this._refreshValue();\n },\n _destroy: function _destroy() {\n this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"), this.valueDiv.remove();\n },\n value: function value(t) {\n return void 0 === t ? this.options.value : (this.options.value = this._constrainedValue(t), this._refreshValue(), void 0);\n },\n _constrainedValue: function _constrainedValue(t) {\n return void 0 === t && (t = this.options.value), this.indeterminate = t === !1, "number" != typeof t && (t = 0), this.indeterminate ? !1 : Math.min(this.options.max, Math.max(this.min, t));\n },\n _setOptions: function _setOptions(t) {\n var e = t.value;\n delete t.value, this._super(t), this.options.value = this._constrainedValue(e), this._refreshValue();\n },\n _setOption: function _setOption(t, e) {\n "max" === t && (e = Math.max(this.min, e)), this._super(t, e);\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._super(t), this.element.attr("aria-disabled", t), this._toggleClass(null, "ui-state-disabled", !!t);\n },\n _percentage: function _percentage() {\n return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min);\n },\n _refreshValue: function _refreshValue() {\n var e = this.options.value,\n i = this._percentage();\n this.valueDiv.toggle(this.indeterminate || e > this.min).width(i.toFixed(0) + "%"), this._toggleClass(this.valueDiv, "ui-progressbar-complete", null, e === this.options.max)._toggleClass("ui-progressbar-indeterminate", null, this.indeterminate), this.indeterminate ? (this.element.removeAttr("aria-valuenow"), this.overlayDiv || (this.overlayDiv = t("<div>").appendTo(this.valueDiv), this._addClass(this.overlayDiv, "ui-progressbar-overlay"))) : (this.element.attr({\n "aria-valuemax": this.options.max,\n "aria-valuenow": e\n }), this.overlayDiv && (this.overlayDiv.remove(), this.overlayDiv = null)), this.oldValue !== e && (this.oldValue = e, this._trigger("change")), e === this.options.max && this._trigger("complete");\n }\n }), t.widget("ui.selectable", t.ui.mouse, {\n version: "1.12.0",\n options: {\n appendTo: "body",\n autoRefresh: !0,\n distance: 0,\n filter: "*",\n tolerance: "touch",\n selected: null,\n selecting: null,\n start: null,\n stop: null,\n unselected: null,\n unselecting: null\n },\n _create: function _create() {\n var e = this;\n this._addClass("ui-selectable"), this.dragged = !1, this.refresh = function () {\n e.elementPos = t(e.element[0]).offset(), e.selectees = t(e.options.filter, e.element[0]), e._addClass(e.selectees, "ui-selectee"), e.selectees.each(function () {\n var i = t(this),\n s = i.offset(),\n n = {\n left: s.left - e.elementPos.left,\n top: s.top - e.elementPos.top\n };\n t.data(this, "selectable-item", {\n element: this,\n $element: i,\n left: n.left,\n top: n.top,\n right: n.left + i.outerWidth(),\n bottom: n.top + i.outerHeight(),\n startselected: !1,\n selected: i.hasClass("ui-selected"),\n selecting: i.hasClass("ui-selecting"),\n unselecting: i.hasClass("ui-unselecting")\n });\n });\n }, this.refresh(), this._mouseInit(), this.helper = t("<div>"), this._addClass(this.helper, "ui-selectable-helper");\n },\n _destroy: function _destroy() {\n this.selectees.removeData("selectable-item"), this._mouseDestroy();\n },\n _mouseStart: function _mouseStart(e) {\n var i = this,\n s = this.options;\n this.opos = [e.pageX, e.pageY], this.elementPos = t(this.element[0]).offset(), this.options.disabled || (this.selectees = t(s.filter, this.element[0]), this._trigger("start", e), t(s.appendTo).append(this.helper), this.helper.css({\n left: e.pageX,\n top: e.pageY,\n width: 0,\n height: 0\n }), s.autoRefresh && this.refresh(), this.selectees.filter(".ui-selected").each(function () {\n var s = t.data(this, "selectable-item");\n s.startselected = !0, e.metaKey || e.ctrlKey || (i._removeClass(s.$element, "ui-selected"), s.selected = !1, i._addClass(s.$element, "ui-unselecting"), s.unselecting = !0, i._trigger("unselecting", e, {\n unselecting: s.element\n }));\n }), t(e.target).parents().addBack().each(function () {\n var s,\n n = t.data(this, "selectable-item");\n return n ? (s = !e.metaKey && !e.ctrlKey || !n.$element.hasClass("ui-selected"), i._removeClass(n.$element, s ? "ui-unselecting" : "ui-selected")._addClass(n.$element, s ? "ui-selecting" : "ui-unselecting"), n.unselecting = !s, n.selecting = s, n.selected = s, s ? i._trigger("selecting", e, {\n selecting: n.element\n }) : i._trigger("unselecting", e, {\n unselecting: n.element\n }), !1) : void 0;\n }));\n },\n _mouseDrag: function _mouseDrag(e) {\n if (this.dragged = !0, !this.options.disabled) {\n var i,\n s = this,\n n = this.options,\n o = this.opos[0],\n a = this.opos[1],\n r = e.pageX,\n h = e.pageY;\n return o > r && (i = r, r = o, o = i), a > h && (i = h, h = a, a = i), this.helper.css({\n left: o,\n top: a,\n width: r - o,\n height: h - a\n }), this.selectees.each(function () {\n var i = t.data(this, "selectable-item"),\n l = !1,\n c = {};\n i && i.element !== s.element[0] && (c.left = i.left + s.elementPos.left, c.right = i.right + s.elementPos.left, c.top = i.top + s.elementPos.top, c.bottom = i.bottom + s.elementPos.top, "touch" === n.tolerance ? l = !(c.left > r || o > c.right || c.top > h || a > c.bottom) : "fit" === n.tolerance && (l = c.left > o && r > c.right && c.top > a && h > c.bottom), l ? (i.selected && (s._removeClass(i.$element, "ui-selected"), i.selected = !1), i.unselecting && (s._removeClass(i.$element, "ui-unselecting"), i.unselecting = !1), i.selecting || (s._addClass(i.$element, "ui-selecting"), i.selecting = !0, s._trigger("selecting", e, {\n selecting: i.element\n }))) : (i.selecting && ((e.metaKey || e.ctrlKey) && i.startselected ? (s._removeClass(i.$element, "ui-selecting"), i.selecting = !1, s._addClass(i.$element, "ui-selected"), i.selected = !0) : (s._removeClass(i.$element, "ui-selecting"), i.selecting = !1, i.startselected && (s._addClass(i.$element, "ui-unselecting"), i.unselecting = !0), s._trigger("unselecting", e, {\n unselecting: i.element\n }))), i.selected && (e.metaKey || e.ctrlKey || i.startselected || (s._removeClass(i.$element, "ui-selected"), i.selected = !1, s._addClass(i.$element, "ui-unselecting"), i.unselecting = !0, s._trigger("unselecting", e, {\n unselecting: i.element\n })))));\n }), !1;\n }\n },\n _mouseStop: function _mouseStop(e) {\n var i = this;\n return this.dragged = !1, t(".ui-unselecting", this.element[0]).each(function () {\n var s = t.data(this, "selectable-item");\n i._removeClass(s.$element, "ui-unselecting"), s.unselecting = !1, s.startselected = !1, i._trigger("unselected", e, {\n unselected: s.element\n });\n }), t(".ui-selecting", this.element[0]).each(function () {\n var s = t.data(this, "selectable-item");\n i._removeClass(s.$element, "ui-selecting")._addClass(s.$element, "ui-selected"), s.selecting = !1, s.selected = !0, s.startselected = !0, i._trigger("selected", e, {\n selected: s.element\n });\n }), this._trigger("stop", e), this.helper.remove(), !1;\n }\n }), t.widget("ui.selectmenu", [t.ui.formResetMixin, {\n version: "1.12.0",\n defaultElement: "<select>",\n options: {\n appendTo: null,\n classes: {\n "ui-selectmenu-button-open": "ui-corner-top",\n "ui-selectmenu-button-closed": "ui-corner-all"\n },\n disabled: null,\n icons: {\n button: "ui-icon-triangle-1-s"\n },\n position: {\n my: "left top",\n at: "left bottom",\n collision: "none"\n },\n width: !1,\n change: null,\n close: null,\n focus: null,\n open: null,\n select: null\n },\n _create: function _create() {\n var e = this.element.uniqueId().attr("id");\n this.ids = {\n element: e,\n button: e + "-button",\n menu: e + "-menu"\n }, this._drawButton(), this._drawMenu(), this._bindFormResetHandler(), this._rendered = !1, this.menuItems = t();\n },\n _drawButton: function _drawButton() {\n var e,\n i = this,\n s = this._parseOption(this.element.find("option:selected"), this.element[0].selectedIndex);\n this.labels = this.element.labels().attr("for", this.ids.button), this._on(this.labels, {\n click: function click(t) {\n this.button.focus(), t.preventDefault();\n }\n }), this.element.hide(), this.button = t("<span>", {\n tabindex: this.options.disabled ? -1 : 0,\n id: this.ids.button,\n role: "combobox",\n "aria-expanded": "false",\n "aria-autocomplete": "list",\n "aria-owns": this.ids.menu,\n "aria-haspopup": "true",\n title: this.element.attr("title")\n }).insertAfter(this.element), this._addClass(this.button, "ui-selectmenu-button ui-selectmenu-button-closed", "ui-button ui-widget"), e = t("<span>").appendTo(this.button), this._addClass(e, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button), this.buttonItem = this._renderButtonItem(s).appendTo(this.button), this.options.width !== !1 && this._resizeButton(), this._on(this.button, this._buttonEvents), this.button.one("focusin", function () {\n i._rendered || i._refreshMenu();\n });\n },\n _drawMenu: function _drawMenu() {\n var e = this;\n this.menu = t("<ul>", {\n "aria-hidden": "true",\n "aria-labelledby": this.ids.button,\n id: this.ids.menu\n }), this.menuWrap = t("<div>").append(this.menu), this._addClass(this.menuWrap, "ui-selectmenu-menu", "ui-front"), this.menuWrap.appendTo(this._appendTo()), this.menuInstance = this.menu.menu({\n classes: {\n "ui-menu": "ui-corner-bottom"\n },\n role: "listbox",\n select: function select(t, i) {\n t.preventDefault(), e._setSelection(), e._select(i.item.data("ui-selectmenu-item"), t);\n },\n focus: function focus(t, i) {\n var s = i.item.data("ui-selectmenu-item");\n null != e.focusIndex && s.index !== e.focusIndex && (e._trigger("focus", t, {\n item: s\n }), e.isOpen || e._select(s, t)), e.focusIndex = s.index, e.button.attr("aria-activedescendant", e.menuItems.eq(s.index).attr("id"));\n }\n }).menu("instance"), this.menuInstance._off(this.menu, "mouseleave"), this.menuInstance._closeOnDocumentClick = function () {\n return !1;\n }, this.menuInstance._isDivider = function () {\n return !1;\n };\n },\n refresh: function refresh() {\n this._refreshMenu(), this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item") || {})), null === this.options.width && this._resizeButton();\n },\n _refreshMenu: function _refreshMenu() {\n var t,\n e = this.element.find("option");\n this.menu.empty(), this._parseOptions(e), this._renderMenu(this.menu, this.items), this.menuInstance.refresh(), this.menuItems = this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"), this._rendered = !0, e.length && (t = this._getSelectedItem(), this.menuInstance.focus(null, t), this._setAria(t.data("ui-selectmenu-item")), this._setOption("disabled", this.element.prop("disabled")));\n },\n open: function open(t) {\n this.options.disabled || (this._rendered ? (this._removeClass(this.menu.find(".ui-state-active"), null, "ui-state-active"), this.menuInstance.focus(null, this._getSelectedItem())) : this._refreshMenu(), this.menuItems.length && (this.isOpen = !0, this._toggleAttr(), this._resizeMenu(), this._position(), this._on(this.document, this._documentClick), this._trigger("open", t)));\n },\n _position: function _position() {\n this.menuWrap.position(t.extend({\n of: this.button\n }, this.options.position));\n },\n close: function close(t) {\n this.isOpen && (this.isOpen = !1, this._toggleAttr(), this.range = null, this._off(this.document), this._trigger("close", t));\n },\n widget: function widget() {\n return this.button;\n },\n menuWidget: function menuWidget() {\n return this.menu;\n },\n _renderButtonItem: function _renderButtonItem(e) {\n var i = t("<span>");\n return this._setText(i, e.label), this._addClass(i, "ui-selectmenu-text"), i;\n },\n _renderMenu: function _renderMenu(e, i) {\n var s = this,\n n = "";\n t.each(i, function (i, o) {\n var a;\n o.optgroup !== n && (a = t("<li>", {\n text: o.optgroup\n }), s._addClass(a, "ui-selectmenu-optgroup", "ui-menu-divider" + (o.element.parent("optgroup").prop("disabled") ? " ui-state-disabled" : "")), a.appendTo(e), n = o.optgroup), s._renderItemData(e, o);\n });\n },\n _renderItemData: function _renderItemData(t, e) {\n return this._renderItem(t, e).data("ui-selectmenu-item", e);\n },\n _renderItem: function _renderItem(e, i) {\n var s = t("<li>"),\n n = t("<div>", {\n title: i.element.attr("title")\n });\n return i.disabled && this._addClass(s, null, "ui-state-disabled"), this._setText(n, i.label), s.append(n).appendTo(e);\n },\n _setText: function _setText(t, e) {\n e ? t.text(e) : t.html(" ");\n },\n _move: function _move(t, e) {\n var i,\n s,\n n = ".ui-menu-item";\n this.isOpen ? i = this.menuItems.eq(this.focusIndex).parent("li") : (i = this.menuItems.eq(this.element[0].selectedIndex).parent("li"), n += ":not(.ui-state-disabled)"), s = "first" === t || "last" === t ? i["first" === t ? "prevAll" : "nextAll"](n).eq(-1) : i[t + "All"](n).eq(0), s.length && this.menuInstance.focus(e, s);\n },\n _getSelectedItem: function _getSelectedItem() {\n return this.menuItems.eq(this.element[0].selectedIndex).parent("li");\n },\n _toggle: function _toggle(t) {\n this[this.isOpen ? "close" : "open"](t);\n },\n _setSelection: function _setSelection() {\n var t;\n this.range && (window.getSelection ? (t = window.getSelection(), t.removeAllRanges(), t.addRange(this.range)) : this.range.select(), this.button.focus());\n },\n _documentClick: {\n mousedown: function mousedown(e) {\n this.isOpen && (t(e.target).closest(".ui-selectmenu-menu, #" + t.ui.escapeSelector(this.ids.button)).length || this.close(e));\n }\n },\n _buttonEvents: {\n mousedown: function mousedown() {\n var t;\n window.getSelection ? (t = window.getSelection(), t.rangeCount && (this.range = t.getRangeAt(0))) : this.range = document.selection.createRange();\n },\n click: function click(t) {\n this._setSelection(), this._toggle(t);\n },\n keydown: function keydown(e) {\n var i = !0;\n switch (e.keyCode) {\n case t.ui.keyCode.TAB:\n case t.ui.keyCode.ESCAPE:\n this.close(e), i = !1;\n break;\n case t.ui.keyCode.ENTER:\n this.isOpen && this._selectFocusedItem(e);\n break;\n case t.ui.keyCode.UP:\n e.altKey ? this._toggle(e) : this._move("prev", e);\n break;\n case t.ui.keyCode.DOWN:\n e.altKey ? this._toggle(e) : this._move("next", e);\n break;\n case t.ui.keyCode.SPACE:\n this.isOpen ? this._selectFocusedItem(e) : this._toggle(e);\n break;\n case t.ui.keyCode.LEFT:\n this._move("prev", e);\n break;\n case t.ui.keyCode.RIGHT:\n this._move("next", e);\n break;\n case t.ui.keyCode.HOME:\n case t.ui.keyCode.PAGE_UP:\n this._move("first", e);\n break;\n case t.ui.keyCode.END:\n case t.ui.keyCode.PAGE_DOWN:\n this._move("last", e);\n break;\n default:\n this.menu.trigger(e), i = !1;\n }\n i && e.preventDefault();\n }\n },\n _selectFocusedItem: function _selectFocusedItem(t) {\n var e = this.menuItems.eq(this.focusIndex).parent("li");\n e.hasClass("ui-state-disabled") || this._select(e.data("ui-selectmenu-item"), t);\n },\n _select: function _select(t, e) {\n var i = this.element[0].selectedIndex;\n this.element[0].selectedIndex = t.index, this.buttonItem.replaceWith(this.buttonItem = this._renderButtonItem(t)), this._setAria(t), this._trigger("select", e, {\n item: t\n }), t.index !== i && this._trigger("change", e, {\n item: t\n }), this.close(e);\n },\n _setAria: function _setAria(t) {\n var e = this.menuItems.eq(t.index).attr("id");\n this.button.attr({\n "aria-labelledby": e,\n "aria-activedescendant": e\n }), this.menu.attr("aria-activedescendant", e);\n },\n _setOption: function _setOption(t, e) {\n if ("icons" === t) {\n var i = this.button.find("span.ui-icon");\n this._removeClass(i, null, this.options.icons.button)._addClass(i, null, e.button);\n }\n this._super(t, e), "appendTo" === t && this.menuWrap.appendTo(this._appendTo()), "width" === t && this._resizeButton();\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._super(t), this.menuInstance.option("disabled", t), this.button.attr("aria-disabled", t), this._toggleClass(this.button, null, "ui-state-disabled", t), this.element.prop("disabled", t), t ? (this.button.attr("tabindex", -1), this.close()) : this.button.attr("tabindex", 0);\n },\n _appendTo: function _appendTo() {\n var e = this.options.appendTo;\n return e && (e = e.jquery || e.nodeType ? t(e) : this.document.find(e).eq(0)), e && e[0] || (e = this.element.closest(".ui-front, dialog")), e.length || (e = this.document[0].body), e;\n },\n _toggleAttr: function _toggleAttr() {\n this.button.attr("aria-expanded", this.isOpen), this._removeClass(this.button, "ui-selectmenu-button-" + (this.isOpen ? "closed" : "open"))._addClass(this.button, "ui-selectmenu-button-" + (this.isOpen ? "open" : "closed"))._toggleClass(this.menuWrap, "ui-selectmenu-open", null, this.isOpen), this.menu.attr("aria-hidden", !this.isOpen);\n },\n _resizeButton: function _resizeButton() {\n var t = this.options.width;\n return t === !1 ? (this.button.css("width", ""), void 0) : (null === t && (t = this.element.show().outerWidth(), this.element.hide()), this.button.outerWidth(t), void 0);\n },\n _resizeMenu: function _resizeMenu() {\n this.menu.outerWidth(Math.max(this.button.outerWidth(), this.menu.width("").outerWidth() + 1));\n },\n _getCreateOptions: function _getCreateOptions() {\n var t = this._super();\n return t.disabled = this.element.prop("disabled"), t;\n },\n _parseOptions: function _parseOptions(e) {\n var i = this,\n s = [];\n e.each(function (e, n) {\n s.push(i._parseOption(t(n), e));\n }), this.items = s;\n },\n _parseOption: function _parseOption(t, e) {\n var i = t.parent("optgroup");\n return {\n element: t,\n index: e,\n value: t.val(),\n label: t.text(),\n optgroup: i.attr("label") || "",\n disabled: i.prop("disabled") || t.prop("disabled")\n };\n },\n _destroy: function _destroy() {\n this._unbindFormResetHandler(), this.menuWrap.remove(), this.button.remove(), this.element.show(), this.element.removeUniqueId(), this.labels.attr("for", this.ids.element);\n }\n }]), t.widget("ui.slider", t.ui.mouse, {\n version: "1.12.0",\n widgetEventPrefix: "slide",\n options: {\n animate: !1,\n classes: {\n "ui-slider": "ui-corner-all",\n "ui-slider-handle": "ui-corner-all",\n "ui-slider-range": "ui-corner-all ui-widget-header"\n },\n distance: 0,\n max: 100,\n min: 0,\n orientation: "horizontal",\n range: !1,\n step: 1,\n value: 0,\n values: null,\n change: null,\n slide: null,\n start: null,\n stop: null\n },\n numPages: 5,\n _create: function _create() {\n this._keySliding = !1, this._mouseSliding = !1, this._animateOff = !0, this._handleIndex = null, this._detectOrientation(), this._mouseInit(), this._calculateNewMax(), this._addClass("ui-slider ui-slider-" + this.orientation, "ui-widget ui-widget-content"), this._refresh(), this._animateOff = !1;\n },\n _refresh: function _refresh() {\n this._createRange(), this._createHandles(), this._setupEvents(), this._refreshValue();\n },\n _createHandles: function _createHandles() {\n var e,\n i,\n s = this.options,\n n = this.element.find(".ui-slider-handle"),\n o = "<span tabindex=\'0\'></span>",\n a = [];\n for (i = s.values && s.values.length || 1, n.length > i && (n.slice(i).remove(), n = n.slice(0, i)), e = n.length; i > e; e++) a.push(o);\n this.handles = n.add(t(a.join("")).appendTo(this.element)), this._addClass(this.handles, "ui-slider-handle", "ui-state-default"), this.handle = this.handles.eq(0), this.handles.each(function (e) {\n t(this).data("ui-slider-handle-index", e);\n });\n },\n _createRange: function _createRange() {\n var e = this.options;\n e.range ? (e.range === !0 && (e.values ? e.values.length && 2 !== e.values.length ? e.values = [e.values[0], e.values[0]] : t.isArray(e.values) && (e.values = e.values.slice(0)) : e.values = [this._valueMin(), this._valueMin()]), this.range && this.range.length ? (this._removeClass(this.range, "ui-slider-range-min ui-slider-range-max"), this.range.css({\n left: "",\n bottom: ""\n })) : (this.range = t("<div>").appendTo(this.element), this._addClass(this.range, "ui-slider-range")), ("min" === e.range || "max" === e.range) && this._addClass(this.range, "ui-slider-range-" + e.range)) : (this.range && this.range.remove(), this.range = null);\n },\n _setupEvents: function _setupEvents() {\n this._off(this.handles), this._on(this.handles, this._handleEvents), this._hoverable(this.handles), this._focusable(this.handles);\n },\n _destroy: function _destroy() {\n this.handles.remove(), this.range && this.range.remove(), this._mouseDestroy();\n },\n _mouseCapture: function _mouseCapture(e) {\n var i,\n s,\n n,\n o,\n a,\n r,\n h,\n l,\n c = this,\n u = this.options;\n return u.disabled ? !1 : (this.elementSize = {\n width: this.element.outerWidth(),\n height: this.element.outerHeight()\n }, this.elementOffset = this.element.offset(), i = {\n x: e.pageX,\n y: e.pageY\n }, s = this._normValueFromMouse(i), n = this._valueMax() - this._valueMin() + 1, this.handles.each(function (e) {\n var i = Math.abs(s - c.values(e));\n (n > i || n === i && (e === c._lastChangedValue || c.values(e) === u.min)) && (n = i, o = t(this), a = e);\n }), r = this._start(e, a), r === !1 ? !1 : (this._mouseSliding = !0, this._handleIndex = a, this._addClass(o, null, "ui-state-active"), o.trigger("focus"), h = o.offset(), l = !t(e.target).parents().addBack().is(".ui-slider-handle"), this._clickOffset = l ? {\n left: 0,\n top: 0\n } : {\n left: e.pageX - h.left - o.width() / 2,\n top: e.pageY - h.top - o.height() / 2 - (parseInt(o.css("borderTopWidth"), 10) || 0) - (parseInt(o.css("borderBottomWidth"), 10) || 0) + (parseInt(o.css("marginTop"), 10) || 0)\n }, this.handles.hasClass("ui-state-hover") || this._slide(e, a, s), this._animateOff = !0, !0));\n },\n _mouseStart: function _mouseStart() {\n return !0;\n },\n _mouseDrag: function _mouseDrag(t) {\n var e = {\n x: t.pageX,\n y: t.pageY\n },\n i = this._normValueFromMouse(e);\n return this._slide(t, this._handleIndex, i), !1;\n },\n _mouseStop: function _mouseStop(t) {\n return this._removeClass(this.handles, null, "ui-state-active"), this._mouseSliding = !1, this._stop(t, this._handleIndex), this._change(t, this._handleIndex), this._handleIndex = null, this._clickOffset = null, this._animateOff = !1, !1;\n },\n _detectOrientation: function _detectOrientation() {\n this.orientation = "vertical" === this.options.orientation ? "vertical" : "horizontal";\n },\n _normValueFromMouse: function _normValueFromMouse(t) {\n var e, i, s, n, o;\n return "horizontal" === this.orientation ? (e = this.elementSize.width, i = t.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (e = this.elementSize.height, i = t.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0)), s = i / e, s > 1 && (s = 1), 0 > s && (s = 0), "vertical" === this.orientation && (s = 1 - s), n = this._valueMax() - this._valueMin(), o = this._valueMin() + s * n, this._trimAlignValue(o);\n },\n _uiHash: function _uiHash(t, e, i) {\n var s = {\n handle: this.handles[t],\n handleIndex: t,\n value: void 0 !== e ? e : this.value()\n };\n return this._hasMultipleValues() && (s.value = void 0 !== e ? e : this.values(t), s.values = i || this.values()), s;\n },\n _hasMultipleValues: function _hasMultipleValues() {\n return this.options.values && this.options.values.length;\n },\n _start: function _start(t, e) {\n return this._trigger("start", t, this._uiHash(e));\n },\n _slide: function _slide(t, e, i) {\n var s,\n n,\n o = this.value(),\n a = this.values();\n this._hasMultipleValues() && (n = this.values(e ? 0 : 1), o = this.values(e), 2 === this.options.values.length && this.options.range === !0 && (i = 0 === e ? Math.min(n, i) : Math.max(n, i)), a[e] = i), i !== o && (s = this._trigger("slide", t, this._uiHash(e, i, a)), s !== !1 && (this._hasMultipleValues() ? this.values(e, i) : this.value(i)));\n },\n _stop: function _stop(t, e) {\n this._trigger("stop", t, this._uiHash(e));\n },\n _change: function _change(t, e) {\n this._keySliding || this._mouseSliding || (this._lastChangedValue = e, this._trigger("change", t, this._uiHash(e)));\n },\n value: function value(t) {\n return arguments.length ? (this.options.value = this._trimAlignValue(t), this._refreshValue(), this._change(null, 0), void 0) : this._value();\n },\n values: function values(e, i) {\n var s, n, o;\n if (arguments.length > 1) return this.options.values[e] = this._trimAlignValue(i), this._refreshValue(), this._change(null, e), void 0;\n if (!arguments.length) return this._values();\n if (!t.isArray(arguments[0])) return this._hasMultipleValues() ? this._values(e) : this.value();\n for (s = this.options.values, n = arguments[0], o = 0; s.length > o; o += 1) s[o] = this._trimAlignValue(n[o]), this._change(null, o);\n this._refreshValue();\n },\n _setOption: function _setOption(e, i) {\n var s,\n n = 0;\n switch ("range" === e && this.options.range === !0 && ("min" === i ? (this.options.value = this._values(0), this.options.values = null) : "max" === i && (this.options.value = this._values(this.options.values.length - 1), this.options.values = null)), t.isArray(this.options.values) && (n = this.options.values.length), this._super(e, i), e) {\n case "orientation":\n this._detectOrientation(), this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-" + this.orientation), this._refreshValue(), this.options.range && this._refreshRange(i), this.handles.css("horizontal" === i ? "bottom" : "left", "");\n break;\n case "value":\n this._animateOff = !0, this._refreshValue(), this._change(null, 0), this._animateOff = !1;\n break;\n case "values":\n for (this._animateOff = !0, this._refreshValue(), s = n - 1; s >= 0; s--) this._change(null, s);\n this._animateOff = !1;\n break;\n case "step":\n case "min":\n case "max":\n this._animateOff = !0, this._calculateNewMax(), this._refreshValue(), this._animateOff = !1;\n break;\n case "range":\n this._animateOff = !0, this._refresh(), this._animateOff = !1;\n }\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._super(t), this._toggleClass(null, "ui-state-disabled", !!t);\n },\n _value: function _value() {\n var t = this.options.value;\n return t = this._trimAlignValue(t);\n },\n _values: function _values(t) {\n var e, i, s;\n if (arguments.length) return e = this.options.values[t], e = this._trimAlignValue(e);\n if (this._hasMultipleValues()) {\n for (i = this.options.values.slice(), s = 0; i.length > s; s += 1) i[s] = this._trimAlignValue(i[s]);\n return i;\n }\n return [];\n },\n _trimAlignValue: function _trimAlignValue(t) {\n if (this._valueMin() >= t) return this._valueMin();\n if (t >= this._valueMax()) return this._valueMax();\n var e = this.options.step > 0 ? this.options.step : 1,\n i = (t - this._valueMin()) % e,\n s = t - i;\n return 2 * Math.abs(i) >= e && (s += i > 0 ? e : -e), parseFloat(s.toFixed(5));\n },\n _calculateNewMax: function _calculateNewMax() {\n var t = this.options.max,\n e = this._valueMin(),\n i = this.options.step,\n s = Math.round((t - e) / i) * i;\n t = s + e, t > this.options.max && (t -= i), this.max = parseFloat(t.toFixed(this._precision()));\n },\n _precision: function _precision() {\n var t = this._precisionOf(this.options.step);\n return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options.min))), t;\n },\n _precisionOf: function _precisionOf(t) {\n var e = "" + t,\n i = e.indexOf(".");\n return -1 === i ? 0 : e.length - i - 1;\n },\n _valueMin: function _valueMin() {\n return this.options.min;\n },\n _valueMax: function _valueMax() {\n return this.max;\n },\n _refreshRange: function _refreshRange(t) {\n "vertical" === t && this.range.css({\n width: "",\n left: ""\n }), "horizontal" === t && this.range.css({\n height: "",\n bottom: ""\n });\n },\n _refreshValue: function _refreshValue() {\n var e,\n i,\n s,\n n,\n o,\n a = this.options.range,\n r = this.options,\n h = this,\n l = this._animateOff ? !1 : r.animate,\n c = {};\n this._hasMultipleValues() ? this.handles.each(function (s) {\n i = 100 * ((h.values(s) - h._valueMin()) / (h._valueMax() - h._valueMin())), c["horizontal" === h.orientation ? "left" : "bottom"] = i + "%", t(this).stop(1, 1)[l ? "animate" : "css"](c, r.animate), h.options.range === !0 && ("horizontal" === h.orientation ? (0 === s && h.range.stop(1, 1)[l ? "animate" : "css"]({\n left: i + "%"\n }, r.animate), 1 === s && h.range[l ? "animate" : "css"]({\n width: i - e + "%"\n }, {\n queue: !1,\n duration: r.animate\n })) : (0 === s && h.range.stop(1, 1)[l ? "animate" : "css"]({\n bottom: i + "%"\n }, r.animate), 1 === s && h.range[l ? "animate" : "css"]({\n height: i - e + "%"\n }, {\n queue: !1,\n duration: r.animate\n }))), e = i;\n }) : (s = this.value(), n = this._valueMin(), o = this._valueMax(), i = o !== n ? 100 * ((s - n) / (o - n)) : 0, c["horizontal" === this.orientation ? "left" : "bottom"] = i + "%", this.handle.stop(1, 1)[l ? "animate" : "css"](c, r.animate), "min" === a && "horizontal" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({\n width: i + "%"\n }, r.animate), "max" === a && "horizontal" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({\n width: 100 - i + "%"\n }, r.animate), "min" === a && "vertical" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({\n height: i + "%"\n }, r.animate), "max" === a && "vertical" === this.orientation && this.range.stop(1, 1)[l ? "animate" : "css"]({\n height: 100 - i + "%"\n }, r.animate));\n },\n _handleEvents: {\n keydown: function keydown(e) {\n var i,\n s,\n n,\n o,\n a = t(e.target).data("ui-slider-handle-index");\n switch (e.keyCode) {\n case t.ui.keyCode.HOME:\n case t.ui.keyCode.END:\n case t.ui.keyCode.PAGE_UP:\n case t.ui.keyCode.PAGE_DOWN:\n case t.ui.keyCode.UP:\n case t.ui.keyCode.RIGHT:\n case t.ui.keyCode.DOWN:\n case t.ui.keyCode.LEFT:\n if (e.preventDefault(), !this._keySliding && (this._keySliding = !0, this._addClass(t(e.target), null, "ui-state-active"), i = this._start(e, a), i === !1)) return;\n }\n switch (o = this.options.step, s = n = this._hasMultipleValues() ? this.values(a) : this.value(), e.keyCode) {\n case t.ui.keyCode.HOME:\n n = this._valueMin();\n break;\n case t.ui.keyCode.END:\n n = this._valueMax();\n break;\n case t.ui.keyCode.PAGE_UP:\n n = this._trimAlignValue(s + (this._valueMax() - this._valueMin()) / this.numPages);\n break;\n case t.ui.keyCode.PAGE_DOWN:\n n = this._trimAlignValue(s - (this._valueMax() - this._valueMin()) / this.numPages);\n break;\n case t.ui.keyCode.UP:\n case t.ui.keyCode.RIGHT:\n if (s === this._valueMax()) return;\n n = this._trimAlignValue(s + o);\n break;\n case t.ui.keyCode.DOWN:\n case t.ui.keyCode.LEFT:\n if (s === this._valueMin()) return;\n n = this._trimAlignValue(s - o);\n }\n this._slide(e, a, n);\n },\n keyup: function keyup(e) {\n var i = t(e.target).data("ui-slider-handle-index");\n this._keySliding && (this._keySliding = !1, this._stop(e, i), this._change(e, i), this._removeClass(t(e.target), null, "ui-state-active"));\n }\n }\n }), t.widget("ui.sortable", t.ui.mouse, {\n version: "1.12.0",\n widgetEventPrefix: "sort",\n ready: !1,\n options: {\n appendTo: "parent",\n axis: !1,\n connectWith: !1,\n containment: !1,\n cursor: "auto",\n cursorAt: !1,\n dropOnEmpty: !0,\n forcePlaceholderSize: !1,\n forceHelperSize: !1,\n grid: !1,\n handle: !1,\n helper: "original",\n items: "> *",\n opacity: !1,\n placeholder: !1,\n revert: !1,\n scroll: !0,\n scrollSensitivity: 20,\n scrollSpeed: 20,\n scope: "default",\n tolerance: "intersect",\n zIndex: 1e3,\n activate: null,\n beforeStop: null,\n change: null,\n deactivate: null,\n out: null,\n over: null,\n receive: null,\n remove: null,\n sort: null,\n start: null,\n stop: null,\n update: null\n },\n _isOverAxis: function _isOverAxis(t, e, i) {\n return t >= e && e + i > t;\n },\n _isFloating: function _isFloating(t) {\n return /left|right/.test(t.css("float")) || /inline|table-cell/.test(t.css("display"));\n },\n _create: function _create() {\n this.containerCache = {}, this._addClass("ui-sortable"), this.refresh(), this.offset = this.element.offset(), this._mouseInit(), this._setHandleClassName(), this.ready = !0;\n },\n _setOption: function _setOption(t, e) {\n this._super(t, e), "handle" === t && this._setHandleClassName();\n },\n _setHandleClassName: function _setHandleClassName() {\n var e = this;\n this._removeClass(this.element.find(".ui-sortable-handle"), "ui-sortable-handle"), t.each(this.items, function () {\n e._addClass(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item, "ui-sortable-handle");\n });\n },\n _destroy: function _destroy() {\n this._mouseDestroy();\n for (var t = this.items.length - 1; t >= 0; t--) this.items[t].item.removeData(this.widgetName + "-item");\n return this;\n },\n _mouseCapture: function _mouseCapture(e, i) {\n var s = null,\n n = !1,\n o = this;\n return this.reverting ? !1 : this.options.disabled || "static" === this.options.type ? !1 : (this._refreshItems(e), t(e.target).parents().each(function () {\n return t.data(this, o.widgetName + "-item") === o ? (s = t(this), !1) : void 0;\n }), t.data(e.target, o.widgetName + "-item") === o && (s = t(e.target)), s ? !this.options.handle || i || (t(this.options.handle, s).find("*").addBack().each(function () {\n this === e.target && (n = !0);\n }), n) ? (this.currentItem = s, this._removeCurrentsFromItems(), !0) : !1 : !1);\n },\n _mouseStart: function _mouseStart(e, i, s) {\n var n,\n o,\n a = this.options;\n if (this.currentContainer = this, this.refreshPositions(), this.helper = this._createHelper(e), this._cacheHelperProportions(), this._cacheMargins(), this.scrollParent = this.helper.scrollParent(), this.offset = this.currentItem.offset(), this.offset = {\n top: this.offset.top - this.margins.top,\n left: this.offset.left - this.margins.left\n }, t.extend(this.offset, {\n click: {\n left: e.pageX - this.offset.left,\n top: e.pageY - this.offset.top\n },\n parent: this._getParentOffset(),\n relative: this._getRelativeOffset()\n }), this.helper.css("position", "absolute"), this.cssPosition = this.helper.css("position"), this.originalPosition = this._generatePosition(e), this.originalPageX = e.pageX, this.originalPageY = e.pageY, a.cursorAt && this._adjustOffsetFromHelper(a.cursorAt), this.domPosition = {\n prev: this.currentItem.prev()[0],\n parent: this.currentItem.parent()[0]\n }, this.helper[0] !== this.currentItem[0] && this.currentItem.hide(), this._createPlaceholder(), a.containment && this._setContainment(), a.cursor && "auto" !== a.cursor && (o = this.document.find("body"), this.storedCursor = o.css("cursor"), o.css("cursor", a.cursor), this.storedStylesheet = t("<style>*{ cursor: " + a.cursor + " !important; }</style>").appendTo(o)), a.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", a.opacity)), a.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", a.zIndex)), this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName && (this.overflowOffset = this.scrollParent.offset()), this._trigger("start", e, this._uiHash()), this._preserveHelperProportions || this._cacheHelperProportions(), !s) for (n = this.containers.length - 1; n >= 0; n--) this.containers[n]._trigger("activate", e, this._uiHash(this));\n return t.ui.ddmanager && (t.ui.ddmanager.current = this), t.ui.ddmanager && !a.dropBehaviour && t.ui.ddmanager.prepareOffsets(this, e), this.dragging = !0, this._addClass(this.helper, "ui-sortable-helper"), this._mouseDrag(e), !0;\n },\n _mouseDrag: function _mouseDrag(e) {\n var i,\n s,\n n,\n o,\n a = this.options,\n r = !1;\n for (this.position = this._generatePosition(e), this.positionAbs = this._convertPositionTo("absolute"), this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs), this.options.scroll && (this.scrollParent[0] !== this.document[0] && "HTML" !== this.scrollParent[0].tagName ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - e.pageY < a.scrollSensitivity ? this.scrollParent[0].scrollTop = r = this.scrollParent[0].scrollTop + a.scrollSpeed : e.pageY - this.overflowOffset.top < a.scrollSensitivity && (this.scrollParent[0].scrollTop = r = this.scrollParent[0].scrollTop - a.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - e.pageX < a.scrollSensitivity ? this.scrollParent[0].scrollLeft = r = this.scrollParent[0].scrollLeft + a.scrollSpeed : e.pageX - this.overflowOffset.left < a.scrollSensitivity && (this.scrollParent[0].scrollLeft = r = this.scrollParent[0].scrollLeft - a.scrollSpeed)) : (e.pageY - this.document.scrollTop() < a.scrollSensitivity ? r = this.document.scrollTop(this.document.scrollTop() - a.scrollSpeed) : this.window.height() - (e.pageY - this.document.scrollTop()) < a.scrollSensitivity && (r = this.document.scrollTop(this.document.scrollTop() + a.scrollSpeed)), e.pageX - this.document.scrollLeft() < a.scrollSensitivity ? r = this.document.scrollLeft(this.document.scrollLeft() - a.scrollSpeed) : this.window.width() - (e.pageX - this.document.scrollLeft()) < a.scrollSensitivity && (r = this.document.scrollLeft(this.document.scrollLeft() + a.scrollSpeed))), r !== !1 && t.ui.ddmanager && !a.dropBehaviour && t.ui.ddmanager.prepareOffsets(this, e)), this.positionAbs = this._convertPositionTo("absolute"), this.options.axis && "y" === this.options.axis || (this.helper[0].style.left = this.position.left + "px"), this.options.axis && "x" === this.options.axis || (this.helper[0].style.top = this.position.top + "px"), i = this.items.length - 1; i >= 0; i--) if (s = this.items[i], n = s.item[0], o = this._intersectsWithPointer(s), o && s.instance === this.currentContainer && n !== this.currentItem[0] && this.placeholder[1 === o ? "next" : "prev"]()[0] !== n && !t.contains(this.placeholder[0], n) && ("semi-dynamic" === this.options.type ? !t.contains(this.element[0], n) : !0)) {\n if (this.direction = 1 === o ? "down" : "up", "pointer" !== this.options.tolerance && !this._intersectsWithSides(s)) break;\n this._rearrange(e, s), this._trigger("change", e, this._uiHash());\n break;\n }\n return this._contactContainers(e), t.ui.ddmanager && t.ui.ddmanager.drag(this, e), this._trigger("sort", e, this._uiHash()), this.lastPositionAbs = this.positionAbs, !1;\n },\n _mouseStop: function _mouseStop(e, i) {\n if (e) {\n if (t.ui.ddmanager && !this.options.dropBehaviour && t.ui.ddmanager.drop(this, e), this.options.revert) {\n var s = this,\n n = this.placeholder.offset(),\n o = this.options.axis,\n a = {};\n o && "x" !== o || (a.left = n.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollLeft)), o && "y" !== o || (a.top = n.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === this.document[0].body ? 0 : this.offsetParent[0].scrollTop)), this.reverting = !0, t(this.helper).animate(a, parseInt(this.options.revert, 10) || 500, function () {\n s._clear(e);\n });\n } else this._clear(e, i);\n return !1;\n }\n },\n cancel: function cancel() {\n if (this.dragging) {\n this._mouseUp({\n target: null\n }), "original" === this.options.helper ? (this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper")) : this.currentItem.show();\n for (var e = this.containers.length - 1; e >= 0; e--) this.containers[e]._trigger("deactivate", null, this._uiHash(this)), this.containers[e].containerCache.over && (this.containers[e]._trigger("out", null, this._uiHash(this)), this.containers[e].containerCache.over = 0);\n }\n return this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), "original" !== this.options.helper && this.helper && this.helper[0].parentNode && this.helper.remove(), t.extend(this, {\n helper: null,\n dragging: !1,\n reverting: !1,\n _noFinalSort: null\n }), this.domPosition.prev ? t(this.domPosition.prev).after(this.currentItem) : t(this.domPosition.parent).prepend(this.currentItem)), this;\n },\n serialize: function serialize(e) {\n var i = this._getItemsAsjQuery(e && e.connected),\n s = [];\n return e = e || {}, t(i).each(function () {\n var i = (t(e.item || this).attr(e.attribute || "id") || "").match(e.expression || /(.+)[\\-=_](.+)/);\n i && s.push((e.key || i[1] + "[]") + "=" + (e.key && e.expression ? i[1] : i[2]));\n }), !s.length && e.key && s.push(e.key + "="), s.join("&");\n },\n toArray: function toArray(e) {\n var i = this._getItemsAsjQuery(e && e.connected),\n s = [];\n return e = e || {}, i.each(function () {\n s.push(t(e.item || this).attr(e.attribute || "id") || "");\n }), s;\n },\n _intersectsWith: function _intersectsWith(t) {\n var e = this.positionAbs.left,\n i = e + this.helperProportions.width,\n s = this.positionAbs.top,\n n = s + this.helperProportions.height,\n o = t.left,\n a = o + t.width,\n r = t.top,\n h = r + t.height,\n l = this.offset.click.top,\n c = this.offset.click.left,\n u = "x" === this.options.axis || s + l > r && h > s + l,\n d = "y" === this.options.axis || e + c > o && a > e + c,\n p = u && d;\n return "pointer" === this.options.tolerance || this.options.forcePointerForContainers || "pointer" !== this.options.tolerance && this.helperProportions[this.floating ? "width" : "height"] > t[this.floating ? "width" : "height"] ? p : e + this.helperProportions.width / 2 > o && a > i - this.helperProportions.width / 2 && s + this.helperProportions.height / 2 > r && h > n - this.helperProportions.height / 2;\n },\n _intersectsWithPointer: function _intersectsWithPointer(t) {\n var e,\n i,\n s = "x" === this.options.axis || this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top, t.height),\n n = "y" === this.options.axis || this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left, t.width),\n o = s && n;\n return o ? (e = this._getDragVerticalDirection(), i = this._getDragHorizontalDirection(), this.floating ? "right" === i || "down" === e ? 2 : 1 : e && ("down" === e ? 2 : 1)) : !1;\n },\n _intersectsWithSides: function _intersectsWithSides(t) {\n var e = this._isOverAxis(this.positionAbs.top + this.offset.click.top, t.top + t.height / 2, t.height),\n i = this._isOverAxis(this.positionAbs.left + this.offset.click.left, t.left + t.width / 2, t.width),\n s = this._getDragVerticalDirection(),\n n = this._getDragHorizontalDirection();\n return this.floating && n ? "right" === n && i || "left" === n && !i : s && ("down" === s && e || "up" === s && !e);\n },\n _getDragVerticalDirection: function _getDragVerticalDirection() {\n var t = this.positionAbs.top - this.lastPositionAbs.top;\n return 0 !== t && (t > 0 ? "down" : "up");\n },\n _getDragHorizontalDirection: function _getDragHorizontalDirection() {\n var t = this.positionAbs.left - this.lastPositionAbs.left;\n return 0 !== t && (t > 0 ? "right" : "left");\n },\n refresh: function refresh(t) {\n return this._refreshItems(t), this._setHandleClassName(), this.refreshPositions(), this;\n },\n _connectWith: function _connectWith() {\n var t = this.options;\n return t.connectWith.constructor === String ? [t.connectWith] : t.connectWith;\n },\n _getItemsAsjQuery: function _getItemsAsjQuery(e) {\n function i() {\n r.push(this);\n }\n var s,\n n,\n o,\n a,\n r = [],\n h = [],\n l = this._connectWith();\n if (l && e) for (s = l.length - 1; s >= 0; s--) for (o = t(l[s], this.document[0]), n = o.length - 1; n >= 0; n--) a = t.data(o[n], this.widgetFullName), a && a !== this && !a.options.disabled && h.push([t.isFunction(a.options.items) ? a.options.items.call(a.element) : t(a.options.items, a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), a]);\n for (h.push([t.isFunction(this.options.items) ? this.options.items.call(this.element, null, {\n options: this.options,\n item: this.currentItem\n }) : t(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]), s = h.length - 1; s >= 0; s--) h[s][0].each(i);\n return t(r);\n },\n _removeCurrentsFromItems: function _removeCurrentsFromItems() {\n var e = this.currentItem.find(":data(" + this.widgetName + "-item)");\n this.items = t.grep(this.items, function (t) {\n for (var i = 0; e.length > i; i++) if (e[i] === t.item[0]) return !1;\n return !0;\n });\n },\n _refreshItems: function _refreshItems(e) {\n this.items = [], this.containers = [this];\n var i,\n s,\n n,\n o,\n a,\n r,\n h,\n l,\n c = this.items,\n u = [[t.isFunction(this.options.items) ? this.options.items.call(this.element[0], e, {\n item: this.currentItem\n }) : t(this.options.items, this.element), this]],\n d = this._connectWith();\n if (d && this.ready) for (i = d.length - 1; i >= 0; i--) for (n = t(d[i], this.document[0]), s = n.length - 1; s >= 0; s--) o = t.data(n[s], this.widgetFullName), o && o !== this && !o.options.disabled && (u.push([t.isFunction(o.options.items) ? o.options.items.call(o.element[0], e, {\n item: this.currentItem\n }) : t(o.options.items, o.element), o]), this.containers.push(o));\n for (i = u.length - 1; i >= 0; i--) for (a = u[i][1], r = u[i][0], s = 0, l = r.length; l > s; s++) h = t(r[s]), h.data(this.widgetName + "-item", a), c.push({\n item: h,\n instance: a,\n width: 0,\n height: 0,\n left: 0,\n top: 0\n });\n },\n refreshPositions: function refreshPositions(e) {\n this.floating = this.items.length ? "x" === this.options.axis || this._isFloating(this.items[0].item) : !1, this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset());\n var i, s, n, o;\n for (i = this.items.length - 1; i >= 0; i--) s = this.items[i], s.instance !== this.currentContainer && this.currentContainer && s.item[0] !== this.currentItem[0] || (n = this.options.toleranceElement ? t(this.options.toleranceElement, s.item) : s.item, e || (s.width = n.outerWidth(), s.height = n.outerHeight()), o = n.offset(), s.left = o.left, s.top = o.top);\n if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);else for (i = this.containers.length - 1; i >= 0; i--) o = this.containers[i].element.offset(), this.containers[i].containerCache.left = o.left, this.containers[i].containerCache.top = o.top, this.containers[i].containerCache.width = this.containers[i].element.outerWidth(), this.containers[i].containerCache.height = this.containers[i].element.outerHeight();\n return this;\n },\n _createPlaceholder: function _createPlaceholder(e) {\n e = e || this;\n var i,\n s = e.options;\n s.placeholder && s.placeholder.constructor !== String || (i = s.placeholder, s.placeholder = {\n element: function element() {\n var s = e.currentItem[0].nodeName.toLowerCase(),\n n = t("<" + s + ">", e.document[0]);\n return e._addClass(n, "ui-sortable-placeholder", i || e.currentItem[0].className)._removeClass(n, "ui-sortable-helper"), "tbody" === s ? e._createTrPlaceholder(e.currentItem.find("tr").eq(0), t("<tr>", e.document[0]).appendTo(n)) : "tr" === s ? e._createTrPlaceholder(e.currentItem, n) : "img" === s && n.attr("src", e.currentItem.attr("src")), i || n.css("visibility", "hidden"), n;\n },\n update: function update(t, n) {\n (!i || s.forcePlaceholderSize) && (n.height() || n.height(e.currentItem.innerHeight() - parseInt(e.currentItem.css("paddingTop") || 0, 10) - parseInt(e.currentItem.css("paddingBottom") || 0, 10)), n.width() || n.width(e.currentItem.innerWidth() - parseInt(e.currentItem.css("paddingLeft") || 0, 10) - parseInt(e.currentItem.css("paddingRight") || 0, 10)));\n }\n }), e.placeholder = t(s.placeholder.element.call(e.element, e.currentItem)), e.currentItem.after(e.placeholder), s.placeholder.update(e, e.placeholder);\n },\n _createTrPlaceholder: function _createTrPlaceholder(e, i) {\n var s = this;\n e.children().each(function () {\n t("<td> </td>", s.document[0]).attr("colspan", t(this).attr("colspan") || 1).appendTo(i);\n });\n },\n _contactContainers: function _contactContainers(e) {\n var i,\n s,\n n,\n o,\n a,\n r,\n h,\n l,\n c,\n u,\n d = null,\n p = null;\n for (i = this.containers.length - 1; i >= 0; i--) if (!t.contains(this.currentItem[0], this.containers[i].element[0])) if (this._intersectsWith(this.containers[i].containerCache)) {\n if (d && t.contains(this.containers[i].element[0], d.element[0])) continue;\n d = this.containers[i], p = i;\n } else this.containers[i].containerCache.over && (this.containers[i]._trigger("out", e, this._uiHash(this)), this.containers[i].containerCache.over = 0);\n if (d) if (1 === this.containers.length) this.containers[p].containerCache.over || (this.containers[p]._trigger("over", e, this._uiHash(this)), this.containers[p].containerCache.over = 1);else {\n for (n = 1e4, o = null, c = d.floating || this._isFloating(this.currentItem), a = c ? "left" : "top", r = c ? "width" : "height", u = c ? "pageX" : "pageY", s = this.items.length - 1; s >= 0; s--) t.contains(this.containers[p].element[0], this.items[s].item[0]) && this.items[s].item[0] !== this.currentItem[0] && (h = this.items[s].item.offset()[a], l = !1, e[u] - h > this.items[s][r] / 2 && (l = !0), n > Math.abs(e[u] - h) && (n = Math.abs(e[u] - h), o = this.items[s], this.direction = l ? "up" : "down"));\n if (!o && !this.options.dropOnEmpty) return;\n if (this.currentContainer === this.containers[p]) return this.currentContainer.containerCache.over || (this.containers[p]._trigger("over", e, this._uiHash()), this.currentContainer.containerCache.over = 1), void 0;\n o ? this._rearrange(e, o, null, !0) : this._rearrange(e, null, this.containers[p].element, !0), this._trigger("change", e, this._uiHash()), this.containers[p]._trigger("change", e, this._uiHash(this)), this.currentContainer = this.containers[p], this.options.placeholder.update(this.currentContainer, this.placeholder), this.containers[p]._trigger("over", e, this._uiHash(this)), this.containers[p].containerCache.over = 1;\n }\n },\n _createHelper: function _createHelper(e) {\n var i = this.options,\n s = t.isFunction(i.helper) ? t(i.helper.apply(this.element[0], [e, this.currentItem])) : "clone" === i.helper ? this.currentItem.clone() : this.currentItem;\n return s.parents("body").length || t("parent" !== i.appendTo ? i.appendTo : this.currentItem[0].parentNode)[0].appendChild(s[0]), s[0] === this.currentItem[0] && (this._storedCSS = {\n width: this.currentItem[0].style.width,\n height: this.currentItem[0].style.height,\n position: this.currentItem.css("position"),\n top: this.currentItem.css("top"),\n left: this.currentItem.css("left")\n }), (!s[0].style.width || i.forceHelperSize) && s.width(this.currentItem.width()), (!s[0].style.height || i.forceHelperSize) && s.height(this.currentItem.height()), s;\n },\n _adjustOffsetFromHelper: function _adjustOffsetFromHelper(e) {\n "string" == typeof e && (e = e.split(" ")), t.isArray(e) && (e = {\n left: +e[0],\n top: +e[1] || 0\n }), "left" in e && (this.offset.click.left = e.left + this.margins.left), "right" in e && (this.offset.click.left = this.helperProportions.width - e.right + this.margins.left), "top" in e && (this.offset.click.top = e.top + this.margins.top), "bottom" in e && (this.offset.click.top = this.helperProportions.height - e.bottom + this.margins.top);\n },\n _getParentOffset: function _getParentOffset() {\n this.offsetParent = this.helper.offsetParent();\n var e = this.offsetParent.offset();\n return "absolute" === this.cssPosition && this.scrollParent[0] !== this.document[0] && t.contains(this.scrollParent[0], this.offsetParent[0]) && (e.left += this.scrollParent.scrollLeft(), e.top += this.scrollParent.scrollTop()), (this.offsetParent[0] === this.document[0].body || this.offsetParent[0].tagName && "html" === this.offsetParent[0].tagName.toLowerCase() && t.ui.ie) && (e = {\n top: 0,\n left: 0\n }), {\n top: e.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),\n left: e.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)\n };\n },\n _getRelativeOffset: function _getRelativeOffset() {\n if ("relative" === this.cssPosition) {\n var t = this.currentItem.position();\n return {\n top: t.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),\n left: t.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()\n };\n }\n return {\n top: 0,\n left: 0\n };\n },\n _cacheMargins: function _cacheMargins() {\n this.margins = {\n left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,\n top: parseInt(this.currentItem.css("marginTop"), 10) || 0\n };\n },\n _cacheHelperProportions: function _cacheHelperProportions() {\n this.helperProportions = {\n width: this.helper.outerWidth(),\n height: this.helper.outerHeight()\n };\n },\n _setContainment: function _setContainment() {\n var e,\n i,\n s,\n n = this.options;\n "parent" === n.containment && (n.containment = this.helper[0].parentNode), ("document" === n.containment || "window" === n.containment) && (this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, "document" === n.containment ? this.document.width() : this.window.width() - this.helperProportions.width - this.margins.left, ("document" === n.containment ? this.document.height() || document.body.parentNode.scrollHeight : this.window.height() || this.document[0].body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]), /^(document|window|parent)$/.test(n.containment) || (e = t(n.containment)[0], i = t(n.containment).offset(), s = "hidden" !== t(e).css("overflow"), this.containment = [i.left + (parseInt(t(e).css("borderLeftWidth"), 10) || 0) + (parseInt(t(e).css("paddingLeft"), 10) || 0) - this.margins.left, i.top + (parseInt(t(e).css("borderTopWidth"), 10) || 0) + (parseInt(t(e).css("paddingTop"), 10) || 0) - this.margins.top, i.left + (s ? Math.max(e.scrollWidth, e.offsetWidth) : e.offsetWidth) - (parseInt(t(e).css("borderLeftWidth"), 10) || 0) - (parseInt(t(e).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, i.top + (s ? Math.max(e.scrollHeight, e.offsetHeight) : e.offsetHeight) - (parseInt(t(e).css("borderTopWidth"), 10) || 0) - (parseInt(t(e).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top]);\n },\n _convertPositionTo: function _convertPositionTo(e, i) {\n i || (i = this.position);\n var s = "absolute" === e ? 1 : -1,\n n = "absolute" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && t.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,\n o = /(html|body)/i.test(n[0].tagName);\n return {\n top: i.top + this.offset.relative.top * s + this.offset.parent.top * s - ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : o ? 0 : n.scrollTop()) * s,\n left: i.left + this.offset.relative.left * s + this.offset.parent.left * s - ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : o ? 0 : n.scrollLeft()) * s\n };\n },\n _generatePosition: function _generatePosition(e) {\n var i,\n s,\n n = this.options,\n o = e.pageX,\n a = e.pageY,\n r = "absolute" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && t.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,\n h = /(html|body)/i.test(r[0].tagName);\n return "relative" !== this.cssPosition || this.scrollParent[0] !== this.document[0] && this.scrollParent[0] !== this.offsetParent[0] || (this.offset.relative = this._getRelativeOffset()), this.originalPosition && (this.containment && (e.pageX - this.offset.click.left < this.containment[0] && (o = this.containment[0] + this.offset.click.left), e.pageY - this.offset.click.top < this.containment[1] && (a = this.containment[1] + this.offset.click.top), e.pageX - this.offset.click.left > this.containment[2] && (o = this.containment[2] + this.offset.click.left), e.pageY - this.offset.click.top > this.containment[3] && (a = this.containment[3] + this.offset.click.top)), n.grid && (i = this.originalPageY + Math.round((a - this.originalPageY) / n.grid[1]) * n.grid[1], a = this.containment ? i - this.offset.click.top >= this.containment[1] && i - this.offset.click.top <= this.containment[3] ? i : i - this.offset.click.top >= this.containment[1] ? i - n.grid[1] : i + n.grid[1] : i, s = this.originalPageX + Math.round((o - this.originalPageX) / n.grid[0]) * n.grid[0], o = this.containment ? s - this.offset.click.left >= this.containment[0] && s - this.offset.click.left <= this.containment[2] ? s : s - this.offset.click.left >= this.containment[0] ? s - n.grid[0] : s + n.grid[0] : s)), {\n top: a - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : h ? 0 : r.scrollTop()),\n left: o - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : h ? 0 : r.scrollLeft())\n };\n },\n _rearrange: function _rearrange(t, e, i, s) {\n i ? i[0].appendChild(this.placeholder[0]) : e.item[0].parentNode.insertBefore(this.placeholder[0], "down" === this.direction ? e.item[0] : e.item[0].nextSibling), this.counter = this.counter ? ++this.counter : 1;\n var n = this.counter;\n this._delay(function () {\n n === this.counter && this.refreshPositions(!s);\n });\n },\n _clear: function _clear(t, e) {\n function i(t, e, i) {\n return function (s) {\n i._trigger(t, s, e._uiHash(e));\n };\n }\n this.reverting = !1;\n var s,\n n = [];\n if (!this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem), this._noFinalSort = null, this.helper[0] === this.currentItem[0]) {\n for (s in this._storedCSS) ("auto" === this._storedCSS[s] || "static" === this._storedCSS[s]) && (this._storedCSS[s] = "");\n this.currentItem.css(this._storedCSS), this._removeClass(this.currentItem, "ui-sortable-helper");\n } else this.currentItem.show();\n for (this.fromOutside && !e && n.push(function (t) {\n this._trigger("receive", t, this._uiHash(this.fromOutside));\n }), !this.fromOutside && this.domPosition.prev === this.currentItem.prev().not(".ui-sortable-helper")[0] && this.domPosition.parent === this.currentItem.parent()[0] || e || n.push(function (t) {\n this._trigger("update", t, this._uiHash());\n }), this !== this.currentContainer && (e || (n.push(function (t) {\n this._trigger("remove", t, this._uiHash());\n }), n.push(function (t) {\n return function (e) {\n t._trigger("receive", e, this._uiHash(this));\n };\n }.call(this, this.currentContainer)), n.push(function (t) {\n return function (e) {\n t._trigger("update", e, this._uiHash(this));\n };\n }.call(this, this.currentContainer)))), s = this.containers.length - 1; s >= 0; s--) e || n.push(i("deactivate", this, this.containers[s])), this.containers[s].containerCache.over && (n.push(i("out", this, this.containers[s])), this.containers[s].containerCache.over = 0);\n if (this.storedCursor && (this.document.find("body").css("cursor", this.storedCursor), this.storedStylesheet.remove()), this._storedOpacity && this.helper.css("opacity", this._storedOpacity), this._storedZIndex && this.helper.css("zIndex", "auto" === this._storedZIndex ? "" : this._storedZIndex), this.dragging = !1, e || this._trigger("beforeStop", t, this._uiHash()), this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.cancelHelperRemoval || (this.helper[0] !== this.currentItem[0] && this.helper.remove(), this.helper = null), !e) {\n for (s = 0; n.length > s; s++) n[s].call(this, t);\n this._trigger("stop", t, this._uiHash());\n }\n return this.fromOutside = !1, !this.cancelHelperRemoval;\n },\n _trigger: function _trigger() {\n t.Widget.prototype._trigger.apply(this, arguments) === !1 && this.cancel();\n },\n _uiHash: function _uiHash(e) {\n var i = e || this;\n return {\n helper: i.helper,\n placeholder: i.placeholder || t([]),\n position: i.position,\n originalPosition: i.originalPosition,\n offset: i.positionAbs,\n item: i.currentItem,\n sender: e ? e.element : null\n };\n }\n }), t.widget("ui.spinner", {\n version: "1.12.0",\n defaultElement: "<input>",\n widgetEventPrefix: "spin",\n options: {\n classes: {\n "ui-spinner": "ui-corner-all",\n "ui-spinner-down": "ui-corner-br",\n "ui-spinner-up": "ui-corner-tr"\n },\n culture: null,\n icons: {\n down: "ui-icon-triangle-1-s",\n up: "ui-icon-triangle-1-n"\n },\n incremental: !0,\n max: null,\n min: null,\n numberFormat: null,\n page: 10,\n step: 1,\n change: null,\n spin: null,\n start: null,\n stop: null\n },\n _create: function _create() {\n this._setOption("max", this.options.max), this._setOption("min", this.options.min), this._setOption("step", this.options.step), "" !== this.value() && this._value(this.element.val(), !0), this._draw(), this._on(this._events), this._refresh(), this._on(this.window, {\n beforeunload: function beforeunload() {\n this.element.removeAttr("autocomplete");\n }\n });\n },\n _getCreateOptions: function _getCreateOptions() {\n var e = this._super(),\n i = this.element;\n return t.each(["min", "max", "step"], function (t, s) {\n var n = i.attr(s);\n null != n && n.length && (e[s] = n);\n }), e;\n },\n _events: {\n keydown: function keydown(t) {\n this._start(t) && this._keydown(t) && t.preventDefault();\n },\n keyup: "_stop",\n focus: function focus() {\n this.previous = this.element.val();\n },\n blur: function blur(t) {\n return this.cancelBlur ? (delete this.cancelBlur, void 0) : (this._stop(), this._refresh(), this.previous !== this.element.val() && this._trigger("change", t), void 0);\n },\n mousewheel: function mousewheel(t, e) {\n if (e) {\n if (!this.spinning && !this._start(t)) return !1;\n this._spin((e > 0 ? 1 : -1) * this.options.step, t), clearTimeout(this.mousewheelTimer), this.mousewheelTimer = this._delay(function () {\n this.spinning && this._stop(t);\n }, 100), t.preventDefault();\n }\n },\n "mousedown .ui-spinner-button": function mousedownUiSpinnerButton(e) {\n function i() {\n var e = this.element[0] === t.ui.safeActiveElement(this.document[0]);\n e || (this.element.trigger("focus"), this.previous = s, this._delay(function () {\n this.previous = s;\n }));\n }\n var s;\n s = this.element[0] === t.ui.safeActiveElement(this.document[0]) ? this.previous : this.element.val(), e.preventDefault(), i.call(this), this.cancelBlur = !0, this._delay(function () {\n delete this.cancelBlur, i.call(this);\n }), this._start(e) !== !1 && this._repeat(null, t(e.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, e);\n },\n "mouseup .ui-spinner-button": "_stop",\n "mouseenter .ui-spinner-button": function mouseenterUiSpinnerButton(e) {\n return t(e.currentTarget).hasClass("ui-state-active") ? this._start(e) === !1 ? !1 : (this._repeat(null, t(e.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, e), void 0) : void 0;\n },\n "mouseleave .ui-spinner-button": "_stop"\n },\n _enhance: function _enhance() {\n this.uiSpinner = this.element.attr("autocomplete", "off").wrap("<span>").parent().append("<a></a><a></a>");\n },\n _draw: function _draw() {\n this._enhance(), this._addClass(this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content"), this._addClass("ui-spinner-input"), this.element.attr("role", "spinbutton"), this.buttons = this.uiSpinner.children("a").attr("tabIndex", -1).attr("aria-hidden", !0).button({\n classes: {\n "ui-button": ""\n }\n }), this._removeClass(this.buttons, "ui-corner-all"), this._addClass(this.buttons.first(), "ui-spinner-button ui-spinner-up"), this._addClass(this.buttons.last(), "ui-spinner-button ui-spinner-down"), this.buttons.first().button({\n icon: this.options.icons.up,\n showLabel: !1\n }), this.buttons.last().button({\n icon: this.options.icons.down,\n showLabel: !1\n }), this.buttons.height() > Math.ceil(.5 * this.uiSpinner.height()) && this.uiSpinner.height() > 0 && this.uiSpinner.height(this.uiSpinner.height());\n },\n _keydown: function _keydown(e) {\n var i = this.options,\n s = t.ui.keyCode;\n switch (e.keyCode) {\n case s.UP:\n return this._repeat(null, 1, e), !0;\n case s.DOWN:\n return this._repeat(null, -1, e), !0;\n case s.PAGE_UP:\n return this._repeat(null, i.page, e), !0;\n case s.PAGE_DOWN:\n return this._repeat(null, -i.page, e), !0;\n }\n return !1;\n },\n _start: function _start(t) {\n return this.spinning || this._trigger("start", t) !== !1 ? (this.counter || (this.counter = 1), this.spinning = !0, !0) : !1;\n },\n _repeat: function _repeat(t, e, i) {\n t = t || 500, clearTimeout(this.timer), this.timer = this._delay(function () {\n this._repeat(40, e, i);\n }, t), this._spin(e * this.options.step, i);\n },\n _spin: function _spin(t, e) {\n var i = this.value() || 0;\n this.counter || (this.counter = 1), i = this._adjustValue(i + t * this._increment(this.counter)), this.spinning && this._trigger("spin", e, {\n value: i\n }) === !1 || (this._value(i), this.counter++);\n },\n _increment: function _increment(e) {\n var i = this.options.incremental;\n return i ? t.isFunction(i) ? i(e) : Math.floor(e * e * e / 5e4 - e * e / 500 + 17 * e / 200 + 1) : 1;\n },\n _precision: function _precision() {\n var t = this._precisionOf(this.options.step);\n return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options.min))), t;\n },\n _precisionOf: function _precisionOf(t) {\n var e = "" + t,\n i = e.indexOf(".");\n return -1 === i ? 0 : e.length - i - 1;\n },\n _adjustValue: function _adjustValue(t) {\n var e,\n i,\n s = this.options;\n return e = null !== s.min ? s.min : 0, i = t - e, i = Math.round(i / s.step) * s.step, t = e + i, t = parseFloat(t.toFixed(this._precision())), null !== s.max && t > s.max ? s.max : null !== s.min && s.min > t ? s.min : t;\n },\n _stop: function _stop(t) {\n this.spinning && (clearTimeout(this.timer), clearTimeout(this.mousewheelTimer), this.counter = 0, this.spinning = !1, this._trigger("stop", t));\n },\n _setOption: function _setOption(t, e) {\n var i, s, n;\n return "culture" === t || "numberFormat" === t ? (i = this._parse(this.element.val()), this.options[t] = e, this.element.val(this._format(i)), void 0) : (("max" === t || "min" === t || "step" === t) && "string" == typeof e && (e = this._parse(e)), "icons" === t && (s = this.buttons.first().find(".ui-icon"), this._removeClass(s, null, this.options.icons.up), this._addClass(s, null, e.up), n = this.buttons.last().find(".ui-icon"), this._removeClass(n, null, this.options.icons.down), this._addClass(n, null, e.down)), this._super(t, e), void 0);\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this._super(t), this._toggleClass(this.uiSpinner, null, "ui-state-disabled", !!t), this.element.prop("disabled", !!t), this.buttons.button(t ? "disable" : "enable");\n },\n _setOptions: r(function (t) {\n this._super(t);\n }),\n _parse: function _parse(t) {\n return "string" == typeof t && "" !== t && (t = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(t, 10, this.options.culture) : +t), "" === t || isNaN(t) ? null : t;\n },\n _format: function _format(t) {\n return "" === t ? "" : window.Globalize && this.options.numberFormat ? Globalize.format(t, this.options.numberFormat, this.options.culture) : t;\n },\n _refresh: function _refresh() {\n this.element.attr({\n "aria-valuemin": this.options.min,\n "aria-valuemax": this.options.max,\n "aria-valuenow": this._parse(this.element.val())\n });\n },\n isValid: function isValid() {\n var t = this.value();\n return null === t ? !1 : t === this._adjustValue(t);\n },\n _value: function _value(t, e) {\n var i;\n "" !== t && (i = this._parse(t), null !== i && (e || (i = this._adjustValue(i)), t = this._format(i))), this.element.val(t), this._refresh();\n },\n _destroy: function _destroy() {\n this.element.prop("disabled", !1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"), this.uiSpinner.replaceWith(this.element);\n },\n stepUp: r(function (t) {\n this._stepUp(t);\n }),\n _stepUp: function _stepUp(t) {\n this._start() && (this._spin((t || 1) * this.options.step), this._stop());\n },\n stepDown: r(function (t) {\n this._stepDown(t);\n }),\n _stepDown: function _stepDown(t) {\n this._start() && (this._spin((t || 1) * -this.options.step), this._stop());\n },\n pageUp: r(function (t) {\n this._stepUp((t || 1) * this.options.page);\n }),\n pageDown: r(function (t) {\n this._stepDown((t || 1) * this.options.page);\n }),\n value: function value(t) {\n return arguments.length ? (r(this._value).call(this, t), void 0) : this._parse(this.element.val());\n },\n widget: function widget() {\n return this.uiSpinner;\n }\n }), t.uiBackCompat !== !1 && t.widget("ui.spinner", t.ui.spinner, {\n _enhance: function _enhance() {\n this.uiSpinner = this.element.attr("autocomplete", "off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());\n },\n _uiSpinnerHtml: function _uiSpinnerHtml() {\n return "<span>";\n },\n _buttonHtml: function _buttonHtml() {\n return "<a></a><a></a>";\n }\n }), t.ui.spinner, t.widget("ui.tabs", {\n version: "1.12.0",\n delay: 300,\n options: {\n active: null,\n classes: {\n "ui-tabs": "ui-corner-all",\n "ui-tabs-nav": "ui-corner-all",\n "ui-tabs-panel": "ui-corner-bottom",\n "ui-tabs-tab": "ui-corner-top"\n },\n collapsible: !1,\n event: "click",\n heightStyle: "content",\n hide: null,\n show: null,\n activate: null,\n beforeActivate: null,\n beforeLoad: null,\n load: null\n },\n _isLocal: function () {\n var t = /#.*$/;\n return function (e) {\n var i, s;\n i = e.href.replace(t, ""), s = location.href.replace(t, "");\n try {\n i = decodeURIComponent(i);\n } catch (n) {}\n try {\n s = decodeURIComponent(s);\n } catch (n) {}\n return e.hash.length > 1 && i === s;\n };\n }(),\n _create: function _create() {\n var e = this,\n i = this.options;\n this.running = !1, this._addClass("ui-tabs", "ui-widget ui-widget-content"), this._toggleClass("ui-tabs-collapsible", null, i.collapsible), this._processTabs(), i.active = this._initialActive(), t.isArray(i.disabled) && (i.disabled = t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"), function (t) {\n return e.tabs.index(t);\n }))).sort()), this.active = this.options.active !== !1 && this.anchors.length ? this._findActive(i.active) : t(), this._refresh(), this.active.length && this.load(i.active);\n },\n _initialActive: function _initialActive() {\n var e = this.options.active,\n i = this.options.collapsible,\n s = location.hash.substring(1);\n return null === e && (s && this.tabs.each(function (i, n) {\n return t(n).attr("aria-controls") === s ? (e = i, !1) : void 0;\n }), null === e && (e = this.tabs.index(this.tabs.filter(".ui-tabs-active"))), (null === e || -1 === e) && (e = this.tabs.length ? 0 : !1)), e !== !1 && (e = this.tabs.index(this.tabs.eq(e)), -1 === e && (e = i ? !1 : 0)), !i && e === !1 && this.anchors.length && (e = 0), e;\n },\n _getCreateEventData: function _getCreateEventData() {\n return {\n tab: this.active,\n panel: this.active.length ? this._getPanelForTab(this.active) : t()\n };\n },\n _tabKeydown: function _tabKeydown(e) {\n var i = t(t.ui.safeActiveElement(this.document[0])).closest("li"),\n s = this.tabs.index(i),\n n = !0;\n if (!this._handlePageNav(e)) {\n switch (e.keyCode) {\n case t.ui.keyCode.RIGHT:\n case t.ui.keyCode.DOWN:\n s++;\n break;\n case t.ui.keyCode.UP:\n case t.ui.keyCode.LEFT:\n n = !1, s--;\n break;\n case t.ui.keyCode.END:\n s = this.anchors.length - 1;\n break;\n case t.ui.keyCode.HOME:\n s = 0;\n break;\n case t.ui.keyCode.SPACE:\n return e.preventDefault(), clearTimeout(this.activating), this._activate(s), void 0;\n case t.ui.keyCode.ENTER:\n return e.preventDefault(), clearTimeout(this.activating), this._activate(s === this.options.active ? !1 : s), void 0;\n default:\n return;\n }\n e.preventDefault(), clearTimeout(this.activating), s = this._focusNextTab(s, n), e.ctrlKey || e.metaKey || (i.attr("aria-selected", "false"), this.tabs.eq(s).attr("aria-selected", "true"), this.activating = this._delay(function () {\n this.option("active", s);\n }, this.delay));\n }\n },\n _panelKeydown: function _panelKeydown(e) {\n this._handlePageNav(e) || e.ctrlKey && e.keyCode === t.ui.keyCode.UP && (e.preventDefault(), this.active.trigger("focus"));\n },\n _handlePageNav: function _handlePageNav(e) {\n return e.altKey && e.keyCode === t.ui.keyCode.PAGE_UP ? (this._activate(this._focusNextTab(this.options.active - 1, !1)), !0) : e.altKey && e.keyCode === t.ui.keyCode.PAGE_DOWN ? (this._activate(this._focusNextTab(this.options.active + 1, !0)), !0) : void 0;\n },\n _findNextTab: function _findNextTab(e, i) {\n function s() {\n return e > n && (e = 0), 0 > e && (e = n), e;\n }\n for (var n = this.tabs.length - 1; -1 !== t.inArray(s(), this.options.disabled);) e = i ? e + 1 : e - 1;\n return e;\n },\n _focusNextTab: function _focusNextTab(t, e) {\n return t = this._findNextTab(t, e), this.tabs.eq(t).trigger("focus"), t;\n },\n _setOption: function _setOption(t, e) {\n return "active" === t ? (this._activate(e), void 0) : (this._super(t, e), "collapsible" === t && (this._toggleClass("ui-tabs-collapsible", null, e), e || this.options.active !== !1 || this._activate(0)), "event" === t && this._setupEvents(e), "heightStyle" === t && this._setupHeightStyle(e), void 0);\n },\n _sanitizeSelector: function _sanitizeSelector(t) {\n return t ? t.replace(/[!"$%&\'()*+,.\\/:;<=>?@\\[\\]\\^`{|}~]/g, "\\\\$&") : "";\n },\n refresh: function refresh() {\n var e = this.options,\n i = this.tablist.children(":has(a[href])");\n e.disabled = t.map(i.filter(".ui-state-disabled"), function (t) {\n return i.index(t);\n }), this._processTabs(), e.active !== !1 && this.anchors.length ? this.active.length && !t.contains(this.tablist[0], this.active[0]) ? this.tabs.length === e.disabled.length ? (e.active = !1, this.active = t()) : this._activate(this._findNextTab(Math.max(0, e.active - 1), !1)) : e.active = this.tabs.index(this.active) : (e.active = !1, this.active = t()), this._refresh();\n },\n _refresh: function _refresh() {\n this._setOptionDisabled(this.options.disabled), this._setupEvents(this.options.event), this._setupHeightStyle(this.options.heightStyle), this.tabs.not(this.active).attr({\n "aria-selected": "false",\n "aria-expanded": "false",\n tabIndex: -1\n }), this.panels.not(this._getPanelForTab(this.active)).hide().attr({\n "aria-hidden": "true"\n }), this.active.length ? (this.active.attr({\n "aria-selected": "true",\n "aria-expanded": "true",\n tabIndex: 0\n }), this._addClass(this.active, "ui-tabs-active", "ui-state-active"), this._getPanelForTab(this.active).show().attr({\n "aria-hidden": "false"\n })) : this.tabs.eq(0).attr("tabIndex", 0);\n },\n _processTabs: function _processTabs() {\n var e = this,\n i = this.tabs,\n s = this.anchors,\n n = this.panels;\n this.tablist = this._getList().attr("role", "tablist"), this._addClass(this.tablist, "ui-tabs-nav", "ui-helper-reset ui-helper-clearfix ui-widget-header"), this.tablist.on("mousedown" + this.eventNamespace, "> li", function (e) {\n t(this).is(".ui-state-disabled") && e.preventDefault();\n }).on("focus" + this.eventNamespace, ".ui-tabs-anchor", function () {\n t(this).closest("li").is(".ui-state-disabled") && this.blur();\n }), this.tabs = this.tablist.find("> li:has(a[href])").attr({\n role: "tab",\n tabIndex: -1\n }), this._addClass(this.tabs, "ui-tabs-tab", "ui-state-default"), this.anchors = this.tabs.map(function () {\n return t("a", this)[0];\n }).attr({\n role: "presentation",\n tabIndex: -1\n }), this._addClass(this.anchors, "ui-tabs-anchor"), this.panels = t(), this.anchors.each(function (i, s) {\n var n,\n o,\n a,\n r = t(s).uniqueId().attr("id"),\n h = t(s).closest("li"),\n l = h.attr("aria-controls");\n e._isLocal(s) ? (n = s.hash, a = n.substring(1), o = e.element.find(e._sanitizeSelector(n))) : (a = h.attr("aria-controls") || t({}).uniqueId()[0].id, n = "#" + a, o = e.element.find(n), o.length || (o = e._createPanel(a), o.insertAfter(e.panels[i - 1] || e.tablist)), o.attr("aria-live", "polite")), o.length && (e.panels = e.panels.add(o)), l && h.data("ui-tabs-aria-controls", l), h.attr({\n "aria-controls": a,\n "aria-labelledby": r\n }), o.attr("aria-labelledby", r);\n }), this.panels.attr("role", "tabpanel"), this._addClass(this.panels, "ui-tabs-panel", "ui-widget-content"), i && (this._off(i.not(this.tabs)), this._off(s.not(this.anchors)), this._off(n.not(this.panels)));\n },\n _getList: function _getList() {\n return this.tablist || this.element.find("ol, ul").eq(0);\n },\n _createPanel: function _createPanel(e) {\n return t("<div>").attr("id", e).data("ui-tabs-destroy", !0);\n },\n _setOptionDisabled: function _setOptionDisabled(e) {\n var i, s, n;\n for (t.isArray(e) && (e.length ? e.length === this.anchors.length && (e = !0) : e = !1), n = 0; s = this.tabs[n]; n++) i = t(s), e === !0 || -1 !== t.inArray(n, e) ? (i.attr("aria-disabled", "true"), this._addClass(i, null, "ui-state-disabled")) : (i.removeAttr("aria-disabled"), this._removeClass(i, null, "ui-state-disabled"));\n this.options.disabled = e, this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, e === !0);\n },\n _setupEvents: function _setupEvents(e) {\n var i = {};\n e && t.each(e.split(" "), function (t, e) {\n i[e] = "_eventHandler";\n }), this._off(this.anchors.add(this.tabs).add(this.panels)), this._on(!0, this.anchors, {\n click: function click(t) {\n t.preventDefault();\n }\n }), this._on(this.anchors, i), this._on(this.tabs, {\n keydown: "_tabKeydown"\n }), this._on(this.panels, {\n keydown: "_panelKeydown"\n }), this._focusable(this.tabs), this._hoverable(this.tabs);\n },\n _setupHeightStyle: function _setupHeightStyle(e) {\n var i,\n s = this.element.parent();\n "fill" === e ? (i = s.height(), i -= this.element.outerHeight() - this.element.height(), this.element.siblings(":visible").each(function () {\n var e = t(this),\n s = e.css("position");\n "absolute" !== s && "fixed" !== s && (i -= e.outerHeight(!0));\n }), this.element.children().not(this.panels).each(function () {\n i -= t(this).outerHeight(!0);\n }), this.panels.each(function () {\n t(this).height(Math.max(0, i - t(this).innerHeight() + t(this).height()));\n }).css("overflow", "auto")) : "auto" === e && (i = 0, this.panels.each(function () {\n i = Math.max(i, t(this).height("").height());\n }).height(i));\n },\n _eventHandler: function _eventHandler(e) {\n var i = this.options,\n s = this.active,\n n = t(e.currentTarget),\n o = n.closest("li"),\n a = o[0] === s[0],\n r = a && i.collapsible,\n h = r ? t() : this._getPanelForTab(o),\n l = s.length ? this._getPanelForTab(s) : t(),\n c = {\n oldTab: s,\n oldPanel: l,\n newTab: r ? t() : o,\n newPanel: h\n };\n e.preventDefault(), o.hasClass("ui-state-disabled") || o.hasClass("ui-tabs-loading") || this.running || a && !i.collapsible || this._trigger("beforeActivate", e, c) === !1 || (i.active = r ? !1 : this.tabs.index(o), this.active = a ? t() : o, this.xhr && this.xhr.abort(), l.length || h.length || t.error("jQuery UI Tabs: Mismatching fragment identifier."), h.length && this.load(this.tabs.index(o), e), this._toggle(e, c));\n },\n _toggle: function _toggle(e, i) {\n function s() {\n o.running = !1, o._trigger("activate", e, i);\n }\n function n() {\n o._addClass(i.newTab.closest("li"), "ui-tabs-active", "ui-state-active"), a.length && o.options.show ? o._show(a, o.options.show, s) : (a.show(), s());\n }\n var o = this,\n a = i.newPanel,\n r = i.oldPanel;\n this.running = !0, r.length && this.options.hide ? this._hide(r, this.options.hide, function () {\n o._removeClass(i.oldTab.closest("li"), "ui-tabs-active", "ui-state-active"), n();\n }) : (this._removeClass(i.oldTab.closest("li"), "ui-tabs-active", "ui-state-active"), r.hide(), n()), r.attr("aria-hidden", "true"), i.oldTab.attr({\n "aria-selected": "false",\n "aria-expanded": "false"\n }), a.length && r.length ? i.oldTab.attr("tabIndex", -1) : a.length && this.tabs.filter(function () {\n return 0 === t(this).attr("tabIndex");\n }).attr("tabIndex", -1), a.attr("aria-hidden", "false"), i.newTab.attr({\n "aria-selected": "true",\n "aria-expanded": "true",\n tabIndex: 0\n });\n },\n _activate: function _activate(e) {\n var i,\n s = this._findActive(e);\n s[0] !== this.active[0] && (s.length || (s = this.active), i = s.find(".ui-tabs-anchor")[0], this._eventHandler({\n target: i,\n currentTarget: i,\n preventDefault: t.noop\n }));\n },\n _findActive: function _findActive(e) {\n return e === !1 ? t() : this.tabs.eq(e);\n },\n _getIndex: function _getIndex(e) {\n return "string" == typeof e && (e = this.anchors.index(this.anchors.filter("[href$=\'" + t.ui.escapeSelector(e) + "\']"))), e;\n },\n _destroy: function _destroy() {\n this.xhr && this.xhr.abort(), this.tablist.removeAttr("role").off(this.eventNamespace), this.anchors.removeAttr("role tabIndex").removeUniqueId(), this.tabs.add(this.panels).each(function () {\n t.data(this, "ui-tabs-destroy") ? t(this).remove() : t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded");\n }), this.tabs.each(function () {\n var e = t(this),\n i = e.data("ui-tabs-aria-controls");\n i ? e.attr("aria-controls", i).removeData("ui-tabs-aria-controls") : e.removeAttr("aria-controls");\n }), this.panels.show(), "content" !== this.options.heightStyle && this.panels.css("height", "");\n },\n enable: function enable(e) {\n var i = this.options.disabled;\n i !== !1 && (void 0 === e ? i = !1 : (e = this._getIndex(e), i = t.isArray(i) ? t.map(i, function (t) {\n return t !== e ? t : null;\n }) : t.map(this.tabs, function (t, i) {\n return i !== e ? i : null;\n })), this._setOptionDisabled(i));\n },\n disable: function disable(e) {\n var i = this.options.disabled;\n if (i !== !0) {\n if (void 0 === e) i = !0;else {\n if (e = this._getIndex(e), -1 !== t.inArray(e, i)) return;\n i = t.isArray(i) ? t.merge([e], i).sort() : [e];\n }\n this._setOptionDisabled(i);\n }\n },\n load: function load(e, i) {\n e = this._getIndex(e);\n var s = this,\n n = this.tabs.eq(e),\n o = n.find(".ui-tabs-anchor"),\n a = this._getPanelForTab(n),\n r = {\n tab: n,\n panel: a\n },\n h = function h(t, e) {\n "abort" === e && s.panels.stop(!1, !0), s._removeClass(n, "ui-tabs-loading"), a.removeAttr("aria-busy"), t === s.xhr && delete s.xhr;\n };\n this._isLocal(o[0]) || (this.xhr = t.ajax(this._ajaxSettings(o, i, r)), this.xhr && "canceled" !== this.xhr.statusText && (this._addClass(n, "ui-tabs-loading"), a.attr("aria-busy", "true"), this.xhr.done(function (t, e, n) {\n setTimeout(function () {\n a.html(t), s._trigger("load", i, r), h(n, e);\n }, 1);\n }).fail(function (t, e) {\n setTimeout(function () {\n h(t, e);\n }, 1);\n })));\n },\n _ajaxSettings: function _ajaxSettings(e, i, s) {\n var n = this;\n return {\n url: e.attr("href"),\n beforeSend: function beforeSend(e, o) {\n return n._trigger("beforeLoad", i, t.extend({\n jqXHR: e,\n ajaxSettings: o\n }, s));\n }\n };\n },\n _getPanelForTab: function _getPanelForTab(e) {\n var i = t(e).attr("aria-controls");\n return this.element.find(this._sanitizeSelector("#" + i));\n }\n }), t.uiBackCompat !== !1 && t.widget("ui.tabs", t.ui.tabs, {\n _processTabs: function _processTabs() {\n this._superApply(arguments), this._addClass(this.tabs, "ui-tab");\n }\n }), t.ui.tabs, t.widget("ui.tooltip", {\n version: "1.12.0",\n options: {\n classes: {\n "ui-tooltip": "ui-corner-all ui-widget-shadow"\n },\n content: function content() {\n var e = t(this).attr("title") || "";\n return t("<a>").text(e).html();\n },\n hide: !0,\n items: "[title]:not([disabled])",\n position: {\n my: "left top+15",\n at: "left bottom",\n collision: "flipfit flip"\n },\n show: !0,\n track: !1,\n close: null,\n open: null\n },\n _addDescribedBy: function _addDescribedBy(e, i) {\n var s = (e.attr("aria-describedby") || "").split(/\\s+/);\n s.push(i), e.data("ui-tooltip-id", i).attr("aria-describedby", t.trim(s.join(" ")));\n },\n _removeDescribedBy: function _removeDescribedBy(e) {\n var i = e.data("ui-tooltip-id"),\n s = (e.attr("aria-describedby") || "").split(/\\s+/),\n n = t.inArray(i, s);\n -1 !== n && s.splice(n, 1), e.removeData("ui-tooltip-id"), s = t.trim(s.join(" ")), s ? e.attr("aria-describedby", s) : e.removeAttr("aria-describedby");\n },\n _create: function _create() {\n this._on({\n mouseover: "open",\n focusin: "open"\n }), this.tooltips = {}, this.parents = {}, this.liveRegion = t("<div>").attr({\n role: "log",\n "aria-live": "assertive",\n "aria-relevant": "additions"\n }).appendTo(this.document[0].body), this._addClass(this.liveRegion, null, "ui-helper-hidden-accessible"), this.disabledTitles = t([]);\n },\n _setOption: function _setOption(e, i) {\n var s = this;\n this._super(e, i), "content" === e && t.each(this.tooltips, function (t, e) {\n s._updateContent(e.element);\n });\n },\n _setOptionDisabled: function _setOptionDisabled(t) {\n this[t ? "_disable" : "_enable"]();\n },\n _disable: function _disable() {\n var e = this;\n t.each(this.tooltips, function (i, s) {\n var n = t.Event("blur");\n n.target = n.currentTarget = s.element[0], e.close(n, !0);\n }), this.disabledTitles = this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function () {\n var e = t(this);\n return e.is("[title]") ? e.data("ui-tooltip-title", e.attr("title")).removeAttr("title") : void 0;\n }));\n },\n _enable: function _enable() {\n this.disabledTitles.each(function () {\n var e = t(this);\n e.data("ui-tooltip-title") && e.attr("title", e.data("ui-tooltip-title"));\n }), this.disabledTitles = t([]);\n },\n open: function open(e) {\n var i = this,\n s = t(e ? e.target : this.element).closest(this.options.items);\n s.length && !s.data("ui-tooltip-id") && (s.attr("title") && s.data("ui-tooltip-title", s.attr("title")), s.data("ui-tooltip-open", !0), e && "mouseover" === e.type && s.parents().each(function () {\n var e,\n s = t(this);\n s.data("ui-tooltip-open") && (e = t.Event("blur"), e.target = e.currentTarget = this, i.close(e, !0)), s.attr("title") && (s.uniqueId(), i.parents[this.id] = {\n element: this,\n title: s.attr("title")\n }, s.attr("title", ""));\n }), this._registerCloseHandlers(e, s), this._updateContent(s, e));\n },\n _updateContent: function _updateContent(t, e) {\n var i,\n s = this.options.content,\n n = this,\n o = e ? e.type : null;\n return "string" == typeof s || s.nodeType || s.jquery ? this._open(e, t, s) : (i = s.call(t[0], function (i) {\n n._delay(function () {\n t.data("ui-tooltip-open") && (e && (e.type = o), this._open(e, t, i));\n });\n }), i && this._open(e, t, i), void 0);\n },\n _open: function _open(e, i, s) {\n function n(t) {\n l.of = t, a.is(":hidden") || a.position(l);\n }\n var o,\n a,\n r,\n h,\n l = t.extend({}, this.options.position);\n if (s) {\n if (o = this._find(i)) return o.tooltip.find(".ui-tooltip-content").html(s), void 0;\n i.is("[title]") && (e && "mouseover" === e.type ? i.attr("title", "") : i.removeAttr("title")), o = this._tooltip(i), a = o.tooltip, this._addDescribedBy(i, a.attr("id")), a.find(".ui-tooltip-content").html(s), this.liveRegion.children().hide(), h = t("<div>").html(a.find(".ui-tooltip-content").html()), h.removeAttr("name").find("[name]").removeAttr("name"), h.removeAttr("id").find("[id]").removeAttr("id"), h.appendTo(this.liveRegion), this.options.track && e && /^mouse/.test(e.type) ? (this._on(this.document, {\n mousemove: n\n }), n(e)) : a.position(t.extend({\n of: i\n }, this.options.position)), a.hide(), this._show(a, this.options.show), this.options.track && this.options.show && this.options.show.delay && (r = this.delayedShow = setInterval(function () {\n a.is(":visible") && (n(l.of), clearInterval(r));\n }, t.fx.interval)), this._trigger("open", e, {\n tooltip: a\n });\n }\n },\n _registerCloseHandlers: function _registerCloseHandlers(e, i) {\n var s = {\n keyup: function keyup(e) {\n if (e.keyCode === t.ui.keyCode.ESCAPE) {\n var s = t.Event(e);\n s.currentTarget = i[0], this.close(s, !0);\n }\n }\n };\n i[0] !== this.element[0] && (s.remove = function () {\n this._removeTooltip(this._find(i).tooltip);\n }), e && "mouseover" !== e.type || (s.mouseleave = "close"), e && "focusin" !== e.type || (s.focusout = "close"), this._on(!0, i, s);\n },\n close: function close(e) {\n var i,\n s = this,\n n = t(e ? e.currentTarget : this.element),\n o = this._find(n);\n return o ? (i = o.tooltip, o.closing || (clearInterval(this.delayedShow), n.data("ui-tooltip-title") && !n.attr("title") && n.attr("title", n.data("ui-tooltip-title")), this._removeDescribedBy(n), o.hiding = !0, i.stop(!0), this._hide(i, this.options.hide, function () {\n s._removeTooltip(t(this));\n }), n.removeData("ui-tooltip-open"), this._off(n, "mouseleave focusout keyup"), n[0] !== this.element[0] && this._off(n, "remove"), this._off(this.document, "mousemove"), e && "mouseleave" === e.type && t.each(this.parents, function (e, i) {\n t(i.element).attr("title", i.title), delete s.parents[e];\n }), o.closing = !0, this._trigger("close", e, {\n tooltip: i\n }), o.hiding || (o.closing = !1)), void 0) : (n.removeData("ui-tooltip-open"), void 0);\n },\n _tooltip: function _tooltip(e) {\n var i = t("<div>").attr("role", "tooltip"),\n s = t("<div>").appendTo(i),\n n = i.uniqueId().attr("id");\n return this._addClass(s, "ui-tooltip-content"), this._addClass(i, "ui-tooltip", "ui-widget ui-widget-content"), i.appendTo(this._appendTo(e)), this.tooltips[n] = {\n element: e,\n tooltip: i\n };\n },\n _find: function _find(t) {\n var e = t.data("ui-tooltip-id");\n return e ? this.tooltips[e] : null;\n },\n _removeTooltip: function _removeTooltip(t) {\n t.remove(), delete this.tooltips[t.attr("id")];\n },\n _appendTo: function _appendTo(t) {\n var e = t.closest(".ui-front, dialog");\n return e.length || (e = this.document[0].body), e;\n },\n _destroy: function _destroy() {\n var e = this;\n t.each(this.tooltips, function (i, s) {\n var n = t.Event("blur"),\n o = s.element;\n n.target = n.currentTarget = o[0], e.close(n, !0), t("#" + i).remove(), o.data("ui-tooltip-title") && (o.attr("title") || o.attr("title", o.data("ui-tooltip-title")), o.removeData("ui-tooltip-title"));\n }), this.liveRegion.remove();\n }\n }), t.uiBackCompat !== !1 && t.widget("ui.tooltip", t.ui.tooltip, {\n options: {\n tooltipClass: null\n },\n _tooltip: function _tooltip() {\n var t = this._superApply(arguments);\n return this.options.tooltipClass && t.tooltip.addClass(this.options.tooltipClass), t;\n }\n }), t.ui.tooltip;\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery-ui.min.js?')},"./buyercall/assets/scripts/vendor/jquery.auto-complete.js":()=>{eval("/*\n\tjQuery autoComplete v1.0.7\n Copyright (c) 2014 Simon Steinberger / Pixabay\n GitHub: https://github.com/Pixabay/jQuery-autoComplete\n\tLicense: http://www.opensource.org/licenses/mit-license.php\n*/\n\n(function ($) {\n $.fn.autoComplete = function (options) {\n var o = $.extend({}, $.fn.autoComplete.defaults, options);\n\n // public methods\n if (typeof options == 'string') {\n this.each(function () {\n var that = $(this);\n if (options == 'destroy') {\n $(window).off('resize.autocomplete', that.updateSC);\n that.off('blur.autocomplete focus.autocomplete keydown.autocomplete keyup.autocomplete');\n if (that.data('autocomplete')) that.attr('autocomplete', that.data('autocomplete'));else that.removeAttr('autocomplete');\n $(that.data('sc')).remove();\n that.removeData('sc').removeData('autocomplete');\n }\n });\n return this;\n }\n return this.each(function () {\n var that = $(this);\n // sc = 'suggestions container'\n that.sc = $('<div class=\"autocomplete-suggestions ' + o.menuClass + '\"></div>');\n that.data('sc', that.sc).data('autocomplete', that.attr('autocomplete'));\n that.attr('autocomplete', 'off');\n that.cache = {};\n that.last_val = '';\n that.updateSC = function (resize, next) {\n that.sc.css({\n top: that.offset().top + that.outerHeight(),\n left: that.offset().left,\n width: that.outerWidth()\n });\n if (!resize) {\n that.sc.show();\n if (!that.sc.maxHeight) that.sc.maxHeight = parseInt(that.sc.css('max-height'));\n if (!that.sc.suggestionHeight) that.sc.suggestionHeight = $('.autocomplete-suggestion', that.sc).first().outerHeight();\n if (that.sc.suggestionHeight) if (!next) that.sc.scrollTop(0);else {\n var scrTop = that.sc.scrollTop(),\n selTop = next.offset().top - that.sc.offset().top;\n if (selTop + that.sc.suggestionHeight - that.sc.maxHeight > 0) that.sc.scrollTop(selTop + that.sc.suggestionHeight + scrTop - that.sc.maxHeight);else if (selTop < 0) that.sc.scrollTop(selTop + scrTop);\n }\n }\n };\n $(window).on('resize.autocomplete', that.updateSC);\n that.sc.appendTo('body');\n that.sc.on('mouseleave', '.autocomplete-suggestion', function () {\n $('.autocomplete-suggestion.selected').removeClass('selected');\n });\n that.sc.on('mouseenter', '.autocomplete-suggestion', function () {\n $('.autocomplete-suggestion.selected').removeClass('selected');\n $(this).addClass('selected');\n });\n that.sc.on('mousedown click', '.autocomplete-suggestion', function (e) {\n var item = $(this),\n v = item.data('val');\n if (v || item.hasClass('autocomplete-suggestion')) {\n // else outside click\n that.val(v);\n o.onSelect(e, v, item);\n that.sc.hide();\n }\n return false;\n });\n that.on('blur.autocomplete', function () {\n var over_sb;\n try {\n over_sb = $('.autocomplete-suggestions:hover').length;\n } catch (e) {\n over_sb = 0;\n } // IE7 fix :hover\n if (!over_sb) {\n that.last_val = that.val();\n that.sc.hide();\n setTimeout(function () {\n that.sc.hide();\n }, 350); // hide suggestions on fast input\n } else if (!that.is(':focus')) setTimeout(function () {\n that.focus();\n }, 20);\n });\n if (!o.minChars) that.on('focus.autocomplete', function () {\n that.last_val = '\\n';\n that.trigger('keyup.autocomplete');\n });\n function suggest(data) {\n var val = that.val();\n that.cache[val] = data;\n if (data.length && val.length >= o.minChars) {\n var s = '';\n for (var i = 0; i < data.length; i++) s += o.renderItem(data[i], val);\n that.sc.html(s);\n that.updateSC(0);\n } else that.sc.hide();\n }\n that.on('keydown.autocomplete', function (e) {\n // down (40), up (38)\n if ((e.which == 40 || e.which == 38) && that.sc.html()) {\n var next,\n sel = $('.autocomplete-suggestion.selected', that.sc);\n if (!sel.length) {\n next = e.which == 40 ? $('.autocomplete-suggestion', that.sc).first() : $('.autocomplete-suggestion', that.sc).last();\n that.val(next.addClass('selected').data('val'));\n } else {\n next = e.which == 40 ? sel.next('.autocomplete-suggestion') : sel.prev('.autocomplete-suggestion');\n if (next.length) {\n sel.removeClass('selected');\n that.val(next.addClass('selected').data('val'));\n } else {\n sel.removeClass('selected');\n that.val(that.last_val);\n next = 0;\n }\n }\n that.updateSC(0, next);\n return false;\n }\n // esc\n else if (e.which == 27) that.val(that.last_val).sc.hide();\n // enter or tab\n else if (e.which == 13 || e.which == 9) {\n var sel = $('.autocomplete-suggestion.selected', that.sc);\n if (sel.length && that.sc.is(':visible')) {\n o.onSelect(e, sel.data('val'), sel);\n setTimeout(function () {\n that.sc.hide();\n }, 20);\n }\n }\n });\n that.on('keyup.autocomplete', function (e) {\n if (!~$.inArray(e.which, [13, 27, 35, 36, 37, 38, 39, 40])) {\n var val = that.val();\n if (val.length >= o.minChars) {\n if (val != that.last_val) {\n that.last_val = val;\n clearTimeout(that.timer);\n if (o.cache) {\n if (val in that.cache) {\n suggest(that.cache[val]);\n return;\n }\n // no requests if previous suggestions were empty\n for (var i = 1; i < val.length - o.minChars; i++) {\n var part = val.slice(0, val.length - i);\n if (part in that.cache && !that.cache[part].length) {\n suggest([]);\n return;\n }\n }\n }\n that.timer = setTimeout(function () {\n o.source(val, suggest);\n }, o.delay);\n }\n } else {\n that.last_val = val;\n that.sc.hide();\n }\n }\n });\n });\n };\n $.fn.autoComplete.defaults = {\n source: 0,\n minChars: 3,\n delay: 150,\n cache: 1,\n menuClass: '',\n renderItem: function renderItem(item, search) {\n // escape special characters\n search = search.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n var re = new RegExp(\"(\" + search.split(' ').join('|') + \")\", \"gi\");\n return '<div class=\"autocomplete-suggestion\" data-val=\"' + item + '\">' + item.replace(re, \"<b>$1</b>\") + '</div>';\n },\n onSelect: function onSelect(e, term, item) {}\n };\n})(jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.auto-complete.js?")},"./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js":()=>{eval("/*!\n * jQuery twitter bootstrap wizard plugin\n * Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard\n * version 1.0\n * Requires jQuery v1.3.2 or later\n * Supports Bootstrap 2.2.x, 2.3.x, 3.0\n * Dual licensed under the MIT and GPL licenses:\n * http://www.opensource.org/licenses/mit-license.php\n * http://www.gnu.org/licenses/gpl.html\n * Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com)\n */\n;\n(function ($) {\n var bootstrapWizardCreate = function bootstrapWizardCreate(element, options) {\n var element = $(element);\n var obj = this;\n\n // selector skips any 'li' elements that do not contain a child with a tab data-toggle\n var baseItemSelector = 'li:has([data-toggle=\"tab\"])';\n\n // Merge options with defaults\n var $settings = $.extend({}, $.fn.bootstrapWizard.defaults, options);\n var $activeTab = null;\n var $navigation = null;\n this.rebindClick = function (selector, fn) {\n selector.unbind('click', fn).bind('click', fn);\n };\n this.fixNavigationButtons = function () {\n // Get the current active tab\n if (!$activeTab.length) {\n // Select first one\n $navigation.find('a:first').tab('show');\n $activeTab = $navigation.find(baseItemSelector + ':first');\n }\n\n // See if we're currently in the first/last then disable the previous and last buttons\n $($settings.previousSelector, element).toggleClass('disabled', obj.firstIndex() >= obj.currentIndex());\n $($settings.nextSelector, element).toggleClass('disabled', obj.currentIndex() >= obj.navigationLength());\n\n // We are unbinding and rebinding to ensure single firing and no double-click errors\n obj.rebindClick($($settings.nextSelector, element), obj.next);\n obj.rebindClick($($settings.previousSelector, element), obj.previous);\n obj.rebindClick($($settings.lastSelector, element), obj.last);\n obj.rebindClick($($settings.firstSelector, element), obj.first);\n if ($settings.onTabShow && typeof $settings.onTabShow === 'function' && $settings.onTabShow($activeTab, $navigation, obj.currentIndex()) === false) {\n return false;\n }\n };\n this.next = function (e) {\n // If we clicked the last then dont activate this\n if (element.hasClass('last')) {\n return false;\n }\n if ($settings.onNext && typeof $settings.onNext === 'function' && $settings.onNext($activeTab, $navigation, obj.nextIndex()) === false) {\n return false;\n }\n\n // Did we click the last button\n $index = obj.nextIndex();\n if ($index > obj.navigationLength()) {} else {\n $navigation.find(baseItemSelector + ':eq(' + $index + ') a').tab('show');\n }\n };\n this.previous = function (e) {\n // If we clicked the first then dont activate this\n if (element.hasClass('first')) {\n return false;\n }\n if ($settings.onPrevious && typeof $settings.onPrevious === 'function' && $settings.onPrevious($activeTab, $navigation, obj.previousIndex()) === false) {\n return false;\n }\n $index = obj.previousIndex();\n if ($index < 0) {} else {\n $navigation.find(baseItemSelector + ':eq(' + $index + ') a').tab('show');\n }\n };\n this.first = function (e) {\n if ($settings.onFirst && typeof $settings.onFirst === 'function' && $settings.onFirst($activeTab, $navigation, obj.firstIndex()) === false) {\n return false;\n }\n\n // If the element is disabled then we won't do anything\n if (element.hasClass('disabled')) {\n return false;\n }\n $navigation.find(baseItemSelector + ':eq(0) a').tab('show');\n };\n this.last = function (e) {\n if ($settings.onLast && typeof $settings.onLast === 'function' && $settings.onLast($activeTab, $navigation, obj.lastIndex()) === false) {\n return false;\n }\n\n // If the element is disabled then we won't do anything\n if (element.hasClass('disabled')) {\n return false;\n }\n $navigation.find(baseItemSelector + ':eq(' + obj.navigationLength() + ') a').tab('show');\n };\n this.currentIndex = function () {\n return $navigation.find(baseItemSelector).index($activeTab);\n };\n this.firstIndex = function () {\n return 0;\n };\n this.lastIndex = function () {\n return obj.navigationLength();\n };\n this.getIndex = function (e) {\n return $navigation.find(baseItemSelector).index(e);\n };\n this.nextIndex = function () {\n return $navigation.find(baseItemSelector).index($activeTab) + 1;\n };\n this.previousIndex = function () {\n return $navigation.find(baseItemSelector).index($activeTab) - 1;\n };\n this.navigationLength = function () {\n return $navigation.find(baseItemSelector).length - 1;\n };\n this.activeTab = function () {\n return $activeTab;\n };\n this.nextTab = function () {\n return $navigation.find(baseItemSelector + ':eq(' + (obj.currentIndex() + 1) + ')').length ? $navigation.find(baseItemSelector + ':eq(' + (obj.currentIndex() + 1) + ')') : null;\n };\n this.previousTab = function () {\n if (obj.currentIndex() <= 0) {\n return null;\n }\n return $navigation.find(baseItemSelector + ':eq(' + parseInt(obj.currentIndex() - 1) + ')');\n };\n this.show = function (index) {\n if (isNaN(index)) {\n return element.find(baseItemSelector + ' a[href=#' + index + ']').tab('show');\n } else {\n return element.find(baseItemSelector + ':eq(' + index + ') a').tab('show');\n }\n };\n this.disable = function (index) {\n $navigation.find(baseItemSelector + ':eq(' + index + ')').addClass('disabled');\n };\n this.enable = function (index) {\n $navigation.find(baseItemSelector + ':eq(' + index + ')').removeClass('disabled');\n };\n this.hide = function (index) {\n $navigation.find(baseItemSelector + ':eq(' + index + ')').hide();\n };\n this.display = function (index) {\n $navigation.find(baseItemSelector + ':eq(' + index + ')').show();\n };\n this.remove = function (args) {\n var $index = args[0];\n var $removeTabPane = typeof args[1] != 'undefined' ? args[1] : false;\n var $item = $navigation.find(baseItemSelector + ':eq(' + $index + ')');\n\n // Remove the tab pane first if needed\n if ($removeTabPane) {\n var $href = $item.find('a').attr('href');\n $($href).remove();\n }\n\n // Remove menu item\n $item.remove();\n };\n var innerTabClick = function innerTabClick(e) {\n // Get the index of the clicked tab\n var clickedIndex = $navigation.find(baseItemSelector).index($(e.currentTarget).parent(baseItemSelector));\n if ($settings.onTabClick && typeof $settings.onTabClick === 'function' && $settings.onTabClick($activeTab, $navigation, obj.currentIndex(), clickedIndex) === false) {\n return false;\n }\n };\n var innerTabShown = function innerTabShown(e) {\n // use shown instead of show to help prevent double firing\n $element = $(e.target).parent();\n var nextTab = $navigation.find(baseItemSelector).index($element);\n\n // If it's disabled then do not change\n if ($element.hasClass('disabled')) {\n return false;\n }\n if ($settings.onTabChange && typeof $settings.onTabChange === 'function' && $settings.onTabChange($activeTab, $navigation, obj.currentIndex(), nextTab) === false) {\n return false;\n }\n $activeTab = $element; // activated tab\n obj.fixNavigationButtons();\n };\n this.resetWizard = function () {\n // remove the existing handlers\n $('a[data-toggle=\"tab\"]', $navigation).off('click', innerTabClick);\n $('a[data-toggle=\"tab\"]', $navigation).off('shown shown.bs.tab', innerTabShown);\n\n // reset elements based on current state of the DOM\n $navigation = element.find('ul:first', element);\n $activeTab = $navigation.find(baseItemSelector + '.active', element);\n\n // re-add handlers\n $('a[data-toggle=\"tab\"]', $navigation).on('click', innerTabClick);\n $('a[data-toggle=\"tab\"]', $navigation).on('shown shown.bs.tab', innerTabShown);\n obj.fixNavigationButtons();\n };\n $navigation = element.find('ul:first', element);\n $activeTab = $navigation.find(baseItemSelector + '.active', element);\n if (!$navigation.hasClass($settings.tabClass)) {\n $navigation.addClass($settings.tabClass);\n }\n\n // Load onInit\n if ($settings.onInit && typeof $settings.onInit === 'function') {\n $settings.onInit($activeTab, $navigation, 0);\n }\n\n // Load onShow\n if ($settings.onShow && typeof $settings.onShow === 'function') {\n $settings.onShow($activeTab, $navigation, obj.nextIndex());\n }\n $('a[data-toggle=\"tab\"]', $navigation).on('click', innerTabClick);\n\n // attach to both shown and shown.bs.tab to support Bootstrap versions 2.3.2 and 3.0.0\n $('a[data-toggle=\"tab\"]', $navigation).on('shown shown.bs.tab', innerTabShown);\n };\n $.fn.bootstrapWizard = function (options) {\n //expose methods\n if (typeof options == 'string') {\n var args = Array.prototype.slice.call(arguments, 1);\n if (args.length === 1) {\n args.toString();\n }\n return this.data('bootstrapWizard')[options](args);\n }\n return this.each(function (index) {\n var element = $(this);\n // Return early if this element already has a plugin instance\n if (element.data('bootstrapWizard')) return;\n // pass options to plugin constructor\n var wizard = new bootstrapWizardCreate(element, options);\n // Store plugin object in this element's data\n element.data('bootstrapWizard', wizard);\n // and then trigger initial change\n wizard.fixNavigationButtons();\n });\n };\n\n // expose options\n $.fn.bootstrapWizard.defaults = {\n tabClass: 'nav nav-pills',\n nextSelector: '.wizard li.next',\n previousSelector: '.wizard li.previous',\n firstSelector: '.wizard li.first',\n lastSelector: '.wizard li.last',\n onShow: null,\n onInit: null,\n onNext: null,\n onPrevious: null,\n onLast: null,\n onFirst: null,\n onTabChange: null,\n onTabClick: null,\n onTabShow: null\n };\n})(jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js?")},"./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js":function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _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; }, _typeof(o); }\n/*!\n * Bootstrap-select v1.11.2 (http://silviomoreto.github.io/bootstrap-select)\n *\n * Copyright 2013-2016 bootstrap-select\n * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)\n */\n\n/*\n\n Creative Tim Modifications\n Line: 384-385 - we changed glyphicons with material-icons.\n Line: 599 - we put tickIcon inside of span tag.\n\n*/\n\n(function (root, factory) {\n if (true) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ \"jquery\")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (a0) {\n return factory(a0);\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})(this, function (jQuery) {\n (function ($) {\n 'use strict';\n\n //<editor-fold desc=\"Shims\">\n if (!String.prototype.includes) {\n (function () {\n 'use strict';\n\n // needed to support `apply`/`call` with `undefined`/`null`\n var toString = {}.toString;\n var defineProperty = function () {\n // IE 8 only supports `Object.defineProperty` on DOM elements\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }();\n var indexOf = ''.indexOf;\n var includes = function includes(search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n // `ToInteger`\n var pos = position ? Number(position) : 0;\n if (pos != pos) {\n // better `isNaN`\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n // Avoid the `indexOf` call if no match is possible\n if (searchLength + start > stringLength) {\n return false;\n }\n return indexOf.call(string, searchString, pos) != -1;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'includes', {\n 'value': includes,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.includes = includes;\n }\n })();\n }\n if (!String.prototype.startsWith) {\n (function () {\n 'use strict';\n\n // needed to support `apply`/`call` with `undefined`/`null`\n var defineProperty = function () {\n // IE 8 only supports `Object.defineProperty` on DOM elements\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }();\n var toString = {}.toString;\n var startsWith = function startsWith(search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n // `ToInteger`\n var pos = position ? Number(position) : 0;\n if (pos != pos) {\n // better `isNaN`\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n // Avoid the `indexOf` call if no match is possible\n if (searchLength + start > stringLength) {\n return false;\n }\n var index = -1;\n while (++index < searchLength) {\n if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n return false;\n }\n }\n return true;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'startsWith', {\n 'value': startsWith,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.startsWith = startsWith;\n }\n })();\n }\n if (!Object.keys) {\n Object.keys = function (o,\n // object\n k,\n // key\n r // result array\n ) {\n // initialize object and result\n r = [];\n // iterate over object keys\n for (k in o)\n // fill result array with non-prototypical keys\n r.hasOwnProperty.call(o, k) && r.push(k);\n // return result\n return r;\n };\n }\n\n // set data-selected on select element if the value has been programmatically selected\n // prior to initialization of bootstrap-select\n // * consider removing or replacing an alternative method *\n var valHooks = {\n useDefault: false,\n _set: $.valHooks.select.set\n };\n $.valHooks.select.set = function (elem, value) {\n if (value && !valHooks.useDefault) $(elem).data('selected', true);\n return valHooks._set.apply(this, arguments);\n };\n var changed_arguments = null;\n $.fn.triggerNative = function (eventName) {\n var el = this[0],\n event;\n if (el.dispatchEvent) {\n // for modern browsers & IE9+\n if (typeof Event === 'function') {\n // For modern browsers\n event = new Event(eventName, {\n bubbles: true\n });\n } else {\n // For IE since it doesn't support Event constructor\n event = document.createEvent('Event');\n event.initEvent(eventName, true, false);\n }\n el.dispatchEvent(event);\n } else if (el.fireEvent) {\n // for IE8\n event = document.createEventObject();\n event.eventType = eventName;\n el.fireEvent('on' + eventName, event);\n } else {\n // fall back to jQuery.trigger\n this.trigger(eventName);\n }\n };\n //</editor-fold>\n\n // Case insensitive contains search\n $.expr.pseudos.icontains = function (obj, index, meta) {\n var $obj = $(obj);\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n return haystack.includes(meta[3].toUpperCase());\n };\n\n // Case insensitive begins search\n $.expr.pseudos.ibegins = function (obj, index, meta) {\n var $obj = $(obj);\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n return haystack.startsWith(meta[3].toUpperCase());\n };\n\n // Case and accent insensitive contains search\n $.expr.pseudos.aicontains = function (obj, index, meta) {\n var $obj = $(obj);\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n return haystack.includes(meta[3].toUpperCase());\n };\n\n // Case and accent insensitive begins search\n $.expr.pseudos.aibegins = function (obj, index, meta) {\n var $obj = $(obj);\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n return haystack.startsWith(meta[3].toUpperCase());\n };\n\n /**\n * Remove all diatrics from the given text.\n * @access private\n * @param {String} text\n * @returns {String}\n */\n function normalizeToBase(text) {\n var rExps = [{\n re: /[\\xC0-\\xC6]/g,\n ch: \"A\"\n }, {\n re: /[\\xE0-\\xE6]/g,\n ch: \"a\"\n }, {\n re: /[\\xC8-\\xCB]/g,\n ch: \"E\"\n }, {\n re: /[\\xE8-\\xEB]/g,\n ch: \"e\"\n }, {\n re: /[\\xCC-\\xCF]/g,\n ch: \"I\"\n }, {\n re: /[\\xEC-\\xEF]/g,\n ch: \"i\"\n }, {\n re: /[\\xD2-\\xD6]/g,\n ch: \"O\"\n }, {\n re: /[\\xF2-\\xF6]/g,\n ch: \"o\"\n }, {\n re: /[\\xD9-\\xDC]/g,\n ch: \"U\"\n }, {\n re: /[\\xF9-\\xFC]/g,\n ch: \"u\"\n }, {\n re: /[\\xC7-\\xE7]/g,\n ch: \"c\"\n }, {\n re: /[\\xD1]/g,\n ch: \"N\"\n }, {\n re: /[\\xF1]/g,\n ch: \"n\"\n }];\n $.each(rExps, function () {\n text = text.replace(this.re, this.ch);\n });\n return text;\n }\n\n // List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '`': '`'\n };\n\n // Functions for escaping and unescaping strings to/from HTML interpolation.\n var createEscaper = function createEscaper(map) {\n var escaper = function escaper(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function (string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n var htmlEscape = createEscaper(escapeMap);\n var htmlUnescape = createEscaper(unescapeMap);\n var Selectpicker = function Selectpicker(element, options, e) {\n // bootstrap-select has been initialized - revert valHooks.select.set back to its original function\n if (!valHooks.useDefault) {\n $.valHooks.select.set = valHooks._set;\n valHooks.useDefault = true;\n }\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.$element = $(element);\n this.$newElement = null;\n this.$button = null;\n this.$menu = null;\n this.$lis = null;\n this.options = options;\n\n // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a\n // data-attribute)\n if (this.options.title === null) {\n this.options.title = this.$element.attr('title');\n }\n\n // Format window padding\n var winPad = this.options.windowPadding;\n if (typeof winPad === 'number') {\n this.options.windowPadding = [winPad, winPad, winPad, winPad];\n }\n\n //Expose public methods\n this.val = Selectpicker.prototype.val;\n this.render = Selectpicker.prototype.render;\n this.refresh = Selectpicker.prototype.refresh;\n this.setStyle = Selectpicker.prototype.setStyle;\n this.selectAll = Selectpicker.prototype.selectAll;\n this.deselectAll = Selectpicker.prototype.deselectAll;\n this.destroy = Selectpicker.prototype.destroy;\n this.remove = Selectpicker.prototype.remove;\n this.show = Selectpicker.prototype.show;\n this.hide = Selectpicker.prototype.hide;\n this.init();\n };\n Selectpicker.VERSION = '1.11.2';\n\n // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\n Selectpicker.DEFAULTS = {\n noneSelectedText: 'Nothing selected',\n noneResultsText: 'No results matched {0}',\n countSelectedText: function countSelectedText(numSelected, numTotal) {\n return numSelected == 1 ? \"{0} item selected\" : \"{0} items selected\";\n },\n maxOptionsText: function maxOptionsText(numAll, numGroup) {\n return [numAll == 1 ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)', numGroup == 1 ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'];\n },\n selectAllText: 'Select All',\n deselectAllText: 'Deselect All',\n doneButton: false,\n doneButtonText: 'Close',\n multipleSeparator: ', ',\n styleBase: 'btn',\n style: 'btn-default',\n size: 'auto',\n title: null,\n selectedTextFormat: 'values',\n width: false,\n container: false,\n hideDisabled: false,\n showSubtext: false,\n showIcon: true,\n showContent: true,\n dropupAuto: true,\n header: false,\n liveSearch: false,\n liveSearchPlaceholder: null,\n liveSearchNormalize: false,\n liveSearchStyle: 'contains',\n actionsBox: false,\n iconBase: 'material-icons',\n tickIcon: 'done',\n showTick: false,\n template: {\n caret: '<span class=\"caret\"></span>'\n },\n maxOptions: false,\n mobile: false,\n selectOnTab: false,\n dropdownAlignRight: false,\n windowPadding: 0\n };\n Selectpicker.prototype = {\n constructor: Selectpicker,\n init: function init() {\n var that = this,\n id = this.$element.attr('id');\n this.$element.addClass('bs-select-hidden');\n\n // store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility\n // allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index=\"' + index + '\"]')\n this.liObj = {};\n this.multiple = this.$element.prop('multiple');\n this.autofocus = this.$element.prop('autofocus');\n this.$newElement = this.createView();\n this.$element.after(this.$newElement).appendTo(this.$newElement);\n this.$button = this.$newElement.children('button');\n this.$menu = this.$newElement.children('.dropdown-menu');\n this.$menuInner = this.$menu.children('.inner');\n this.$searchbox = this.$menu.find('input');\n this.$element.removeClass('bs-select-hidden');\n if (this.options.dropdownAlignRight === true) this.$menu.addClass('dropdown-menu-right');\n if (typeof id !== 'undefined') {\n this.$button.attr('data-id', id);\n $('label[for=\"' + id + '\"]').click(function (e) {\n e.preventDefault();\n that.$button.focus();\n });\n }\n this.checkDisabled();\n this.clickListener();\n if (this.options.liveSearch) this.liveSearchListener();\n this.render();\n this.setStyle();\n this.setWidth();\n if (this.options.container) this.selectPosition();\n this.$menu.data('this', this);\n this.$newElement.data('this', this);\n if (this.options.mobile) this.mobile();\n this.$newElement.on({\n 'hide.bs.dropdown': function hideBsDropdown(e) {\n that.$menuInner.attr('aria-expanded', false);\n that.$element.trigger('hide.bs.select', e);\n },\n 'hidden.bs.dropdown': function hiddenBsDropdown(e) {\n that.$element.trigger('hidden.bs.select', e);\n },\n 'show.bs.dropdown': function showBsDropdown(e) {\n that.$menuInner.attr('aria-expanded', true);\n that.$element.trigger('show.bs.select', e);\n },\n 'shown.bs.dropdown': function shownBsDropdown(e) {\n that.$element.trigger('shown.bs.select', e);\n }\n });\n if (that.$element[0].hasAttribute('required')) {\n this.$element.on('invalid', function () {\n that.$button.addClass('bs-invalid').focus();\n that.$element.on({\n 'focus.bs.select': function focusBsSelect() {\n that.$button.focus();\n that.$element.off('focus.bs.select');\n },\n 'shown.bs.select': function shownBsSelect() {\n that.$element.val(that.$element.val()) // set the value to hide the validation message in Chrome when menu is opened\n .off('shown.bs.select');\n },\n 'rendered.bs.select': function renderedBsSelect() {\n // if select is no longer invalid, remove the bs-invalid class\n if (this.validity.valid) that.$button.removeClass('bs-invalid');\n that.$element.off('rendered.bs.select');\n }\n });\n });\n }\n setTimeout(function () {\n that.$element.trigger('loaded.bs.select');\n });\n },\n createDropdown: function createDropdown() {\n // Options\n // If we are multiple or showTick option is set, then add the show-tick class\n var showTick = this.multiple || this.options.showTick ? ' show-tick' : '',\n inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',\n autofocus = this.autofocus ? ' autofocus' : '';\n // Elements\n var header = this.options.header ? '<div class=\"popover-title\"><button type=\"button\" class=\"close\" aria-hidden=\"true\">×</button>' + this.options.header + '</div>' : '';\n var searchbox = this.options.liveSearch ? '<div class=\"bs-searchbox\">' + '<input type=\"text\" class=\"form-control\" autocomplete=\"off\"' + (null === this.options.liveSearchPlaceholder ? '' : ' placeholder=\"' + htmlEscape(this.options.liveSearchPlaceholder) + '\"') + ' role=\"textbox\" aria-label=\"Search\">' + '</div>' : '';\n var actionsbox = this.multiple && this.options.actionsBox ? '<div class=\"bs-actionsbox\">' + '<div class=\"btn-group btn-group-sm btn-block\">' + '<button type=\"button\" class=\"actions-btn bs-select-all btn btn-default\">' + this.options.selectAllText + '</button>' + '<button type=\"button\" class=\"actions-btn bs-deselect-all btn btn-default\">' + this.options.deselectAllText + '</button>' + '</div>' + '</div>' : '';\n var donebutton = this.multiple && this.options.doneButton ? '<div class=\"bs-donebutton\">' + '<div class=\"btn-group btn-block\">' + '<button type=\"button\" class=\"btn btn-sm btn-default\">' + this.options.doneButtonText + '</button>' + '</div>' + '</div>' : '';\n var drop = '<div class=\"btn-group bootstrap-select' + showTick + inputGroup + '\">' + '<button type=\"button\" class=\"' + this.options.styleBase + ' dropdown-toggle\" data-toggle=\"dropdown\"' + autofocus + ' role=\"button\">' + '<span class=\"filter-option pull-left\"></span> ' + '<span class=\"bs-caret\">' + this.options.template.caret + '</span>' + '</button>' + '<div class=\"dropdown-menu open\" role=\"combobox\">' + header + searchbox + actionsbox + '<ul class=\"dropdown-menu inner\" role=\"listbox\" aria-expanded=\"false\">' + '</ul>' + donebutton + '</div>' + '</div>';\n return $(drop);\n },\n createView: function createView() {\n var $drop = this.createDropdown(),\n li = this.createLi();\n $drop.find('ul')[0].innerHTML = li;\n return $drop;\n },\n reloadLi: function reloadLi() {\n // rebuild\n var li = this.createLi();\n this.$menuInner[0].innerHTML = li;\n },\n createLi: function createLi() {\n var that = this,\n _li = [],\n optID = 0,\n titleOption = document.createElement('option'),\n liIndex = -1; // increment liIndex whenever a new <li> element is created to ensure liObj is correct\n\n // Helper functions\n /**\n * @param content\n * @param [index]\n * @param [classes]\n * @param [optgroup]\n * @returns {string}\n */\n var generateLI = function generateLI(content, index, classes, optgroup) {\n return '<li' + (typeof classes !== 'undefined' & '' !== classes ? ' class=\"' + classes + '\"' : '') + (typeof index !== 'undefined' & null !== index ? ' data-original-index=\"' + index + '\"' : '') + (typeof optgroup !== 'undefined' & null !== optgroup ? 'data-optgroup=\"' + optgroup + '\"' : '') + '>' + content + '</li>';\n };\n\n /**\n * @param text\n * @param [classes]\n * @param [inline]\n * @param [tokens]\n * @returns {string}\n */\n var generateA = function generateA(text, classes, inline, tokens) {\n return '<a tabindex=\"0\"' + (typeof classes !== 'undefined' ? ' class=\"' + classes + '\"' : '') + (inline ? ' style=\"' + inline + '\"' : '') + (that.options.liveSearchNormalize ? ' data-normalized-text=\"' + normalizeToBase(htmlEscape($(text).html())) + '\"' : '') + (typeof tokens !== 'undefined' || tokens !== null ? ' data-tokens=\"' + tokens + '\"' : '') + ' role=\"option\">' + text + '<span class=\"' + that.options.iconBase + ' check-mark\"> ' + that.options.tickIcon + ' </span>' + '</a>';\n };\n if (this.options.title && !this.multiple) {\n // this option doesn't create a new <li> element, but does add a new option, so liIndex is decreased\n // since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended\n liIndex--;\n if (!this.$element.find('.bs-title-option').length) {\n // Use native JS to prepend option (faster)\n var element = this.$element[0];\n titleOption.className = 'bs-title-option';\n titleOption.innerHTML = this.options.title;\n titleOption.value = '';\n element.insertBefore(titleOption, element.firstChild);\n // Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\n // the selected item may have been changed by user or programmatically before the bootstrap select plugin runs,\n // if so, the select will have the data-selected attribute\n var $opt = $(element.options[element.selectedIndex]);\n if ($opt.attr('selected') === undefined && this.$element.data('selected') === undefined) {\n titleOption.selected = true;\n }\n }\n }\n this.$element.find('option').each(function (index) {\n var $this = $(this);\n liIndex++;\n if ($this.hasClass('bs-title-option')) return;\n\n // Get the class and text for the option\n var optionClass = this.className || '',\n inline = this.style.cssText,\n text = $this.data('content') ? $this.data('content') : $this.html(),\n tokens = $this.data('tokens') ? $this.data('tokens') : null,\n subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class=\"text-muted\">' + $this.data('subtext') + '</small>' : '',\n icon = typeof $this.data('icon') !== 'undefined' ? '<span class=\"' + that.options.iconBase + ' ' + $this.data('icon') + '\"></span> ' : '',\n $parent = $this.parent(),\n isOptgroup = $parent[0].tagName === 'OPTGROUP',\n isOptgroupDisabled = isOptgroup && $parent[0].disabled,\n isDisabled = this.disabled || isOptgroupDisabled;\n if (icon !== '' && isDisabled) {\n icon = '<span>' + icon + '</span>';\n }\n if (that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) {\n liIndex--;\n return;\n }\n if (!$this.data('content')) {\n // Prepend any icon and append any subtext to the main text.\n text = icon + '<span class=\"text\">' + text + subtext + '</span>';\n }\n if (isOptgroup && $this.data('divider') !== true) {\n if (that.options.hideDisabled && isDisabled) {\n if ($parent.data('allOptionsDisabled') === undefined) {\n var $options = $parent.children();\n $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length);\n }\n if ($parent.data('allOptionsDisabled')) {\n liIndex--;\n return;\n }\n }\n var optGroupClass = ' ' + $parent[0].className || 0;\n if ($this.index() === 0) {\n // Is it the first option of the optgroup?\n optID += 1;\n\n // Get the opt group label\n var label = $parent[0].label,\n labelSubtext = typeof $parent.data('subtext') !== 'undefined' ? '<small class=\"text-muted\">' + $parent.data('subtext') + '</small>' : '',\n labelIcon = $parent.data('icon') ? '<span class=\"' + that.options.iconBase + ' ' + $parent.data('icon') + '\"></span> ' : '';\n label = labelIcon + '<span class=\"text\">' + htmlEscape(label) + labelSubtext + '</span>';\n if (index !== 0 && _li.length > 0) {\n // Is it NOT the first option of the select && are there elements in the dropdown?\n liIndex++;\n _li.push(generateLI('', null, 'divider', optID + 'div'));\n }\n liIndex++;\n _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));\n }\n if (that.options.hideDisabled && isDisabled) {\n liIndex--;\n return;\n }\n _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));\n } else if ($this.data('divider') === true) {\n _li.push(generateLI('', index, 'divider'));\n } else if ($this.data('hidden') === true) {\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));\n } else {\n var showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP';\n\n // if previous element is not an optgroup and hideDisabled is true\n if (!showDivider && that.options.hideDisabled) {\n // get previous elements\n var $prev = $(this).prevAll();\n for (var i = 0; i < $prev.length; i++) {\n // find the first element in the previous elements that is an optgroup\n if ($prev[i].tagName === 'OPTGROUP') {\n var optGroupDistance = 0;\n\n // loop through the options in between the current option and the optgroup\n // and check if they are hidden or disabled\n for (var d = 0; d < i; d++) {\n var prevOption = $prev[d];\n if (prevOption.disabled || $(prevOption).data('hidden') === true) optGroupDistance++;\n }\n\n // if all of the options between the current option and the optgroup are hidden or disabled, show the divider\n if (optGroupDistance === i) showDivider = true;\n break;\n }\n }\n }\n if (showDivider) {\n liIndex++;\n _li.push(generateLI('', null, 'divider', optID + 'div'));\n }\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));\n }\n that.liObj[index] = liIndex;\n });\n\n //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button\n if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {\n this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');\n }\n return _li.join('');\n },\n findLis: function findLis() {\n if (this.$lis == null) this.$lis = this.$menu.find('li');\n return this.$lis;\n },\n /**\n * @param [updateLi] defaults to true\n */\n render: function render(updateLi) {\n var that = this,\n notDisabled;\n\n //Update the LI to match the SELECT\n if (updateLi !== false) {\n this.$element.find('option').each(function (index) {\n var $lis = that.findLis().eq(that.liObj[index]);\n that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);\n that.setSelected(index, this.selected, $lis);\n });\n }\n this.togglePlaceholder();\n this.tabIndex();\n var selectedItems = this.$element.find('option').map(function () {\n if (this.selected) {\n if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) return;\n var $this = $(this),\n icon = $this.data('icon') && that.options.showIcon ? '<i class=\"' + that.options.iconBase + ' ' + $this.data('icon') + '\"></i> ' : '',\n subtext;\n if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {\n subtext = ' <small class=\"text-muted\">' + $this.data('subtext') + '</small>';\n } else {\n subtext = '';\n }\n if (typeof $this.attr('title') !== 'undefined') {\n return $this.attr('title');\n } else if ($this.data('content') && that.options.showContent) {\n return $this.data('content').toString();\n } else {\n return icon + $this.html() + subtext;\n }\n }\n }).toArray();\n\n //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled\n //Convert all the values into a comma delimited string\n var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);\n\n //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..\n if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {\n var max = this.options.selectedTextFormat.split('>');\n if (max.length > 1 && selectedItems.length > max[1] || max.length == 1 && selectedItems.length >= 2) {\n notDisabled = this.options.hideDisabled ? ', [disabled]' : '';\n var totalCount = this.$element.find('option').not('[data-divider=\"true\"], [data-hidden=\"true\"]' + notDisabled).length,\n tr8nText = typeof this.options.countSelectedText === 'function' ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;\n title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());\n }\n }\n if (this.options.title == undefined) {\n this.options.title = this.$element.attr('title');\n }\n if (this.options.selectedTextFormat == 'static') {\n title = this.options.title;\n }\n\n //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text\n if (!title) {\n title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;\n }\n\n //strip all HTML tags and trim the result, then unescape any escaped tags\n this.$button.attr('title', htmlUnescape($.trim(title.replace(/<[^>]*>?/g, ''))));\n this.$button.children('.filter-option').html(title);\n this.$element.trigger('rendered.bs.select');\n },\n /**\n * @param [style]\n * @param [status]\n */\n setStyle: function setStyle(style, status) {\n if (this.$element.attr('class')) {\n this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]/gi, ''));\n }\n var buttonClass = style ? style : this.options.style;\n if (status == 'add') {\n this.$button.addClass(buttonClass);\n } else if (status == 'remove') {\n this.$button.removeClass(buttonClass);\n } else {\n this.$button.removeClass(this.options.style);\n this.$button.addClass(buttonClass);\n }\n },\n liHeight: function liHeight(refresh) {\n if (!refresh && (this.options.size === false || this.sizeInfo)) return;\n var newElement = document.createElement('div'),\n menu = document.createElement('div'),\n menuInner = document.createElement('ul'),\n divider = document.createElement('li'),\n li = document.createElement('li'),\n a = document.createElement('a'),\n text = document.createElement('span'),\n header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,\n search = this.options.liveSearch ? document.createElement('div') : null,\n actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\n doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;\n text.className = 'text';\n newElement.className = this.$menu[0].parentNode.className + ' open';\n menu.className = 'dropdown-menu open';\n menuInner.className = 'dropdown-menu inner';\n divider.className = 'divider';\n text.appendChild(document.createTextNode('Inner text'));\n a.appendChild(text);\n li.appendChild(a);\n menuInner.appendChild(li);\n menuInner.appendChild(divider);\n if (header) menu.appendChild(header);\n if (search) {\n // create a span instead of input as creating an input element is slower\n var input = document.createElement('span');\n search.className = 'bs-searchbox';\n input.className = 'form-control';\n search.appendChild(input);\n menu.appendChild(search);\n }\n if (actions) menu.appendChild(actions);\n menu.appendChild(menuInner);\n if (doneButton) menu.appendChild(doneButton);\n newElement.appendChild(menu);\n document.body.appendChild(newElement);\n var liHeight = a.offsetHeight,\n headerHeight = header ? header.offsetHeight : 0,\n searchHeight = search ? search.offsetHeight : 0,\n actionsHeight = actions ? actions.offsetHeight : 0,\n doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\n dividerHeight = $(divider).outerHeight(true),\n // fall back to jQuery if getComputedStyle is not supported\n menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,\n $menu = menuStyle ? null : $(menu),\n menuPadding = {\n vert: parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) + parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) + parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) + parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\n horiz: parseInt(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) + parseInt(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) + parseInt(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) + parseInt(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\n },\n menuExtras = {\n vert: menuPadding.vert + parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) + parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\n horiz: menuPadding.horiz + parseInt(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) + parseInt(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\n };\n document.body.removeChild(newElement);\n this.sizeInfo = {\n liHeight: liHeight,\n headerHeight: headerHeight,\n searchHeight: searchHeight,\n actionsHeight: actionsHeight,\n doneButtonHeight: doneButtonHeight,\n dividerHeight: dividerHeight,\n menuPadding: menuPadding,\n menuExtras: menuExtras\n };\n },\n setSize: function setSize() {\n this.findLis();\n this.liHeight();\n if (this.options.header) this.$menu.css('padding-top', 0);\n if (this.options.size === false) return;\n var that = this,\n $menu = this.$menu,\n $menuInner = this.$menuInner,\n $window = $(window),\n selectHeight = this.$newElement[0].offsetHeight,\n selectWidth = this.$newElement[0].offsetWidth,\n liHeight = this.sizeInfo['liHeight'],\n headerHeight = this.sizeInfo['headerHeight'],\n searchHeight = this.sizeInfo['searchHeight'],\n actionsHeight = this.sizeInfo['actionsHeight'],\n doneButtonHeight = this.sizeInfo['doneButtonHeight'],\n divHeight = this.sizeInfo['dividerHeight'],\n menuPadding = this.sizeInfo['menuPadding'],\n menuExtras = this.sizeInfo['menuExtras'],\n notDisabled = this.options.hideDisabled ? '.disabled' : '',\n menuHeight,\n menuWidth,\n getHeight,\n getWidth,\n selectOffsetTop,\n selectOffsetBot,\n selectOffsetLeft,\n selectOffsetRight,\n getPos = function getPos() {\n var pos = that.$newElement.offset(),\n $container = $(that.options.container),\n containerPos;\n if (that.options.container && !$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth'));\n containerPos.left += parseInt($container.css('borderLeftWidth'));\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n var winPad = that.options.windowPadding;\n selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\n selectOffsetBot = $window.height() - selectOffsetTop - selectHeight - containerPos.top - winPad[2];\n selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\n selectOffsetRight = $window.width() - selectOffsetLeft - selectWidth - containerPos.left - winPad[1];\n selectOffsetTop -= winPad[0];\n selectOffsetLeft -= winPad[3];\n };\n getPos();\n if (this.options.size === 'auto') {\n var getSize = function getSize() {\n var minHeight,\n hasClass = function hasClass(className, include) {\n return function (element) {\n if (include) {\n return element.classList ? element.classList.contains(className) : $(element).hasClass(className);\n } else {\n return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));\n }\n };\n },\n lis = that.$menuInner[0].getElementsByTagName('li'),\n lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),\n optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');\n getPos();\n menuHeight = selectOffsetBot - menuExtras.vert;\n menuWidth = selectOffsetRight - menuExtras.horiz;\n if (that.options.container) {\n if (!$menu.data('height')) $menu.data('height', $menu.height());\n getHeight = $menu.data('height');\n if (!$menu.data('width')) $menu.data('width', $menu.width());\n getWidth = $menu.data('width');\n } else {\n getHeight = $menu.height();\n getWidth = $menu.width();\n }\n if (that.options.dropupAuto) {\n that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && menuHeight - menuExtras.vert < getHeight);\n }\n if (that.$newElement.hasClass('dropup')) {\n menuHeight = selectOffsetTop - menuExtras.vert;\n }\n if (that.options.dropdownAlignRight === 'auto') {\n $menu.toggleClass('dropdown-menu-right', selectOffsetLeft > selectOffsetRight && menuWidth - menuExtras.horiz < getWidth - selectWidth);\n }\n if (lisVisible.length + optGroup.length > 3) {\n minHeight = liHeight * 3 + menuExtras.vert - 2;\n } else {\n minHeight = 0;\n }\n $menu.css({\n 'max-height': menuHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'\n });\n $menuInner.css({\n 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert + 'px',\n 'overflow-y': 'auto',\n 'min-height': Math.max(minHeight - menuPadding.vert, 0) + 'px'\n });\n };\n getSize();\n this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);\n $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);\n } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {\n var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),\n divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;\n menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\n if (that.options.container) {\n if (!$menu.data('height')) $menu.data('height', $menu.height());\n getHeight = $menu.data('height');\n } else {\n getHeight = $menu.height();\n }\n if (that.options.dropupAuto) {\n //noinspection JSUnusedAssignment\n this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && menuHeight - menuExtras.vert < getHeight);\n }\n $menu.css({\n 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': ''\n });\n $menuInner.css({\n 'max-height': menuHeight - menuPadding.vert + 'px',\n 'overflow-y': 'auto',\n 'min-height': ''\n });\n }\n },\n setWidth: function setWidth() {\n if (this.options.width === 'auto') {\n this.$menu.css('min-width', '0');\n\n // Get correct width if element is hidden\n var $selectClone = this.$menu.parent().clone().appendTo('body'),\n $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,\n ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),\n btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();\n $selectClone.remove();\n $selectClone2.remove();\n\n // Set width to whatever's larger, button title or longest option\n this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');\n } else if (this.options.width === 'fit') {\n // Remove inline min-width so width can be changed from 'auto'\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '').addClass('fit-width');\n } else if (this.options.width) {\n // Remove inline min-width so width can be changed from 'auto'\n this.$menu.css('min-width', '');\n this.$newElement.css('width', this.options.width);\n } else {\n // Remove inline min-width/width so width can be changed\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '');\n }\n // Remove fit-width class if width is changed programmatically\n if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n this.$newElement.removeClass('fit-width');\n }\n },\n selectPosition: function selectPosition() {\n this.$bsContainer = $('<div class=\"bs-container\" />');\n var that = this,\n $container = $(this.options.container),\n pos,\n containerPos,\n actualHeight,\n getPlacement = function getPlacement($element) {\n that.$bsContainer.addClass($element.attr('class').replace(/form-control|fit-width/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));\n pos = $element.offset();\n if (!$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\n containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;\n that.$bsContainer.css({\n 'top': pos.top - containerPos.top + actualHeight,\n 'left': pos.left - containerPos.left,\n 'width': $element[0].offsetWidth\n });\n };\n this.$button.on('click', function () {\n var $this = $(this);\n if (that.isDisabled()) {\n return;\n }\n getPlacement(that.$newElement);\n that.$bsContainer.appendTo(that.options.container).toggleClass('open', !$this.hasClass('open')).append(that.$menu);\n });\n $(window).on('resize scroll', function () {\n getPlacement(that.$newElement);\n });\n this.$element.on('hide.bs.select', function () {\n that.$menu.data('height', that.$menu.height());\n that.$bsContainer.detach();\n });\n },\n /**\n * @param {number} index - the index of the option that is being changed\n * @param {boolean} selected - true if the option is being selected, false if being deselected\n * @param {JQuery} $lis - the 'li' element that is being modified\n */\n setSelected: function setSelected(index, selected, $lis) {\n if (!$lis) {\n this.togglePlaceholder(); // check if setSelected is being called by changing the value of the select\n $lis = this.findLis().eq(this.liObj[index]);\n }\n $lis.toggleClass('selected', selected).find('a').attr('aria-selected', selected);\n },\n /**\n * @param {number} index - the index of the option that is being disabled\n * @param {boolean} disabled - true if the option is being disabled, false if being enabled\n * @param {JQuery} $lis - the 'li' element that is being modified\n */\n setDisabled: function setDisabled(index, disabled, $lis) {\n if (!$lis) {\n $lis = this.findLis().eq(this.liObj[index]);\n }\n if (disabled) {\n $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1).attr('aria-disabled', true);\n } else {\n $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0).attr('aria-disabled', false);\n }\n },\n isDisabled: function isDisabled() {\n return this.$element[0].disabled;\n },\n checkDisabled: function checkDisabled() {\n var that = this;\n if (this.isDisabled()) {\n this.$newElement.addClass('disabled');\n this.$button.addClass('disabled').attr('tabindex', -1).attr('aria-disabled', true);\n } else {\n if (this.$button.hasClass('disabled')) {\n this.$newElement.removeClass('disabled');\n this.$button.removeClass('disabled').attr('aria-disabled', false);\n }\n if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {\n this.$button.removeAttr('tabindex');\n }\n }\n this.$button.click(function () {\n return !that.isDisabled();\n });\n },\n togglePlaceholder: function togglePlaceholder() {\n var value = this.$element.val();\n this.$button.toggleClass('bs-placeholder', value === null || value === '' || value.constructor === Array && value.length === 0);\n },\n tabIndex: function tabIndex() {\n if (this.$element.data('tabindex') !== this.$element.attr('tabindex') && this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98') {\n this.$element.data('tabindex', this.$element.attr('tabindex'));\n this.$button.attr('tabindex', this.$element.data('tabindex'));\n }\n this.$element.attr('tabindex', -98);\n },\n clickListener: function clickListener() {\n var that = this,\n $document = $(document);\n $document.data('spaceSelect', false);\n this.$button.on('keyup', function (e) {\n if (/(32)/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\n e.preventDefault();\n $document.data('spaceSelect', false);\n }\n });\n this.$button.on('click', function () {\n that.setSize();\n });\n this.$element.on('shown.bs.select', function () {\n if (!that.options.liveSearch && !that.multiple) {\n that.$menuInner.find('.selected a').focus();\n } else if (!that.multiple) {\n var selectedIndex = that.liObj[that.$element[0].selectedIndex];\n if (typeof selectedIndex !== 'number' || that.options.size === false) return;\n\n // scroll to selected option\n var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;\n offset = offset - that.$menuInner[0].offsetHeight / 2 + that.sizeInfo.liHeight / 2;\n that.$menuInner[0].scrollTop = offset;\n }\n });\n this.$menuInner.on('click', 'li a', function (e) {\n var $this = $(this),\n clickedIndex = $this.parent().data('originalIndex'),\n prevValue = that.$element.val(),\n prevIndex = that.$element.prop('selectedIndex'),\n triggerChange = true;\n\n // Don't close on multi choice menu\n if (that.multiple && that.options.maxOptions !== 1) {\n e.stopPropagation();\n }\n e.preventDefault();\n\n //Don't run if we have been disabled\n if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {\n var $options = that.$element.find('option'),\n $option = $options.eq(clickedIndex),\n state = $option.prop('selected'),\n $optgroup = $option.parent('optgroup'),\n maxOptions = that.options.maxOptions,\n maxOptionsGrp = $optgroup.data('maxOptions') || false;\n if (!that.multiple) {\n // Deselect all others if not multi select box\n $options.prop('selected', false);\n $option.prop('selected', true);\n that.$menuInner.find('.selected').removeClass('selected').find('a').attr('aria-selected', false);\n that.setSelected(clickedIndex, true);\n } else {\n // Toggle the one we have chosen if we are multi select.\n $option.prop('selected', !state);\n that.setSelected(clickedIndex, !state);\n $this.blur();\n if (maxOptions !== false || maxOptionsGrp !== false) {\n var maxReached = maxOptions < $options.filter(':selected').length,\n maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\n if (maxOptions && maxReached || maxOptionsGrp && maxReachedGrp) {\n if (maxOptions && maxOptions == 1) {\n $options.prop('selected', false);\n $option.prop('selected', true);\n that.$menuInner.find('.selected').removeClass('selected');\n that.setSelected(clickedIndex, true);\n } else if (maxOptionsGrp && maxOptionsGrp == 1) {\n $optgroup.find('option:selected').prop('selected', false);\n $option.prop('selected', true);\n var optgroupID = $this.parent().data('optgroup');\n that.$menuInner.find('[data-optgroup=\"' + optgroupID + '\"]').removeClass('selected');\n that.setSelected(clickedIndex, true);\n } else {\n var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\n maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\n maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n $notify = $('<div class=\"notify\"></div>');\n // If {var} is set in array, replace it\n /** @deprecated */\n if (maxOptionsArr[2]) {\n maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n }\n $option.prop('selected', false);\n that.$menu.append($notify);\n if (maxOptions && maxReached) {\n $notify.append($('<div>' + maxTxt + '</div>'));\n triggerChange = false;\n that.$element.trigger('maxReached.bs.select');\n }\n if (maxOptionsGrp && maxReachedGrp) {\n $notify.append($('<div>' + maxTxtGrp + '</div>'));\n triggerChange = false;\n that.$element.trigger('maxReachedGrp.bs.select');\n }\n setTimeout(function () {\n that.setSelected(clickedIndex, false);\n }, 10);\n $notify.delay(750).fadeOut(300, function () {\n $(this).remove();\n });\n }\n }\n }\n }\n if (!that.multiple || that.multiple && that.options.maxOptions === 1) {\n that.$button.focus();\n } else if (that.options.liveSearch) {\n that.$searchbox.focus();\n }\n\n // Trigger select 'change'\n if (triggerChange) {\n if (prevValue != that.$element.val() && that.multiple || prevIndex != that.$element.prop('selectedIndex') && !that.multiple) {\n // $option.prop('selected') is current option state (selected/unselected). state is previous option state.\n changed_arguments = [clickedIndex, $option.prop('selected'), state];\n that.$element.triggerNative('change');\n }\n }\n }\n });\n this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {\n if (e.currentTarget == this) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch && !$(e.target).hasClass('close')) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n }\n });\n this.$menuInner.on('click', '.divider, .dropdown-header', function (e) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n });\n this.$menu.on('click', '.popover-title .close', function () {\n that.$button.click();\n });\n this.$searchbox.on('click', function (e) {\n e.stopPropagation();\n });\n this.$menu.on('click', '.actions-btn', function (e) {\n if (that.options.liveSearch) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n e.preventDefault();\n e.stopPropagation();\n if ($(this).hasClass('bs-select-all')) {\n that.selectAll();\n } else {\n that.deselectAll();\n }\n });\n this.$element.change(function () {\n that.render(false);\n that.$element.trigger('changed.bs.select', changed_arguments);\n changed_arguments = null;\n });\n },\n liveSearchListener: function liveSearchListener() {\n var that = this,\n $no_results = $('<li class=\"no-results\"></li>');\n this.$button.on('click.dropdown.data-api', function () {\n that.$menuInner.find('.active').removeClass('active');\n if (!!that.$searchbox.val()) {\n that.$searchbox.val('');\n that.$lis.not('.is-hidden').removeClass('hidden');\n if (!!$no_results.parent().length) $no_results.remove();\n }\n if (!that.multiple) that.$menuInner.find('.selected').addClass('active');\n setTimeout(function () {\n that.$searchbox.focus();\n }, 10);\n });\n this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {\n e.stopPropagation();\n });\n this.$searchbox.on('input propertychange', function () {\n that.$lis.not('.is-hidden').removeClass('hidden');\n that.$lis.filter('.active').removeClass('active');\n $no_results.remove();\n if (that.$searchbox.val()) {\n var $searchBase = that.$lis.not('.is-hidden, .divider, .dropdown-header'),\n $hideItems;\n if (that.options.liveSearchNormalize) {\n $hideItems = $searchBase.not(':a' + that._searchStyle() + '(\"' + normalizeToBase(that.$searchbox.val()) + '\")');\n } else {\n $hideItems = $searchBase.not(':' + that._searchStyle() + '(\"' + that.$searchbox.val() + '\")');\n }\n if ($hideItems.length === $searchBase.length) {\n $no_results.html(that.options.noneResultsText.replace('{0}', '\"' + htmlEscape(that.$searchbox.val()) + '\"'));\n that.$menuInner.append($no_results);\n that.$lis.addClass('hidden');\n } else {\n $hideItems.addClass('hidden');\n var $lisVisible = that.$lis.not('.hidden'),\n $foundDiv;\n\n // hide divider if first or last visible, or if followed by another divider\n $lisVisible.each(function (index) {\n var $this = $(this);\n if ($this.hasClass('divider')) {\n if ($foundDiv === undefined) {\n $this.addClass('hidden');\n } else {\n if ($foundDiv) $foundDiv.addClass('hidden');\n $foundDiv = $this;\n }\n } else if ($this.hasClass('dropdown-header') && $lisVisible.eq(index + 1).data('optgroup') !== $this.data('optgroup')) {\n $this.addClass('hidden');\n } else {\n $foundDiv = null;\n }\n });\n if ($foundDiv) $foundDiv.addClass('hidden');\n $searchBase.not('.hidden').first().addClass('active');\n }\n }\n });\n },\n _searchStyle: function _searchStyle() {\n var styles = {\n begins: 'ibegins',\n startsWith: 'ibegins'\n };\n return styles[this.options.liveSearchStyle] || 'icontains';\n },\n val: function val(value) {\n if (typeof value !== 'undefined') {\n this.$element.val(value);\n this.render();\n return this.$element;\n } else {\n return this.$element.val();\n }\n },\n changeAll: function changeAll(status) {\n if (!this.multiple) return;\n if (typeof status === 'undefined') status = true;\n this.findLis();\n var $options = this.$element.find('option'),\n $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden'),\n lisVisLen = $lisVisible.length,\n selectedOptions = [];\n if (status) {\n if ($lisVisible.filter('.selected').length === $lisVisible.length) return;\n } else {\n if ($lisVisible.filter('.selected').length === 0) return;\n }\n $lisVisible.toggleClass('selected', status);\n for (var i = 0; i < lisVisLen; i++) {\n var origIndex = $lisVisible[i].getAttribute('data-original-index');\n selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];\n }\n $(selectedOptions).prop('selected', status);\n this.render(false);\n this.togglePlaceholder();\n this.$element.triggerNative('change');\n },\n selectAll: function selectAll() {\n return this.changeAll(true);\n },\n deselectAll: function deselectAll() {\n return this.changeAll(false);\n },\n toggle: function toggle(e) {\n e = e || window.event;\n if (e) e.stopPropagation();\n this.$button.trigger('click');\n },\n keydown: function keydown(e) {\n var $this = $(this),\n $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),\n $items,\n that = $parent.data('this'),\n index,\n next,\n first,\n last,\n prev,\n nextPrev,\n prevIndex,\n isActive,\n selector = ':not(.disabled, .hidden, .dropdown-header, .divider)',\n keyCodeMap = {\n 32: ' ',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 59: ';',\n 65: 'a',\n 66: 'b',\n 67: 'c',\n 68: 'd',\n 69: 'e',\n 70: 'f',\n 71: 'g',\n 72: 'h',\n 73: 'i',\n 74: 'j',\n 75: 'k',\n 76: 'l',\n 77: 'm',\n 78: 'n',\n 79: 'o',\n 80: 'p',\n 81: 'q',\n 82: 'r',\n 83: 's',\n 84: 't',\n 85: 'u',\n 86: 'v',\n 87: 'w',\n 88: 'x',\n 89: 'y',\n 90: 'z',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9'\n };\n if (that.options.liveSearch) $parent = $this.parent().parent();\n if (that.options.container) $parent = that.$menu;\n $items = $('[role=\"listbox\"] li', $parent);\n isActive = that.$newElement.hasClass('open');\n if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {\n if (!that.options.container) {\n that.setSize();\n that.$menu.parent().addClass('open');\n isActive = true;\n } else {\n that.$button.trigger('click');\n }\n that.$searchbox.focus();\n return;\n }\n if (that.options.liveSearch) {\n if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive) {\n e.preventDefault();\n e.stopPropagation();\n that.$menuInner.click();\n that.$button.focus();\n }\n // $items contains li elements when liveSearch is enabled\n $items = $('[role=\"listbox\"] li' + selector, $parent);\n if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {\n if ($items.filter('.active').length === 0) {\n $items = that.$menuInner.find('li');\n if (that.options.liveSearchNormalize) {\n $items = $items.filter(':a' + that._searchStyle() + '(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');\n } else {\n $items = $items.filter(':' + that._searchStyle() + '(' + keyCodeMap[e.keyCode] + ')');\n }\n }\n }\n }\n if (!$items.length) return;\n if (/(38|40)/.test(e.keyCode.toString(10))) {\n index = $items.index($items.find('a').filter(':focus').parent());\n first = $items.filter(selector).first().index();\n last = $items.filter(selector).last().index();\n next = $items.eq(index).nextAll(selector).eq(0).index();\n prev = $items.eq(index).prevAll(selector).eq(0).index();\n nextPrev = $items.eq(next).prevAll(selector).eq(0).index();\n if (that.options.liveSearch) {\n $items.each(function (i) {\n if (!$(this).hasClass('disabled')) {\n $(this).data('index', i);\n }\n });\n index = $items.index($items.filter('.active'));\n first = $items.first().data('index');\n last = $items.last().data('index');\n next = $items.eq(index).nextAll().eq(0).data('index');\n prev = $items.eq(index).prevAll().eq(0).data('index');\n nextPrev = $items.eq(next).prevAll().eq(0).data('index');\n }\n prevIndex = $this.data('prevIndex');\n if (e.keyCode == 38) {\n if (that.options.liveSearch) index--;\n if (index != nextPrev && index > prev) index = prev;\n if (index < first) index = first;\n if (index == prevIndex) index = last;\n } else if (e.keyCode == 40) {\n if (that.options.liveSearch) index++;\n if (index == -1) index = 0;\n if (index != nextPrev && index < next) index = next;\n if (index > last) index = last;\n if (index == prevIndex) index = first;\n }\n $this.data('prevIndex', index);\n if (!that.options.liveSearch) {\n $items.eq(index).children('a').focus();\n } else {\n e.preventDefault();\n if (!$this.hasClass('dropdown-toggle')) {\n $items.removeClass('active').eq(index).addClass('active').children('a').focus();\n $this.focus();\n }\n }\n } else if (!$this.is('input')) {\n var keyIndex = [],\n count,\n prevKey;\n $items.each(function () {\n if (!$(this).hasClass('disabled')) {\n if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {\n keyIndex.push($(this).index());\n }\n }\n });\n count = $(document).data('keycount');\n count++;\n $(document).data('keycount', count);\n prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);\n if (prevKey != keyCodeMap[e.keyCode]) {\n count = 1;\n $(document).data('keycount', count);\n } else if (count >= keyIndex.length) {\n $(document).data('keycount', 0);\n if (count > keyIndex.length) count = 1;\n }\n $items.eq(keyIndex[count - 1]).children('a').focus();\n }\n\n // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n if ((/(13|32)/.test(e.keyCode.toString(10)) || /(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab) && isActive) {\n if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();\n if (!that.options.liveSearch) {\n var elem = $(':focus');\n elem.click();\n // Bring back focus for multiselects\n elem.focus();\n // Prevent screen from scrolling if the user hit the spacebar\n e.preventDefault();\n // Fixes spacebar selection of dropdown items in FF & IE\n $(document).data('spaceSelect', true);\n } else if (!/(32)/.test(e.keyCode.toString(10))) {\n that.$menuInner.find('.active a').click();\n $this.focus();\n }\n $(document).data('keycount', 0);\n }\n if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch) || /(27)/.test(e.keyCode.toString(10)) && !isActive) {\n that.$menu.parent().removeClass('open');\n if (that.options.container) that.$newElement.removeClass('open');\n that.$button.focus();\n }\n },\n mobile: function mobile() {\n this.$element.addClass('mobile-device');\n },\n refresh: function refresh() {\n this.$lis = null;\n this.liObj = {};\n this.reloadLi();\n this.render();\n this.checkDisabled();\n this.liHeight(true);\n this.setStyle();\n this.setWidth();\n if (this.$lis) this.$searchbox.trigger('propertychange');\n this.$element.trigger('refreshed.bs.select');\n },\n hide: function hide() {\n this.$newElement.hide();\n },\n show: function show() {\n this.$newElement.show();\n },\n remove: function remove() {\n this.$newElement.remove();\n this.$element.remove();\n },\n destroy: function destroy() {\n this.$newElement.before(this.$element).remove();\n if (this.$bsContainer) {\n this.$bsContainer.remove();\n } else {\n this.$menu.remove();\n }\n this.$element.off('.bs.select').removeData('selectpicker').removeClass('bs-select-hidden selectpicker');\n }\n };\n\n // SELECTPICKER PLUGIN DEFINITION\n // ==============================\n function Plugin(option, event) {\n // get the args of the outer function..\n var args = arguments;\n // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\n // to get lost/corrupted in android 2.3 and IE9 #715 #775\n var _option = option,\n _event = event;\n [].shift.apply(args);\n var value;\n var chain = this.each(function () {\n var $this = $(this);\n if ($this.is('select')) {\n var data = $this.data('selectpicker'),\n options = _typeof(_option) == 'object' && _option;\n if (!data) {\n var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);\n config.template = $.extend({}, Selectpicker.DEFAULTS.template, $.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}, $this.data().template, options.template);\n $this.data('selectpicker', data = new Selectpicker(this, config, _event));\n } else if (options) {\n for (var i in options) {\n if (options.hasOwnProperty(i)) {\n data.options[i] = options[i];\n }\n }\n }\n if (typeof _option == 'string') {\n if (data[_option] instanceof Function) {\n value = data[_option].apply(data, args);\n } else {\n value = data.options[_option];\n }\n }\n }\n });\n if (typeof value !== 'undefined') {\n //noinspection JSUnusedAssignment\n return value;\n } else {\n return chain;\n }\n }\n var old = $.fn.selectpicker;\n $.fn.selectpicker = Plugin;\n $.fn.selectpicker.Constructor = Selectpicker;\n\n // SELECTPICKER NO CONFLICT\n // ========================\n $.fn.selectpicker.noConflict = function () {\n $.fn.selectpicker = old;\n return this;\n };\n $(document).data('keycount', 0).on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', Selectpicker.prototype.keydown).on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', function (e) {\n e.stopPropagation();\n });\n\n // SELECTPICKER DATA-API\n // =====================\n $(window).on('load.bs.select.data-api', function () {\n $('.selectpicker').each(function () {\n var $selectpicker = $(this);\n Plugin.call($selectpicker, $selectpicker.data());\n });\n });\n })(jQuery);\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js?")},"./buyercall/assets/scripts/vendor/jquery.tagsinput.js":()=>{eval("function _typeof(o) { \"@babel/helpers - typeof\"; return _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; }, _typeof(o); }\n/*\n * bootstrap-tagsinput v0.8.0\n *\n */\n\n(function ($) {\n \"use strict\";\n\n var defaultOptions = {\n tagClass: function tagClass(item) {\n return 'label label-info';\n },\n focusClass: 'focus',\n itemValue: function itemValue(item) {\n return item ? item.toString() : item;\n },\n itemText: function itemText(item) {\n return this.itemValue(item);\n },\n itemTitle: function itemTitle(item) {\n return null;\n },\n freeInput: true,\n addOnBlur: true,\n maxTags: undefined,\n maxChars: undefined,\n confirmKeys: [13, 44],\n delimiter: ',',\n delimiterRegex: null,\n cancelConfirmKeysOnEmpty: false,\n onTagExists: function onTagExists(item, $tag) {\n $tag.hide().fadeIn();\n },\n trimValue: false,\n allowDuplicates: false,\n triggerChange: true\n };\n\n /**\n * Constructor function\n */\n function TagsInput(element, options) {\n this.isInit = true;\n this.itemsArray = [];\n this.$element = $(element);\n this.$element.hide();\n this.isSelect = element.tagName === 'SELECT';\n this.multiple = this.isSelect && element.hasAttribute('multiple');\n this.objectItems = options && options.itemValue;\n this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';\n this.inputSize = Math.max(1, this.placeholderText.length);\n this.$container = $('<div class=\"bootstrap-tagsinput\"></div>');\n this.$input = $('<input type=\"text\" placeholder=\"' + this.placeholderText + '\"/>').appendTo(this.$container);\n this.$element.before(this.$container);\n this.build(options);\n this.isInit = false;\n }\n TagsInput.prototype = {\n constructor: TagsInput,\n /**\n * Adds the given item as a new tag. Pass true to dontPushVal to prevent\n * updating the elements val()\n */\n add: function add(item, dontPushVal, options) {\n var self = this;\n if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags) return;\n\n // Ignore falsey values, except false\n if (item !== false && !item) return;\n\n // Trim value\n if (typeof item === \"string\" && self.options.trimValue) {\n item = $.trim(item);\n }\n\n // Throw an error when trying to add an object while the itemValue option was not set\n if (_typeof(item) === \"object\" && !self.objectItems) throw \"Can't add objects when itemValue option is not set\";\n\n // Ignore strings only containg whitespace\n if (item.toString().match(/^\\s*$/)) return;\n\n // If SELECT but not multiple, remove current tag\n if (self.isSelect && !self.multiple && self.itemsArray.length > 0) self.remove(self.itemsArray[0]);\n if (typeof item === \"string\" && this.$element[0].tagName === 'INPUT') {\n var delimiter = self.options.delimiterRegex ? self.options.delimiterRegex : self.options.delimiter;\n var items = item.split(delimiter);\n if (items.length > 1) {\n for (var i = 0; i < items.length; i++) {\n this.add(items[i], true);\n }\n if (!dontPushVal) self.pushVal(self.options.triggerChange);\n return;\n }\n }\n var itemValue = self.options.itemValue(item),\n itemText = self.options.itemText(item),\n tagClass = self.options.tagClass(item),\n itemTitle = self.options.itemTitle(item);\n\n // Ignore items allready added\n var existing = $.grep(self.itemsArray, function (item) {\n return self.options.itemValue(item) === itemValue;\n })[0];\n if (existing && !self.options.allowDuplicates) {\n // Invoke onTagExists\n if (self.options.onTagExists) {\n var $existingTag = $(\".tag\", self.$container).filter(function () {\n return $(this).data(\"item\") === existing;\n });\n self.options.onTagExists(item, $existingTag);\n }\n return;\n }\n\n // if length greater than limit\n if (self.items().toString().length + item.length + 1 > self.options.maxInputLength) return;\n\n // raise beforeItemAdd arg\n var beforeItemAddEvent = $.Event('beforeItemAdd', {\n item: item,\n cancel: false,\n options: options\n });\n self.$element.trigger(beforeItemAddEvent);\n if (beforeItemAddEvent.cancel) return;\n\n // register item in internal array and map\n self.itemsArray.push(item);\n\n // add a tag element\n\n var $tag = $('<span class=\"tag ' + htmlEncode(tagClass) + (itemTitle !== null ? '\" title=\"' + itemTitle : '') + '\">' + htmlEncode(itemText) + '<span data-role=\"remove\"></span></span>');\n $tag.data('item', item);\n self.findInputWrapper().before($tag);\n $tag.after(' ');\n\n // Check to see if the tag exists in its raw or uri-encoded form\n var optionExists = $('option[value=\"' + encodeURIComponent(itemValue) + '\"]', self.$element).length || $('option[value=\"' + htmlEncode(itemValue) + '\"]', self.$element).length;\n\n // add <option /> if item represents a value not present in one of the <select />'s options\n if (self.isSelect && !optionExists) {\n var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');\n $option.data('item', item);\n $option.attr('value', itemValue);\n self.$element.append($option);\n }\n if (!dontPushVal) self.pushVal(self.options.triggerChange);\n\n // Add class when reached maxTags\n if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength) self.$container.addClass('bootstrap-tagsinput-max');\n\n // If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.\n if ($('.typeahead, .twitter-typeahead', self.$container).length) {\n self.$input.typeahead('val', '');\n }\n if (this.isInit) {\n self.$element.trigger($.Event('itemAddedOnInit', {\n item: item,\n options: options\n }));\n } else {\n self.$element.trigger($.Event('itemAdded', {\n item: item,\n options: options\n }));\n }\n },\n /**\n * Removes the given item. Pass true to dontPushVal to prevent updating the\n * elements val()\n */\n remove: function remove(item, dontPushVal, options) {\n var self = this;\n if (self.objectItems) {\n if (_typeof(item) === \"object\") item = $.grep(self.itemsArray, function (other) {\n return self.options.itemValue(other) == self.options.itemValue(item);\n });else item = $.grep(self.itemsArray, function (other) {\n return self.options.itemValue(other) == item;\n });\n item = item[item.length - 1];\n }\n if (item) {\n var beforeItemRemoveEvent = $.Event('beforeItemRemove', {\n item: item,\n cancel: false,\n options: options\n });\n self.$element.trigger(beforeItemRemoveEvent);\n if (beforeItemRemoveEvent.cancel) return;\n $('.tag', self.$container).filter(function () {\n return $(this).data('item') === item;\n }).remove();\n $('option', self.$element).filter(function () {\n return $(this).data('item') === item;\n }).remove();\n if ($.inArray(item, self.itemsArray) !== -1) self.itemsArray.splice($.inArray(item, self.itemsArray), 1);\n }\n if (!dontPushVal) self.pushVal(self.options.triggerChange);\n\n // Remove class when reached maxTags\n if (self.options.maxTags > self.itemsArray.length) self.$container.removeClass('bootstrap-tagsinput-max');\n self.$element.trigger($.Event('itemRemoved', {\n item: item,\n options: options\n }));\n },\n /**\n * Removes all items\n */\n removeAll: function removeAll() {\n var self = this;\n $('.tag', self.$container).remove();\n $('option', self.$element).remove();\n while (self.itemsArray.length > 0) self.itemsArray.pop();\n self.pushVal(self.options.triggerChange);\n },\n /**\n * Refreshes the tags so they match the text/value of their corresponding\n * item.\n */\n refresh: function refresh() {\n var self = this;\n $('.tag', self.$container).each(function () {\n var $tag = $(this),\n item = $tag.data('item'),\n itemValue = self.options.itemValue(item),\n itemText = self.options.itemText(item),\n tagClass = self.options.tagClass(item);\n\n // Update tag's class and inner text\n $tag.attr('class', null);\n $tag.addClass('tag ' + htmlEncode(tagClass));\n $tag.contents().filter(function () {\n return this.nodeType == 3;\n })[0].nodeValue = htmlEncode(itemText);\n if (self.isSelect) {\n var option = $('option', self.$element).filter(function () {\n return $(this).data('item') === item;\n });\n option.attr('value', itemValue);\n }\n });\n },\n /**\n * Returns the items added as tags\n */\n items: function items() {\n return this.itemsArray;\n },\n /**\n * Assembly value by retrieving the value of each item, and set it on the\n * element.\n */\n pushVal: function pushVal() {\n var self = this,\n val = $.map(self.items(), function (item) {\n return self.options.itemValue(item).toString();\n });\n self.$element.val(val, true);\n if (self.options.triggerChange) self.$element.trigger('change');\n },\n /**\n * Initializes the tags input behaviour on the element\n */\n build: function build(options) {\n var self = this;\n self.options = $.extend({}, defaultOptions, options);\n // When itemValue is set, freeInput should always be false\n if (self.objectItems) self.options.freeInput = false;\n makeOptionItemFunction(self.options, 'itemValue');\n makeOptionItemFunction(self.options, 'itemText');\n makeOptionFunction(self.options, 'tagClass');\n\n // Typeahead Bootstrap version 2.3.2\n if (self.options.typeahead) {\n var typeahead = self.options.typeahead || {};\n makeOptionFunction(typeahead, 'source');\n self.$input.typeahead($.extend({}, typeahead, {\n source: function source(query, process) {\n function processItems(items) {\n var texts = [];\n for (var i = 0; i < items.length; i++) {\n var text = self.options.itemText(items[i]);\n map[text] = items[i];\n texts.push(text);\n }\n process(texts);\n }\n this.map = {};\n var map = this.map,\n data = typeahead.source(query);\n if ($.isFunction(data.success)) {\n // support for Angular callbacks\n data.success(processItems);\n } else if ($.isFunction(data.then)) {\n // support for Angular promises\n data.then(processItems);\n } else {\n // support for functions and jquery promises\n $.when(data).then(processItems);\n }\n },\n updater: function updater(text) {\n self.add(this.map[text]);\n return this.map[text];\n },\n matcher: function matcher(text) {\n return text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1;\n },\n sorter: function sorter(texts) {\n return texts.sort();\n },\n highlighter: function highlighter(text) {\n var regex = new RegExp('(' + this.query + ')', 'gi');\n return text.replace(regex, \"<strong>$1</strong>\");\n }\n }));\n }\n\n // typeahead.js\n if (self.options.typeaheadjs) {\n // Determine if main configurations were passed or simply a dataset\n var typeaheadjs = self.options.typeaheadjs;\n if (!$.isArray(typeaheadjs)) {\n typeaheadjs = [null, typeaheadjs];\n }\n var valueKey = typeaheadjs[1].valueKey; // We should test typeaheadjs.size >= 1\n var f_datum = valueKey ? function (datum) {\n return datum[valueKey];\n } : function (datum) {\n return datum;\n };\n $.fn.typeahead.apply(self.$input, typeaheadjs).on('typeahead:selected', $.proxy(function (obj, datum) {\n self.add(f_datum(datum));\n self.$input.typeahead('val', '');\n }, self));\n }\n self.$container.on('click', $.proxy(function (event) {\n if (!self.$element.attr('disabled')) {\n self.$input.removeAttr('disabled');\n }\n self.$input.focus();\n }, self));\n if (self.options.addOnBlur && self.options.freeInput) {\n self.$input.on('focusout', $.proxy(function (event) {\n // HACK: only process on focusout when no typeahead opened, to\n // avoid adding the typeahead text as tag\n if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {\n self.add(self.$input.val());\n self.$input.val('');\n }\n }, self));\n }\n\n // Toggle the 'focus' css class on the container when it has focus\n self.$container.on({\n focusin: function focusin() {\n self.$container.addClass(self.options.focusClass);\n },\n focusout: function focusout() {\n self.$container.removeClass(self.options.focusClass);\n }\n });\n self.$container.on('keydown', 'input', $.proxy(function (event) {\n var $input = $(event.target),\n $inputWrapper = self.findInputWrapper();\n if (self.$element.attr('disabled')) {\n self.$input.attr('disabled', 'disabled');\n return;\n }\n switch (event.which) {\n // BACKSPACE\n case 8:\n if (doGetCaretPosition($input[0]) === 0) {\n var prev = $inputWrapper.prev();\n if (prev.length) {\n self.remove(prev.data('item'));\n }\n }\n break;\n\n // DELETE\n case 46:\n if (doGetCaretPosition($input[0]) === 0) {\n var next = $inputWrapper.next();\n if (next.length) {\n self.remove(next.data('item'));\n }\n }\n break;\n\n // LEFT ARROW\n case 37:\n // Try to move the input before the previous tag\n var $prevTag = $inputWrapper.prev();\n if ($input.val().length === 0 && $prevTag[0]) {\n $prevTag.before($inputWrapper);\n $input.focus();\n }\n break;\n // RIGHT ARROW\n case 39:\n // Try to move the input after the next tag\n var $nextTag = $inputWrapper.next();\n if ($input.val().length === 0 && $nextTag[0]) {\n $nextTag.after($inputWrapper);\n $input.focus();\n }\n break;\n default:\n // ignore\n }\n\n // Reset internal input's size\n var textLength = $input.val().length,\n wordSpace = Math.ceil(textLength / 5),\n size = textLength + wordSpace + 1;\n $input.attr('size', Math.max(this.inputSize, $input.val().length));\n }, self));\n self.$container.on('keypress', 'input', $.proxy(function (event) {\n var $input = $(event.target);\n if (self.$element.attr('disabled')) {\n self.$input.attr('disabled', 'disabled');\n return;\n }\n var text = $input.val(),\n maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;\n if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {\n // Only attempt to add a tag if there is data in the field\n if (text.length !== 0) {\n self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);\n $input.val('');\n }\n\n // If the field is empty, let the event triggered fire as usual\n if (self.options.cancelConfirmKeysOnEmpty === false) {\n event.preventDefault();\n }\n }\n\n // Reset internal input's size\n var textLength = $input.val().length,\n wordSpace = Math.ceil(textLength / 5),\n size = textLength + wordSpace + 1;\n $input.attr('size', Math.max(this.inputSize, $input.val().length));\n }, self));\n\n // Remove icon clicked\n self.$container.on('click', '[data-role=remove]', $.proxy(function (event) {\n if (self.$element.attr('disabled')) {\n return;\n }\n self.remove($(event.target).closest('.tag').data('item'));\n }, self));\n\n // Only add existing value as tags when using strings as tags\n if (self.options.itemValue === defaultOptions.itemValue) {\n if (self.$element[0].tagName === 'INPUT') {\n self.add(self.$element.val());\n } else {\n $('option', self.$element).each(function () {\n self.add($(this).attr('value'), true);\n });\n }\n }\n },\n /**\n * Removes all tagsinput behaviour and unregsiter all event handlers\n */\n destroy: function destroy() {\n var self = this;\n\n // Unbind events\n self.$container.off('keypress', 'input');\n self.$container.off('click', '[role=remove]');\n self.$container.remove();\n self.$element.removeData('tagsinput');\n self.$element.show();\n },\n /**\n * Sets focus on the tagsinput\n */\n focus: function focus() {\n this.$input.focus();\n },\n /**\n * Returns the internal input element\n */\n input: function input() {\n return this.$input;\n },\n /**\n * Returns the element which is wrapped around the internal input. This\n * is normally the $container, but typeahead.js moves the $input element.\n */\n findInputWrapper: function findInputWrapper() {\n var elt = this.$input[0],\n container = this.$container[0];\n while (elt && elt.parentNode !== container) elt = elt.parentNode;\n return $(elt);\n }\n };\n\n /**\n * Register JQuery plugin\n */\n $.fn.tagsinput = function (arg1, arg2, arg3) {\n var results = [];\n this.each(function () {\n var tagsinput = $(this).data('tagsinput');\n // Initialize a new tags input\n if (!tagsinput) {\n tagsinput = new TagsInput(this, arg1);\n $(this).data('tagsinput', tagsinput);\n results.push(tagsinput);\n if (this.tagName === 'SELECT') {\n $('option', $(this)).attr('selected', 'selected');\n }\n\n // Init tags from $(this).val()\n $(this).val($(this).val());\n } else if (!arg1 && !arg2) {\n // tagsinput already exists\n // no function, trying to init\n results.push(tagsinput);\n } else if (tagsinput[arg1] !== undefined) {\n // Invoke function on existing tags input\n if (tagsinput[arg1].length === 3 && arg3 !== undefined) {\n var retVal = tagsinput[arg1](arg2, null, arg3);\n } else {\n var retVal = tagsinput[arg1](arg2);\n }\n if (retVal !== undefined) results.push(retVal);\n }\n });\n if (typeof arg1 == 'string') {\n // Return the results from the invoked function calls\n return results.length > 1 ? results : results[0];\n } else {\n return results;\n }\n };\n $.fn.tagsinput.Constructor = TagsInput;\n\n /**\n * Most options support both a string or number as well as a function as\n * option value. This function makes sure that the option with the given\n * key in the given options is wrapped in a function\n */\n function makeOptionItemFunction(options, key) {\n if (typeof options[key] !== 'function') {\n var propertyName = options[key];\n options[key] = function (item) {\n return item[propertyName];\n };\n }\n }\n function makeOptionFunction(options, key) {\n if (typeof options[key] !== 'function') {\n var value = options[key];\n options[key] = function () {\n return value;\n };\n }\n }\n /**\n * HtmlEncodes the given value\n */\n var htmlEncodeContainer = $('<div />');\n function htmlEncode(value) {\n if (value) {\n return htmlEncodeContainer.text(value).html();\n } else {\n return '';\n }\n }\n\n /**\n * Returns the position of the caret in the given input field\n * http://flightschool.acylt.com/devnotes/caret-position-woes/\n */\n function doGetCaretPosition(oField) {\n var iCaretPos = 0;\n if (document.selection) {\n oField.focus();\n var oSel = document.selection.createRange();\n oSel.moveStart('character', -oField.value.length);\n iCaretPos = oSel.text.length;\n } else if (oField.selectionStart || oField.selectionStart == '0') {\n iCaretPos = oField.selectionStart;\n }\n return iCaretPos;\n }\n\n /**\n * Returns boolean indicates whether user has pressed an expected key combination.\n * @param object keyPressEvent: JavaScript event object, refer\n * http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\n * @param object lookupList: expected key combinations, as in:\n * [13, {which: 188, shiftKey: true}]\n */\n function keyCombinationInList(keyPressEvent, lookupList) {\n var found = false;\n $.each(lookupList, function (index, keyCombination) {\n if (typeof keyCombination === 'number' && keyPressEvent.which === keyCombination) {\n found = true;\n return false;\n }\n if (keyPressEvent.which === keyCombination.which) {\n var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,\n shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,\n ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;\n if (alt && shift && ctrl) {\n found = true;\n return false;\n }\n }\n });\n return found;\n }\n\n /**\n * Initialize tagsinput behaviour on inputs and selects which have\n * data-role=tagsinput\n */\n $(function () {\n $(\"input[data-role=tagsinput], select[multiple][data-role=tagsinput]\").tagsinput();\n });\n})(window.jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/jquery.tagsinput.js?")},"./buyercall/assets/scripts/vendor/material-dashboard.js":()=>{eval("/*! =========================================================\n *\n * Material Dashboard PRO - V1.1.0\n *\n * =========================================================\n *\n * Copyright 2016 Creative Tim (http://www.creative-tim.com/product/material-dashboard-pro)\n *\n *\n * _oo0oo_\n * o8888888o\n * 88\" . \"88\n * (| -_- |)\n * 0\\ = /0\n * ___/`---'\\___\n * .' \\| |// '.\n * / \\||| : |||// \\\n * / _||||| -:- |||||- \\\n * | | \\\\ - /// | |\n * | \\_| ''\\---/'' |_/ |\n * \\ .-\\__ '-' ___/-. /\n * ___'. .' /--.--\\ `. .'___\n * .\"\" '< `.___\\_<|>_/___.' >' \"\".\n * | | : `- \\`.;`\\ _ /`;.`/ - ` : | |\n * \\ \\ `_. \\_ __\\ /__ _/ .-` / /\n * =====`-.____`.___ \\_____/___.-`___.-'=====\n * `=---='\n *\n * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n *\n * Buddha Bless: \"No Bugs\"\n *\n * ========================================================= */\n\n(function () {\n isWindows = navigator.platform.indexOf('Win') > -1 ? true : false;\n if (isWindows && !$('body').hasClass('sidebar-mini')) {\n // if we are on windows OS we activate the perfectScrollbar function\n $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar();\n $('html').addClass('perfect-scrollbar-on');\n } else {\n $('html').addClass('perfect-scrollbar-off');\n }\n})();\nvar $layer, $navbar, $navbar_form, $nav_content, $sidebar, $sidebar_nav, $sidebar_wrapper, $toggle, Chartist, content_buff, hover_count, image_src, main_panel_height, md, mobile_menu_content, nav_content, sidebar_container, window_width, isWindows;\nvar breakCards = true;\nvar searchVisible = 0;\nvar transparent = true;\nvar transparentDemo = true;\nvar fixedTop = false;\nvar mobile_menu_visible = 0,\n mobile_menu_initialized = false,\n toggle_initialized = false,\n bootstrap_nav_initialized = false;\nvar seq = 0,\n delays = 80,\n durations = 500;\nvar seq2 = 0,\n delays2 = 80,\n durations2 = 500;\n$(document).ready(function () {\n $sidebar = $('.sidebar');\n $.material.init();\n\n // We put modals out of wrapper to working properly\n $('.modal').appendTo(\"body\");\n md.initSidebarsCheck();\n if ($('body').hasClass('sidebar-mini')) {\n md.misc.sidebar_mini_active = true;\n }\n window_width = $(window).width();\n\n // check if there is an image set for the sidebar's background\n md.checkSidebarImage();\n md.initMinimizeSidebar();\n\n // Activate bootstrap-select\n if ($(\".selectpicker\").length != 0) {\n $(\".selectpicker\").selectpicker();\n }\n\n // Activate the tooltips\n $('[rel=\"tooltip\"]').tooltip();\n\n //removed class label and label-color from tag span and replaced with data-color\n var tagClass = $('.tagsinput').data('color');\n $('.tagsinput').tagsinput({\n tagClass: ' tag-' + tagClass + ' '\n });\n\n // Activate bootstrap-select\n $(\".select\").dropdown({\n \"dropdownClass\": \"dropdown-menu\",\n \"optionClass\": \"\"\n });\n $('.form-control').on(\"focus\", function () {\n $(this).parent('.input-group').addClass(\"input-group-focus\");\n }).on(\"blur\", function () {\n $(this).parent(\".input-group\").removeClass(\"input-group-focus\");\n });\n if (breakCards == true) {\n // We break the cards headers if there is too much stress on them :-)\n $('[data-header-animation=\"true\"]').each(function () {\n var $fix_button = $(this);\n var $card = $(this).parent('.card');\n $card.find('.fix-broken-card').click(function () {\n console.log(this);\n var $header = $(this).parent().parent().siblings('.card-header, .card-image');\n $header.removeClass('hinge').addClass('fadeInDown');\n $card.attr('data-count', 0);\n setTimeout(function () {\n $header.removeClass('fadeInDown animate');\n }, 480);\n });\n $card.mouseenter(function () {\n var $this = $(this);\n hover_count = parseInt($this.attr('data-count'), 10) + 1 || 0;\n $this.attr(\"data-count\", hover_count);\n if (hover_count >= 20) {\n $(this).children('.card-header, .card-image').addClass('hinge animated');\n }\n });\n });\n }\n});\n\n// activate collapse right menu when the windows is resized\n$(window).resize(function () {\n md.initSidebarsCheck();\n\n // reset the seq for charts drawing animations\n seq = seq2 = 0;\n});\nmd = {\n misc: {\n navbar_menu_visible: 0,\n active_collapse: true,\n disabled_collapse_init: 0\n },\n checkSidebarImage: function checkSidebarImage() {\n $sidebar = $('.sidebar');\n image_src = $sidebar.data('image');\n if (image_src !== undefined) {\n sidebar_container = '<div class=\"sidebar-background\" style=\"background-image: url(' + image_src + ') \"/>';\n $sidebar.append(sidebar_container);\n }\n },\n initSliders: function initSliders() {\n // Sliders for demo purpose\n $('#sliderRegular').noUiSlider({\n start: 40,\n connect: \"lower\",\n range: {\n min: 0,\n max: 100\n }\n });\n $('#sliderDouble').noUiSlider({\n start: [20, 60],\n connect: true,\n range: {\n min: 0,\n max: 100\n }\n });\n },\n initSidebarsCheck: function initSidebarsCheck() {\n if ($(window).width() <= 991) {\n if ($sidebar.length != 0) {\n md.initRightMenu();\n } else {\n md.initBootstrapNavbarMenu();\n }\n }\n },\n initMinimizeSidebar: function initMinimizeSidebar() {\n // when we are on a Desktop Screen and the collapse is triggered we check if the sidebar mini is active or not. If it is active then we don't let the collapse to show the elements because the elements from the collapse are showing on the hover state over the icons in sidebar mini, not on the click.\n $('.sidebar .collapse').on('show.bs.collapse', function () {\n if ($(window).width() > 991 && md.misc.sidebar_mini_active == true) {\n return false;\n } else {\n return true;\n }\n });\n $('#minimizeSidebar').click(function () {\n var $btn = $(this);\n if (md.misc.sidebar_mini_active == true) {\n $('body').removeClass('sidebar-mini');\n md.misc.sidebar_mini_active = false;\n if (isWindows) {\n $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar();\n }\n } else {\n $('.sidebar .collapse').collapse('hide').on('hidden.bs.collapse', function () {\n $(this).css('height', 'auto');\n });\n if (isWindows) {\n $('.sidebar .sidebar-wrapper, .main-panel').perfectScrollbar('destroy');\n }\n setTimeout(function () {\n $('body').addClass('sidebar-mini');\n $('.sidebar .collapse').css('height', 'auto');\n md.misc.sidebar_mini_active = true;\n }, 300);\n }\n\n // we simulate the window Resize so the charts will get updated in realtime.\n var simulateWindowResize = setInterval(function () {\n window.dispatchEvent(new Event('resize'));\n }, 180);\n\n // we stop the simulation of Window Resize after the animations are completed\n setTimeout(function () {\n clearInterval(simulateWindowResize);\n }, 1000);\n });\n },\n checkScrollForTransparentNavbar: debounce(function () {\n if ($(document).scrollTop() > 260) {\n if (transparent) {\n transparent = false;\n $('.navbar-color-on-scroll').removeClass('navbar-transparent');\n }\n } else {\n if (!transparent) {\n transparent = true;\n $('.navbar-color-on-scroll').addClass('navbar-transparent');\n }\n }\n }, 17),\n initRightMenu: debounce(function () {\n $sidebar_wrapper = $('.sidebar-wrapper');\n if (!mobile_menu_initialized) {\n $navbar = $('nav').find('.navbar-collapse').first().clone(true);\n nav_content = '';\n mobile_menu_content = '';\n $navbar.children('ul').each(function () {\n content_buff = $(this).html();\n nav_content = nav_content + content_buff;\n });\n nav_content = '<ul class=\"nav nav-mobile-menu\">' + nav_content + '</ul>';\n $navbar_form = $('nav').find('.navbar-form').clone(true);\n $sidebar_nav = $sidebar_wrapper.find(' > .nav');\n\n // insert the navbar form before the sidebar list\n $nav_content = $(nav_content);\n $nav_content.insertBefore($sidebar_nav);\n $navbar_form.insertBefore($nav_content);\n $(\".sidebar-wrapper .dropdown .dropdown-menu > li > a\").click(function (event) {\n event.stopPropagation();\n });\n\n // simulate resize so all the charts/maps will be redrawn\n window.dispatchEvent(new Event('resize'));\n mobile_menu_initialized = true;\n } else {\n if ($(window).width() > 991) {\n // reset all the additions that we made for the sidebar wrapper only if the screen is bigger than 991px\n $sidebar_wrapper.find('.navbar-form').remove();\n $sidebar_wrapper.find('.nav-mobile-menu').remove();\n mobile_menu_initialized = false;\n }\n }\n if (!toggle_initialized) {\n $toggle = $('.navbar-toggle');\n $toggle.click(function () {\n if (mobile_menu_visible == 1) {\n $('html').removeClass('nav-open');\n $('.close-layer').remove();\n setTimeout(function () {\n $toggle.removeClass('toggled');\n }, 400);\n mobile_menu_visible = 0;\n } else {\n setTimeout(function () {\n $toggle.addClass('toggled');\n }, 430);\n main_panel_height = $('.main-panel')[0].scrollHeight;\n $layer = $('<div class=\"close-layer\"></div>');\n $layer.css('height', main_panel_height + 'px');\n $layer.appendTo(\".main-panel\");\n setTimeout(function () {\n $layer.addClass('visible');\n }, 100);\n $layer.click(function () {\n $('html').removeClass('nav-open');\n mobile_menu_visible = 0;\n $layer.removeClass('visible');\n setTimeout(function () {\n $layer.remove();\n $toggle.removeClass('toggled');\n }, 400);\n });\n $('html').addClass('nav-open');\n mobile_menu_visible = 1;\n }\n });\n toggle_initialized = true;\n }\n }, 200),\n initBootstrapNavbarMenu: debounce(function () {\n if (!bootstrap_nav_initialized) {\n $navbar = $('nav').find('.navbar-collapse').first().clone(true);\n nav_content = '';\n mobile_menu_content = '';\n\n //add the content from the regular header to the mobile menu\n $navbar.children('ul').each(function () {\n content_buff = $(this).html();\n nav_content = nav_content + content_buff;\n });\n nav_content = '<ul class=\"nav nav-mobile-menu\">' + nav_content + '</ul>';\n $navbar.html(nav_content);\n $navbar.addClass('off-canvas-sidebar');\n\n // append it to the body, so it will come from the right side of the screen\n $('body').append($navbar);\n $toggle = $('.navbar-toggle');\n $navbar.find('a').removeClass('btn btn-round btn-default');\n $navbar.find('button').removeClass('btn-round btn-fill btn-info btn-primary btn-success btn-danger btn-warning btn-neutral');\n $navbar.find('button').addClass('btn-simple btn-block');\n $toggle.click(function () {\n if (mobile_menu_visible == 1) {\n $('html').removeClass('nav-open');\n $('.close-layer').remove();\n setTimeout(function () {\n $toggle.removeClass('toggled');\n }, 400);\n mobile_menu_visible = 0;\n } else {\n setTimeout(function () {\n $toggle.addClass('toggled');\n }, 430);\n $layer = $('<div class=\"close-layer\"></div>');\n $layer.appendTo(\".wrapper-full-page\");\n setTimeout(function () {\n $layer.addClass('visible');\n }, 100);\n $layer.click(function () {\n $('html').removeClass('nav-open');\n mobile_menu_visible = 0;\n $layer.removeClass('visible');\n setTimeout(function () {\n $layer.remove();\n $toggle.removeClass('toggled');\n }, 400);\n });\n $('html').addClass('nav-open');\n mobile_menu_visible = 1;\n }\n });\n bootstrap_nav_initialized = true;\n }\n }, 500),\n startAnimationForLineChart: function startAnimationForLineChart(chart) {\n chart.on('draw', function (data) {\n if (data.type === 'line' || data.type === 'area') {\n data.element.animate({\n d: {\n begin: 600,\n dur: 700,\n from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),\n to: data.path.clone().stringify(),\n easing: Chartist.Svg.Easing.easeOutQuint\n }\n });\n } else if (data.type === 'point') {\n seq++;\n data.element.animate({\n opacity: {\n begin: seq * delays,\n dur: durations,\n from: 0,\n to: 1,\n easing: 'ease'\n }\n });\n }\n });\n seq = 0;\n },\n startAnimationForBarChart: function startAnimationForBarChart(chart) {\n chart.on('draw', function (data) {\n if (data.type === 'bar') {\n seq2++;\n data.element.animate({\n opacity: {\n begin: seq2 * delays2,\n dur: durations2,\n from: 0,\n to: 1,\n easing: 'ease'\n }\n });\n }\n });\n seq2 = 0;\n }\n};\n\n// Returns a function, that, as long as it continues to be invoked, will not\n// be triggered. The function will be called after it stops being called for\n// N milliseconds. If `immediate` is passed, trigger the function on the\n// leading edge, instead of the trailing.\n\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n }, wait);\n if (immediate && !timeout) func.apply(context, args);\n };\n}\n;\n\n// close notification on close button click\n$(document).ready(function () {\n $(\".close\").click(function () {\n $(\".alert-close\").hide();\n });\n});\n// Hide alerts on the credit card payment page\n$(document).ready(function () {\n $(\".payment-alert\").hide();\n});\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/material-dashboard.js?")},"./buyercall/assets/scripts/vendor/material.min.js":()=>{eval('!function (t) {\n function o(t) {\n return "undefined" == typeof t.which ? !0 : "number" == typeof t.which && t.which > 0 ? !t.ctrlKey && !t.metaKey && !t.altKey && 8 != t.which && 9 != t.which && 13 != t.which && 16 != t.which && 17 != t.which && 20 != t.which && 27 != t.which : !1;\n }\n function i(o) {\n var i = t(o);\n i.prop("disabled") || i.closest(".form-group").addClass("is-focused");\n }\n function n(o) {\n o.closest("label").hover(function () {\n var o = t(this).find("input");\n o.prop("disabled") || i(o);\n }, function () {\n e(t(this).find("input"));\n });\n }\n function e(o) {\n t(o).closest(".form-group").removeClass("is-focused");\n }\n t.expr[":"].notmdproc = function (o) {\n return t(o).data("mdproc") ? !1 : !0;\n }, t.material = {\n options: {\n validate: !0,\n input: !0,\n ripples: !0,\n checkbox: !0,\n togglebutton: !0,\n radio: !0,\n arrive: !0,\n autofill: !1,\n withRipples: [".btn:not(.btn-link)", ".card-image", ".navbar a:not(.withoutripple)", ".footer a:not(.withoutripple)", ".dropdown-menu a", ".nav-tabs a:not(.withoutripple)", ".withripple", ".pagination li:not(.active):not(.disabled) a:not(.withoutripple)"].join(","),\n inputElements: "input.form-control, textarea.form-control, select.form-control",\n checkboxElements: ".checkbox > label > input[type=checkbox]",\n togglebuttonElements: ".togglebutton > label > input[type=checkbox]",\n radioElements: ".radio > label > input[type=radio]"\n },\n checkbox: function checkbox(o) {\n var i = t(o ? o : this.options.checkboxElements).filter(":notmdproc").data("mdproc", !0).after("<span class=\'checkbox-material\'><span class=\'check\'></span></span>");\n n(i);\n },\n togglebutton: function togglebutton(o) {\n var i = t(o ? o : this.options.togglebuttonElements).filter(":notmdproc").data("mdproc", !0).after("<span class=\'toggle\'></span>");\n n(i);\n },\n radio: function radio(o) {\n var i = t(o ? o : this.options.radioElements).filter(":notmdproc").data("mdproc", !0).after("<span class=\'circle\'></span><span class=\'check\'></span>");\n n(i);\n },\n input: function input(o) {\n t(o ? o : this.options.inputElements).filter(":notmdproc").data("mdproc", !0).each(function () {\n var o = t(this),\n i = o.closest(".form-group");\n 0 === i.length && (o.wrap("<div class=\'form-group\'></div>"), i = o.closest(".form-group")), o.attr("data-hint") && (o.after("<p class=\'help-block\'>" + o.attr("data-hint") + "</p>"), o.removeAttr("data-hint"));\n var n = {\n "input-lg": "form-group-lg",\n "input-sm": "form-group-sm"\n };\n if (t.each(n, function (t, n) {\n o.hasClass(t) && (o.removeClass(t), i.addClass(n));\n }), o.hasClass("floating-label")) {\n var e = o.attr("placeholder");\n o.attr("placeholder", null).removeClass("floating-label");\n var a = o.attr("id"),\n r = "";\n a && (r = "for=\'" + a + "\'"), i.addClass("label-floating"), o.after("<label " + r + "class=\'control-label\'>" + e + "</label>");\n }\n (null === o.val() || "undefined" == o.val() || "" === o.val()) && i.addClass("is-empty"), i.append("<span class=\'material-input\'></span>"), i.find("input[type=file]").length > 0 && i.addClass("is-fileinput");\n });\n },\n attachInputEventHandlers: function attachInputEventHandlers() {\n var n = this.options.validate;\n t(document).on("change", ".checkbox input[type=checkbox]", function () {\n t(this).blur();\n }).on("keydown paste", ".form-control", function (i) {\n o(i) && t(this).closest(".form-group").removeClass("is-empty");\n }).on("keyup change", ".form-control", function () {\n var o = t(this),\n i = o.closest(".form-group"),\n e = "undefined" == typeof o[0].checkValidity || o[0].checkValidity();\n "" === o.val() ? i.addClass("is-empty") : i.removeClass("is-empty"), n && (e ? i.removeClass("has-error") : i.addClass("has-error"));\n }).on("focus", ".form-control, .form-group.is-fileinput", function () {\n i(this);\n }).on("blur", ".form-control, .form-group.is-fileinput", function () {\n e(this);\n }).on("change", ".form-group input", function () {\n var o = t(this);\n if ("file" != o.attr("type")) {\n var i = o.closest(".form-group"),\n n = o.val();\n n ? i.removeClass("is-empty") : i.addClass("is-empty");\n }\n }).on("change", ".form-group.is-fileinput input[type=\'file\']", function () {\n var o = t(this),\n i = o.closest(".form-group"),\n n = "";\n t.each(this.files, function (t, o) {\n n += o.name + ", ";\n }), n = n.substring(0, n.length - 2), n ? i.removeClass("is-empty") : i.addClass("is-empty"), i.find("input.form-control[readonly]").val(n);\n });\n },\n ripples: function ripples(o) {\n t(o ? o : this.options.withRipples).ripples();\n },\n autofill: function autofill() {\n var o = setInterval(function () {\n t("input[type!=checkbox]").each(function () {\n var o = t(this);\n o.val() && o.val() !== o.attr("value") && o.trigger("change");\n });\n }, 100);\n setTimeout(function () {\n clearInterval(o);\n }, 1e4);\n },\n attachAutofillEventHandlers: function attachAutofillEventHandlers() {\n var o;\n t(document).on("focus", "input", function () {\n var i = t(this).parents("form").find("input").not("[type=file]");\n o = setInterval(function () {\n i.each(function () {\n var o = t(this);\n o.val() !== o.attr("value") && o.trigger("change");\n });\n }, 100);\n }).on("blur", ".form-group input", function () {\n clearInterval(o);\n });\n },\n init: function init(o) {\n this.options = t.extend({}, this.options, o);\n var i = t(document);\n t.fn.ripples && this.options.ripples && this.ripples(), this.options.input && (this.input(), this.attachInputEventHandlers()), this.options.checkbox && this.checkbox(), this.options.togglebutton && this.togglebutton(), this.options.radio && this.radio(), this.options.autofill && (this.autofill(), this.attachAutofillEventHandlers()), document.arrive && this.options.arrive && (t.fn.ripples && this.options.ripples && i.arrive(this.options.withRipples, function () {\n t.material.ripples(t(this));\n }), this.options.input && i.arrive(this.options.inputElements, function () {\n t.material.input(t(this));\n }), this.options.checkbox && i.arrive(this.options.checkboxElements, function () {\n t.material.checkbox(t(this));\n }), this.options.radio && i.arrive(this.options.radioElements, function () {\n t.material.radio(t(this));\n }), this.options.togglebutton && i.arrive(this.options.togglebuttonElements, function () {\n t.material.togglebutton(t(this));\n }));\n }\n };\n}(jQuery), function (t, o, i, n) {\n "use strict";\n\n function e(o, i) {\n r = this, this.element = t(o), this.options = t.extend({}, s, i), this._defaults = s, this._name = a, this.init();\n }\n var a = "ripples",\n r = null,\n s = {};\n e.prototype.init = function () {\n var i = this.element;\n i.on("mousedown touchstart", function (n) {\n if (!r.isTouch() || "mousedown" !== n.type) {\n i.find(".ripple-container").length || i.append(\'<div class="ripple-container"></div>\');\n var e = i.children(".ripple-container"),\n a = r.getRelY(e, n),\n s = r.getRelX(e, n);\n if (a || s) {\n var l = r.getRipplesColor(i),\n p = t("<div></div>");\n p.addClass("ripple").css({\n left: s,\n top: a,\n "background-color": l\n }), e.append(p), function () {\n return o.getComputedStyle(p[0]).opacity;\n }(), r.rippleOn(i, p), setTimeout(function () {\n r.rippleEnd(p);\n }, 500), i.on("mouseup mouseleave touchend", function () {\n p.data("mousedown", "off"), "off" === p.data("animating") && r.rippleOut(p);\n });\n }\n }\n });\n }, e.prototype.getNewSize = function (t, o) {\n return Math.max(t.outerWidth(), t.outerHeight()) / o.outerWidth() * 2.5;\n }, e.prototype.getRelX = function (t, o) {\n var i = t.offset();\n return r.isTouch() ? (o = o.originalEvent, 1 === o.touches.length ? o.touches[0].pageX - i.left : !1) : o.pageX - i.left;\n }, e.prototype.getRelY = function (t, o) {\n var i = t.offset();\n return r.isTouch() ? (o = o.originalEvent, 1 === o.touches.length ? o.touches[0].pageY - i.top : !1) : o.pageY - i.top;\n }, e.prototype.getRipplesColor = function (t) {\n var i = t.data("ripple-color") ? t.data("ripple-color") : o.getComputedStyle(t[0]).color;\n return i;\n }, e.prototype.hasTransitionSupport = function () {\n var t = i.body || i.documentElement,\n o = t.style,\n e = o.transition !== n || o.WebkitTransition !== n || o.MozTransition !== n || o.MsTransition !== n || o.OTransition !== n;\n return e;\n }, e.prototype.isTouch = function () {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n }, e.prototype.rippleEnd = function (t) {\n t.data("animating", "off"), "off" === t.data("mousedown") && r.rippleOut(t);\n }, e.prototype.rippleOut = function (t) {\n t.off(), r.hasTransitionSupport() ? t.addClass("ripple-out") : t.animate({\n opacity: 0\n }, 100, function () {\n t.trigger("transitionend");\n }), t.on("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function () {\n t.remove();\n });\n }, e.prototype.rippleOn = function (t, o) {\n var i = r.getNewSize(t, o);\n r.hasTransitionSupport() ? o.css({\n "-ms-transform": "scale(" + i + ")",\n "-moz-transform": "scale(" + i + ")",\n "-webkit-transform": "scale(" + i + ")",\n transform: "scale(" + i + ")"\n }).addClass("ripple-on").data("animating", "on").data("mousedown", "on") : o.animate({\n width: 2 * Math.max(t.outerWidth(), t.outerHeight()),\n height: 2 * Math.max(t.outerWidth(), t.outerHeight()),\n "margin-left": -1 * Math.max(t.outerWidth(), t.outerHeight()),\n "margin-top": -1 * Math.max(t.outerWidth(), t.outerHeight()),\n opacity: .2\n }, 500, function () {\n o.trigger("transitionend");\n });\n }, t.fn.ripples = function (o) {\n return this.each(function () {\n t.data(this, "plugin_" + a) || t.data(this, "plugin_" + a, new e(this, o));\n });\n };\n}(jQuery, window, document);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/material.min.js?')},"./buyercall/assets/scripts/vendor/nouislider.min.js":()=>{eval('function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/*\r\n\r\n$.Link (part of noUiSlider) - WTFPL */\n(function (c) {\n function m(a, c, d) {\n if ((a[c] || a[d]) && a[c] === a[d]) throw Error("(Link) \'" + c + "\' can\'t match \'" + d + "\'.\'");\n }\n function r(a) {\n void 0 === a && (a = {});\n if ("object" !== _typeof(a)) throw Error("(Format) \'format\' option must be an object.");\n var h = {};\n c(u).each(function (c, n) {\n if (void 0 === a[n]) h[n] = A[c];else if (_typeof(a[n]) === _typeof(A[c])) {\n if ("decimals" === n && (0 > a[n] || 7 < a[n])) throw Error("(Format) \'format.decimals\' option must be between 0 and 7.");\n h[n] = a[n];\n } else throw Error("(Format) \'format." + n + "\' must be a " + _typeof(A[c]) + ".");\n });\n m(h, "mark", "thousand");\n m(h, "prefix", "negative");\n m(h, "prefix", "negativeBefore");\n this.r = h;\n }\n function k(a, h) {\n "object" !== _typeof(a) && c.error("(Link) Initialize with an object.");\n return new k.prototype.p(a.target || function () {}, a.method, a.format || {}, h);\n }\n var u = "decimals mark thousand prefix postfix encoder decoder negative negativeBefore to from".split(" "),\n A = [2, ".", "", "", "", function (a) {\n return a;\n }, function (a) {\n return a;\n }, "-", "", function (a) {\n return a;\n }, function (a) {\n return a;\n }];\n r.prototype.a = function (a) {\n return this.r[a];\n };\n r.prototype.L = function (a) {\n function c(a) {\n return a.split("").reverse().join("");\n }\n a = this.a("encoder")(a);\n var d = this.a("decimals"),\n n = "",\n k = "",\n m = "",\n r = "";\n 0 === parseFloat(a.toFixed(d)) && (a = "0");\n 0 > a && (n = this.a("negative"), k = this.a("negativeBefore"));\n a = Math.abs(a).toFixed(d).toString();\n a = a.split(".");\n this.a("thousand") ? (m = c(a[0]).match(/.{1,3}/g), m = c(m.join(c(this.a("thousand"))))) : m = a[0];\n this.a("mark") && 1 < a.length && (r = this.a("mark") + a[1]);\n return this.a("to")(k + this.a("prefix") + n + m + r + this.a("postfix"));\n };\n r.prototype.w = function (a) {\n function c(a) {\n return a.replace(/[\\-\\/\\\\\\^$*+?.()|\\[\\]{}]/g, "\\\\$&");\n }\n var d;\n if (null === a || void 0 === a) return !1;\n a = this.a("from")(a);\n a = a.toString();\n d = a.replace(RegExp("^" + c(this.a("negativeBefore"))), "");\n a !== d ? (a = d, d = "-") : d = "";\n a = a.replace(RegExp("^" + c(this.a("prefix"))), "");\n this.a("negative") && (d = "", a = a.replace(RegExp("^" + c(this.a("negative"))), "-"));\n a = a.replace(RegExp(c(this.a("postfix")) + "$"), "").replace(RegExp(c(this.a("thousand")), "g"), "").replace(this.a("mark"), ".");\n a = this.a("decoder")(parseFloat(d + a));\n return isNaN(a) ? !1 : a;\n };\n k.prototype.K = function (a, h) {\n this.method = h || "html";\n this.j = c(a.replace("-tooltip-", "") || "<div/>")[0];\n };\n k.prototype.H = function (a) {\n this.method = "val";\n this.j = document.createElement("input");\n this.j.name = a;\n this.j.type = "hidden";\n };\n k.prototype.G = function (a) {\n function h(a, c) {\n return [c ? null : a, c ? a : null];\n }\n var d = this;\n this.method = "val";\n this.target = a.on("change", function (a) {\n d.B.val(h(c(a.target).val(), d.t), {\n link: d,\n set: !0\n });\n });\n };\n k.prototype.p = function (a, h, d, k) {\n this.g = d;\n this.update = !k;\n if ("string" === typeof a && 0 === a.indexOf("-tooltip-")) this.K(a, h);else if ("string" === typeof a && 0 !== a.indexOf("-")) this.H(a);else if ("function" === typeof a) this.target = !1, this.method = a;else {\n if (a instanceof c || c.zepto && c.zepto.isZ(a)) {\n if (!h) {\n if (a.is("input, select, textarea")) {\n this.G(a);\n return;\n }\n h = "html";\n }\n if ("function" === typeof h || "string" === typeof h && a[h]) {\n this.method = h;\n this.target = a;\n return;\n }\n }\n throw new RangeError("(Link) Invalid Link.");\n }\n };\n k.prototype.write = function (a, c, d, k) {\n if (!this.update || !1 !== k) if (this.u = a, this.F = a = this.format(a), "function" === typeof this.method) this.method.call(this.target[0] || d[0], a, c, d);else this.target[this.method](a, c, d);\n };\n k.prototype.q = function (a) {\n this.g = new r(c.extend({}, a, this.g instanceof r ? this.g.r : this.g));\n };\n k.prototype.J = function (a) {\n this.B = a;\n };\n k.prototype.I = function (a) {\n this.t = a;\n };\n k.prototype.format = function (a) {\n return this.g.L(a);\n };\n k.prototype.A = function (a) {\n return this.g.w(a);\n };\n k.prototype.p.prototype = k.prototype;\n c.Link = k;\n})(window.jQuery || window.Zepto); /*\r\n $.fn.noUiSlider - WTFPL - refreshless.com/nouislider/ */\n(function (c) {\n function m(e) {\n return "number" === typeof e && !isNaN(e) && isFinite(e);\n }\n function r(e) {\n return c.isArray(e) ? e : [e];\n }\n function k(e, b) {\n e.addClass(b);\n setTimeout(function () {\n e.removeClass(b);\n }, 300);\n }\n function u(e, b) {\n return 100 * b / (e[1] - e[0]);\n }\n function A(e, b) {\n if (b >= e.d.slice(-1)[0]) return 100;\n for (var a = 1, c, f, d; b >= e.d[a];) a++;\n c = e.d[a - 1];\n f = e.d[a];\n d = e.c[a - 1];\n c = [c, f];\n return d + u(c, 0 > c[0] ? b + Math.abs(c[0]) : b - c[0]) / (100 / (e.c[a] - d));\n }\n function a(e, b) {\n if (100 <= b) return e.d.slice(-1)[0];\n for (var a = 1, c, f, d; b >= e.c[a];) a++;\n c = e.d[a - 1];\n f = e.d[a];\n d = e.c[a - 1];\n c = [c, f];\n return 100 / (e.c[a] - d) * (b - d) * (c[1] - c[0]) / 100 + c[0];\n }\n function h(a, b) {\n for (var c = 1, g; (a.dir ? 100 - b : b) >= a.c[c];) c++;\n if (a.m) return g = a.c[c - 1], c = a.c[c], b - g > (c - g) / 2 ? c : g;\n a.h[c - 1] ? (g = a.h[c - 1], c = a.c[c - 1] + Math.round((b - a.c[c - 1]) / g) * g) : c = b;\n return c;\n }\n function d(a, b) {\n if (!m(b)) throw Error("noUiSlider: \'step\' is not numeric.");\n a.h[0] = b;\n }\n function n(a, b) {\n if ("object" !== _typeof(b) || c.isArray(b)) throw Error("noUiSlider: \'range\' is not an object.");\n if (void 0 === b.min || void 0 === b.max) throw Error("noUiSlider: Missing \'min\' or \'max\' in \'range\'.");\n c.each(b, function (b, g) {\n var d;\n "number" === typeof g && (g = [g]);\n if (!c.isArray(g)) throw Error("noUiSlider: \'range\' contains invalid value.");\n d = "min" === b ? 0 : "max" === b ? 100 : parseFloat(b);\n if (!m(d) || !m(g[0])) throw Error("noUiSlider: \'range\' value isn\'t numeric.");\n a.c.push(d);\n a.d.push(g[0]);\n d ? a.h.push(isNaN(g[1]) ? !1 : g[1]) : isNaN(g[1]) || (a.h[0] = g[1]);\n });\n c.each(a.h, function (b, c) {\n if (!c) return !0;\n a.h[b] = u([a.d[b], a.d[b + 1]], c) / (100 / (a.c[b + 1] - a.c[b]));\n });\n }\n function E(a, b) {\n "number" === typeof b && (b = [b]);\n if (!c.isArray(b) || !b.length || 2 < b.length) throw Error("noUiSlider: \'start\' option is incorrect.");\n a.b = b.length;\n a.start = b;\n }\n function I(a, b) {\n a.m = b;\n if ("boolean" !== typeof b) throw Error("noUiSlider: \'snap\' option must be a boolean.");\n }\n function J(a, b) {\n if ("lower" === b && 1 === a.b) a.i = 1;else if ("upper" === b && 1 === a.b) a.i = 2;else if (!0 === b && 2 === a.b) a.i = 3;else if (!1 === b) a.i = 0;else throw Error("noUiSlider: \'connect\' option doesn\'t match handle count.");\n }\n function D(a, b) {\n switch (b) {\n case "horizontal":\n a.k = 0;\n break;\n case "vertical":\n a.k = 1;\n break;\n default:\n throw Error("noUiSlider: \'orientation\' option is invalid.");\n }\n }\n function K(a, b) {\n if (2 < a.c.length) throw Error("noUiSlider: \'margin\' option is only supported on linear sliders.");\n a.margin = u(a.d, b);\n if (!m(b)) throw Error("noUiSlider: \'margin\' option must be numeric.");\n }\n function L(a, b) {\n switch (b) {\n case "ltr":\n a.dir = 0;\n break;\n case "rtl":\n a.dir = 1;\n a.i = [0, 2, 1, 3][a.i];\n break;\n default:\n throw Error("noUiSlider: \'direction\' option was not recognized.");\n }\n }\n function M(a, b) {\n if ("string" !== typeof b) throw Error("noUiSlider: \'behaviour\' must be a string containing options.");\n var c = 0 <= b.indexOf("snap");\n a.n = {\n s: 0 <= b.indexOf("tap") || c,\n extend: 0 <= b.indexOf("extend"),\n v: 0 <= b.indexOf("drag"),\n fixed: 0 <= b.indexOf("fixed"),\n m: c\n };\n }\n function N(a, b, d) {\n a.o = [b.lower, b.upper];\n a.g = b.format;\n c.each(a.o, function (a, e) {\n if (!c.isArray(e)) throw Error("noUiSlider: \'serialization." + (a ? "upper" : "lower") + "\' must be an array.");\n c.each(e, function () {\n if (!(this instanceof c.Link)) throw Error("noUiSlider: \'serialization." + (a ? "upper" : "lower") + "\' can only contain Link instances.");\n this.I(a);\n this.J(d);\n this.q(b.format);\n });\n });\n a.dir && 1 < a.b && a.o.reverse();\n }\n function O(a, b) {\n var f = {\n c: [],\n d: [],\n h: [!1],\n margin: 0\n },\n g;\n g = {\n step: {\n e: !1,\n f: d\n },\n start: {\n e: !0,\n f: E\n },\n connect: {\n e: !0,\n f: J\n },\n direction: {\n e: !0,\n f: L\n },\n range: {\n e: !0,\n f: n\n },\n snap: {\n e: !1,\n f: I\n },\n orientation: {\n e: !1,\n f: D\n },\n margin: {\n e: !1,\n f: K\n },\n behaviour: {\n e: !0,\n f: M\n },\n serialization: {\n e: !0,\n f: N\n }\n };\n a = c.extend({\n connect: !1,\n direction: "ltr",\n behaviour: "tap",\n orientation: "horizontal"\n }, a);\n a.serialization = c.extend({\n lower: [],\n upper: [],\n format: {}\n }, a.serialization);\n c.each(g, function (c, d) {\n if (void 0 === a[c]) {\n if (d.e) throw Error("noUiSlider: \'" + c + "\' is required.");\n return !0;\n }\n d.f(f, a[c], b);\n });\n f.style = f.k ? "top" : "left";\n return f;\n }\n function P(a, b) {\n var d = c("<div><div/></div>").addClass(f[2]),\n g = ["-lower", "-upper"];\n a.dir && g.reverse();\n d.children().addClass(f[3] + " " + f[3] + g[b]);\n return d;\n }\n function Q(a, b) {\n b.j && (b = new c.Link({\n target: c(b.j).clone().appendTo(a),\n method: b.method,\n format: b.g\n }, !0));\n return b;\n }\n function R(a, b) {\n var d,\n f = [];\n for (d = 0; d < a.b; d++) {\n var k = f,\n h = d,\n m = a.o[d],\n n = b[d].children(),\n r = a.g,\n s = void 0,\n v = [],\n s = new c.Link({}, !0);\n s.q(r);\n v.push(s);\n for (s = 0; s < m.length; s++) v.push(Q(n, m[s]));\n k[h] = v;\n }\n return f;\n }\n function S(a, b, c) {\n switch (a) {\n case 1:\n b.addClass(f[7]);\n c[0].addClass(f[6]);\n break;\n case 3:\n c[1].addClass(f[6]);\n case 2:\n c[0].addClass(f[7]);\n case 0:\n b.addClass(f[6]);\n }\n }\n function T(a, b) {\n var c,\n d = [];\n for (c = 0; c < a.b; c++) d.push(P(a, c).appendTo(b));\n return d;\n }\n function U(a, b) {\n b.addClass([f[0], f[8 + a.dir], f[4 + a.k]].join(" "));\n return c("<div/>").appendTo(b).addClass(f[1]);\n }\n function V(d, b, m) {\n function g() {\n return t[["width", "height"][b.k]]();\n }\n function n(a) {\n var b,\n c = [q.val()];\n for (b = 0; b < a.length; b++) q.trigger(a[b], c);\n }\n function u(d, p, e) {\n var g = d[0] !== l[0][0] ? 1 : 0,\n H = x[0] + b.margin,\n k = x[1] - b.margin;\n e && 1 < l.length && (p = g ? Math.max(p, H) : Math.min(p, k));\n 100 > p && (p = h(b, p));\n p = Math.max(Math.min(parseFloat(p.toFixed(7)), 100), 0);\n if (p === x[g]) return 1 === l.length ? !1 : p === H || p === k ? 0 : !1;\n d.css(b.style, p + "%");\n d.is(":first-child") && d.toggleClass(f[17], 50 < p);\n x[g] = p;\n b.dir && (p = 100 - p);\n c(y[g]).each(function () {\n this.write(a(b, p), d.children(), q);\n });\n return !0;\n }\n function B(a, b, c) {\n c || k(q, f[14]);\n u(a, b, !1);\n n(["slide", "set", "change"]);\n }\n function w(a, c, d, e) {\n a = a.replace(/\\s/g, ".nui ") + ".nui";\n c.on(a, function (a) {\n var c = q.attr("disabled");\n if (q.hasClass(f[14]) || void 0 !== c && null !== c) return !1;\n a.preventDefault();\n var c = 0 === a.type.indexOf("touch"),\n p = 0 === a.type.indexOf("mouse"),\n F = 0 === a.type.indexOf("pointer"),\n g,\n k,\n l = a;\n 0 === a.type.indexOf("MSPointer") && (F = !0);\n a.originalEvent && (a = a.originalEvent);\n c && (g = a.changedTouches[0].pageX, k = a.changedTouches[0].pageY);\n if (p || F) F || void 0 !== window.pageXOffset || (window.pageXOffset = document.documentElement.scrollLeft, window.pageYOffset = document.documentElement.scrollTop), g = a.clientX + window.pageXOffset, k = a.clientY + window.pageYOffset;\n l.C = [g, k];\n l.cursor = p;\n a = l;\n a.l = a.C[b.k];\n d(a, e);\n });\n }\n function C(a, c) {\n var b = c.b || l,\n d,\n e = !1,\n e = 100 * (a.l - c.start) / g(),\n f = b[0][0] !== l[0][0] ? 1 : 0;\n var k = c.D;\n d = e + k[0];\n e += k[1];\n 1 < b.length ? (0 > d && (e += Math.abs(d)), 100 < e && (d -= e - 100), d = [Math.max(Math.min(d, 100), 0), Math.max(Math.min(e, 100), 0)]) : d = [d, e];\n e = u(b[0], d[f], 1 === b.length);\n 1 < b.length && (e = u(b[1], d[f ? 0 : 1], !1) || e);\n e && n(["slide"]);\n }\n function s(a) {\n c("." + f[15]).removeClass(f[15]);\n a.cursor && c("body").css("cursor", "").off(".nui");\n G.off(".nui");\n q.removeClass(f[12]);\n n(["set", "change"]);\n }\n function v(a, b) {\n 1 === b.b.length && b.b[0].children().addClass(f[15]);\n a.stopPropagation();\n w(z.move, G, C, {\n start: a.l,\n b: b.b,\n D: [x[0], x[l.length - 1]]\n });\n w(z.end, G, s, null);\n a.cursor && (c("body").css("cursor", c(a.target).css("cursor")), 1 < l.length && q.addClass(f[12]), c("body").on("selectstart.nui", !1));\n }\n function D(a) {\n var d = a.l,\n e = 0;\n a.stopPropagation();\n c.each(l, function () {\n e += this.offset()[b.style];\n });\n e = d < e / 2 || 1 === l.length ? 0 : 1;\n d -= t.offset()[b.style];\n d = 100 * d / g();\n B(l[e], d, b.n.m);\n b.n.m && v(a, {\n b: [l[e]]\n });\n }\n function E(a) {\n var c = (a = a.l < t.offset()[b.style]) ? 0 : 100;\n a = a ? 0 : l.length - 1;\n B(l[a], c, !1);\n }\n var q = c(d),\n x = [-1, -1],\n t,\n y,\n l;\n if (q.hasClass(f[0])) throw Error("Slider was already initialized.");\n t = U(b, q);\n l = T(b, t);\n y = R(b, l);\n S(b.i, q, l);\n (function (a) {\n var b;\n if (!a.fixed) for (b = 0; b < l.length; b++) w(z.start, l[b].children(), v, {\n b: [l[b]]\n });\n a.s && w(z.start, t, D, {\n b: l\n });\n a.extend && (q.addClass(f[16]), a.s && w(z.start, q, E, {\n b: l\n }));\n a.v && (b = t.find("." + f[7]).addClass(f[10]), a.fixed && (b = b.add(t.children().not(b).children())), w(z.start, b, v, {\n b: l\n }));\n })(b.n);\n d.vSet = function () {\n var a = Array.prototype.slice.call(arguments, 0),\n d,\n e,\n g,\n h,\n m,\n s,\n t = r(a[0]);\n "object" === _typeof(a[1]) ? (d = a[1].set, e = a[1].link, g = a[1].update, h = a[1].animate) : !0 === a[1] && (d = !0);\n b.dir && 1 < b.b && t.reverse();\n h && k(q, f[14]);\n a = 1 < l.length ? 3 : 1;\n 1 === t.length && (a = 1);\n for (m = 0; m < a; m++) h = e || y[m % 2][0], h = h.A(t[m % 2]), !1 !== h && (h = A(b, h), b.dir && (h = 100 - h), !0 !== u(l[m % 2], h, !0) && c(y[m % 2]).each(function (a) {\n if (!a) return s = this.u, !0;\n this.write(s, l[m % 2].children(), q, g);\n }));\n !0 === d && n(["set"]);\n return this;\n };\n d.vGet = function () {\n var a,\n c = [];\n for (a = 0; a < b.b; a++) c[a] = y[a][0].F;\n return 1 === c.length ? c[0] : b.dir ? c.reverse() : c;\n };\n d.destroy = function () {\n c.each(y, function () {\n c.each(this, function () {\n this.target && this.target.off(".nui");\n });\n });\n c(this).off(".nui").removeClass(f.join(" ")).empty();\n return m;\n };\n q.val(b.start);\n }\n function W(a) {\n if (!this.length) throw Error("noUiSlider: Can\'t initialize slider on empty selection.");\n var b = O(a, this);\n return this.each(function () {\n V(this, b, a);\n });\n }\n function X(a) {\n return this.each(function () {\n var b = c(this).val(),\n d = this.destroy(),\n f = c.extend({}, d, a);\n c(this).noUiSlider(f);\n d.start === f.start && c(this).val(b);\n });\n }\n function B() {\n return this[0][arguments.length ? "vSet" : "vGet"].apply(this[0], arguments);\n }\n var G = c(document),\n C = c.fn.val,\n z = window.navigator.pointerEnabled ? {\n start: "pointerdown",\n move: "pointermove",\n end: "pointerup"\n } : window.navigator.msPointerEnabled ? {\n start: "MSPointerDown",\n move: "MSPointerMove",\n end: "MSPointerUp"\n } : {\n start: "mousedown touchstart",\n move: "mousemove touchmove",\n end: "mouseup touchend"\n },\n f = "noUi-target noUi-base noUi-origin noUi-handle noUi-horizontal noUi-vertical noUi-background noUi-connect noUi-ltr noUi-rtl noUi-dragable noUi-state-drag noUi-state-tap noUi-active noUi-extended noUi-stacking".split(" ");\n c.fn.val = function () {\n var a = arguments,\n b = c(this[0]);\n return arguments.length ? this.each(function () {\n (c(this).hasClass(f[0]) ? B : C).apply(c(this), a);\n }) : (b.hasClass(f[0]) ? B : C).call(b);\n };\n c.noUiSlider = {\n Link: c.Link\n };\n c.fn.noUiSlider = function (a, b) {\n return (b ? X : W).call(this, a);\n };\n})(window.jQuery || window.Zepto);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/nouislider.min.js?')},"./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js":(module,exports,__webpack_require__)=>{eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n/* perfect-scrollbar v0.6.13 */\n!function t(e, n, r) {\n function o(i, s) {\n if (!n[i]) {\n if (!e[i]) {\n var a = undefined;\n if (!s && a) return require(i, !0);\n if (l) return l(i, !0);\n var c = new Error("Cannot find module \'" + i + "\'");\n throw c.code = "MODULE_NOT_FOUND", c;\n }\n var u = n[i] = {\n exports: {}\n };\n e[i][0].call(u.exports, function (t) {\n var n = e[i][1][t];\n return o(n ? n : t);\n }, u, u.exports, t, e, n, r);\n }\n return n[i].exports;\n }\n for (var l = undefined, i = 0; i < r.length; i++) o(r[i]);\n return o;\n}({\n 1: [function (t, e, n) {\n "use strict";\n\n function r(t) {\n t.fn.perfectScrollbar = function (t) {\n return this.each(function () {\n if ("object" == _typeof(t) || "undefined" == typeof t) {\n var e = t;\n l.get(this) || o.initialize(this, e);\n } else {\n var n = t;\n "update" === n ? o.update(this) : "destroy" === n && o.destroy(this);\n }\n });\n };\n }\n var o = t("../main"),\n l = t("../plugin/instances");\n if (true) !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "jquery")], __WEBPACK_AMD_DEFINE_FACTORY__ = (r),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else { var i; }\n e.exports = r;\n }, {\n "../main": 7,\n "../plugin/instances": 18\n }],\n 2: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n var n = t.className.split(" ");\n n.indexOf(e) < 0 && n.push(e), t.className = n.join(" ");\n }\n function o(t, e) {\n var n = t.className.split(" "),\n r = n.indexOf(e);\n r >= 0 && n.splice(r, 1), t.className = n.join(" ");\n }\n n.add = function (t, e) {\n t.classList ? t.classList.add(e) : r(t, e);\n }, n.remove = function (t, e) {\n t.classList ? t.classList.remove(e) : o(t, e);\n }, n.list = function (t) {\n return t.classList ? Array.prototype.slice.apply(t.classList) : t.className.split(" ");\n };\n }, {}],\n 3: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n return window.getComputedStyle(t)[e];\n }\n function o(t, e, n) {\n return "number" == typeof n && (n = n.toString() + "px"), t.style[e] = n, t;\n }\n function l(t, e) {\n for (var n in e) {\n var r = e[n];\n "number" == typeof r && (r = r.toString() + "px"), t.style[n] = r;\n }\n return t;\n }\n var i = {};\n i.e = function (t, e) {\n var n = document.createElement(t);\n return n.className = e, n;\n }, i.appendTo = function (t, e) {\n return e.appendChild(t), t;\n }, i.css = function (t, e, n) {\n return "object" == _typeof(e) ? l(t, e) : "undefined" == typeof n ? r(t, e) : o(t, e, n);\n }, i.matches = function (t, e) {\n return "undefined" != typeof t.matches ? t.matches(e) : "undefined" != typeof t.matchesSelector ? t.matchesSelector(e) : "undefined" != typeof t.webkitMatchesSelector ? t.webkitMatchesSelector(e) : "undefined" != typeof t.mozMatchesSelector ? t.mozMatchesSelector(e) : "undefined" != typeof t.msMatchesSelector ? t.msMatchesSelector(e) : void 0;\n }, i.remove = function (t) {\n "undefined" != typeof t.remove ? t.remove() : t.parentNode && t.parentNode.removeChild(t);\n }, i.queryChildren = function (t, e) {\n return Array.prototype.filter.call(t.childNodes, function (t) {\n return i.matches(t, e);\n });\n }, e.exports = i;\n }, {}],\n 4: [function (t, e, n) {\n "use strict";\n\n var r = function r(t) {\n this.element = t, this.events = {};\n };\n r.prototype.bind = function (t, e) {\n "undefined" == typeof this.events[t] && (this.events[t] = []), this.events[t].push(e), this.element.addEventListener(t, e, !1);\n }, r.prototype.unbind = function (t, e) {\n var n = "undefined" != typeof e;\n this.events[t] = this.events[t].filter(function (r) {\n return !(!n || r === e) || (this.element.removeEventListener(t, r, !1), !1);\n }, this);\n }, r.prototype.unbindAll = function () {\n for (var t in this.events) this.unbind(t);\n };\n var o = function o() {\n this.eventElements = [];\n };\n o.prototype.eventElement = function (t) {\n var e = this.eventElements.filter(function (e) {\n return e.element === t;\n })[0];\n return "undefined" == typeof e && (e = new r(t), this.eventElements.push(e)), e;\n }, o.prototype.bind = function (t, e, n) {\n this.eventElement(t).bind(e, n);\n }, o.prototype.unbind = function (t, e, n) {\n this.eventElement(t).unbind(e, n);\n }, o.prototype.unbindAll = function () {\n for (var t = 0; t < this.eventElements.length; t++) this.eventElements[t].unbindAll();\n }, o.prototype.once = function (t, e, n) {\n var r = this.eventElement(t),\n o = function o(t) {\n r.unbind(e, o), n(t);\n };\n r.bind(e, o);\n }, e.exports = o;\n }, {}],\n 5: [function (t, e, n) {\n "use strict";\n\n e.exports = function () {\n function t() {\n return Math.floor(65536 * (1 + Math.random())).toString(16).substring(1);\n }\n return function () {\n return t() + t() + "-" + t() + "-" + t() + "-" + t() + "-" + t() + t() + t();\n };\n }();\n }, {}],\n 6: [function (t, e, n) {\n "use strict";\n\n var r = t("./class"),\n o = t("./dom"),\n l = n.toInt = function (t) {\n return parseInt(t, 10) || 0;\n },\n i = n.clone = function (t) {\n if (t) {\n if (t.constructor === Array) return t.map(i);\n if ("object" == _typeof(t)) {\n var e = {};\n for (var n in t) e[n] = i(t[n]);\n return e;\n }\n return t;\n }\n return null;\n };\n n.extend = function (t, e) {\n var n = i(t);\n for (var r in e) n[r] = i(e[r]);\n return n;\n }, n.isEditable = function (t) {\n return o.matches(t, "input,[contenteditable]") || o.matches(t, "select,[contenteditable]") || o.matches(t, "textarea,[contenteditable]") || o.matches(t, "button,[contenteditable]");\n }, n.removePsClasses = function (t) {\n for (var e = r.list(t), n = 0; n < e.length; n++) {\n var o = e[n];\n 0 === o.indexOf("ps-") && r.remove(t, o);\n }\n }, n.outerWidth = function (t) {\n return l(o.css(t, "width")) + l(o.css(t, "paddingLeft")) + l(o.css(t, "paddingRight")) + l(o.css(t, "borderLeftWidth")) + l(o.css(t, "borderRightWidth"));\n }, n.startScrolling = function (t, e) {\n r.add(t, "ps-in-scrolling"), "undefined" != typeof e ? r.add(t, "ps-" + e) : (r.add(t, "ps-x"), r.add(t, "ps-y"));\n }, n.stopScrolling = function (t, e) {\n r.remove(t, "ps-in-scrolling"), "undefined" != typeof e ? r.remove(t, "ps-" + e) : (r.remove(t, "ps-x"), r.remove(t, "ps-y"));\n }, n.env = {\n isWebKit: "WebkitAppearance" in document.documentElement.style,\n supportsTouch: "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch,\n supportsIePointer: null !== window.navigator.msMaxTouchPoints\n };\n }, {\n "./class": 2,\n "./dom": 3\n }],\n 7: [function (t, e, n) {\n "use strict";\n\n var r = t("./plugin/destroy"),\n o = t("./plugin/initialize"),\n l = t("./plugin/update");\n e.exports = {\n initialize: o,\n update: l,\n destroy: r\n };\n }, {\n "./plugin/destroy": 9,\n "./plugin/initialize": 17,\n "./plugin/update": 21\n }],\n 8: [function (t, e, n) {\n "use strict";\n\n e.exports = {\n handlers: ["click-rail", "drag-scrollbar", "keyboard", "wheel", "touch"],\n maxScrollbarLength: null,\n minScrollbarLength: null,\n scrollXMarginOffset: 0,\n scrollYMarginOffset: 0,\n suppressScrollX: !1,\n suppressScrollY: !1,\n swipePropagation: !0,\n useBothWheelAxes: !1,\n wheelPropagation: !1,\n wheelSpeed: 1,\n theme: "default"\n };\n }, {}],\n 9: [function (t, e, n) {\n "use strict";\n\n var r = t("../lib/helper"),\n o = t("../lib/dom"),\n l = t("./instances");\n e.exports = function (t) {\n var e = l.get(t);\n e && (e.event.unbindAll(), o.remove(e.scrollbarX), o.remove(e.scrollbarY), o.remove(e.scrollbarXRail), o.remove(e.scrollbarYRail), r.removePsClasses(t), l.remove(t));\n };\n }, {\n "../lib/dom": 3,\n "../lib/helper": 6,\n "./instances": 18\n }],\n 10: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n function n(t) {\n return t.getBoundingClientRect();\n }\n var r = function r(t) {\n t.stopPropagation();\n };\n e.event.bind(e.scrollbarY, "click", r), e.event.bind(e.scrollbarYRail, "click", function (r) {\n var o = r.pageY - window.pageYOffset - n(e.scrollbarYRail).top,\n s = o > e.scrollbarYTop ? 1 : -1;\n i(t, "top", t.scrollTop + s * e.containerHeight), l(t), r.stopPropagation();\n }), e.event.bind(e.scrollbarX, "click", r), e.event.bind(e.scrollbarXRail, "click", function (r) {\n var o = r.pageX - window.pageXOffset - n(e.scrollbarXRail).left,\n s = o > e.scrollbarXLeft ? 1 : -1;\n i(t, "left", t.scrollLeft + s * e.containerWidth), l(t), r.stopPropagation();\n });\n }\n var o = t("../instances"),\n l = t("../update-geometry"),\n i = t("../update-scroll");\n e.exports = function (t) {\n var e = o.get(t);\n r(t, e);\n };\n }, {\n "../instances": 18,\n "../update-geometry": 19,\n "../update-scroll": 20\n }],\n 11: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n function n(n) {\n var o = r + n * e.railXRatio,\n i = Math.max(0, e.scrollbarXRail.getBoundingClientRect().left) + e.railXRatio * (e.railXWidth - e.scrollbarXWidth);\n o < 0 ? e.scrollbarXLeft = 0 : o > i ? e.scrollbarXLeft = i : e.scrollbarXLeft = o;\n var s = l.toInt(e.scrollbarXLeft * (e.contentWidth - e.containerWidth) / (e.containerWidth - e.railXRatio * e.scrollbarXWidth)) - e.negativeScrollAdjustment;\n c(t, "left", s);\n }\n var r = null,\n o = null,\n s = function s(e) {\n n(e.pageX - o), a(t), e.stopPropagation(), e.preventDefault();\n },\n u = function u() {\n l.stopScrolling(t, "x"), e.event.unbind(e.ownerDocument, "mousemove", s);\n };\n e.event.bind(e.scrollbarX, "mousedown", function (n) {\n o = n.pageX, r = l.toInt(i.css(e.scrollbarX, "left")) * e.railXRatio, l.startScrolling(t, "x"), e.event.bind(e.ownerDocument, "mousemove", s), e.event.once(e.ownerDocument, "mouseup", u), n.stopPropagation(), n.preventDefault();\n });\n }\n function o(t, e) {\n function n(n) {\n var o = r + n * e.railYRatio,\n i = Math.max(0, e.scrollbarYRail.getBoundingClientRect().top) + e.railYRatio * (e.railYHeight - e.scrollbarYHeight);\n o < 0 ? e.scrollbarYTop = 0 : o > i ? e.scrollbarYTop = i : e.scrollbarYTop = o;\n var s = l.toInt(e.scrollbarYTop * (e.contentHeight - e.containerHeight) / (e.containerHeight - e.railYRatio * e.scrollbarYHeight));\n c(t, "top", s);\n }\n var r = null,\n o = null,\n s = function s(e) {\n n(e.pageY - o), a(t), e.stopPropagation(), e.preventDefault();\n },\n u = function u() {\n l.stopScrolling(t, "y"), e.event.unbind(e.ownerDocument, "mousemove", s);\n };\n e.event.bind(e.scrollbarY, "mousedown", function (n) {\n o = n.pageY, r = l.toInt(i.css(e.scrollbarY, "top")) * e.railYRatio, l.startScrolling(t, "y"), e.event.bind(e.ownerDocument, "mousemove", s), e.event.once(e.ownerDocument, "mouseup", u), n.stopPropagation(), n.preventDefault();\n });\n }\n var l = t("../../lib/helper"),\n i = t("../../lib/dom"),\n s = t("../instances"),\n a = t("../update-geometry"),\n c = t("../update-scroll");\n e.exports = function (t) {\n var e = s.get(t);\n r(t, e), o(t, e);\n };\n }, {\n "../../lib/dom": 3,\n "../../lib/helper": 6,\n "../instances": 18,\n "../update-geometry": 19,\n "../update-scroll": 20\n }],\n 12: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n function n(n, r) {\n var o = t.scrollTop;\n if (0 === n) {\n if (!e.scrollbarYActive) return !1;\n if (0 === o && r > 0 || o >= e.contentHeight - e.containerHeight && r < 0) return !e.settings.wheelPropagation;\n }\n var l = t.scrollLeft;\n if (0 === r) {\n if (!e.scrollbarXActive) return !1;\n if (0 === l && n < 0 || l >= e.contentWidth - e.containerWidth && n > 0) return !e.settings.wheelPropagation;\n }\n return !0;\n }\n var r = !1;\n e.event.bind(t, "mouseenter", function () {\n r = !0;\n }), e.event.bind(t, "mouseleave", function () {\n r = !1;\n });\n var i = !1;\n e.event.bind(e.ownerDocument, "keydown", function (c) {\n if (!(c.isDefaultPrevented && c.isDefaultPrevented() || c.defaultPrevented)) {\n var u = l.matches(e.scrollbarX, ":focus") || l.matches(e.scrollbarY, ":focus");\n if (r || u) {\n var d = document.activeElement ? document.activeElement : e.ownerDocument.activeElement;\n if (d) {\n if ("IFRAME" === d.tagName) d = d.contentDocument.activeElement;else for (; d.shadowRoot;) d = d.shadowRoot.activeElement;\n if (o.isEditable(d)) return;\n }\n var p = 0,\n f = 0;\n switch (c.which) {\n case 37:\n p = c.metaKey ? -e.contentWidth : c.altKey ? -e.containerWidth : -30;\n break;\n case 38:\n f = c.metaKey ? e.contentHeight : c.altKey ? e.containerHeight : 30;\n break;\n case 39:\n p = c.metaKey ? e.contentWidth : c.altKey ? e.containerWidth : 30;\n break;\n case 40:\n f = c.metaKey ? -e.contentHeight : c.altKey ? -e.containerHeight : -30;\n break;\n case 33:\n f = 90;\n break;\n case 32:\n f = c.shiftKey ? 90 : -90;\n break;\n case 34:\n f = -90;\n break;\n case 35:\n f = c.ctrlKey ? -e.contentHeight : -e.containerHeight;\n break;\n case 36:\n f = c.ctrlKey ? t.scrollTop : e.containerHeight;\n break;\n default:\n return;\n }\n a(t, "top", t.scrollTop - f), a(t, "left", t.scrollLeft + p), s(t), i = n(p, f), i && c.preventDefault();\n }\n }\n });\n }\n var o = t("../../lib/helper"),\n l = t("../../lib/dom"),\n i = t("../instances"),\n s = t("../update-geometry"),\n a = t("../update-scroll");\n e.exports = function (t) {\n var e = i.get(t);\n r(t, e);\n };\n }, {\n "../../lib/dom": 3,\n "../../lib/helper": 6,\n "../instances": 18,\n "../update-geometry": 19,\n "../update-scroll": 20\n }],\n 13: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n function n(n, r) {\n var o = t.scrollTop;\n if (0 === n) {\n if (!e.scrollbarYActive) return !1;\n if (0 === o && r > 0 || o >= e.contentHeight - e.containerHeight && r < 0) return !e.settings.wheelPropagation;\n }\n var l = t.scrollLeft;\n if (0 === r) {\n if (!e.scrollbarXActive) return !1;\n if (0 === l && n < 0 || l >= e.contentWidth - e.containerWidth && n > 0) return !e.settings.wheelPropagation;\n }\n return !0;\n }\n function r(t) {\n var e = t.deltaX,\n n = -1 * t.deltaY;\n return "undefined" != typeof e && "undefined" != typeof n || (e = -1 * t.wheelDeltaX / 6, n = t.wheelDeltaY / 6), t.deltaMode && 1 === t.deltaMode && (e *= 10, n *= 10), e !== e && n !== n && (e = 0, n = t.wheelDelta), t.shiftKey ? [-n, -e] : [e, n];\n }\n function o(e, n) {\n var r = t.querySelector("textarea:hover, select[multiple]:hover, .ps-child:hover");\n if (r) {\n if (!window.getComputedStyle(r).overflow.match(/(scroll|auto)/)) return !1;\n var o = r.scrollHeight - r.clientHeight;\n if (o > 0 && !(0 === r.scrollTop && n > 0 || r.scrollTop === o && n < 0)) return !0;\n var l = r.scrollLeft - r.clientWidth;\n if (l > 0 && !(0 === r.scrollLeft && e < 0 || r.scrollLeft === l && e > 0)) return !0;\n }\n return !1;\n }\n function s(s) {\n var c = r(s),\n u = c[0],\n d = c[1];\n o(u, d) || (a = !1, e.settings.useBothWheelAxes ? e.scrollbarYActive && !e.scrollbarXActive ? (d ? i(t, "top", t.scrollTop - d * e.settings.wheelSpeed) : i(t, "top", t.scrollTop + u * e.settings.wheelSpeed), a = !0) : e.scrollbarXActive && !e.scrollbarYActive && (u ? i(t, "left", t.scrollLeft + u * e.settings.wheelSpeed) : i(t, "left", t.scrollLeft - d * e.settings.wheelSpeed), a = !0) : (i(t, "top", t.scrollTop - d * e.settings.wheelSpeed), i(t, "left", t.scrollLeft + u * e.settings.wheelSpeed)), l(t), a = a || n(u, d), a && (s.stopPropagation(), s.preventDefault()));\n }\n var a = !1;\n "undefined" != typeof window.onwheel ? e.event.bind(t, "wheel", s) : "undefined" != typeof window.onmousewheel && e.event.bind(t, "mousewheel", s);\n }\n var o = t("../instances"),\n l = t("../update-geometry"),\n i = t("../update-scroll");\n e.exports = function (t) {\n var e = o.get(t);\n r(t, e);\n };\n }, {\n "../instances": 18,\n "../update-geometry": 19,\n "../update-scroll": 20\n }],\n 14: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n e.event.bind(t, "scroll", function () {\n l(t);\n });\n }\n var o = t("../instances"),\n l = t("../update-geometry");\n e.exports = function (t) {\n var e = o.get(t);\n r(t, e);\n };\n }, {\n "../instances": 18,\n "../update-geometry": 19\n }],\n 15: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n function n() {\n var t = window.getSelection ? window.getSelection() : document.getSelection ? document.getSelection() : "";\n return 0 === t.toString().length ? null : t.getRangeAt(0).commonAncestorContainer;\n }\n function r() {\n c || (c = setInterval(function () {\n return l.get(t) ? (s(t, "top", t.scrollTop + u.top), s(t, "left", t.scrollLeft + u.left), void i(t)) : void clearInterval(c);\n }, 50));\n }\n function a() {\n c && (clearInterval(c), c = null), o.stopScrolling(t);\n }\n var c = null,\n u = {\n top: 0,\n left: 0\n },\n d = !1;\n e.event.bind(e.ownerDocument, "selectionchange", function () {\n t.contains(n()) ? d = !0 : (d = !1, a());\n }), e.event.bind(window, "mouseup", function () {\n d && (d = !1, a());\n }), e.event.bind(window, "keyup", function () {\n d && (d = !1, a());\n }), e.event.bind(window, "mousemove", function (e) {\n if (d) {\n var n = {\n x: e.pageX,\n y: e.pageY\n },\n l = {\n left: t.offsetLeft,\n right: t.offsetLeft + t.offsetWidth,\n top: t.offsetTop,\n bottom: t.offsetTop + t.offsetHeight\n };\n n.x < l.left + 3 ? (u.left = -5, o.startScrolling(t, "x")) : n.x > l.right - 3 ? (u.left = 5, o.startScrolling(t, "x")) : u.left = 0, n.y < l.top + 3 ? (l.top + 3 - n.y < 5 ? u.top = -5 : u.top = -20, o.startScrolling(t, "y")) : n.y > l.bottom - 3 ? (n.y - l.bottom + 3 < 5 ? u.top = 5 : u.top = 20, o.startScrolling(t, "y")) : u.top = 0, 0 === u.top && 0 === u.left ? a() : r();\n }\n });\n }\n var o = t("../../lib/helper"),\n l = t("../instances"),\n i = t("../update-geometry"),\n s = t("../update-scroll");\n e.exports = function (t) {\n var e = l.get(t);\n r(t, e);\n };\n }, {\n "../../lib/helper": 6,\n "../instances": 18,\n "../update-geometry": 19,\n "../update-scroll": 20\n }],\n 16: [function (t, e, n) {\n "use strict";\n\n function r(t, e, n, r) {\n function o(n, r) {\n var o = t.scrollTop,\n l = t.scrollLeft,\n i = Math.abs(n),\n s = Math.abs(r);\n if (s > i) {\n if (r < 0 && o === e.contentHeight - e.containerHeight || r > 0 && 0 === o) return !e.settings.swipePropagation;\n } else if (i > s && (n < 0 && l === e.contentWidth - e.containerWidth || n > 0 && 0 === l)) return !e.settings.swipePropagation;\n return !0;\n }\n function a(e, n) {\n s(t, "top", t.scrollTop - n), s(t, "left", t.scrollLeft - e), i(t);\n }\n function c() {\n w = !0;\n }\n function u() {\n w = !1;\n }\n function d(t) {\n return t.targetTouches ? t.targetTouches[0] : t;\n }\n function p(t) {\n return !(!t.targetTouches || 1 !== t.targetTouches.length) || !(!t.pointerType || "mouse" === t.pointerType || t.pointerType === t.MSPOINTER_TYPE_MOUSE);\n }\n function f(t) {\n if (p(t)) {\n Y = !0;\n var e = d(t);\n g.pageX = e.pageX, g.pageY = e.pageY, v = new Date().getTime(), null !== y && clearInterval(y), t.stopPropagation();\n }\n }\n function h(t) {\n if (!Y && e.settings.swipePropagation && f(t), !w && Y && p(t)) {\n var n = d(t),\n r = {\n pageX: n.pageX,\n pageY: n.pageY\n },\n l = r.pageX - g.pageX,\n i = r.pageY - g.pageY;\n a(l, i), g = r;\n var s = new Date().getTime(),\n c = s - v;\n c > 0 && (m.x = l / c, m.y = i / c, v = s), o(l, i) && (t.stopPropagation(), t.preventDefault());\n }\n }\n function b() {\n !w && Y && (Y = !1, clearInterval(y), y = setInterval(function () {\n return l.get(t) && (m.x || m.y) ? Math.abs(m.x) < .01 && Math.abs(m.y) < .01 ? void clearInterval(y) : (a(30 * m.x, 30 * m.y), m.x *= .8, void (m.y *= .8)) : void clearInterval(y);\n }, 10));\n }\n var g = {},\n v = 0,\n m = {},\n y = null,\n w = !1,\n Y = !1;\n n && (e.event.bind(window, "touchstart", c), e.event.bind(window, "touchend", u), e.event.bind(t, "touchstart", f), e.event.bind(t, "touchmove", h), e.event.bind(t, "touchend", b)), r && (window.PointerEvent ? (e.event.bind(window, "pointerdown", c), e.event.bind(window, "pointerup", u), e.event.bind(t, "pointerdown", f), e.event.bind(t, "pointermove", h), e.event.bind(t, "pointerup", b)) : window.MSPointerEvent && (e.event.bind(window, "MSPointerDown", c), e.event.bind(window, "MSPointerUp", u), e.event.bind(t, "MSPointerDown", f), e.event.bind(t, "MSPointerMove", h), e.event.bind(t, "MSPointerUp", b)));\n }\n var o = t("../../lib/helper"),\n l = t("../instances"),\n i = t("../update-geometry"),\n s = t("../update-scroll");\n e.exports = function (t) {\n if (o.env.supportsTouch || o.env.supportsIePointer) {\n var e = l.get(t);\n r(t, e, o.env.supportsTouch, o.env.supportsIePointer);\n }\n };\n }, {\n "../../lib/helper": 6,\n "../instances": 18,\n "../update-geometry": 19,\n "../update-scroll": 20\n }],\n 17: [function (t, e, n) {\n "use strict";\n\n var r = t("../lib/helper"),\n o = t("../lib/class"),\n l = t("./instances"),\n i = t("./update-geometry"),\n s = {\n "click-rail": t("./handler/click-rail"),\n "drag-scrollbar": t("./handler/drag-scrollbar"),\n keyboard: t("./handler/keyboard"),\n wheel: t("./handler/mouse-wheel"),\n touch: t("./handler/touch"),\n selection: t("./handler/selection")\n },\n a = t("./handler/native-scroll");\n e.exports = function (t, e) {\n e = "object" == _typeof(e) ? e : {}, o.add(t, "ps-container");\n var n = l.add(t);\n n.settings = r.extend(n.settings, e), o.add(t, "ps-theme-" + n.settings.theme), n.settings.handlers.forEach(function (e) {\n s[e](t);\n }), a(t), i(t);\n };\n }, {\n "../lib/class": 2,\n "../lib/helper": 6,\n "./handler/click-rail": 10,\n "./handler/drag-scrollbar": 11,\n "./handler/keyboard": 12,\n "./handler/mouse-wheel": 13,\n "./handler/native-scroll": 14,\n "./handler/selection": 15,\n "./handler/touch": 16,\n "./instances": 18,\n "./update-geometry": 19\n }],\n 18: [function (t, e, n) {\n "use strict";\n\n function r(t) {\n function e() {\n a.add(t, "ps-focus");\n }\n function n() {\n a.remove(t, "ps-focus");\n }\n var r = this;\n r.settings = s.clone(c), r.containerWidth = null, r.containerHeight = null, r.contentWidth = null, r.contentHeight = null, r.isRtl = "rtl" === u.css(t, "direction"), r.isNegativeScroll = function () {\n var e = t.scrollLeft,\n n = null;\n return t.scrollLeft = -1, n = t.scrollLeft < 0, t.scrollLeft = e, n;\n }(), r.negativeScrollAdjustment = r.isNegativeScroll ? t.scrollWidth - t.clientWidth : 0, r.event = new d(), r.ownerDocument = t.ownerDocument || document, r.scrollbarXRail = u.appendTo(u.e("div", "ps-scrollbar-x-rail"), t), r.scrollbarX = u.appendTo(u.e("div", "ps-scrollbar-x"), r.scrollbarXRail), r.scrollbarX.setAttribute("tabindex", 0), r.event.bind(r.scrollbarX, "focus", e), r.event.bind(r.scrollbarX, "blur", n), r.scrollbarXActive = null, r.scrollbarXWidth = null, r.scrollbarXLeft = null, r.scrollbarXBottom = s.toInt(u.css(r.scrollbarXRail, "bottom")), r.isScrollbarXUsingBottom = r.scrollbarXBottom === r.scrollbarXBottom, r.scrollbarXTop = r.isScrollbarXUsingBottom ? null : s.toInt(u.css(r.scrollbarXRail, "top")), r.railBorderXWidth = s.toInt(u.css(r.scrollbarXRail, "borderLeftWidth")) + s.toInt(u.css(r.scrollbarXRail, "borderRightWidth")), u.css(r.scrollbarXRail, "display", "block"), r.railXMarginWidth = s.toInt(u.css(r.scrollbarXRail, "marginLeft")) + s.toInt(u.css(r.scrollbarXRail, "marginRight")), u.css(r.scrollbarXRail, "display", ""), r.railXWidth = null, r.railXRatio = null, r.scrollbarYRail = u.appendTo(u.e("div", "ps-scrollbar-y-rail"), t), r.scrollbarY = u.appendTo(u.e("div", "ps-scrollbar-y"), r.scrollbarYRail), r.scrollbarY.setAttribute("tabindex", 0), r.event.bind(r.scrollbarY, "focus", e), r.event.bind(r.scrollbarY, "blur", n), r.scrollbarYActive = null, r.scrollbarYHeight = null, r.scrollbarYTop = null, r.scrollbarYRight = s.toInt(u.css(r.scrollbarYRail, "right")), r.isScrollbarYUsingRight = r.scrollbarYRight === r.scrollbarYRight, r.scrollbarYLeft = r.isScrollbarYUsingRight ? null : s.toInt(u.css(r.scrollbarYRail, "left")), r.scrollbarYOuterWidth = r.isRtl ? s.outerWidth(r.scrollbarY) : null, r.railBorderYWidth = s.toInt(u.css(r.scrollbarYRail, "borderTopWidth")) + s.toInt(u.css(r.scrollbarYRail, "borderBottomWidth")), u.css(r.scrollbarYRail, "display", "block"), r.railYMarginHeight = s.toInt(u.css(r.scrollbarYRail, "marginTop")) + s.toInt(u.css(r.scrollbarYRail, "marginBottom")), u.css(r.scrollbarYRail, "display", ""), r.railYHeight = null, r.railYRatio = null;\n }\n function o(t) {\n return t.getAttribute("data-ps-id");\n }\n function l(t, e) {\n t.setAttribute("data-ps-id", e);\n }\n function i(t) {\n t.removeAttribute("data-ps-id");\n }\n var s = t("../lib/helper"),\n a = t("../lib/class"),\n c = t("./default-setting"),\n u = t("../lib/dom"),\n d = t("../lib/event-manager"),\n p = t("../lib/guid"),\n f = {};\n n.add = function (t) {\n var e = p();\n return l(t, e), f[e] = new r(t), f[e];\n }, n.remove = function (t) {\n delete f[o(t)], i(t);\n }, n.get = function (t) {\n return f[o(t)];\n };\n }, {\n "../lib/class": 2,\n "../lib/dom": 3,\n "../lib/event-manager": 4,\n "../lib/guid": 5,\n "../lib/helper": 6,\n "./default-setting": 8\n }],\n 19: [function (t, e, n) {\n "use strict";\n\n function r(t, e) {\n return t.settings.minScrollbarLength && (e = Math.max(e, t.settings.minScrollbarLength)), t.settings.maxScrollbarLength && (e = Math.min(e, t.settings.maxScrollbarLength)), e;\n }\n function o(t, e) {\n var n = {\n width: e.railXWidth\n };\n e.isRtl ? n.left = e.negativeScrollAdjustment + t.scrollLeft + e.containerWidth - e.contentWidth : n.left = t.scrollLeft, e.isScrollbarXUsingBottom ? n.bottom = e.scrollbarXBottom - t.scrollTop : n.top = e.scrollbarXTop + t.scrollTop, s.css(e.scrollbarXRail, n);\n var r = {\n top: t.scrollTop,\n height: e.railYHeight\n };\n e.isScrollbarYUsingRight ? e.isRtl ? r.right = e.contentWidth - (e.negativeScrollAdjustment + t.scrollLeft) - e.scrollbarYRight - e.scrollbarYOuterWidth : r.right = e.scrollbarYRight - t.scrollLeft : e.isRtl ? r.left = e.negativeScrollAdjustment + t.scrollLeft + 2 * e.containerWidth - e.contentWidth - e.scrollbarYLeft - e.scrollbarYOuterWidth : r.left = e.scrollbarYLeft + t.scrollLeft, s.css(e.scrollbarYRail, r), s.css(e.scrollbarX, {\n left: e.scrollbarXLeft,\n width: e.scrollbarXWidth - e.railBorderXWidth\n }), s.css(e.scrollbarY, {\n top: e.scrollbarYTop,\n height: e.scrollbarYHeight - e.railBorderYWidth\n });\n }\n var l = t("../lib/helper"),\n i = t("../lib/class"),\n s = t("../lib/dom"),\n a = t("./instances"),\n c = t("./update-scroll");\n e.exports = function (t) {\n var e = a.get(t);\n e.containerWidth = t.clientWidth, e.containerHeight = t.clientHeight, e.contentWidth = t.scrollWidth, e.contentHeight = t.scrollHeight;\n var n;\n t.contains(e.scrollbarXRail) || (n = s.queryChildren(t, ".ps-scrollbar-x-rail"), n.length > 0 && n.forEach(function (t) {\n s.remove(t);\n }), s.appendTo(e.scrollbarXRail, t)), t.contains(e.scrollbarYRail) || (n = s.queryChildren(t, ".ps-scrollbar-y-rail"), n.length > 0 && n.forEach(function (t) {\n s.remove(t);\n }), s.appendTo(e.scrollbarYRail, t)), !e.settings.suppressScrollX && e.containerWidth + e.settings.scrollXMarginOffset < e.contentWidth ? (e.scrollbarXActive = !0, e.railXWidth = e.containerWidth - e.railXMarginWidth, e.railXRatio = e.containerWidth / e.railXWidth, e.scrollbarXWidth = r(e, l.toInt(e.railXWidth * e.containerWidth / e.contentWidth)), e.scrollbarXLeft = l.toInt((e.negativeScrollAdjustment + t.scrollLeft) * (e.railXWidth - e.scrollbarXWidth) / (e.contentWidth - e.containerWidth))) : e.scrollbarXActive = !1, !e.settings.suppressScrollY && e.containerHeight + e.settings.scrollYMarginOffset < e.contentHeight ? (e.scrollbarYActive = !0, e.railYHeight = e.containerHeight - e.railYMarginHeight, e.railYRatio = e.containerHeight / e.railYHeight, e.scrollbarYHeight = r(e, l.toInt(e.railYHeight * e.containerHeight / e.contentHeight)), e.scrollbarYTop = l.toInt(t.scrollTop * (e.railYHeight - e.scrollbarYHeight) / (e.contentHeight - e.containerHeight))) : e.scrollbarYActive = !1, e.scrollbarXLeft >= e.railXWidth - e.scrollbarXWidth && (e.scrollbarXLeft = e.railXWidth - e.scrollbarXWidth), e.scrollbarYTop >= e.railYHeight - e.scrollbarYHeight && (e.scrollbarYTop = e.railYHeight - e.scrollbarYHeight), o(t, e), e.scrollbarXActive ? i.add(t, "ps-active-x") : (i.remove(t, "ps-active-x"), e.scrollbarXWidth = 0, e.scrollbarXLeft = 0, c(t, "left", 0)), e.scrollbarYActive ? i.add(t, "ps-active-y") : (i.remove(t, "ps-active-y"), e.scrollbarYHeight = 0, e.scrollbarYTop = 0, c(t, "top", 0));\n };\n }, {\n "../lib/class": 2,\n "../lib/dom": 3,\n "../lib/helper": 6,\n "./instances": 18,\n "./update-scroll": 20\n }],\n 20: [function (t, e, n) {\n "use strict";\n\n var r,\n o,\n l = t("./instances"),\n i = function i(t) {\n var e = document.createEvent("Event");\n return e.initEvent(t, !0, !0), e;\n };\n e.exports = function (t, e, n) {\n if ("undefined" == typeof t) throw "You must provide an element to the update-scroll function";\n if ("undefined" == typeof e) throw "You must provide an axis to the update-scroll function";\n if ("undefined" == typeof n) throw "You must provide a value to the update-scroll function";\n "top" === e && n <= 0 && (t.scrollTop = n = 0, t.dispatchEvent(i("ps-y-reach-start"))), "left" === e && n <= 0 && (t.scrollLeft = n = 0, t.dispatchEvent(i("ps-x-reach-start")));\n var s = l.get(t);\n "top" === e && n >= s.contentHeight - s.containerHeight && (n = s.contentHeight - s.containerHeight, n - t.scrollTop <= 1 ? n = t.scrollTop : t.scrollTop = n, t.dispatchEvent(i("ps-y-reach-end"))), "left" === e && n >= s.contentWidth - s.containerWidth && (n = s.contentWidth - s.containerWidth, n - t.scrollLeft <= 1 ? n = t.scrollLeft : t.scrollLeft = n, t.dispatchEvent(i("ps-x-reach-end"))), r || (r = t.scrollTop), o || (o = t.scrollLeft), "top" === e && n < r && t.dispatchEvent(i("ps-scroll-up")), "top" === e && n > r && t.dispatchEvent(i("ps-scroll-down")), "left" === e && n < o && t.dispatchEvent(i("ps-scroll-left")), "left" === e && n > o && t.dispatchEvent(i("ps-scroll-right")), "top" === e && (t.scrollTop = r = n, t.dispatchEvent(i("ps-scroll-y"))), "left" === e && (t.scrollLeft = o = n, t.dispatchEvent(i("ps-scroll-x")));\n };\n }, {\n "./instances": 18\n }],\n 21: [function (t, e, n) {\n "use strict";\n\n var r = t("../lib/helper"),\n o = t("../lib/dom"),\n l = t("./instances"),\n i = t("./update-geometry"),\n s = t("./update-scroll");\n e.exports = function (t) {\n var e = l.get(t);\n e && (e.negativeScrollAdjustment = e.isNegativeScroll ? t.scrollWidth - t.clientWidth : 0, o.css(e.scrollbarXRail, "display", "block"), o.css(e.scrollbarYRail, "display", "block"), e.railXMarginWidth = r.toInt(o.css(e.scrollbarXRail, "marginLeft")) + r.toInt(o.css(e.scrollbarXRail, "marginRight")), e.railYMarginHeight = r.toInt(o.css(e.scrollbarYRail, "marginTop")) + r.toInt(o.css(e.scrollbarYRail, "marginBottom")), o.css(e.scrollbarXRail, "display", "none"), o.css(e.scrollbarYRail, "display", "none"), i(t), s(t, "top", t.scrollTop), s(t, "left", t.scrollLeft), o.css(e.scrollbarXRail, "display", ""), o.css(e.scrollbarYRail, "display", ""));\n };\n }, {\n "../lib/dom": 3,\n "../lib/helper": 6,\n "./instances": 18,\n "./update-geometry": 19,\n "./update-scroll": 20\n }]\n}, {}, [1]);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js?')},"./buyercall/assets/scripts/vendor/player.min.js":function(module,exports,__webpack_require__){eval('var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { "@babel/helpers - typeof"; return _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; }, _typeof(o); }\n!function (t, e) {\n true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (e),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === \'function\' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n}(this, function () {\n "use strict";\n\n var t = {};\n return t.hasClass = function (t, e) {\n return new RegExp("(\\\\s|^)" + e + "(\\\\s|$)").test(t.attr("class"));\n }, t.addClass = function (e, s) {\n !t.hasClass(e, s) && e.attr("class", (e.getAttribute("class") ? e.getAttribute("class") + " " : "") + s);\n }, t.removeClass = function (e, s) {\n var a = e.attr("class").replace(new RegExp("(\\\\s|^)" + s + "(\\\\s|$)", "g"), "$2");\n t.hasClass(e, s) && e.attr("class", a);\n }, t.toggleClass = function (e, s) {\n t[t.hasClass(e, s) ? "removeClass" : "addClass"](e, s);\n }, t.className = function (t, e) {\n t.attr("class", e), console.log("className", t);\n }, t;\n}), function (t) {\n var e = {\n cursorPoint: function cursorPoint(t, s) {\n e.settings.pt.x = t.clientX, e.settings.pt.y = t.clientY;\n var a = s.find("svg").attr("id");\n return a = document.getElementById(a), e.settings.pt.matrixTransform(a.getScreenCTM().inverse());\n },\n angle: function angle(t, e) {\n var s = e - 50,\n a = t - 50,\n r = Math.atan2(s, a);\n return r *= 180 / Math.PI, r += 90, 0 > r && (r = 360 + r), r;\n },\n setGraphValue: function setGraphValue(s, a, r) {\n var n = r.find(e.settings.audioObj),\n i = e.settings.pc,\n o = i - parseFloat(a / n[0].duration * i, 10);\n t(s).css("strokeDashoffset", o), 0 === a && (t(s).addClass(s, "done"), s === t(e.settings.progress) && t(s).attr("class", "ended"));\n },\n reportPosition: function reportPosition(t, s) {\n var a = t.find(e.settings.progress);\n t.find(e.settings.audioObj);\n e.setGraphValue(a, s.currentTime, t);\n },\n stopAllSounds: function stopAllSounds() {\n document.addEventListener("play", function (e) {\n for (var s = document.getElementsByTagName("audio"), a = 0, r = s.length; r > a; a++) s[a] != e.target && s[a].pause(), s[a] != e.target && t(s[a]).parent("div").find(".playing").attr("class", "paused");\n }, !0);\n },\n settings: {},\n init: function init(s) {\n var a = [\'<svg viewBox="0 0 100 100" id="playable" version="1.1" xmlns="http://www.w3.org/2000/svg" width="34" height="34" data-play="playable" class="not-started playable">\', \'<g class="shape">\', \'<circle class="progress-track" cx="50" cy="50" r="47.45" stroke="#becce1" stroke-opacity="0.25" stroke-linecap="round" fill="none" stroke-width="5"/>\', \'<circle class="precache-bar" cx="50" cy="50" r="47.45" stroke="#302F32" stroke-opacity="0.25" stroke-linecap="round" fill="none" stroke-width="5" transform="rotate(-90 50 50)"/>\', \'<circle class="progress-bar" cx="50" cy="50" r="47.45" stroke="#009EF8" stroke-opacity="1" stroke-linecap="round" fill="none" stroke-width="5" transform="rotate(-90 50 50)"/>\', "</g>", \'<circle class="controls" cx="50" cy="50" r="45" stroke="none" fill="#000000" opacity="0.0" pointer-events="all"/>\', \'<g class="control pause">\', \'<line x1="40" y1="35" x2="40" y2="65" stroke="#000000" fill="none" stroke-width="8" stroke-linecap="round"/>\', \'<line x1="60" y1="35" x2="60" y2="65" stroke="#000000" fill="none" stroke-width="8" stroke-linecap="round"/>\', "</g>", \'<g class="control play">\', \'<polygon points="45,35 65,50 45,65" fill="#009EF8" stroke-width="0"></polygon>\', "</g>", \'<g class="control stop">\', \'<rect x="35" y="35" width="30" height="30" stroke="#000000" fill="none" stroke-width="1"/>\', "</g>", "</svg>"];\n a = a.join(" "), t.each(this, function (e, s) {\n var r = t(this).find("audio");\n r.attr("id", "audio" + e), a = a.replace(\'width="34"\', \'width="\' + r.data("size") + \'"\'), a = a.replace(\'height="34"\', \'height="\' + r.data("size") + \'"\'), a = a.replace(\'id="playable"\', \'id="playable\' + e + \'"\'), t(this).append(a);\n });\n var r = t(this).find("svg").attr("id");\n r = document.getElementById(r), e.defaults = {\n "this": this,\n thisSelector: this.selector.toString(),\n playObj: "playable",\n progress: ".progress-bar",\n precache: ".precache-bar",\n audioObj: "audio",\n controlsObj: ".controls",\n pt: r.createSVGPoint(),\n pc: 298.1371428256714\n }, lunar = {}, e.settings = t.extend({}, e.defaults, s), t(e.settings.controlsObj).on("click", function (s) {\n var a = t(s.currentTarget).closest(t(e.settings.thisSelector)),\n r = {\n el: a,\n activeAudio: a.find(e.settings.audioObj),\n playObj: a.find("[data-play]"),\n precache: a.find(e.settings.precache)\n };\n switch (r["class"] = r.playObj.attr("class"), r["class"].replace("playable", "").trim()) {\n case "not-started":\n e.stopAllSounds(), r.activeAudio[0].play();\n var n = document.getElementById(r.activeAudio.attr("id"));\n n.addEventListener("timeupdate", function (t) {\n e.reportPosition(a, n);\n }), r.playObj.attr("class", "playing");\n break;\n case "playing":\n r.playObj.attr("class", "playable paused"), r.activeAudio[0].pause(), t(n).off("timeupdate");\n break;\n case "paused":\n r.playObj.attr("class", "playable playing"), r.activeAudio[0].play();\n break;\n case "ended":\n r.playObj.attr("class", "not-started playable"), r.activeAudio.off("timeupdate", e.reportPosition);\n }\n }), t(e.defaults.audioObj).on("progress", function (s) {\n if (this.buffered.length > 0) {\n var a = this.buffered.end(this.buffered.length - 1),\n r = t(s.currentTarget).parent().find(e.settings.precache),\n n = t(this).closest(t(e.settings.thisSelector));\n e.setGraphValue(r, a, n);\n }\n });\n }\n };\n t.fn.mediaPlayer = function (s) {\n return e[s] ? e[s].apply(this, Array.prototype.slice.call(arguments, 1)) : "object" != _typeof(s) && s ? void t.error("Method " + s + " does not exist on jQuery.mediaPlayer") : e.init.apply(this, arguments);\n };\n}(jQuery);\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/player.min.js?')},"./buyercall/assets/scripts/vendor/sweetalert2.js":function(module,exports,__webpack_require__){eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(o) { \"@babel/helpers - typeof\"; return _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; }, _typeof(o); }\n/*!\n * sweetalert2 v5.3.5\n * Released under the MIT License.\n */\n(function (global, factory) {\n ( false ? 0 : _typeof(exports)) === 'object' && \"object\" !== 'undefined' ? module.exports = factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : 0;\n})(this, function () {\n 'use strict';\n\n var swalPrefix = 'swal2-';\n var prefix = function prefix(items) {\n var result = {};\n for (var i in items) {\n result[items[i]] = swalPrefix + items[i];\n }\n return result;\n };\n var swalClasses = prefix(['container', 'in', 'iosfix', 'modal', 'overlay', 'fade', 'show', 'hide', 'noanimation', 'close', 'content', 'spacer', 'confirm', 'cancel', 'icon', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea', 'inputerror', 'validationerror', 'progresssteps', 'activeprogressstep', 'progresscircle', 'progressline', 'loading', 'styled']);\n var iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);\n var defaultParams = {\n title: '',\n text: '',\n html: '',\n type: null,\n customClass: '',\n animation: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n showConfirmButton: true,\n showCancelButton: false,\n preConfirm: null,\n confirmButtonText: 'OK',\n confirmButtonColor: '#3085d6',\n confirmButtonClass: null,\n cancelButtonText: 'Cancel',\n cancelButtonColor: '#aaa',\n cancelButtonClass: null,\n buttonsStyling: true,\n reverseButtons: false,\n focusCancel: false,\n showCloseButton: false,\n showLoaderOnConfirm: false,\n imageUrl: null,\n imageWidth: null,\n imageHeight: null,\n imageClass: null,\n timer: null,\n width: 500,\n padding: 20,\n background: '#fff',\n input: null,\n inputPlaceholder: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputClass: null,\n inputAttributes: {},\n inputValidator: null,\n progressSteps: [],\n currentProgressStep: null,\n progressStepsDistance: '40px',\n onOpen: null,\n onClose: null\n };\n var sweetHTML = '<div class=\"' + swalClasses.modal + '\" style=\"display: none\" tabIndex=\"-1\">' + '<ul class=\"' + swalClasses.progresssteps + '\"></ul>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.error + '\">' + '<span class=\"x-mark\"><span class=\"line left\"></span><span class=\"line right\"></span></span>' + '</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.question + '\">?</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.warning + '\">!</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.info + '\">i</div>' + '<div class=\"' + swalClasses.icon + ' ' + iconTypes.success + '\">' + '<span class=\"line tip\"></span> <span class=\"line long\"></span>' + '<div class=\"placeholder\"></div> <div class=\"fix\"></div>' + '</div>' + '<img class=\"' + swalClasses.image + '\">' + '<h2></h2>' + '<div class=\"' + swalClasses.content + '\"></div>' + '<input class=\"' + swalClasses.input + '\">' + '<input type=\"file\" class=\"' + swalClasses.file + '\">' + '<div class=\"' + swalClasses.range + '\">' + '<output></output>' + '<input type=\"range\">' + '</div>' + '<select class=\"' + swalClasses.select + '\"></select>' + '<div class=\"' + swalClasses.radio + '\"></div>' + '<label for=\"' + swalClasses.checkbox + '\" class=\"' + swalClasses.checkbox + '\">' + '<input type=\"checkbox\">' + '</label>' + '<textarea class=\"' + swalClasses.textarea + '\"></textarea>' + '<div class=\"' + swalClasses.validationerror + '\"></div>' + '<hr class=\"' + swalClasses.spacer + '\">' + '<button type=\"button\" class=\"' + swalClasses.confirm + '\">OK</button>' + '<button type=\"button\" class=\"' + swalClasses.cancel + '\">Cancel</button>' + '<span class=\"' + swalClasses.close + '\">×</span>' + '</div>';\n var sweetContainer;\n var existingSweetContainers = document.getElementsByClassName(swalClasses.container);\n if (existingSweetContainers.length) {\n sweetContainer = existingSweetContainers[0];\n } else {\n sweetContainer = document.createElement('div');\n sweetContainer.className = swalClasses.container;\n sweetContainer.innerHTML = sweetHTML;\n }\n var extend = function extend(a, b) {\n for (var key in b) {\n if (b.hasOwnProperty(key)) {\n a[key] = b[key];\n }\n }\n return a;\n };\n\n /*\n * Set hover, active and focus-states for buttons (source: http://www.sitepoint.com/javascript-generate-lighter-darker-color)\n */\n var colorLuminance = function colorLuminance(hex, lum) {\n // Validate hex string\n hex = String(hex).replace(/[^0-9a-f]/gi, '');\n if (hex.length < 6) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n lum = lum || 0;\n\n // Convert to decimal and change luminosity\n var rgb = '#';\n for (var i = 0; i < 3; i++) {\n var c = parseInt(hex.substr(i * 2, 2), 16);\n c = Math.round(Math.min(Math.max(0, c + c * lum), 255)).toString(16);\n rgb += ('00' + c).substr(c.length);\n }\n return rgb;\n };\n\n // Remember state in cases where opening and handling a modal will fiddle with it.\n var states = {\n previousWindowKeyDown: null,\n previousActiveElement: null,\n previousBodyPadding: null\n };\n\n /*\n * Add modal + overlay to DOM\n */\n var init = function init() {\n if (typeof document === 'undefined') {\n console.error('SweetAlert2 requires document to initialize');\n return;\n } else if (document.getElementsByClassName(swalClasses.container).length) {\n return;\n }\n document.body.appendChild(sweetContainer);\n var modal = getModal();\n var input = getChildByClass(modal, swalClasses.input);\n var file = getChildByClass(modal, swalClasses.file);\n var range = modal.querySelector('.' + swalClasses.range + ' input');\n var select = getChildByClass(modal, swalClasses.select);\n var checkbox = modal.querySelector('.' + swalClasses.checkbox + ' input');\n var textarea = getChildByClass(modal, swalClasses.textarea);\n input.oninput = function () {\n sweetAlert.resetValidationError();\n };\n input.onkeyup = function (event) {\n event.stopPropagation();\n if (event.keyCode === 13) {\n sweetAlert.clickConfirm();\n }\n };\n file.onchange = function () {\n sweetAlert.resetValidationError();\n };\n range.oninput = function () {\n sweetAlert.resetValidationError();\n range.previousSibling.value = range.value;\n };\n range.onchange = function () {\n sweetAlert.resetValidationError();\n range.previousSibling.value = range.value;\n };\n select.onchange = function () {\n sweetAlert.resetValidationError();\n };\n checkbox.onchange = function () {\n sweetAlert.resetValidationError();\n };\n textarea.oninput = function () {\n sweetAlert.resetValidationError();\n };\n return modal;\n };\n\n /*\n * Manipulate DOM\n */\n var elementByClass = function elementByClass(className) {\n return sweetContainer.querySelector('.' + className);\n };\n var getModal = function getModal() {\n return document.body.querySelector('.' + swalClasses.modal) || init();\n };\n var getIcons = function getIcons() {\n var modal = getModal();\n return modal.querySelectorAll('.' + swalClasses.icon);\n };\n var getSpacer = function getSpacer() {\n return elementByClass(swalClasses.spacer);\n };\n var getProgressSteps = function getProgressSteps() {\n return elementByClass(swalClasses.progresssteps);\n };\n var getValidationError = function getValidationError() {\n return elementByClass(swalClasses.validationerror);\n };\n var getConfirmButton = function getConfirmButton() {\n return elementByClass(swalClasses.confirm);\n };\n var getCancelButton = function getCancelButton() {\n return elementByClass(swalClasses.cancel);\n };\n var getCloseButton = function getCloseButton() {\n return elementByClass(swalClasses.close);\n };\n var getFocusableElements = function getFocusableElements(focusCancel) {\n var buttons = [getConfirmButton(), getCancelButton()];\n if (focusCancel) {\n buttons.reverse();\n }\n return buttons.concat(Array.prototype.slice.call(getModal().querySelectorAll('button:not([class^=' + swalPrefix + ']), input:not([type=hidden]), textarea, select')));\n };\n var hasClass = function hasClass(elem, className) {\n return elem.classList.contains(className);\n };\n var focusInput = function focusInput(input) {\n input.focus();\n\n // place cursor at end of text in text input\n if (input.type !== 'file') {\n // http://stackoverflow.com/a/2345915/1331425\n var val = input.value;\n input.value = '';\n input.value = val;\n }\n };\n var addClass = function addClass(elem, className) {\n if (!elem || !className) {\n return;\n }\n var classes = className.split(/\\s+/);\n classes.forEach(function (className) {\n elem.classList.add(className);\n });\n };\n var removeClass = function removeClass(elem, className) {\n if (!elem || !className) {\n return;\n }\n var classes = className.split(/\\s+/);\n classes.forEach(function (className) {\n elem.classList.remove(className);\n });\n };\n var getChildByClass = function getChildByClass(elem, className) {\n for (var i = 0; i < elem.childNodes.length; i++) {\n if (hasClass(elem.childNodes[i], className)) {\n return elem.childNodes[i];\n }\n }\n };\n var show = function show(elem, display) {\n if (!display) {\n display = 'block';\n }\n elem.style.opacity = '';\n elem.style.display = display;\n };\n var hide = function hide(elem) {\n elem.style.opacity = '';\n elem.style.display = 'none';\n };\n var empty = function empty(elem) {\n while (elem.firstChild) {\n elem.removeChild(elem.firstChild);\n }\n };\n\n // borrowed from jqeury $(elem).is(':visible') implementation\n var isVisible = function isVisible(elem) {\n return elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length;\n };\n var removeStyleProperty = function removeStyleProperty(elem, property) {\n if (elem.style.removeProperty) {\n elem.style.removeProperty(property);\n } else {\n elem.style.removeAttribute(property);\n }\n };\n var fireClick = function fireClick(node) {\n // Taken from http://www.nonobtrusive.com/2011/11/29/programatically-fire-crossbrowser-click-event-with-javascript/\n // Then fixed for today's Chrome browser.\n if (typeof MouseEvent === 'function') {\n // Up-to-date approach\n var mevt = new MouseEvent('click', {\n view: window,\n bubbles: false,\n cancelable: true\n });\n node.dispatchEvent(mevt);\n } else if (document.createEvent) {\n // Fallback\n var evt = document.createEvent('MouseEvents');\n evt.initEvent('click', false, false);\n node.dispatchEvent(evt);\n } else if (document.createEventObject) {\n node.fireEvent('onclick');\n } else if (typeof node.onclick === 'function') {\n node.onclick();\n }\n };\n var stopEventPropagation = function stopEventPropagation(e) {\n // In particular, make sure the space bar doesn't scroll the main window.\n if (typeof e.stopPropagation === 'function') {\n e.stopPropagation();\n e.preventDefault();\n } else if (window.event && window.event.hasOwnProperty('cancelBubble')) {\n window.event.cancelBubble = true;\n }\n };\n var animationEndEvent = function () {\n var testEl = document.createElement('div');\n var transEndEventNames = {\n 'WebkitAnimation': 'webkitAnimationEnd',\n 'OAnimation': 'oAnimationEnd oanimationend',\n 'msAnimation': 'MSAnimationEnd',\n 'animation': 'animationend'\n };\n for (var i in transEndEventNames) {\n if (transEndEventNames.hasOwnProperty(i) && testEl.style[i] !== undefined) {\n return transEndEventNames[i];\n }\n }\n return false;\n }();\n\n // Reset the page to its previous state\n var resetPrevState = function resetPrevState() {\n var modal = getModal();\n window.onkeydown = states.previousWindowKeyDown;\n if (states.previousActiveElement && states.previousActiveElement.focus) {\n states.previousActiveElement.focus();\n }\n clearTimeout(modal.timeout);\n };\n\n // Measure width of scrollbar\n // https://github.com/twbs/bootstrap/blob/master/js/modal.js#L279-L286\n var measureScrollbar = function measureScrollbar() {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n // JavaScript Debounce Function\n // https://davidwalsh.name/javascript-debounce-function\n var debounce = function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n };\n var modalParams = extend({}, defaultParams);\n var queue = [];\n var swal2Observer;\n\n /*\n * Set type, text and actions on modal\n */\n var setParameters = function setParameters(params) {\n var modal = getModal();\n for (var param in params) {\n if (!defaultParams.hasOwnProperty(param) && param !== 'extraParams') {\n console.warn('SweetAlert2: Unknown parameter \"' + param + '\"');\n }\n }\n\n // set modal width and margin-left\n modal.style.width = typeof params.width === 'number' ? params.width + 'px' : params.width;\n modal.style.padding = params.padding + 'px';\n modal.style.background = params.background;\n var $title = modal.querySelector('h2');\n var $content = modal.querySelector('.' + swalClasses.content);\n var $confirmBtn = getConfirmButton();\n var $cancelBtn = getCancelButton();\n var $closeButton = modal.querySelector('.' + swalClasses.close);\n\n // Title\n $title.innerHTML = params.title.split('\\n').join('<br>');\n\n // Content\n var i;\n if (params.text || params.html) {\n if (_typeof(params.html) === 'object') {\n $content.innerHTML = '';\n if (0 in params.html) {\n for (i = 0; (i in params.html); i++) {\n $content.appendChild(params.html[i].cloneNode(true));\n }\n } else {\n $content.appendChild(params.html.cloneNode(true));\n }\n } else {\n $content.innerHTML = params.html || params.text.split('\\n').join('<br>');\n }\n show($content);\n } else {\n hide($content);\n }\n\n // Close button\n if (params.showCloseButton) {\n show($closeButton);\n } else {\n hide($closeButton);\n }\n\n // Custom Class\n modal.className = swalClasses.modal;\n if (params.customClass) {\n addClass(modal, params.customClass);\n }\n\n // Progress steps\n var progressStepsContainer = getProgressSteps();\n var currentProgressStep = parseInt(params.currentProgressStep === null ? sweetAlert.getQueueStep() : params.currentProgressStep, 10);\n if (params.progressSteps.length) {\n show(progressStepsContainer);\n empty(progressStepsContainer);\n if (currentProgressStep >= params.progressSteps.length) {\n console.warn('SweetAlert2: Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n params.progressSteps.forEach(function (step, index) {\n var circle = document.createElement('li');\n addClass(circle, swalClasses.progresscircle);\n circle.innerHTML = step;\n if (index === currentProgressStep) {\n addClass(circle, swalClasses.activeprogressstep);\n }\n progressStepsContainer.appendChild(circle);\n if (index !== params.progressSteps.length - 1) {\n var line = document.createElement('li');\n addClass(line, swalClasses.progressline);\n line.style.width = params.progressStepsDistance;\n progressStepsContainer.appendChild(line);\n }\n });\n } else {\n hide(progressStepsContainer);\n }\n\n // Icon\n var icons = getIcons();\n for (i = 0; i < icons.length; i++) {\n hide(icons[i]);\n }\n if (params.type) {\n var validType = false;\n for (var iconType in iconTypes) {\n if (params.type === iconType) {\n validType = true;\n break;\n }\n }\n if (!validType) {\n console.error('SweetAlert2: Unknown alert type: ' + params.type);\n return false;\n }\n var $icon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes[params.type]);\n show($icon);\n\n // Animate icon\n switch (params.type) {\n case 'success':\n addClass($icon, 'animate');\n addClass($icon.querySelector('.tip'), 'animate-success-tip');\n addClass($icon.querySelector('.long'), 'animate-success-long');\n break;\n case 'error':\n addClass($icon, 'animate-error-icon');\n addClass($icon.querySelector('.x-mark'), 'animate-x-mark');\n break;\n case 'warning':\n addClass($icon, 'pulse-warning');\n break;\n default:\n break;\n }\n }\n\n // Custom image\n var $customImage = modal.querySelector('.' + swalClasses.image);\n if (params.imageUrl) {\n $customImage.setAttribute('src', params.imageUrl);\n show($customImage);\n if (params.imageWidth) {\n $customImage.setAttribute('width', params.imageWidth);\n } else {\n $customImage.removeAttribute('width');\n }\n if (params.imageHeight) {\n $customImage.setAttribute('height', params.imageHeight);\n } else {\n $customImage.removeAttribute('height');\n }\n $customImage.className = swalClasses.image;\n if (params.imageClass) {\n addClass($customImage, params.imageClass);\n }\n } else {\n hide($customImage);\n }\n\n // Cancel button\n if (params.showCancelButton) {\n $cancelBtn.style.display = 'inline-block';\n } else {\n hide($cancelBtn);\n }\n\n // Confirm button\n if (params.showConfirmButton) {\n removeStyleProperty($confirmBtn, 'display');\n } else {\n hide($confirmBtn);\n }\n\n // Buttons spacer\n var spacer = getSpacer();\n if (!params.showConfirmButton && !params.showCancelButton) {\n hide(spacer);\n } else {\n show(spacer);\n }\n\n // Edit text on cancel and confirm buttons\n $confirmBtn.innerHTML = params.confirmButtonText;\n $cancelBtn.innerHTML = params.cancelButtonText;\n\n // Set buttons to selected background colors\n if (params.buttonsStyling) {\n $confirmBtn.style.backgroundColor = params.confirmButtonColor;\n $cancelBtn.style.backgroundColor = params.cancelButtonColor;\n }\n\n // Add buttons custom classes\n $confirmBtn.className = swalClasses.confirm;\n addClass($confirmBtn, params.confirmButtonClass);\n $cancelBtn.className = swalClasses.cancel;\n addClass($cancelBtn, params.cancelButtonClass);\n\n // Buttons styling\n if (params.buttonsStyling) {\n addClass($confirmBtn, swalClasses.styled);\n addClass($cancelBtn, swalClasses.styled);\n } else {\n removeClass($confirmBtn, swalClasses.styled);\n removeClass($cancelBtn, swalClasses.styled);\n $confirmBtn.style.backgroundColor = $confirmBtn.style.borderLeftColor = $confirmBtn.style.borderRightColor = '';\n $cancelBtn.style.backgroundColor = $cancelBtn.style.borderLeftColor = $cancelBtn.style.borderRightColor = '';\n }\n\n // CSS animation\n if (params.animation === true) {\n removeClass(modal, swalClasses.noanimation);\n } else {\n addClass(modal, swalClasses.noanimation);\n }\n };\n\n /*\n * Animations\n */\n var openModal = function openModal(animation, onComplete) {\n var modal = getModal();\n if (animation) {\n addClass(modal, swalClasses.show);\n addClass(sweetContainer, swalClasses.fade);\n removeClass(modal, swalClasses.hide);\n } else {\n removeClass(modal, swalClasses.fade);\n }\n show(modal);\n\n // scrolling is 'hidden' until animation is done, after that 'auto'\n sweetContainer.style.overflowY = 'hidden';\n if (animationEndEvent && !hasClass(modal, swalClasses.noanimation)) {\n modal.addEventListener(animationEndEvent, function swalCloseEventFinished() {\n modal.removeEventListener(animationEndEvent, swalCloseEventFinished);\n sweetContainer.style.overflowY = 'auto';\n });\n } else {\n sweetContainer.style.overflowY = 'auto';\n }\n addClass(sweetContainer, swalClasses[\"in\"]);\n addClass(document.body, swalClasses[\"in\"]);\n fixScrollbar();\n iOSfix();\n states.previousActiveElement = document.activeElement;\n if (onComplete !== null && typeof onComplete === 'function') {\n onComplete.call(this, modal);\n }\n };\n function fixScrollbar() {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n }\n // if the body has overflow\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = document.body.style.paddingRight;\n document.body.style.paddingRight = measureScrollbar() + 'px';\n }\n }\n function undoScrollbar() {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = states.previousBodyPadding;\n states.previousBodyPadding = null;\n }\n }\n\n // Fix iOS scrolling http://stackoverflow.com/q/39626302/1331425\n function iOSfix() {\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n var offset = document.body.scrollTop;\n document.body.style.top = offset * -1 + 'px';\n addClass(document.body, swalClasses.iosfix);\n }\n }\n function undoIOSfix() {\n if (hasClass(document.body, swalClasses.iosfix)) {\n var offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.scrollTop = offset * -1;\n }\n }\n function modalDependant() {\n if (arguments[0] === undefined) {\n console.error('SweetAlert2 expects at least 1 attribute!');\n return false;\n }\n var params = extend({}, modalParams);\n switch (_typeof(arguments[0])) {\n case 'string':\n params.title = arguments[0];\n params.text = arguments[1] || '';\n params.type = arguments[2] || '';\n break;\n case 'object':\n extend(params, arguments[0]);\n params.extraParams = arguments[0].extraParams;\n if (params.input === 'email' && params.inputValidator === null) {\n params.inputValidator = function (email) {\n return new Promise(function (resolve, reject) {\n var emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$/;\n if (emailRegex.test(email)) {\n resolve();\n } else {\n reject('Invalid email address');\n }\n });\n };\n }\n break;\n default:\n console.error('SweetAlert2: Unexpected type of argument! Expected \"string\" or \"object\", got ' + _typeof(arguments[0]));\n return false;\n }\n setParameters(params);\n\n // Modal interactions\n var modal = getModal();\n return new Promise(function (resolve, reject) {\n // Close on timer\n if (params.timer) {\n modal.timeout = setTimeout(function () {\n sweetAlert.closeModal(params.onClose);\n reject('timer');\n }, params.timer);\n }\n\n // Get input element by specified type or, if type isn't specified, by params.input\n var getInput = function getInput(inputType) {\n inputType = inputType || params.input;\n switch (inputType) {\n case 'select':\n case 'textarea':\n case 'file':\n return getChildByClass(modal, swalClasses[inputType]);\n case 'checkbox':\n return modal.querySelector('.' + swalClasses.checkbox + ' input');\n case 'radio':\n return modal.querySelector('.' + swalClasses.radio + ' input:checked') || modal.querySelector('.' + swalClasses.radio + ' input:first-child');\n case 'range':\n return modal.querySelector('.' + swalClasses.range + ' input');\n default:\n return getChildByClass(modal, swalClasses.input);\n }\n };\n\n // Get the value of the modal input\n var getInputValue = function getInputValue() {\n var input = getInput();\n if (!input) {\n return null;\n }\n switch (params.input) {\n case 'checkbox':\n return input.checked ? 1 : 0;\n case 'radio':\n return input.checked ? input.value : null;\n case 'file':\n return input.files.length ? input.files[0] : null;\n default:\n return params.inputAutoTrim ? input.value.trim() : input.value;\n }\n };\n\n // input autofocus\n if (params.input) {\n setTimeout(function () {\n var input = getInput();\n if (input) {\n focusInput(input);\n }\n }, 0);\n }\n var confirm = function confirm(value) {\n if (params.showLoaderOnConfirm) {\n sweetAlert.showLoading();\n }\n if (params.preConfirm) {\n params.preConfirm(value, params.extraParams).then(function (preConfirmValue) {\n sweetAlert.closeModal(params.onClose);\n resolve(preConfirmValue || value);\n }, function (error) {\n sweetAlert.hideLoading();\n if (error) {\n sweetAlert.showValidationError(error);\n }\n });\n } else {\n sweetAlert.closeModal(params.onClose);\n resolve(value);\n }\n };\n\n // Mouse interactions\n var onButtonEvent = function onButtonEvent(event) {\n var e = event || window.event;\n var target = e.target || e.srcElement;\n var confirmBtn = getConfirmButton();\n var cancelBtn = getCancelButton();\n var targetedConfirm = confirmBtn === target || confirmBtn.contains(target);\n var targetedCancel = cancelBtn === target || cancelBtn.contains(target);\n switch (e.type) {\n case 'mouseover':\n case 'mouseup':\n if (params.buttonsStyling) {\n if (targetedConfirm) {\n confirmBtn.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.1);\n } else if (targetedCancel) {\n cancelBtn.style.backgroundColor = colorLuminance(params.cancelButtonColor, -0.1);\n }\n }\n break;\n case 'mouseout':\n if (params.buttonsStyling) {\n if (targetedConfirm) {\n confirmBtn.style.backgroundColor = params.confirmButtonColor;\n } else if (targetedCancel) {\n cancelBtn.style.backgroundColor = params.cancelButtonColor;\n }\n }\n break;\n case 'mousedown':\n if (params.buttonsStyling) {\n if (targetedConfirm) {\n confirmBtn.style.backgroundColor = colorLuminance(params.confirmButtonColor, -0.2);\n } else if (targetedCancel) {\n cancelBtn.style.backgroundColor = colorLuminance(params.cancelButtonColor, -0.2);\n }\n }\n break;\n case 'click':\n // Clicked 'confirm'\n if (targetedConfirm && sweetAlert.isVisible()) {\n if (params.input) {\n var inputValue = getInputValue();\n if (params.inputValidator) {\n sweetAlert.disableInput();\n params.inputValidator(inputValue, params.extraParams).then(function () {\n sweetAlert.enableInput();\n confirm(inputValue);\n }, function (error) {\n sweetAlert.enableInput();\n if (error) {\n sweetAlert.showValidationError(error);\n }\n });\n } else {\n confirm(inputValue);\n }\n } else {\n confirm(true);\n }\n\n // Clicked 'cancel'\n } else if (targetedCancel && sweetAlert.isVisible()) {\n sweetAlert.closeModal(params.onClose);\n reject('cancel');\n }\n break;\n default:\n }\n };\n var $buttons = modal.querySelectorAll('button');\n var i;\n for (i = 0; i < $buttons.length; i++) {\n $buttons[i].onclick = onButtonEvent;\n $buttons[i].onmouseover = onButtonEvent;\n $buttons[i].onmouseout = onButtonEvent;\n $buttons[i].onmousedown = onButtonEvent;\n }\n\n // Closing modal by close button\n getCloseButton().onclick = function () {\n sweetAlert.closeModal(params.onClose);\n reject('close');\n };\n\n // Closing modal by overlay click\n sweetContainer.onclick = function (e) {\n if (e.target !== sweetContainer) {\n return;\n }\n if (params.allowOutsideClick) {\n sweetAlert.closeModal(params.onClose);\n reject('overlay');\n }\n };\n var $confirmButton = getConfirmButton();\n var $cancelButton = getCancelButton();\n\n // Reverse buttons if neede d\n if (params.reverseButtons) {\n $confirmButton.parentNode.insertBefore($cancelButton, $confirmButton);\n } else {\n $confirmButton.parentNode.insertBefore($confirmButton, $cancelButton);\n }\n\n // Focus handling\n function setFocus(index, increment) {\n var focusableElements = getFocusableElements(params.focusCancel);\n // search for visible elements and select the next possible match\n for (var i = 0; i < focusableElements.length; i++) {\n index = index + increment;\n\n // rollover to first item\n if (index === focusableElements.length) {\n index = 0;\n\n // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n\n // determine if element is visible\n var el = focusableElements[index];\n if (isVisible(el)) {\n return el.focus();\n }\n }\n }\n function handleKeyDown(event) {\n var e = event || window.event;\n var keyCode = e.keyCode || e.which;\n if ([9, 13, 32, 27].indexOf(keyCode) === -1) {\n // Don't do work on keys we don't care about.\n return;\n }\n var $targetElement = e.target || e.srcElement;\n var focusableElements = getFocusableElements(params.focusCancel);\n var btnIndex = -1; // Find the button - note, this is a nodelist, not an array.\n for (var i = 0; i < focusableElements.length; i++) {\n if ($targetElement === focusableElements[i]) {\n btnIndex = i;\n break;\n }\n }\n\n // TAB\n if (keyCode === 9) {\n if (!e.shiftKey) {\n // Cycle to the next button\n setFocus(btnIndex, 1);\n } else {\n // Cycle to the prev button\n setFocus(btnIndex, -1);\n }\n stopEventPropagation(e);\n } else {\n if (keyCode === 13 || keyCode === 32) {\n if (btnIndex === -1) {\n // ENTER/SPACE clicked outside of a button.\n if (params.focusCancel) {\n fireClick($cancelButton, e);\n } else {\n fireClick($confirmButton, e);\n }\n }\n } else if (keyCode === 27 && params.allowEscapeKey === true) {\n sweetAlert.closeModal(params.onClose);\n reject('esc');\n }\n }\n }\n states.previousWindowKeyDown = window.onkeydown;\n window.onkeydown = handleKeyDown;\n\n // Loading state\n if (params.buttonsStyling) {\n $confirmButton.style.borderLeftColor = params.confirmButtonColor;\n $confirmButton.style.borderRightColor = params.confirmButtonColor;\n }\n\n /**\n * Show spinner instead of Confirm button and disable Cancel button\n */\n sweetAlert.showLoading = sweetAlert.enableLoading = function () {\n show(getSpacer());\n show($confirmButton, 'inline-block');\n addClass($confirmButton, swalClasses.loading);\n addClass(modal, swalClasses.loading);\n $confirmButton.disabled = true;\n $cancelButton.disabled = true;\n };\n\n /**\n * Show spinner instead of Confirm button and disable Cancel button\n */\n sweetAlert.hideLoading = sweetAlert.disableLoading = function () {\n if (!params.showConfirmButton) {\n hide($confirmButton);\n if (!params.showCancelButton) {\n hide(getSpacer());\n }\n }\n removeClass($confirmButton, swalClasses.loading);\n removeClass(modal, swalClasses.loading);\n $confirmButton.disabled = false;\n $cancelButton.disabled = false;\n };\n sweetAlert.enableButtons = function () {\n $confirmButton.disabled = false;\n $cancelButton.disabled = false;\n };\n sweetAlert.disableButtons = function () {\n $confirmButton.disabled = true;\n $cancelButton.disabled = true;\n };\n sweetAlert.enableConfirmButton = function () {\n $confirmButton.disabled = false;\n };\n sweetAlert.disableConfirmButton = function () {\n $confirmButton.disabled = true;\n };\n sweetAlert.enableInput = function () {\n var input = getInput();\n if (!input) {\n return false;\n }\n if (input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode;\n var radios = radiosContainer.querySelectorAll('input');\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = false;\n }\n } else {\n input.disabled = false;\n }\n };\n sweetAlert.disableInput = function () {\n var input = getInput();\n if (!input) {\n return false;\n }\n if (input && input.type === 'radio') {\n var radiosContainer = input.parentNode.parentNode;\n var radios = radiosContainer.querySelectorAll('input');\n for (var i = 0; i < radios.length; i++) {\n radios[i].disabled = true;\n }\n } else {\n input.disabled = true;\n }\n };\n\n // Set modal min-height to disable scrolling inside the modal\n sweetAlert.recalculateHeight = debounce(function () {\n var modal = getModal();\n var prevState = modal.style.display;\n modal.style.minHeight = '';\n show(modal);\n modal.style.minHeight = modal.scrollHeight + 1 + 'px';\n modal.style.display = prevState;\n }, 50);\n\n // Show block with validation error\n sweetAlert.showValidationError = function (error) {\n var validationError = getValidationError();\n validationError.innerHTML = error;\n show(validationError);\n var input = getInput();\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n };\n\n // Hide block with validation error\n sweetAlert.resetValidationError = function () {\n var validationError = getValidationError();\n hide(validationError);\n sweetAlert.recalculateHeight();\n var input = getInput();\n if (input) {\n removeClass(input, swalClasses.inputerror);\n }\n };\n sweetAlert.getProgressSteps = function () {\n return params.progressSteps;\n };\n sweetAlert.setProgressSteps = function (progressSteps) {\n params.progressSteps = progressSteps;\n setParameters(params);\n };\n sweetAlert.showProgressSteps = function () {\n show(getProgressSteps());\n };\n sweetAlert.hideProgressSteps = function () {\n hide(getProgressSteps());\n };\n sweetAlert.enableButtons();\n sweetAlert.hideLoading();\n sweetAlert.resetValidationError();\n\n // inputs\n var inputTypes = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n var input;\n for (i = 0; i < inputTypes.length; i++) {\n var inputClass = swalClasses[inputTypes[i]];\n var inputContainer = getChildByClass(modal, inputClass);\n input = getInput(inputTypes[i]);\n\n // set attributes\n if (input) {\n for (var j in input.attributes) {\n if (input.attributes.hasOwnProperty(j)) {\n var attrName = input.attributes[j].name;\n if (attrName !== 'type' && attrName !== 'value') {\n input.removeAttribute(attrName);\n }\n }\n }\n for (var attr in params.inputAttributes) {\n input.setAttribute(attr, params.inputAttributes[attr]);\n }\n }\n\n // set class\n inputContainer.className = inputClass;\n if (params.inputClass) {\n addClass(inputContainer, params.inputClass);\n }\n hide(inputContainer);\n }\n var populateInputOptions;\n switch (params.input) {\n case 'text':\n case 'email':\n case 'password':\n case 'number':\n case 'tel':\n input = getChildByClass(modal, swalClasses.input);\n input.value = params.inputValue;\n input.placeholder = params.inputPlaceholder;\n input.type = params.input;\n show(input);\n break;\n case 'file':\n input = getChildByClass(modal, swalClasses.file);\n input.placeholder = params.inputPlaceholder;\n input.type = params.input;\n show(input);\n break;\n case 'range':\n var range = getChildByClass(modal, swalClasses.range);\n var rangeInput = range.querySelector('input');\n var rangeOutput = range.querySelector('output');\n rangeInput.value = params.inputValue;\n rangeInput.type = params.input;\n rangeOutput.value = params.inputValue;\n show(range);\n break;\n case 'select':\n var select = getChildByClass(modal, swalClasses.select);\n select.innerHTML = '';\n if (params.inputPlaceholder) {\n var placeholder = document.createElement('option');\n placeholder.innerHTML = params.inputPlaceholder;\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n populateInputOptions = function populateInputOptions(inputOptions) {\n for (var optionValue in inputOptions) {\n var option = document.createElement('option');\n option.value = optionValue;\n option.innerHTML = inputOptions[optionValue];\n if (params.inputValue === optionValue) {\n option.selected = true;\n }\n select.appendChild(option);\n }\n show(select);\n select.focus();\n };\n break;\n case 'radio':\n var radio = getChildByClass(modal, swalClasses.radio);\n radio.innerHTML = '';\n populateInputOptions = function populateInputOptions(inputOptions) {\n for (var radioValue in inputOptions) {\n var id = 1;\n var radioInput = document.createElement('input');\n var radioLabel = document.createElement('label');\n var radioLabelSpan = document.createElement('span');\n radioInput.type = 'radio';\n radioInput.name = swalClasses.radio;\n radioInput.value = radioValue;\n radioInput.id = swalClasses.radio + '-' + id++;\n if (params.inputValue === radioValue) {\n radioInput.checked = true;\n }\n radioLabelSpan.innerHTML = inputOptions[radioValue];\n radioLabel.appendChild(radioInput);\n radioLabel.appendChild(radioLabelSpan);\n radioLabel[\"for\"] = radioInput.id;\n radio.appendChild(radioLabel);\n }\n show(radio);\n var radios = radio.querySelectorAll('input');\n if (radios.length) {\n radios[0].focus();\n }\n };\n break;\n case 'checkbox':\n var checkbox = getChildByClass(modal, swalClasses.checkbox);\n var checkboxInput = getInput('checkbox');\n checkboxInput.type = 'checkbox';\n checkboxInput.value = 1;\n checkboxInput.id = swalClasses.checkbox;\n checkboxInput.checked = Boolean(params.inputValue);\n var label = checkbox.getElementsByTagName('span');\n if (label.length) {\n checkbox.removeChild(label[0]);\n }\n label = document.createElement('span');\n label.innerHTML = params.inputPlaceholder;\n checkbox.appendChild(label);\n show(checkbox);\n break;\n case 'textarea':\n var textarea = getChildByClass(modal, swalClasses.textarea);\n textarea.value = params.inputValue;\n textarea.placeholder = params.inputPlaceholder;\n show(textarea);\n break;\n case null:\n break;\n default:\n console.error('SweetAlert2: Unexpected type of input! Expected \"text\" or \"email\" or \"password\", \"select\", \"checkbox\", \"textarea\" or \"file\", got \"' + params.input + '\"');\n break;\n }\n if (params.input === 'select' || params.input === 'radio') {\n if (params.inputOptions instanceof Promise) {\n sweetAlert.showLoading();\n params.inputOptions.then(function (inputOptions) {\n sweetAlert.hideLoading();\n populateInputOptions(inputOptions);\n });\n } else if (_typeof(params.inputOptions) === 'object') {\n populateInputOptions(params.inputOptions);\n } else {\n console.error('SweetAlert2: Unexpected type of inputOptions! Expected object or Promise, got ' + _typeof(params.inputOptions));\n }\n }\n openModal(params.animation, params.onOpen);\n\n // Focus the first element (input or button)\n setFocus(-1, 1);\n\n // fix scroll\n sweetContainer.scrollTop = 0;\n\n // Observe changes inside the modal and adjust height\n if (typeof MutationObserver !== 'undefined' && !swal2Observer) {\n swal2Observer = new MutationObserver(sweetAlert.recalculateHeight);\n swal2Observer.observe(modal, {\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n });\n }\n\n // SweetAlert function\n function sweetAlert() {\n // Copy arguments to the local args variable\n var args = arguments;\n if (sweetAlert.isVisible()) {\n sweetAlert.close();\n }\n return modalDependant.apply(this, args);\n }\n\n /*\n * Global function to determine if swal2 modal is visible\n */\n sweetAlert.isVisible = function () {\n var modal = getModal();\n return isVisible(modal);\n };\n\n /*\n * Global function for chaining sweetAlert modals\n */\n sweetAlert.queue = function (steps) {\n queue = steps;\n var modal = getModal();\n var resetQueue = function resetQueue() {\n queue = [];\n modal.removeAttribute('data-queue-step');\n };\n return new Promise(function (resolve, reject) {\n (function step(i, callback) {\n if (i < queue.length) {\n modal.setAttribute('data-queue-step', i);\n sweetAlert(queue[i]).then(function () {\n step(i + 1, callback);\n }, function (dismiss) {\n resetQueue();\n reject(dismiss);\n });\n } else {\n resetQueue();\n resolve();\n }\n })(0);\n });\n };\n\n /*\n * Global function for getting the index of current modal in queue\n */\n sweetAlert.getQueueStep = function () {\n return getModal().getAttribute('data-queue-step');\n };\n\n /*\n * Global function for inserting a modal to the queue\n */\n sweetAlert.insertQueueStep = function (step, index) {\n if (index && index < queue.length) {\n return queue.splice(index, 0, step);\n }\n return queue.push(step);\n };\n\n /*\n * Global function for deleting a modal from the queue\n */\n sweetAlert.deleteQueueStep = function (index) {\n if (typeof queue[index] !== 'undefined') {\n queue.splice(index, 1);\n }\n };\n\n /*\n * Global function to close sweetAlert\n */\n sweetAlert.close = sweetAlert.closeModal = function (onComplete) {\n var modal = getModal();\n removeClass(modal, swalClasses.show);\n addClass(modal, swalClasses.hide);\n\n // Reset icon animations\n var $successIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.success);\n removeClass($successIcon, 'animate');\n removeClass($successIcon.querySelector('.tip'), 'animate-success-tip');\n removeClass($successIcon.querySelector('.long'), 'animate-success-long');\n var $errorIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.error);\n removeClass($errorIcon, 'animate-error-icon');\n removeClass($errorIcon.querySelector('.x-mark'), 'animate-x-mark');\n var $warningIcon = modal.querySelector('.' + swalClasses.icon + '.' + iconTypes.warning);\n removeClass($warningIcon, 'pulse-warning');\n resetPrevState();\n var hideModalAndResetState = function hideModalAndResetState() {\n hide(modal);\n modal.style.minHeight = '';\n removeClass(sweetContainer, swalClasses[\"in\"]);\n removeClass(document.body, swalClasses[\"in\"]);\n undoScrollbar();\n undoIOSfix();\n };\n\n // If animation is supported, animate\n if (animationEndEvent && !hasClass(modal, swalClasses.noanimation)) {\n modal.addEventListener(animationEndEvent, function swalCloseEventFinished() {\n modal.removeEventListener(animationEndEvent, swalCloseEventFinished);\n if (hasClass(modal, swalClasses.hide)) {\n hideModalAndResetState();\n }\n });\n } else {\n // Otherwise, hide immediately\n hideModalAndResetState();\n }\n if (onComplete !== null && typeof onComplete === 'function') {\n onComplete.call(this, modal);\n }\n };\n\n /*\n * Global function to click 'Confirm' button\n */\n sweetAlert.clickConfirm = function () {\n getConfirmButton().click();\n };\n\n /*\n * Global function to click 'Cancel' button\n */\n sweetAlert.clickCancel = function () {\n getCancelButton().click();\n };\n\n /**\n * Set default params for each popup\n * @param {Object} userParams\n */\n sweetAlert.setDefaults = function (userParams) {\n if (!userParams) {\n throw new Error('userParams is required');\n }\n if (_typeof(userParams) !== 'object') {\n throw new Error('userParams has to be a object');\n }\n extend(modalParams, userParams);\n };\n\n /**\n * Reset default params for each popup\n */\n sweetAlert.resetDefaults = function () {\n modalParams = extend({}, defaultParams);\n };\n sweetAlert.noop = function () {};\n sweetAlert.version = '5.3.5';\n if (typeof Promise === 'function') {\n Promise.prototype.done = Promise.prototype.done || function () {\n // eslint-disable-line\n return this[\"catch\"](function () {\n // Catch promise rejections silently.\n // https://github.com/limonte/sweetalert2/issues/177\n });\n };\n } else {\n console.warn('SweetAlert2: Please inlude Promise polyfill BEFORE including sweetalert2.js if IE10+ support needed.');\n }\n return sweetAlert;\n});\nif (window.Sweetalert2) window.sweetAlert = window.swal = window.Sweetalert2;\n\n//# sourceURL=webpack:///./buyercall/assets/scripts/vendor/sweetalert2.js?")},"./node_modules/bootstrap/dist/js/bootstrap.esm.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Alert: () => (/* binding */ Alert),\n/* harmony export */ Button: () => (/* binding */ Button),\n/* harmony export */ Carousel: () => (/* binding */ Carousel),\n/* harmony export */ Collapse: () => (/* binding */ Collapse),\n/* harmony export */ Dropdown: () => (/* binding */ Dropdown),\n/* harmony export */ Modal: () => (/* binding */ Modal),\n/* harmony export */ Offcanvas: () => (/* binding */ Offcanvas),\n/* harmony export */ Popover: () => (/* binding */ Popover),\n/* harmony export */ ScrollSpy: () => (/* binding */ ScrollSpy),\n/* harmony export */ Tab: () => (/* binding */ Tab),\n/* harmony export */ Toast: () => (/* binding */ Toast),\n/* harmony export */ Tooltip: () => (/* binding */ Tooltip)\n/* harmony export */ });\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/index.js\");\n/* harmony import */ var _popperjs_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @popperjs/core */ \"./node_modules/@popperjs/core/lib/popper.js\");\n/*!\n * Bootstrap v5.3.2 (https://getbootstrap.com/)\n * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --\x3e 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.2';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? parseSelector(hrefAttribute.trim()) : null;\n }\n return selector;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\n\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\n\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof _popperjs_core__WEBPACK_IMPORTED_MODULE_0__ === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return _popperjs_core__WEBPACK_IMPORTED_MODULE_1__.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst HOME_KEY = 'Home';\nconst END_KEY = 'End';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // TODO: could only be `tab` in v6\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n if (!this._parent) {\n return;\n // TODO: should throw exception in v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren());\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n }\n\n // Getters\n static get NAME() {\n return NAME$1;\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n if (this._elemIsActive(innerElem)) {\n return;\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem();\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n this._deactivate(active, innerElem);\n this._activate(innerElem, active);\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.add(CLASS_NAME_ACTIVE);\n this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n this._toggleDropDown(element, true);\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n this._toggleDropDown(element, false);\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {\n return;\n }\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault();\n const children = this._getChildren().filter(element => !isDisabled(element));\n let nextActiveElement;\n if ([HOME_KEY, END_KEY].includes(event.key)) {\n nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];\n } else {\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n nextActiveElement = getNextActiveElement(children, event.target, isNext, true);\n }\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n const isActive = this._elemIsActive(child);\n const outerElem = this._getOuterElement(child);\n child.setAttribute('aria-selected', isActive);\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n this._setAttributeIfNotExists(child, 'role', 'tab');\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child);\n }\n _setInitialAttributesOnTargetPanel(child) {\n const target = SelectorEngine.getElementFromSelector(child);\n if (!target) {\n return;\n }\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);\n }\n }\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n Tab.getOrCreateInstance(this).show();\n});\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n this._setListeners();\n }\n\n // Getters\n static get Default() {\n return Default;\n }\n static get DefaultType() {\n return DefaultType;\n }\n static get NAME() {\n return NAME;\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._clearTimeout();\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n EventHandler.trigger(this._element, EVENT_SHOWN);\n this._maybeScheduleHide();\n };\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n hide() {\n if (!this.isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n this._element.classList.add(CLASS_NAME_SHOWING);\n this._queueCallback(complete, this._element, this._config.animation);\n }\n dispose() {\n this._clearTimeout();\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n super.dispose();\n }\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n if (isInteracting) {\n this._clearTimeout();\n return;\n }\n const nextElement = event.relatedTarget;\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n this._maybeScheduleHide();\n }\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\n\n//# sourceMappingURL=bootstrap.esm.js.map\n\n\n//# sourceURL=webpack:///./node_modules/bootstrap/dist/js/bootstrap.esm.js?")},"./node_modules/moment/locale/en-au.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-au.js?")},"./node_modules/moment/locale/en-ca.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-ca.js?")},"./node_modules/moment/locale/en-gb.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-gb.js?")},"./node_modules/moment/locale/en-ie.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-ie.js?")},"./node_modules/moment/locale/en-il.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-il.js?")},"./node_modules/moment/locale/en-in.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-in.js?")},"./node_modules/moment/locale/en-nz.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-nz.js?")},"./node_modules/moment/locale/en-sg.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/en-sg.js?")},"./node_modules/moment/locale/es-do.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es-do.js?")},"./node_modules/moment/locale/es-mx.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es-mx.js?")},"./node_modules/moment/locale/es-us.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es-us.js?")},"./node_modules/moment/locale/es.js":function(__unused_webpack_module,__unused_webpack_exports,__webpack_require__){eval("//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n true ? factory(__webpack_require__(/*! ../moment */ \"./node_modules/moment/moment.js\")) :\n 0\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/locale/es.js?")},"./node_modules/moment/locale sync recursive en%7Ces":(module,__unused_webpack_exports,__webpack_require__)=>{eval('var map = {\n\t"./en-au": "./node_modules/moment/locale/en-au.js",\n\t"./en-au.js": "./node_modules/moment/locale/en-au.js",\n\t"./en-ca": "./node_modules/moment/locale/en-ca.js",\n\t"./en-ca.js": "./node_modules/moment/locale/en-ca.js",\n\t"./en-gb": "./node_modules/moment/locale/en-gb.js",\n\t"./en-gb.js": "./node_modules/moment/locale/en-gb.js",\n\t"./en-ie": "./node_modules/moment/locale/en-ie.js",\n\t"./en-ie.js": "./node_modules/moment/locale/en-ie.js",\n\t"./en-il": "./node_modules/moment/locale/en-il.js",\n\t"./en-il.js": "./node_modules/moment/locale/en-il.js",\n\t"./en-in": "./node_modules/moment/locale/en-in.js",\n\t"./en-in.js": "./node_modules/moment/locale/en-in.js",\n\t"./en-nz": "./node_modules/moment/locale/en-nz.js",\n\t"./en-nz.js": "./node_modules/moment/locale/en-nz.js",\n\t"./en-sg": "./node_modules/moment/locale/en-sg.js",\n\t"./en-sg.js": "./node_modules/moment/locale/en-sg.js",\n\t"./es": "./node_modules/moment/locale/es.js",\n\t"./es-do": "./node_modules/moment/locale/es-do.js",\n\t"./es-do.js": "./node_modules/moment/locale/es-do.js",\n\t"./es-mx": "./node_modules/moment/locale/es-mx.js",\n\t"./es-mx.js": "./node_modules/moment/locale/es-mx.js",\n\t"./es-us": "./node_modules/moment/locale/es-us.js",\n\t"./es-us.js": "./node_modules/moment/locale/es-us.js",\n\t"./es.js": "./node_modules/moment/locale/es.js"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error("Cannot find module \'" + req + "\'");\n\t\te.code = \'MODULE_NOT_FOUND\';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = "./node_modules/moment/locale sync recursive en%7Ces";\n\n//# sourceURL=webpack:///./node_modules/moment/locale/_sync_en%257Ces?')},"./node_modules/moment/moment.js":function(module,__unused_webpack_exports,__webpack_require__){eval("/* module decorator */ module = __webpack_require__.nmd(module);\n//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n true ? module.exports = factory() :\n 0\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n \"object\" !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = undefined;\n __webpack_require__(\"./node_modules/moment/locale sync recursive en%7Ces\")(\"./\" + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--\x3e\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n\n\n//# sourceURL=webpack:///./node_modules/moment/moment.js?")},jquery:n=>{"use strict";n.exports=jQuery}},__webpack_module_cache__={};function __webpack_require__(n){var e=__webpack_module_cache__[n];if(void 0!==e)return e.exports;var t=__webpack_module_cache__[n]={id:n,loaded:!1,exports:{}};return __webpack_modules__[n].call(t.exports,t,t.exports,__webpack_require__),t.loaded=!0,t.exports}__webpack_require__.d=(n,e)=>{for(var t in e)__webpack_require__.o(e,t)&&!__webpack_require__.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},__webpack_require__.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),__webpack_require__.r=n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},__webpack_require__.nmd=n=>(n.paths=[],n.children||(n.children=[]),n),__webpack_require__("./node_modules/bootstrap/dist/js/bootstrap.esm.js"),__webpack_require__("./node_modules/moment/moment.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jquery-ui.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/material.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/perfect-scrollbar.jquery.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/chartist.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jquery.bootstrap-wizard.js"),__webpack_require__("./buyercall/assets/scripts/vendor/gsdk-bootstrap-wizard.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jquery.select-bootstrap.js"),__webpack_require__("./buyercall/assets/scripts/vendor/bootstrap-notify.js"),__webpack_require__("./buyercall/assets/scripts/vendor/bootstrap-colorpicker.js"),__webpack_require__("./buyercall/assets/scripts/vendor/bootstrap-datetimepicker.js"),__webpack_require__("./buyercall/assets/scripts/vendor/fullcalendar.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jasny-bootstrap.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jquery-jvectormap.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jquery.tagsinput.js"),__webpack_require__("./buyercall/assets/scripts/vendor/jquery.auto-complete.js"),__webpack_require__("./buyercall/assets/scripts/vendor/sweetalert2.js"),__webpack_require__("./buyercall/assets/scripts/vendor/nouislider.min.js"),__webpack_require__("./buyercall/assets/scripts/vendor/material-dashboard.js");var __webpack_exports__=__webpack_require__("./buyercall/assets/scripts/vendor/player.min.js")})();