From 7f830b36f82e4fd5cb8d1be548ca203ee68e4ea6 Mon Sep 17 00:00:00 2001 From: leebeomjun Date: Mon, 22 Jan 2024 13:52:51 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../perfect-scrollbar/perfect-scrollbar.js | 1474 +++++++++++++++-- .../3rd-party/sneat/libs/popper/popper.js | 1240 ++++++++++++-- 2 files changed, 2476 insertions(+), 238 deletions(-) diff --git a/src/main/webapp/resources/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.js b/src/main/webapp/resources/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.js index 80fce8ac..f34b15fc 100644 --- a/src/main/webapp/resources/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.js +++ b/src/main/webapp/resources/3rd-party/sneat/libs/perfect-scrollbar/perfect-scrollbar.js @@ -1,120 +1,1356 @@ -/* - * ATTENTION: An "eval-source-map" devtool has been used. - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). +/*! + * perfect-scrollbar v1.5.3 + * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors + * Licensed under MIT */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else { - var a = factory(); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(self, function() { -return /******/ (function() { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./libs/perfect-scrollbar/perfect-scrollbar.js": -/*!*****************************************************!*\ - !*** ./libs/perfect-scrollbar/perfect-scrollbar.js ***! - \*****************************************************/ -/***/ (function(__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 */ \"PerfectScrollbar\": function() { return /* reexport default from dynamic */ perfect_scrollbar_dist_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_0___default.a; }\n/* harmony export */ });\n/* harmony import */ var perfect_scrollbar_dist_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! perfect-scrollbar/dist/perfect-scrollbar */ \"./node_modules/perfect-scrollbar/dist/perfect-scrollbar.js\");\n/* harmony import */ var perfect_scrollbar_dist_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(perfect_scrollbar_dist_perfect_scrollbar__WEBPACK_IMPORTED_MODULE_0__);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWJzL3BlcmZlY3Qtc2Nyb2xsYmFyL3BlcmZlY3Qtc2Nyb2xsYmFyLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7OztBQUF3RSIsInNvdXJjZXMiOlsid2VicGFjazovL1NuZWF0Ly4vbGlicy9wZXJmZWN0LXNjcm9sbGJhci9wZXJmZWN0LXNjcm9sbGJhci5qcz9iMmMzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBQZXJmZWN0U2Nyb2xsYmFyIGZyb20gJ3BlcmZlY3Qtc2Nyb2xsYmFyL2Rpc3QvcGVyZmVjdC1zY3JvbGxiYXInO1xyXG5cclxuZXhwb3J0IHsgUGVyZmVjdFNjcm9sbGJhciB9O1xyXG4iXSwibmFtZXMiOlsiUGVyZmVjdFNjcm9sbGJhciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./libs/perfect-scrollbar/perfect-scrollbar.js\n"); - -/***/ }), - -/***/ "./node_modules/perfect-scrollbar/dist/perfect-scrollbar.js": -/*!******************************************************************!*\ - !*** ./node_modules/perfect-scrollbar/dist/perfect-scrollbar.js ***! - \******************************************************************/ -/***/ (function(module) { - -eval("/*!\n * perfect-scrollbar v1.5.3\n * Copyright 2021 Hyunje Jun, MDBootstrap and Contributors\n * Licensed under MIT\n */\n\n(function (global, factory) {\n true ? module.exports = factory() :\n 0;\n}(this, (function () { 'use strict';\n\n function get(element) {\n return getComputedStyle(element);\n }\n\n function set(element, obj) {\n for (var key in obj) {\n var val = obj[key];\n if (typeof val === 'number') {\n val = val + \"px\";\n }\n element.style[key] = val;\n }\n return element;\n }\n\n function div(className) {\n var div = document.createElement('div');\n div.className = className;\n return div;\n }\n\n var elMatches =\n typeof Element !== 'undefined' &&\n (Element.prototype.matches ||\n Element.prototype.webkitMatchesSelector ||\n Element.prototype.mozMatchesSelector ||\n Element.prototype.msMatchesSelector);\n\n function matches(element, query) {\n if (!elMatches) {\n throw new Error('No element matching method supported');\n }\n\n return elMatches.call(element, query);\n }\n\n function remove(element) {\n if (element.remove) {\n element.remove();\n } else {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n }\n\n function queryChildren(element, selector) {\n return Array.prototype.filter.call(element.children, function (child) { return matches(child, selector); }\n );\n }\n\n var cls = {\n main: 'ps',\n rtl: 'ps__rtl',\n element: {\n thumb: function (x) { return (\"ps__thumb-\" + x); },\n rail: function (x) { return (\"ps__rail-\" + x); },\n consuming: 'ps__child--consume',\n },\n state: {\n focus: 'ps--focus',\n clicking: 'ps--clicking',\n active: function (x) { return (\"ps--active-\" + x); },\n scrolling: function (x) { return (\"ps--scrolling-\" + x); },\n },\n };\n\n /*\n * Helper methods\n */\n var scrollingClassTimeout = { x: null, y: null };\n\n function addScrollingClass(i, x) {\n var classList = i.element.classList;\n var className = cls.state.scrolling(x);\n\n if (classList.contains(className)) {\n clearTimeout(scrollingClassTimeout[x]);\n } else {\n classList.add(className);\n }\n }\n\n function removeScrollingClass(i, x) {\n scrollingClassTimeout[x] = setTimeout(\n function () { return i.isAlive && i.element.classList.remove(cls.state.scrolling(x)); },\n i.settings.scrollingThreshold\n );\n }\n\n function setScrollingClassInstantly(i, x) {\n addScrollingClass(i, x);\n removeScrollingClass(i, x);\n }\n\n var EventElement = function EventElement(element) {\n this.element = element;\n this.handlers = {};\n };\n\n var prototypeAccessors = { isEmpty: { configurable: true } };\n\n EventElement.prototype.bind = function bind (eventName, handler) {\n if (typeof this.handlers[eventName] === 'undefined') {\n this.handlers[eventName] = [];\n }\n this.handlers[eventName].push(handler);\n this.element.addEventListener(eventName, handler, false);\n };\n\n EventElement.prototype.unbind = function unbind (eventName, target) {\n var this$1 = this;\n\n this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {\n if (target && handler !== target) {\n return true;\n }\n this$1.element.removeEventListener(eventName, handler, false);\n return false;\n });\n };\n\n EventElement.prototype.unbindAll = function unbindAll () {\n for (var name in this.handlers) {\n this.unbind(name);\n }\n };\n\n prototypeAccessors.isEmpty.get = function () {\n var this$1 = this;\n\n return Object.keys(this.handlers).every(\n function (key) { return this$1.handlers[key].length === 0; }\n );\n };\n\n Object.defineProperties( EventElement.prototype, prototypeAccessors );\n\n var EventManager = function EventManager() {\n this.eventElements = [];\n };\n\n EventManager.prototype.eventElement = function eventElement (element) {\n var ee = this.eventElements.filter(function (ee) { return ee.element === element; })[0];\n if (!ee) {\n ee = new EventElement(element);\n this.eventElements.push(ee);\n }\n return ee;\n };\n\n EventManager.prototype.bind = function bind (element, eventName, handler) {\n this.eventElement(element).bind(eventName, handler);\n };\n\n EventManager.prototype.unbind = function unbind (element, eventName, handler) {\n var ee = this.eventElement(element);\n ee.unbind(eventName, handler);\n\n if (ee.isEmpty) {\n // remove\n this.eventElements.splice(this.eventElements.indexOf(ee), 1);\n }\n };\n\n EventManager.prototype.unbindAll = function unbindAll () {\n this.eventElements.forEach(function (e) { return e.unbindAll(); });\n this.eventElements = [];\n };\n\n EventManager.prototype.once = function once (element, eventName, handler) {\n var ee = this.eventElement(element);\n var onceHandler = function (evt) {\n ee.unbind(eventName, onceHandler);\n handler(evt);\n };\n ee.bind(eventName, onceHandler);\n };\n\n function createEvent(name) {\n if (typeof window.CustomEvent === 'function') {\n return new CustomEvent(name);\n } else {\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(name, false, false, undefined);\n return evt;\n }\n }\n\n function processScrollDiff(\n i,\n axis,\n diff,\n useScrollingClass,\n forceFireReachEvent\n ) {\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var fields;\n if (axis === 'top') {\n fields = [\n 'contentHeight',\n 'containerHeight',\n 'scrollTop',\n 'y',\n 'up',\n 'down' ];\n } else if (axis === 'left') {\n fields = [\n 'contentWidth',\n 'containerWidth',\n 'scrollLeft',\n 'x',\n 'left',\n 'right' ];\n } else {\n throw new Error('A proper axis should be provided');\n }\n\n processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);\n }\n\n function processScrollDiff$1(\n i,\n diff,\n ref,\n useScrollingClass,\n forceFireReachEvent\n ) {\n var contentHeight = ref[0];\n var containerHeight = ref[1];\n var scrollTop = ref[2];\n var y = ref[3];\n var up = ref[4];\n var down = ref[5];\n if ( useScrollingClass === void 0 ) useScrollingClass = true;\n if ( forceFireReachEvent === void 0 ) forceFireReachEvent = false;\n\n var element = i.element;\n\n // reset reach\n i.reach[y] = null;\n\n // 1 for subpixel rounding\n if (element[scrollTop] < 1) {\n i.reach[y] = 'start';\n }\n\n // 1 for subpixel rounding\n if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {\n i.reach[y] = 'end';\n }\n\n if (diff) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + y)));\n\n if (diff < 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + up)));\n } else if (diff > 0) {\n element.dispatchEvent(createEvent((\"ps-scroll-\" + down)));\n }\n\n if (useScrollingClass) {\n setScrollingClassInstantly(i, y);\n }\n }\n\n if (i.reach[y] && (diff || forceFireReachEvent)) {\n element.dispatchEvent(createEvent((\"ps-\" + y + \"-reach-\" + (i.reach[y]))));\n }\n }\n\n function toInt(x) {\n return parseInt(x, 10) || 0;\n }\n\n function isEditable(el) {\n return (\n matches(el, 'input,[contenteditable]') ||\n matches(el, 'select,[contenteditable]') ||\n matches(el, 'textarea,[contenteditable]') ||\n matches(el, 'button,[contenteditable]')\n );\n }\n\n function outerWidth(element) {\n var styles = get(element);\n return (\n toInt(styles.width) +\n toInt(styles.paddingLeft) +\n toInt(styles.paddingRight) +\n toInt(styles.borderLeftWidth) +\n toInt(styles.borderRightWidth)\n );\n }\n\n var env = {\n isWebKit:\n typeof document !== 'undefined' &&\n 'WebkitAppearance' in document.documentElement.style,\n supportsTouch:\n typeof window !== 'undefined' &&\n ('ontouchstart' in window ||\n ('maxTouchPoints' in window.navigator &&\n window.navigator.maxTouchPoints > 0) ||\n (window.DocumentTouch && document instanceof window.DocumentTouch)),\n supportsIePointer:\n typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,\n isChrome:\n typeof navigator !== 'undefined' &&\n /Chrome/i.test(navigator && navigator.userAgent),\n };\n\n function updateGeometry(i) {\n var element = i.element;\n var roundedScrollTop = Math.floor(element.scrollTop);\n var rect = element.getBoundingClientRect();\n\n i.containerWidth = Math.round(rect.width);\n i.containerHeight = Math.round(rect.height);\n\n i.contentWidth = element.scrollWidth;\n i.contentHeight = element.scrollHeight;\n\n if (!element.contains(i.scrollbarXRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('x')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarXRail);\n }\n if (!element.contains(i.scrollbarYRail)) {\n // clean up and append\n queryChildren(element, cls.element.rail('y')).forEach(function (el) { return remove(el); }\n );\n element.appendChild(i.scrollbarYRail);\n }\n\n if (\n !i.settings.suppressScrollX &&\n i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth\n ) {\n i.scrollbarXActive = true;\n i.railXWidth = i.containerWidth - i.railXMarginWidth;\n i.railXRatio = i.containerWidth / i.railXWidth;\n i.scrollbarXWidth = getThumbSize(\n i,\n toInt((i.railXWidth * i.containerWidth) / i.contentWidth)\n );\n i.scrollbarXLeft = toInt(\n ((i.negativeScrollAdjustment + element.scrollLeft) *\n (i.railXWidth - i.scrollbarXWidth)) /\n (i.contentWidth - i.containerWidth)\n );\n } else {\n i.scrollbarXActive = false;\n }\n\n if (\n !i.settings.suppressScrollY &&\n i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight\n ) {\n i.scrollbarYActive = true;\n i.railYHeight = i.containerHeight - i.railYMarginHeight;\n i.railYRatio = i.containerHeight / i.railYHeight;\n i.scrollbarYHeight = getThumbSize(\n i,\n toInt((i.railYHeight * i.containerHeight) / i.contentHeight)\n );\n i.scrollbarYTop = toInt(\n (roundedScrollTop * (i.railYHeight - i.scrollbarYHeight)) /\n (i.contentHeight - i.containerHeight)\n );\n } else {\n i.scrollbarYActive = false;\n }\n\n if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {\n i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;\n }\n if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {\n i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;\n }\n\n updateCss(element, i);\n\n if (i.scrollbarXActive) {\n element.classList.add(cls.state.active('x'));\n } else {\n element.classList.remove(cls.state.active('x'));\n i.scrollbarXWidth = 0;\n i.scrollbarXLeft = 0;\n element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;\n }\n if (i.scrollbarYActive) {\n element.classList.add(cls.state.active('y'));\n } else {\n element.classList.remove(cls.state.active('y'));\n i.scrollbarYHeight = 0;\n i.scrollbarYTop = 0;\n element.scrollTop = 0;\n }\n }\n\n function getThumbSize(i, thumbSize) {\n if (i.settings.minScrollbarLength) {\n thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);\n }\n if (i.settings.maxScrollbarLength) {\n thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);\n }\n return thumbSize;\n }\n\n function updateCss(element, i) {\n var xRailOffset = { width: i.railXWidth };\n var roundedScrollTop = Math.floor(element.scrollTop);\n\n if (i.isRtl) {\n xRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth -\n i.contentWidth;\n } else {\n xRailOffset.left = element.scrollLeft;\n }\n if (i.isScrollbarXUsingBottom) {\n xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;\n } else {\n xRailOffset.top = i.scrollbarXTop + roundedScrollTop;\n }\n set(i.scrollbarXRail, xRailOffset);\n\n var yRailOffset = { top: roundedScrollTop, height: i.railYHeight };\n if (i.isScrollbarYUsingRight) {\n if (i.isRtl) {\n yRailOffset.right =\n i.contentWidth -\n (i.negativeScrollAdjustment + element.scrollLeft) -\n i.scrollbarYRight -\n i.scrollbarYOuterWidth -\n 9;\n } else {\n yRailOffset.right = i.scrollbarYRight - element.scrollLeft;\n }\n } else {\n if (i.isRtl) {\n yRailOffset.left =\n i.negativeScrollAdjustment +\n element.scrollLeft +\n i.containerWidth * 2 -\n i.contentWidth -\n i.scrollbarYLeft -\n i.scrollbarYOuterWidth;\n } else {\n yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;\n }\n }\n set(i.scrollbarYRail, yRailOffset);\n\n set(i.scrollbarX, {\n left: i.scrollbarXLeft,\n width: i.scrollbarXWidth - i.railBorderXWidth,\n });\n set(i.scrollbarY, {\n top: i.scrollbarYTop,\n height: i.scrollbarYHeight - i.railBorderYWidth,\n });\n }\n\n function clickRail(i) {\n var element = i.element;\n\n i.event.bind(i.scrollbarY, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarYRail, 'mousedown', function (e) {\n var positionTop =\n e.pageY -\n window.pageYOffset -\n i.scrollbarYRail.getBoundingClientRect().top;\n var direction = positionTop > i.scrollbarYTop ? 1 : -1;\n\n i.element.scrollTop += direction * i.containerHeight;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n\n i.event.bind(i.scrollbarX, 'mousedown', function (e) { return e.stopPropagation(); });\n i.event.bind(i.scrollbarXRail, 'mousedown', function (e) {\n var positionLeft =\n e.pageX -\n window.pageXOffset -\n i.scrollbarXRail.getBoundingClientRect().left;\n var direction = positionLeft > i.scrollbarXLeft ? 1 : -1;\n\n i.element.scrollLeft += direction * i.containerWidth;\n updateGeometry(i);\n\n e.stopPropagation();\n });\n }\n\n function dragThumb(i) {\n bindMouseScrollHandler(i, [\n 'containerWidth',\n 'contentWidth',\n 'pageX',\n 'railXWidth',\n 'scrollbarX',\n 'scrollbarXWidth',\n 'scrollLeft',\n 'x',\n 'scrollbarXRail' ]);\n bindMouseScrollHandler(i, [\n 'containerHeight',\n 'contentHeight',\n 'pageY',\n 'railYHeight',\n 'scrollbarY',\n 'scrollbarYHeight',\n 'scrollTop',\n 'y',\n 'scrollbarYRail' ]);\n }\n\n function bindMouseScrollHandler(\n i,\n ref\n ) {\n var containerHeight = ref[0];\n var contentHeight = ref[1];\n var pageY = ref[2];\n var railYHeight = ref[3];\n var scrollbarY = ref[4];\n var scrollbarYHeight = ref[5];\n var scrollTop = ref[6];\n var y = ref[7];\n var scrollbarYRail = ref[8];\n\n var element = i.element;\n\n var startingScrollTop = null;\n var startingMousePageY = null;\n var scrollBy = null;\n\n function mouseMoveHandler(e) {\n if (e.touches && e.touches[0]) {\n e[pageY] = e.touches[0].pageY;\n }\n element[scrollTop] =\n startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);\n addScrollingClass(i, y);\n updateGeometry(i);\n\n e.stopPropagation();\n if (e.type.startsWith('touch') && e.changedTouches.length > 1) {\n e.preventDefault();\n }\n }\n\n function mouseUpHandler() {\n removeScrollingClass(i, y);\n i[scrollbarYRail].classList.remove(cls.state.clicking);\n i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n }\n\n function bindMoves(e, touchMode) {\n startingScrollTop = element[scrollTop];\n if (touchMode && e.touches) {\n e[pageY] = e.touches[0].pageY;\n }\n startingMousePageY = e[pageY];\n scrollBy =\n (i[contentHeight] - i[containerHeight]) /\n (i[railYHeight] - i[scrollbarYHeight]);\n if (!touchMode) {\n i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);\n i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);\n e.preventDefault();\n } else {\n i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);\n }\n\n i[scrollbarYRail].classList.add(cls.state.clicking);\n\n e.stopPropagation();\n }\n\n i.event.bind(i[scrollbarY], 'mousedown', function (e) {\n bindMoves(e);\n });\n i.event.bind(i[scrollbarY], 'touchstart', function (e) {\n bindMoves(e, true);\n });\n }\n\n function keyboard(i) {\n var element = i.element;\n\n var elementHovered = function () { return matches(element, ':hover'); };\n var scrollbarFocused = function () { return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus'); };\n\n function shouldPreventDefault(deltaX, deltaY) {\n var scrollTop = Math.floor(element.scrollTop);\n if (deltaX === 0) {\n if (!i.scrollbarYActive) {\n return false;\n }\n if (\n (scrollTop === 0 && deltaY > 0) ||\n (scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n\n var scrollLeft = element.scrollLeft;\n if (deltaY === 0) {\n if (!i.scrollbarXActive) {\n return false;\n }\n if (\n (scrollLeft === 0 && deltaX < 0) ||\n (scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0)\n ) {\n return !i.settings.wheelPropagation;\n }\n }\n return true;\n }\n\n i.event.bind(i.ownerDocument, 'keydown', function (e) {\n if (\n (e.isDefaultPrevented && e.isDefaultPrevented()) ||\n e.defaultPrevented\n ) {\n return;\n }\n\n if (!elementHovered() && !scrollbarFocused()) {\n return;\n }\n\n var activeElement = document.activeElement\n ? document.activeElement\n : i.ownerDocument.activeElement;\n if (activeElement) {\n if (activeElement.tagName === 'IFRAME') {\n activeElement = activeElement.contentDocument.activeElement;\n } else {\n // go deeper if element is a webcomponent\n while (activeElement.shadowRoot) {\n activeElement = activeElement.shadowRoot.activeElement;\n }\n }\n if (isEditable(activeElement)) {\n return;\n }\n }\n\n var deltaX = 0;\n var deltaY = 0;\n\n switch (e.which) {\n case 37: // left\n if (e.metaKey) {\n deltaX = -i.contentWidth;\n } else if (e.altKey) {\n deltaX = -i.containerWidth;\n } else {\n deltaX = -30;\n }\n break;\n case 38: // up\n if (e.metaKey) {\n deltaY = i.contentHeight;\n } else if (e.altKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = 30;\n }\n break;\n case 39: // right\n if (e.metaKey) {\n deltaX = i.contentWidth;\n } else if (e.altKey) {\n deltaX = i.containerWidth;\n } else {\n deltaX = 30;\n }\n break;\n case 40: // down\n if (e.metaKey) {\n deltaY = -i.contentHeight;\n } else if (e.altKey) {\n deltaY = -i.containerHeight;\n } else {\n deltaY = -30;\n }\n break;\n case 32: // space bar\n if (e.shiftKey) {\n deltaY = i.containerHeight;\n } else {\n deltaY = -i.containerHeight;\n }\n break;\n case 33: // page up\n deltaY = i.containerHeight;\n break;\n case 34: // page down\n deltaY = -i.containerHeight;\n break;\n case 36: // home\n deltaY = i.contentHeight;\n break;\n case 35: // end\n deltaY = -i.contentHeight;\n break;\n default:\n return;\n }\n\n if (i.settings.suppressScrollX && deltaX !== 0) {\n return;\n }\n if (i.settings.suppressScrollY && deltaY !== 0) {\n return;\n }\n\n element.scrollTop -= deltaY;\n element.scrollLeft += deltaX;\n updateGeometry(i);\n\n if (shouldPreventDefault(deltaX, deltaY)) {\n e.preventDefault();\n }\n });\n }\n\n function wheel(i) {\n var element = i.element;\n\n function shouldPreventDefault(deltaX, deltaY) {\n var roundedScrollTop = Math.floor(element.scrollTop);\n var isTop = element.scrollTop === 0;\n var isBottom =\n roundedScrollTop + element.offsetHeight === element.scrollHeight;\n var isLeft = element.scrollLeft === 0;\n var isRight =\n element.scrollLeft + element.offsetWidth === element.scrollWidth;\n\n var hitsBound;\n\n // pick axis with primary direction\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n hitsBound = isTop || isBottom;\n } else {\n hitsBound = isLeft || isRight;\n }\n\n return hitsBound ? !i.settings.wheelPropagation : true;\n }\n\n function getDeltaFromEvent(e) {\n var deltaX = e.deltaX;\n var deltaY = -1 * e.deltaY;\n\n if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {\n // OS X Safari\n deltaX = (-1 * e.wheelDeltaX) / 6;\n deltaY = e.wheelDeltaY / 6;\n }\n\n if (e.deltaMode && e.deltaMode === 1) {\n // Firefox in deltaMode 1: Line scrolling\n deltaX *= 10;\n deltaY *= 10;\n }\n\n if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {\n // IE in some mouse drivers\n deltaX = 0;\n deltaY = e.wheelDelta;\n }\n\n if (e.shiftKey) {\n // reverse axis with shift key\n return [-deltaY, -deltaX];\n }\n return [deltaX, deltaY];\n }\n\n function shouldBeConsumedByChild(target, deltaX, deltaY) {\n // FIXME: this is a workaround for issue in FF and IE #571 + if (!env.isWebKit && element.querySelector('select:focus')) { + return true; + } + + if (!element.contains(target)) { + return false; + } + + var cursor = target; + + while (cursor && cursor !== element) { + if (cursor.classList.contains(cls.element.consuming)) { + return true; + } + + var style = get(cursor); + + // if deltaY && vertical scrollable + if (deltaY && style.overflowY.match(/(scroll|auto)/)) { + var maxScrollTop = cursor.scrollHeight - cursor.clientHeight; + if (maxScrollTop > 0) { + if ( + (cursor.scrollTop > 0 && deltaY < 0) || + (cursor.scrollTop < maxScrollTop && deltaY > 0) + ) { + return true; + } + } + } + // if deltaX && horizontal scrollable + if (deltaX && style.overflowX.match(/(scroll|auto)/)) { + var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth; + if (maxScrollLeft > 0) { + if ( + (cursor.scrollLeft > 0 && deltaX < 0) || + (cursor.scrollLeft < maxScrollLeft && deltaX > 0) + ) { + return true; + } + } + } + + cursor = cursor.parentNode; + } + + return false; + } + + function mousewheelHandler(e) { + var ref = getDeltaFromEvent(e); + var deltaX = ref[0]; + var deltaY = ref[1]; + + if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) { + return; + } + + var shouldPrevent = false; + if (!i.settings.useBothWheelAxes) { + // deltaX will only be used for horizontal scrolling and deltaY will + // only be used for vertical scrolling - this is the default + element.scrollTop -= deltaY * i.settings.wheelSpeed; + element.scrollLeft += deltaX * i.settings.wheelSpeed; + } else if (i.scrollbarYActive && !i.scrollbarXActive) { + // only vertical scrollbar is active and useBothWheelAxes option is + // active, so let's scroll vertical bar using both mouse wheel axes + if (deltaY) { + element.scrollTop -= deltaY * i.settings.wheelSpeed; + } else { + element.scrollTop += deltaX * i.settings.wheelSpeed; + } + shouldPrevent = true; + } else if (i.scrollbarXActive && !i.scrollbarYActive) { + // useBothWheelAxes and only horizontal bar is active, so use both + // wheel axes for horizontal bar + if (deltaX) { + element.scrollLeft += deltaX * i.settings.wheelSpeed; + } else { + element.scrollLeft -= deltaY * i.settings.wheelSpeed; + } + shouldPrevent = true; + } + + updateGeometry(i); + + shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY); + if (shouldPrevent && !e.ctrlKey) { + e.stopPropagation(); + e.preventDefault(); + } + } + + if (typeof window.onwheel !== 'undefined') { + i.event.bind(element, 'wheel', mousewheelHandler); + } else if (typeof window.onmousewheel !== 'undefined') { + i.event.bind(element, 'mousewheel', mousewheelHandler); + } + } + + function touch(i) { + if (!env.supportsTouch && !env.supportsIePointer) { + return; + } + + var element = i.element; + + function shouldPrevent(deltaX, deltaY) { + var scrollTop = Math.floor(element.scrollTop); + var scrollLeft = element.scrollLeft; + var magnitudeX = Math.abs(deltaX); + var magnitudeY = Math.abs(deltaY); + + if (magnitudeY > magnitudeX) { + // user is perhaps trying to swipe up/down the page + + if ( + (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight) || + (deltaY > 0 && scrollTop === 0) + ) { + // set prevent for mobile Chrome refresh + return window.scrollY === 0 && deltaY > 0 && env.isChrome; + } + } else if (magnitudeX > magnitudeY) { + // user is perhaps trying to swipe left/right across the page + + if ( + (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth) || + (deltaX > 0 && scrollLeft === 0) + ) { + return true; + } + } + + return true; + } + + function applyTouchMove(differenceX, differenceY) { + element.scrollTop -= differenceY; + element.scrollLeft -= differenceX; + + updateGeometry(i); + } + + var startOffset = {}; + var startTime = 0; + var speed = {}; + var easingLoop = null; + + function getTouch(e) { + if (e.targetTouches) { + return e.targetTouches[0]; + } else { + // Maybe IE pointer + return e; + } + } + + function shouldHandle(e) { + if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) { + return false; + } + if (e.targetTouches && e.targetTouches.length === 1) { + return true; + } + if ( + e.pointerType && + e.pointerType !== 'mouse' && + e.pointerType !== e.MSPOINTER_TYPE_MOUSE + ) { + return true; + } + return false; + } + + function touchStart(e) { + if (!shouldHandle(e)) { + return; + } + + var touch = getTouch(e); + + startOffset.pageX = touch.pageX; + startOffset.pageY = touch.pageY; + + startTime = new Date().getTime(); + + if (easingLoop !== null) { + clearInterval(easingLoop); + } + } + + function shouldBeConsumedByChild(target, deltaX, deltaY) { + if (!element.contains(target)) { + return false; + } + + var cursor = target; + + while (cursor && cursor !== element) { + if (cursor.classList.contains(cls.element.consuming)) { + return true; + } + + var style = get(cursor); + + // if deltaY && vertical scrollable + if (deltaY && style.overflowY.match(/(scroll|auto)/)) { + var maxScrollTop = cursor.scrollHeight - cursor.clientHeight; + if (maxScrollTop > 0) { + if ( + (cursor.scrollTop > 0 && deltaY < 0) || + (cursor.scrollTop < maxScrollTop && deltaY > 0) + ) { + return true; + } + } + } + // if deltaX && horizontal scrollable + if (deltaX && style.overflowX.match(/(scroll|auto)/)) { + var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth; + if (maxScrollLeft > 0) { + if ( + (cursor.scrollLeft > 0 && deltaX < 0) || + (cursor.scrollLeft < maxScrollLeft && deltaX > 0) + ) { + return true; + } + } + } + + cursor = cursor.parentNode; + } + + return false; + } + + function touchMove(e) { + if (shouldHandle(e)) { + var touch = getTouch(e); + + var currentOffset = { pageX: touch.pageX, pageY: touch.pageY }; + + var differenceX = currentOffset.pageX - startOffset.pageX; + var differenceY = currentOffset.pageY - startOffset.pageY; + + if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) { + return; + } + + applyTouchMove(differenceX, differenceY); + startOffset = currentOffset; + + var currentTime = new Date().getTime(); + + var timeGap = currentTime - startTime; + if (timeGap > 0) { + speed.x = differenceX / timeGap; + speed.y = differenceY / timeGap; + startTime = currentTime; + } + + if (shouldPrevent(differenceX, differenceY)) { + e.preventDefault(); + } + } + } + function touchEnd() { + if (i.settings.swipeEasing) { + clearInterval(easingLoop); + easingLoop = setInterval(function() { + if (i.isInitialized) { + clearInterval(easingLoop); + return; + } + + if (!speed.x && !speed.y) { + clearInterval(easingLoop); + return; + } + + if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) { + clearInterval(easingLoop); + return; + } + + if (!i.element) { + clearInterval(easingLoop); + return; + } + + applyTouchMove(speed.x * 30, speed.y * 30); + + speed.x *= 0.8; + speed.y *= 0.8; + }, 10); + } + } + + if (env.supportsTouch) { + i.event.bind(element, 'touchstart', touchStart); + i.event.bind(element, 'touchmove', touchMove); + i.event.bind(element, 'touchend', touchEnd); + } else if (env.supportsIePointer) { + if (window.PointerEvent) { + i.event.bind(element, 'pointerdown', touchStart); + i.event.bind(element, 'pointermove', touchMove); + i.event.bind(element, 'pointerup', touchEnd); + } else if (window.MSPointerEvent) { + i.event.bind(element, 'MSPointerDown', touchStart); + i.event.bind(element, 'MSPointerMove', touchMove); + i.event.bind(element, 'MSPointerUp', touchEnd); + } + } + } + + var defaultSettings = function () { return ({ + handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'], + maxScrollbarLength: null, + minScrollbarLength: null, + scrollingThreshold: 1000, + scrollXMarginOffset: 0, + scrollYMarginOffset: 0, + suppressScrollX: false, + suppressScrollY: false, + swipeEasing: true, + useBothWheelAxes: false, + wheelPropagation: true, + wheelSpeed: 1, + }); }; + + var handlers = { + 'click-rail': clickRail, + 'drag-thumb': dragThumb, + keyboard: keyboard, + wheel: wheel, + touch: touch, + }; + + var PerfectScrollbar = function PerfectScrollbar(element, userSettings) { + var this$1 = this; + if ( userSettings === void 0 ) userSettings = {}; + + if (typeof element === 'string') { + element = document.querySelector(element); + } + + if (!element || !element.nodeName) { + throw new Error('no element is specified to initialize PerfectScrollbar'); + } + + this.element = element; + + element.classList.add(cls.main); + + this.settings = defaultSettings(); + for (var key in userSettings) { + this.settings[key] = userSettings[key]; + } + + this.containerWidth = null; + this.containerHeight = null; + this.contentWidth = null; + this.contentHeight = null; + + var focus = function () { return element.classList.add(cls.state.focus); }; + var blur = function () { return element.classList.remove(cls.state.focus); }; + + this.isRtl = get(element).direction === 'rtl'; + if (this.isRtl === true) { + element.classList.add(cls.rtl); + } + this.isNegativeScroll = (function () { + var originalScrollLeft = element.scrollLeft; + var result = null; + element.scrollLeft = -1; + result = element.scrollLeft < 0; + element.scrollLeft = originalScrollLeft; + return result; + })(); + this.negativeScrollAdjustment = this.isNegativeScroll + ? element.scrollWidth - element.clientWidth + : 0; + this.event = new EventManager(); + this.ownerDocument = element.ownerDocument || document; + + this.scrollbarXRail = div(cls.element.rail('x')); + element.appendChild(this.scrollbarXRail); + this.scrollbarX = div(cls.element.thumb('x')); + this.scrollbarXRail.appendChild(this.scrollbarX); + this.scrollbarX.setAttribute('tabindex', 0); + this.event.bind(this.scrollbarX, 'focus', focus); + this.event.bind(this.scrollbarX, 'blur', blur); + this.scrollbarXActive = null; + this.scrollbarXWidth = null; + this.scrollbarXLeft = null; + var railXStyle = get(this.scrollbarXRail); + this.scrollbarXBottom = parseInt(railXStyle.bottom, 10); + if (isNaN(this.scrollbarXBottom)) { + this.isScrollbarXUsingBottom = false; + this.scrollbarXTop = toInt(railXStyle.top); + } else { + this.isScrollbarXUsingBottom = true; + } + this.railBorderXWidth = + toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); + // Set rail to display:block to calculate margins + set(this.scrollbarXRail, { display: 'block' }); + this.railXMarginWidth = + toInt(railXStyle.marginLeft) + toInt(railXStyle.marginRight); + set(this.scrollbarXRail, { display: '' }); + this.railXWidth = null; + this.railXRatio = null; + + this.scrollbarYRail = div(cls.element.rail('y')); + element.appendChild(this.scrollbarYRail); + this.scrollbarY = div(cls.element.thumb('y')); + this.scrollbarYRail.appendChild(this.scrollbarY); + this.scrollbarY.setAttribute('tabindex', 0); + this.event.bind(this.scrollbarY, 'focus', focus); + this.event.bind(this.scrollbarY, 'blur', blur); + this.scrollbarYActive = null; + this.scrollbarYHeight = null; + this.scrollbarYTop = null; + var railYStyle = get(this.scrollbarYRail); + this.scrollbarYRight = parseInt(railYStyle.right, 10); + if (isNaN(this.scrollbarYRight)) { + this.isScrollbarYUsingRight = false; + this.scrollbarYLeft = toInt(railYStyle.left); + } else { + this.isScrollbarYUsingRight = true; + } + this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null; + this.railBorderYWidth = + toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth); + set(this.scrollbarYRail, { display: 'block' }); + this.railYMarginHeight = + toInt(railYStyle.marginTop) + toInt(railYStyle.marginBottom); + set(this.scrollbarYRail, { display: '' }); + this.railYHeight = null; + this.railYRatio = null; + + this.reach = { + x: + element.scrollLeft <= 0 + ? 'start' + : element.scrollLeft >= this.contentWidth - this.containerWidth + ? 'end' + : null, + y: + element.scrollTop <= 0 + ? 'start' + : element.scrollTop >= this.contentHeight - this.containerHeight + ? 'end' + : null, + }; + + this.isAlive = true; + + this.settings.handlers.forEach(function (handlerName) { return handlers[handlerName](this$1); }); + + this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only + this.lastScrollLeft = element.scrollLeft; // for onScroll only + this.event.bind(this.element, 'scroll', function (e) { return this$1.onScroll(e); }); + updateGeometry(this); + }; + + PerfectScrollbar.prototype.update = function update () { + if (!this.isAlive) { + return; + } + + // Recalcuate negative scrollLeft adjustment + this.negativeScrollAdjustment = this.isNegativeScroll + ? this.element.scrollWidth - this.element.clientWidth + : 0; + + // Recalculate rail margins + set(this.scrollbarXRail, { display: 'block' }); + set(this.scrollbarYRail, { display: 'block' }); + this.railXMarginWidth = + toInt(get(this.scrollbarXRail).marginLeft) + + toInt(get(this.scrollbarXRail).marginRight); + this.railYMarginHeight = + toInt(get(this.scrollbarYRail).marginTop) + + toInt(get(this.scrollbarYRail).marginBottom); + + // Hide scrollbars not to affect scrollWidth and scrollHeight + set(this.scrollbarXRail, { display: 'none' }); + set(this.scrollbarYRail, { display: 'none' }); + + updateGeometry(this); + + processScrollDiff(this, 'top', 0, false, true); + processScrollDiff(this, 'left', 0, false, true); + + set(this.scrollbarXRail, { display: '' }); + set(this.scrollbarYRail, { display: '' }); + }; + + PerfectScrollbar.prototype.onScroll = function onScroll (e) { + if (!this.isAlive) { + return; + } + + updateGeometry(this); + processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop); + processScrollDiff( + this, + 'left', + this.element.scrollLeft - this.lastScrollLeft + ); + + this.lastScrollTop = Math.floor(this.element.scrollTop); + this.lastScrollLeft = this.element.scrollLeft; + }; + + PerfectScrollbar.prototype.destroy = function destroy () { + if (!this.isAlive) { + return; + } + + this.event.unbindAll(); + remove(this.scrollbarX); + remove(this.scrollbarY); + remove(this.scrollbarXRail); + remove(this.scrollbarYRail); + this.removePsClasses(); + + // unset elements + this.element = null; + this.scrollbarX = null; + this.scrollbarY = null; + this.scrollbarXRail = null; + this.scrollbarYRail = null; + + this.isAlive = false; + }; + + PerfectScrollbar.prototype.removePsClasses = function removePsClasses () { + this.element.className = this.element.className + .split(' ') + .filter(function (name) { return !name.match(/^ps([-_].+|)$/); }) + .join(' '); + }; + + return PerfectScrollbar; + +}))); \ No newline at end of file diff --git a/src/main/webapp/resources/3rd-party/sneat/libs/popper/popper.js b/src/main/webapp/resources/3rd-party/sneat/libs/popper/popper.js index e7f3922e..27a9ae77 100644 --- a/src/main/webapp/resources/3rd-party/sneat/libs/popper/popper.js +++ b/src/main/webapp/resources/3rd-party/sneat/libs/popper/popper.js @@ -1,120 +1,1122 @@ -/* - * ATTENTION: An "eval-source-map" devtool has been used. - * This devtool is neither made for production nor for readable output files. - * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. - * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) - * or disable the default devtool with "devtool: false". - * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). +/** + * @popperjs/core v2.11.6 - MIT License */ -(function webpackUniversalModuleDefinition(root, factory) { - if(typeof exports === 'object' && typeof module === 'object') - module.exports = factory(); - else if(typeof define === 'function' && define.amd) - define([], factory); - else { - var a = factory(); - for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i]; - } -})(self, function() { -return /******/ (function() { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "./node_modules/@popperjs/core/dist/umd/popper.min.js": -/*!************************************************************!*\ - !*** ./node_modules/@popperjs/core/dist/umd/popper.min.js ***! - \************************************************************/ -/***/ (function(__unused_webpack_module, exports) { - -eval("/**\n * @popperjs/core v2.11.6 - MIT License\n */\n\n!function(e,t){ true?t(exports):0}(this,(function(e){\"use strict\";function t(e){if(null==e)return window;if(\"[object Window]\"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return\"undefined\"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands?e.brands.map((function(e){return e.brand+\"/\"+e.version})).join(\" \"):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||\"\").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&((\"body\"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return\"html\"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function w(e){return[\"html\",\"body\",\"#document\"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:w(b(e))}function x(e,n){var r;void 0===n&&(n=[]);var o=w(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(x(b(s)))}function O(e){return[\"table\",\"td\",\"th\"].indexOf(l(e))>=0}function j(e){return r(e)&&\"fixed\"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&\"static\"===m(i).position;)i=j(i);return i&&(\"html\"===l(i)||\"body\"===l(i)&&\"static\"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&\"fixed\"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&[\"html\",\"body\"].indexOf(l(n))<0;){var i=m(n);if(\"none\"!==i.transform||\"none\"!==i.perspective||\"paint\"===i.contain||-1!==[\"transform\",\"perspective\"].indexOf(i.willChange)||t&&\"filter\"===i.willChange||t&&i.filter&&\"none\"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D=\"top\",A=\"bottom\",L=\"right\",P=\"left\",M=\"auto\",k=[D,A,L,P],W=\"start\",B=\"end\",H=\"viewport\",T=\"popper\",R=k.reduce((function(e,t){return e.concat([t+\"-\"+W,t+\"-\"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+\"-\"+W,t+\"-\"+B])}),[]),V=[\"beforeRead\",\"read\",\"afterRead\",\"beforeMain\",\"main\",\"afterMain\",\"beforeWrite\",\"write\",\"afterWrite\"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split(\"-\")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&\"fixed\"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,\"fixed\"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return\"rtl\"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f=\"clippingParents\"===t?function(e){var t=x(b(e)),o=[\"absolute\",\"fixed\"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&\"body\"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split(\"-\")[1]}function z(e){return[\"top\",\"bottom\"].indexOf(e)>=0?\"x\":\"y\"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p=\"y\"===c?\"height\":\"width\";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?\"clippingParents\":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,w=Y(\"number\"!=typeof b?b:G(b,k)),x=m===T?\"reference\":T,O=e.rects.popper,j=e.elements[y?x:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:\"absolute\",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+w.top,bottom:B.bottom-E.bottom+w.bottom,left:E.left-B.left+w.left,right:B.right-E.right+w.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?\"y\":\"x\";R[e]+=V[n]*t}))}return R}var K={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i=\"function\"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:\"end\",end:\"start\"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:\"flip\",enabled:!0,phase:\"main\",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),w=t.rects.reference,x=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?\"width\":\"height\",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;w[S]>x[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,\"break\"},F=h?3:1;F>0;F--){if(\"break\"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:[\"offset\"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),w=C(t.placement),x=U(t.placement),O=!x,j=z(w),M=\"x\"===j?\"y\":\"x\",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T=\"function\"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R=\"number\"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N=\"y\"===j?D:P,I=\"y\"===j?A:L,_=\"y\"===j?\"height\":\"width\",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=x===W?B[_]:H[_],Q=x===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData[\"arrow#persistent\"]?t.modifiersData[\"arrow#persistent\"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?\"y\"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le=\"x\"===j?D:P,he=\"x\"===j?A:L,me=k[M],ve=\"y\"===M?\"height\":\"width\",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(w),we=null!=(ue=null==S?void 0:S[M])?ue:0,xe=be?ye:me-B[ve]-H[ve]-we+R.altAxis,Oe=be?me+B[ve]+H[ve]-we-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(xe,me,Oe):de(m?xe:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:[\"offset\"]};var me={name:\"arrow\",enabled:!0,phase:\"main\",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?\"height\":\"width\";if(i&&a){var p=function(e,t){return Y(\"number\"!=typeof(e=\"function\"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l=\"y\"===f?D:P,d=\"y\"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?\"y\"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,w=p[l],x=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(w,O,x),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?\"[data-popper-arrow]\":n;null!=r&&(\"string\"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:\"reference\"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-reference-hidden\":p,\"data-popper-escaped\":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),we=[ee,te,oe,ie,ae,le,he,me,ge],xe=Z({defaultModifiers:we});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=xe,e.createPopperLite=be,e.defaultModifiers=we,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,\"__esModule\",{value:!0})}));\n//# sourceMappingURL=popper.min.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvZGlzdC91bWQvcG9wcGVyLm1pbi5qcy5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZSxLQUFvRCxZQUFZLENBQThILENBQUMsbUJBQW1CLGFBQWEsY0FBYyx5QkFBeUIscUNBQXFDLHNCQUFzQixnQ0FBZ0MsU0FBUyxjQUFjLHVEQUF1RCxjQUFjLCtEQUErRCxjQUFjLDhGQUE4Rix1Q0FBdUMsYUFBYSw4QkFBOEIsbURBQW1ELDZCQUE2QixpQ0FBaUMsYUFBYSxrREFBa0Qsa0JBQWtCLHNDQUFzQyx3Q0FBd0MsNEdBQTRHLCtJQUErSSxPQUFPLDREQUE0RCxjQUFjLFdBQVcsT0FBTyxrREFBa0QsY0FBYyw2Q0FBNkMsY0FBYywyRUFBMkUsY0FBYyxvQ0FBb0MsY0FBYyxnQ0FBZ0MsY0FBYyxvREFBb0QsK0NBQStDLGtCQUFrQixtQkFBbUIsbUNBQW1DLDhGQUE4RixvQkFBb0IseUJBQXlCLHlCQUF5QixJQUFJLFNBQVMsa0VBQWtFLGtEQUFrRCwyRUFBMkUsaUZBQWlGLGNBQWMsNENBQTRDLGtGQUFrRiwrQ0FBK0MsY0FBYyw2RUFBNkUsY0FBYyw2RkFBNkYsZ0JBQWdCLE1BQU0sbUJBQW1CLGlJQUFpSSw2QkFBNkIsY0FBYywyQ0FBMkMsY0FBYyx5REFBeUQsY0FBYyxzQkFBc0Isa0NBQWtDLFFBQVEsb0ZBQW9GLDJCQUEyQixtRUFBbUUsV0FBVyxxQkFBcUIsc0NBQXNDLEVBQUUsV0FBVyxrTUFBa00sZUFBZSxZQUFZLE9BQU8sbUlBQW1JLG1DQUFtQywrQ0FBK0MscUNBQXFDLDZHQUE2RyxjQUFjLDZCQUE2QixjQUFjLG9GQUFvRixjQUFjLGVBQWUsU0FBUyxhQUFhLDhCQUE4QixnQkFBZ0IsMEJBQTBCLG9CQUFvQixLQUFLLGNBQWMsdUJBQXVCLGdCQUFnQixxQ0FBcUMsMEJBQTBCLFlBQVksUUFBUSxHQUFHLCtCQUErQix1QkFBdUIsU0FBUyxTQUFTLGNBQWMsdUJBQXVCLElBQUksdURBQXVELEVBQUUsa0JBQWtCLDZCQUE2Qiw4RUFBOEUsTUFBTSxxQkFBcUIsVUFBVSxxREFBcUQsT0FBTywrQkFBK0IsMEJBQTBCLDBCQUEwQiwwTEFBMEwsb0JBQW9CLGdQQUFnUCw0RUFBNEUsMEJBQTBCLFFBQVEsb0JBQW9CLHdDQUF3Qyw0RUFBNEUsa0NBQWtDLG1DQUFtQyxNQUFNLHFFQUFxRSxlQUFlLCtHQUErRyxZQUFZLDZFQUE2RSxjQUFjLHVCQUF1QixjQUFjLDZDQUE2QyxjQUFjLGdJQUFnSSxVQUFVLFVBQVUsb0JBQW9CLE1BQU0sVUFBVSxvQkFBb0IsTUFBTSxVQUFVLG1CQUFtQixNQUFNLFVBQVUsbUJBQW1CLE1BQU0sV0FBVyxhQUFhLGtCQUFrQixZQUFZLCtCQUErQixVQUFVLGlDQUFpQyxNQUFNLGtDQUFrQyxTQUFTLGNBQWMsdUJBQXVCLEVBQUUsOEJBQThCLElBQUksZ0JBQWdCLCtCQUErQixnQkFBZ0IsSUFBSSxFQUFFLGdCQUFnQixpQkFBaUIsRUFBRSw2YkFBNmIsc0RBQXNELHNCQUFzQixzQkFBc0IsZ0hBQWdILDBCQUEwQixhQUFhLFdBQVcsb0NBQW9DLDZEQUE2RCxhQUFhLEdBQUcsU0FBUyxPQUFPLHFEQUFxRCxhQUFhLDhDQUE4QyxJQUFJLHNCQUFzQiwyQkFBMkIsdURBQXVELEdBQUcsY0FBYyxpQkFBaUIsRUFBRSxtRkFBbUYsdUJBQXVCLGtCQUFrQixXQUFXLCtEQUErRCxzQkFBc0IsV0FBVyxxQkFBcUIsY0FBYyxXQUFXLGNBQWMsK0JBQStCLDBDQUEwQyw4QkFBOEIsaUNBQWlDLHlFQUF5RSxzQkFBc0IsV0FBVywrQkFBK0Isc0NBQXNDLG1CQUFtQixJQUFJLE1BQU0sK0RBQStELGdCQUFnQixtQ0FBbUMsTUFBTSx3QkFBd0IsMkNBQTJDLGdCQUFnQixNQUFNLElBQUksa0NBQWtDLFlBQVksS0FBSyxnREFBZ0QsaUJBQWlCLDJDQUEyQyx3Q0FBd0MsY0FBYyx5QkFBeUIsU0FBUyxvQ0FBb0MsaUJBQWlCLGNBQWMsY0FBYyx3QkFBd0IsT0FBTywwQ0FBMEMsV0FBVyxTQUFTLDZEQUE2RCxvRkFBb0YsK0NBQStDLFNBQVMsR0FBRyxZQUFZLDRCQUE0QixxQkFBcUIsOERBQThELFlBQVksNEJBQTRCLG9DQUFvQyxNQUFNLHVCQUF1QixzQkFBc0IsZ0NBQWdDLHFCQUFxQixHQUFHLFlBQVksc0NBQXNDLG1DQUFtQyxnQkFBZ0IsR0FBRyxNQUFNLHFCQUFxQixXQUFXLG9CQUFvQixhQUFhLHVCQUF1QixXQUFXLFFBQVEseUNBQXlDLHdDQUF3QyxNQUFNLE9BQU8sWUFBWSxRQUFRLDhEQUE4RCxvQkFBb0Isa0xBQWtMLGlDQUFpQyx3Q0FBd0MseURBQXlELDBCQUEwQiwyQ0FBMkMsa0RBQWtELFVBQVUsUUFBUSw0REFBNEQsdUJBQXVCLHNCQUFzQiw2RkFBNkYsRUFBRSxTQUFTLEtBQUssbURBQW1ELGVBQWUsMk5BQTJOLFFBQVEsR0FBRyxTQUFTLFlBQVkscUVBQXFFLE1BQU0sNENBQTRDLG9OQUFvTixrSEFBa0gsdUJBQXVCLFdBQVcsNkJBQTZCLDZDQUE2QyxPQUFPLDZCQUE2QixFQUFFLFFBQVEsR0FBRyxTQUFTLHFDQUFxQyxTQUFTLHdKQUF3SixTQUFTLHFEQUFxRCxRQUFRLG1FQUFtRSwrSEFBK0gsNkpBQTZKLHNFQUFzRSxvQ0FBb0MsSUFBSSw0RkFBNEYsa0VBQWtFLG1DQUFtQyxJQUFJLDZFQUE2RSx5Q0FBeUMsc0JBQXNCLG9DQUFvQyxFQUFFLFVBQVUsUUFBUSwyREFBMkQsY0FBYyw2Q0FBNkMscUJBQXFCLHNCQUFzQixpQkFBaUIsMEVBQTBFLFdBQVcsMERBQTBELElBQUksR0FBRyxvQkFBb0IsaUJBQWlCLFFBQVEsd0RBQXdELFFBQVEsb0JBQW9CLGVBQWUsNklBQTZJLDZDQUE2Qyx5Q0FBeUMsa0ZBQWtGLGlCQUFpQixJQUFJLEVBQUUsMEVBQTBFLHFCQUFxQixJQUFJLElBQUksNkJBQTZCLFFBQVEsZ0ZBQWdGLDZGQUE2Riw0QkFBNEIsK0VBQStFLElBQUksWUFBWSxtQkFBbUIsOENBQThDLFFBQVEsRUFBRSxTQUFTLGdCQUFnQixJQUFJLCtCQUErQixtSUFBbUksS0FBSyxxREFBcUQsZUFBZSx1REFBdUQsYUFBYSxHQUFHLFFBQVEseUJBQXlCLGVBQWUsMkNBQTJDLGFBQWEsR0FBRyxpQkFBaUIsaUJBQWlCLEVBQUUsbUtBQW1LLGdCQUFnQiw2QkFBNkIsdUJBQXVCLEdBQUcsb0JBQW9CLDhCQUE4QixpQkFBaUIsZ0RBQWdELFVBQVUsSUFBSSxFQUFFLDBDQUEwQyxpQkFBaUIsR0FBRyxRQUFRLG1EQUFtRCxtQ0FBbUMsOEJBQThCLGdSQUFnUixxQkFBcUIsWUFBWSxzQkFBc0IsMkNBQTJDLCtCQUErQix5RkFBeUYsS0FBSyxxRUFBcUUsV0FBVyxLQUFLLCtFQUErRSw4REFBOEQsa0JBQWtCLHFCQUFxQixpQkFBaUIsc0VBQXNFLFNBQVMsSUFBSSxTQUFTLE1BQU0sV0FBVywyQkFBMkIsMEJBQTBCLGVBQWUsNENBQTRDLFNBQVMsR0FBRyxHQUFHLHdCQUF3QixTQUFTLElBQUksS0FBSyx3QkFBd0IseUVBQXlFLG1DQUFtQyxXQUFXLG1CQUFtQixtQkFBbUIsUUFBUSw4REFBOEQsME5BQTBOLGtEQUFrRCxnTEFBZ0wsVUFBVSxzQkFBc0IsMkJBQTJCLHFCQUFxQixnQkFBZ0IscUJBQXFCLHlFQUF5RSxTQUFTLE1BQU0sTUFBTSwwS0FBMEssaUJBQWlCLHFGQUFxRiw4QkFBOEIsOFRBQThULGtCQUFrQixNQUFNLG9RQUFvUSxnQkFBZ0IsZUFBZSxrQ0FBa0MsbUJBQW1CLHNCQUFzQiw4QkFBOEIsUUFBUSxvREFBb0QsdUpBQXVKLFNBQVMsb0JBQW9CLG1FQUFtRSxVQUFVLHNCQUFzQixnQkFBZ0Isc1FBQXNRLHlCQUF5Qiw4QkFBOEIsb0JBQW9CLHVFQUF1RSxvSEFBb0gsa0VBQWtFLG1CQUFtQix1QkFBdUIsUUFBUSxHQUFHLHVHQUF1RyxlQUFlLGtDQUFrQyxlQUFlLEdBQUcsUUFBUSx3RkFBd0YscUdBQXFHLDJCQUEyQixTQUFTLGVBQWUsd0NBQXdDLG9CQUFvQix3RkFBd0YscUNBQXFDLHNCQUFzQix5REFBeUQsR0FBRyxPQUFPLCtCQUErQix3Q0FBd0Msb0JBQW9CLEVBQUUsc1JBQXNSLFNBQVMsRUFBRTtBQUNuaW5CIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU25lYXQvLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvZGlzdC91bWQvcG9wcGVyLm1pbi5qcz8wMzRhIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBvcHBlcmpzL2NvcmUgdjIuMTEuNiAtIE1JVCBMaWNlbnNlXG4gKi9cblxuIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/dChleHBvcnRzKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtcImV4cG9ydHNcIl0sdCk6dCgoZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLlBvcHBlcj17fSl9KHRoaXMsKGZ1bmN0aW9uKGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHQoZSl7aWYobnVsbD09ZSlyZXR1cm4gd2luZG93O2lmKFwiW29iamVjdCBXaW5kb3ddXCIhPT1lLnRvU3RyaW5nKCkpe3ZhciB0PWUub3duZXJEb2N1bWVudDtyZXR1cm4gdCYmdC5kZWZhdWx0Vmlld3x8d2luZG93fXJldHVybiBlfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0KGUpLkVsZW1lbnR8fGUgaW5zdGFuY2VvZiBFbGVtZW50fWZ1bmN0aW9uIHIoZSl7cmV0dXJuIGUgaW5zdGFuY2VvZiB0KGUpLkhUTUxFbGVtZW50fHxlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9ZnVuY3Rpb24gbyhlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgU2hhZG93Um9vdCYmKGUgaW5zdGFuY2VvZiB0KGUpLlNoYWRvd1Jvb3R8fGUgaW5zdGFuY2VvZiBTaGFkb3dSb290KX12YXIgaT1NYXRoLm1heCxhPU1hdGgubWluLHM9TWF0aC5yb3VuZDtmdW5jdGlvbiBmKCl7dmFyIGU9bmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7cmV0dXJuIG51bGwhPWUmJmUuYnJhbmRzP2UuYnJhbmRzLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUuYnJhbmQrXCIvXCIrZS52ZXJzaW9ufSkpLmpvaW4oXCIgXCIpOm5hdmlnYXRvci51c2VyQWdlbnR9ZnVuY3Rpb24gYygpe3JldHVybiEvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvaS50ZXN0KGYoKSl9ZnVuY3Rpb24gcChlLG8saSl7dm9pZCAwPT09byYmKG89ITEpLHZvaWQgMD09PWkmJihpPSExKTt2YXIgYT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9MSxwPTE7byYmcihlKSYmKGY9ZS5vZmZzZXRXaWR0aD4wJiZzKGEud2lkdGgpL2Uub2Zmc2V0V2lkdGh8fDEscD1lLm9mZnNldEhlaWdodD4wJiZzKGEuaGVpZ2h0KS9lLm9mZnNldEhlaWdodHx8MSk7dmFyIHU9KG4oZSk/dChlKTp3aW5kb3cpLnZpc3VhbFZpZXdwb3J0LGw9IWMoKSYmaSxkPShhLmxlZnQrKGwmJnU/dS5vZmZzZXRMZWZ0OjApKS9mLGg9KGEudG9wKyhsJiZ1P3Uub2Zmc2V0VG9wOjApKS9wLG09YS53aWR0aC9mLHY9YS5oZWlnaHQvcDtyZXR1cm57d2lkdGg6bSxoZWlnaHQ6dix0b3A6aCxyaWdodDpkK20sYm90dG9tOmgrdixsZWZ0OmQseDpkLHk6aH19ZnVuY3Rpb24gdShlKXt2YXIgbj10KGUpO3JldHVybntzY3JvbGxMZWZ0Om4ucGFnZVhPZmZzZXQsc2Nyb2xsVG9wOm4ucGFnZVlPZmZzZXR9fWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGU/KGUubm9kZU5hbWV8fFwiXCIpLnRvTG93ZXJDYXNlKCk6bnVsbH1mdW5jdGlvbiBkKGUpe3JldHVybigobihlKT9lLm93bmVyRG9jdW1lbnQ6ZS5kb2N1bWVudCl8fHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50fWZ1bmN0aW9uIGgoZSl7cmV0dXJuIHAoZChlKSkubGVmdCt1KGUpLnNjcm9sbExlZnR9ZnVuY3Rpb24gbShlKXtyZXR1cm4gdChlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIHYoZSl7dmFyIHQ9bShlKSxuPXQub3ZlcmZsb3cscj10Lm92ZXJmbG93WCxvPXQub3ZlcmZsb3dZO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChuK28rcil9ZnVuY3Rpb24geShlLG4sbyl7dm9pZCAwPT09byYmKG89ITEpO3ZhciBpLGEsZj1yKG4pLGM9cihuKSYmZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXModC53aWR0aCkvZS5vZmZzZXRXaWR0aHx8MSxyPXModC5oZWlnaHQpL2Uub2Zmc2V0SGVpZ2h0fHwxO3JldHVybiAxIT09bnx8MSE9PXJ9KG4pLG09ZChuKSx5PXAoZSxjLG8pLGc9e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH0sYj17eDowLHk6MH07cmV0dXJuKGZ8fCFmJiYhbykmJigoXCJib2R5XCIhPT1sKG4pfHx2KG0pKSYmKGc9KGk9bikhPT10KGkpJiZyKGkpP3tzY3JvbGxMZWZ0OihhPWkpLnNjcm9sbExlZnQsc2Nyb2xsVG9wOmEuc2Nyb2xsVG9wfTp1KGkpKSxyKG4pPygoYj1wKG4sITApKS54Kz1uLmNsaWVudExlZnQsYi55Kz1uLmNsaWVudFRvcCk6bSYmKGIueD1oKG0pKSkse3g6eS5sZWZ0K2cuc2Nyb2xsTGVmdC1iLngseTp5LnRvcCtnLnNjcm9sbFRvcC1iLnksd2lkdGg6eS53aWR0aCxoZWlnaHQ6eS5oZWlnaHR9fWZ1bmN0aW9uIGcoZSl7dmFyIHQ9cChlKSxuPWUub2Zmc2V0V2lkdGgscj1lLm9mZnNldEhlaWdodDtyZXR1cm4gTWF0aC5hYnModC53aWR0aC1uKTw9MSYmKG49dC53aWR0aCksTWF0aC5hYnModC5oZWlnaHQtcik8PTEmJihyPXQuaGVpZ2h0KSx7eDplLm9mZnNldExlZnQseTplLm9mZnNldFRvcCx3aWR0aDpuLGhlaWdodDpyfX1mdW5jdGlvbiBiKGUpe3JldHVyblwiaHRtbFwiPT09bChlKT9lOmUuYXNzaWduZWRTbG90fHxlLnBhcmVudE5vZGV8fChvKGUpP2UuaG9zdDpudWxsKXx8ZChlKX1mdW5jdGlvbiB3KGUpe3JldHVybltcImh0bWxcIixcImJvZHlcIixcIiNkb2N1bWVudFwiXS5pbmRleE9mKGwoZSkpPj0wP2Uub3duZXJEb2N1bWVudC5ib2R5OnIoZSkmJnYoZSk/ZTp3KGIoZSkpfWZ1bmN0aW9uIHgoZSxuKXt2YXIgcjt2b2lkIDA9PT1uJiYobj1bXSk7dmFyIG89dyhlKSxpPW89PT0obnVsbD09KHI9ZS5vd25lckRvY3VtZW50KT92b2lkIDA6ci5ib2R5KSxhPXQobykscz1pP1thXS5jb25jYXQoYS52aXN1YWxWaWV3cG9ydHx8W10sdihvKT9vOltdKTpvLGY9bi5jb25jYXQocyk7cmV0dXJuIGk/ZjpmLmNvbmNhdCh4KGIocykpKX1mdW5jdGlvbiBPKGUpe3JldHVybltcInRhYmxlXCIsXCJ0ZFwiLFwidGhcIl0uaW5kZXhPZihsKGUpKT49MH1mdW5jdGlvbiBqKGUpe3JldHVybiByKGUpJiZcImZpeGVkXCIhPT1tKGUpLnBvc2l0aW9uP2Uub2Zmc2V0UGFyZW50Om51bGx9ZnVuY3Rpb24gRShlKXtmb3IodmFyIG49dChlKSxpPWooZSk7aSYmTyhpKSYmXCJzdGF0aWNcIj09PW0oaSkucG9zaXRpb247KWk9aihpKTtyZXR1cm4gaSYmKFwiaHRtbFwiPT09bChpKXx8XCJib2R5XCI9PT1sKGkpJiZcInN0YXRpY1wiPT09bShpKS5wb3NpdGlvbik/bjppfHxmdW5jdGlvbihlKXt2YXIgdD0vZmlyZWZveC9pLnRlc3QoZigpKTtpZigvVHJpZGVudC9pLnRlc3QoZigpKSYmcihlKSYmXCJmaXhlZFwiPT09bShlKS5wb3NpdGlvbilyZXR1cm4gbnVsbDt2YXIgbj1iKGUpO2ZvcihvKG4pJiYobj1uLmhvc3QpO3IobikmJltcImh0bWxcIixcImJvZHlcIl0uaW5kZXhPZihsKG4pKTwwOyl7dmFyIGk9bShuKTtpZihcIm5vbmVcIiE9PWkudHJhbnNmb3JtfHxcIm5vbmVcIiE9PWkucGVyc3BlY3RpdmV8fFwicGFpbnRcIj09PWkuY29udGFpbnx8LTEhPT1bXCJ0cmFuc2Zvcm1cIixcInBlcnNwZWN0aXZlXCJdLmluZGV4T2YoaS53aWxsQ2hhbmdlKXx8dCYmXCJmaWx0ZXJcIj09PWkud2lsbENoYW5nZXx8dCYmaS5maWx0ZXImJlwibm9uZVwiIT09aS5maWx0ZXIpcmV0dXJuIG47bj1uLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9KGUpfHxufXZhciBEPVwidG9wXCIsQT1cImJvdHRvbVwiLEw9XCJyaWdodFwiLFA9XCJsZWZ0XCIsTT1cImF1dG9cIixrPVtELEEsTCxQXSxXPVwic3RhcnRcIixCPVwiZW5kXCIsSD1cInZpZXdwb3J0XCIsVD1cInBvcHBlclwiLFI9ay5yZWR1Y2UoKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29uY2F0KFt0K1wiLVwiK1csdCtcIi1cIitCXSl9KSxbXSksUz1bXS5jb25jYXQoayxbTV0pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb25jYXQoW3QsdCtcIi1cIitXLHQrXCItXCIrQl0pfSksW10pLFY9W1wiYmVmb3JlUmVhZFwiLFwicmVhZFwiLFwiYWZ0ZXJSZWFkXCIsXCJiZWZvcmVNYWluXCIsXCJtYWluXCIsXCJhZnRlck1haW5cIixcImJlZm9yZVdyaXRlXCIsXCJ3cml0ZVwiLFwiYWZ0ZXJXcml0ZVwiXTtmdW5jdGlvbiBxKGUpe3ZhciB0PW5ldyBNYXAsbj1uZXcgU2V0LHI9W107ZnVuY3Rpb24gbyhlKXtuLmFkZChlLm5hbWUpLFtdLmNvbmNhdChlLnJlcXVpcmVzfHxbXSxlLnJlcXVpcmVzSWZFeGlzdHN8fFtdKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpZighbi5oYXMoZSkpe3ZhciByPXQuZ2V0KGUpO3ImJm8ocil9fSkpLHIucHVzaChlKX1yZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LnNldChlLm5hbWUsZSl9KSksZS5mb3JFYWNoKChmdW5jdGlvbihlKXtuLmhhcyhlLm5hbWUpfHxvKGUpfSkpLHJ9ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5zcGxpdChcIi1cIilbMF19ZnVuY3Rpb24gTihlLHQpe3ZhciBuPXQuZ2V0Um9vdE5vZGUmJnQuZ2V0Um9vdE5vZGUoKTtpZihlLmNvbnRhaW5zKHQpKXJldHVybiEwO2lmKG4mJm8obikpe3ZhciByPXQ7ZG97aWYociYmZS5pc1NhbWVOb2RlKHIpKXJldHVybiEwO3I9ci5wYXJlbnROb2RlfHxyLmhvc3R9d2hpbGUocil9cmV0dXJuITF9ZnVuY3Rpb24gSShlKXtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxlLHtsZWZ0OmUueCx0b3A6ZS55LHJpZ2h0OmUueCtlLndpZHRoLGJvdHRvbTplLnkrZS5oZWlnaHR9KX1mdW5jdGlvbiBfKGUscixvKXtyZXR1cm4gcj09PUg/SShmdW5jdGlvbihlLG4pe3ZhciByPXQoZSksbz1kKGUpLGk9ci52aXN1YWxWaWV3cG9ydCxhPW8uY2xpZW50V2lkdGgscz1vLmNsaWVudEhlaWdodCxmPTAscD0wO2lmKGkpe2E9aS53aWR0aCxzPWkuaGVpZ2h0O3ZhciB1PWMoKTsodXx8IXUmJlwiZml4ZWRcIj09PW4pJiYoZj1pLm9mZnNldExlZnQscD1pLm9mZnNldFRvcCl9cmV0dXJue3dpZHRoOmEsaGVpZ2h0OnMseDpmK2goZSkseTpwfX0oZSxvKSk6bihyKT9mdW5jdGlvbihlLHQpe3ZhciBuPXAoZSwhMSxcImZpeGVkXCI9PT10KTtyZXR1cm4gbi50b3A9bi50b3ArZS5jbGllbnRUb3Asbi5sZWZ0PW4ubGVmdCtlLmNsaWVudExlZnQsbi5ib3R0b209bi50b3ArZS5jbGllbnRIZWlnaHQsbi5yaWdodD1uLmxlZnQrZS5jbGllbnRXaWR0aCxuLndpZHRoPWUuY2xpZW50V2lkdGgsbi5oZWlnaHQ9ZS5jbGllbnRIZWlnaHQsbi54PW4ubGVmdCxuLnk9bi50b3Asbn0ocixvKTpJKGZ1bmN0aW9uKGUpe3ZhciB0LG49ZChlKSxyPXUoZSksbz1udWxsPT0odD1lLm93bmVyRG9jdW1lbnQpP3ZvaWQgMDp0LmJvZHksYT1pKG4uc2Nyb2xsV2lkdGgsbi5jbGllbnRXaWR0aCxvP28uc2Nyb2xsV2lkdGg6MCxvP28uY2xpZW50V2lkdGg6MCkscz1pKG4uc2Nyb2xsSGVpZ2h0LG4uY2xpZW50SGVpZ2h0LG8/by5zY3JvbGxIZWlnaHQ6MCxvP28uY2xpZW50SGVpZ2h0OjApLGY9LXIuc2Nyb2xsTGVmdCtoKGUpLGM9LXIuc2Nyb2xsVG9wO3JldHVyblwicnRsXCI9PT1tKG98fG4pLmRpcmVjdGlvbiYmKGYrPWkobi5jbGllbnRXaWR0aCxvP28uY2xpZW50V2lkdGg6MCktYSkse3dpZHRoOmEsaGVpZ2h0OnMseDpmLHk6Y319KGQoZSkpKX1mdW5jdGlvbiBGKGUsdCxvLHMpe3ZhciBmPVwiY2xpcHBpbmdQYXJlbnRzXCI9PT10P2Z1bmN0aW9uKGUpe3ZhciB0PXgoYihlKSksbz1bXCJhYnNvbHV0ZVwiLFwiZml4ZWRcIl0uaW5kZXhPZihtKGUpLnBvc2l0aW9uKT49MCYmcihlKT9FKGUpOmU7cmV0dXJuIG4obyk/dC5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUpJiZOKGUsbykmJlwiYm9keVwiIT09bChlKX0pKTpbXX0oZSk6W10uY29uY2F0KHQpLGM9W10uY29uY2F0KGYsW29dKSxwPWNbMF0sdT1jLnJlZHVjZSgoZnVuY3Rpb24odCxuKXt2YXIgcj1fKGUsbixzKTtyZXR1cm4gdC50b3A9aShyLnRvcCx0LnRvcCksdC5yaWdodD1hKHIucmlnaHQsdC5yaWdodCksdC5ib3R0b209YShyLmJvdHRvbSx0LmJvdHRvbSksdC5sZWZ0PWkoci5sZWZ0LHQubGVmdCksdH0pLF8oZSxwLHMpKTtyZXR1cm4gdS53aWR0aD11LnJpZ2h0LXUubGVmdCx1LmhlaWdodD11LmJvdHRvbS11LnRvcCx1Lng9dS5sZWZ0LHUueT11LnRvcCx1fWZ1bmN0aW9uIFUoZSl7cmV0dXJuIGUuc3BsaXQoXCItXCIpWzFdfWZ1bmN0aW9uIHooZSl7cmV0dXJuW1widG9wXCIsXCJib3R0b21cIl0uaW5kZXhPZihlKT49MD9cInhcIjpcInlcIn1mdW5jdGlvbiBYKGUpe3ZhciB0LG49ZS5yZWZlcmVuY2Uscj1lLmVsZW1lbnQsbz1lLnBsYWNlbWVudCxpPW8/QyhvKTpudWxsLGE9bz9VKG8pOm51bGwscz1uLngrbi53aWR0aC8yLXIud2lkdGgvMixmPW4ueStuLmhlaWdodC8yLXIuaGVpZ2h0LzI7c3dpdGNoKGkpe2Nhc2UgRDp0PXt4OnMseTpuLnktci5oZWlnaHR9O2JyZWFrO2Nhc2UgQTp0PXt4OnMseTpuLnkrbi5oZWlnaHR9O2JyZWFrO2Nhc2UgTDp0PXt4Om4ueCtuLndpZHRoLHk6Zn07YnJlYWs7Y2FzZSBQOnQ9e3g6bi54LXIud2lkdGgseTpmfTticmVhaztkZWZhdWx0OnQ9e3g6bi54LHk6bi55fX12YXIgYz1pP3ooaSk6bnVsbDtpZihudWxsIT1jKXt2YXIgcD1cInlcIj09PWM/XCJoZWlnaHRcIjpcIndpZHRoXCI7c3dpdGNoKGEpe2Nhc2UgVzp0W2NdPXRbY10tKG5bcF0vMi1yW3BdLzIpO2JyZWFrO2Nhc2UgQjp0W2NdPXRbY10rKG5bcF0vMi1yW3BdLzIpfX1yZXR1cm4gdH1mdW5jdGlvbiBZKGUpe3JldHVybiBPYmplY3QuYXNzaWduKHt9LHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sZSl9ZnVuY3Rpb24gRyhlLHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdFtuXT1lLHR9KSx7fSl9ZnVuY3Rpb24gSihlLHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgcj10LG89ci5wbGFjZW1lbnQsaT12b2lkIDA9PT1vP2UucGxhY2VtZW50Om8sYT1yLnN0cmF0ZWd5LHM9dm9pZCAwPT09YT9lLnN0cmF0ZWd5OmEsZj1yLmJvdW5kYXJ5LGM9dm9pZCAwPT09Zj9cImNsaXBwaW5nUGFyZW50c1wiOmYsdT1yLnJvb3RCb3VuZGFyeSxsPXZvaWQgMD09PXU/SDp1LGg9ci5lbGVtZW50Q29udGV4dCxtPXZvaWQgMD09PWg/VDpoLHY9ci5hbHRCb3VuZGFyeSx5PXZvaWQgMCE9PXYmJnYsZz1yLnBhZGRpbmcsYj12b2lkIDA9PT1nPzA6Zyx3PVkoXCJudW1iZXJcIiE9dHlwZW9mIGI/YjpHKGIsaykpLHg9bT09PVQ/XCJyZWZlcmVuY2VcIjpULE89ZS5yZWN0cy5wb3BwZXIsaj1lLmVsZW1lbnRzW3k/eDptXSxFPUYobihqKT9qOmouY29udGV4dEVsZW1lbnR8fGQoZS5lbGVtZW50cy5wb3BwZXIpLGMsbCxzKSxQPXAoZS5lbGVtZW50cy5yZWZlcmVuY2UpLE09WCh7cmVmZXJlbmNlOlAsZWxlbWVudDpPLHN0cmF0ZWd5OlwiYWJzb2x1dGVcIixwbGFjZW1lbnQ6aX0pLFc9SShPYmplY3QuYXNzaWduKHt9LE8sTSkpLEI9bT09PVQ/VzpQLFI9e3RvcDpFLnRvcC1CLnRvcCt3LnRvcCxib3R0b206Qi5ib3R0b20tRS5ib3R0b20rdy5ib3R0b20sbGVmdDpFLmxlZnQtQi5sZWZ0K3cubGVmdCxyaWdodDpCLnJpZ2h0LUUucmlnaHQrdy5yaWdodH0sUz1lLm1vZGlmaWVyc0RhdGEub2Zmc2V0O2lmKG09PT1UJiZTKXt2YXIgVj1TW2ldO09iamVjdC5rZXlzKFIpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciB0PVtMLEFdLmluZGV4T2YoZSk+PTA/MTotMSxuPVtELEFdLmluZGV4T2YoZSk+PTA/XCJ5XCI6XCJ4XCI7UltlXSs9VltuXSp0fSkpfXJldHVybiBSfXZhciBLPXtwbGFjZW1lbnQ6XCJib3R0b21cIixtb2RpZmllcnM6W10sc3RyYXRlZ3k6XCJhYnNvbHV0ZVwifTtmdW5jdGlvbiBRKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIXQuc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIShlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl9KSl9ZnVuY3Rpb24gWihlKXt2b2lkIDA9PT1lJiYoZT17fSk7dmFyIHQ9ZSxyPXQuZGVmYXVsdE1vZGlmaWVycyxvPXZvaWQgMD09PXI/W106cixpPXQuZGVmYXVsdE9wdGlvbnMsYT12b2lkIDA9PT1pP0s6aTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZvaWQgMD09PXImJihyPWEpO3ZhciBpLHMsZj17cGxhY2VtZW50OlwiYm90dG9tXCIsb3JkZXJlZE1vZGlmaWVyczpbXSxvcHRpb25zOk9iamVjdC5hc3NpZ24oe30sSyxhKSxtb2RpZmllcnNEYXRhOnt9LGVsZW1lbnRzOntyZWZlcmVuY2U6ZSxwb3BwZXI6dH0sYXR0cmlidXRlczp7fSxzdHlsZXM6e319LGM9W10scD0hMSx1PXtzdGF0ZTpmLHNldE9wdGlvbnM6ZnVuY3Rpb24ocil7dmFyIGk9XCJmdW5jdGlvblwiPT10eXBlb2Ygcj9yKGYub3B0aW9ucyk6cjtsKCksZi5vcHRpb25zPU9iamVjdC5hc3NpZ24oe30sYSxmLm9wdGlvbnMsaSksZi5zY3JvbGxQYXJlbnRzPXtyZWZlcmVuY2U6bihlKT94KGUpOmUuY29udGV4dEVsZW1lbnQ/eChlLmNvbnRleHRFbGVtZW50KTpbXSxwb3BwZXI6eCh0KX07dmFyIHMscCxkPWZ1bmN0aW9uKGUpe3ZhciB0PXEoZSk7cmV0dXJuIFYucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbmNhdCh0LmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGUucGhhc2U9PT1ufSkpKX0pLFtdKX0oKHM9W10uY29uY2F0KG8sZi5vcHRpb25zLm1vZGlmaWVycykscD1zLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXt2YXIgbj1lW3QubmFtZV07cmV0dXJuIGVbdC5uYW1lXT1uP09iamVjdC5hc3NpZ24oe30sbix0LHtvcHRpb25zOk9iamVjdC5hc3NpZ24oe30sbi5vcHRpb25zLHQub3B0aW9ucyksZGF0YTpPYmplY3QuYXNzaWduKHt9LG4uZGF0YSx0LmRhdGEpfSk6dCxlfSkse30pLE9iamVjdC5rZXlzKHApLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHBbZV19KSkpKTtyZXR1cm4gZi5vcmRlcmVkTW9kaWZpZXJzPWQuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS5lbmFibGVkfSkpLGYub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgdD1lLm5hbWUsbj1lLm9wdGlvbnMscj12b2lkIDA9PT1uP3t9Om4sbz1lLmVmZmVjdDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvKXt2YXIgaT1vKHtzdGF0ZTpmLG5hbWU6dCxpbnN0YW5jZTp1LG9wdGlvbnM6cn0pLGE9ZnVuY3Rpb24oKXt9O2MucHVzaChpfHxhKX19KSksdS51cGRhdGUoKX0sZm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXtpZighcCl7dmFyIGU9Zi5lbGVtZW50cyx0PWUucmVmZXJlbmNlLG49ZS5wb3BwZXI7aWYoUSh0LG4pKXtmLnJlY3RzPXtyZWZlcmVuY2U6eSh0LEUobiksXCJmaXhlZFwiPT09Zi5vcHRpb25zLnN0cmF0ZWd5KSxwb3BwZXI6ZyhuKX0sZi5yZXNldD0hMSxmLnBsYWNlbWVudD1mLm9wdGlvbnMucGxhY2VtZW50LGYub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKChmdW5jdGlvbihlKXtyZXR1cm4gZi5tb2RpZmllcnNEYXRhW2UubmFtZV09T2JqZWN0LmFzc2lnbih7fSxlLmRhdGEpfSkpO2Zvcih2YXIgcj0wO3I8Zi5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDtyKyspaWYoITAhPT1mLnJlc2V0KXt2YXIgbz1mLm9yZGVyZWRNb2RpZmllcnNbcl0saT1vLmZuLGE9by5vcHRpb25zLHM9dm9pZCAwPT09YT97fTphLGM9by5uYW1lO1wiZnVuY3Rpb25cIj09dHlwZW9mIGkmJihmPWkoe3N0YXRlOmYsb3B0aW9uczpzLG5hbWU6YyxpbnN0YW5jZTp1fSl8fGYpfWVsc2UgZi5yZXNldD0hMSxyPS0xfX19LHVwZGF0ZTooaT1mdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSl7dS5mb3JjZVVwZGF0ZSgpLGUoZil9KSl9LGZ1bmN0aW9uKCl7cmV0dXJuIHN8fChzPW5ldyBQcm9taXNlKChmdW5jdGlvbihlKXtQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpe3M9dm9pZCAwLGUoaSgpKX0pKX0pKSksc30pLGRlc3Ryb3k6ZnVuY3Rpb24oKXtsKCkscD0hMH19O2lmKCFRKGUsdCkpcmV0dXJuIHU7ZnVuY3Rpb24gbCgpe2MuZm9yRWFjaCgoZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pKSxjPVtdfXJldHVybiB1LnNldE9wdGlvbnMocikudGhlbigoZnVuY3Rpb24oZSl7IXAmJnIub25GaXJzdFVwZGF0ZSYmci5vbkZpcnN0VXBkYXRlKGUpfSkpLHV9fXZhciAkPXtwYXNzaXZlOiEwfTt2YXIgZWU9e25hbWU6XCJldmVudExpc3RlbmVyc1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJ3cml0ZVwiLGZuOmZ1bmN0aW9uKCl7fSxlZmZlY3Q6ZnVuY3Rpb24oZSl7dmFyIG49ZS5zdGF0ZSxyPWUuaW5zdGFuY2Usbz1lLm9wdGlvbnMsaT1vLnNjcm9sbCxhPXZvaWQgMD09PWl8fGkscz1vLnJlc2l6ZSxmPXZvaWQgMD09PXN8fHMsYz10KG4uZWxlbWVudHMucG9wcGVyKSxwPVtdLmNvbmNhdChuLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLG4uc2Nyb2xsUGFyZW50cy5wb3BwZXIpO3JldHVybiBhJiZwLmZvckVhY2goKGZ1bmN0aW9uKGUpe2UuYWRkRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLHIudXBkYXRlLCQpfSkpLGYmJmMuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHIudXBkYXRlLCQpLGZ1bmN0aW9uKCl7YSYmcC5mb3JFYWNoKChmdW5jdGlvbihlKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixyLnVwZGF0ZSwkKX0pKSxmJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixyLnVwZGF0ZSwkKX19LGRhdGE6e319O3ZhciB0ZT17bmFtZTpcInBvcHBlck9mZnNldHNcIixlbmFibGVkOiEwLHBoYXNlOlwicmVhZFwiLGZuOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RhdGUsbj1lLm5hbWU7dC5tb2RpZmllcnNEYXRhW25dPVgoe3JlZmVyZW5jZTp0LnJlY3RzLnJlZmVyZW5jZSxlbGVtZW50OnQucmVjdHMucG9wcGVyLHN0cmF0ZWd5OlwiYWJzb2x1dGVcIixwbGFjZW1lbnQ6dC5wbGFjZW1lbnR9KX0sZGF0YTp7fX0sbmU9e3RvcDpcImF1dG9cIixyaWdodDpcImF1dG9cIixib3R0b206XCJhdXRvXCIsbGVmdDpcImF1dG9cIn07ZnVuY3Rpb24gcmUoZSl7dmFyIG4scj1lLnBvcHBlcixvPWUucG9wcGVyUmVjdCxpPWUucGxhY2VtZW50LGE9ZS52YXJpYXRpb24sZj1lLm9mZnNldHMsYz1lLnBvc2l0aW9uLHA9ZS5ncHVBY2NlbGVyYXRpb24sdT1lLmFkYXB0aXZlLGw9ZS5yb3VuZE9mZnNldHMsaD1lLmlzRml4ZWQsdj1mLngseT12b2lkIDA9PT12PzA6dixnPWYueSxiPXZvaWQgMD09PWc/MDpnLHc9XCJmdW5jdGlvblwiPT10eXBlb2YgbD9sKHt4OnkseTpifSk6e3g6eSx5OmJ9O3k9dy54LGI9dy55O3ZhciB4PWYuaGFzT3duUHJvcGVydHkoXCJ4XCIpLE89Zi5oYXNPd25Qcm9wZXJ0eShcInlcIiksaj1QLE09RCxrPXdpbmRvdztpZih1KXt2YXIgVz1FKHIpLEg9XCJjbGllbnRIZWlnaHRcIixUPVwiY2xpZW50V2lkdGhcIjtpZihXPT09dChyKSYmXCJzdGF0aWNcIiE9PW0oVz1kKHIpKS5wb3NpdGlvbiYmXCJhYnNvbHV0ZVwiPT09YyYmKEg9XCJzY3JvbGxIZWlnaHRcIixUPVwic2Nyb2xsV2lkdGhcIiksVz1XLGk9PT1EfHwoaT09PVB8fGk9PT1MKSYmYT09PUIpTT1BLGItPShoJiZXPT09ayYmay52aXN1YWxWaWV3cG9ydD9rLnZpc3VhbFZpZXdwb3J0LmhlaWdodDpXW0hdKS1vLmhlaWdodCxiKj1wPzE6LTE7aWYoaT09PVB8fChpPT09RHx8aT09PUEpJiZhPT09QilqPUwseS09KGgmJlc9PT1rJiZrLnZpc3VhbFZpZXdwb3J0P2sudmlzdWFsVmlld3BvcnQud2lkdGg6V1tUXSktby53aWR0aCx5Kj1wPzE6LTF9dmFyIFIsUz1PYmplY3QuYXNzaWduKHtwb3NpdGlvbjpjfSx1JiZuZSksVj0hMD09PWw/ZnVuY3Rpb24oZSl7dmFyIHQ9ZS54LG49ZS55LHI9d2luZG93LmRldmljZVBpeGVsUmF0aW98fDE7cmV0dXJue3g6cyh0KnIpL3J8fDAseTpzKG4qcikvcnx8MH19KHt4OnkseTpifSk6e3g6eSx5OmJ9O3JldHVybiB5PVYueCxiPVYueSxwP09iamVjdC5hc3NpZ24oe30sUywoKFI9e30pW01dPU8/XCIwXCI6XCJcIixSW2pdPXg/XCIwXCI6XCJcIixSLnRyYW5zZm9ybT0oay5kZXZpY2VQaXhlbFJhdGlvfHwxKTw9MT9cInRyYW5zbGF0ZShcIit5K1wicHgsIFwiK2IrXCJweClcIjpcInRyYW5zbGF0ZTNkKFwiK3krXCJweCwgXCIrYitcInB4LCAwKVwiLFIpKTpPYmplY3QuYXNzaWduKHt9LFMsKChuPXt9KVtNXT1PP2IrXCJweFwiOlwiXCIsbltqXT14P3krXCJweFwiOlwiXCIsbi50cmFuc2Zvcm09XCJcIixuKSl9dmFyIG9lPXtuYW1lOlwiY29tcHV0ZVN0eWxlc1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJiZWZvcmVXcml0ZVwiLGZuOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RhdGUsbj1lLm9wdGlvbnMscj1uLmdwdUFjY2VsZXJhdGlvbixvPXZvaWQgMD09PXJ8fHIsaT1uLmFkYXB0aXZlLGE9dm9pZCAwPT09aXx8aSxzPW4ucm91bmRPZmZzZXRzLGY9dm9pZCAwPT09c3x8cyxjPXtwbGFjZW1lbnQ6Qyh0LnBsYWNlbWVudCksdmFyaWF0aW9uOlUodC5wbGFjZW1lbnQpLHBvcHBlcjp0LmVsZW1lbnRzLnBvcHBlcixwb3BwZXJSZWN0OnQucmVjdHMucG9wcGVyLGdwdUFjY2VsZXJhdGlvbjpvLGlzRml4ZWQ6XCJmaXhlZFwiPT09dC5vcHRpb25zLnN0cmF0ZWd5fTtudWxsIT10Lm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyYmKHQuc3R5bGVzLnBvcHBlcj1PYmplY3QuYXNzaWduKHt9LHQuc3R5bGVzLnBvcHBlcixyZShPYmplY3QuYXNzaWduKHt9LGMse29mZnNldHM6dC5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMscG9zaXRpb246dC5vcHRpb25zLnN0cmF0ZWd5LGFkYXB0aXZlOmEscm91bmRPZmZzZXRzOmZ9KSkpKSxudWxsIT10Lm1vZGlmaWVyc0RhdGEuYXJyb3cmJih0LnN0eWxlcy5hcnJvdz1PYmplY3QuYXNzaWduKHt9LHQuc3R5bGVzLmFycm93LHJlKE9iamVjdC5hc3NpZ24oe30sYyx7b2Zmc2V0czp0Lm1vZGlmaWVyc0RhdGEuYXJyb3cscG9zaXRpb246XCJhYnNvbHV0ZVwiLGFkYXB0aXZlOiExLHJvdW5kT2Zmc2V0czpmfSkpKSksdC5hdHRyaWJ1dGVzLnBvcHBlcj1PYmplY3QuYXNzaWduKHt9LHQuYXR0cmlidXRlcy5wb3BwZXIse1wiZGF0YS1wb3BwZXItcGxhY2VtZW50XCI6dC5wbGFjZW1lbnR9KX0sZGF0YTp7fX07dmFyIGllPXtuYW1lOlwiYXBwbHlTdHlsZXNcIixlbmFibGVkOiEwLHBoYXNlOlwid3JpdGVcIixmbjpmdW5jdGlvbihlKXt2YXIgdD1lLnN0YXRlO09iamVjdC5rZXlzKHQuZWxlbWVudHMpLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZhciBuPXQuc3R5bGVzW2VdfHx7fSxvPXQuYXR0cmlidXRlc1tlXXx8e30saT10LmVsZW1lbnRzW2VdO3IoaSkmJmwoaSkmJihPYmplY3QuYXNzaWduKGkuc3R5bGUsbiksT2JqZWN0LmtleXMobykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIHQ9b1tlXTshMT09PXQ/aS5yZW1vdmVBdHRyaWJ1dGUoZSk6aS5zZXRBdHRyaWJ1dGUoZSwhMD09PXQ/XCJcIjp0KX0pKSl9KSl9LGVmZmVjdDpmdW5jdGlvbihlKXt2YXIgdD1lLnN0YXRlLG49e3BvcHBlcjp7cG9zaXRpb246dC5vcHRpb25zLnN0cmF0ZWd5LGxlZnQ6XCIwXCIsdG9wOlwiMFwiLG1hcmdpbjpcIjBcIn0sYXJyb3c6e3Bvc2l0aW9uOlwiYWJzb2x1dGVcIn0scmVmZXJlbmNlOnt9fTtyZXR1cm4gT2JqZWN0LmFzc2lnbih0LmVsZW1lbnRzLnBvcHBlci5zdHlsZSxuLnBvcHBlciksdC5zdHlsZXM9bix0LmVsZW1lbnRzLmFycm93JiZPYmplY3QuYXNzaWduKHQuZWxlbWVudHMuYXJyb3cuc3R5bGUsbi5hcnJvdyksZnVuY3Rpb24oKXtPYmplY3Qua2V5cyh0LmVsZW1lbnRzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgbz10LmVsZW1lbnRzW2VdLGk9dC5hdHRyaWJ1dGVzW2VdfHx7fSxhPU9iamVjdC5rZXlzKHQuc3R5bGVzLmhhc093blByb3BlcnR5KGUpP3Quc3R5bGVzW2VdOm5bZV0pLnJlZHVjZSgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZVt0XT1cIlwiLGV9KSx7fSk7cihvKSYmbChvKSYmKE9iamVjdC5hc3NpZ24oby5zdHlsZSxhKSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtvLnJlbW92ZUF0dHJpYnV0ZShlKX0pKSl9KSl9fSxyZXF1aXJlczpbXCJjb21wdXRlU3R5bGVzXCJdfTt2YXIgYWU9e25hbWU6XCJvZmZzZXRcIixlbmFibGVkOiEwLHBoYXNlOlwibWFpblwiLHJlcXVpcmVzOltcInBvcHBlck9mZnNldHNcIl0sZm46ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGF0ZSxuPWUub3B0aW9ucyxyPWUubmFtZSxvPW4ub2Zmc2V0LGk9dm9pZCAwPT09bz9bMCwwXTpvLGE9Uy5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGVbbl09ZnVuY3Rpb24oZSx0LG4pe3ZhciByPUMoZSksbz1bUCxEXS5pbmRleE9mKHIpPj0wPy0xOjEsaT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24oT2JqZWN0LmFzc2lnbih7fSx0LHtwbGFjZW1lbnQ6ZX0pKTpuLGE9aVswXSxzPWlbMV07cmV0dXJuIGE9YXx8MCxzPShzfHwwKSpvLFtQLExdLmluZGV4T2Yocik+PTA/e3g6cyx5OmF9Ont4OmEseTpzfX0obix0LnJlY3RzLGkpLGV9KSx7fSkscz1hW3QucGxhY2VtZW50XSxmPXMueCxjPXMueTtudWxsIT10Lm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyYmKHQubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLngrPWYsdC5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueSs9YyksdC5tb2RpZmllcnNEYXRhW3JdPWF9fSxzZT17bGVmdDpcInJpZ2h0XCIscmlnaHQ6XCJsZWZ0XCIsYm90dG9tOlwidG9wXCIsdG9wOlwiYm90dG9tXCJ9O2Z1bmN0aW9uIGZlKGUpe3JldHVybiBlLnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLChmdW5jdGlvbihlKXtyZXR1cm4gc2VbZV19KSl9dmFyIGNlPXtzdGFydDpcImVuZFwiLGVuZDpcInN0YXJ0XCJ9O2Z1bmN0aW9uIHBlKGUpe3JldHVybiBlLnJlcGxhY2UoL3N0YXJ0fGVuZC9nLChmdW5jdGlvbihlKXtyZXR1cm4gY2VbZV19KSl9ZnVuY3Rpb24gdWUoZSx0KXt2b2lkIDA9PT10JiYodD17fSk7dmFyIG49dCxyPW4ucGxhY2VtZW50LG89bi5ib3VuZGFyeSxpPW4ucm9vdEJvdW5kYXJ5LGE9bi5wYWRkaW5nLHM9bi5mbGlwVmFyaWF0aW9ucyxmPW4uYWxsb3dlZEF1dG9QbGFjZW1lbnRzLGM9dm9pZCAwPT09Zj9TOmYscD1VKHIpLHU9cD9zP1I6Ui5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBVKGUpPT09cH0pKTprLGw9dS5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBjLmluZGV4T2YoZSk+PTB9KSk7MD09PWwubGVuZ3RoJiYobD11KTt2YXIgZD1sLnJlZHVjZSgoZnVuY3Rpb24odCxuKXtyZXR1cm4gdFtuXT1KKGUse3BsYWNlbWVudDpuLGJvdW5kYXJ5Om8scm9vdEJvdW5kYXJ5OmkscGFkZGluZzphfSlbQyhuKV0sdH0pLHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZCkuc29ydCgoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZFtlXS1kW3RdfSkpfXZhciBsZT17bmFtZTpcImZsaXBcIixlbmFibGVkOiEwLHBoYXNlOlwibWFpblwiLGZuOmZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RhdGUsbj1lLm9wdGlvbnMscj1lLm5hbWU7aWYoIXQubW9kaWZpZXJzRGF0YVtyXS5fc2tpcCl7Zm9yKHZhciBvPW4ubWFpbkF4aXMsaT12b2lkIDA9PT1vfHxvLGE9bi5hbHRBeGlzLHM9dm9pZCAwPT09YXx8YSxmPW4uZmFsbGJhY2tQbGFjZW1lbnRzLGM9bi5wYWRkaW5nLHA9bi5ib3VuZGFyeSx1PW4ucm9vdEJvdW5kYXJ5LGw9bi5hbHRCb3VuZGFyeSxkPW4uZmxpcFZhcmlhdGlvbnMsaD12b2lkIDA9PT1kfHxkLG09bi5hbGxvd2VkQXV0b1BsYWNlbWVudHMsdj10Lm9wdGlvbnMucGxhY2VtZW50LHk9Qyh2KSxnPWZ8fCh5PT09dnx8IWg/W2ZlKHYpXTpmdW5jdGlvbihlKXtpZihDKGUpPT09TSlyZXR1cm5bXTt2YXIgdD1mZShlKTtyZXR1cm5bcGUoZSksdCxwZSh0KV19KHYpKSxiPVt2XS5jb25jYXQoZykucmVkdWNlKChmdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbmNhdChDKG4pPT09TT91ZSh0LHtwbGFjZW1lbnQ6bixib3VuZGFyeTpwLHJvb3RCb3VuZGFyeTp1LHBhZGRpbmc6YyxmbGlwVmFyaWF0aW9uczpoLGFsbG93ZWRBdXRvUGxhY2VtZW50czptfSk6bil9KSxbXSksdz10LnJlY3RzLnJlZmVyZW5jZSx4PXQucmVjdHMucG9wcGVyLE89bmV3IE1hcCxqPSEwLEU9YlswXSxrPTA7azxiLmxlbmd0aDtrKyspe3ZhciBCPWJba10sSD1DKEIpLFQ9VShCKT09PVcsUj1bRCxBXS5pbmRleE9mKEgpPj0wLFM9Uj9cIndpZHRoXCI6XCJoZWlnaHRcIixWPUoodCx7cGxhY2VtZW50OkIsYm91bmRhcnk6cCxyb290Qm91bmRhcnk6dSxhbHRCb3VuZGFyeTpsLHBhZGRpbmc6Y30pLHE9Uj9UP0w6UDpUP0E6RDt3W1NdPnhbU10mJihxPWZlKHEpKTt2YXIgTj1mZShxKSxJPVtdO2lmKGkmJkkucHVzaChWW0hdPD0wKSxzJiZJLnB1c2goVltxXTw9MCxWW05dPD0wKSxJLmV2ZXJ5KChmdW5jdGlvbihlKXtyZXR1cm4gZX0pKSl7RT1CLGo9ITE7YnJlYWt9Ty5zZXQoQixJKX1pZihqKWZvcih2YXIgXz1mdW5jdGlvbihlKXt2YXIgdD1iLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBuPU8uZ2V0KHQpO2lmKG4pcmV0dXJuIG4uc2xpY2UoMCxlKS5ldmVyeSgoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSl9KSk7aWYodClyZXR1cm4gRT10LFwiYnJlYWtcIn0sRj1oPzM6MTtGPjA7Ri0tKXtpZihcImJyZWFrXCI9PT1fKEYpKWJyZWFrfXQucGxhY2VtZW50IT09RSYmKHQubW9kaWZpZXJzRGF0YVtyXS5fc2tpcD0hMCx0LnBsYWNlbWVudD1FLHQucmVzZXQ9ITApfX0scmVxdWlyZXNJZkV4aXN0czpbXCJvZmZzZXRcIl0sZGF0YTp7X3NraXA6ITF9fTtmdW5jdGlvbiBkZShlLHQsbil7cmV0dXJuIGkoZSxhKHQsbikpfXZhciBoZT17bmFtZTpcInByZXZlbnRPdmVyZmxvd1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJtYWluXCIsZm46ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdGF0ZSxuPWUub3B0aW9ucyxyPWUubmFtZSxvPW4ubWFpbkF4aXMscz12b2lkIDA9PT1vfHxvLGY9bi5hbHRBeGlzLGM9dm9pZCAwIT09ZiYmZixwPW4uYm91bmRhcnksdT1uLnJvb3RCb3VuZGFyeSxsPW4uYWx0Qm91bmRhcnksZD1uLnBhZGRpbmcsaD1uLnRldGhlcixtPXZvaWQgMD09PWh8fGgsdj1uLnRldGhlck9mZnNldCx5PXZvaWQgMD09PXY/MDp2LGI9Sih0LHtib3VuZGFyeTpwLHJvb3RCb3VuZGFyeTp1LHBhZGRpbmc6ZCxhbHRCb3VuZGFyeTpsfSksdz1DKHQucGxhY2VtZW50KSx4PVUodC5wbGFjZW1lbnQpLE89IXgsaj16KHcpLE09XCJ4XCI9PT1qP1wieVwiOlwieFwiLGs9dC5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsQj10LnJlY3RzLnJlZmVyZW5jZSxIPXQucmVjdHMucG9wcGVyLFQ9XCJmdW5jdGlvblwiPT10eXBlb2YgeT95KE9iamVjdC5hc3NpZ24oe30sdC5yZWN0cyx7cGxhY2VtZW50OnQucGxhY2VtZW50fSkpOnksUj1cIm51bWJlclwiPT10eXBlb2YgVD97bWFpbkF4aXM6VCxhbHRBeGlzOlR9Ok9iamVjdC5hc3NpZ24oe21haW5BeGlzOjAsYWx0QXhpczowfSxUKSxTPXQubW9kaWZpZXJzRGF0YS5vZmZzZXQ/dC5tb2RpZmllcnNEYXRhLm9mZnNldFt0LnBsYWNlbWVudF06bnVsbCxWPXt4OjAseTowfTtpZihrKXtpZihzKXt2YXIgcSxOPVwieVwiPT09aj9EOlAsST1cInlcIj09PWo/QTpMLF89XCJ5XCI9PT1qP1wiaGVpZ2h0XCI6XCJ3aWR0aFwiLEY9a1tqXSxYPUYrYltOXSxZPUYtYltJXSxHPW0/LUhbX10vMjowLEs9eD09PVc/QltfXTpIW19dLFE9eD09PVc/LUhbX106LUJbX10sWj10LmVsZW1lbnRzLmFycm93LCQ9bSYmWj9nKFopOnt3aWR0aDowLGhlaWdodDowfSxlZT10Lm1vZGlmaWVyc0RhdGFbXCJhcnJvdyNwZXJzaXN0ZW50XCJdP3QubW9kaWZpZXJzRGF0YVtcImFycm93I3BlcnNpc3RlbnRcIl0ucGFkZGluZzp7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LHRlPWVlW05dLG5lPWVlW0ldLHJlPWRlKDAsQltfXSwkW19dKSxvZT1PP0JbX10vMi1HLXJlLXRlLVIubWFpbkF4aXM6Sy1yZS10ZS1SLm1haW5BeGlzLGllPU8/LUJbX10vMitHK3JlK25lK1IubWFpbkF4aXM6UStyZStuZStSLm1haW5BeGlzLGFlPXQuZWxlbWVudHMuYXJyb3cmJkUodC5lbGVtZW50cy5hcnJvdyksc2U9YWU/XCJ5XCI9PT1qP2FlLmNsaWVudFRvcHx8MDphZS5jbGllbnRMZWZ0fHwwOjAsZmU9bnVsbCE9KHE9bnVsbD09Uz92b2lkIDA6U1tqXSk/cTowLGNlPUYraWUtZmUscGU9ZGUobT9hKFgsRitvZS1mZS1zZSk6WCxGLG0/aShZLGNlKTpZKTtrW2pdPXBlLFZbal09cGUtRn1pZihjKXt2YXIgdWUsbGU9XCJ4XCI9PT1qP0Q6UCxoZT1cInhcIj09PWo/QTpMLG1lPWtbTV0sdmU9XCJ5XCI9PT1NP1wiaGVpZ2h0XCI6XCJ3aWR0aFwiLHllPW1lK2JbbGVdLGdlPW1lLWJbaGVdLGJlPS0xIT09W0QsUF0uaW5kZXhPZih3KSx3ZT1udWxsIT0odWU9bnVsbD09Uz92b2lkIDA6U1tNXSk/dWU6MCx4ZT1iZT95ZTptZS1CW3ZlXS1IW3ZlXS13ZStSLmFsdEF4aXMsT2U9YmU/bWUrQlt2ZV0rSFt2ZV0td2UtUi5hbHRBeGlzOmdlLGplPW0mJmJlP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1kZShlLHQsbik7cmV0dXJuIHI+bj9uOnJ9KHhlLG1lLE9lKTpkZShtP3hlOnllLG1lLG0/T2U6Z2UpO2tbTV09amUsVltNXT1qZS1tZX10Lm1vZGlmaWVyc0RhdGFbcl09Vn19LHJlcXVpcmVzSWZFeGlzdHM6W1wib2Zmc2V0XCJdfTt2YXIgbWU9e25hbWU6XCJhcnJvd1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJtYWluXCIsZm46ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnN0YXRlLHI9ZS5uYW1lLG89ZS5vcHRpb25zLGk9bi5lbGVtZW50cy5hcnJvdyxhPW4ubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLHM9QyhuLnBsYWNlbWVudCksZj16KHMpLGM9W1AsTF0uaW5kZXhPZihzKT49MD9cImhlaWdodFwiOlwid2lkdGhcIjtpZihpJiZhKXt2YXIgcD1mdW5jdGlvbihlLHQpe3JldHVybiBZKFwibnVtYmVyXCIhPXR5cGVvZihlPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZShPYmplY3QuYXNzaWduKHt9LHQucmVjdHMse3BsYWNlbWVudDp0LnBsYWNlbWVudH0pKTplKT9lOkcoZSxrKSl9KG8ucGFkZGluZyxuKSx1PWcoaSksbD1cInlcIj09PWY/RDpQLGQ9XCJ5XCI9PT1mP0E6TCxoPW4ucmVjdHMucmVmZXJlbmNlW2NdK24ucmVjdHMucmVmZXJlbmNlW2ZdLWFbZl0tbi5yZWN0cy5wb3BwZXJbY10sbT1hW2ZdLW4ucmVjdHMucmVmZXJlbmNlW2ZdLHY9RShpKSx5PXY/XCJ5XCI9PT1mP3YuY2xpZW50SGVpZ2h0fHwwOnYuY2xpZW50V2lkdGh8fDA6MCxiPWgvMi1tLzIsdz1wW2xdLHg9eS11W2NdLXBbZF0sTz15LzItdVtjXS8yK2Isaj1kZSh3LE8seCksTT1mO24ubW9kaWZpZXJzRGF0YVtyXT0oKHQ9e30pW01dPWosdC5jZW50ZXJPZmZzZXQ9ai1PLHQpfX0sZWZmZWN0OmZ1bmN0aW9uKGUpe3ZhciB0PWUuc3RhdGUsbj1lLm9wdGlvbnMuZWxlbWVudCxyPXZvaWQgMD09PW4/XCJbZGF0YS1wb3BwZXItYXJyb3ddXCI6bjtudWxsIT1yJiYoXCJzdHJpbmdcIiE9dHlwZW9mIHJ8fChyPXQuZWxlbWVudHMucG9wcGVyLnF1ZXJ5U2VsZWN0b3IocikpKSYmTih0LmVsZW1lbnRzLnBvcHBlcixyKSYmKHQuZWxlbWVudHMuYXJyb3c9cil9LHJlcXVpcmVzOltcInBvcHBlck9mZnNldHNcIl0scmVxdWlyZXNJZkV4aXN0czpbXCJwcmV2ZW50T3ZlcmZsb3dcIl19O2Z1bmN0aW9uIHZlKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49e3g6MCx5OjB9KSx7dG9wOmUudG9wLXQuaGVpZ2h0LW4ueSxyaWdodDplLnJpZ2h0LXQud2lkdGgrbi54LGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCtuLnksbGVmdDplLmxlZnQtdC53aWR0aC1uLnh9fWZ1bmN0aW9uIHllKGUpe3JldHVybltELEwsQSxQXS5zb21lKChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XT49MH0pKX12YXIgZ2U9e25hbWU6XCJoaWRlXCIsZW5hYmxlZDohMCxwaGFzZTpcIm1haW5cIixyZXF1aXJlc0lmRXhpc3RzOltcInByZXZlbnRPdmVyZmxvd1wiXSxmbjpmdW5jdGlvbihlKXt2YXIgdD1lLnN0YXRlLG49ZS5uYW1lLHI9dC5yZWN0cy5yZWZlcmVuY2Usbz10LnJlY3RzLnBvcHBlcixpPXQubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3csYT1KKHQse2VsZW1lbnRDb250ZXh0OlwicmVmZXJlbmNlXCJ9KSxzPUoodCx7YWx0Qm91bmRhcnk6ITB9KSxmPXZlKGEsciksYz12ZShzLG8saSkscD15ZShmKSx1PXllKGMpO3QubW9kaWZpZXJzRGF0YVtuXT17cmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzOmYscG9wcGVyRXNjYXBlT2Zmc2V0czpjLGlzUmVmZXJlbmNlSGlkZGVuOnAsaGFzUG9wcGVyRXNjYXBlZDp1fSx0LmF0dHJpYnV0ZXMucG9wcGVyPU9iamVjdC5hc3NpZ24oe30sdC5hdHRyaWJ1dGVzLnBvcHBlcix7XCJkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuXCI6cCxcImRhdGEtcG9wcGVyLWVzY2FwZWRcIjp1fSl9fSxiZT1aKHtkZWZhdWx0TW9kaWZpZXJzOltlZSx0ZSxvZSxpZV19KSx3ZT1bZWUsdGUsb2UsaWUsYWUsbGUsaGUsbWUsZ2VdLHhlPVooe2RlZmF1bHRNb2RpZmllcnM6d2V9KTtlLmFwcGx5U3R5bGVzPWllLGUuYXJyb3c9bWUsZS5jb21wdXRlU3R5bGVzPW9lLGUuY3JlYXRlUG9wcGVyPXhlLGUuY3JlYXRlUG9wcGVyTGl0ZT1iZSxlLmRlZmF1bHRNb2RpZmllcnM9d2UsZS5kZXRlY3RPdmVyZmxvdz1KLGUuZXZlbnRMaXN0ZW5lcnM9ZWUsZS5mbGlwPWxlLGUuaGlkZT1nZSxlLm9mZnNldD1hZSxlLnBvcHBlckdlbmVyYXRvcj1aLGUucG9wcGVyT2Zmc2V0cz10ZSxlLnByZXZlbnRPdmVyZmxvdz1oZSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBvcHBlci5taW4uanMubWFwXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/@popperjs/core/dist/umd/popper.min.js\n"); - -/***/ }), - -/***/ "./libs/popper/popper.js": -/*!*******************************!*\ - !*** ./libs/popper/popper.js ***! - \*******************************/ -/***/ (function(__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 */ \"Popper\": function() { return /* reexport default from dynamic */ _popperjs_core_dist_umd_popper_min__WEBPACK_IMPORTED_MODULE_0___default.a; }\n/* harmony export */ });\n/* harmony import */ var _popperjs_core_dist_umd_popper_min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @popperjs/core/dist/umd/popper.min */ \"./node_modules/@popperjs/core/dist/umd/popper.min.js\");\n/* harmony import */ var _popperjs_core_dist_umd_popper_min__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_popperjs_core_dist_umd_popper_min__WEBPACK_IMPORTED_MODULE_0__);\n\n\n// Required to enable animations on dropdowns/tooltips/popovers\n// Popper.Defaults.modifiers.computeStyle.gpuAcceleration = false\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWJzL3BvcHBlci9wb3BwZXIuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQXdEOztBQUV4RDtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vU25lYXQvLi9saWJzL3BvcHBlci9wb3BwZXIuanM/NTgwMyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUG9wcGVyIGZyb20gJ0Bwb3BwZXJqcy9jb3JlL2Rpc3QvdW1kL3BvcHBlci5taW4nO1xyXG5cclxuLy8gUmVxdWlyZWQgdG8gZW5hYmxlIGFuaW1hdGlvbnMgb24gZHJvcGRvd25zL3Rvb2x0aXBzL3BvcG92ZXJzXHJcbi8vIFBvcHBlci5EZWZhdWx0cy5tb2RpZmllcnMuY29tcHV0ZVN0eWxlLmdwdUFjY2VsZXJhdGlvbiA9IGZhbHNlXHJcblxyXG5leHBvcnQgeyBQb3BwZXIgfTtcclxuIl0sIm5hbWVzIjpbIlBvcHBlciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./libs/popper/popper.js\n"); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat get default export */ -/******/ !function() { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function() { return module['default']; } : -/******/ function() { return module; }; -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ }(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ !function() { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = function(exports, definition) { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ }(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ !function() { -/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } -/******/ }(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ !function() { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ }(); -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module can't be inlined because the eval-source-map devtool is used. -/******/ var __webpack_exports__ = __webpack_require__("./libs/popper/popper.js"); -/******/ -/******/ return __webpack_exports__; -/******/ })() -; -}); \ No newline at end of file + +! function(e, t) { + "object" == typeof exports && "undefined" != typeof module ? t(exports) : "function" == typeof define && define.amd ? define(["exports"], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).Popper = {}) +}(this, (function(e) { + "use strict"; + + function t(e) { + if (null == e) return window; + if ("[object Window]" !== e.toString()) { + var t = e.ownerDocument; + return t && t.defaultView || window + } + return e + } + + function n(e) { + return e instanceof t(e).Element || e instanceof Element + } + + function r(e) { + return e instanceof t(e).HTMLElement || e instanceof HTMLElement + } + + function o(e) { + return "undefined" != typeof ShadowRoot && (e instanceof t(e).ShadowRoot || e instanceof ShadowRoot) + } + var i = Math.max, + a = Math.min, + s = Math.round; + + function f() { + var e = navigator.userAgentData; + return null != e && e.brands ? e.brands.map((function(e) { + return e.brand + "/" + e.version + })).join(" ") : navigator.userAgent + } + + function c() { + return !/^((?!chrome|android).)*safari/i.test(f()) + } + + function p(e, o, i) { + void 0 === o && (o = !1), void 0 === i && (i = !1); + var a = e.getBoundingClientRect(), + f = 1, + p = 1; + o && r(e) && (f = e.offsetWidth > 0 && s(a.width) / e.offsetWidth || 1, p = e.offsetHeight > 0 && s(a.height) / e.offsetHeight || 1); + var u = (n(e) ? t(e) : window).visualViewport, + l = !c() && i, + d = (a.left + (l && u ? u.offsetLeft : 0)) / f, + h = (a.top + (l && u ? u.offsetTop : 0)) / p, + m = a.width / f, + v = a.height / p; + return { + width: m, + height: v, + top: h, + right: d + m, + bottom: h + v, + left: d, + x: d, + y: h + } + } + + function u(e) { + var n = t(e); + return { + scrollLeft: n.pageXOffset, + scrollTop: n.pageYOffset + } + } + + function l(e) { + return e ? (e.nodeName || "").toLowerCase() : null + } + + function d(e) { + return ((n(e) ? e.ownerDocument : e.document) || window.document).documentElement + } + + function h(e) { + return p(d(e)).left + u(e).scrollLeft + } + + function m(e) { + return t(e).getComputedStyle(e) + } + + function v(e) { + var t = m(e), + n = t.overflow, + r = t.overflowX, + o = t.overflowY; + return /auto|scroll|overlay|hidden/.test(n + o + r) + } + + function y(e, n, o) { + void 0 === o && (o = !1); + var i, a, f = r(n), + c = r(n) && function(e) { + var t = e.getBoundingClientRect(), + n = s(t.width) / e.offsetWidth || 1, + r = s(t.height) / e.offsetHeight || 1; + return 1 !== n || 1 !== r + }(n), + m = d(n), + y = p(e, c, o), + g = { + scrollLeft: 0, + scrollTop: 0 + }, + b = { + x: 0, + y: 0 + }; + return (f || !f && !o) && (("body" !== l(n) || v(m)) && (g = (i = n) !== t(i) && r(i) ? { + scrollLeft: (a = i).scrollLeft, + scrollTop: a.scrollTop + } : u(i)), r(n) ? ((b = p(n, !0)).x += n.clientLeft, b.y += n.clientTop) : m && (b.x = h(m))), { + x: y.left + g.scrollLeft - b.x, + y: y.top + g.scrollTop - b.y, + width: y.width, + height: y.height + } + } + + function g(e) { + var t = p(e), + n = e.offsetWidth, + r = e.offsetHeight; + return Math.abs(t.width - n) <= 1 && (n = t.width), Math.abs(t.height - r) <= 1 && (r = t.height), { + x: e.offsetLeft, + y: e.offsetTop, + width: n, + height: r + } + } + + function b(e) { + return "html" === l(e) ? e : e.assignedSlot || e.parentNode || (o(e) ? e.host : null) || d(e) + } + + function w(e) { + return ["html", "body", "#document"].indexOf(l(e)) >= 0 ? e.ownerDocument.body : r(e) && v(e) ? e : w(b(e)) + } + + function x(e, n) { + var r; + void 0 === n && (n = []); + var o = w(e), + i = o === (null == (r = e.ownerDocument) ? void 0 : r.body), + a = t(o), + s = i ? [a].concat(a.visualViewport || [], v(o) ? o : []) : o, + f = n.concat(s); + return i ? f : f.concat(x(b(s))) + } + + function O(e) { + return ["table", "td", "th"].indexOf(l(e)) >= 0 + } + + function j(e) { + return r(e) && "fixed" !== m(e).position ? e.offsetParent : null + } + + function E(e) { + for (var n = t(e), i = j(e); i && O(i) && "static" === m(i).position;) i = j(i); + return i && ("html" === l(i) || "body" === l(i) && "static" === m(i).position) ? n : i || function(e) { + var t = /firefox/i.test(f()); + if (/Trident/i.test(f()) && r(e) && "fixed" === m(e).position) return null; + var n = b(e); + for (o(n) && (n = n.host); r(n) && ["html", "body"].indexOf(l(n)) < 0;) { + var i = m(n); + if ("none" !== i.transform || "none" !== i.perspective || "paint" === i.contain || -1 !== ["transform", "perspective"].indexOf(i.willChange) || t && "filter" === i.willChange || t && i.filter && "none" !== i.filter) return n; + n = n.parentNode + } + return null + }(e) || n + } + var D = "top", + A = "bottom", + L = "right", + P = "left", + M = "auto", + k = [D, A, L, P], + W = "start", + B = "end", + H = "viewport", + T = "popper", + R = k.reduce((function(e, t) { + return e.concat([t + "-" + W, t + "-" + B]) + }), []), + S = [].concat(k, [M]).reduce((function(e, t) { + return e.concat([t, t + "-" + W, t + "-" + B]) + }), []), + V = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; + + function q(e) { + var t = new Map, + n = new Set, + r = []; + + function o(e) { + n.add(e.name), [].concat(e.requires || [], e.requiresIfExists || []).forEach((function(e) { + if (!n.has(e)) { + var r = t.get(e); + r && o(r) + } + })), r.push(e) + } + return e.forEach((function(e) { + t.set(e.name, e) + })), e.forEach((function(e) { + n.has(e.name) || o(e) + })), r + } + + function C(e) { + return e.split("-")[0] + } + + function N(e, t) { + var n = t.getRootNode && t.getRootNode(); + if (e.contains(t)) return !0; + if (n && o(n)) { + var r = t; + do { + if (r && e.isSameNode(r)) return !0; + r = r.parentNode || r.host + } while (r) + } + return !1 + } + + function I(e) { + return Object.assign({}, e, { + left: e.x, + top: e.y, + right: e.x + e.width, + bottom: e.y + e.height + }) + } + + function _(e, r, o) { + return r === H ? I(function(e, n) { + var r = t(e), + o = d(e), + i = r.visualViewport, + a = o.clientWidth, + s = o.clientHeight, + f = 0, + p = 0; + if (i) { + a = i.width, s = i.height; + var u = c(); + (u || !u && "fixed" === n) && (f = i.offsetLeft, p = i.offsetTop) + } + return { + width: a, + height: s, + x: f + h(e), + y: p + } + }(e, o)) : n(r) ? function(e, t) { + var n = p(e, !1, "fixed" === t); + return n.top = n.top + e.clientTop, n.left = n.left + e.clientLeft, n.bottom = n.top + e.clientHeight, n.right = n.left + e.clientWidth, n.width = e.clientWidth, n.height = e.clientHeight, n.x = n.left, n.y = n.top, n + }(r, o) : I(function(e) { + var t, n = d(e), + r = u(e), + o = null == (t = e.ownerDocument) ? void 0 : t.body, + a = i(n.scrollWidth, n.clientWidth, o ? o.scrollWidth : 0, o ? o.clientWidth : 0), + s = i(n.scrollHeight, n.clientHeight, o ? o.scrollHeight : 0, o ? o.clientHeight : 0), + f = -r.scrollLeft + h(e), + c = -r.scrollTop; + return "rtl" === m(o || n).direction && (f += i(n.clientWidth, o ? o.clientWidth : 0) - a), { + width: a, + height: s, + x: f, + y: c + } + }(d(e))) + } + + function F(e, t, o, s) { + var f = "clippingParents" === t ? function(e) { + var t = x(b(e)), + o = ["absolute", "fixed"].indexOf(m(e).position) >= 0 && r(e) ? E(e) : e; + return n(o) ? t.filter((function(e) { + return n(e) && N(e, o) && "body" !== l(e) + })) : [] + }(e) : [].concat(t), + c = [].concat(f, [o]), + p = c[0], + u = c.reduce((function(t, n) { + var r = _(e, n, s); + return t.top = i(r.top, t.top), t.right = a(r.right, t.right), t.bottom = a(r.bottom, t.bottom), t.left = i(r.left, t.left), t + }), _(e, p, s)); + return u.width = u.right - u.left, u.height = u.bottom - u.top, u.x = u.left, u.y = u.top, u + } + + function U(e) { + return e.split("-")[1] + } + + function z(e) { + return ["top", "bottom"].indexOf(e) >= 0 ? "x" : "y" + } + + function X(e) { + var t, n = e.reference, + r = e.element, + o = e.placement, + i = o ? C(o) : null, + a = o ? U(o) : null, + s = n.x + n.width / 2 - r.width / 2, + f = n.y + n.height / 2 - r.height / 2; + switch (i) { + case D: + t = { + x: s, + y: n.y - r.height + }; + break; + case A: + t = { + x: s, + y: n.y + n.height + }; + break; + case L: + t = { + x: n.x + n.width, + y: f + }; + break; + case P: + t = { + x: n.x - r.width, + y: f + }; + break; + default: + t = { + x: n.x, + y: n.y + } + } + var c = i ? z(i) : null; + if (null != c) { + var p = "y" === c ? "height" : "width"; + switch (a) { + case W: + t[c] = t[c] - (n[p] / 2 - r[p] / 2); + break; + case B: + t[c] = t[c] + (n[p] / 2 - r[p] / 2) + } + } + return t + } + + function Y(e) { + return Object.assign({}, { + top: 0, + right: 0, + bottom: 0, + left: 0 + }, e) + } + + function G(e, t) { + return t.reduce((function(t, n) { + return t[n] = e, t + }), {}) + } + + function J(e, t) { + void 0 === t && (t = {}); + var r = t, + o = r.placement, + i = void 0 === o ? e.placement : o, + a = r.strategy, + s = void 0 === a ? e.strategy : a, + f = r.boundary, + c = void 0 === f ? "clippingParents" : f, + u = r.rootBoundary, + l = void 0 === u ? H : u, + h = r.elementContext, + m = void 0 === h ? T : h, + v = r.altBoundary, + y = void 0 !== v && v, + g = r.padding, + b = void 0 === g ? 0 : g, + w = Y("number" != typeof b ? b : G(b, k)), + x = m === T ? "reference" : T, + O = e.rects.popper, + j = e.elements[y ? x : m], + E = F(n(j) ? j : j.contextElement || d(e.elements.popper), c, l, s), + P = p(e.elements.reference), + M = X({ + reference: P, + element: O, + strategy: "absolute", + placement: i + }), + W = I(Object.assign({}, O, M)), + B = m === T ? W : P, + R = { + top: E.top - B.top + w.top, + bottom: B.bottom - E.bottom + w.bottom, + left: E.left - B.left + w.left, + right: B.right - E.right + w.right + }, + S = e.modifiersData.offset; + if (m === T && S) { + var V = S[i]; + Object.keys(R).forEach((function(e) { + var t = [L, A].indexOf(e) >= 0 ? 1 : -1, + n = [D, A].indexOf(e) >= 0 ? "y" : "x"; + R[e] += V[n] * t + })) + } + return R + } + var K = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + + function Q() { + for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]; + return !t.some((function(e) { + return !(e && "function" == typeof e.getBoundingClientRect) + })) + } + + function Z(e) { + void 0 === e && (e = {}); + var t = e, + r = t.defaultModifiers, + o = void 0 === r ? [] : r, + i = t.defaultOptions, + a = void 0 === i ? K : i; + return function(e, t, r) { + void 0 === r && (r = a); + var i, s, f = { + placement: "bottom", + orderedModifiers: [], + options: Object.assign({}, K, a), + modifiersData: {}, + elements: { + reference: e, + popper: t + }, + attributes: {}, + styles: {} + }, + c = [], + p = !1, + u = { + state: f, + setOptions: function(r) { + var i = "function" == typeof r ? r(f.options) : r; + l(), f.options = Object.assign({}, a, f.options, i), f.scrollParents = { + reference: n(e) ? x(e) : e.contextElement ? x(e.contextElement) : [], + popper: x(t) + }; + var s, p, d = function(e) { + var t = q(e); + return V.reduce((function(e, n) { + return e.concat(t.filter((function(e) { + return e.phase === n + }))) + }), []) + }((s = [].concat(o, f.options.modifiers), p = s.reduce((function(e, t) { + var n = e[t.name]; + return e[t.name] = n ? Object.assign({}, n, t, { + options: Object.assign({}, n.options, t.options), + data: Object.assign({}, n.data, t.data) + }) : t, e + }), {}), Object.keys(p).map((function(e) { + return p[e] + })))); + return f.orderedModifiers = d.filter((function(e) { + return e.enabled + })), f.orderedModifiers.forEach((function(e) { + var t = e.name, + n = e.options, + r = void 0 === n ? {} : n, + o = e.effect; + if ("function" == typeof o) { + var i = o({ + state: f, + name: t, + instance: u, + options: r + }), + a = function() {}; + c.push(i || a) + } + })), u.update() + }, + forceUpdate: function() { + if (!p) { + var e = f.elements, + t = e.reference, + n = e.popper; + if (Q(t, n)) { + f.rects = { + reference: y(t, E(n), "fixed" === f.options.strategy), + popper: g(n) + }, f.reset = !1, f.placement = f.options.placement, f.orderedModifiers.forEach((function(e) { + return f.modifiersData[e.name] = Object.assign({}, e.data) + })); + for (var r = 0; r < f.orderedModifiers.length; r++) + if (!0 !== f.reset) { + var o = f.orderedModifiers[r], + i = o.fn, + a = o.options, + s = void 0 === a ? {} : a, + c = o.name; + "function" == typeof i && (f = i({ + state: f, + options: s, + name: c, + instance: u + }) || f) + } else f.reset = !1, r = -1 + } + } + }, + update: (i = function() { + return new Promise((function(e) { + u.forceUpdate(), e(f) + })) + }, function() { + return s || (s = new Promise((function(e) { + Promise.resolve().then((function() { + s = void 0, e(i()) + })) + }))), s + }), + destroy: function() { + l(), p = !0 + } + }; + if (!Q(e, t)) return u; + + function l() { + c.forEach((function(e) { + return e() + })), c = [] + } + return u.setOptions(r).then((function(e) { + !p && r.onFirstUpdate && r.onFirstUpdate(e) + })), u + } + } + var $ = { + passive: !0 + }; + var ee = { + name: "eventListeners", + enabled: !0, + phase: "write", + fn: function() {}, + effect: function(e) { + var n = e.state, + r = e.instance, + o = e.options, + i = o.scroll, + a = void 0 === i || i, + s = o.resize, + f = void 0 === s || s, + c = t(n.elements.popper), + p = [].concat(n.scrollParents.reference, n.scrollParents.popper); + return a && p.forEach((function(e) { + e.addEventListener("scroll", r.update, $) + })), f && c.addEventListener("resize", r.update, $), + function() { + a && p.forEach((function(e) { + e.removeEventListener("scroll", r.update, $) + })), f && c.removeEventListener("resize", r.update, $) + } + }, + data: {} + }; + var te = { + name: "popperOffsets", + enabled: !0, + phase: "read", + fn: function(e) { + var t = e.state, + n = e.name; + t.modifiersData[n] = X({ + reference: t.rects.reference, + element: t.rects.popper, + strategy: "absolute", + placement: t.placement + }) + }, + data: {} + }, + ne = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + + function re(e) { + var n, r = e.popper, + o = e.popperRect, + i = e.placement, + a = e.variation, + f = e.offsets, + c = e.position, + p = e.gpuAcceleration, + u = e.adaptive, + l = e.roundOffsets, + h = e.isFixed, + v = f.x, + y = void 0 === v ? 0 : v, + g = f.y, + b = void 0 === g ? 0 : g, + w = "function" == typeof l ? l({ + x: y, + y: b + }) : { + x: y, + y: b + }; + y = w.x, b = w.y; + var x = f.hasOwnProperty("x"), + O = f.hasOwnProperty("y"), + j = P, + M = D, + k = window; + if (u) { + var W = E(r), + H = "clientHeight", + T = "clientWidth"; + if (W === t(r) && "static" !== m(W = d(r)).position && "absolute" === c && (H = "scrollHeight", T = "scrollWidth"), W = W, i === D || (i === P || i === L) && a === B) M = A, b -= (h && W === k && k.visualViewport ? k.visualViewport.height : W[H]) - o.height, b *= p ? 1 : -1; + if (i === P || (i === D || i === A) && a === B) j = L, y -= (h && W === k && k.visualViewport ? k.visualViewport.width : W[T]) - o.width, y *= p ? 1 : -1 + } + var R, S = Object.assign({ + position: c + }, u && ne), + V = !0 === l ? function(e) { + var t = e.x, + n = e.y, + r = window.devicePixelRatio || 1; + return { + x: s(t * r) / r || 0, + y: s(n * r) / r || 0 + } + }({ + x: y, + y: b + }) : { + x: y, + y: b + }; + return y = V.x, b = V.y, p ? Object.assign({}, S, ((R = {})[M] = O ? "0" : "", R[j] = x ? "0" : "", R.transform = (k.devicePixelRatio || 1) <= 1 ? "translate(" + y + "px, " + b + "px)" : "translate3d(" + y + "px, " + b + "px, 0)", R)) : Object.assign({}, S, ((n = {})[M] = O ? b + "px" : "", n[j] = x ? y + "px" : "", n.transform = "", n)) + } + var oe = { + name: "computeStyles", + enabled: !0, + phase: "beforeWrite", + fn: function(e) { + var t = e.state, + n = e.options, + r = n.gpuAcceleration, + o = void 0 === r || r, + i = n.adaptive, + a = void 0 === i || i, + s = n.roundOffsets, + f = void 0 === s || s, + c = { + placement: C(t.placement), + variation: U(t.placement), + popper: t.elements.popper, + popperRect: t.rects.popper, + gpuAcceleration: o, + isFixed: "fixed" === t.options.strategy + }; + null != t.modifiersData.popperOffsets && (t.styles.popper = Object.assign({}, t.styles.popper, re(Object.assign({}, c, { + offsets: t.modifiersData.popperOffsets, + position: t.options.strategy, + adaptive: a, + roundOffsets: f + })))), null != t.modifiersData.arrow && (t.styles.arrow = Object.assign({}, t.styles.arrow, re(Object.assign({}, c, { + offsets: t.modifiersData.arrow, + position: "absolute", + adaptive: !1, + roundOffsets: f + })))), t.attributes.popper = Object.assign({}, t.attributes.popper, { + "data-popper-placement": t.placement + }) + }, + data: {} + }; + var ie = { + name: "applyStyles", + enabled: !0, + phase: "write", + fn: function(e) { + var t = e.state; + Object.keys(t.elements).forEach((function(e) { + var n = t.styles[e] || {}, + o = t.attributes[e] || {}, + i = t.elements[e]; + r(i) && l(i) && (Object.assign(i.style, n), Object.keys(o).forEach((function(e) { + var t = o[e]; + !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t) + }))) + })) + }, + effect: function(e) { + var t = e.state, + n = { + popper: { + position: t.options.strategy, + left: "0", + top: "0", + margin: "0" + }, + arrow: { + position: "absolute" + }, + reference: {} + }; + return Object.assign(t.elements.popper.style, n.popper), t.styles = n, t.elements.arrow && Object.assign(t.elements.arrow.style, n.arrow), + function() { + Object.keys(t.elements).forEach((function(e) { + var o = t.elements[e], + i = t.attributes[e] || {}, + a = Object.keys(t.styles.hasOwnProperty(e) ? t.styles[e] : n[e]).reduce((function(e, t) { + return e[t] = "", e + }), {}); + r(o) && l(o) && (Object.assign(o.style, a), Object.keys(i).forEach((function(e) { + o.removeAttribute(e) + }))) + })) + } + }, + requires: ["computeStyles"] + }; + var ae = { + name: "offset", + enabled: !0, + phase: "main", + requires: ["popperOffsets"], + fn: function(e) { + var t = e.state, + n = e.options, + r = e.name, + o = n.offset, + i = void 0 === o ? [0, 0] : o, + a = S.reduce((function(e, n) { + return e[n] = function(e, t, n) { + var r = C(e), + o = [P, D].indexOf(r) >= 0 ? -1 : 1, + i = "function" == typeof n ? n(Object.assign({}, t, { + placement: e + })) : n, + a = i[0], + s = i[1]; + return a = a || 0, s = (s || 0) * o, [P, L].indexOf(r) >= 0 ? { + x: s, + y: a + } : { + x: a, + y: s + } + }(n, t.rects, i), e + }), {}), + s = a[t.placement], + f = s.x, + c = s.y; + null != t.modifiersData.popperOffsets && (t.modifiersData.popperOffsets.x += f, t.modifiersData.popperOffsets.y += c), t.modifiersData[r] = a + } + }, + se = { + left: "right", + right: "left", + bottom: "top", + top: "bottom" + }; + + function fe(e) { + return e.replace(/left|right|bottom|top/g, (function(e) { + return se[e] + })) + } + var ce = { + start: "end", + end: "start" + }; + + function pe(e) { + return e.replace(/start|end/g, (function(e) { + return ce[e] + })) + } + + function ue(e, t) { + void 0 === t && (t = {}); + var n = t, + r = n.placement, + o = n.boundary, + i = n.rootBoundary, + a = n.padding, + s = n.flipVariations, + f = n.allowedAutoPlacements, + c = void 0 === f ? S : f, + p = U(r), + u = p ? s ? R : R.filter((function(e) { + return U(e) === p + })) : k, + l = u.filter((function(e) { + return c.indexOf(e) >= 0 + })); + 0 === l.length && (l = u); + var d = l.reduce((function(t, n) { + return t[n] = J(e, { + placement: n, + boundary: o, + rootBoundary: i, + padding: a + })[C(n)], t + }), {}); + return Object.keys(d).sort((function(e, t) { + return d[e] - d[t] + })) + } + var le = { + name: "flip", + enabled: !0, + phase: "main", + fn: function(e) { + var t = e.state, + n = e.options, + r = e.name; + if (!t.modifiersData[r]._skip) { + for (var o = n.mainAxis, i = void 0 === o || o, a = n.altAxis, s = void 0 === a || a, f = n.fallbackPlacements, c = n.padding, p = n.boundary, u = n.rootBoundary, l = n.altBoundary, d = n.flipVariations, h = void 0 === d || d, m = n.allowedAutoPlacements, v = t.options.placement, y = C(v), g = f || (y === v || !h ? [fe(v)] : function(e) { + if (C(e) === M) return []; + var t = fe(e); + return [pe(e), t, pe(t)] + }(v)), b = [v].concat(g).reduce((function(e, n) { + return e.concat(C(n) === M ? ue(t, { + placement: n, + boundary: p, + rootBoundary: u, + padding: c, + flipVariations: h, + allowedAutoPlacements: m + }) : n) + }), []), w = t.rects.reference, x = t.rects.popper, O = new Map, j = !0, E = b[0], k = 0; k < b.length; k++) { + var B = b[k], + H = C(B), + T = U(B) === W, + R = [D, A].indexOf(H) >= 0, + S = R ? "width" : "height", + V = J(t, { + placement: B, + boundary: p, + rootBoundary: u, + altBoundary: l, + padding: c + }), + q = R ? T ? L : P : T ? A : D; + w[S] > x[S] && (q = fe(q)); + var N = fe(q), + I = []; + if (i && I.push(V[H] <= 0), s && I.push(V[q] <= 0, V[N] <= 0), I.every((function(e) { + return e + }))) { + E = B, j = !1; + break + } + O.set(B, I) + } + if (j) + for (var _ = function(e) { + var t = b.find((function(t) { + var n = O.get(t); + if (n) return n.slice(0, e).every((function(e) { + return e + })) + })); + if (t) return E = t, "break" + }, F = h ? 3 : 1; F > 0; F--) { + if ("break" === _(F)) break + } + t.placement !== E && (t.modifiersData[r]._skip = !0, t.placement = E, t.reset = !0) + } + }, + requiresIfExists: ["offset"], + data: { + _skip: !1 + } + }; + + function de(e, t, n) { + return i(e, a(t, n)) + } + var he = { + name: "preventOverflow", + enabled: !0, + phase: "main", + fn: function(e) { + var t = e.state, + n = e.options, + r = e.name, + o = n.mainAxis, + s = void 0 === o || o, + f = n.altAxis, + c = void 0 !== f && f, + p = n.boundary, + u = n.rootBoundary, + l = n.altBoundary, + d = n.padding, + h = n.tether, + m = void 0 === h || h, + v = n.tetherOffset, + y = void 0 === v ? 0 : v, + b = J(t, { + boundary: p, + rootBoundary: u, + padding: d, + altBoundary: l + }), + w = C(t.placement), + x = U(t.placement), + O = !x, + j = z(w), + M = "x" === j ? "y" : "x", + k = t.modifiersData.popperOffsets, + B = t.rects.reference, + H = t.rects.popper, + T = "function" == typeof y ? y(Object.assign({}, t.rects, { + placement: t.placement + })) : y, + R = "number" == typeof T ? { + mainAxis: T, + altAxis: T + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, T), + S = t.modifiersData.offset ? t.modifiersData.offset[t.placement] : null, + V = { + x: 0, + y: 0 + }; + if (k) { + if (s) { + var q, N = "y" === j ? D : P, + I = "y" === j ? A : L, + _ = "y" === j ? "height" : "width", + F = k[j], + X = F + b[N], + Y = F - b[I], + G = m ? -H[_] / 2 : 0, + K = x === W ? B[_] : H[_], + Q = x === W ? -H[_] : -B[_], + Z = t.elements.arrow, + $ = m && Z ? g(Z) : { + width: 0, + height: 0 + }, + ee = t.modifiersData["arrow#persistent"] ? t.modifiersData["arrow#persistent"].padding : { + top: 0, + right: 0, + bottom: 0, + left: 0 + }, + te = ee[N], + ne = ee[I], + re = de(0, B[_], $[_]), + oe = O ? B[_] / 2 - G - re - te - R.mainAxis : K - re - te - R.mainAxis, + ie = O ? -B[_] / 2 + G + re + ne + R.mainAxis : Q + re + ne + R.mainAxis, + ae = t.elements.arrow && E(t.elements.arrow), + se = ae ? "y" === j ? ae.clientTop || 0 : ae.clientLeft || 0 : 0, + fe = null != (q = null == S ? void 0 : S[j]) ? q : 0, + ce = F + ie - fe, + pe = de(m ? a(X, F + oe - fe - se) : X, F, m ? i(Y, ce) : Y); + k[j] = pe, V[j] = pe - F + } + if (c) { + var ue, le = "x" === j ? D : P, + he = "x" === j ? A : L, + me = k[M], + ve = "y" === M ? "height" : "width", + ye = me + b[le], + ge = me - b[he], + be = -1 !== [D, P].indexOf(w), + we = null != (ue = null == S ? void 0 : S[M]) ? ue : 0, + xe = be ? ye : me - B[ve] - H[ve] - we + R.altAxis, + Oe = be ? me + B[ve] + H[ve] - we - R.altAxis : ge, + je = m && be ? function(e, t, n) { + var r = de(e, t, n); + return r > n ? n : r + }(xe, me, Oe) : de(m ? xe : ye, me, m ? Oe : ge); + k[M] = je, V[M] = je - me + } + t.modifiersData[r] = V + } + }, + requiresIfExists: ["offset"] + }; + var me = { + name: "arrow", + enabled: !0, + phase: "main", + fn: function(e) { + var t, n = e.state, + r = e.name, + o = e.options, + i = n.elements.arrow, + a = n.modifiersData.popperOffsets, + s = C(n.placement), + f = z(s), + c = [P, L].indexOf(s) >= 0 ? "height" : "width"; + if (i && a) { + var p = function(e, t) { + return Y("number" != typeof(e = "function" == typeof e ? e(Object.assign({}, t.rects, { + placement: t.placement + })) : e) ? e : G(e, k)) + }(o.padding, n), + u = g(i), + l = "y" === f ? D : P, + d = "y" === f ? A : L, + h = n.rects.reference[c] + n.rects.reference[f] - a[f] - n.rects.popper[c], + m = a[f] - n.rects.reference[f], + v = E(i), + y = v ? "y" === f ? v.clientHeight || 0 : v.clientWidth || 0 : 0, + b = h / 2 - m / 2, + w = p[l], + x = y - u[c] - p[d], + O = y / 2 - u[c] / 2 + b, + j = de(w, O, x), + M = f; + n.modifiersData[r] = ((t = {})[M] = j, t.centerOffset = j - O, t) + } + }, + effect: function(e) { + var t = e.state, + n = e.options.element, + r = void 0 === n ? "[data-popper-arrow]" : n; + null != r && ("string" != typeof r || (r = t.elements.popper.querySelector(r))) && N(t.elements.popper, r) && (t.elements.arrow = r) + }, + requires: ["popperOffsets"], + requiresIfExists: ["preventOverflow"] + }; + + function ve(e, t, n) { + return void 0 === n && (n = { + x: 0, + y: 0 + }), { + top: e.top - t.height - n.y, + right: e.right - t.width + n.x, + bottom: e.bottom - t.height + n.y, + left: e.left - t.width - n.x + } + } + + function ye(e) { + return [D, L, A, P].some((function(t) { + return e[t] >= 0 + })) + } + var ge = { + name: "hide", + enabled: !0, + phase: "main", + requiresIfExists: ["preventOverflow"], + fn: function(e) { + var t = e.state, + n = e.name, + r = t.rects.reference, + o = t.rects.popper, + i = t.modifiersData.preventOverflow, + a = J(t, { + elementContext: "reference" + }), + s = J(t, { + altBoundary: !0 + }), + f = ve(a, r), + c = ve(s, o, i), + p = ye(f), + u = ye(c); + t.modifiersData[n] = { + referenceClippingOffsets: f, + popperEscapeOffsets: c, + isReferenceHidden: p, + hasPopperEscaped: u + }, t.attributes.popper = Object.assign({}, t.attributes.popper, { + "data-popper-reference-hidden": p, + "data-popper-escaped": u + }) + } + }, + be = Z({ + defaultModifiers: [ee, te, oe, ie] + }), + we = [ee, te, oe, ie, ae, le, he, me, ge], + xe = Z({ + defaultModifiers: we + }); + e.applyStyles = ie, e.arrow = me, e.computeStyles = oe, e.createPopper = xe, e.createPopperLite = be, e.defaultModifiers = we, e.detectOverflow = J, e.eventListeners = ee, e.flip = le, e.hide = ge, e.offset = ae, e.popperGenerator = Z, e.popperOffsets = te, e.preventOverflow = he, Object.defineProperty(e, "__esModule", { + value: !0 + }) +})); \ No newline at end of file