mudlet-map-browser-script 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/package.json +29 -29
- package/dist/assets/index-DN84wJBG.js +0 -2
- package/dist/assets/index-DN84wJBG.js.map +0 -1
- package/dist/embedded.min.js +0 -2
- package/dist/embedded.min.js.map +0 -1
- package/dist/mobile.min.js +0 -2
- package/dist/mobile.min.js.map +0 -1
package/dist/index.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.js","sources":["../node_modules/@andreasremdt/simple-translator/dist/esm/translator.min.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/bootstrap/dist/js/bootstrap.esm.js","../src/preview.ts","../node_modules/@tarekraafat/autocomplete.js/dist/autoComplete.min.js","../src/npc.ts","../src/index.ts","../src/versions.ts"],"sourcesContent":["function t(e){return t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null==n)return;var r,a,o=[],i=!0,u=!1;try{for(n=n.call(t);!(i=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);i=!0);}catch(t){u=!0,a=t}finally{try{i||null==n.return||n.return()}finally{if(u)throw a}}return o}(t,e)||function(t,e){if(!t)return;if(\"string\"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(t,e)}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var o={INVALID_PARAM_LANGUAGE:function(e){return\"Invalid parameter for `language` provided. Expected a string, but got \".concat(t(e),\".\")},INVALID_PARAM_JSON:function(e){return\"Invalid parameter for `json` provided. Expected an object, but got \".concat(t(e),\".\")},EMPTY_PARAM_LANGUAGE:function(){return\"The parameter for `language` can't be an empty string.\"},EMPTY_PARAM_JSON:function(){return\"The parameter for `json` must have at least one key/value pair.\"},INVALID_PARAM_KEY:function(e){return\"Invalid parameter for `key` provided. Expected a string, but got \".concat(t(e),\".\")},NO_LANGUAGE_REGISTERED:function(t){return'No translation for language \"'.concat(t,'\" has been added, yet. Make sure to register that language using the `.add()` method first.')},TRANSLATION_NOT_FOUND:function(t,e){return'No translation found for key \"'.concat(t,'\" in language \"').concat(e,'\". Is there a key/value in your translation file?')},INVALID_PARAMETER_SOURCES:function(e){return\"Invalid parameter for `sources` provided. Expected either a string or an array, but got \".concat(t(e),\".\")},FETCH_ERROR:function(t){return'Could not fetch \"'.concat(t.url,'\": ').concat(t.status,\" (\").concat(t.statusText,\")\")},INVALID_ENVIRONMENT:function(){return\"You are trying to execute the method `translatePageTo()`, which is only available in the browser. Your environment is most likely Node.js\"},MODULE_NOT_FOUND:function(t){return t},MISMATCHING_ATTRIBUTES:function(t,e,n){return'The attributes \"data-i18n\" and \"data-i18n-attr\" must contain the same number of keys.\\n\\nValues in `data-i18n`: ('.concat(t.length,\") `\").concat(t.join(\" \"),\"`\\nValues in `data-i18n-attr`: (\").concat(e.length,\") `\").concat(e.join(\" \"),\"`\\n\\nThe HTML element is:\\n\").concat(n.outerHTML)},INVALID_OPTIONS:function(e){return\"Invalid config passed to the `Translator` constructor. Expected an object, but got \".concat(t(e),\". Using default config instead.\")}};function i(t){return function(e){if(t)try{for(var n=o[e],a=arguments.length,i=new Array(a>1?a-1:0),u=1;u<a;u++)i[u-1]=arguments[u];throw new TypeError(n?n.apply(void 0,i):\"Unhandled Error\")}catch(t){var s=t.stack.split(/\\n/g)[1],l=s.split(/@/),c=r(l,2),g=c[0],f=c[1];console.error(\"\".concat(t.message,\"\\n\\nThis error happened in the method `\").concat(g,\"` from: `\").concat(f,\"`.\\n\\nIf you don't want to see these error messages, turn off debugging by passing `{ debug: false }` to the constructor.\\n\\nError code: \").concat(e,\"\\n\\nCheck out the documentation for more details about the API:\\nhttps://github.com/andreasremdt/simple-translator#usage\\n \"))}}}var u=function(){function r(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,r),this.debug=i(!0),(\"object\"!=t(n)||Array.isArray(n))&&(this.debug(\"INVALID_OPTIONS\",n),n={}),this.languages=new Map,this.config=Object.assign(r.defaultConfig,n);var a=this.config,o=a.debug,u=a.registerGlobally,s=a.detectLanguage;this.debug=i(o),u&&(this._globalObject[u]=this.translateForKey.bind(this)),s&&\"browser\"==this._env&&this._detectLanguage()}var a,o,u;return a=r,o=[{key:\"_globalObject\",get:function(){return\"browser\"==this._env?window:global}},{key:\"_env\",get:function(){return\"undefined\"!=typeof window?\"browser\":\"undefined\"!=typeof module&&module.exports?\"node\":\"browser\"}},{key:\"_detectLanguage\",value:function(){var t=window.localStorage?localStorage.getItem(this.config.persistKey):void 0;if(t)this.config.defaultLanguage=t;else{var e=navigator.languages?navigator.languages[0]:navigator.language;this.config.defaultLanguage=e.substr(0,2)}}},{key:\"_getValueFromJSON\",value:function(t,e){var n=this.languages.get(e);return t.split(\".\").reduce((function(t,e){return t?t[e]:null}),n)}},{key:\"_replace\",value:function(t,e){var n,r,a=this,o=null===(n=t.getAttribute(\"data-i18n\"))||void 0===n?void 0:n.split(/\\s/g),i=null==t||null===(r=t.getAttribute(\"data-i18n-attr\"))||void 0===r?void 0:r.split(/\\s/g);i&&o.length!=i.length&&this.debug(\"MISMATCHING_ATTRIBUTES\",o,i,t),o.forEach((function(n,r){var o=a._getValueFromJSON(n,e),u=i?i[r]:\"innerHTML\";o?\"innerHTML\"==u?t[u]=o:t.setAttribute(u,o):a.debug(\"TRANSLATION_NOT_FOUND\",n,e)}))}},{key:\"translatePageTo\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.config.defaultLanguage;if(\"node\"!=this._env)if(\"string\"==typeof e)if(0!=e.length)if(this.languages.has(e)){var n=\"string\"==typeof this.config.selector?Array.from(document.querySelectorAll(this.config.selector)):this.config.selector;n.length&&n.length>0?n.forEach((function(n){return t._replace(n,e)})):null==n.length&&this._replace(n,e),this._currentLanguage=e,document.documentElement.lang=e,this.config.persist&&window.localStorage&&localStorage.setItem(this.config.persistKey,e)}else this.debug(\"NO_LANGUAGE_REGISTERED\",e);else this.debug(\"EMPTY_PARAM_LANGUAGE\");else this.debug(\"INVALID_PARAM_LANGUAGE\",e);else this.debug(\"INVALID_ENVIRONMENT\")}},{key:\"translateForKey\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.config.defaultLanguage;if(\"string\"!=typeof t)return this.debug(\"INVALID_PARAM_KEY\",t),null;if(!this.languages.has(e))return this.debug(\"NO_LANGUAGE_REGISTERED\",e),null;var n=this._getValueFromJSON(t,e);return n||(this.debug(\"TRANSLATION_NOT_FOUND\",t,e),null)}},{key:\"add\",value:function(e,n){return\"string\"!=typeof e?(this.debug(\"INVALID_PARAM_LANGUAGE\",e),this):0==e.length?(this.debug(\"EMPTY_PARAM_LANGUAGE\"),this):Array.isArray(n)||\"object\"!=t(n)?(this.debug(\"INVALID_PARAM_JSON\",n),this):0==Object.keys(n).length?(this.debug(\"EMPTY_PARAM_JSON\"),this):(this.languages.set(e,n),this)}},{key:\"remove\",value:function(t){return\"string\"!=typeof t?(this.debug(\"INVALID_PARAM_LANGUAGE\",t),this):0==t.length?(this.debug(\"EMPTY_PARAM_LANGUAGE\"),this):(this.languages.delete(t),this)}},{key:\"fetch\",value:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){var e=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!Array.isArray(t)&&\"string\"!=typeof t)return this.debug(\"INVALID_PARAMETER_SOURCES\",t),null;Array.isArray(t)||(t=[t]);var r=t.map((function(t){var n=t.replace(/\\.json$/,\"\").replace(/^\\//,\"\"),r=e.config.filesLocation.replace(/\\/$/,\"\");return\"\".concat(r,\"/\").concat(n,\".json\")}));return\"browser\"==this._env?Promise.all(r.map((function(t){return fetch(t)}))).then((function(t){return Promise.all(t.map((function(t){if(t.ok)return t.json();e.debug(\"FETCH_ERROR\",t)})))})).then((function(r){return r=r.filter((function(t){return t})),n&&r.forEach((function(n,r){e.add(t[r],n)})),r.length>1?r:r[0]})):\"node\"==this._env?new Promise((function(a){var o=[];r.forEach((function(r,a){try{var i=JSON.parse(require(\"fs\").readFileSync(process.cwd()+r,\"utf-8\"));n&&e.add(t[a],i),o.push(i)}catch(t){e.debug(\"MODULE_NOT_FOUND\",t.message)}})),a(o.length>1?o:o[0])})):void 0}))},{key:\"setDefaultLanguage\",value:function(t){if(\"string\"==typeof t){if(0!=t.length)return this.languages.has(t)?void(this.config.defaultLanguage=t):(this.debug(\"NO_LANGUAGE_REGISTERED\",t),null);this.debug(\"EMPTY_PARAM_LANGUAGE\")}else this.debug(\"INVALID_PARAM_LANGUAGE\",t)}},{key:\"currentLanguage\",get:function(){return this._currentLanguage||this.config.defaultLanguage}},{key:\"defaultLanguage\",get:function(){return this.config.defaultLanguage}}],u=[{key:\"defaultConfig\",get:function(){return{defaultLanguage:\"en\",detectLanguage:!0,selector:\"[data-i18n]\",debug:!1,registerGlobally:\"__\",persist:!1,persistKey:\"preferred_language\",filesLocation:\"/i18n\"}}}],o&&n(a.prototype,o),u&&n(a,u),r}();export{u as default};\n//# sourceMappingURL=translator.min.js.map\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*!\n * Bootstrap v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n\n return null;\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, {\n delegateTarget: target\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n let evt = new Event(event, {\n bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n\n get() {\n return value;\n }\n\n });\n }\n }\n\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return { ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3';\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n } // Public\n\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n } // Static\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n\n this._initEvents();\n } // Getters\n\n\n static get Default() {\n return Default$c;\n }\n\n static get DefaultType() {\n return DefaultType$c;\n }\n\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n\n\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n\n\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$b;\n }\n\n static get DefaultType() {\n return DefaultType$b;\n }\n\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n carousel.prev();\n\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get DefaultType() {\n return DefaultType$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n\n for (const element of children) {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get DefaultType() {\n return DefaultType$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n } // Public\n\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n } // Getters\n\n\n static get Default() {\n return Default$7;\n }\n\n static get DefaultType() {\n return DefaultType$7;\n }\n\n static get NAME() {\n return NAME$8;\n } // Public\n\n\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$6;\n }\n\n static get DefaultType() {\n return DefaultType$6;\n }\n\n static get NAME() {\n return NAME$7;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n\n if (this._config.keyboard) {\n event.preventDefault();\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get DefaultType() {\n return DefaultType$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.add(CLASS_NAME_HIDING);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n } // Check if a regular expression validates the attribute.\n\n\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n } // Getters\n\n\n static get Default() {\n return Default$4;\n }\n\n static get DefaultType() {\n return DefaultType$4;\n }\n\n static get NAME() {\n return NAME$5;\n } // Public\n\n\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n\n this._config.content = { ...this._config.content,\n ...content\n };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n } // Private\n\n\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element, config); // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null; // Protected\n\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n }\n\n static get NAME() {\n return NAME$4;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n\n if (this._isShown()) {\n this._leave();\n\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n\n this._disposePopper();\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const {\n container\n } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n this._disposePopper();\n }\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n\n\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n\n if (this._isShown()) {\n this._disposePopper();\n\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({ ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n\n\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = { ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = { ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n }\n\n static get NAME() {\n return NAME$3;\n } // Overrides\n\n\n _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get DefaultType() {\n return DefaultType$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n this._initializeTargetsAndObservables();\n\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n this._observer.disconnect();\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n } // The logic of selection\n\n\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // todo:v6: could be only `tab`\n\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n\n if (!this._parent) {\n return; // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n } // Set up initial aria attributes\n\n\n this._setInitialAttributes(this._parent, this._getChildren());\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n } // Getters\n\n\n static get NAME() {\n return NAME$1;\n } // Public\n\n\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n\n if (this._elemIsActive(innerElem)) {\n return;\n } // Search for active tab on same parent to deactivate it\n\n\n const active = this._getActiveElem();\n\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n\n this._deactivate(active, innerElem);\n\n this._activate(innerElem, active);\n } // Private\n\n\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n this._activate(getElementFromSelector(element)); // Search and activate/show the proper section\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n\n this._toggleDropDown(element, true);\n\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n\n this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n\n this._toggleDropDown(element, false);\n\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {\n return;\n }\n\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n\n event.preventDefault();\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true);\n\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n\n const isActive = this._elemIsActive(child);\n\n const outerElem = this._getOuterElement(child);\n\n child.setAttribute('aria-selected', isActive);\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too\n\n\n this._setInitialAttributesOnTargetPanel(child);\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child);\n\n if (!target) {\n return;\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n } // Try to get the inner element (usually the .nav-link)\n\n\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n } // Try to get the outer element (usually the .nav-item)\n\n\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n Tab.getOrCreateInstance(this).show();\n});\n/**\n * Initialize on focus\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n\n this._setListeners();\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._maybeScheduleHide();\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n hide() {\n if (!this.isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n dispose() {\n this._clearTimeout();\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n super.dispose();\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n } // Private\n\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n\n if (isInteracting) {\n this._clearTimeout();\n\n return;\n }\n\n const nextElement = event.relatedTarget;\n\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n\n this._maybeScheduleHide();\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Toast);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","/**\r\n * Preview minimap overlay for the browser-based map viewer.\r\n *\r\n * Shows a low-resolution snapshot of the current area with a viewport\r\n * indicator that reflects the current zoom level and pan position.\r\n */\r\n\r\nimport type {Renderer, ViewportBounds} from \"mudlet-map-renderer\";\r\n\r\nconst MAX_SIZE = 400;\r\n\r\nexport class Preview {\r\n private readonly map: HTMLDivElement;\r\n private readonly preview: HTMLElement;\r\n private readonly previewBg: HTMLElement;\r\n private readonly previewPan: HTMLElement;\r\n private readonly pageControls: any;\r\n\r\n private areaBounds: ViewportBounds | null = null;\r\n private timeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n constructor(map: HTMLDivElement, pageControls: any) {\r\n this.map = map;\r\n this.preview = document.querySelector(\".preview-container\") as HTMLElement;\r\n this.previewBg = document.querySelector(\".preview\") as HTMLElement;\r\n this.previewPan = document.querySelector(\".preview-pan\") as HTMLElement;\r\n this.pageControls = pageControls;\r\n\r\n this.map.addEventListener(\"pan\", (() => {\r\n this.update();\r\n }) as EventListener);\r\n }\r\n\r\n /**\r\n * @param bounds Viewport bounds captured right after fitArea().\r\n * @param pngDataUrl PNG captured at the same fitArea() state, or null.\r\n */\r\n init(bounds: ViewportBounds, pngDataUrl: string | null): void {\r\n this.areaBounds = bounds;\r\n\r\n const areaW = bounds.maxX - bounds.minX;\r\n const areaH = bounds.maxY - bounds.minY;\r\n if (areaW <= 0 || areaH <= 0) {\r\n this.preview.style.opacity = \"0\";\r\n return;\r\n }\r\n\r\n // Size the preview box to match the viewport aspect ratio\r\n const aspect = areaW / areaH;\r\n let boxW: number, boxH: number;\r\n if (aspect >= 1) {\r\n boxW = MAX_SIZE;\r\n boxH = MAX_SIZE / aspect;\r\n } else {\r\n boxH = MAX_SIZE;\r\n boxW = MAX_SIZE * aspect;\r\n }\r\n this.preview.style.width = `${Math.round(boxW)}px`;\r\n this.preview.style.height = `${Math.round(boxH)}px`;\r\n\r\n if (pngDataUrl) {\r\n this.previewBg.style.backgroundImage = `url(${pngDataUrl})`;\r\n this.previewBg.style.backgroundSize = \"100% 100%\";\r\n this.previewBg.style.opacity = \"0.6\";\r\n } else {\r\n this.previewBg.style.backgroundImage = \"\";\r\n this.previewBg.style.opacity = \"\";\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n update(): void {\r\n if (!this.pageControls.pageSettings?.preview) {\r\n return;\r\n }\r\n\r\n this.preview.style.opacity = \"1\";\r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.preview.style.opacity = \"0\";\r\n }, 4000);\r\n\r\n const renderer: Renderer = this.pageControls.renderer;\r\n if (!renderer || !this.areaBounds) {\r\n return;\r\n }\r\n\r\n const viewport = renderer.getViewportBounds();\r\n\r\n const areaW = this.areaBounds.maxX - this.areaBounds.minX;\r\n const areaH = this.areaBounds.maxY - this.areaBounds.minY;\r\n if (areaW <= 0 || areaH <= 0) return;\r\n\r\n const left = ((viewport.minX - this.areaBounds.minX) / areaW) * 100;\r\n const top = ((viewport.minY - this.areaBounds.minY) / areaH) * 100;\r\n const width = ((viewport.maxX - viewport.minX) / areaW) * 100;\r\n const height = ((viewport.maxY - viewport.minY) / areaH) * 100;\r\n\r\n const clampedLeft = Math.max(0, Math.min(left, 100));\r\n const clampedTop = Math.max(0, Math.min(top, 100));\r\n const clampedRight = Math.min(100, left + width);\r\n const clampedBottom = Math.min(100, top + height);\r\n\r\n this.previewPan.style.left = `${clampedLeft}%`;\r\n this.previewPan.style.top = `${clampedTop}%`;\r\n this.previewPan.style.width = `${Math.max(0, clampedRight - clampedLeft)}%`;\r\n this.previewPan.style.height = `${Math.max(0, clampedBottom - clampedTop)}%`;\r\n }\r\n}\r\n","var e,t;e=this,t=function(){\"use strict\";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?e(Object(i),!0).forEach((function(e){r(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(e)}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function o(e,t){if(e){if(\"string\"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u=function(e){return\"string\"==typeof e?document.querySelector(e):e()},a=function(e,t){var n=\"string\"==typeof e?document.createElement(e):e;for(var r in t){var i=t[r];if(\"inside\"===r)i.append(n);else if(\"dest\"===r)u(i[0]).insertAdjacentElement(i[1],n);else if(\"around\"===r){var o=i;o.parentNode.insertBefore(n,o),n.append(o),null!=o.getAttribute(\"autofocus\")&&o.focus()}else r in n?n[r]=i:n.setAttribute(r,i)}return n},c=function(e,t){return e=String(e).toLowerCase(),t?e.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\").normalize(\"NFC\"):e},l=function(e,n){return a(\"mark\",t({innerHTML:e},\"string\"==typeof n&&{class:n})).outerHTML},f=function(e,t){t.input.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:t.feedback,cancelable:!0}))},p=function(e,t,n){var r=n||{},i=r.mode,o=r.diacritics,s=r.highlight,u=c(t,o);if(t=String(t),e=c(e,o),\"loose\"===i){var a=(e=e.replace(/ /g,\"\")).length,f=0,p=Array.from(t).map((function(t,n){return f<a&&u[n]===e[f]&&(t=s?l(t,s):t,f++),t})).join(\"\");if(f===a)return p}else{var d=u.indexOf(e);if(~d)return e=t.substring(d,d+e.length),d=s?t.replace(e,l(e,s)):t}},d=function(e,t){return new Promise((function(n,r){var i;return(i=e.data).cache&&i.store?n():new Promise((function(e,n){return\"function\"==typeof i.src?i.src(t).then(e,n):e(i.src)})).then((function(t){try{return e.feedback=i.store=t,f(\"response\",e),n()}catch(e){return r(e)}}),r)}))},h=function(e,t){var n=t.data,r=t.searchEngine,i=[];n.store.forEach((function(s,u){var a=function(n){var o=n?s[n]:s,u=\"function\"==typeof r?r(e,o):p(e,o,{mode:r,diacritics:t.diacritics,highlight:t.resultItem.highlight});if(u){var a={match:u,value:s};n&&(a.key=n),i.push(a)}};if(n.keys){var c,l=function(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,s=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(e){l.e(e)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,t.resultsList.maxResults);t.feedback={query:e,matches:i,results:s},f(\"results\",t)},m=\"aria-expanded\",b=\"aria-activedescendant\",y=\"aria-selected\",v=function(e,n){e.feedback.selection=t({index:n},e.feedback.results[n])},g=function(e){e.isOpen||((e.wrapper||e.input).setAttribute(m,!0),e.list.removeAttribute(\"hidden\"),e.isOpen=!0,f(\"open\",e))},w=function(e){e.isOpen&&((e.wrapper||e.input).setAttribute(m,!1),e.input.setAttribute(b,\"\"),e.list.setAttribute(\"hidden\",\"\"),e.isOpen=!1,f(\"close\",e))},O=function(e,t){var n=t.resultItem,r=t.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(\" \");if(t.isOpen&&r.length){var s,u,a=t.cursor;e>=r.length&&(e=0),e<0&&(e=r.length-1),t.cursor=e,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[e].setAttribute(y,!0),o&&(s=r[e].classList).add.apply(s,i(o)),t.input.setAttribute(b,r[t.cursor].id),t.list.scrollTop=r[e].offsetTop-t.list.clientHeight+r[e].clientHeight+5,t.feedback.cursor=t.cursor,v(t,e),f(\"navigate\",t)}},A=function(e){O(e.cursor+1,e)},k=function(e){O(e.cursor-1,e)},L=function(e,t,n){(n=n>=0?n:e.cursor)<0||(e.feedback.event=t,v(e,n),f(\"selection\",e),w(e))};function j(e,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=e.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(e,t,n){return t?t(e):e.length>=n}(s=e.query?e.query(s):s,e.trigger,e.threshold)?d(e,s).then((function(n){try{return e.feedback instanceof Error?i():(h(s,e),e.resultsList&&function(e){var n=e.resultsList,r=e.list,i=e.resultItem,o=e.feedback,s=o.matches,u=o.results;if(e.cursor=-1,r.innerHTML=\"\",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(e,n){var r=a(i.tag,t({id:\"\".concat(i.id,\"_\").concat(n),role:\"option\",innerHTML:e.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,e)})),r.append(c),n.element&&n.element(r,o),g(e)}else w(e)}(e),c.call(r))}catch(e){return o(e)}}),o):(w(e),c.call(r));function c(){return i()}}))}var S=function(e,t){for(var n in e)for(var r in e[n])t(n,r)},T=function(e){var n,r,i,o=e.events,s=(n=function(){return j(e)},r=e.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=e.events=t({input:t({},o&&o.input)},e.resultsList&&{list:o?t({},o.list):{}}),a={input:{input:function(){s()},keydown:function(t){!function(e,t){switch(e.keyCode){case 40:case 38:e.preventDefault(),40===e.keyCode?A(t):k(t);break;case 13:t.submit||e.preventDefault(),t.cursor>=0&&L(t,e);break;case 9:t.resultsList.tabSelect&&t.cursor>=0&&L(t,e);break;case 27:t.input.value=\"\",w(t)}}(t,e)},blur:function(){w(e)}},list:{mousedown:function(e){e.preventDefault()},click:function(t){!function(e,t){var n=t.resultItem.tag.toUpperCase(),r=Array.from(t.list.querySelectorAll(n)),i=e.target.closest(n);i&&i.nodeName===n&&L(t,e,r.indexOf(i))}(t,e)}}};S(a,(function(t,n){(e.resultsList||\"input\"===n)&&(u[t][n]||(u[t][n]=a[t][n]))})),S(u,(function(t,n){e[t].addEventListener(n,u[t][n])}))};function E(e){var n=this;return new Promise((function(r,i){var o,s,u;if(o=e.placeHolder,u={role:\"combobox\",\"aria-owns\":(s=e.resultsList).id,\"aria-haspopup\":!0,\"aria-expanded\":!1},a(e.input,t(t({\"aria-controls\":s.id,\"aria-autocomplete\":\"both\"},o&&{placeholder:o}),!e.wrapper&&t({},u))),e.wrapper&&(e.wrapper=a(\"div\",t({around:e.input,class:e.name+\"_wrapper\"},u))),s&&(e.list=a(s.tag,t({dest:[s.destination,s.position],id:s.id,role:\"listbox\",hidden:\"hidden\"},s.class&&{class:s.class}))),T(e),e.data.cache)return d(e).then((function(e){try{return c.call(n)}catch(e){return i(e)}}),i);function c(){return f(\"init\",e),r()}return c.call(n)}))}function x(e){var t=e.prototype;t.init=function(){E(this)},t.start=function(e){j(this,e)},t.unInit=function(){if(this.wrapper){var e=this.wrapper.parentNode;e.insertBefore(this.input,this.wrapper),e.removeChild(this.wrapper)}var t;S((t=this).events,(function(e,n){t[e].removeEventListener(n,t.events[e][n])}))},t.open=function(){g(this)},t.close=function(){w(this)},t.goTo=function(e){O(e,this)},t.next=function(){A(this)},t.previous=function(){k(this)},t.select=function(e){L(this,null,e)},t.search=function(e,t,n){return p(e,t,n)}}return function e(t){this.options=t,this.id=e.instances=(e.instances||0)+1,this.name=\"autoComplete\",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:\"afterend\",tag:\"ul\",maxResults:5},this.resultItem={tag:\"li\"},function(e){var t=e.name,r=e.options,i=e.resultsList,o=e.resultItem;for(var s in r)if(\"object\"===n(r[s]))for(var a in e[s]||(e[s]={}),r[s])e[s][a]=r[s][a];else e[s]=r[s];e.selector=e.selector||\"#\"+t,i.destination=i.destination||e.selector,i.id=i.id||t+\"_list_\"+e.id,o.id=o.id||t+\"_result\",e.input=u(e.selector)}(this),x.call(this,e),E(this)}},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).autoComplete=t();\n","import autoComplete from \"@tarekraafat/autocomplete.js\";\r\n\r\ninterface Npc {\r\n name: string;\r\n loc: number;\r\n}\r\n\r\ntype RoomNpcMap = Record<number, string[]>;\r\ntype NpcLocationMap = Record<string, number[]>;\r\n\r\nconst npcs: NpcLocationMap = {};\r\n\r\nconst searchFieldSelector = \"#search-id\";\r\nconst defaultMaxResults = 10;\r\nlet maxResults = defaultMaxResults;\r\n\r\nconst searchField = document.querySelector<HTMLInputElement>(searchFieldSelector);\r\n\r\nexport const downloadNpc = async (): Promise<RoomNpcMap> => {\r\n const roomNpc: RoomNpcMap = {};\r\n const url = searchField?.getAttribute(\"data-npc\");\r\n if (!url) {\r\n return roomNpc;\r\n }\r\n\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch NPCs: ${response.status} ${response.statusText}`);\r\n }\r\n\r\n const data: Npc[] = await response.json();\r\n data.forEach((npc) => {\r\n if (!roomNpc[npc.loc]) {\r\n roomNpc[npc.loc] = [];\r\n }\r\n roomNpc[npc.loc].push(npc.name);\r\n npcs[npc.name] =\r\n npcs[npc.name] && npcs[npc.name].indexOf(npc.loc) === -1\r\n ? npcs[npc.name].concat([npc.loc])\r\n : [npc.loc];\r\n });\r\n\r\n return roomNpc;\r\n};\r\n\r\nexport const findNpc = (name: string): number[] | false => {\r\n return npcs[name] ?? false;\r\n};\r\n\r\nconst ac = new autoComplete({\r\n selector: searchFieldSelector,\r\n data: {\r\n src: async () => {\r\n await downloadNpc();\r\n const items = Object.keys(npcs).map((item) => {\r\n return { value: npcs[item], text: item };\r\n });\r\n return items;\r\n },\r\n keys: [\"text\"],\r\n cache: true,\r\n },\r\n resultItem: {\r\n tag: \"a\",\r\n class: \"dropdown-item\",\r\n selected: \"active\",\r\n highlight: true,\r\n },\r\n resultsList: {\r\n tag: \"div\",\r\n class: \"npc-autocomplete dropdown-menu show\",\r\n maxResults: undefined,\r\n destination: \"#search .advancedAutoComplete\",\r\n },\r\n submit: false,\r\n});\r\n\r\nlet shouldNavigate = true;\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"selection\", function (event: any) {\r\n if (event.detail.selection.value instanceof Function) {\r\n event.detail.selection.value();\r\n } else {\r\n if (event.detail.selection.value && searchField) {\r\n searchField.value = event.detail.selection.value.value;\r\n }\r\n searchField?.form?.requestSubmit();\r\n }\r\n});\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"keyup\", ((event: KeyboardEvent) => {\r\n if (event.keyCode === 13) {\r\n if (shouldNavigate) {\r\n ac.select(0);\r\n }\r\n if (searchField && searchField.value.trim() !== \"\" && !isNaN(Number(searchField.value))) {\r\n searchField.form?.requestSubmit();\r\n }\r\n }\r\n}) as EventListener);\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"navigate\", () => {\r\n shouldNavigate = false;\r\n});\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"results\", function (event: any) {\r\n let list = event.detail.results;\r\n\r\n const length = list.length;\r\n if (length > 0) {\r\n list.sort((a: any, b: any) => {\r\n const aText: string = a.value.text.toLowerCase();\r\n const bText: string = b.value.text.toLowerCase();\r\n const query: string = event.detail.query.toLowerCase();\r\n\r\n if (aText.startsWith(query) && !bText.startsWith(query)) {\r\n return -1;\r\n } else if (!aText.startsWith(event.detail.query) && bText.startsWith(query)) {\r\n return 1;\r\n } else {\r\n return aText.localeCompare(bText);\r\n }\r\n });\r\n list = list.slice(0, maxResults);\r\n if (length > maxResults) {\r\n list.push({\r\n value: function () {\r\n const newMax = maxResults + 10;\r\n ac.start();\r\n maxResults = newMax;\r\n },\r\n match: \"Więcej...\",\r\n });\r\n }\r\n }\r\n\r\n event.detail.results = list;\r\n});\r\n\r\nsearchField?.addEventListener(\"input\", () => {\r\n maxResults = defaultMaxResults;\r\n});\r\n","import Translator from \"@andreasremdt/simple-translator\";\r\nimport {Modal, Toast} from \"bootstrap\";\r\nimport {MapReader, Renderer, createSettings, PathFinder} from \"mudlet-map-renderer\";\r\nimport type {Settings, RoomClickEventDetail, RoomContextMenuEventDetail, AreaExitClickEventDetail, ZoomChangeEventDetail} from \"mudlet-map-renderer\";\r\nimport {Preview} from \"./preview\";\r\nimport {downloadTags, downloadVersion} from \"./versions\";\r\n\r\nconst rainbow = [\"#CC99C9\", \"#9EC1CF\", \"#9EE09E\", \"#FDFD97\", \"#FEB144\", \"#FF6663\"];\r\nlet pathPick = 0;\r\n\r\nconst defaultLanguage = document.querySelector(\"html\")!.getAttribute(\"lang\") ?? \"pl\";\r\n\r\nconst translator = new Translator({\r\n defaultLanguage: defaultLanguage,\r\n detectLanguage: false,\r\n selector: \"[data-i18n]\",\r\n debug: false,\r\n registerGlobally: \"__\",\r\n persist: true,\r\n persistKey: \"preferred_language\",\r\n filesLocation: \"i18n\",\r\n});\r\n(window as any).translator = translator;\r\n\r\nif (location.hostname !== \"\") {\r\n translator\r\n .fetch([defaultLanguage], false)\r\n .then((json: any) => {\r\n const defaultLang: Record<string, string> = {};\r\n document.querySelectorAll(\"[data-i18n]\").forEach(item => {\r\n defaultLang[item.getAttribute(\"data-i18n\")!] = item.innerHTML;\r\n });\r\n translator.add(defaultLanguage, {...defaultLang, ...json});\r\n })\r\n .catch((e: Error) => console.log(`Cannot fetch translations. ${e.message}`));\r\n\r\n translator\r\n .fetch([\"en\"])\r\n .then(() => {\r\n translator.translatePageTo();\r\n })\r\n .catch((e: Error) => console.log(`Cannot fetch translations. ${e.message}`));\r\n} else if (typeof translations !== \"undefined\") {\r\n const defaultLang: Record<string, string> = {};\r\n document.querySelectorAll(\"[data-i18n]\").forEach(item => {\r\n defaultLang[item.getAttribute(\"data-i18n\")!] = item.innerHTML;\r\n });\r\n translator.add(\"pl\", {...defaultLang, ...translations.pl});\r\n translator.add(\"en\", translations.en);\r\n}\r\n\r\nconst urlSearchParams = new URLSearchParams(window.location.search);\r\nconst params = Object.fromEntries(urlSearchParams.entries());\r\nconst url = window.location.origin + window.location.pathname;\r\n\r\nconst svgToDataURL = (svgStr: string): string => {\r\n const encoded = encodeURIComponent(svgStr).replace(/'/g, \"%27\").replace(/\"/g, \"%22\");\r\n return \"data:image/svg+xml,\" + encoded;\r\n};\r\n\r\nfunction toHexColor(color: string): string {\r\n if (color.startsWith(\"#\")) return color;\r\n const match = color.match(/rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/);\r\n if (match) {\r\n const r = parseInt(match[1]).toString(16).padStart(2, \"0\");\r\n const g = parseInt(match[2]).toString(16).padStart(2, \"0\");\r\n const b = parseInt(match[3]).toString(16).padStart(2, \"0\");\r\n return `#${r}${g}${b}`;\r\n }\r\n return color;\r\n}\r\n\r\nimport {downloadNpc, findNpc} from \"./npc\";\r\nlet roomNpc: Record<number, string[]> = {};\r\ndownloadNpc().then(value => (roomNpc = value));\r\n\r\nlet position: {area: number; zIndex: number} | null = null;\r\nconst storedPosition = localStorage.getItem(\"position\");\r\nif (storedPosition) {\r\n position = JSON.parse(storedPosition);\r\n}\r\n\r\ninterface PageSettings {\r\n preview: boolean;\r\n keepZoomLevel: boolean;\r\n disableKeyBinds: boolean;\r\n}\r\n\r\ninterface PathData {\r\n locations: number[];\r\n color: string;\r\n}\r\n\r\nclass PageControls {\r\n map: HTMLDivElement;\r\n reader: MapReader;\r\n renderer: Renderer;\r\n pathFinder: PathFinder;\r\n settings: Settings;\r\n pageSettings: PageSettings;\r\n select: HTMLSelectElement;\r\n infoBox: HTMLElement;\r\n levels: HTMLElement;\r\n saveImageButton: HTMLElement | null;\r\n saveSvgImageButton: HTMLElement | null;\r\n copyImageButton: HTMLElement | null;\r\n zoomButtons: NodeListOf<HTMLElement>;\r\n toastContainer: HTMLElement;\r\n searchModal: HTMLElement;\r\n search: HTMLFormElement;\r\n findPathForm: HTMLFormElement | null;\r\n findPathModal: HTMLElement | null;\r\n helpModal: HTMLElement;\r\n zoomBar: HTMLElement;\r\n settingsModal: HTMLElement;\r\n settingsForm: HTMLFormElement;\r\n resetSettingsButton: HTMLElement;\r\n versions: HTMLSelectElement | null;\r\n releaseDescription: HTMLElement;\r\n versionBadge: HTMLElement;\r\n languageSelector: HTMLElement;\r\n currentLanguageFlag: HTMLElement;\r\n pathBox: HTMLElement;\r\n areaModal: HTMLElement | null;\r\n preview: Preview;\r\n areaId: number = 0;\r\n zIndex: number = 0;\r\n zoom: number = 1;\r\n selectedRoom: MapData.Room | null = null;\r\n paths: Record<string, PathData> = {};\r\n progressTimeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n constructor(reader: MapReader) {\r\n this.map = document.querySelector(\"#map\") as HTMLDivElement;\r\n this.reader = reader;\r\n this.settings = createSettings();\r\n this.pathFinder = new PathFinder(this.reader);\r\n\r\n this.pageSettings = {\r\n preview: true,\r\n keepZoomLevel: false,\r\n disableKeyBinds: false,\r\n };\r\n\r\n const loaded = localStorage.getItem(\"settings\");\r\n if (loaded) {\r\n const parsed = JSON.parse(loaded);\r\n // Migrate old field names\r\n if (parsed.mapBackground !== undefined && parsed.backgroundColor === undefined) {\r\n parsed.backgroundColor = parsed.mapBackground;\r\n }\r\n if (parsed.linesColor !== undefined && parsed.lineColor === undefined) {\r\n parsed.lineColor = parsed.linesColor;\r\n }\r\n if (parsed.exitsSize !== undefined && parsed.lineWidth === undefined) {\r\n parsed.lineWidth = parsed.exitsSize;\r\n }\r\n if (parsed.isRound !== undefined && parsed.roomShape === undefined) {\r\n parsed.roomShape = parsed.isRound ? \"circle\" : \"rectangle\";\r\n }\r\n // Scale old integer roomSize values to new float scale\r\n if (parsed.roomSize !== undefined && parsed.roomSize > 5) {\r\n parsed.roomSize = parsed.roomSize / 25;\r\n }\r\n if (parsed.lineWidth !== undefined && parsed.lineWidth > 1) {\r\n parsed.lineWidth = parsed.lineWidth / 100;\r\n }\r\n // Remove obsolete fields before applying\r\n delete parsed.mapBackground;\r\n delete parsed.linesColor;\r\n delete parsed.exitsSize;\r\n delete parsed.isRound;\r\n delete parsed.optimizeDrag;\r\n delete parsed.showLabels;\r\n // Remove old grid defaults so new ones take effect\r\n delete parsed.gridColor;\r\n delete parsed.gridLineWidth;\r\n // Reset areaName to pick up new default (true)\r\n delete parsed.areaName;\r\n\r\n // Apply renderer settings\r\n const defaults = createSettings();\r\n for (const key of Object.keys(defaults)) {\r\n if (parsed[key] !== undefined) {\r\n (this.settings as any)[key] = parsed[key];\r\n }\r\n }\r\n // Apply page settings\r\n if (parsed.preview !== undefined) this.pageSettings.preview = parsed.preview;\r\n if (parsed.keepZoomLevel !== undefined) this.pageSettings.keepZoomLevel = parsed.keepZoomLevel;\r\n if (parsed.disableKeyBinds !== undefined) this.pageSettings.disableKeyBinds = parsed.disableKeyBinds;\r\n }\r\n\r\n this.map.addEventListener(\"roomclick\", ((event: CustomEvent<RoomClickEventDetail>) => {\r\n const room = this.reader.getRoom(event.detail.roomId);\r\n if (room) {\r\n this.selectRoom(room);\r\n }\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"zoom\", ((event: CustomEvent<ZoomChangeEventDetail>) => {\r\n this.adjustZoomBar(event.detail);\r\n this.zoom = event.detail.zoom;\r\n this.preview.update();\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"mapclick\", () => {\r\n this.deselectRoom();\r\n });\r\n\r\n this.map.addEventListener(\"roomcontextmenu\", ((event: CustomEvent<RoomContextMenuEventDetail>) => {\r\n this.renderer.centerOn(event.detail.roomId);\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"areaexitclick\", ((event: CustomEvent<AreaExitClickEventDetail>) => {\r\n setTimeout(() => {\r\n if (event.detail.targetRoomId) {\r\n this.findRoom(event.detail.targetRoomId);\r\n }\r\n });\r\n }) as EventListener);\r\n\r\n this.select = document.querySelector(\"#area\") as HTMLSelectElement;\r\n this.infoBox = document.querySelector(\".info-box\")!;\r\n this.levels = document.querySelector(\".levels\")!;\r\n this.saveImageButton = document.querySelector(\".save-image\");\r\n this.saveSvgImageButton = document.querySelector(\".save-image-svg\");\r\n this.copyImageButton = document.querySelector(\".copy-image\");\r\n this.zoomButtons = document.querySelectorAll(\".zoom-controls .btn\");\r\n this.toastContainer = document.querySelector(\".toast\")!;\r\n this.searchModal = document.querySelector(\"#search\")!;\r\n this.search = document.querySelector(\".search-form\") as HTMLFormElement;\r\n this.findPathForm = document.querySelector(\".findpath-form\") as HTMLFormElement | null;\r\n this.findPathModal = document.querySelector(\"#findpath\");\r\n this.helpModal = document.querySelector(\"#help\")!;\r\n this.zoomBar = document.querySelector(\".progress-container\")!;\r\n this.settingsModal = document.querySelector(\"#settings\")!;\r\n this.settingsForm = document.querySelector(\"#settings form\") as HTMLFormElement;\r\n this.resetSettingsButton = document.querySelector(\"#settings button[type='reset']\")!;\r\n this.versions = document.querySelector(\"#versions\") as HTMLSelectElement | null;\r\n this.releaseDescription = document.querySelector(\".release-description\")!;\r\n this.versionBadge = document.querySelector(\".version-number\")!;\r\n this.languageSelector = document.querySelector(\".lang-dropdown\")!;\r\n this.currentLanguageFlag = document.querySelector(\".current-language-flag\")!;\r\n this.pathBox = document.querySelector(\".path-box ul\")!;\r\n this.areaModal = document.getElementById(\"area-info\");\r\n this.preview = new Preview(this.map, this);\r\n\r\n if (this.versions) {\r\n this.versions.addEventListener(\"change\", event => {\r\n const target = event.target as HTMLSelectElement;\r\n this.replaceVersion(target.value);\r\n this.releaseDescription.innerHTML = target.selectedOptions[0].getAttribute(\"data-description\") ?? \"\";\r\n Modal.getInstance(this.helpModal)?.hide();\r\n });\r\n\r\n this.helpModal.addEventListener(\"shown.bs.modal\", () => {\r\n if (this.versions!.children.length == 0) {\r\n (downloadTags(this.versions!.getAttribute(\"data-tags\")!) as Promise<any[]>).then((tags) => {\r\n tags.forEach((tag: any) => {\r\n const option = document.createElement(\"option\");\r\n option.setAttribute(\"value\", tag.tag_name);\r\n option.setAttribute(\"data-description\", (tag.body ?? \"\").replaceAll(\"\\n\\n\", \"\\n\"));\r\n option.innerHTML = tag.tag_name;\r\n this.versions!.append(option);\r\n });\r\n this.releaseDescription.innerHTML = this.versions!.firstElementChild?.getAttribute(\"data-description\") ?? \"\";\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.saveImageButton?.addEventListener(\"click\", () => this.saveImage());\r\n this.saveSvgImageButton?.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.downloadImage();\r\n });\r\n this.copyImageButton?.addEventListener(\"click\", () => this.copyImage());\r\n\r\n this.zoomButtons.forEach(item =>\r\n item.addEventListener(\"click\", event => {\r\n const delta = parseFloat((event.currentTarget as HTMLElement).getAttribute(\"data-factor\")!);\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * delta);\r\n })\r\n );\r\n\r\n this.search.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.submitSearch();\r\n });\r\n\r\n this.findPathForm?.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.submitPathFind();\r\n });\r\n\r\n this.findPathModal?.addEventListener(\"shown.bs.modal\", () => {\r\n (this.findPathModal!.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.searchModal.addEventListener(\"shown.bs.modal\", () => {\r\n (this.searchModal.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.settingsModal.addEventListener(\"show.bs.modal\", () => {\r\n this.populateSettings();\r\n });\r\n\r\n this.settingsModal.addEventListener(\"shown.bs.modal\", () => {\r\n (this.settingsModal.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.settingsForm.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.handleSaveSettings();\r\n });\r\n\r\n this.resetSettingsButton.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.resetSettings();\r\n });\r\n\r\n this.areaModal?.addEventListener(\"show.bs.modal\", () => {\r\n this.populateAreaInfo(this.areaId, this.zIndex);\r\n });\r\n\r\n this.translatePage();\r\n this.languageSelector.querySelectorAll(\"a\").forEach(element => {\r\n element.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.translatePage((element as HTMLElement).getAttribute(\"data-lang\") ?? undefined);\r\n });\r\n });\r\n\r\n this.renderer = new Renderer(this.map, this.reader, this.settings);\r\n }\r\n\r\n init() {\r\n if (params.version && this.versions) {\r\n this.replaceVersion(params.version);\r\n history.replaceState(null, \"\", url);\r\n return;\r\n }\r\n\r\n let area = this.reader.getAreas()[0].getAreaId();\r\n let zIdx = 0;\r\n if (params.loc) {\r\n this.findRoom(parseInt(params.loc));\r\n history.replaceState(null, \"\", url);\r\n } else {\r\n if (params.area) {\r\n area = parseInt(params.area);\r\n history.replaceState(null, \"\", url);\r\n } else if (position !== null && position.area) {\r\n area = position.area;\r\n zIdx = position.zIndex;\r\n }\r\n this.renderArea(area, zIdx);\r\n }\r\n }\r\n\r\n handleSaveSettings() {\r\n const formData: Record<string, any> = {};\r\n\r\n this.settingsModal.querySelectorAll<HTMLInputElement>(\"#nav-map input\").forEach(element => {\r\n const name = element.getAttribute(\"name\");\r\n if (!name) return;\r\n const type = element.getAttribute(\"type\");\r\n if (type === \"checkbox\") {\r\n formData[name] = element.checked;\r\n } else if (type === \"number\") {\r\n formData[name] = parseFloat(element.value);\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n });\r\n\r\n this.settingsModal.querySelectorAll<HTMLSelectElement>(\"#nav-map select[name]\").forEach(element => {\r\n const name = element.getAttribute(\"name\");\r\n if (name) formData[name] = element.value;\r\n });\r\n\r\n // Apply renderer settings (only known keys)\r\n const defaults = createSettings();\r\n for (const key of Object.keys(defaults)) {\r\n if (formData[key] !== undefined) {\r\n (this.settings as any)[key] = formData[key];\r\n }\r\n }\r\n // Update page settings\r\n if (formData.preview !== undefined) this.pageSettings.preview = formData.preview;\r\n if (formData.keepZoomLevel !== undefined) this.pageSettings.keepZoomLevel = formData.keepZoomLevel;\r\n if (formData.disableKeyBinds !== undefined) this.pageSettings.disableKeyBinds = formData.disableKeyBinds;\r\n\r\n this.showToast(translator.translateForKey(\"settings-saved\", translator.currentLanguage));\r\n Modal.getInstance(this.settingsModal)?.hide();\r\n this.saveSettings();\r\n this.render(true);\r\n }\r\n\r\n saveSettings() {\r\n localStorage.setItem(\"settings\", JSON.stringify({\r\n ...this.settings,\r\n ...this.pageSettings,\r\n }));\r\n }\r\n\r\n render(force?: boolean) {\r\n return this.renderArea(parseInt(this.select.value), this.zIndex, force);\r\n }\r\n\r\n renderArea(areaId: number, zIndex: number, force?: boolean): boolean {\r\n if (this.areaId !== areaId || this.zIndex !== zIndex || force) {\r\n this.areaId = areaId;\r\n this.zIndex = zIndex;\r\n\r\n localStorage.setItem(\"position\", JSON.stringify({area: areaId, zIndex: zIndex}));\r\n document.querySelector(\"body\")!.style.background = this.settings.backgroundColor;\r\n\r\n this.renderer.updateBackground();\r\n this.renderer.drawArea(areaId, zIndex);\r\n this.renderer.fitArea();\r\n\r\n // Capture preview data at fitArea() state before any zoom override\r\n const previewBounds = this.renderer.getViewportBounds();\r\n const previewPng = this.renderer.exportPng({pixelRatio: 0.25}) ?? null;\r\n\r\n const area = this.reader.getArea(areaId);\r\n this.select.value = String(areaId);\r\n if (area) {\r\n this.populateLevelButtons(area.getZLevels(), zIndex);\r\n }\r\n this.hideRoomInfo();\r\n\r\n // Re-render paths on the new area\r\n this.reRenderAllPaths();\r\n\r\n this.renderer.clearHighlights();\r\n if (this.pageSettings.keepZoomLevel && this.zoom) {\r\n this.renderer.zoomToCenter(this.zoom);\r\n }\r\n\r\n this.preview.init(previewBounds, previewPng);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n genericSetup() {\r\n document.querySelectorAll(\".btn\").forEach(element =>\r\n element.addEventListener(\"click\", () => (element as HTMLElement).blur())\r\n );\r\n }\r\n\r\n populateLevelButtons(levels: number[], zIndex: number) {\r\n this.levels.innerHTML = \"\";\r\n if (levels.length <= 1) {\r\n return;\r\n }\r\n const levelsSorted = levels.slice().sort((a, b) => a - b);\r\n\r\n if (levelsSorted.length > 10) {\r\n const container = document.createElement(\"div\");\r\n container.classList.add(\"dropdown\");\r\n const button = document.createElement(\"button\");\r\n button.classList.add(\"btn\", \"btn-secondary\", \"dropdown-toggle\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"data-bs-toggle\", \"dropdown\");\r\n button.append(document.createTextNode(String(zIndex)));\r\n const menu = document.createElement(\"div\");\r\n menu.classList.add(\"dropdown-menu\");\r\n container.append(button);\r\n container.append(menu);\r\n for (const level of levelsSorted) {\r\n const link = document.createElement(\"a\");\r\n link.classList.add(\"dropdown-item\", \"btn-level\");\r\n link.setAttribute(\"href\", \"#\");\r\n link.setAttribute(\"data-level\", String(level));\r\n link.append(document.createTextNode(String(level)));\r\n menu.append(link);\r\n }\r\n this.levels.append(container);\r\n } else {\r\n for (const level of levelsSorted) {\r\n const button = document.createElement(\"button\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"data-level\", String(level));\r\n button.classList.add(\"btn\", \"btn-level\");\r\n if (level === zIndex) {\r\n button.classList.add(\"btn-primary\");\r\n } else {\r\n button.classList.add(\"btn-secondary\");\r\n }\r\n button.append(document.createTextNode(String(level)));\r\n this.levels.append(button);\r\n }\r\n }\r\n this.levels.querySelectorAll(\".btn-level\").forEach(item => {\r\n item.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n const zIdx = parseInt((event.target as HTMLElement).getAttribute(\"data-level\")!);\r\n this.renderArea(parseInt(this.select.value), zIdx);\r\n });\r\n });\r\n }\r\n\r\n populateAreaInfo(areaId: number, zIndex: number) {\r\n const area = this.reader.getArea(areaId);\r\n if (!area) return;\r\n this.areaModal!.querySelector(\".area-name\")!.innerHTML = `${area.getAreaName()} (id: ${area.getAreaId()})`;\r\n const rooms = area.getRooms();\r\n this.areaModal!.querySelector(\".area-room-count\")!.innerHTML = String(rooms.length);\r\n const areaExits = this.areaModal!.querySelector(\".area-exits\")!;\r\n areaExits.innerHTML = \"\";\r\n rooms.flatMap(room => this.getAreaExits(room)).forEach(([id, targetId]) => {\r\n const targetArea = this.reader.getArea(this.reader.getRoom(targetId)?.area ?? 0);\r\n const li = document.createElement(\"li\");\r\n const roomLink = document.createElement(\"a\");\r\n roomLink.setAttribute(\"href\", \"#\");\r\n roomLink.setAttribute(\"data-room\", String(id));\r\n roomLink.appendChild(document.createTextNode(String(id)));\r\n roomLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n const arrow = document.createTextNode(\" -> \");\r\n const targetLink = document.createElement(\"a\");\r\n targetLink.setAttribute(\"href\", \"#\");\r\n targetLink.setAttribute(\"data-room\", String(targetId));\r\n targetLink.appendChild(document.createTextNode(`${targetId} (${targetArea?.getAreaName() ?? \"?\"})`));\r\n targetLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n li.append(roomLink, arrow, targetLink);\r\n areaExits.appendChild(li);\r\n });\r\n }\r\n\r\n getAreaExits(room: MapData.Room): [number, number][] {\r\n const areaExits: [number, number][] = [];\r\n Object.values(room.exits).filter(target => this.isExitTarget(target)).forEach(exitId => areaExits.push([room.id, exitId]));\r\n Object.values(room.specialExits).filter(target => this.isExitTarget(target)).forEach(exitId => areaExits.push([room.id, exitId]));\r\n return areaExits;\r\n }\r\n\r\n isExitTarget(destinationRoom: number): boolean {\r\n const destRoom = this.reader.getRoom(destinationRoom);\r\n if (!destRoom) return false;\r\n const currentArea = this.renderer.getCurrentArea();\r\n return destRoom.area !== currentArea?.getAreaId();\r\n }\r\n\r\n populateSelectBox() {\r\n this.select.querySelectorAll(\"option\").forEach(item => item.remove());\r\n this.reader\r\n .getAreas()\r\n .filter(area => area.getRooms().length > 0 && area.getAreaName() !== undefined && area.getAreaName() !== \"\")\r\n .sort((a, b) => {\r\n const nameA = a.getAreaName().toLowerCase();\r\n const nameB = b.getAreaName().toLowerCase();\r\n if (nameA < nameB) return -1;\r\n if (nameA > nameB) return 1;\r\n return 0;\r\n })\r\n .forEach(areaElement => {\r\n if (!areaElement.getRooms().length) {\r\n return;\r\n }\r\n this.select.append(new Option(areaElement.getAreaName(), String(areaElement.getAreaId())));\r\n });\r\n this.select.addEventListener(\"change\", event => {\r\n this.renderArea(parseInt((event.target as HTMLSelectElement).value), 0);\r\n });\r\n }\r\n\r\n submitSearch() {\r\n Modal.getInstance(this.searchModal)?.hide();\r\n const inputs = this.search.querySelectorAll(\"input\");\r\n\r\n const formData: Record<string, string> = {};\r\n inputs.forEach(element => {\r\n formData[element.name] = element.value;\r\n element.value = \"\";\r\n });\r\n\r\n if (formData.roomId !== undefined) {\r\n let roomId: any = formData.roomId.split(\",\");\r\n if (isNaN(roomId[0])) {\r\n roomId = findNpc(roomId);\r\n }\r\n this.findRooms(roomId);\r\n }\r\n }\r\n\r\n submitPathFind() {\r\n Modal.getInstance(this.findPathModal!)?.hide();\r\n const inputs = this.findPathForm!.querySelectorAll(\"input\");\r\n\r\n const formData: Record<string, string> = {};\r\n inputs.forEach(element => {\r\n formData[element.name] = element.value;\r\n element.value = \"\";\r\n });\r\n if (this.findPath(formData[\"start-loc\"], formData[\"end-loc\"])) {\r\n this.findRoom(parseInt(formData[\"start-loc\"]));\r\n }\r\n }\r\n\r\n findRoom(id: number) {\r\n if (!id) {\r\n return;\r\n }\r\n const room = this.reader.getRoom(id);\r\n if (room) {\r\n const areaChanged = this.renderArea(room.area, room.z);\r\n this.renderer.setZoom(0.5);\r\n this.renderer.centerOn(id, areaChanged);\r\n this.selectRoom(room);\r\n } else {\r\n this.showToast(translator.translateForKey(\"location-not-found\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n findRooms(rooms: (string | number)[]) {\r\n const firstRoom = this.reader.getRoom(parseInt(String(rooms[0])));\r\n if (firstRoom) {\r\n const areaChanged = this.renderArea(firstRoom.area, firstRoom.z);\r\n this.renderer.setZoom(0.5);\r\n this.renderer.centerOn(firstRoom.id, areaChanged);\r\n this.selectRoom(firstRoom);\r\n // Also highlight additional rooms if multiple\r\n if (rooms.length > 1) {\r\n rooms.slice(1).forEach(roomId => {\r\n this.renderer.renderHighlight(parseInt(String(roomId)), \"#FFFF00\");\r\n });\r\n }\r\n } else {\r\n this.showToast(translator.translateForKey(\"location-not-found\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n findPath(from: string, to: string): boolean {\r\n const key = `${from}#${to}`;\r\n const existingColor = (this.pathBox.querySelector(`[data-path-key='${key}'] input[type='color']`) as HTMLInputElement)?.value;\r\n const pathColor = existingColor ?? rainbow[pathPick++ % rainbow.length];\r\n\r\n const pathLocations = this.pathFinder.findPath(parseInt(from), parseInt(to));\r\n if (!pathLocations) {\r\n this.showToast(translator.translateForKey(\"no-path\", translator.currentLanguage));\r\n pathPick--;\r\n return false;\r\n }\r\n\r\n this.paths[key] = {locations: pathLocations, color: pathColor};\r\n this.reRenderAllPaths();\r\n\r\n if (!this.pathBox.querySelector(`[data-path-key='${key}']`)) {\r\n const pathSelector = document.createElement(\"li\");\r\n pathSelector.classList.add(\"list-group-item\", \"d-inline-flex\", \"align-items-center\", \"position-relative\");\r\n pathSelector.setAttribute(\"data-path-key\", key);\r\n\r\n const color = document.createElement(\"input\");\r\n color.setAttribute(\"type\", \"color\");\r\n color.classList.add(\"small-color\", \"me-2\");\r\n color.value = pathColor;\r\n color.addEventListener(\"input\", () => {\r\n this.paths[key].color = color.value;\r\n this.reRenderAllPaths();\r\n });\r\n pathSelector.appendChild(color);\r\n\r\n pathSelector.appendChild(document.createTextNode(`${from} -> ${to}`));\r\n\r\n const deletePath = document.createElement(\"span\");\r\n deletePath.classList.add(\"badge\", \"bg-secondary\", \"position-absolute\", \"end-0\", \"me-2\");\r\n deletePath.appendChild(document.createTextNode(translator.translateForKey(\"delete\", translator.currentLanguage)));\r\n deletePath.onclick = () => {\r\n delete this.paths[key];\r\n this.reRenderAllPaths();\r\n pathSelector.remove();\r\n\r\n if (Object.keys(this.paths).length === 0) {\r\n this.pathBox.parentElement!.classList.add(\"invisible\");\r\n }\r\n };\r\n pathSelector.appendChild(deletePath);\r\n this.pathBox.appendChild(pathSelector);\r\n this.pathBox.parentElement!.classList.remove(\"invisible\");\r\n }\r\n return true;\r\n }\r\n\r\n reRenderAllPaths() {\r\n this.renderer.clearPaths();\r\n Object.entries(this.paths).forEach(([key, pathData]) => {\r\n const colorEl = (this.pathBox.querySelector(`[data-path-key='${key}'] input[type='color']`) as HTMLInputElement);\r\n const color = colorEl?.value ?? pathData.color;\r\n this.renderer.renderPath(pathData.locations, color);\r\n });\r\n }\r\n\r\n adjustZoomBar(detail: ZoomChangeEventDetail) {\r\n const minZoom = 0.1;\r\n const maxZoom = 5;\r\n const percentage = (detail.zoom - minZoom) / (maxZoom - minZoom);\r\n\r\n (this.zoomBar.querySelector(\".progress-bar\") as HTMLElement).style.width = percentage * 100 + \"%\";\r\n if (!this.zoomBar.classList.contains(\"visible\")) {\r\n this.zoomBar.classList.add(\"visible\");\r\n this.zoomBar.classList.remove(\"hidden\");\r\n this.progressTimeout = setTimeout(() => {\r\n this.zoomBar.classList.add(\"hidden\");\r\n this.zoomBar.classList.remove(\"visible\");\r\n }, 3000);\r\n } else {\r\n if (this.progressTimeout !== undefined) {\r\n clearTimeout(this.progressTimeout);\r\n this.progressTimeout = undefined;\r\n }\r\n this.progressTimeout = setTimeout(() => {\r\n this.zoomBar.classList.add(\"hidden\");\r\n this.zoomBar.classList.remove(\"visible\");\r\n }, 3000);\r\n }\r\n }\r\n\r\n selectRoom(room: MapData.Room) {\r\n this.renderer.clearHighlights();\r\n this.selectedRoom = room;\r\n this.renderer.updatePositionMarker(room.id);\r\n this.showRoomInfo(room);\r\n }\r\n\r\n deselectRoom() {\r\n this.selectedRoom = null;\r\n this.renderer.clearHighlights();\r\n this.renderer.clearPosition();\r\n this.hideRoomInfo();\r\n }\r\n\r\n showRoomInfo(room: MapData.Room) {\r\n const bgColor = this.reader.getColorValue(room.env);\r\n this.infoBox.style.border = `2px solid ${bgColor.replace(\"rgb(\", \"rgba(\").replace(\")\", \", 0.5)\")}`;\r\n this.infoBox.style.display = \"initial\";\r\n this.infoBox.querySelector(\".room-id\")!.innerHTML = String(room.id);\r\n (this.infoBox.querySelector(\".room-link\") as HTMLAnchorElement).setAttribute(\"href\", `${url}?loc=${room.id}`);\r\n this.infoBox.querySelector(\".room-name\")!.innerHTML = room.name;\r\n this.infoBox.querySelector(\".room-env\")!.innerHTML = String(room.env);\r\n this.infoBox.querySelector(\".coord-x\")!.innerHTML = String(room.x);\r\n this.infoBox.querySelector(\".coord-y\")!.innerHTML = String(room.y);\r\n this.infoBox.querySelector(\".coord-z\")!.innerHTML = String(room.z);\r\n this.infoBox.querySelector(\".room-hash\")!.innerHTML = room.hash ?? \"\";\r\n\r\n this.infoExitsGroup(this.infoBox.querySelector(\".exits\")!, room.exits);\r\n this.infoExitsGroup(this.infoBox.querySelector(\".special\")!, room.specialExits);\r\n\r\n this.userDataGroup(this.infoBox.querySelector(\".userData\")!, room.userData);\r\n this.npcDataGroup(this.infoBox.querySelector(\".npc\")!, roomNpc[room.id] || []);\r\n }\r\n\r\n userDataGroup(container: HTMLElement, userData: Record<string, string>) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const userDataKey in userData) {\r\n show = true;\r\n const dataElement = document.createElement(\"li\");\r\n dataElement.classList.add(\"user-data\");\r\n const key = document.createElement(\"p\");\r\n key.append(`${userDataKey}:`);\r\n const value = document.createElement(\"p\");\r\n value.append(`${userData[userDataKey].replaceAll(\"\\\\n\", \"\\n\")}`);\r\n value.className = \"value\";\r\n dataElement.append(key, value);\r\n containerList.append(dataElement);\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n infoExitsGroup(container: HTMLElement, exits: Record<string, number>) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const exit in exits) {\r\n show = true;\r\n containerList.append(this.infoExit(exit, exits[exit]));\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n npcDataGroup(container: HTMLElement, npcs: string[]) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const npc of npcs) {\r\n show = true;\r\n const element = document.createElement(\"li\");\r\n element.append(document.createTextNode(npc));\r\n containerList.append(element);\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n infoExit(exit: string, id: number): HTMLElement {\r\n const exitElement = document.createElement(\"li\");\r\n\r\n const exitDir = document.createElement(\"span\");\r\n exitDir.setAttribute(\"data-i18n\", exit);\r\n exitDir.innerHTML = this.translateDir(exit);\r\n exitElement.append(exitDir);\r\n exitElement.append(document.createTextNode(\": \"));\r\n\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", \"#\");\r\n link.setAttribute(\"data-room\", String(id));\r\n link.innerHTML = String(id);\r\n link.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n exitElement.append(link);\r\n\r\n const destRoom = this.reader.getRoom(id);\r\n if (destRoom) {\r\n const currentArea = this.renderer.getCurrentArea();\r\n if (destRoom.area !== currentArea?.getAreaId()) {\r\n const area = this.reader.getArea(destRoom.area);\r\n exitElement.append(document.createTextNode(\" -> \"));\r\n const areaLink = document.createElement(\"a\");\r\n areaLink.setAttribute(\"href\", \"#\");\r\n areaLink.setAttribute(\"data-room\", String(destRoom.id));\r\n areaLink.innerHTML = area?.getAreaName() ?? \"?\";\r\n areaLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n exitElement.append(areaLink);\r\n }\r\n }\r\n\r\n return exitElement;\r\n }\r\n\r\n showToast(text: string) {\r\n this.toastContainer.querySelector(\".toast-body\")!.innerHTML = text;\r\n Toast.getOrCreateInstance(this.toastContainer).show();\r\n }\r\n\r\n translateDir(dir: string): string {\r\n return translator.translateForKey(dir) ?? dir;\r\n }\r\n\r\n translatePage(lang?: string) {\r\n this.currentLanguageFlag.classList.remove(`flag-${translator.currentLanguage}`);\r\n if (lang) {\r\n translator.translatePageTo(lang);\r\n }\r\n this.currentLanguageFlag.classList.add(`flag-${translator.currentLanguage}`);\r\n }\r\n\r\n hideRoomInfo() {\r\n this.infoBox.style.display = \"none\";\r\n }\r\n\r\n populateSettings() {\r\n const allSettings: Record<string, any> = {...this.settings, ...this.pageSettings};\r\n const mapTab = this.settingsModal.querySelector(\"#nav-map\");\r\n if (!mapTab) return;\r\n\r\n for (const setting in allSettings) {\r\n // Try input first\r\n const input = mapTab.querySelector(`input[name='${setting}']`) as HTMLInputElement | null;\r\n if (input) {\r\n if (input.getAttribute(\"type\") === \"checkbox\") {\r\n input.checked = allSettings[setting];\r\n } else if (input.getAttribute(\"type\") === \"color\") {\r\n input.value = toHexColor(allSettings[setting]);\r\n } else {\r\n input.value = allSettings[setting];\r\n }\r\n continue;\r\n }\r\n // Try select\r\n const select = mapTab.querySelector(`select[name='${setting}']`) as HTMLSelectElement | null;\r\n if (select) {\r\n select.value = allSettings[setting];\r\n }\r\n }\r\n }\r\n\r\n resetSettings() {\r\n const defaults = createSettings();\r\n const allDefaults: Record<string, any> = {\r\n ...defaults,\r\n preview: true,\r\n keepZoomLevel: false,\r\n disableKeyBinds: false,\r\n };\r\n const mapTab = this.settingsModal.querySelector(\"#nav-map\");\r\n if (!mapTab) return;\r\n\r\n for (const setting in allDefaults) {\r\n const input = mapTab.querySelector(`input[name='${setting}']`) as HTMLInputElement | null;\r\n if (input) {\r\n if (input.getAttribute(\"type\") === \"checkbox\") {\r\n input.checked = allDefaults[setting];\r\n } else if (input.getAttribute(\"type\") === \"color\") {\r\n input.value = toHexColor(allDefaults[setting]);\r\n } else {\r\n input.value = allDefaults[setting];\r\n }\r\n continue;\r\n }\r\n const select = mapTab.querySelector(`select[name='${setting}']`) as HTMLSelectElement | null;\r\n if (select) {\r\n select.value = allDefaults[setting];\r\n }\r\n }\r\n }\r\n\r\n saveImage() {\r\n const pngUrl = this.renderer.exportPng();\r\n if (!pngUrl) return;\r\n const a = document.createElement(\"a\");\r\n a.setAttribute(\"href\", pngUrl);\r\n a.setAttribute(\"download\", (this.renderer.getCurrentArea()?.getAreaName() ?? \"map\") + \".png\");\r\n document.querySelector(\"body\")!.append(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n downloadImage() {\r\n const svg = this.renderer.exportSvg();\r\n if (!svg) return;\r\n const a = document.createElement(\"a\");\r\n a.setAttribute(\"href\", svgToDataURL(svg));\r\n a.setAttribute(\"download\", (this.renderer.getCurrentArea()?.getAreaName() ?? \"map\") + \".svg\");\r\n document.querySelector(\"body\")!.append(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n copyImage() {\r\n if (typeof ClipboardItem !== \"undefined\") {\r\n const blobPromise = this.renderer.exportPngBlob();\r\n if (blobPromise) {\r\n blobPromise.then(blob =>\r\n navigator.clipboard.write([new ClipboardItem({\"image/png\": blob})])\r\n );\r\n }\r\n this.showToast(translator.translateForKey(\"copied\", translator.currentLanguage));\r\n } else {\r\n this.showToast(translator.translateForKey(\"no-clipboard\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n goDirection(directionKey: string) {\r\n const fullDirection = dirsShortToLong(directionKey);\r\n if (this.selectedRoom && this.selectedRoom.exits[fullDirection as MapData.direction]) {\r\n this.findRoom(this.selectedRoom.exits[fullDirection as MapData.direction]);\r\n }\r\n }\r\n\r\n registerKeyBoard() {\r\n const directionKeys: Record<string, string> = {\r\n Numpad1: \"sw\",\r\n Numpad2: \"s\",\r\n Numpad3: \"se\",\r\n Numpad4: \"w\",\r\n Numpad6: \"e\",\r\n Numpad7: \"nw\",\r\n Numpad8: \"n\",\r\n Numpad9: \"ne\",\r\n NumpadMultiply: \"u\",\r\n NumpadDivide: \"d\",\r\n };\r\n\r\n window.addEventListener(\"keydown\", event => {\r\n if (this.pageSettings.disableKeyBinds) {\r\n return;\r\n }\r\n\r\n if (event.code === \"F1\") {\r\n event.preventDefault();\r\n this.showHelp();\r\n }\r\n\r\n if (event.ctrlKey && event.code === \"KeyF\") {\r\n event.preventDefault();\r\n this.showSearch();\r\n }\r\n });\r\n\r\n window.addEventListener(\"keydown\", event => {\r\n if (document.querySelector(\"input:focus\") || this.pageSettings.disableKeyBinds) {\r\n return;\r\n }\r\n\r\n if (event.ctrlKey && event.code === \"KeyS\") {\r\n this.saveImage();\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === \"Equal\") {\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * 1.1);\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === \"Minus\") {\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * 0.9);\r\n event.preventDefault();\r\n }\r\n\r\n if (directionKeys.hasOwnProperty(event.code)) {\r\n this.goDirection(directionKeys[event.code]);\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n showHelp() {\r\n Modal.getOrCreateInstance(this.helpModal).show();\r\n }\r\n\r\n showSearch() {\r\n Modal.getOrCreateInstance(this.searchModal).show();\r\n }\r\n\r\n replaceVersion(tag: string) {\r\n downloadVersion(tag, this.versions!.getAttribute(\"data-files\")!).then(data => {\r\n this.reader = new MapReader(data as MapData.Map, colors);\r\n this.pathFinder = new PathFinder(this.reader);\r\n this.renderer = new Renderer(this.map, this.reader, this.settings);\r\n this.populateSelectBox();\r\n this.renderArea(this.areaId, this.zIndex, true);\r\n this.showToast(`Przeladowano wersje na ${tag}`);\r\n this.versionBadge.innerHTML = `v${tag}`;\r\n this.versionBadge.style.display = \"initial\";\r\n });\r\n }\r\n}\r\n\r\nconst controls = new PageControls(new MapReader(mapData, colors));\r\n(window as any).controls = controls;\r\ncontrols.genericSetup();\r\ncontrols.populateSelectBox();\r\ncontrols.init();\r\ncontrols.registerKeyBoard();\r\n\r\nconst dirs: Record<string, string> = {\r\n north: \"n\",\r\n south: \"s\",\r\n east: \"e\",\r\n west: \"w\",\r\n northeast: \"ne\",\r\n northwest: \"nw\",\r\n southeast: \"se\",\r\n southwest: \"sw\",\r\n up: \"u\",\r\n down: \"d\",\r\n};\r\n\r\nfunction getKeyByValue(obj: Record<string, string>, val: string): string | undefined {\r\n for (const k in obj) {\r\n if (obj.hasOwnProperty(k) && obj[k] === val) {\r\n return k;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction dirsShortToLong(dir: string): string {\r\n const result = getKeyByValue(dirs, dir);\r\n return result !== undefined ? result : dir;\r\n}\r\n","export const downloadTags = async (url: string): Promise<unknown> => {\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch tags: ${response.status} ${response.statusText}`);\r\n }\r\n return response.json();\r\n};\r\n\r\nexport const downloadVersion = async (tag: string, address: string): Promise<unknown> => {\r\n const url = address.replace(\"%tag%\", tag);\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch version: ${response.status} ${response.statusText}`);\r\n }\r\n return response.json();\r\n};\r\n"],"names":["t","e","Symbol","iterator","constructor","prototype","n","length","r","enumerable","configurable","writable","Object","defineProperty","key","a","Array","o","INVALID_PARAM_LANGUAGE","concat","INVALID_PARAM_JSON","EMPTY_PARAM_LANGUAGE","EMPTY_PARAM_JSON","INVALID_PARAM_KEY","NO_LANGUAGE_REGISTERED","TRANSLATION_NOT_FOUND","INVALID_PARAMETER_SOURCES","FETCH_ERROR","url","status","statusText","INVALID_ENVIRONMENT","MODULE_NOT_FOUND","MISMATCHING_ATTRIBUTES","join","outerHTML","INVALID_OPTIONS","i","arguments","u","TypeError","apply","c","isArray","call","next","done","push","value","return","toString","slice","name","from","test","stack","split","g","f","console","error","message","this","debug","languages","Map","config","assign","defaultConfig","registerGlobally","s","detectLanguage","_globalObject","translateForKey","bind","_env","_detectLanguage","get","window","global","module","exports","localStorage","getItem","persistKey","defaultLanguage","navigator","language","substr","reduce","getAttribute","forEach","_getValueFromJSON","setAttribute","has","selector","document","querySelectorAll","_replace","_currentLanguage","documentElement","lang","persist","setItem","keys","set","delete","map","replace","filesLocation","Promise","all","fetch","then","ok","json","filter","add","JSON","parse","require","readFileSync","process","cwd","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","nodeName","toLowerCase","getWindow","node","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles$1","enabled","phase","fn","_ref","state","elements","style","styles","attributes","removeAttribute","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","property","attribute","requires","getBasePlacement","max","Math","min","round","getUAString","uaData","userAgentData","brands","item","brand","version","userAgent","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","contains","parent","child","rootNode","getRootNode","isSameNode","parentNode","host","getComputedStyle","isTableElement","indexOf","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data","passive","eventListeners","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","addEventListener","update","removeEventListener","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","body","listScrollParents","list","_element$ownerDocumen","isBody","target","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","sort","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","find","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","order","modifiers","visited","Set","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","noopFn","forceUpdate","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","resolve","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","hide","TRANSITION_END","toType","object","match","getSelector","hrefAttribute","includes","startsWith","trim","getSelectorFromElement","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","jquery","nodeType","getElement","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","attachShadow","root","noop","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","NAME","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","readyState","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","setTimeout","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","relatedTarget","delegateTarget","handlers","previousFunction","domElements","domElement","hydrateObj","EventHandler","off","type","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","entries","_unused","elementMap","Data","instanceMap","size","remove","normalizeData","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","bsKeys","dataset","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","configTypes","expectedTypes","valueType","RegExp","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","SELECTOR_DATA_TOGGLE$5","Button","toggle","button","SelectorEngine","findOne","children","matches","parents","ancestor","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","Default$c","endCallback","leftCallback","rightCallback","DefaultType$c","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","Default$b","interval","keyboard","pause","ride","touch","wrap","DefaultType$b","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_KEY$7","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","selected","triggerArray","isOpen","selectorElements","NAME$a","EVENT_KEY$6","DATA_API_KEY$3","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$9","autoClose","display","popperConfig","DefaultType$9","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","Popper.createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","NAME$9","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","className","clickCallback","rootElement","DefaultType$8","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","Default$7","autofocus","trapElement","DefaultType$7","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","EVENT_KEY$4","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","Default$6","DefaultType$6","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","Default$5","DefaultType$5","Offcanvas","blur","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","small","span","sub","sup","strong","ul","Default$4","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultType$4","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","container","customClass","delay","title","DefaultType$3","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_getContent","EVENT_KEY$2","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_ACTIVE$1","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","Default$1","rootMargin","smoothScroll","threshold","DefaultType$1","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","id","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","activeNodes","spy","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","MAX_SIZE","Preview","pageControls","areaBounds","preview","previewBg","previewPan","init","bounds","pngDataUrl","areaW","maxX","minX","areaH","maxY","minY","opacity","aspect","boxW","boxH","backgroundImage","backgroundSize","pageSettings","renderer","getViewportBounds","clampedLeft","clampedTop","clampedRight","clampedBottom","getOwnPropertySymbols","getOwnPropertyDescriptor","getOwnPropertyDescriptors","defineProperties","insertAdjacentElement","insertBefore","String","normalize","l","class","input","CustomEvent","detail","feedback","mode","diacritics","highlight","d","substring","cache","store","src","selection","results","wrapper","w","O","resultItem","getElementsByTagName","tag","cursor","A","k","L","j","HTMLInputElement","HTMLTextAreaElement","query","searchEngine","resultsList","maxResults","h","noResults","DocumentFragment","role","inside","S","E","placeHolder","placeholder","around","dest","destination","debounce","keydown","keyCode","submit","tabSelect","mousedown","T","unInit","removeChild","goTo","select","search","instances","npcs","searchFieldSelector","searchField","downloadNpc","async","roomNpc","response","npc","loc","ac","autoComplete","shouldNavigate","Function","form","requestSubmit","isNaN","aText","bText","localeCompare","newMax","rainbow","pathPick","translator","Translator","location","hostname","defaultLang","catch","log","translatePageTo","translations","pl","en","urlSearchParams","URLSearchParams","params","fromEntries","origin","pathname","toHexColor","color","padStart","storedPosition","controls","reader","areaId","zIndex","zoom","selectedRoom","paths","settings","createSettings","pathFinder","PathFinder","keepZoomLevel","disableKeyBinds","loaded","parsed","mapBackground","backgroundColor","linesColor","lineColor","exitsSize","lineWidth","isRound","roomShape","roomSize","optimizeDrag","showLabels","gridColor","gridLineWidth","areaName","defaults","room","getRoom","roomId","selectRoom","adjustZoomBar","deselectRoom","centerOn","targetRoomId","findRoom","infoBox","levels","saveImageButton","saveSvgImageButton","copyImageButton","zoomButtons","toastContainer","searchModal","findPathForm","findPathModal","helpModal","zoomBar","settingsModal","settingsForm","resetSettingsButton","versions","releaseDescription","versionBadge","languageSelector","currentLanguageFlag","pathBox","areaModal","replaceVersion","selectedOptions","downloadTags","tags","option","tag_name","replaceAll","firstElementChild","saveImage","downloadImage","copyImage","delta","currentTarget","zoomToCenter","getZoom","submitSearch","submitPathFind","populateSettings","handleSaveSettings","resetSettings","populateAreaInfo","translatePage","Renderer","history","replaceState","getAreas","getAreaId","zIdx","renderArea","formData","checked","showToast","currentLanguage","saveSettings","render","stringify","force","background","updateBackground","drawArea","fitArea","previewBounds","previewPng","exportPng","pixelRatio","getArea","populateLevelButtons","getZLevels","hideRoomInfo","reRenderAllPaths","clearHighlights","genericSetup","levelsSorted","createTextNode","menu","level","link","getAreaName","rooms","getRooms","areaExits","flatMap","getAreaExits","targetId","targetArea","roomLink","appendChild","targetLink","exits","isExitTarget","exitId","specialExits","destinationRoom","destRoom","currentArea","getCurrentArea","populateSelectBox","nameA","nameB","areaElement","Option","inputs","findRooms","findPath","areaChanged","z","setZoom","firstRoom","renderHighlight","existingColor","pathColor","pathLocations","locations","pathSelector","deletePath","onclick","parentElement","clearPaths","pathData","colorEl","renderPath","percentage","progressTimeout","updatePositionMarker","showRoomInfo","clearPosition","bgColor","getColorValue","env","border","infoExitsGroup","userDataGroup","userData","npcDataGroup","containerList","userDataKey","dataElement","exit","infoExit","exitElement","exitDir","translateDir","areaLink","allSettings","mapTab","setting","allDefaults","pngUrl","svg","exportSvg","encodeURIComponent","ClipboardItem","blobPromise","exportPngBlob","blob","clipboard","goDirection","directionKey","fullDirection","val","getKeyByValue","dirs","dirsShortToLong","registerKeyBoard","directionKeys","Numpad1","Numpad2","Numpad3","Numpad4","Numpad6","Numpad7","Numpad8","Numpad9","NumpadMultiply","NumpadDivide","showHelp","ctrlKey","showSearch","address","downloadVersion","MapReader","colors","mapData","north","south","east","west","northeast","northwest","southeast","southwest","up","down"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,57]}
|
|
1
|
+
{"version":3,"file":"index.min.js","sources":["../node_modules/@andreasremdt/simple-translator/dist/esm/translator.min.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/bootstrap/dist/js/bootstrap.esm.js","../node_modules/konva/lib/Global.js","../node_modules/konva/lib/Util.js","../node_modules/konva/lib/Context.js","../node_modules/konva/lib/Canvas.js","../node_modules/konva/lib/DragAndDrop.js","../node_modules/konva/lib/Validators.js","../node_modules/konva/lib/Factory.js","../node_modules/konva/lib/Node.js","../node_modules/konva/lib/Container.js","../node_modules/konva/lib/PointerEvents.js","../node_modules/konva/lib/Stage.js","../node_modules/konva/lib/Shape.js","../node_modules/konva/lib/Layer.js","../node_modules/konva/lib/FastLayer.js","../node_modules/konva/lib/Group.js","../node_modules/konva/lib/Animation.js","../node_modules/konva/lib/Tween.js","../node_modules/konva/lib/_CoreInternals.js","../node_modules/konva/lib/shapes/Arc.js","../node_modules/konva/lib/shapes/Line.js","../node_modules/konva/lib/BezierFunctions.js","../node_modules/konva/lib/shapes/Path.js","../node_modules/konva/lib/shapes/Arrow.js","../node_modules/konva/lib/shapes/Circle.js","../node_modules/konva/lib/shapes/Ellipse.js","../node_modules/konva/lib/shapes/Image.js","../node_modules/konva/lib/shapes/Label.js","../node_modules/konva/lib/shapes/Rect.js","../node_modules/konva/lib/shapes/RegularPolygon.js","../node_modules/konva/lib/shapes/Ring.js","../node_modules/konva/lib/shapes/Sprite.js","../node_modules/konva/lib/shapes/Star.js","../node_modules/konva/lib/shapes/Text.js","../node_modules/konva/lib/shapes/TextPath.js","../node_modules/konva/lib/shapes/Transformer.js","../node_modules/konva/lib/shapes/Wedge.js","../node_modules/konva/lib/filters/Blur.js","../node_modules/konva/lib/filters/Brighten.js","../node_modules/konva/lib/filters/Contrast.js","../node_modules/konva/lib/filters/Enhance.js","../node_modules/konva/lib/filters/Emboss.js","../node_modules/konva/lib/filters/HSL.js","../node_modules/konva/lib/filters/HSV.js","../node_modules/konva/lib/filters/Mask.js","../node_modules/konva/lib/filters/Kaleidoscope.js","../node_modules/konva/lib/filters/Noise.js","../node_modules/konva/lib/filters/Pixelate.js","../node_modules/konva/lib/filters/Posterize.js","../node_modules/konva/lib/filters/RGB.js","../node_modules/konva/lib/filters/RGBA.js","../node_modules/konva/lib/filters/Threshold.js","../node_modules/konva/lib/_FullInternals.js","../node_modules/konva/lib/filters/Brightness.js","../node_modules/konva/lib/filters/Grayscale.js","../node_modules/konva/lib/filters/Invert.js","../node_modules/konva/lib/filters/Sepia.js","../node_modules/konva/lib/filters/Solarize.js","../node_modules/mudlet-map-renderer/dist/index.mjs","../src/preview.ts","../node_modules/@tarekraafat/autocomplete.js/dist/autoComplete.min.js","../src/npc.ts","../src/index.ts","../src/versions.ts"],"sourcesContent":["function t(e){return t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t},t(e)}function e(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function n(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function r(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null==n)return;var r,a,o=[],i=!0,u=!1;try{for(n=n.call(t);!(i=(r=n.next()).done)&&(o.push(r.value),!e||o.length!==e);i=!0);}catch(t){u=!0,a=t}finally{try{i||null==n.return||n.return()}finally{if(u)throw a}}return o}(t,e)||function(t,e){if(!t)return;if(\"string\"==typeof t)return a(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(t,e)}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function a(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var o={INVALID_PARAM_LANGUAGE:function(e){return\"Invalid parameter for `language` provided. Expected a string, but got \".concat(t(e),\".\")},INVALID_PARAM_JSON:function(e){return\"Invalid parameter for `json` provided. Expected an object, but got \".concat(t(e),\".\")},EMPTY_PARAM_LANGUAGE:function(){return\"The parameter for `language` can't be an empty string.\"},EMPTY_PARAM_JSON:function(){return\"The parameter for `json` must have at least one key/value pair.\"},INVALID_PARAM_KEY:function(e){return\"Invalid parameter for `key` provided. Expected a string, but got \".concat(t(e),\".\")},NO_LANGUAGE_REGISTERED:function(t){return'No translation for language \"'.concat(t,'\" has been added, yet. Make sure to register that language using the `.add()` method first.')},TRANSLATION_NOT_FOUND:function(t,e){return'No translation found for key \"'.concat(t,'\" in language \"').concat(e,'\". Is there a key/value in your translation file?')},INVALID_PARAMETER_SOURCES:function(e){return\"Invalid parameter for `sources` provided. Expected either a string or an array, but got \".concat(t(e),\".\")},FETCH_ERROR:function(t){return'Could not fetch \"'.concat(t.url,'\": ').concat(t.status,\" (\").concat(t.statusText,\")\")},INVALID_ENVIRONMENT:function(){return\"You are trying to execute the method `translatePageTo()`, which is only available in the browser. Your environment is most likely Node.js\"},MODULE_NOT_FOUND:function(t){return t},MISMATCHING_ATTRIBUTES:function(t,e,n){return'The attributes \"data-i18n\" and \"data-i18n-attr\" must contain the same number of keys.\\n\\nValues in `data-i18n`: ('.concat(t.length,\") `\").concat(t.join(\" \"),\"`\\nValues in `data-i18n-attr`: (\").concat(e.length,\") `\").concat(e.join(\" \"),\"`\\n\\nThe HTML element is:\\n\").concat(n.outerHTML)},INVALID_OPTIONS:function(e){return\"Invalid config passed to the `Translator` constructor. Expected an object, but got \".concat(t(e),\". Using default config instead.\")}};function i(t){return function(e){if(t)try{for(var n=o[e],a=arguments.length,i=new Array(a>1?a-1:0),u=1;u<a;u++)i[u-1]=arguments[u];throw new TypeError(n?n.apply(void 0,i):\"Unhandled Error\")}catch(t){var s=t.stack.split(/\\n/g)[1],l=s.split(/@/),c=r(l,2),g=c[0],f=c[1];console.error(\"\".concat(t.message,\"\\n\\nThis error happened in the method `\").concat(g,\"` from: `\").concat(f,\"`.\\n\\nIf you don't want to see these error messages, turn off debugging by passing `{ debug: false }` to the constructor.\\n\\nError code: \").concat(e,\"\\n\\nCheck out the documentation for more details about the API:\\nhttps://github.com/andreasremdt/simple-translator#usage\\n \"))}}}var u=function(){function r(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,r),this.debug=i(!0),(\"object\"!=t(n)||Array.isArray(n))&&(this.debug(\"INVALID_OPTIONS\",n),n={}),this.languages=new Map,this.config=Object.assign(r.defaultConfig,n);var a=this.config,o=a.debug,u=a.registerGlobally,s=a.detectLanguage;this.debug=i(o),u&&(this._globalObject[u]=this.translateForKey.bind(this)),s&&\"browser\"==this._env&&this._detectLanguage()}var a,o,u;return a=r,o=[{key:\"_globalObject\",get:function(){return\"browser\"==this._env?window:global}},{key:\"_env\",get:function(){return\"undefined\"!=typeof window?\"browser\":\"undefined\"!=typeof module&&module.exports?\"node\":\"browser\"}},{key:\"_detectLanguage\",value:function(){var t=window.localStorage?localStorage.getItem(this.config.persistKey):void 0;if(t)this.config.defaultLanguage=t;else{var e=navigator.languages?navigator.languages[0]:navigator.language;this.config.defaultLanguage=e.substr(0,2)}}},{key:\"_getValueFromJSON\",value:function(t,e){var n=this.languages.get(e);return t.split(\".\").reduce((function(t,e){return t?t[e]:null}),n)}},{key:\"_replace\",value:function(t,e){var n,r,a=this,o=null===(n=t.getAttribute(\"data-i18n\"))||void 0===n?void 0:n.split(/\\s/g),i=null==t||null===(r=t.getAttribute(\"data-i18n-attr\"))||void 0===r?void 0:r.split(/\\s/g);i&&o.length!=i.length&&this.debug(\"MISMATCHING_ATTRIBUTES\",o,i,t),o.forEach((function(n,r){var o=a._getValueFromJSON(n,e),u=i?i[r]:\"innerHTML\";o?\"innerHTML\"==u?t[u]=o:t.setAttribute(u,o):a.debug(\"TRANSLATION_NOT_FOUND\",n,e)}))}},{key:\"translatePageTo\",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.config.defaultLanguage;if(\"node\"!=this._env)if(\"string\"==typeof e)if(0!=e.length)if(this.languages.has(e)){var n=\"string\"==typeof this.config.selector?Array.from(document.querySelectorAll(this.config.selector)):this.config.selector;n.length&&n.length>0?n.forEach((function(n){return t._replace(n,e)})):null==n.length&&this._replace(n,e),this._currentLanguage=e,document.documentElement.lang=e,this.config.persist&&window.localStorage&&localStorage.setItem(this.config.persistKey,e)}else this.debug(\"NO_LANGUAGE_REGISTERED\",e);else this.debug(\"EMPTY_PARAM_LANGUAGE\");else this.debug(\"INVALID_PARAM_LANGUAGE\",e);else this.debug(\"INVALID_ENVIRONMENT\")}},{key:\"translateForKey\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.config.defaultLanguage;if(\"string\"!=typeof t)return this.debug(\"INVALID_PARAM_KEY\",t),null;if(!this.languages.has(e))return this.debug(\"NO_LANGUAGE_REGISTERED\",e),null;var n=this._getValueFromJSON(t,e);return n||(this.debug(\"TRANSLATION_NOT_FOUND\",t,e),null)}},{key:\"add\",value:function(e,n){return\"string\"!=typeof e?(this.debug(\"INVALID_PARAM_LANGUAGE\",e),this):0==e.length?(this.debug(\"EMPTY_PARAM_LANGUAGE\"),this):Array.isArray(n)||\"object\"!=t(n)?(this.debug(\"INVALID_PARAM_JSON\",n),this):0==Object.keys(n).length?(this.debug(\"EMPTY_PARAM_JSON\"),this):(this.languages.set(e,n),this)}},{key:\"remove\",value:function(t){return\"string\"!=typeof t?(this.debug(\"INVALID_PARAM_LANGUAGE\",t),this):0==t.length?(this.debug(\"EMPTY_PARAM_LANGUAGE\"),this):(this.languages.delete(t),this)}},{key:\"fetch\",value:function(t){function e(e){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(t){var e=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!Array.isArray(t)&&\"string\"!=typeof t)return this.debug(\"INVALID_PARAMETER_SOURCES\",t),null;Array.isArray(t)||(t=[t]);var r=t.map((function(t){var n=t.replace(/\\.json$/,\"\").replace(/^\\//,\"\"),r=e.config.filesLocation.replace(/\\/$/,\"\");return\"\".concat(r,\"/\").concat(n,\".json\")}));return\"browser\"==this._env?Promise.all(r.map((function(t){return fetch(t)}))).then((function(t){return Promise.all(t.map((function(t){if(t.ok)return t.json();e.debug(\"FETCH_ERROR\",t)})))})).then((function(r){return r=r.filter((function(t){return t})),n&&r.forEach((function(n,r){e.add(t[r],n)})),r.length>1?r:r[0]})):\"node\"==this._env?new Promise((function(a){var o=[];r.forEach((function(r,a){try{var i=JSON.parse(require(\"fs\").readFileSync(process.cwd()+r,\"utf-8\"));n&&e.add(t[a],i),o.push(i)}catch(t){e.debug(\"MODULE_NOT_FOUND\",t.message)}})),a(o.length>1?o:o[0])})):void 0}))},{key:\"setDefaultLanguage\",value:function(t){if(\"string\"==typeof t){if(0!=t.length)return this.languages.has(t)?void(this.config.defaultLanguage=t):(this.debug(\"NO_LANGUAGE_REGISTERED\",t),null);this.debug(\"EMPTY_PARAM_LANGUAGE\")}else this.debug(\"INVALID_PARAM_LANGUAGE\",t)}},{key:\"currentLanguage\",get:function(){return this._currentLanguage||this.config.defaultLanguage}},{key:\"defaultLanguage\",get:function(){return this.config.defaultLanguage}}],u=[{key:\"defaultConfig\",get:function(){return{defaultLanguage:\"en\",detectLanguage:!0,selector:\"[data-i18n]\",debug:!1,registerGlobally:\"__\",persist:!1,persistKey:\"preferred_language\",filesLocation:\"/i18n\"}}}],o&&n(a.prototype,o),u&&n(a,u),r}();export{u as default};\n//# sourceMappingURL=translator.min.js.map\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/*!\n * Bootstrap v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n\n return null;\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, {\n delegateTarget: target\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n let evt = new Event(event, {\n bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n\n get() {\n return value;\n }\n\n });\n }\n }\n\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return { ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3';\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n } // Public\n\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n } // Static\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n\n this._initEvents();\n } // Getters\n\n\n static get Default() {\n return Default$c;\n }\n\n static get DefaultType() {\n return DefaultType$c;\n }\n\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n\n\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n\n\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$b;\n }\n\n static get DefaultType() {\n return DefaultType$b;\n }\n\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n carousel.prev();\n\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get DefaultType() {\n return DefaultType$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n\n for (const element of children) {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get DefaultType() {\n return DefaultType$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n } // Public\n\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n } // Getters\n\n\n static get Default() {\n return Default$7;\n }\n\n static get DefaultType() {\n return DefaultType$7;\n }\n\n static get NAME() {\n return NAME$8;\n } // Public\n\n\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$6;\n }\n\n static get DefaultType() {\n return DefaultType$6;\n }\n\n static get NAME() {\n return NAME$7;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n\n if (this._config.keyboard) {\n event.preventDefault();\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get DefaultType() {\n return DefaultType$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.add(CLASS_NAME_HIDING);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n } // Check if a regular expression validates the attribute.\n\n\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '<div></div>'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n } // Getters\n\n\n static get Default() {\n return Default$4;\n }\n\n static get DefaultType() {\n return DefaultType$4;\n }\n\n static get NAME() {\n return NAME$5;\n } // Public\n\n\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n\n this._config.content = { ...this._config.content,\n ...content\n };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n } // Private\n\n\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element, config); // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null; // Protected\n\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n }\n\n static get NAME() {\n return NAME$4;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n\n if (this._isShown()) {\n this._leave();\n\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n\n this._disposePopper();\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const {\n container\n } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n this._disposePopper();\n }\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n\n\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n\n if (this._isShown()) {\n this._disposePopper();\n\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({ ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n\n\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = { ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = { ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>',\n trigger: 'click'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n }\n\n static get NAME() {\n return NAME$3;\n } // Overrides\n\n\n _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get DefaultType() {\n return DefaultType$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n this._initializeTargetsAndObservables();\n\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n this._observer.disconnect();\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n } // The logic of selection\n\n\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n item.classList.add(CLASS_NAME_ACTIVE$1);\n }\n }\n }\n\n _clearActiveClass(parent) {\n parent.classList.remove(CLASS_NAME_ACTIVE$1);\n const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);\n\n for (const node of activeNodes) {\n node.classList.remove(CLASS_NAME_ACTIVE$1);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = ScrollSpy.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {\n for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n ScrollSpy.getOrCreateInstance(spy);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst CLASS_DROPDOWN = 'dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu';\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]';\nconst SELECTOR_OUTER = '.nav-item, .list-group-item';\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'; // todo:v6: could be only `tab`\n\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`;\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element);\n this._parent = this._element.closest(SELECTOR_TAB_PANEL);\n\n if (!this._parent) {\n return; // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n } // Set up initial aria attributes\n\n\n this._setInitialAttributes(this._parent, this._getChildren());\n\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n } // Getters\n\n\n static get NAME() {\n return NAME$1;\n } // Public\n\n\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element;\n\n if (this._elemIsActive(innerElem)) {\n return;\n } // Search for active tab on same parent to deactivate it\n\n\n const active = this._getActiveElem();\n\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {\n relatedTarget: innerElem\n }) : null;\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {\n relatedTarget: active\n });\n\n if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {\n return;\n }\n\n this._deactivate(active, innerElem);\n\n this._activate(innerElem, active);\n } // Private\n\n\n _activate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.add(CLASS_NAME_ACTIVE);\n\n this._activate(getElementFromSelector(element)); // Search and activate/show the proper section\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.removeAttribute('tabindex');\n element.setAttribute('aria-selected', true);\n\n this._toggleDropDown(element, true);\n\n EventHandler.trigger(element, EVENT_SHOWN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return;\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE);\n element.blur();\n\n this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too\n\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW$1);\n return;\n }\n\n element.setAttribute('aria-selected', false);\n element.setAttribute('tabindex', '-1');\n\n this._toggleDropDown(element, false);\n\n EventHandler.trigger(element, EVENT_HIDDEN$1, {\n relatedTarget: relatedElem\n });\n };\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));\n }\n\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {\n return;\n }\n\n event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n\n event.preventDefault();\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);\n const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true);\n\n if (nextActiveElement) {\n nextActiveElement.focus({\n preventScroll: true\n });\n Tab.getOrCreateInstance(nextActiveElement).show();\n }\n }\n\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);\n }\n\n _getActiveElem() {\n return this._getChildren().find(child => this._elemIsActive(child)) || null;\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist');\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child);\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child);\n\n const isActive = this._elemIsActive(child);\n\n const outerElem = this._getOuterElement(child);\n\n child.setAttribute('aria-selected', isActive);\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation');\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1');\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too\n\n\n this._setInitialAttributesOnTargetPanel(child);\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child);\n\n if (!target) {\n return;\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel');\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element);\n\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return;\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem);\n\n if (element) {\n element.classList.toggle(className, open);\n }\n };\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);\n outerElem.setAttribute('aria-expanded', open);\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value);\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE);\n } // Try to get the inner element (usually the .nav-link)\n\n\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);\n } // Try to get the outer element (usually the .nav-item)\n\n\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tab.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n Tab.getOrCreateInstance(this).show();\n});\n/**\n * Initialize on focus\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n Tab.getOrCreateInstance(element);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n};\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000\n};\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._timeout = null;\n this._hasMouseInteraction = false;\n this._hasKeyboardInteraction = false;\n\n this._setListeners();\n } // Getters\n\n\n static get Default() {\n return Default;\n }\n\n static get DefaultType() {\n return DefaultType;\n }\n\n static get NAME() {\n return NAME;\n } // Public\n\n\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE);\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING);\n\n EventHandler.trigger(this._element, EVENT_SHOWN);\n\n this._maybeScheduleHide();\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n hide() {\n if (!this.isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN);\n };\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n this._queueCallback(complete, this._element, this._config.animation);\n }\n\n dispose() {\n this._clearTimeout();\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW);\n }\n\n super.dispose();\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW);\n } // Private\n\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return;\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return;\n }\n\n this._timeout = setTimeout(() => {\n this.hide();\n }, this._config.delay);\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout':\n {\n this._hasMouseInteraction = isInteracting;\n break;\n }\n\n case 'focusin':\n case 'focusout':\n {\n this._hasKeyboardInteraction = isInteracting;\n break;\n }\n }\n\n if (isInteracting) {\n this._clearTimeout();\n\n return;\n }\n\n const nextElement = event.relatedTarget;\n\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return;\n }\n\n this._maybeScheduleHide();\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Toast.getOrCreateInstance(this, config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Toast);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n","const PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexport const glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexport const Konva = {\n _global: glob,\n version: '10.2.5',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n _renderBackend: 'web',\n legacyTextRendering: false,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return Konva['DD'].isDragging;\n },\n isTransforming() {\n var _a, _b;\n return (_b = (_a = Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming()) !== null && _b !== void 0 ? _b : false;\n },\n isDragReady() {\n return !!Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: glob.document,\n _injectGlobal(Konva) {\n if (typeof glob.Konva !== 'undefined') {\n console.error('Several Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.');\n }\n glob.Konva = Konva;\n },\n};\nexport const _registerNode = (NodeClass) => {\n Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nKonva._injectGlobal(Konva);\n","import { Konva } from \"./Global.js\";\nconst NODE_ERROR = `Konva.js unsupported environment.\n\nLooks like you are trying to use Konva.js in Node.js environment. because \"document\" object is undefined.\n\nTo use Konva.js in Node.js environment, you need to use the \"canvas-backend\" or \"skia-backend\" module.\n\nbash: npm install canvas\njs: import \"konva/canvas-backend\";\n\nor\n\nbash: npm install skia-canvas\njs: import \"konva/skia-backend\";\n`;\nconst ensureBrowser = () => {\n if (typeof document === 'undefined') {\n throw new Error(NODE_ERROR);\n }\n};\nexport class Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n const m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n const c = Math.cos(rad);\n const s = Math.sin(rad);\n const m11 = this.m[0] * c + this.m[2] * s;\n const m12 = this.m[1] * c + this.m[3] * s;\n const m21 = this.m[0] * -s + this.m[2] * c;\n const m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n const m11 = this.m[0] + this.m[2] * sy;\n const m12 = this.m[1] + this.m[3] * sy;\n const m21 = this.m[2] + this.m[0] * sx;\n const m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n const m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n const m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n const m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n const m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n const dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n const dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n const d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n const m0 = this.m[3] * d;\n const m1 = -this.m[1] * d;\n const m2 = -this.m[2] * d;\n const m3 = this.m[0] * d;\n const m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n const m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n const a = this.m[0];\n const b = this.m[1];\n const c = this.m[2];\n const d = this.m[3];\n const e = this.m[4];\n const f = this.m[5];\n const delta = a * d - b * c;\n const result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n const r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n const s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = Util._getRotation(result.rotation);\n return result;\n }\n}\nconst OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/;\nlet animQueue = [];\nlet _isCanvasFarblingActive = null;\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 16);\n };\nexport const Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n const firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n ensureBrowser();\n const canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n ensureBrowser();\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n const imageObj = Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n const bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n let randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n isCanvasFarblingActive() {\n if (_isCanvasFarblingActive !== null) {\n return _isCanvasFarblingActive;\n }\n if (typeof document === 'undefined') {\n _isCanvasFarblingActive = false;\n return false;\n }\n const c = this.createCanvasElement();\n c.width = 10;\n c.height = 10;\n const ctx = c.getContext('2d', {\n willReadFrequently: true,\n });\n ctx.clearRect(0, 0, 10, 10);\n ctx.fillStyle = '#282828';\n ctx.fillRect(0, 0, 10, 10);\n const d = ctx.getImageData(0, 0, 10, 10).data;\n let isFarbling = false;\n for (let i = 0; i < 100; i++) {\n if (d[i * 4] !== 40 ||\n d[i * 4 + 1] !== 40 ||\n d[i * 4 + 2] !== 40 ||\n d[i * 4 + 3] !== 255) {\n isFarbling = true;\n break;\n }\n }\n _isCanvasFarblingActive = isFarbling;\n this.releaseCanvas(c);\n return _isCanvasFarblingActive;\n },\n getHitColor() {\n const color = this.getRandomColor();\n return this.isCanvasFarblingActive()\n ? this.getSnappedHexColor(color)\n : color;\n },\n getHitColorKey(r, g, b) {\n if (this.isCanvasFarblingActive()) {\n r = Math.round(r / 5) * 5;\n g = Math.round(g / 5) * 5;\n b = Math.round(b / 5) * 5;\n }\n return HASH + this._rgbToHex(r, g, b);\n },\n getSnappedHexColor(hex) {\n const rgb = this._hexToRgb(hex);\n return (HASH +\n this._rgbToHex(Math.round(rgb.r / 5) * 5, Math.round(rgb.g / 5) * 5, Math.round(rgb.b / 5) * 5));\n },\n getRGB(color) {\n let rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (Util._namedColorToRBA(str) ||\n Util._hex3ColorToRGBA(str) ||\n Util._hex4ColorToRGBA(str) ||\n Util._hex6ColorToRGBA(str) ||\n Util._hex8ColorToRGBA(str) ||\n Util._rgbColorToRGBA(str) ||\n Util._rgbaColorToRGBA(str) ||\n Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n const c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n const parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n const retObj = {};\n for (const key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return Util.degToRad(deg);\n },\n _radToDeg(rad) {\n Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Konva.angleDeg ? Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (const key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n let x, y, dist;\n const pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n const u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n const pc = Util.cloneObject(pt);\n let dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n const p2 = line[(i + 1) % line.length];\n const proj = Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n const px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n const start = [], end = [];\n if (startArray.length > endArray.length) {\n const temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (let n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (let n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n const newStart = [];\n end.forEach(function (point) {\n const pr = Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n let desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (const key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (const key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let xOrigin = width < 0 ? width : 0;\n let yOrigin = height < 0 ? height : 0;\n width = Math.abs(width);\n height = Math.abs(height);\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(xOrigin + topLeft, yOrigin);\n context.lineTo(xOrigin + width - topRight, yOrigin);\n context.arc(xOrigin + width - topRight, yOrigin + topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(xOrigin + width, yOrigin + height - bottomRight);\n context.arc(xOrigin + width - bottomRight, yOrigin + height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(xOrigin + bottomLeft, yOrigin + height);\n context.arc(xOrigin + bottomLeft, yOrigin + height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(xOrigin, yOrigin + topLeft);\n context.arc(xOrigin + topLeft, yOrigin + topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n drawRoundedPolygonPath(context, points, sides, radius, cornerRadius) {\n radius = Math.abs(radius);\n for (let i = 0; i < sides; i++) {\n const prev = points[(i - 1 + sides) % sides];\n const curr = points[i];\n const next = points[(i + 1) % sides];\n const vec1 = { x: curr.x - prev.x, y: curr.y - prev.y };\n const vec2 = { x: next.x - curr.x, y: next.y - curr.y };\n const len1 = Math.hypot(vec1.x, vec1.y);\n const len2 = Math.hypot(vec2.x, vec2.y);\n let currCornerRadius;\n if (typeof cornerRadius === 'number') {\n currCornerRadius = cornerRadius;\n }\n else {\n currCornerRadius = i < cornerRadius.length ? cornerRadius[i] : 0;\n }\n const maxCornerRadius = radius * Math.cos(Math.PI / sides);\n currCornerRadius =\n maxCornerRadius * Math.min(1, (currCornerRadius / radius) * 2);\n const normalVec1 = { x: vec1.x / len1, y: vec1.y / len1 };\n const normalVec2 = { x: vec2.x / len2, y: vec2.y / len2 };\n const p1 = {\n x: curr.x - normalVec1.x * currCornerRadius,\n y: curr.y - normalVec1.y * currCornerRadius,\n };\n const p2 = {\n x: curr.x + normalVec2.x * currCornerRadius,\n y: curr.y + normalVec2.y * currCornerRadius,\n };\n if (i === 0) {\n context.moveTo(p1.x, p1.y);\n }\n else {\n context.lineTo(p1.x, p1.y);\n }\n context.arcTo(curr.x, curr.y, p2.x, p2.y, currCornerRadius);\n }\n },\n};\n","import { Util } from \"./Util.js\";\nimport { Konva } from \"./Global.js\";\nfunction simplifyArray(arr) {\n const retArr = [], len = arr.length, util = Util;\n for (let n = 0; n < len; n++) {\n let val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nconst COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nconst CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n 'filter',\n];\nconst traceArrMax = 100;\nlet _cssFiltersSupported = null;\nexport function isCSSFiltersSupported() {\n if (_cssFiltersSupported !== null) {\n return _cssFiltersSupported;\n }\n try {\n const canvas = Util.createCanvasElement();\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n _cssFiltersSupported = false;\n return false;\n }\n return !!ctx && 'filter' in ctx;\n }\n catch (e) {\n _cssFiltersSupported = false;\n return false;\n }\n}\nexport class Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n let traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n let traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n const canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n const absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n _applyMiterLimit(shape) {\n const miterLimit = shape.attrs.miterLimit;\n if (miterLimit != null) {\n this.setAttr('miterLimit', miterLimit);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n const a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n const a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n let that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n const func = function (methodName) {\n let origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n const prop = arguments[0];\n let val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n const def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nexport class SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n const fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n const grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n const dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n const hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n const color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexport class HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n const pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n const hitStrokeWidth = shape.hitStrokeWidth();\n const strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\n","import { Util } from \"./Util.js\";\nimport { SceneContext, HitContext } from \"./Context.js\";\nimport { Konva } from \"./Global.js\";\nlet _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n const canvas = Util.createCanvasElement();\n const context = canvas.getContext('2d');\n _pixelRatio = (function () {\n const devicePixelRatio = Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nexport class Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n const conf = config || {};\n const pixelRatio = conf.pixelRatio || Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n const previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n const pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexport class SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexport class HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nexport const DD = {\n get isDragging() {\n let flag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n let node;\n DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n const dragDistance = node.dragDistance();\n const distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n if (!node.getStage()) {\n return;\n }\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n DD.justDragged = true;\n Konva._mouseListenClick = false;\n Konva._touchListenClick = false;\n Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Konva.isBrowser) {\n window.addEventListener('mouseup', DD._endDragBefore, true);\n window.addEventListener('touchend', DD._endDragBefore, true);\n window.addEventListener('touchcancel', DD._endDragBefore, true);\n window.addEventListener('mousemove', DD._drag);\n window.addEventListener('touchmove', DD._drag);\n window.addEventListener('mouseup', DD._endDragAfter, false);\n window.addEventListener('touchend', DD._endDragAfter, false);\n window.addEventListener('touchcancel', DD._endDragAfter, false);\n}\n","import { Konva } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nfunction _formatValue(val) {\n if (Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nexport function RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexport function alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexport function getNumberValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isNumber(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexport function getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util._isNumber(val);\n let isValidArray = Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array<number>(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexport function getNumberOrAutoValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isNumber = Util._isNumber(val);\n const isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexport function getStringValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isString(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexport function getStringOrGradientValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val['addColorStop']);\n if (!(isString || isGradient)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexport function getFunctionValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (!Util._isFunction(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexport function getNumberArrayValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util._isArray(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util._isNumber(item)) {\n Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexport function getBooleanValidator() {\n if (Konva.isUnminified) {\n return function (val, attr) {\n const isBool = val === true || val === false;\n if (!isBool) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexport function getComponentValidator(components) {\n if (Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util.isObject(val)) {\n Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\n","import { Util } from \"./Util.js\";\nimport { getComponentValidator } from \"./Validators.js\";\nconst GET = 'get';\nconst SET = 'set';\nexport const Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n Factory.addGetter(constructor, attr, def);\n Factory.addSetter(constructor, attr, validator, after);\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n const method = GET + Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n const method = SET + Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n const len = components.length, capitalize = Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr);\n constructor.prototype[getter] = function () {\n const ret = {};\n for (let n = 0; n < len; n++) {\n const component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n const basicValidator = getComponentValidator(components);\n constructor.prototype[setter] = function (val) {\n const oldVal = this.attrs[attr];\n if (validator) {\n val = validator.call(this, val, attr);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (const key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n const capitalizedAttr = Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util.error('Adding deprecated ' + attr);\n const method = GET + Util._capitalize(attr);\n const message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util.error(message);\n const val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n Factory.addSetter(constructor, attr, validator, function () {\n Util.error(message);\n });\n Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util.each(methods, function (oldMethodName, newMethodName) {\n const method = constructor.prototype[newMethodName];\n const oldGetter = GET + Util._capitalize(oldMethodName);\n const oldSetter = SET + Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","import { HitCanvas, SceneCanvas } from \"./Canvas.js\";\nimport { isCSSFiltersSupported } from \"./Context.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { getBooleanValidator, getNumberValidator, getStringValidator, } from \"./Validators.js\";\nfunction parseCSSFilters(cssFilter) {\n const filterRegex = /(\\w+)\\(([^)]+)\\)/g;\n let match;\n while ((match = filterRegex.exec(cssFilter)) !== null) {\n const [, filterName, filterValue] = match;\n switch (filterName) {\n case 'blur': {\n const blurRadius = parseFloat(filterValue.replace('px', ''));\n return function (imageData) {\n this.blurRadius(blurRadius * 0.5);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Blur) {\n KonvaFilters.Blur.call(this, imageData);\n }\n };\n }\n case 'brightness': {\n const brightness = filterValue.includes('%')\n ? parseFloat(filterValue) / 100\n : parseFloat(filterValue);\n return function (imageData) {\n this.brightness(brightness);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Brightness) {\n KonvaFilters.Brightness.call(this, imageData);\n }\n };\n }\n case 'contrast': {\n const contrast = parseFloat(filterValue);\n return function (imageData) {\n const konvaContrast = 100 * (Math.sqrt(contrast) - 1);\n this.contrast(konvaContrast);\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Contrast) {\n KonvaFilters.Contrast.call(this, imageData);\n }\n };\n }\n case 'grayscale': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Grayscale) {\n KonvaFilters.Grayscale.call(this, imageData);\n }\n };\n }\n case 'sepia': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Sepia) {\n KonvaFilters.Sepia.call(this, imageData);\n }\n };\n }\n case 'invert': {\n return function (imageData) {\n const KonvaFilters = Konva.Filters;\n if (KonvaFilters && KonvaFilters.Invert) {\n KonvaFilters.Invert.call(this, imageData);\n }\n };\n }\n default:\n Util.warn(`CSS filter \"${filterName}\" is not supported in fallback mode. Consider using function filters for better compatibility.`);\n break;\n }\n }\n return () => { };\n}\nconst ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', POINTERENTER = 'pointerenter', POINTERLEAVE = 'pointerleave', TOUCHENTER = 'touchenter', TOUCHLEAVE = 'touchleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nexport class Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n let cache = this._cache.get(attr);\n const isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n const invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util.releaseCanvas(scene._canvas, filter._canvas, hit._canvas);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n const conf = config || {};\n let rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n let width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n const cachedSceneCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: cachedSceneCanvas.width / cachedSceneCanvas.pixelRatio + Math.abs(x),\n height: cachedSceneCanvas.height / cachedSceneCanvas.pixelRatio + Math.abs(y),\n pixelRatio: cachedSceneCanvas.pixelRatio,\n }), bufferContext = bufferCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n bufferContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n bufferContext.translate(-x, -y);\n bufferCanvas.x = x;\n bufferCanvas.y = y;\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this, bufferCanvas);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n Util.releaseCanvas(bufferCanvas._canvas);\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n const points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n const trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n const transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n const cacheCanvas = this._getCachedSceneCanvas();\n const ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n const canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n let filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (!filters || filters.length === 0) {\n return sceneCanvas;\n }\n if (this._filterUpToDate) {\n return filterCanvas;\n }\n let useNativeOnly = true;\n for (let i = 0; i < filters.length; i++) {\n const fallbackRequired = typeof filters[i] === 'string' && !isCSSFiltersSupported();\n if (fallbackRequired) {\n }\n if (typeof filters[i] !== 'string' || !isCSSFiltersSupported()) {\n useNativeOnly = false;\n break;\n }\n }\n const ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n if (useNativeOnly) {\n const finalFilter = filters.join(' ');\n filterContext.save();\n filterContext.setAttr('filter', finalFilter);\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n filterContext.restore();\n this._filterUpToDate = true;\n return filterCanvas;\n }\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter === 'string') {\n filter = parseCSSFilters(filter);\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n return filterCanvas;\n }\n on(...args) {\n const evtStr = args[0];\n const selectorOrHandler = args[1];\n const handler = args[2];\n if (this._cache) {\n this._cache.delete(ALL_LISTENERS);\n }\n if (args.length === 3) {\n return this._delegate.apply(this, args);\n }\n const events = evtStr.split(SPACE);\n for (let n = 0; n < events.length; n++) {\n const event = events[n];\n const parts = event.split('.');\n const baseEvent = parts[0];\n const name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({ name, handler: selectorOrHandler });\n }\n return this;\n }\n off(evtStr, callback) {\n let events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n const e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n const stopNode = this;\n this.on(event, function (evt) {\n const targets = evt.target.findAncestors(selector, true, stopNode);\n for (let i = 0; i < targets.length; i++) {\n evt = Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n return this;\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DD._dragElements.delete(this._id);\n DD._dragElements.forEach((elem, key) => {\n if (this.isAncestorOf(elem.node)) {\n DD._dragElements.delete(key);\n }\n });\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n const parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n const method = 'get' + Util._capitalize(attr);\n if (Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n let parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return this.attrs || {};\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n let key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util._capitalize(key);\n if (Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n const layer = this.getLayer();\n let layerUnderDrag = false;\n DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n const dragSkip = !skipDragCheck &&\n !Konva.hitOnDragEnabled &&\n (layerUnderDrag || Konva.isTransforming());\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n let depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n let depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n const pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n const transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n const absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n const it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n let key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n const trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n let changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n let family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n const index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n const index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n const index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n let absOpacity = this.opacity();\n const parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n let attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util.isObject(val) && !Util._isPlainObject(val) && !Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n const res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n let ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n let selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util.isValidSelector(sel)) {\n Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n const parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n const parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n let at;\n if (top) {\n at = new Transform();\n this._eachAncestorReverse(function (node) {\n const transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n const transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n let parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n const m = this._cache.get(TRANSFORM) || new Transform();\n m.reset();\n const x = this.x(), y = this.y(), rotation = Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n let attrs = Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n const node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n const box = this.getClientRect();\n const stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new SceneCanvas({\n width: canvas.width / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n const mimeType = config.mimeType || null, quality = config.quality || null;\n const url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n let evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n const oldName = this.name();\n const newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n const names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n const names = (this.name() || '').split(/\\s/g);\n const index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n const func = this[SET + Util._capitalize(attr)];\n if (Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n const oldVal = this.attrs[key];\n if (oldVal === val && !Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n let oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n const nonBubbling = [\n MOUSEENTER,\n MOUSELEAVE,\n POINTERENTER,\n POINTERLEAVE,\n TOUCHENTER,\n TOUCHLEAVE,\n ];\n const shouldStop = nonBubbling.indexOf(eventType) !== -1 &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n const stopBubble = nonBubbling.indexOf(eventType) !== -1 &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b;\n const { nodeType } = this;\n const allListeners = Node.protoListenerMap.get(nodeType) || {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_b = (_a = obj.eventListeners) === null || _a === void 0 ? void 0 : _a[eventType]) !== null && _b !== void 0 ? _b : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n Node.protoListenerMap.set(nodeType, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n const list = topListeners.slice();\n for (let i = 0; i < list.length; i++) {\n list[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n const list = selfListeners.slice();\n const origLen = list.length;\n for (let i = 0; i < list.length; i++) {\n list[i].handler.call(this, evt);\n }\n const liveListeners = this.eventListeners[eventType];\n if (liveListeners) {\n for (let i = origLen; i < liveListeners.length; i++) {\n liveListeners[i].handler.call(this, evt);\n }\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n const pointerId = evt ? evt.pointerId : undefined;\n const stage = this.getStage();\n const ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n const pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n startEvent: evt,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: (elem.startEvent && elem.startEvent.evt) || (evt && evt.evt),\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n let newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n const dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DD._endDragBefore(evt);\n DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n const shouldCheckButton = evt.evt['button'] !== undefined;\n const canDrag = !shouldCheckButton || Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n let hasDraggingChild = false;\n DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n const stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n let className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Konva[className]) {\n Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nNode.protoListenerMap = new Map();\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on(TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on('visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on('listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on('opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, getNumberValidator());\naddGetterSetter(Node, 'y', 0, getNumberValidator());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', getStringValidator());\naddGetterSetter(Node, 'opacity', 1, getNumberValidator());\naddGetterSetter(Node, 'name', '', getStringValidator());\naddGetterSetter(Node, 'id', '', getStringValidator());\naddGetterSetter(Node, 'rotation', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, getNumberValidator());\naddGetterSetter(Node, 'scaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, getNumberValidator());\naddGetterSetter(Node, 'skewY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, getNumberValidator());\naddGetterSetter(Node, 'offsetY', 0, getNumberValidator());\naddGetterSetter(Node, 'dragDistance', undefined, getNumberValidator());\naddGetterSetter(Node, 'width', 0, getNumberValidator());\naddGetterSetter(Node, 'height', 0, getNumberValidator());\naddGetterSetter(Node, 'listening', true, getBooleanValidator());\naddGetterSetter(Node, 'preventDefault', true, getBooleanValidator());\naddGetterSetter(Node, 'filters', undefined, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, getBooleanValidator());\naddGetterSetter(Node, 'transformsEnabled', 'all', getStringValidator());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, getBooleanValidator());\nFactory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","import { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator } from \"./Validators.js\";\nexport class Container extends Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n const children = this.children || [];\n if (filterFunc) {\n return children.filter(filterFunc);\n }\n return children;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (let i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n const result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n const retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n const obj = Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n let parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n const arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n const caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n const context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n const transform = this.getAbsoluteTransform(top);\n let m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n const clipX = this.clipX();\n const clipY = this.clipY();\n context.rect(clipX || 0, clipY || 0, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n const hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n let minX, minY, maxX, maxY;\n let selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n const that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n const rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n const shapes = this.find('Shape');\n let hasVisible = false;\n for (let i = 0; i < shapes.length; i++) {\n const shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nFactory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory.addGetterSetter(Container, 'clipX', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipY', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipWidth', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipHeight', undefined, getNumberValidator());\nFactory.addGetterSetter(Container, 'clipFunc');\n","import { Konva } from \"./Global.js\";\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Konva._global['PointerEvent'] !== undefined;\nexport function getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexport function createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexport function hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexport function setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexport function releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\n","import { Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Container } from \"./Container.js\";\nimport { Konva } from \"./Global.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [POINTERLEAVE, '_pointerleave'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexport const stages = [];\nexport class Stage extends Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n let id;\n if (container.charAt(0) === '.') {\n const className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n const layers = this.children, len = layers.length;\n for (let n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n const content = this.content;\n if (content && Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n const index = stages.indexOf(this);\n if (index > -1) {\n stages.splice(index, 1);\n }\n Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n const canvas = new SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n const _context = canvas.getContext()._context;\n const layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n const layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n const layers = this.children, len = layers.length, end = len - 1;\n for (let n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n const width = this.width();\n const height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (let i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n const length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const targetShape = this._getTargetShape(eventType);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = this.getIntersection(pos);\n DD.justDragged = false;\n Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n this[eventType + 'ClickStartShape'] = undefined;\n return;\n }\n if (Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n const isTouchPointer = evt.type.indexOf('touch') >= 0 ||\n evt.pointerType === 'touch';\n if (Konva.isDragging() &&\n DD.node.preventDefault() &&\n evt.cancelable &&\n isTouchPointer) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n const eventsEnabled = !(Konva.isDragging() || Konva.isTransforming()) || Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n const processedShapesIds = {};\n let triggeredOnShape = false;\n const targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n const differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n const processedShapesIds = {};\n let skipPointerUpTrigger = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DD.justDragged) {\n Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n skipPointerUpTrigger = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n skipPointerUpTrigger = true;\n }\n if (Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!skipPointerUpTrigger) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch' && eventType !== 'pointer') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n const shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n const contentPosition = this._getContentPosition();\n let x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n const rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Konva.isBrowser) {\n return;\n }\n const container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nStage.prototype.nodeType = STAGE;\n_registerNode(Stage);\nFactory.addGetterSetter(Stage, 'container');\nif (Konva.isBrowser) {\n document.addEventListener('visibilitychange', () => {\n stages.forEach((stage) => {\n stage.batchDraw();\n });\n });\n}\n","import { Konva } from \"./Global.js\";\nimport { Transform, Util } from \"./Util.js\";\nimport { Factory } from \"./Factory.js\";\nimport { Node } from \"./Node.js\";\nimport { getNumberValidator, getNumberOrAutoValidator, getStringValidator, getBooleanValidator, getStringOrGradientValidator, } from \"./Validators.js\";\nimport { _registerNode } from \"./Global.js\";\nimport * as PointerEvents from \"./PointerEvents.js\";\nconst HAS_SHADOW = 'hasShadow';\nconst SHADOW_RGBA = 'shadowRGBA';\nconst patternImage = 'patternImage';\nconst linearGradient = 'linearGradient';\nconst radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexport const shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nexport class Shape extends Node {\n constructor(config) {\n super(config);\n let key;\n let attempts = 0;\n while (true) {\n key = Util.getHitColor();\n if (key && !(key in shapes)) {\n break;\n }\n attempts++;\n if (attempts >= 10000) {\n Util.warn('Failed to find a unique color key for a shape. Konva may work incorrectly. Most likely your browser is using canvas farbling. Consider disabling it.');\n key = Util.getRandomColor();\n break;\n }\n }\n this.colorKey = key;\n shapes[key] = this;\n }\n getContext() {\n Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n const ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n const colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillLinearGradientStartPoint();\n const end = this.fillLinearGradientEndPoint();\n const grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n const colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n const ctx = getDummyContext();\n const start = this.fillRadialGradientStartPoint();\n const end = this.fillRadialGradientEndPoint();\n const grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (let n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n const rgba = Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node.prototype.destroy.call(this);\n delete shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n const size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n let hasCachedParent = false;\n let parent = this.getParent();\n while (parent) {\n if (parent.isCached()) {\n hasCachedParent = true;\n break;\n }\n parent = parent.getParent();\n }\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo || (hasCachedParent && this.getStage()) || undefined;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer();\n const canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow();\n let stage;\n const skipBuffer = false;\n const cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n const bufferContext = bc.getContext();\n if (bufferCanvas) {\n bufferContext.save();\n bufferContext.setTransform(1, 0, 0, 1, 0, 0);\n bufferContext.clearRect(0, 0, bc.width, bc.height);\n bufferContext.restore();\n }\n else {\n bufferContext.clear();\n }\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n bufferContext._applyMiterLimit(this);\n const o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n const ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n if (!cachingSelf) {\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n context.drawImage(bc._canvas, bc.x || 0, bc.y || 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n if (!cachingSelf) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n const layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n const m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n context._applyMiterLimit(this);\n const selfCache = this === top;\n if (!selfCache) {\n const o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n const cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight();\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n const hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n const hitData = hitImageData.data;\n const len = hitData.length;\n const rgbColorKey = Util._hexToRgb(this.colorKey);\n for (let i = 0; i < len; i += 4) {\n const alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n_registerNode(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on('shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on('shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on('fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on('fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on('fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory.addGetterSetter(Shape, 'stroke', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'strokeWidth', 2, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', getNumberOrAutoValidator());\nFactory.addGetterSetter(Shape, 'strokeHitEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'perfectDrawEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Shape, 'lineJoin');\nFactory.addGetterSetter(Shape, 'lineCap');\nFactory.addGetterSetter(Shape, 'miterLimit');\nFactory.addGetterSetter(Shape, 'sceneFunc');\nFactory.addGetterSetter(Shape, 'hitFunc');\nFactory.addGetterSetter(Shape, 'dash');\nFactory.addGetterSetter(Shape, 'dashOffset', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowColor', undefined, getStringValidator());\nFactory.addGetterSetter(Shape, 'shadowBlur', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOpacity', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'shadowOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'shadowOffsetY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternImage');\nFactory.addGetterSetter(Shape, 'fill', undefined, getStringOrGradientValidator());\nFactory.addGetterSetter(Shape, 'fillPatternX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternY', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory.addGetterSetter(Shape, 'fillPatternScaleX', 1, getNumberValidator());\nFactory.addGetterSetter(Shape, 'fillPatternScaleY', 1, getNumberValidator());\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory.addGetterSetter(Shape, 'fillRule', undefined, getStringValidator());\nFactory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { Node } from \"./Node.js\";\nimport { Factory } from \"./Factory.js\";\nimport { SceneCanvas, HitCanvas } from \"./Canvas.js\";\nimport { getBooleanValidator } from \"./Validators.js\";\nimport { shapes } from \"./Shape.js\";\nimport { _registerNode } from \"./Global.js\";\nconst HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nexport class Layer extends Container {\n constructor(config) {\n super(config);\n this.canvas = new SceneCanvas();\n this.hitCanvas = new HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node.prototype.moveToTop.call(this);\n const stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n const moved = Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n const stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node.prototype.moveDown.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node.prototype.moveToBottom.call(this)) {\n const stage = this.getStage();\n if (stage) {\n const children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n const _canvas = this.getNativeCanvasElement();\n Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = { ...config };\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n let spiralSearchDistance = 1;\n let continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util.getHitColorKey(p[0], p[1], p[2]);\n const shape = shapes[colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top, bufferCanvas) {\n const layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container.prototype.drawScene.call(this, canvas, top, bufferCanvas);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n const layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n const parent = this.parent;\n const added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nLayer.prototype.nodeType = 'Layer';\n_registerNode(Layer);\nFactory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory.addGetterSetter(Layer, 'hitGraphEnabled', true, getBooleanValidator());\n","import { Util } from \"./Util.js\";\nimport { Layer } from \"./Layer.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class FastLayer extends Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nFastLayer.prototype.nodeType = 'FastLayer';\n_registerNode(FastLayer);\n","import { Util } from \"./Util.js\";\nimport { Container } from \"./Container.js\";\nimport { _registerNode } from \"./Global.js\";\nexport class Group extends Container {\n _validateAdd(child) {\n const type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nGroup.prototype.nodeType = 'Group';\n_registerNode(Group);\n","import { glob } from \"./Global.js\";\nimport { Util } from \"./Util.js\";\nconst now = (function () {\n if (glob.performance && glob.performance.now) {\n return function () {\n return glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nexport class Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (const key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","import { Util } from \"./Util.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Node } from \"./Node.js\";\nimport { Konva } from \"./Global.js\";\nconst blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nlet idCounter = 0;\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n const handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n const t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nexport class Tween {\n constructor(config) {\n const that = this, node = config.node, nodeId = node._id, easing = config.easing || Easings.Linear, yoyo = !!config.yoyo;\n let duration, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n const layers = node.getLayer() ||\n (node instanceof Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n const node = this.node, nodeId = node._id;\n let diff, len, trueEnd, trueStart, endRGBA;\n const tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n let start = node.getAttr(key);\n if (Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (let n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n const startRGBA = Util.colorToRGBA(start[n]);\n endRGBA = Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (let n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util.colorToRGBA(start);\n endRGBA = Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n const node = this.node, attrs = Tween.attrs[node._id][this._id];\n let key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n const node = this.node;\n const attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n const nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId];\n this.pause();\n if (this.anim) {\n this.anim.stop();\n }\n for (const key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n if (Tween.tweens[nodeId]) {\n if (Object.keys(Tween.tweens[nodeId]).length === 0) {\n delete Tween.tweens[nodeId];\n }\n if (Object.keys(Tween.attrs[nodeId]).length === 0) {\n delete Tween.attrs[nodeId];\n }\n }\n }\n}\nTween.attrs = {};\nTween.tweens = {};\nNode.prototype.to = function (params) {\n const onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n const tween = new Tween(params);\n tween.play();\n};\nexport const Easings = {\n BackEaseIn(t, b, c, d) {\n const s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n const s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n let s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n let s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","import { Konva as Global } from \"./Global.js\";\nimport { Util, Transform } from \"./Util.js\";\nimport { Node } from \"./Node.js\";\nimport { Container } from \"./Container.js\";\nimport { Stage, stages } from \"./Stage.js\";\nimport { Layer } from \"./Layer.js\";\nimport { FastLayer } from \"./FastLayer.js\";\nimport { Group } from \"./Group.js\";\nimport { DD } from \"./DragAndDrop.js\";\nimport { Shape, shapes } from \"./Shape.js\";\nimport { Animation } from \"./Animation.js\";\nimport { Tween, Easings } from \"./Tween.js\";\nimport { Context } from \"./Context.js\";\nimport { Canvas } from \"./Canvas.js\";\nexport const Konva = Util._assign(Global, {\n Util,\n Transform,\n Node,\n Container,\n Stage,\n stages,\n Layer,\n FastLayer,\n Group,\n DD,\n Shape,\n shapes,\n Animation,\n Tween,\n Easings,\n Context,\n Canvas,\n});\nexport default Konva;\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getBooleanValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Arc extends Shape {\n _sceneFunc(context) {\n const angle = Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = [\n 'innerRadius',\n 'outerRadius',\n 'angle',\n 'clockwise',\n];\n_registerNode(Arc);\nFactory.addGetterSetter(Arc, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'outerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Arc, 'clockwise', false, getBooleanValidator());\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberArrayValidator, getNumberValidator } from \"../Validators.js\";\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n const d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n const len = p.length, allPoints = [];\n for (let n = 2; n < len - 2; n += 2) {\n const cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nfunction getBezierExtremaPoints(points) {\n const axisPoints = [\n [points[0], points[2], points[4], points[6]],\n [points[1], points[3], points[5], points[7]],\n ];\n const extremaTs = [];\n for (const axis of axisPoints) {\n const a = -3 * axis[0] + 9 * axis[1] - 9 * axis[2] + 3 * axis[3];\n if (a !== 0) {\n const b = 6 * axis[0] - 12 * axis[1] + 6 * axis[2];\n const c = -3 * axis[0] + 3 * axis[1];\n const discriminant = b * b - 4 * a * c;\n if (discriminant >= 0) {\n const d = Math.sqrt(discriminant);\n extremaTs.push((-b + d) / (2 * a));\n extremaTs.push((-b - d) / (2 * a));\n }\n }\n }\n return extremaTs\n .filter((t) => t > 0 && t < 1)\n .flatMap((t) => axisPoints.map((axis) => {\n const mt = 1 - t;\n return (mt * mt * mt * axis[0] +\n 3 * mt * mt * t * axis[1] +\n 3 * mt * t * t * axis[2] +\n t * t * t * axis[3]);\n }));\n}\nexport class Line extends Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n const points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier();\n if (!length) {\n return;\n }\n let n = 0;\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n const tp = this.getTensionPoints();\n const len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n const p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n let points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else if (this.bezier()) {\n points = [\n points[0],\n points[1],\n ...getBezierExtremaPoints(this.points()),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n_registerNode(Line);\nFactory.addGetterSetter(Line, 'closed', false);\nFactory.addGetterSetter(Line, 'bezier', false);\nFactory.addGetterSetter(Line, 'tension', 0, getNumberValidator());\nFactory.addGetterSetter(Line, 'points', [], getNumberArrayValidator());\n","export const tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexport const cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexport const binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nexport const getCubicArcLength = (xs, ys, t) => {\n let sum;\n let correctedT;\n const n = 20;\n const z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * tValues[n][i] + z;\n sum += cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexport const getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nexport const t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\n","import { Factory } from \"../Factory.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getCubicArcLength, getQuadraticArcLength, t2length, } from \"../BezierFunctions.js\";\nexport class Path extends Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n const ca = this.dataArray;\n context.beginPath();\n let isClosed = false;\n for (let n = 0; n < ca.length; n++) {\n const c = ca[n].command;\n const p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n const r = rx > ry ? rx : ry;\n const scaleX = rx > ry ? 1 : rx / ry;\n const scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n let points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n const start = data.points[4];\n const dTheta = data.points[5];\n const end = data.points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n let minX = points[0];\n let maxX = points[0];\n let minY = points[1];\n let maxY = points[1];\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (let i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n let points, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n points = dataArray[i - 1].points.slice(-2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n if (length < 0.01) {\n const cmd = dataArray[i].command;\n if (cmd === 'M') {\n points = dataArray[i].points.slice(0, 2);\n return {\n x: points[0],\n y: points[1],\n };\n }\n else {\n return {\n x: dataArray[i].start.x,\n y: dataArray[i].start.y,\n };\n }\n }\n const cp = dataArray[i];\n const p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getCubicArcLength([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier(t2length(length, Path.getPathLength(dataArray), (i) => {\n return getQuadraticArcLength([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n const cx = p[0], cy = p[1], rx = p[2], ry = p[3], dTheta = p[5], psi = p[6];\n let theta = p[4];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n fromX = fromX !== null && fromX !== void 0 ? fromX : P1x;\n fromY = fromY !== null && fromY !== void 0 ? fromY : P1y;\n const len = this.getLineLength(P1x, P1y, P2x, P2y);\n if (len < 1e-10) {\n return { x: P1x, y: P1y };\n }\n if (P2x === P1x) {\n return { x: fromX, y: fromY + (P2y > P1y ? dist : -dist) };\n }\n const m = (P2y - P1y) / (P2x - P1x);\n const run = Math.sqrt((dist * dist) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const rise = m * run;\n if (Math.abs(fromY - P1y - m * (fromX - P1x)) < 1e-10) {\n return { x: fromX + run, y: fromY + rise };\n }\n const u = ((fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y)) / (len * len);\n const ix = P1x + u * (P2x - P1x);\n const iy = P1y + u * (P2y - P1y);\n const pRise = this.getLineLength(fromX, fromY, ix, iy);\n const pRun = Math.sqrt(dist * dist - pRise * pRise);\n const adjustedRun = Math.sqrt((pRun * pRun) / (1 + m * m)) * (P2x < P1x ? -1 : 1);\n const adjustedRise = m * adjustedRun;\n return { x: ix + adjustedRun, y: iy + adjustedRise };\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n const x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n const y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return { x, y };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n const x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n const y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return { x, y };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n const cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n const pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n let cs = data;\n const cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (let n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n const arr = cs.split('|');\n const ca = [];\n const coords = [];\n let cpx = 0;\n let cpy = 0;\n const re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n let match;\n for (let n = 1; n < arr.length; n++) {\n let str = arr[n];\n let c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n let p = [];\n let arcParamIndex = c === 'A' || c === 'a' ? 0 : -1;\n for (let j = 0, jlen = coords.length; j < jlen; j++) {\n const token = coords[j];\n if (token === '00') {\n p.push(0, 0);\n if (arcParamIndex >= 0) {\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n continue;\n }\n if (arcParamIndex >= 0) {\n if (arcParamIndex === 3) {\n if (/^[01]{2}\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n p.push(parseFloat(token.slice(2)));\n arcParamIndex += 3;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '11' || token === '10' || token === '01') {\n p.push(parseInt(token[0], 10));\n p.push(parseInt(token[1], 10));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n else if (arcParamIndex === 4) {\n if (/^[01]\\d+(?:\\.\\d+)?$/.test(token)) {\n p.push(parseInt(token[0], 10));\n p.push(parseFloat(token.slice(1)));\n arcParamIndex += 2;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n if (token === '0' || token === '1') {\n p.push(parseInt(token, 10));\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n continue;\n }\n }\n const parsedArc = parseFloat(token);\n if (!isNaN(parsedArc)) {\n p.push(parsedArc);\n }\n else {\n p.push(0);\n }\n arcParamIndex += 1;\n if (arcParamIndex >= 7)\n arcParamIndex -= 7;\n }\n else {\n const parsed = parseFloat(token);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n let cmd = '';\n let points = [];\n const startX = cpx, startY = cpy;\n let prevCmd, ctlPtx, ctlPty;\n let rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n const dx = p.shift();\n const dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (let idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n let len, p1, p2, t;\n const path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return getCubicArcLength([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return getQuadraticArcLength([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n const start = points[4];\n const dTheta = points[5];\n const end = points[4] + dTheta;\n let inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n const psi = psiDeg * (Math.PI / 180.0);\n const xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n const yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n let f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n const cxp = (f * rx * yp) / ry;\n const cyp = (f * -ry * xp) / rx;\n const cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n const cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n const vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n const vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n const vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n const theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n const u = [(xp - cxp) / rx, (yp - cyp) / ry];\n const v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n let dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n_registerNode(Path);\nFactory.addGetterSetter(Path, 'data');\n","import { Factory } from \"../Factory.js\";\nimport { Line } from \"./Line.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Path } from \"./Path.js\";\nexport class Arrow extends Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n const PI2 = Math.PI * 2;\n const points = this.points();\n let tp = points;\n const fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n const length = this.pointerLength();\n const n = points.length;\n let dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n const radians = (Math.atan2(dy, dx) + PI2) % PI2;\n const width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n const isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x,\n y: lineRect.y - offset,\n width: lineRect.width,\n height: lineRect.height + offset * 2,\n };\n }\n}\nArrow.prototype.className = 'Arrow';\n_registerNode(Arrow);\nFactory.addGetterSetter(Arrow, 'pointerLength', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerWidth', 10, getNumberValidator());\nFactory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Circle extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Circle);\nFactory.addGetterSetter(Circle, 'radius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Ellipse extends Shape {\n _sceneFunc(context) {\n const rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n_registerNode(Ellipse);\nFactory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory.addGetterSetter(Ellipse, 'radiusX', 0, getNumberValidator());\nFactory.addGetterSetter(Ellipse, 'radiusY', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nexport class Image extends Shape {\n constructor(attrs) {\n super(attrs);\n this._loadListener = () => {\n this._requestDraw();\n };\n this.on('imageChange.konva', (props) => {\n this._removeImageLoad(props.oldVal);\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', this._loadListener);\n }\n }\n _removeImageLoad(image) {\n if (image && image['removeEventListener']) {\n image['removeEventListener']('load', this._loadListener);\n }\n }\n destroy() {\n this._removeImageLoad(this.image());\n super.destroy();\n return this;\n }\n _useBufferCanvas() {\n const hasCornerRadius = !!this.cornerRadius();\n const hasShadow = this.hasShadow();\n if (hasCornerRadius && hasShadow) {\n return true;\n }\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n const width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b, _c;\n return (_c = (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width) !== null && _c !== void 0 ? _c : 0;\n }\n getHeight() {\n var _a, _b, _c;\n return (_c = (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height) !== null && _c !== void 0 ? _c : 0;\n }\n static fromURL(url, callback, onError = null) {\n const img = Util.createImageElement();\n img.onload = function () {\n const image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nImage.prototype.className = 'Image';\nImage.prototype._attrsAffectingSize = ['image'];\n_registerNode(Image);\nFactory.addGetterSetter(Image, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\nFactory.addGetterSetter(Image, 'image');\nFactory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory.addGetterSetter(Image, 'cropX', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropY', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Image, 'cropHeight', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Group } from \"../Group.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nexport class Label extends Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n let that = this, n;\n const func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n let text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nLabel.prototype.className = 'Label';\n_registerNode(Label);\nexport class Tag extends Shape {\n _sceneFunc(context) {\n const width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n let x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nTag.prototype.className = 'Tag';\n_registerNode(Tag);\nFactory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory.addGetterSetter(Tag, 'pointerWidth', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'pointerHeight', 0, getNumberValidator());\nFactory.addGetterSetter(Tag, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberOrArrayOfNumbersValidator } from \"../Validators.js\";\nexport class Rect extends Shape {\n _sceneFunc(context) {\n const cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nRect.prototype.className = 'Rect';\n_registerNode(Rect);\nFactory.addGetterSetter(Rect, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberOrArrayOfNumbersValidator, getNumberValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nimport { Util } from \"../Util.js\";\nexport class RegularPolygon extends Shape {\n _sceneFunc(context) {\n const points = this._getPoints(), radius = this.radius(), sides = this.sides(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.moveTo(points[0].x, points[0].y);\n for (let n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n }\n else {\n Util.drawRoundedPolygonPath(context, points, sides, radius, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (let n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n let minX = points[0].x;\n let maxX = points[0].x;\n let minY = points[0].y;\n let maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n_registerNode(RegularPolygon);\nFactory.addGetterSetter(RegularPolygon, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());\nFactory.addGetterSetter(RegularPolygon, 'cornerRadius', 0, getNumberOrArrayOfNumbersValidator(4));\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst PIx2 = Math.PI * 2;\nexport class Ring extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Ring);\nFactory.addGetterSetter(Ring, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Ring, 'outerRadius', 0, getNumberValidator());\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Animation } from \"../Animation.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Sprite extends Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation(() => {\n const updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n const offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n const anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n const offset = offsets[anim];\n const ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n const that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n const layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n const index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nSprite.prototype.className = 'Sprite';\n_registerNode(Sprite);\nFactory.addGetterSetter(Sprite, 'animation');\nFactory.addGetterSetter(Sprite, 'animations');\nFactory.addGetterSetter(Sprite, 'frameOffsets');\nFactory.addGetterSetter(Sprite, 'image');\nFactory.addGetterSetter(Sprite, 'frameIndex', 0, getNumberValidator());\nFactory.addGetterSetter(Sprite, 'frameRate', 17, getNumberValidator());\nFactory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Star extends Shape {\n _sceneFunc(context) {\n const innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (let n = 1; n < numPoints * 2; n++) {\n const radius = n % 2 === 0 ? outerRadius : innerRadius;\n const x = radius * Math.sin((n * Math.PI) / numPoints);\n const y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n_registerNode(Star);\nFactory.addGetterSetter(Star, 'numPoints', 5, getNumberValidator());\nFactory.addGetterSetter(Star, 'innerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Star, 'outerRadius', 0, getNumberValidator());\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator, getStringValidator, getNumberOrAutoValidator, getBooleanValidator, } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport function stringToArray(string) {\n return [...string].reduce((acc, char, index, array) => {\n if (/\\p{Emoji}/u.test(char)) {\n const nextChar = array[index + 1];\n if (nextChar && /\\p{Emoji_Modifier}|\\u200D/u.test(nextChar)) {\n acc.push(char + nextChar);\n array[index + 1] = '';\n }\n else {\n acc.push(char);\n }\n }\n else if (/\\p{Regional_Indicator}{2}/u.test(char + (array[index + 1] || ''))) {\n acc.push(char + array[index + 1]);\n }\n else if (index > 0 && /\\p{Mn}|\\p{Me}|\\p{Mc}/u.test(char)) {\n acc[acc.length - 1] += char;\n }\n else if (char) {\n acc.push(char);\n }\n return acc;\n }, []);\n}\nconst AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nlet _shadowOpacityBuggy = null;\nfunction hasShadowOpacityBug() {\n if (_shadowOpacityBuggy !== null) {\n return _shadowOpacityBuggy;\n }\n _shadowOpacityBuggy = false;\n try {\n const c = document.createElement('canvas');\n c.width = 10;\n c.height = 10;\n const ctx = c.getContext(CONTEXT_2D);\n if (ctx) {\n ctx.globalAlpha = 0;\n ctx.shadowColor = 'black';\n ctx.shadowBlur = 5;\n ctx.shadowOffsetX = 5;\n ctx.shadowOffsetY = 5;\n ctx.fillStyle = 'black';\n ctx.font = '10px Arial';\n ctx.fillText('X', 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0) {\n _shadowOpacityBuggy = true;\n break;\n }\n }\n }\n }\n catch (e) {\n }\n return _shadowOpacityBuggy;\n}\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nexport class Text extends Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (let n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var _a, _b;\n const textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n let padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), charRenderFunc = this.charRenderFunc(), fill = this.fill(), textDecoration = this.textDecoration(), underlineOffset = this.underlineOffset(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n let translateY = lineHeightPx / 2;\n let baseline = MIDDLE;\n if (!Konva.legacyTextRendering) {\n const metrics = this.measureSize('M');\n baseline = 'alphabetic';\n const ascent = (_a = metrics.fontBoundingBoxAscent) !== null && _a !== void 0 ? _a : metrics.actualBoundingBoxAscent;\n const descent = (_b = metrics.fontBoundingBoxDescent) !== null && _b !== void 0 ? _b : metrics.actualBoundingBoxDescent;\n translateY = (ascent - descent) / 2 + lineHeightPx / 2;\n }\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', baseline);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n let lineTranslateX = 0;\n let lineTranslateY = 0;\n const obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n const yOffset = underlineOffset !== null && underlineOffset !== void 0 ? underlineOffset : (!Konva.legacyTextRendering\n ? Math.round(fontSize / 4)\n : Math.round(fontSize / 2));\n const x = lineTranslateX;\n const y = translateY + lineTranslateY + yOffset;\n context.moveTo(x, y);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), y);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n const lineThroughStartX = lineTranslateX;\n if (direction !== RTL &&\n (letterSpacing !== 0 || align === JUSTIFY || charRenderFunc)) {\n const spacesNumber = text.split(' ').length - 1;\n const array = stringToArray(text);\n for (let li = 0; li < array.length; li++) {\n const letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n if (charRenderFunc) {\n context.save();\n const previousLines = textArr.slice(0, n);\n const previousGraphemes = previousLines.reduce((acc, line) => acc + stringToArray(line.text).length, 0);\n const charIndex = li + previousGraphemes;\n charRenderFunc({\n char: letter,\n index: charIndex,\n x: lineTranslateX,\n y: translateY + lineTranslateY,\n lineIndex: n,\n column: li,\n isLastInLine: lastLine,\n width: this.measureSize(letter).width,\n context,\n });\n }\n context.fillStrokeShape(this);\n if (charRenderFunc) {\n context.restore();\n }\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n const yOffset = !Konva.legacyTextRendering\n ? -Math.round(fontSize / 4)\n : 0;\n const x = lineThroughStartX;\n context.moveTo(x, translateY + lineTranslateY + yOffset);\n const lineWidth = align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(x + Math.round(lineWidth), translateY + lineTranslateY + yOffset);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n const width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n const str = Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n const isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n const isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;\n let _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n const scaleFactor = fontSize / 100;\n return {\n actualBoundingBoxAscent: (_a = metrics.actualBoundingBoxAscent) !== null && _a !== void 0 ? _a : 71.58203125 * scaleFactor,\n actualBoundingBoxDescent: (_b = metrics.actualBoundingBoxDescent) !== null && _b !== void 0 ? _b : 0,\n actualBoundingBoxLeft: (_c = metrics.actualBoundingBoxLeft) !== null && _c !== void 0 ? _c : -7.421875 * scaleFactor,\n actualBoundingBoxRight: (_d = metrics.actualBoundingBoxRight) !== null && _d !== void 0 ? _d : 75.732421875 * scaleFactor,\n alphabeticBaseline: (_e = metrics.alphabeticBaseline) !== null && _e !== void 0 ? _e : 0,\n emHeightAscent: (_f = metrics.emHeightAscent) !== null && _f !== void 0 ? _f : 100 * scaleFactor,\n emHeightDescent: (_g = metrics.emHeightDescent) !== null && _g !== void 0 ? _g : -20 * scaleFactor,\n fontBoundingBoxAscent: (_h = metrics.fontBoundingBoxAscent) !== null && _h !== void 0 ? _h : 91 * scaleFactor,\n fontBoundingBoxDescent: (_j = metrics.fontBoundingBoxDescent) !== null && _j !== void 0 ? _j : 21 * scaleFactor,\n hangingBaseline: (_k = metrics.hangingBaseline) !== null && _k !== void 0 ? _k : 72.80000305175781 * scaleFactor,\n ideographicBaseline: (_l = metrics.ideographicBaseline) !== null && _l !== void 0 ? _l : -21 * scaleFactor,\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n const width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n const letterSpacing = this.letterSpacing();\n const length = text.length;\n return getDummyContext().measureText(text).width + letterSpacing * length;\n }\n _setTextData() {\n let lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n const additionalWidth = shouldAddEllipsis\n ? this._getTextWidth(ELLIPSIS)\n : 0;\n for (let i = 0, max = lines.length; i < max; ++i) {\n let line = lines[i];\n let lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n let low = 0, high = stringToArray(line).length, match = '', matchWidth = 0;\n while (low < high) {\n const mid = (low + high) >>> 1, lineArray = stringToArray(line), substr = lineArray.slice(0, mid + 1).join(''), substrWidth = this._getTextWidth(substr);\n const shouldConsiderEllipsis = shouldAddEllipsis &&\n fixedHeight &&\n currentHeightPx + lineHeightPx > maxHeightPx;\n const effectiveWidth = shouldConsiderEllipsis\n ? substrWidth + additionalWidth\n : substrWidth;\n if (effectiveWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n const lineArray = stringToArray(line);\n const matchArray = stringToArray(match);\n const nextChar = lineArray[matchArray.length];\n const nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n let wrapIndex;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = matchArray.length;\n }\n else {\n const lastSpaceIndex = matchArray.lastIndexOf(SPACE);\n const lastDashIndex = matchArray.lastIndexOf(DASH);\n wrapIndex = Math.max(lastSpaceIndex, lastDashIndex) + 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = lineArray.slice(0, low).join('');\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n const shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n const lineArray = stringToArray(line);\n line = lineArray.slice(low).join('').trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n const fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n const width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n const lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n const haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n if (hasShadow && this.getAbsoluteOpacity() !== 1 && hasShadowOpacityBug()) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n_registerNode(Text);\nFactory.overWriteSetter(Text, 'width', getNumberOrAutoValidator());\nFactory.overWriteSetter(Text, 'height', getNumberOrAutoValidator());\nFactory.addGetterSetter(Text, 'direction', INHERIT);\nFactory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory.addGetterSetter(Text, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory.addGetterSetter(Text, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'align', LEFT);\nFactory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory.addGetterSetter(Text, 'lineHeight', 1, getNumberValidator());\nFactory.addGetterSetter(Text, 'wrap', WORD);\nFactory.addGetterSetter(Text, 'ellipsis', false, getBooleanValidator());\nFactory.addGetterSetter(Text, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(Text, 'text', '', getStringValidator());\nFactory.addGetterSetter(Text, 'textDecoration', '');\nFactory.addGetterSetter(Text, 'underlineOffset', undefined, getNumberValidator());\nFactory.addGetterSetter(Text, 'charRenderFunc', undefined);\n","import { Util } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Path } from \"./Path.js\";\nimport { Text, stringToArray } from \"./Text.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nexport class TextPath extends Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length > totalLength) {\n return null;\n }\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n const textDecoration = this.textDecoration();\n const fill = this.fill();\n const fontSize = this.fontSize();\n const glyphInfo = this.glyphInfo;\n const hasUnderline = textDecoration.indexOf('underline') !== -1;\n const hasLineThrough = textDecoration.indexOf('line-through') !== -1;\n if (hasUnderline) {\n context.beginPath();\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (hasUnderline) {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(glyphInfo[i].width, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (hasUnderline) {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n if (hasLineThrough) {\n context.beginPath();\n for (let i = 0; i < glyphInfo.length; i++) {\n context.save();\n const p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n if (i === 0) {\n context.moveTo(0, 0);\n }\n context.lineTo(glyphInfo[i].width, 0);\n context.restore();\n }\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n const glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n const p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (let i = 0; i < glyphInfo.length; i++) {\n const p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n const dummyCanvas = this.dummyCanvas;\n const _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n const metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const charArr = stringToArray(this.text());\n const chars = [];\n let width = 0;\n for (let i = 0; i < charArr.length; i++) {\n chars.push({\n char: charArr[i],\n width: this._getTextSize(charArr[i]).width,\n });\n width += chars[i].width;\n }\n const { width: fullTextWidth, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const kerningAdjustment = Math.max(0, width - fullTextWidth);\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n let offsetToGlyph = offset;\n for (let i = 0; i < chars.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n const char = chars[i].char;\n let glyphWidth = chars[i].width + letterSpacing;\n if (char === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndLength = offsetToGlyph + glyphWidth;\n const charEndPoint = this._getPointAtLength(charEndLength > this.pathLength &&\n charEndLength - this.pathLength <= kerningAdjustment\n ? this.pathLength\n : charEndLength);\n if (!charEndPoint) {\n return;\n }\n const width = Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(chars[i - 1].char, char) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n width: width,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n const points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n let minX = points[0] || 0;\n let maxX = points[0] || 0;\n let minY = points[1] || 0;\n let maxY = points[1] || 0;\n let x, y;\n for (let i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n const fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n_registerNode(TextPath);\nFactory.addGetterSetter(TextPath, 'data');\nFactory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory.addGetterSetter(TextPath, 'fontSize', 12, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory.addGetterSetter(TextPath, 'align', 'left');\nFactory.addGetterSetter(TextPath, 'letterSpacing', 0, getNumberValidator());\nFactory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory.addGetterSetter(TextPath, 'textDecoration', '');\nFactory.addGetterSetter(TextPath, 'kerningFunc', undefined);\n","import { Util, Transform } from \"../Util.js\";\nimport { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Rect } from \"./Rect.js\";\nimport { Group } from \"../Group.js\";\nimport { Konva } from \"../Global.js\";\nimport { getBooleanValidator, getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nconst EVENTS_NAME = 'tr-konva';\nconst ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateAnchorAngleChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nconst NODES_RECT = 'nodesRect';\nconst TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n 'draggableChange',\n];\nconst ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util.degToRad(ANGLES[anchorName] || 0);\n const angle = ((Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util._inRange(angle, 315 + 22.5, 360) || Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nconst ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nconst MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nlet activeTransformersCount = 0;\nexport class Transformer extends Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._elementsCreated = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n if (node._attrsAffectingSize.length) {\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n }\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n const elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n const rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const absScale = node.getAbsoluteScale(relative);\n const absPos = node.getAbsolutePosition(relative);\n const dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n const dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n const node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n const points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n const trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n const transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Transform();\n tr.rotate(-Konva.getAngle(this.rotation()));\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n const transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n this._elementsCreated = true;\n }\n _createAnchor(name) {\n const anchor = new Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n const self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n const rad = Konva.getAngle(this.rotation());\n const rotateCursor = this.rotateAnchorCursor();\n const cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n const back = new Shape({\n name: 'back',\n width: 0,\n height: 0,\n sceneFunc(ctx, shape) {\n const tr = shape.getParent();\n const padding = tr.padding();\n const width = shape.width();\n const height = shape.height();\n ctx.beginPath();\n ctx.rect(-padding, -padding, width + padding * 2, height + padding * 2);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n const rotateAnchorAngle = tr.rotateAnchorAngle();\n const rotateAnchorOffset = tr.rotateAnchorOffset();\n const rad = Util.degToRad(rotateAnchorAngle);\n const dirX = Math.sin(rad);\n const dirY = -Math.cos(rad);\n const cx = width / 2;\n const cy = height / 2;\n let t = Infinity;\n if (dirY < 0) {\n t = Math.min(t, -cy / dirY);\n }\n else if (dirY > 0) {\n t = Math.min(t, (height - cy) / dirY);\n }\n if (dirX < 0) {\n t = Math.min(t, -cx / dirX);\n }\n else if (dirX > 0) {\n t = Math.min(t, (width - cx) / dirX);\n }\n const edgeX = cx + dirX * t;\n const edgeY = cy + dirY * t;\n const sign = Util._sign(height);\n const endX = edgeX + dirX * rotateAnchorOffset * sign;\n const endY = edgeY + dirY * rotateAnchorOffset * sign;\n ctx.moveTo(edgeX, edgeY);\n ctx.lineTo(endX, endY);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n const padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n if (this._transforming) {\n return;\n }\n this._movingAnchorName = e.target.name().split(' ')[0];\n const attrs = this._getNodeRect();\n const width = attrs.width;\n const height = attrs.height;\n const hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n const ap = e.target.getAbsolutePosition();\n const pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n activeTransformersCount++;\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n let x, y, newHypotenuse;\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n const stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n const attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n const rotateAnchorAngleRad = Konva.getAngle(this.rotateAnchorAngle());\n let delta = Math.atan2(-y, x) + Math.PI / 2 - rotateAnchorAngleRad;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n const oldRotation = Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n const shiftBehavior = this.shiftBehavior();\n let keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n let centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n const reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n const reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n const comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n const reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n const reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n const topLeft = this.findOne('.top-left');\n const bottomRight = this.findOne('.bottom-right');\n const topOffsetX = topLeft.x();\n const topOffsetY = topLeft.y();\n const bottomOffsetX = this.getWidth() - bottomRight.x();\n const bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n const absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n const width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n const height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n var _a;\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n const node = this.getNode();\n activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n const oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n const t = new Transform();\n t.rotate(Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n if (!node.getStage()) {\n return;\n }\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n const attrs = this._getNodeRect();\n this.rotation(Util._getRotation(attrs.rotation));\n const width = attrs.width;\n const height = attrs.height;\n const enabledAnchors = this.enabledAnchors();\n const resizeEnabled = this.resizeEnabled();\n const padding = this.padding();\n const anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n const rotateAnchorAngle = this.rotateAnchorAngle();\n const rotateAnchorOffset = this.rotateAnchorOffset();\n const rad = Util.degToRad(rotateAnchorAngle);\n const dirX = Math.sin(rad);\n const dirY = -Math.cos(rad);\n const cx = width / 2;\n const cy = height / 2;\n let t = Infinity;\n if (dirY < 0) {\n t = Math.min(t, -cy / dirY);\n }\n else if (dirY > 0) {\n t = Math.min(t, (height - cy) / dirY);\n }\n if (dirX < 0) {\n t = Math.min(t, -cx / dirX);\n }\n else if (dirX > 0) {\n t = Math.min(t, (width - cx) / dirX);\n }\n const edgeX = cx + dirX * t;\n const edgeY = cy + dirY * t;\n const sign = Util._sign(height);\n this._batchChangeChild('.rotater', {\n x: edgeX + dirX * rotateAnchorOffset * sign,\n y: edgeY + dirY * rotateAnchorOffset * sign - padding * dirY,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n draggable: this.nodes().some((node) => node.draggable()),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n const anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n add(...children) {\n if (this._elementsCreated) {\n Util.error('You cannot add external nodes to the Transformer. Use tr.nodes([node]) instead.');\n return this;\n }\n return super.add(...children);\n }\n toObject() {\n return Node.prototype.toObject.call(this);\n }\n clone(obj) {\n const node = Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n_registerNode(Transformer);\nFactory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory.addGetterSetter(Transformer, 'flipEnabled', true, getBooleanValidator());\nFactory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorSize', 10, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorAngle', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'borderDash');\nFactory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory.addGetterSetter(Transformer, 'padding', 0, getNumberValidator());\nFactory.addGetterSetter(Transformer, 'nodes');\nFactory.addGetterSetter(Transformer, 'node');\nFactory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Shape } from \"../Shape.js\";\nimport { Konva } from \"../Global.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nimport { _registerNode } from \"../Global.js\";\nexport class Wedge extends Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n_registerNode(Wedge);\nFactory.addGetterSetter(Wedge, 'radius', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'angle', 0, getNumberValidator());\nFactory.addGetterSetter(Wedge, 'clockwise', false);\nFactory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n const pixels = imageData.data, width = imageData.width, height = imageData.height;\n let p, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n const div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n let stackEnd = null, stack = stackStart, stackIn = null, stackOut = null;\n for (let i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (let y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (let i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (let x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (let i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n let yp = width;\n for (let i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (let y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nexport const Blur = function Blur(imageData) {\n const radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nFactory.addGetterSetter(Node, 'blurRadius', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Brighten = function (imageData) {\n const brightness = this.brightness() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nFactory.addGetterSetter(Node, 'brightness', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Contrast = function (imageData) {\n const adjust = Math.pow((this.contrast() + 100) / 100, 2);\n const data = imageData.data, nPixels = data.length;\n let red = 150, green = 150, blue = 150;\n for (let i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nFactory.addGetterSetter(Node, 'contrast', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n const fromRange = fromMax - fromMin, toRange = toMax - toMin;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n let toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nexport const Enhance = function (imageData) {\n const data = imageData.data, nSubPixels = data.length;\n let rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b;\n const enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n let rGoalMax, rGoalMin, gGoalMax, gGoalMin, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n const rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n const gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n const bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (let i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nFactory.addGetterSetter(Node, 'enhance', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Emboss = function (imageData) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const data = imageData.data;\n const w = imageData.width;\n const h = imageData.height;\n const strength01 = Math.min(1, Math.max(0, (_b = (_a = this.embossStrength) === null || _a === void 0 ? void 0 : _a.call(this)) !== null && _b !== void 0 ? _b : 0.5));\n const whiteLevel01 = Math.min(1, Math.max(0, (_d = (_c = this.embossWhiteLevel) === null || _c === void 0 ? void 0 : _c.call(this)) !== null && _d !== void 0 ? _d : 0.5));\n const directionMap = {\n 'top-left': 315,\n top: 270,\n 'top-right': 225,\n right: 180,\n 'bottom-right': 135,\n bottom: 90,\n 'bottom-left': 45,\n left: 0,\n };\n const directionDeg = (_g = directionMap[(_f = (_e = this.embossDirection) === null || _e === void 0 ? void 0 : _e.call(this)) !== null && _f !== void 0 ? _f : 'top-left']) !== null && _g !== void 0 ? _g : 315;\n const blend = !!((_j = (_h = this.embossBlend) === null || _h === void 0 ? void 0 : _h.call(this)) !== null && _j !== void 0 ? _j : false);\n const strength = strength01 * 10;\n const bias = whiteLevel01 * 255;\n const dirRad = (directionDeg * Math.PI) / 180;\n const cx = Math.cos(dirRad);\n const cy = Math.sin(dirRad);\n const SCALE = (128 / 1020) * strength;\n const src = new Uint8ClampedArray(data);\n const lum = new Float32Array(w * h);\n for (let p = 0, i = 0; i < data.length; i += 4, p++) {\n lum[p] = 0.2126 * src[i] + 0.7152 * src[i + 1] + 0.0722 * src[i + 2];\n }\n const Gx = [-1, 0, 1, -2, 0, 2, -1, 0, 1];\n const Gy = [-1, -2, -1, 0, 0, 0, 1, 2, 1];\n const OFF = [-w - 1, -w, -w + 1, -1, 0, 1, w - 1, w, w + 1];\n const clamp8 = (v) => (v < 0 ? 0 : v > 255 ? 255 : v);\n for (let y = 1; y < h - 1; y++) {\n for (let x = 1; x < w - 1; x++) {\n const p = y * w + x;\n let sx = 0, sy = 0;\n sx += lum[p + OFF[0]] * Gx[0];\n sy += lum[p + OFF[0]] * Gy[0];\n sx += lum[p + OFF[1]] * Gx[1];\n sy += lum[p + OFF[1]] * Gy[1];\n sx += lum[p + OFF[2]] * Gx[2];\n sy += lum[p + OFF[2]] * Gy[2];\n sx += lum[p + OFF[3]] * Gx[3];\n sy += lum[p + OFF[3]] * Gy[3];\n sx += lum[p + OFF[5]] * Gx[5];\n sy += lum[p + OFF[5]] * Gy[5];\n sx += lum[p + OFF[6]] * Gx[6];\n sy += lum[p + OFF[6]] * Gy[6];\n sx += lum[p + OFF[7]] * Gx[7];\n sy += lum[p + OFF[7]] * Gy[7];\n sx += lum[p + OFF[8]] * Gx[8];\n sy += lum[p + OFF[8]] * Gy[8];\n const r = cx * sx + cy * sy;\n const outGray = clamp8(bias + r * SCALE);\n const o = p * 4;\n if (blend) {\n const delta = outGray - bias;\n data[o] = clamp8(src[o] + delta);\n data[o + 1] = clamp8(src[o + 1] + delta);\n data[o + 2] = clamp8(src[o + 2] + delta);\n data[o + 3] = src[o + 3];\n }\n else {\n data[o] = data[o + 1] = data[o + 2] = outGray;\n data[o + 3] = src[o + 3];\n }\n }\n }\n for (let x = 0; x < w; x++) {\n let oTop = x * 4, oBot = ((h - 1) * w + x) * 4;\n data[oTop] = src[oTop];\n data[oTop + 1] = src[oTop + 1];\n data[oTop + 2] = src[oTop + 2];\n data[oTop + 3] = src[oTop + 3];\n data[oBot] = src[oBot];\n data[oBot + 1] = src[oBot + 1];\n data[oBot + 2] = src[oBot + 2];\n data[oBot + 3] = src[oBot + 3];\n }\n for (let y = 1; y < h - 1; y++) {\n let oL = y * w * 4, oR = (y * w + (w - 1)) * 4;\n data[oL] = src[oL];\n data[oL + 1] = src[oL + 1];\n data[oL + 2] = src[oL + 2];\n data[oL + 3] = src[oL + 3];\n data[oR] = src[oR];\n data[oR + 1] = src[oR + 1];\n data[oR + 2] = src[oR + 2];\n data[oR + 3] = src[oR + 3];\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'embossStrength', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossWhiteLevel', 0.5, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossDirection', 'top-left', undefined, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'embossBlend', false, undefined, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'luminance', 0, getNumberValidator(), Factory.afterSetFilter);\nexport const HSL = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n let r, g, b, a;\n for (let i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const HSV = function (imageData) {\n const data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360;\n const vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n const rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n const gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n const br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n const a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nFactory.addGetterSetter(Node, 'hue', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'saturation', 0, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'value', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nfunction pixelAt(idata, x, y) {\n let idx = (y * idata.width + x) * 4;\n const d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n const m = [0, 0, 0];\n for (let i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n const rgbv_no = pixelAt(idata, 0, 0);\n const rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n const rgbv_so = pixelAt(idata, 0, idata.height - 1);\n const rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n const thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n const mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n const mask = [];\n for (let i = 0; i < idata.width * idata.height; i++) {\n const d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (let i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n const weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n const weights = [\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n 1 / 9,\n ];\n const side = Math.round(Math.sqrt(weights.length));\n const halfSide = Math.floor(side / 2);\n const maskResult = [];\n for (let y = 0; y < sh; y++) {\n for (let x = 0; x < sw; x++) {\n const so = y * sw + x;\n let a = 0;\n for (let cy = 0; cy < side; cy++) {\n for (let cx = 0; cx < side; cx++) {\n const scy = y + cy - halfSide;\n const scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n const srcOff = scy * sw + scx;\n const wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nexport const Mask = function (imageData) {\n const threshold = this.threshold();\n let mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nFactory.addGetterSetter(Node, 'threshold', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { Util } from \"../Util.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nconst ToPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize;\n const conversion = ((360 / tSize) * Math.PI) / 180;\n for (let theta = 0; theta < tSize; theta += 1) {\n const sin = Math.sin(theta * conversion);\n const cos = Math.cos(theta * conversion);\n for (let radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n let i = (y * xSize + x) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst FromPolar = function (src, dst, opt) {\n const srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2;\n let rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n let x = xSize - xMid;\n let y = ySize - yMid;\n const rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n const rSize = ySize, tSize = xSize, phaseShift = opt.polarRotation || 0;\n let x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n const dx = x - xMid;\n const dy = y - yMid;\n const radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n let theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n let i = (y1 * xSize + x1) * 4;\n const r = srcPixels[i + 0];\n const g = srcPixels[i + 1];\n const b = srcPixels[i + 2];\n const a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nexport const Kaleidoscope = function (imageData) {\n const xSize = imageData.width, ySize = imageData.height;\n let x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n let power = Math.round(this.kaleidoscopePower());\n const angle = Math.round(this.kaleidoscopeAngle());\n const offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n const tempCanvas = Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n const scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n let minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n let sectionSize = minSectionSize;\n let xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nFactory.addGetterSetter(Node, 'kaleidoscopePower', 2, getNumberValidator(), Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'kaleidoscopeAngle', 0, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Noise = function (imageData) {\n const amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2;\n for (let i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nFactory.addGetterSetter(Node, 'noise', 0.2, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Util } from \"../Util.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Pixelate = function (imageData) {\n let pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), data = imageData.data;\n if (pixelSize <= 0) {\n Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (let xBin = 0; xBin < nBinsX; xBin += 1) {\n for (let yBin = 0; yBin < nBinsY; yBin += 1) {\n let red = 0;\n let green = 0;\n let blue = 0;\n let alpha = 0;\n const xBinStart = xBin * pixelSize;\n const xBinEnd = xBinStart + pixelSize;\n const yBinStart = yBin * pixelSize;\n const yBinEnd = yBinStart + pixelSize;\n let pixelsInBin = 0;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (let x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (let y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n const i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nFactory.addGetterSetter(Node, 'pixelSize', 8, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Posterize = function (imageData) {\n const levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels;\n for (let i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nFactory.addGetterSetter(Node, 'levels', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGB = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue();\n for (let i = 0; i < nPixels; i += 4) {\n const brightness = (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { RGBComponent } from \"../Validators.js\";\nexport const RGBA = function (imageData) {\n const data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha();\n for (let i = 0; i < nPixels; i += 4) {\n const ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nFactory.addGetterSetter(Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory.addGetterSetter(Node, 'blue', 0, RGBComponent, Factory.afterSetFilter);\nFactory.addGetterSetter(Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","import { Factory } from \"../Factory.js\";\nimport { Node } from \"../Node.js\";\nimport { getNumberValidator } from \"../Validators.js\";\nexport const Threshold = function (imageData) {\n const level = this.threshold() * 255, data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nFactory.addGetterSetter(Node, 'threshold', 0.5, getNumberValidator(), Factory.afterSetFilter);\n","import { Konva as Core } from \"./_CoreInternals.js\";\nimport { Arc } from \"./shapes/Arc.js\";\nimport { Arrow } from \"./shapes/Arrow.js\";\nimport { Circle } from \"./shapes/Circle.js\";\nimport { Ellipse } from \"./shapes/Ellipse.js\";\nimport { Image } from \"./shapes/Image.js\";\nimport { Label, Tag } from \"./shapes/Label.js\";\nimport { Line } from \"./shapes/Line.js\";\nimport { Path } from \"./shapes/Path.js\";\nimport { Rect } from \"./shapes/Rect.js\";\nimport { RegularPolygon } from \"./shapes/RegularPolygon.js\";\nimport { Ring } from \"./shapes/Ring.js\";\nimport { Sprite } from \"./shapes/Sprite.js\";\nimport { Star } from \"./shapes/Star.js\";\nimport { Text } from \"./shapes/Text.js\";\nimport { TextPath } from \"./shapes/TextPath.js\";\nimport { Transformer } from \"./shapes/Transformer.js\";\nimport { Wedge } from \"./shapes/Wedge.js\";\nimport { Blur } from \"./filters/Blur.js\";\nimport { Brighten } from \"./filters/Brighten.js\";\nimport { Brightness } from \"./filters/Brightness.js\";\nimport { Contrast } from \"./filters/Contrast.js\";\nimport { Emboss } from \"./filters/Emboss.js\";\nimport { Enhance } from \"./filters/Enhance.js\";\nimport { Grayscale } from \"./filters/Grayscale.js\";\nimport { HSL } from \"./filters/HSL.js\";\nimport { HSV } from \"./filters/HSV.js\";\nimport { Invert } from \"./filters/Invert.js\";\nimport { Kaleidoscope } from \"./filters/Kaleidoscope.js\";\nimport { Mask } from \"./filters/Mask.js\";\nimport { Noise } from \"./filters/Noise.js\";\nimport { Pixelate } from \"./filters/Pixelate.js\";\nimport { Posterize } from \"./filters/Posterize.js\";\nimport { RGB } from \"./filters/RGB.js\";\nimport { RGBA } from \"./filters/RGBA.js\";\nimport { Sepia } from \"./filters/Sepia.js\";\nimport { Solarize } from \"./filters/Solarize.js\";\nimport { Threshold } from \"./filters/Threshold.js\";\nexport const Konva = Core.Util._assign(Core, {\n Arc,\n Arrow,\n Circle,\n Ellipse,\n Image,\n Label,\n Tag,\n Line,\n Path,\n Rect,\n RegularPolygon,\n Ring,\n Sprite,\n Star,\n Text,\n TextPath,\n Transformer,\n Wedge,\n Filters: {\n Blur,\n Brightness,\n Brighten,\n Contrast,\n Emboss,\n Enhance,\n Grayscale,\n HSL,\n HSV,\n Invert,\n Kaleidoscope,\n Mask,\n Noise,\n Pixelate,\n Posterize,\n RGB,\n RGBA,\n Sepia,\n Solarize,\n Threshold,\n },\n});\n","export const Brightness = function (imageData) {\n const brightness = this.brightness(), data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = Math.min(255, data[i] * brightness);\n data[i + 1] = Math.min(255, data[i + 1] * brightness);\n data[i + 2] = Math.min(255, data[i + 2] * brightness);\n }\n};\n","export const Grayscale = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n const brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\n","export const Invert = function (imageData) {\n const data = imageData.data, len = data.length;\n for (let i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\n","export const Sepia = function (imageData) {\n const data = imageData.data, nPixels = data.length;\n for (let i = 0; i < nPixels; i += 4) {\n const r = data[i + 0];\n const g = data[i + 1];\n const b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\n","export const Solarize = function (imageData) {\n const threshold = 128;\n const d = imageData.data;\n for (let i = 0; i < d.length; i += 4) {\n const r = d[i], g = d[i + 1], b = d[i + 2];\n const L = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n if (L >= threshold) {\n d[i] = 255 - r;\n d[i + 1] = 255 - g;\n d[i + 2] = 255 - b;\n }\n }\n return imageData;\n};\n","import e from \"konva\";\n//#region \\0rolldown/runtime.js\nvar t = Object.create, n = Object.defineProperty, r = Object.getOwnPropertyDescriptor, i = Object.getOwnPropertyNames, a = Object.getPrototypeOf, o = Object.prototype.hasOwnProperty, s = (e, t) => () => (t || e((t = { exports: {} }).exports, t), t.exports), c = (e, t, a, s) => {\n\tif (t && typeof t == \"object\" || typeof t == \"function\") for (var c = i(t), l = 0, u = c.length, d; l < u; l++) d = c[l], !o.call(e, d) && d !== a && n(e, d, {\n\t\tget: ((e) => t[e]).bind(null, d),\n\t\tenumerable: !(s = r(t, d)) || s.enumerable\n\t});\n\treturn e;\n}, l = (e, r, i) => (i = e == null ? {} : t(a(e)), c(r || !e || !e.__esModule ? n(i, \"default\", {\n\tvalue: e,\n\tenumerable: !0\n}) : i, e)), u = .6, d = .025, f = \"rgb(225, 255, 225)\";\nfunction p() {\n\treturn {\n\t\troomSize: u,\n\t\tlineWidth: d,\n\t\tlineColor: f,\n\t\tbackgroundColor: \"#000000\",\n\t\tinstantMapMove: !1,\n\t\thighlightCurrentRoom: !0,\n\t\tcullingEnabled: !0,\n\t\tcullingMode: \"indexed\",\n\t\tcullingBounds: null,\n\t\tlabelRenderMode: \"image\",\n\t\ttransparentLabels: !1,\n\t\troomShape: \"rectangle\",\n\t\tplayerMarker: {\n\t\t\tstrokeColor: \"#00e5b2\",\n\t\t\tstrokeAlpha: 1,\n\t\t\tfillColor: \"#00e5b2\",\n\t\t\tfillAlpha: 0,\n\t\t\tstrokeWidth: .1,\n\t\t\tsizeFactor: 1.7,\n\t\t\tdash: [.05, .05],\n\t\t\tdashEnabled: !0,\n\t\t\tmatchRoomShape: !1\n\t\t},\n\t\tgridEnabled: !1,\n\t\tgridSize: 1,\n\t\tgridColor: \"rgba(200, 200, 200, 0.15)\",\n\t\tgridLineWidth: .03,\n\t\tperfCallback: null,\n\t\tborders: !0,\n\t\tframeMode: !1,\n\t\tcoloredMode: !1,\n\t\temboss: !1,\n\t\tareaName: !0,\n\t\tfontFamily: \"sans-serif\",\n\t\tuniformLevelSize: !1,\n\t\tambientLight: {\n\t\t\tenabled: !1,\n\t\t\tcolor: \"#ffcc44\",\n\t\t\tradius: 12,\n\t\t\tintensity: .7\n\t\t}\n\t};\n}\n//#endregion\n//#region src/utils/color.ts\nfunction m(e) {\n\tlet t, n, r, i = e.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n\tif (i) t = parseInt(i[1]) / 255, n = parseInt(i[2]) / 255, r = parseInt(i[3]) / 255;\n\telse if (e.startsWith(\"#\") && e.length >= 7) t = parseInt(e.slice(1, 3), 16) / 255, n = parseInt(e.slice(3, 5), 16) / 255, r = parseInt(e.slice(5, 7), 16) / 255;\n\telse return .5;\n\treturn (Math.max(t, n, r) + Math.min(t, n, r)) / 2;\n}\nfunction h(e, t) {\n\tlet n, r, i, a = e.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n\tif (a) n = parseInt(a[1]), r = parseInt(a[2]), i = parseInt(a[3]);\n\telse if (e.startsWith(\"#\") && e.length >= 7) n = parseInt(e.slice(1, 3), 16), r = parseInt(e.slice(3, 5), 16), i = parseInt(e.slice(5, 7), 16);\n\telse return e;\n\treturn n = Math.round(n * (1 - t)), r = Math.round(r * (1 - t)), i = Math.round(i * (1 - t)), `rgb(${n}, ${r}, ${i})`;\n}\nfunction g(e, t) {\n\tlet n, r, i, a = e.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n\tif (a) n = parseInt(a[1]), r = parseInt(a[2]), i = parseInt(a[3]);\n\telse if (e.startsWith(\"#\") && e.length >= 7) n = parseInt(e.slice(1, 3), 16), r = parseInt(e.slice(3, 5), 16), i = parseInt(e.slice(5, 7), 16);\n\telse return e;\n\treturn n = Math.min(255, Math.round(n + (255 - n) * t)), r = Math.min(255, Math.round(r + (255 - r) * t)), i = Math.min(255, Math.round(i + (255 - i) * t)), `rgb(${n}, ${r}, ${i})`;\n}\nfunction _(e, t) {\n\treturn `rgba(${parseInt(e.slice(1, 3), 16)}, ${parseInt(e.slice(3, 5), 16)}, ${parseInt(e.slice(5, 7), 16)}, ${t})`;\n}\n//#endregion\n//#region src/TypedEventEmitter.ts\nvar v = class {\n\tconstructor(e) {\n\t\tthis.listeners = /* @__PURE__ */ new Map(), this.container = e;\n\t}\n\ton(e, t) {\n\t\tlet n = this.listeners.get(e);\n\t\tn || (n = /* @__PURE__ */ new Set(), this.listeners.set(e, n)), n.add(t);\n\t}\n\toff(e, t) {\n\t\tthis.listeners.get(e)?.delete(t);\n\t}\n\tremoveAllListeners() {\n\t\tthis.listeners.clear();\n\t}\n\temit(e, t) {\n\t\tthis.listeners.get(e)?.forEach((e) => e(t)), this.container && this.container.dispatchEvent(new CustomEvent(e, { detail: t }));\n\t}\n}, y = class {\n\tconstructor(e, t) {\n\t\tthis.events = new v(), this.highlights = /* @__PURE__ */ new Map(), this.paths = [], this.mapReader = e, this.settings = t;\n\t}\n\tsetArea(e, t) {\n\t\tlet n = this.mapReader.getArea(e);\n\t\treturn !n || !n.getPlane(t) ? !1 : (this.currentArea = e, this.currentAreaInstance = n, this.currentZIndex = t, this.currentAreaVersion = n.getVersion(), this.events.emit(\"area\", {\n\t\t\tarea: n,\n\t\t\tzIndex: t\n\t\t}), !0);\n\t}\n\tsetPosition(e, t = !0) {\n\t\tlet n = this.mapReader.getRoom(e);\n\t\tif (!n) return !1;\n\t\tlet r = this.mapReader.getArea(n.area), i = r?.getVersion(), a = this.currentArea !== n.area || this.currentZIndex !== n.z || i !== void 0 && this.currentAreaVersion !== i || r !== void 0 && this.currentAreaInstance !== r;\n\t\treturn a && this.setArea(n.area, n.z), this.positionRoomId = e, this.events.emit(\"position\", {\n\t\t\troomId: e,\n\t\t\tcenter: t,\n\t\t\tareaChanged: a\n\t\t}), !0;\n\t}\n\tupdatePositionMarker(e) {\n\t\tthis.positionRoomId = e, this.events.emit(\"position\", {\n\t\t\troomId: e,\n\t\t\tcenter: !1,\n\t\t\tareaChanged: !1\n\t\t});\n\t}\n\trefreshPosition() {\n\t\tthis.positionRoomId !== void 0 && this.events.emit(\"position\", {\n\t\t\troomId: this.positionRoomId,\n\t\t\tcenter: !1,\n\t\t\tareaChanged: !1\n\t\t});\n\t}\n\tclearPosition() {\n\t\tthis.positionRoomId = void 0, this.events.emit(\"position\", {\n\t\t\troomId: void 0,\n\t\t\tcenter: !1,\n\t\t\tareaChanged: !1\n\t\t});\n\t}\n\tsetCenterRoom(e, t) {\n\t\tlet n = this.mapReader.getRoom(e);\n\t\tif (!n) return !1;\n\t\tlet r = this.currentArea !== n.area || this.currentZIndex !== n.z;\n\t\treturn (r || this.needsAreaRedraw(n)) && this.setArea(n.area, n.z), this.centerRoomId = e, this.events.emit(\"center\", {\n\t\t\troomId: e,\n\t\t\tinstant: t ?? r\n\t\t}), !0;\n\t}\n\tneedsAreaRedraw(e) {\n\t\tlet t = this.mapReader.getArea(e.area), n = t?.getVersion();\n\t\treturn n !== void 0 && this.currentAreaVersion !== n || t !== void 0 && this.currentAreaInstance !== t;\n\t}\n\taddHighlight(e, t) {\n\t\tlet n = this.mapReader.getRoom(e);\n\t\treturn n ? (this.highlights.set(e, {\n\t\t\tcolor: t,\n\t\t\tarea: n.area,\n\t\t\tz: n.z\n\t\t}), this.events.emit(\"highlight\", {\n\t\t\troomId: e,\n\t\t\tcolor: t\n\t\t}), !0) : !1;\n\t}\n\tremoveHighlight(e) {\n\t\tthis.highlights.has(e) && (this.highlights.delete(e), this.events.emit(\"highlight\", {\n\t\t\troomId: e,\n\t\t\tcolor: void 0\n\t\t}));\n\t}\n\thasHighlight(e) {\n\t\treturn this.highlights.has(e);\n\t}\n\tclearHighlights() {\n\t\tthis.highlights.clear(), this.events.emit(\"clear\", void 0);\n\t}\n\taddPath(e, t = \"#66E64D\") {\n\t\tthis.paths.push({\n\t\t\tlocations: e,\n\t\t\tcolor: t\n\t\t}), this.events.emit(\"path\", void 0);\n\t}\n\tclearPaths() {\n\t\tthis.paths = [], this.events.emit(\"path\", void 0);\n\t}\n\tgetOverlaysForArea(e) {\n\t\tlet t = { ...e };\n\t\tif (this.positionRoomId !== void 0) {\n\t\t\tlet e = this.mapReader.getRoom(this.positionRoomId);\n\t\t\te && e.area === this.currentArea && e.z === this.currentZIndex && (t.position = { roomId: this.positionRoomId });\n\t\t}\n\t\tlet n = [...e?.highlights ?? []];\n\t\tfor (let [e, t] of this.highlights) t.area === this.currentArea && t.z === this.currentZIndex && n.push({\n\t\t\troomId: e,\n\t\t\tcolor: t.color\n\t\t});\n\t\tn.length > 0 && (t.highlights = n);\n\t\tlet r = [...e?.paths ?? []];\n\t\treturn r.push(...this.paths), r.length > 0 && (t.paths = r), t;\n\t}\n\tgetEffectiveBounds(e, t) {\n\t\treturn this.settings.uniformLevelSize ? e.getFullBounds() : t.getBounds();\n\t}\n\tcomputeExportBounds(e, t, n, r) {\n\t\tif (n !== void 0) {\n\t\t\tlet e = this.mapReader.getRoom(n);\n\t\t\tif (!e) throw Error(`Room ${n} not found`);\n\t\t\treturn {\n\t\t\t\tx: e.x - r,\n\t\t\t\ty: e.y - r,\n\t\t\t\tw: r * 2,\n\t\t\t\th: r * 2\n\t\t\t};\n\t\t}\n\t\tlet i = this.getEffectiveBounds(e, t), a = this.settings.areaName ? e.getAreaName() : void 0, o = a ? 7 : 0, s = a ? 3.5 : 0, c = i.minX - s, l = i.minY - o, u = a ? i.minX - 3.5 + a.length * 2.5 * .6 : -Infinity, d = Math.max(i.maxX, u);\n\t\treturn {\n\t\t\tx: c - r,\n\t\t\ty: l - r,\n\t\t\tw: d - c + r * 2,\n\t\t\th: i.maxY - l + r * 2\n\t\t};\n\t}\n}, b = 72, x = 200, S = 120, C = /* @__PURE__ */ new Map(), w = null;\nfunction T() {\n\treturn w || (w = e.Util.createCanvasElement(), w.width = x, w.height = x), w;\n}\nfunction ee(e, t) {\n\tlet n = `${e}::${t}`, r = C.get(n);\n\tif (r !== void 0) return r;\n\tlet i = T().getContext(\"2d\", { willReadFrequently: !0 }), a = `bold ${b}px ${t}`;\n\ti.clearRect(0, 0, x, x), i.font = a, i.textBaseline = \"alphabetic\", i.textAlign = \"center\", i.fillStyle = \"#ffffff\", i.fillText(e, x / 2, S);\n\tlet { data: o } = i.getImageData(0, 0, x, x), s = x, c = -1;\n\tfor (let e = 0; e < x; e++) for (let t = 0; t < x; t++) o[(e * x + t) * 4 + 3] > 16 && (e < s && (s = e), e > c && (c = e));\n\tif (c === -1) {\n\t\tlet e = {\n\t\t\tbaselineRatio: .35,\n\t\t\tkonvaCorrectionRatio: 0\n\t\t};\n\t\treturn C.set(n, e), e;\n\t}\n\tlet l = (S - s - Math.max(0, c - S)) / 2 / b, u = i.measureText(\"M\"), d = {\n\t\tbaselineRatio: l,\n\t\tkonvaCorrectionRatio: ((u.fontBoundingBoxAscent ?? u.actualBoundingBoxAscent ?? 0) - (u.fontBoundingBoxDescent ?? u.actualBoundingBoxDescent ?? 0)) / 2 / b - l\n\t};\n\treturn C.set(n, d), d;\n}\n//#endregion\n//#region src/scene/RoomStyle.ts\nfunction te(e, t, n, r) {\n\tlet i = t.getColorValue(e.env), a = n.coloredMode ? h(i, .5) : n.frameMode ? n.backgroundColor : i, o = n.coloredMode ? g(i, .1) : i;\n\treturn {\n\t\tfillColor: a,\n\t\tstrokeColor: r ? n.frameMode || n.coloredMode ? o : r : n.frameMode || n.coloredMode ? o : n.lineColor,\n\t\tborderWidth: n.borders ? n.lineWidth : 0,\n\t\tsymbolColor: n.frameMode || n.coloredMode ? o : t.getSymbolColor(e.env),\n\t\tenvColor: i\n\t};\n}\nfunction ne(e, t) {\n\tif (!t.emboss) return null;\n\tlet n = t.roomSize, r = t.borders ? t.lineWidth / 2 : 0, i = t.lineWidth, a = g(e, .35), o = h(e, .45);\n\tif (t.roomShape === \"circle\") {\n\t\tlet e = n / 2, t = n / 2, s = n / 2 - r, c = [];\n\t\tfor (let n = 0; n <= 48; n++) {\n\t\t\tlet r = n / 48 * 360 * Math.PI / 180;\n\t\t\tc.push(e + Math.cos(r) * s, t + Math.sin(r) * s);\n\t\t}\n\t\tlet l = [];\n\t\tfor (let n = 0; n <= 19; n++) {\n\t\t\tlet r = (200 + n / 19 * 140) * Math.PI / 180;\n\t\t\tl.push(e + Math.cos(r) * s, t + Math.sin(r) * s);\n\t\t}\n\t\treturn {\n\t\t\tshadow: {\n\t\t\t\tpoints: c,\n\t\t\t\tstroke: o,\n\t\t\t\tstrokeWidth: i,\n\t\t\t\tlineCap: \"round\",\n\t\t\t\tlineJoin: \"round\"\n\t\t\t},\n\t\t\thighlight: {\n\t\t\t\tpoints: l,\n\t\t\t\tstroke: a,\n\t\t\t\tstrokeWidth: i,\n\t\t\t\tlineCap: \"round\",\n\t\t\t\tlineJoin: \"round\"\n\t\t\t}\n\t\t};\n\t}\n\tif (t.roomShape === \"roundedRectangle\") {\n\t\tlet e = (n - r * 2) * .2, t = r, s = r, c = n - r, l = n - r, u = [];\n\t\tfor (let n = 0; n <= 10 / 2; n++) {\n\t\t\tlet r = (135 + n / (10 / 2) * 45) * Math.PI / 180;\n\t\t\tu.push(t + e + Math.cos(r) * e, l - e + Math.sin(r) * e);\n\t\t}\n\t\tfor (let n = 1; n <= 10; n++) {\n\t\t\tlet r = (180 + n / 10 * 90) * Math.PI / 180;\n\t\t\tu.push(t + e + Math.cos(r) * e, s + e + Math.sin(r) * e);\n\t\t}\n\t\tfor (let t = 1; t <= 10 / 2; t++) {\n\t\t\tlet n = (270 + t / (10 / 2) * 45) * Math.PI / 180;\n\t\t\tu.push(c - e + Math.cos(n) * e, s + e + Math.sin(n) * e);\n\t\t}\n\t\tlet d = u.slice(), f = [];\n\t\tfor (let t = 0; t <= 10 / 2; t++) {\n\t\t\tlet n = (315 + t / (10 / 2) * 45) * Math.PI / 180;\n\t\t\tf.push(c - e + Math.cos(n) * e, s + e + Math.sin(n) * e);\n\t\t}\n\t\tfor (let t = 1; t <= 10; t++) {\n\t\t\tlet n = t / 10 * 90 * Math.PI / 180;\n\t\t\tf.push(c - e + Math.cos(n) * e, l - e + Math.sin(n) * e);\n\t\t}\n\t\tfor (let n = 1; n <= 10 / 2; n++) {\n\t\t\tlet r = (90 + n / (10 / 2) * 45) * Math.PI / 180;\n\t\t\tf.push(t + e + Math.cos(r) * e, l - e + Math.sin(r) * e);\n\t\t}\n\t\treturn {\n\t\t\thighlight: {\n\t\t\t\tpoints: d,\n\t\t\t\tstroke: a,\n\t\t\t\tstrokeWidth: i,\n\t\t\t\tlineCap: \"round\",\n\t\t\t\tlineJoin: \"round\"\n\t\t\t},\n\t\t\tshadow: {\n\t\t\t\tpoints: f,\n\t\t\t\tstroke: o,\n\t\t\t\tstrokeWidth: i,\n\t\t\t\tlineCap: \"round\",\n\t\t\t\tlineJoin: \"round\"\n\t\t\t}\n\t\t};\n\t}\n\treturn {\n\t\thighlight: {\n\t\t\tpoints: [\n\t\t\t\tr,\n\t\t\t\tn - r,\n\t\t\t\tr,\n\t\t\t\tr,\n\t\t\t\tn - r,\n\t\t\t\tr\n\t\t\t],\n\t\t\tstroke: a,\n\t\t\tstrokeWidth: i\n\t\t},\n\t\tshadow: {\n\t\t\tpoints: [\n\t\t\t\tr,\n\t\t\t\tn - r,\n\t\t\t\tn - r,\n\t\t\t\tn - r,\n\t\t\t\tn - r,\n\t\t\t\tr\n\t\t\t],\n\t\t\tstroke: o,\n\t\t\tstrokeWidth: i\n\t\t}\n\t};\n}\n//#endregion\n//#region src/RoomShapeRenderer.ts\nvar re = class {\n\tconstructor(e, t, n) {\n\t\tthis.mapReader = e, this.settings = t, this.backend = n;\n\t}\n\tcreateRoomGroup(e, t) {\n\t\tlet { fillColor: n, strokeColor: r, borderWidth: i, symbolColor: a, envColor: o } = te(e, this.mapReader, this.settings, t?.strokeOverride), s = this.settings.roomSize, c = this.backend.createGroup(e.x - s / 2, e.y - s / 2);\n\t\tif (this.settings.coloredMode && i > 0) {\n\t\t\tlet e = o.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);\n\t\t\tif (e) {\n\t\t\t\tlet t = g(o, .6).match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/), n = t ? t[1] : e[1], r = t ? t[2] : e[2], a = t ? t[3] : e[3], l = i / 2, u = s / 2 - l, d = this.settings.roomShape === \"roundedRectangle\" ? (s - i) * .2 : 0, f = [{\n\t\t\t\t\twidth: i * 3,\n\t\t\t\t\tr: e[1],\n\t\t\t\t\tg: e[2],\n\t\t\t\t\tb: e[3],\n\t\t\t\t\talpha: .35\n\t\t\t\t}, {\n\t\t\t\t\twidth: i * 1.2,\n\t\t\t\t\tr: n,\n\t\t\t\t\tg: r,\n\t\t\t\t\tb: a,\n\t\t\t\t\talpha: .6\n\t\t\t\t}];\n\t\t\t\tfor (let e of f) {\n\t\t\t\t\tlet t = `rgba(${e.r}, ${e.g}, ${e.b}, ${e.alpha})`;\n\t\t\t\t\tthis.settings.roomShape === \"circle\" ? this.backend.addCircle(c, {\n\t\t\t\t\t\tcx: s / 2,\n\t\t\t\t\t\tcy: s / 2,\n\t\t\t\t\t\tradius: u,\n\t\t\t\t\t\tstroke: t,\n\t\t\t\t\t\tstrokeWidth: e.width\n\t\t\t\t\t}) : this.backend.addRect(c, {\n\t\t\t\t\t\tx: l,\n\t\t\t\t\t\ty: l,\n\t\t\t\t\t\twidth: s - i,\n\t\t\t\t\t\theight: s - i,\n\t\t\t\t\t\tstroke: t,\n\t\t\t\t\t\tstrokeWidth: e.width,\n\t\t\t\t\t\tcornerRadius: d\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlet l = i / 2, u = ne(n, this.settings), d = u ? 0 : i;\n\t\tif (this.settings.roomShape === \"circle\" ? this.backend.addCircle(c, {\n\t\t\tcx: s / 2,\n\t\t\tcy: s / 2,\n\t\t\tradius: s / 2 - l,\n\t\t\tfill: n,\n\t\t\tstroke: d ? r : void 0,\n\t\t\tstrokeWidth: d\n\t\t}) : this.backend.addRect(c, {\n\t\t\tx: l,\n\t\t\ty: l,\n\t\t\twidth: s - i,\n\t\t\theight: s - i,\n\t\t\tfill: n,\n\t\t\tstroke: d ? r : void 0,\n\t\t\tstrokeWidth: d,\n\t\t\tcornerRadius: this.settings.roomShape === \"roundedRectangle\" ? (s - i) * .2 : 0\n\t\t}), u && (this.backend.addLine(c, {\n\t\t\tpoints: u.shadow.points,\n\t\t\tstroke: u.shadow.stroke,\n\t\t\tstrokeWidth: u.shadow.strokeWidth,\n\t\t\tlineCap: u.shadow.lineCap,\n\t\t\tlineJoin: u.shadow.lineJoin\n\t\t}), this.backend.addLine(c, {\n\t\t\tpoints: u.highlight.points,\n\t\t\tstroke: u.highlight.stroke,\n\t\t\tstrokeWidth: u.highlight.strokeWidth,\n\t\t\tlineCap: u.highlight.lineCap,\n\t\t\tlineJoin: u.shadow.lineJoin\n\t\t})), e.roomChar) {\n\t\t\tlet t = s * .75, { baselineRatio: n, konvaCorrectionRatio: r } = ee(e.roomChar, this.settings.fontFamily), i = Math.max(s, e.roomChar.length * t * .8), o = (i - s) / 2;\n\t\t\tthis.backend.addText(c, {\n\t\t\t\tx: -o,\n\t\t\t\ty: 0,\n\t\t\t\ttext: e.roomChar,\n\t\t\t\tfontSize: t,\n\t\t\t\tfontFamily: this.settings.fontFamily,\n\t\t\t\tfontStyle: \"bold\",\n\t\t\t\tfill: a,\n\t\t\t\talign: \"center\",\n\t\t\t\tverticalAlign: \"middle\",\n\t\t\t\twidth: i,\n\t\t\t\theight: s,\n\t\t\t\tbaselineRatio: n,\n\t\t\t\tkonvaCorrectionRatio: r\n\t\t\t});\n\t\t}\n\t\treturn c;\n\t}\n}, ie = class {\n\tconstructor(e, t, n) {\n\t\tthis.cachedBounds = null, this.layer = e, this.settings = t, this.backend = n;\n\t}\n\tinvalidateCache() {\n\t\tthis.cachedBounds = null;\n\t}\n\trender(e) {\n\t\tif (!this.settings.gridEnabled) {\n\t\t\tthis.cachedBounds !== null && (this.layer.destroyChildren(), this.layer.batchDraw(), this.cachedBounds = null);\n\t\t\treturn;\n\t\t}\n\t\tlet { minX: t, maxX: n, minY: r, maxY: i } = e, a = this.settings.gridSize * 2, o = Math.floor((Math.min(t, n) - a) / this.settings.gridSize) * this.settings.gridSize, s = Math.ceil((Math.max(t, n) + a) / this.settings.gridSize) * this.settings.gridSize, c = Math.floor((Math.min(r, i) - a) / this.settings.gridSize) * this.settings.gridSize, l = Math.ceil((Math.max(r, i) + a) / this.settings.gridSize) * this.settings.gridSize, u = this.cachedBounds;\n\t\tif (u && u.left === o && u.right === s && u.top === c && u.bottom === l) return;\n\t\tthis.layer.destroyChildren();\n\t\tlet d = this.backend.createGroup(0, 0);\n\t\tfor (let e = o; e <= s; e += this.settings.gridSize) this.backend.addLine(d, {\n\t\t\tpoints: [\n\t\t\t\te,\n\t\t\t\tc,\n\t\t\t\te,\n\t\t\t\tl\n\t\t\t],\n\t\t\tstroke: this.settings.gridColor,\n\t\t\tstrokeWidth: this.settings.gridLineWidth\n\t\t});\n\t\tfor (let e = c; e <= l; e += this.settings.gridSize) this.backend.addLine(d, {\n\t\t\tpoints: [\n\t\t\t\to,\n\t\t\t\te,\n\t\t\t\ts,\n\t\t\t\te\n\t\t\t],\n\t\t\tstroke: this.settings.gridColor,\n\t\t\tstrokeWidth: this.settings.gridLineWidth\n\t\t});\n\t\tthis.layer.addNode(d), this.cachedBounds = {\n\t\t\tleft: o,\n\t\t\tright: s,\n\t\t\ttop: c,\n\t\t\tbottom: l\n\t\t}, this.layer.batchDraw();\n\t}\n}, E = [\n\t\"north\",\n\t\"south\",\n\t\"east\",\n\t\"west\",\n\t\"northeast\",\n\t\"northwest\",\n\t\"southeast\",\n\t\"southwest\"\n], ae = {\n\tn: \"north\",\n\ts: \"south\",\n\te: \"east\",\n\tw: \"west\",\n\tne: \"northeast\",\n\tnw: \"northwest\",\n\tse: \"southeast\",\n\tsw: \"southwest\"\n}, D = {\n\tnorth: \"n\",\n\tsouth: \"s\",\n\teast: \"e\",\n\twest: \"w\",\n\tnortheast: \"ne\",\n\tnorthwest: \"nw\",\n\tsoutheast: \"se\",\n\tsouthwest: \"sw\",\n\tup: \"u\",\n\tdown: \"d\",\n\tin: \"i\",\n\tout: \"o\"\n}, O = {\n\tnorth: {\n\t\tx: 0,\n\t\ty: -1\n\t},\n\tsouth: {\n\t\tx: 0,\n\t\ty: 1\n\t},\n\teast: {\n\t\tx: 1,\n\t\ty: 0\n\t},\n\twest: {\n\t\tx: -1,\n\t\ty: 0\n\t},\n\tnortheast: {\n\t\tx: 1,\n\t\ty: -1\n\t},\n\tnorthwest: {\n\t\tx: -1,\n\t\ty: -1\n\t},\n\tsoutheast: {\n\t\tx: 1,\n\t\ty: 1\n\t},\n\tsouthwest: {\n\t\tx: -1,\n\t\ty: 1\n\t}\n}, k = [\n\t\"north\",\n\t\"south\",\n\t\"east\",\n\t\"west\",\n\t\"northeast\",\n\t\"northwest\",\n\t\"southeast\",\n\t\"southwest\"\n], oe = {\n\tnorth: \"south\",\n\tsouth: \"north\",\n\teast: \"west\",\n\twest: \"east\",\n\tnortheast: \"southwest\",\n\tnorthwest: \"southeast\",\n\tsoutheast: \"northwest\",\n\tsouthwest: \"northeast\"\n};\nfunction A(e) {\n\treturn e ? Object.prototype.hasOwnProperty.call(O, e) : !1;\n}\nfunction j(e, t, n, r = 1) {\n\tif (!A(n)) return {\n\t\tx: e,\n\t\ty: t\n\t};\n\tlet i = O[n];\n\treturn {\n\t\tx: e + i.x * r,\n\t\ty: t + i.y * r\n\t};\n}\nfunction M(e, t, n, r = 1, i = 0) {\n\tif (!A(n)) return {\n\t\tx: e,\n\t\ty: t\n\t};\n\tlet a = O[n];\n\tif (!(a.x !== 0 && a.y !== 0) || i <= 0) return j(e, t, n, r);\n\tlet o = r - i + i / Math.SQRT2;\n\treturn {\n\t\tx: e + a.x * o,\n\t\ty: t + a.y * o\n\t};\n}\nfunction N(e, t, n, r = 1) {\n\tif (!A(n)) return {\n\t\tx: e,\n\t\ty: t\n\t};\n\tlet i = O[n], a = Math.atan2(i.y, i.x);\n\treturn {\n\t\tx: e + Math.cos(a) * r,\n\t\ty: t + Math.sin(a) * r\n\t};\n}\n//#endregion\n//#region src/ExitRenderer.ts\nvar P = {\n\tOPEN_DOOR: \"rgb(10, 155, 10)\",\n\tCLOSED_DOOR: \"rgb(226, 205, 59)\",\n\tLOCKED_DOOR: \"rgb(155, 10, 10)\",\n\tONE_WAY_FILL: \"rgb(155, 10, 10)\"\n};\nfunction se(e) {\n\tswitch (e) {\n\t\tcase 1: return P.OPEN_DOOR;\n\t\tcase 2: return P.CLOSED_DOOR;\n\t\tdefault: return P.LOCKED_DOOR;\n\t}\n}\nvar ce = class {\n\tconstructor(e, t) {\n\t\tthis.mapReader = e, this.settings = t;\n\t}\n\tgetRoomEdgePoint(e, t, n, r) {\n\t\tlet i = r - (this.settings.borders ? this.settings.lineWidth / 2 : 0);\n\t\treturn this.settings.roomShape === \"circle\" ? N(e, t, n, i) : this.settings.roomShape === \"roundedRectangle\" ? M(e, t, n, i, this.settings.roomSize * .2) : j(e, t, n, i);\n\t}\n\trenderData(e, t) {\n\t\treturn this.renderDataWithColor(e, this.settings.lineColor, t);\n\t}\n\trenderDataWithColor(e, t, n) {\n\t\tlet r = e.aDir && E.includes(e.aDir), i = e.bDir && E.includes(e.bDir);\n\t\tif (r && i) return this.renderTwoWayExitData(e, t, n);\n\t\tif (r || i) {\n\t\t\tlet n = r ? \"a\" : \"b\";\n\t\t\treturn this.renderOneWayExitData(e, t, n);\n\t\t}\n\t}\n\trenderTwoWayExitData(e, t, n) {\n\t\tlet r = this.mapReader.getRoom(e.a), i = this.mapReader.getRoom(e.b);\n\t\tif (!r || !i || !e.aDir || !e.bDir || r.customLines[D[e.aDir]] && i.customLines[D[e.bDir]] || r.z !== i.z && (n !== i.z && r.customLines[D[e.aDir]] || n !== r.z && i.customLines[D[e.bDir]])) return;\n\t\tlet a = this.getRoomEdgePoint(r.x, r.y, e.aDir, this.settings.roomSize / 2), o = this.getRoomEdgePoint(i.x, i.y, e.bDir, this.settings.roomSize / 2), s = [\n\t\t\ta.x,\n\t\t\ta.y,\n\t\t\to.x,\n\t\t\to.y\n\t\t], c = [{\n\t\t\tpoints: s,\n\t\t\tstroke: t,\n\t\t\tstrokeWidth: this.settings.lineWidth\n\t\t}], l = [], u = r.doors[D[e.aDir]] ?? i.doors[D[e.bDir]];\n\t\tif (u) {\n\t\t\tlet e = s[0] + (s[2] - s[0]) / 2, t = s[1] + (s[3] - s[1]) / 2;\n\t\t\tl.push({\n\t\t\t\tx: e - this.settings.roomSize / 4,\n\t\t\t\ty: t - this.settings.roomSize / 4,\n\t\t\t\twidth: this.settings.roomSize / 2,\n\t\t\t\theight: this.settings.roomSize / 2,\n\t\t\t\tstroke: se(u),\n\t\t\t\tstrokeWidth: this.settings.lineWidth\n\t\t\t});\n\t\t}\n\t\tlet d = Math.min(s[0], s[2]), f = Math.max(s[0], s[2]), p = Math.min(s[1], s[3]), m = Math.max(s[1], s[3]), h = r.z === i.z ? void 0 : r.z === n ? i.id : r.id;\n\t\treturn {\n\t\t\tlines: c,\n\t\t\tarrows: [],\n\t\t\tdoors: l,\n\t\t\tbounds: {\n\t\t\t\tx: d,\n\t\t\t\ty: p,\n\t\t\t\twidth: f - d,\n\t\t\t\theight: m - p\n\t\t\t},\n\t\t\ttargetRoomId: h\n\t\t};\n\t}\n\trenderOneWayExitData(e, t, n) {\n\t\tlet r = n === \"a\" || !n && e.aDir, i = r ? this.mapReader.getRoom(e.a) : this.mapReader.getRoom(e.b), a = r ? this.mapReader.getRoom(e.b) : this.mapReader.getRoom(e.a), o = r ? e.aDir : e.bDir;\n\t\tif (!o || !i || !a || !E.includes(o) || i.customLines[D[o] || o]) return;\n\t\tif (i.area != a.area && o) {\n\t\t\tlet e = this.mapReader.getColorValue(a.env), t = this.getRoomEdgePoint(i.x, i.y, o, this.settings.roomSize / 2), n = j(i.x, i.y, o, this.settings.roomSize * 1.5), r = e;\n\t\t\treturn {\n\t\t\t\tlines: [],\n\t\t\t\tarrows: [{\n\t\t\t\t\tpoints: [\n\t\t\t\t\t\tt.x,\n\t\t\t\t\t\tt.y,\n\t\t\t\t\t\tn.x,\n\t\t\t\t\t\tn.y\n\t\t\t\t\t],\n\t\t\t\t\tpointerLength: .3,\n\t\t\t\t\tpointerWidth: .3,\n\t\t\t\t\tstrokeWidth: this.settings.lineWidth * 1.4,\n\t\t\t\t\tstroke: r,\n\t\t\t\t\tfill: r\n\t\t\t\t}],\n\t\t\t\tdoors: [],\n\t\t\t\tbounds: {\n\t\t\t\t\tx: Math.min(t.x, n.x),\n\t\t\t\t\ty: Math.min(t.y, n.y),\n\t\t\t\t\twidth: Math.abs(n.x - t.x),\n\t\t\t\t\theight: Math.abs(n.y - t.y)\n\t\t\t\t},\n\t\t\t\ttargetRoomId: a.id\n\t\t\t};\n\t\t}\n\t\tlet s = a.area !== i.area || a.z !== i.z, c = {\n\t\t\tx: a.x,\n\t\t\ty: a.y\n\t\t};\n\t\ts && (c = j(i.x, i.y, o, this.settings.roomSize / 2));\n\t\tlet l = j(i.x, i.y, o, .3), u = l.x - (l.x - c.x) / 2, d = l.y - (l.y - c.y) / 2, f = this.getRoomEdgePoint(i.x, i.y, o, this.settings.roomSize / 2), p = [\n\t\t\tf.x,\n\t\t\tf.y,\n\t\t\tc.x,\n\t\t\tc.y\n\t\t], m = [\n\t\t\tf.x,\n\t\t\tc.x,\n\t\t\tu\n\t\t], h = [\n\t\t\tf.y,\n\t\t\tc.y,\n\t\t\td\n\t\t], g = Math.min(...m), _ = Math.max(...m), v = Math.min(...h), y = Math.max(...h);\n\t\treturn {\n\t\t\tlines: [{\n\t\t\t\tpoints: p,\n\t\t\t\tstroke: t,\n\t\t\t\tstrokeWidth: this.settings.lineWidth,\n\t\t\t\tdash: [.1, .05]\n\t\t\t}],\n\t\t\tarrows: [{\n\t\t\t\tpoints: [\n\t\t\t\t\tp[0],\n\t\t\t\t\tp[1],\n\t\t\t\t\tu,\n\t\t\t\t\td\n\t\t\t\t],\n\t\t\t\tpointerLength: .5,\n\t\t\t\tpointerWidth: .35,\n\t\t\t\tstrokeWidth: this.settings.lineWidth * 1.4,\n\t\t\t\tstroke: t,\n\t\t\t\tfill: P.ONE_WAY_FILL,\n\t\t\t\tdash: [.1, .05]\n\t\t\t}],\n\t\t\tdoors: [],\n\t\t\tbounds: {\n\t\t\t\tx: g,\n\t\t\t\ty: v,\n\t\t\t\twidth: _ - g,\n\t\t\t\theight: y - v\n\t\t\t},\n\t\t\t...s ? { targetRoomId: a.id } : {}\n\t\t};\n\t}\n\tgetSpecialExitAreaTargets(e) {\n\t\tlet t = [];\n\t\tfor (let [n, r] of Object.entries(e.customLines)) {\n\t\t\tlet i = e.specialExits[n];\n\t\t\tif (i === void 0) {\n\t\t\t\tlet t = ae[n];\n\t\t\t\tt && (i = e.exits[t] ?? e.specialExits[t]);\n\t\t\t}\n\t\t\tif (i === void 0) continue;\n\t\t\tlet a = this.mapReader.getRoom(i);\n\t\t\tif (!a || a.area === e.area && a.z === e.z) continue;\n\t\t\tlet o = [e.x, e.y];\n\t\t\tr.points.reduce((e, t) => (e.push(t.x, -t.y), e), o);\n\t\t\tlet s = Infinity, c = Infinity, l = -Infinity, u = -Infinity;\n\t\t\tfor (let e = 0; e < o.length; e += 2) s = Math.min(s, o[e]), l = Math.max(l, o[e]), c = Math.min(c, o[e + 1]), u = Math.max(u, o[e + 1]);\n\t\t\tt.push({\n\t\t\t\tbounds: {\n\t\t\t\t\tx: s,\n\t\t\t\t\ty: c,\n\t\t\t\t\twidth: l - s,\n\t\t\t\t\theight: u - c\n\t\t\t\t},\n\t\t\t\ttargetRoomId: i\n\t\t\t});\n\t\t}\n\t\treturn t;\n\t}\n}, le = {\n\t1: \"north\",\n\t2: \"northeast\",\n\t3: \"northwest\",\n\t4: \"east\",\n\t5: \"west\",\n\t6: \"south\",\n\t7: \"southeast\",\n\t8: \"southwest\",\n\t9: \"up\",\n\t10: \"down\",\n\t11: \"in\",\n\t12: \"out\"\n};\nfunction ue(e, t, n, r, i) {\n\treturn e.roomShape === \"circle\" ? N(t, n, r, i) : e.roomShape === \"roundedRectangle\" ? M(t, n, r, i, e.roomSize * .2) : j(t, n, r, i);\n}\nfunction de(e, t, n) {\n\tlet r = [];\n\tfor (let i of e.stubs) {\n\t\tlet a = le[i];\n\t\tif (!a) continue;\n\t\tlet o = ue(t, e.x, e.y, a, t.roomSize / 2), s = j(e.x, e.y, a, t.roomSize / 2 + .5);\n\t\tr.push({\n\t\t\tx1: o.x,\n\t\t\ty1: o.y,\n\t\t\tx2: s.x,\n\t\t\ty2: s.y,\n\t\t\tstroke: n ?? t.lineColor,\n\t\t\tstrokeWidth: t.lineWidth\n\t\t});\n\t}\n\treturn r;\n}\n//#endregion\n//#region src/scene/SpecialExitStyle.ts\nvar fe = {\n\t1: \"rgb(10, 155, 10)\",\n\t2: \"rgb(226, 205, 59)\",\n\t3: \"rgb(155, 10, 10)\"\n};\nfunction pe(e, t, n) {\n\tlet r = [];\n\tfor (let [i, a] of Object.entries(e.customLines)) {\n\t\tlet o = [e.x, e.y];\n\t\tfor (let e of a.points) o.push(e.x, -e.y);\n\t\tlet s = n ?? `rgb(${a.attributes.color.r}, ${a.attributes.color.g}, ${a.attributes.color.b})`, c;\n\t\ta.attributes.style === \"dot line\" ? c = [.05, .05] : a.attributes.style === \"dash line\" && (c = [.4, .2]);\n\t\tlet l = {\n\t\t\tpoints: o,\n\t\t\tstroke: s,\n\t\t\tstrokeWidth: t.lineWidth,\n\t\t\tdash: c\n\t\t}, u;\n\t\tif (a.attributes.arrow && o.length >= 4) {\n\t\t\tlet e = o.length - 2, n = o[e], r = o[e + 1], i = o[e - 2], a = o[e - 1], c = Math.atan2(r - a, n - i), l = .3, d = .1;\n\t\t\tu = {\n\t\t\t\ttipX: n,\n\t\t\t\ttipY: r,\n\t\t\t\tx1: n - l * Math.cos(c - Math.atan2(d, l)),\n\t\t\t\ty1: r - l * Math.sin(c - Math.atan2(d, l)),\n\t\t\t\tx2: n - l * Math.cos(c + Math.atan2(d, l)),\n\t\t\t\ty2: r - l * Math.sin(c + Math.atan2(d, l)),\n\t\t\t\tfill: s,\n\t\t\t\tstroke: s,\n\t\t\t\tstrokeWidth: t.lineWidth\n\t\t\t};\n\t\t}\n\t\tlet d, f = e.doors[i];\n\t\tif (f && o.length >= 4) {\n\t\t\tlet e = o[0] + (o[2] - o[0]) / 2, n = o[1] + (o[3] - o[1]) / 2, r = t.roomSize / 2;\n\t\t\td = {\n\t\t\t\tx: e - r / 2,\n\t\t\t\ty: n - r / 2,\n\t\t\t\twidth: r,\n\t\t\t\theight: r,\n\t\t\t\tstroke: fe[f] ?? fe[3],\n\t\t\t\tstrokeWidth: t.lineWidth\n\t\t\t};\n\t\t}\n\t\tr.push({\n\t\t\tline: l,\n\t\t\tarrow: u,\n\t\t\tdoor: d\n\t\t});\n\t}\n\treturn r;\n}\n//#endregion\n//#region src/scene/InnerExitStyle.ts\nvar me = [\n\t\"up\",\n\t\"down\",\n\t\"in\",\n\t\"out\"\n];\nfunction F(e, t, n, r) {\n\tlet i = r * Math.PI / 180, a = [];\n\tfor (let r = 0; r < 3; r++) {\n\t\tlet o = 2 * Math.PI * r / 3 - Math.PI / 2, s = Math.cos(o) * n * 1.4, c = Math.sin(o) * n * .8, l = s * Math.cos(i) - c * Math.sin(i), u = s * Math.sin(i) + c * Math.cos(i);\n\t\ta.push(e + l, t + u);\n\t}\n\treturn a;\n}\nfunction he(e, t, n) {\n\treturn {\n\t\tsymbolColor: n.frameMode || n.coloredMode ? t.getColorValue(e.env) : t.getSymbolColor(e.env),\n\t\tsymbolFill: n.frameMode || n.coloredMode ? t.getColorValue(e.env) : t.getSymbolColor(e.env, .6)\n\t};\n}\nvar ge = {\n\t1: \"rgb(10, 155, 10)\",\n\t2: \"rgb(226, 205, 59)\",\n\t3: \"rgb(155, 10, 10)\"\n};\nfunction _e(e, t, n) {\n\tlet r = [], i = n.roomSize, a = i / 5, { symbolColor: o, symbolFill: s } = he(e, t, n);\n\tfor (let t of me) {\n\t\tif (!e.exits[t]) continue;\n\t\tlet c = e.doors[t], l = c === void 0 ? o : ge[c] ?? ge[3];\n\t\tswitch (t) {\n\t\t\tcase \"up\": {\n\t\t\t\tlet t = j(e.x, e.y, \"south\", i / 4);\n\t\t\t\tr.push({\n\t\t\t\t\tcx: t.x,\n\t\t\t\t\tcy: t.y,\n\t\t\t\t\tvertices: F(t.x, t.y, a, 0),\n\t\t\t\t\tfill: s,\n\t\t\t\t\tstroke: l,\n\t\t\t\t\tstrokeWidth: n.lineWidth\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"down\": {\n\t\t\t\tlet t = j(e.x, e.y, \"north\", i / 4);\n\t\t\t\tr.push({\n\t\t\t\t\tcx: t.x,\n\t\t\t\t\tcy: t.y,\n\t\t\t\t\tvertices: F(t.x, t.y, a, 180),\n\t\t\t\t\tfill: s,\n\t\t\t\t\tstroke: l,\n\t\t\t\t\tstrokeWidth: n.lineWidth\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"in\": {\n\t\t\t\tlet t = j(e.x, e.y, \"west\", i / 4), o = j(e.x, e.y, \"east\", i / 4);\n\t\t\t\tr.push({\n\t\t\t\t\tcx: t.x,\n\t\t\t\t\tcy: t.y,\n\t\t\t\t\tvertices: F(t.x, t.y, a, 90),\n\t\t\t\t\tfill: s,\n\t\t\t\t\tstroke: l,\n\t\t\t\t\tstrokeWidth: n.lineWidth\n\t\t\t\t}), r.push({\n\t\t\t\t\tcx: o.x,\n\t\t\t\t\tcy: o.y,\n\t\t\t\t\tvertices: F(o.x, o.y, a, -90),\n\t\t\t\t\tfill: s,\n\t\t\t\t\tstroke: l,\n\t\t\t\t\tstrokeWidth: n.lineWidth\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"out\": {\n\t\t\t\tlet t = j(e.x, e.y, \"west\", i / 4), o = j(e.x, e.y, \"east\", i / 4);\n\t\t\t\tr.push({\n\t\t\t\t\tcx: t.x,\n\t\t\t\t\tcy: t.y,\n\t\t\t\t\tvertices: F(t.x, t.y, a, -90),\n\t\t\t\t\tfill: s,\n\t\t\t\t\tstroke: l,\n\t\t\t\t\tstrokeWidth: n.lineWidth\n\t\t\t\t}), r.push({\n\t\t\t\t\tcx: o.x,\n\t\t\t\t\tcy: o.y,\n\t\t\t\t\tvertices: F(o.x, o.y, a, 90),\n\t\t\t\t\tfill: s,\n\t\t\t\t\tstroke: l,\n\t\t\t\t\tstrokeWidth: n.lineWidth\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn { triangles: r };\n}\n//#endregion\n//#region src/ScenePipeline.ts\nfunction ve(e) {\n\tlet t = (e?.alpha ?? 255) / 255, n = (e) => Math.min(255, Math.max(0, e ?? 0));\n\treturn `rgba(${n(e?.r)}, ${n(e?.g)}, ${n(e?.b)}, ${t})`;\n}\nvar ye = class {\n\tconstructor(e, t, n, r) {\n\t\tthis.mapReader = e, this.settings = t, this.backend = n, this.gridLayer = r.gridLayer, this.linkLayer = r.linkLayer, this.roomLayer = r.roomLayer, this.roomShapeRenderer = new re(e, t, n), this.gridRenderer = new ie(r.gridLayer, t, n), this.exitRenderer = new ce(e, t);\n\t}\n\tbuildScene(e, t, n, r) {\n\t\tthis.gridLayer.destroyChildren(), this.gridRenderer.invalidateCache(), this.linkLayer.destroyChildren(), this.roomLayer.destroyChildren(), r && this.gridRenderer.render(r), this.renderLabels(t.getLabels());\n\t\tlet i = this.renderLinkExits(e.getLinkExits(n), n), a = this.renderRooms(t.getRooms() ?? []);\n\t\treturn this.renderAreaName(e, t), {\n\t\t\troomNodes: a.roomNodes,\n\t\t\tstandaloneExitNodes: i.standaloneExitNodes,\n\t\t\tareaExitHitZones: [...i.areaExitHitZones, ...a.areaExitHitZones]\n\t\t};\n\t}\n\tgetEffectiveBounds(e, t) {\n\t\treturn this.settings.uniformLevelSize ? e.getFullBounds() : t.getBounds();\n\t}\n\trenderRooms(e) {\n\t\tlet t = /* @__PURE__ */ new Map(), n = [], r = this.settings.roomSize;\n\t\treturn e.forEach((e) => {\n\t\t\tlet i = this.roomShapeRenderer.createRoomGroup(e);\n\t\t\tfor (let t of pe(e, this.settings)) {\n\t\t\t\tlet e = this.backend.createGroup(0, 0);\n\t\t\t\tif (this.backend.addLine(e, {\n\t\t\t\t\tpoints: t.line.points,\n\t\t\t\t\tstroke: t.line.stroke,\n\t\t\t\t\tstrokeWidth: t.line.strokeWidth,\n\t\t\t\t\tdash: t.line.dash\n\t\t\t\t}), t.arrow) {\n\t\t\t\t\tlet n = t.arrow;\n\t\t\t\t\tthis.backend.addPolygon(e, {\n\t\t\t\t\t\tvertices: [\n\t\t\t\t\t\t\tn.tipX,\n\t\t\t\t\t\t\tn.tipY,\n\t\t\t\t\t\t\tn.x1,\n\t\t\t\t\t\t\tn.y1,\n\t\t\t\t\t\t\tn.x2,\n\t\t\t\t\t\t\tn.y2\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfill: n.fill,\n\t\t\t\t\t\tstroke: n.stroke,\n\t\t\t\t\t\tstrokeWidth: n.strokeWidth\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (t.door) {\n\t\t\t\t\tlet n = t.door;\n\t\t\t\t\tthis.backend.addRect(e, {\n\t\t\t\t\t\tx: n.x,\n\t\t\t\t\t\ty: n.y,\n\t\t\t\t\t\twidth: n.width,\n\t\t\t\t\t\theight: n.height,\n\t\t\t\t\t\tstroke: n.stroke,\n\t\t\t\t\t\tstrokeWidth: n.strokeWidth\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.linkLayer.addNode(e);\n\t\t\t}\n\t\t\tthis.exitRenderer.getSpecialExitAreaTargets(e).forEach((e) => {\n\t\t\t\tn.push(e);\n\t\t\t});\n\t\t\tlet a = e.x - r / 2, o = e.y - r / 2;\n\t\t\tfor (let t of de(e, this.settings)) this.backend.addLine(i, {\n\t\t\t\tpoints: [\n\t\t\t\t\tt.x1 - a,\n\t\t\t\t\tt.y1 - o,\n\t\t\t\t\tt.x2 - a,\n\t\t\t\t\tt.y2 - o\n\t\t\t\t],\n\t\t\t\tstroke: t.stroke,\n\t\t\t\tstrokeWidth: t.strokeWidth\n\t\t\t});\n\t\t\tlet { triangles: s } = _e(e, this.mapReader, this.settings);\n\t\t\tfor (let e of s) {\n\t\t\t\tlet t = [];\n\t\t\t\tfor (let n = 0; n < e.vertices.length; n += 2) t.push(e.vertices[n] - a, e.vertices[n + 1] - o);\n\t\t\t\tthis.backend.addPolygon(i, {\n\t\t\t\t\tvertices: t,\n\t\t\t\t\tfill: e.fill,\n\t\t\t\t\tstroke: e.stroke,\n\t\t\t\t\tstrokeWidth: e.strokeWidth\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.roomLayer.addNode(i), t.set(e.id, {\n\t\t\t\troom: e,\n\t\t\t\tgroup: i\n\t\t\t});\n\t\t}), {\n\t\t\troomNodes: t,\n\t\t\tareaExitHitZones: n\n\t\t};\n\t}\n\trenderLinkExits(e, t) {\n\t\tlet n = [], r = [];\n\t\treturn e.forEach((e) => {\n\t\t\tlet i = this.exitRenderer.renderData(e, t);\n\t\t\tif (!i) return;\n\t\t\tlet a = this.renderExitData(i);\n\t\t\tthis.linkLayer.addNode(a), n.push({\n\t\t\t\tgroup: a,\n\t\t\t\tbounds: i.bounds,\n\t\t\t\ttargetRoomId: i.targetRoomId\n\t\t\t}), i.targetRoomId !== void 0 && r.push({\n\t\t\t\tbounds: i.bounds,\n\t\t\t\ttargetRoomId: i.targetRoomId\n\t\t\t});\n\t\t}), {\n\t\t\tstandaloneExitNodes: n,\n\t\t\tareaExitHitZones: r\n\t\t};\n\t}\n\trenderExitData(e) {\n\t\tlet t = this.backend.createGroup(0, 0);\n\t\tfor (let n of e.lines) this.backend.addLine(t, {\n\t\t\tpoints: n.points,\n\t\t\tstroke: n.stroke,\n\t\t\tstrokeWidth: n.strokeWidth,\n\t\t\tdash: n.dash\n\t\t});\n\t\tfor (let n of e.arrows) this.renderArrow(t, n);\n\t\tfor (let n of e.doors) this.backend.addRect(t, {\n\t\t\tx: n.x,\n\t\t\ty: n.y,\n\t\t\twidth: n.width,\n\t\t\theight: n.height,\n\t\t\tstroke: n.stroke,\n\t\t\tstrokeWidth: n.strokeWidth\n\t\t});\n\t\treturn t;\n\t}\n\trenderArrow(e, t) {\n\t\tthis.backend.addLine(e, {\n\t\t\tpoints: t.points,\n\t\t\tstroke: t.stroke,\n\t\t\tstrokeWidth: t.strokeWidth,\n\t\t\tdash: t.dash\n\t\t});\n\t\tlet n = t.points.length - 2, r = t.points[n], i = t.points[n + 1], a = t.points[n - 2], o = t.points[n - 1], s = Math.atan2(i - o, r - a), c = t.pointerLength, l = t.pointerWidth / 2, u = r - c * Math.cos(s - Math.atan2(l, c)), d = i - c * Math.sin(s - Math.atan2(l, c)), f = r - c * Math.cos(s + Math.atan2(l, c)), p = i - c * Math.sin(s + Math.atan2(l, c));\n\t\tthis.backend.addPolygon(e, {\n\t\t\tvertices: [\n\t\t\t\tr,\n\t\t\t\ti,\n\t\t\t\tu,\n\t\t\t\td,\n\t\t\t\tf,\n\t\t\t\tp\n\t\t\t],\n\t\t\tfill: t.fill,\n\t\t\tstroke: t.stroke,\n\t\t\tstrokeWidth: t.strokeWidth\n\t\t});\n\t}\n\trenderLabels(e) {\n\t\tthis.settings.labelRenderMode !== \"none\" && e.forEach((e) => {\n\t\t\tlet t = e.X, n = -e.Y;\n\t\t\tif (this.settings.labelRenderMode === \"image\" && e.pixMap) {\n\t\t\t\tlet r = this.backend.createGroup(0, 0);\n\t\t\t\tthis.backend.addImage(r, {\n\t\t\t\t\tx: t,\n\t\t\t\t\ty: n,\n\t\t\t\t\twidth: e.Width,\n\t\t\t\t\theight: e.Height,\n\t\t\t\t\tsrc: `data:image/png;base64,${e.pixMap}`\n\t\t\t\t}), this.linkLayer.addNode(r);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet r = this.backend.createGroup(0, 0);\n\t\t\tif ((e.BgColor?.alpha ?? 0) > 0 && !this.settings.transparentLabels && this.backend.addRect(r, {\n\t\t\t\tx: t,\n\t\t\t\ty: n,\n\t\t\t\twidth: e.Width,\n\t\t\t\theight: e.Height,\n\t\t\t\tfill: ve(e.BgColor)\n\t\t\t}), e.Text) {\n\t\t\t\tlet i = Math.min(.75, e.Width / Math.max(e.Text.length / 2, 1)), a = Math.max(.1, Math.min(i, Math.max(e.Height * .9, .1)));\n\t\t\t\tthis.backend.addText(r, {\n\t\t\t\t\tx: t,\n\t\t\t\t\ty: n,\n\t\t\t\t\twidth: e.Width,\n\t\t\t\t\theight: e.Height,\n\t\t\t\t\ttext: e.Text,\n\t\t\t\t\tfontSize: a,\n\t\t\t\t\tfill: ve(e.FgColor),\n\t\t\t\t\talign: \"center\",\n\t\t\t\t\tverticalAlign: \"middle\"\n\t\t\t\t});\n\t\t\t}\n\t\t\tthis.linkLayer.addNode(r);\n\t\t});\n\t}\n\trenderAreaName(e, t) {\n\t\tif (!this.settings.areaName) return;\n\t\tlet n = e.getAreaName();\n\t\tif (!n) return;\n\t\tlet r = this.getEffectiveBounds(e, t), i = this.backend.createGroup(0, 0);\n\t\tthis.backend.addText(i, {\n\t\t\tx: r.minX - 3.5,\n\t\t\ty: r.minY - 4.5,\n\t\t\ttext: n,\n\t\t\tfontSize: 2.5,\n\t\t\tfontFamily: this.settings.fontFamily,\n\t\t\tfill: \"white\"\n\t\t}), this.roomLayer.addNode(i);\n\t}\n}, I = 75;\nfunction be(e) {\n\treturn e < .5 ? 2 * e * e : -1 + (4 - 2 * e) * e;\n}\nvar L = class {\n\tconstructor(e, t) {\n\t\tthis.zoom = 1, this.minZoom = .05, this.position = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t}, this.centerOnResize = !0, this.dragging = !1, this.dragStart = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t}, this.positionAtDragStart = {\n\t\t\tx: 0,\n\t\t\ty: 0\n\t\t}, this.width = e, this.height = t;\n\t}\n\tgetScale() {\n\t\treturn I * this.zoom;\n\t}\n\tsetZoom(e) {\n\t\tlet t = Math.max(this.minZoom, Math.min(5, e));\n\t\treturn this.zoom === t ? !1 : (this.zoom = t, this.notify(), !0);\n\t}\n\tzoomToCenter(e) {\n\t\tlet t = Math.max(this.minZoom, Math.min(5, e));\n\t\tif (this.zoom === t) return !1;\n\t\tlet n = this.getScale(), r = this.width / 2, i = this.height / 2, a = {\n\t\t\tx: (r - this.position.x) / n,\n\t\t\ty: (i - this.position.y) / n\n\t\t};\n\t\tthis.zoom = t;\n\t\tlet o = this.getScale();\n\t\treturn this.position = {\n\t\t\tx: r - a.x * o,\n\t\t\ty: i - a.y * o\n\t\t}, this.notify(), !0;\n\t}\n\tzoomToPoint(e, t, n) {\n\t\tlet r = this.getScale(), i = {\n\t\t\tx: (t - this.position.x) / r,\n\t\t\ty: (n - this.position.y) / r\n\t\t}, a = Math.max(this.minZoom, Math.min(5, e));\n\t\tif (this.zoom === a) return !1;\n\t\tthis.zoom = a;\n\t\tlet o = this.getScale();\n\t\treturn this.position = {\n\t\t\tx: t - i.x * o,\n\t\t\ty: n - i.y * o\n\t\t}, this.notify(), !0;\n\t}\n\tgetViewportBounds() {\n\t\tlet e = this.getScale();\n\t\treturn {\n\t\t\tminX: (0 - this.position.x) / e,\n\t\t\tmaxX: (this.width - this.position.x) / e,\n\t\t\tminY: (0 - this.position.y) / e,\n\t\t\tmaxY: (this.height - this.position.y) / e\n\t\t};\n\t}\n\tclientToMapPoint(e, t, n) {\n\t\tlet r = e - (n?.left ?? 0), i = t - (n?.top ?? 0), a = this.getScale();\n\t\treturn a ? {\n\t\t\tx: (r - this.position.x) / a,\n\t\t\ty: (i - this.position.y) / a\n\t\t} : null;\n\t}\n\tpanToMapPoint(e, t) {\n\t\tlet n = this.getScale();\n\t\tthis.position = {\n\t\t\tx: this.width / 2 - e * n,\n\t\t\ty: this.height / 2 - t * n\n\t\t}, this.notify();\n\t}\n\tpanToMapPointAnimated(e, t, n) {\n\t\tif (n) {\n\t\t\tthis.panToMapPoint(e, t);\n\t\t\treturn;\n\t\t}\n\t\tlet r = { ...this.position }, i = this.getScale(), a = {\n\t\t\tx: this.width / 2 - e * i,\n\t\t\ty: this.height / 2 - t * i\n\t\t};\n\t\tthis.animate(200, (e) => {\n\t\t\tthis.position = {\n\t\t\t\tx: r.x + (a.x - r.x) * e,\n\t\t\t\ty: r.y + (a.y - r.y) * e\n\t\t\t};\n\t\t});\n\t}\n\tfitToMapBounds(e, t, n, r) {\n\t\tlet i = t - e, a = r - n;\n\t\tif (i <= 0 || a <= 0) return;\n\t\tlet o = this.width / ((i + 4) * I), s = this.height / ((a + 4) * I);\n\t\tthis.zoom = Math.max(.05, Math.min(5, Math.min(o, s))), this.minZoom = this.zoom;\n\t\tlet c = this.getScale(), l = (e + t) / 2, u = (n + r) / 2;\n\t\tthis.position = {\n\t\t\tx: this.width / 2 - l * c,\n\t\t\ty: this.height / 2 - u * c\n\t\t}, this.notify();\n\t}\n\tsetSize(e, t) {\n\t\tthis.width = e, this.height = t, this.notify();\n\t}\n\tstartDrag(e, t) {\n\t\tthis.cancelAnimation(), this.dragging = !0, this.dragStart = {\n\t\t\tx: e,\n\t\t\ty: t\n\t\t}, this.positionAtDragStart = { ...this.position };\n\t}\n\tupdateDrag(e, t) {\n\t\tthis.dragging && (this.position = {\n\t\t\tx: this.positionAtDragStart.x + (e - this.dragStart.x),\n\t\t\ty: this.positionAtDragStart.y + (t - this.dragStart.y)\n\t\t}, this.notify());\n\t}\n\tendDrag() {\n\t\tthis.dragging = !1;\n\t}\n\tisDragging() {\n\t\treturn this.dragging;\n\t}\n\tanimate(e, t) {\n\t\tthis.cancelAnimation();\n\t\tlet n = performance.now(), r = typeof requestAnimationFrame < \"u\" ? requestAnimationFrame : (e) => setTimeout(() => e(performance.now()), 16), i = (a) => {\n\t\t\tlet o = a - n, s = Math.min(o / e, 1);\n\t\t\tt(be(s)), this.notify(), s < 1 ? this.animationId = r(i) : this.animationId = void 0;\n\t\t};\n\t\tthis.animationId = r(i);\n\t}\n\tcancelAnimation() {\n\t\tthis.animationId !== void 0 && ((typeof cancelAnimationFrame < \"u\" ? cancelAnimationFrame : (e) => clearTimeout(e))(this.animationId), this.animationId = void 0);\n\t}\n\tisAnimating() {\n\t\treturn this.animationId !== void 0;\n\t}\n\tnotify() {\n\t\tthis.onChange?.();\n\t}\n}, xe = class {\n\tconstructor(e = 60) {\n\t\tthis.samples = [], this.lastCullingTime = 0, this.callback = null, this.windowSize = e;\n\t}\n\tsetCallback(e) {\n\t\te !== this.callback && (this.callback = e, this.samples = []);\n\t}\n\trecord(e) {\n\t\tthis.callback && (this.samples.push(e), this.samples.length >= this.windowSize && this.flush());\n\t}\n\tcomputeFps() {\n\t\tlet e = performance.now(), t = e - this.lastCullingTime;\n\t\treturn this.lastCullingTime = e, t > 0 ? 1e3 / t : 0;\n\t}\n\tflush() {\n\t\tlet e = this.samples.length;\n\t\tif (e === 0) return;\n\t\tlet t = {\n\t\t\tcullingMs: 0,\n\t\t\tgridMs: 0,\n\t\t\tvisibleRooms: 0,\n\t\t\ttotalRooms: 0,\n\t\t\tvisibleExits: 0,\n\t\t\tfps: 0\n\t\t};\n\t\tfor (let e of this.samples) t.cullingMs += e.cullingMs, t.gridMs += e.gridMs, t.visibleRooms += e.visibleRooms, t.totalRooms += e.totalRooms, t.visibleExits += e.visibleExits, t.fps += e.fps;\n\t\tt.cullingMs /= e, t.gridMs /= e, t.visibleRooms = Math.round(t.visibleRooms / e), t.totalRooms = Math.round(t.totalRooms / e), t.visibleExits = Math.round(t.visibleExits / e), t.fps = Math.round(t.fps), this.callback(t), this.samples = [];\n\t}\n}, Se = class {\n\tconstructor(e, t, n, r) {\n\t\tthis.roomNodes = /* @__PURE__ */ new Map(), this.standaloneExitNodes = [], this.spatialBucketSize = 5, this.roomSpatialIndex = /* @__PURE__ */ new Map(), this.exitSpatialIndex = /* @__PURE__ */ new Map(), this.visibleRooms = /* @__PURE__ */ new Set(), this.visibleStandaloneExitNodes = /* @__PURE__ */ new Set(), this.bufferRoomSet = /* @__PURE__ */ new Set(), this.bufferExitSet = /* @__PURE__ */ new Set(), this.bufferRoomCandidates = /* @__PURE__ */ new Set(), this.bufferExitCandidates = /* @__PURE__ */ new Set(), this.cullingScheduled = !1, this.perfMonitor = new xe(), this.stageInfo = e, this.roomLayer = t, this.linkLayer = n, this.settings = r;\n\t}\n\tcomputeBucketSize() {\n\t\tthis.spatialBucketSize = Math.max(this.settings.roomSize * 10, 5);\n\t}\n\tclear() {\n\t\tthis.roomNodes.clear(), this.standaloneExitNodes = [], this.standaloneExitBoundsRoomSize = void 0, this.roomSpatialIndex.clear(), this.exitSpatialIndex.clear(), this.visibleRooms.clear(), this.visibleStandaloneExitNodes.clear();\n\t}\n\tgetBucketKey(e, t) {\n\t\treturn e * 1000003 + t;\n\t}\n\tforEachBucket(e, t, n, r, i) {\n\t\tlet a = this.spatialBucketSize, o = Math.min(e, n), s = Math.max(e, n), c = Math.min(t, r), l = Math.max(t, r), u = Math.floor(o / a), d = Math.floor(s / a), f = Math.floor(c / a), p = Math.floor(l / a);\n\t\tfor (let e = u; e <= d; e++) for (let t = f; t <= p; t++) i(this.getBucketKey(e, t));\n\t}\n\taddRoomToSpatialIndex(e) {\n\t\tlet t = this.settings.roomSize / 2;\n\t\tthis.forEachBucket(e.room.x - t, e.room.y - t, e.room.x + t, e.room.y + t, (t) => {\n\t\t\tlet n = this.roomSpatialIndex.get(t);\n\t\t\tn || (n = /* @__PURE__ */ new Set(), this.roomSpatialIndex.set(t, n)), n.add(e);\n\t\t});\n\t}\n\taddStandaloneExitToSpatialIndex(e) {\n\t\tlet { bounds: t } = e;\n\t\tthis.forEachBucket(t.x, t.y, t.x + t.width, t.y + t.height, (t) => {\n\t\t\tlet n = this.exitSpatialIndex.get(t);\n\t\t\tn || (n = /* @__PURE__ */ new Set(), this.exitSpatialIndex.set(t, n)), n.add(e);\n\t\t});\n\t}\n\tfindRoomAtMapPoint(e, t) {\n\t\tlet n = this.settings.roomSize / 2, r = this.getBucketKey(Math.floor(e / this.spatialBucketSize), Math.floor(t / this.spatialBucketSize)), i = this.roomSpatialIndex.get(r);\n\t\tif (!i) return null;\n\t\tfor (let r of i) {\n\t\t\tlet i = e - r.room.x, a = t - r.room.y;\n\t\t\tif (i >= -n && i <= n && a >= -n && a <= n) return r.room;\n\t\t}\n\t\treturn null;\n\t}\n\tmarkExitBoundsStale() {\n\t\tthis.standaloneExitBoundsRoomSize = void 0;\n\t}\n\tsetExitBoundsRoomSize() {\n\t\tthis.standaloneExitBoundsRoomSize = this.settings.roomSize;\n\t}\n\tcollectRoomCandidates(e, t, n, r) {\n\t\tlet i = this.bufferRoomCandidates;\n\t\treturn i.clear(), this.forEachBucket(e, t, n, r, (e) => {\n\t\t\tthis.roomSpatialIndex.get(e)?.forEach((e) => i.add(e));\n\t\t}), i;\n\t}\n\tcollectStandaloneExitCandidates(e, t, n, r) {\n\t\tlet i = this.bufferExitCandidates;\n\t\treturn i.clear(), this.forEachBucket(e, t, n, r, (e) => {\n\t\t\tthis.exitSpatialIndex.get(e)?.forEach((e) => i.add(e));\n\t\t}), i;\n\t}\n\trefreshStandaloneExitBoundsIfNeeded() {\n\t\tthis.standaloneExitBoundsRoomSize !== this.settings.roomSize && (this.exitSpatialIndex.clear(), this.standaloneExitNodes.forEach((e) => this.addStandaloneExitToSpatialIndex(e)), this.standaloneExitBoundsRoomSize = this.settings.roomSize);\n\t}\n\tscheduleCulling() {\n\t\tif (this.cullingScheduled) return;\n\t\tthis.cullingScheduled = !0;\n\t\tlet e = () => {\n\t\t\tthis.cullingScheduled = !1, this.updateCulling();\n\t\t};\n\t\ttypeof requestAnimationFrame < \"u\" ? requestAnimationFrame(e) : e();\n\t}\n\tupdateCulling() {\n\t\tif (this.roomNodes.size === 0 && this.standaloneExitNodes.length === 0) return;\n\t\tlet e = this.stageInfo.scaleX();\n\t\tif (!e) return;\n\t\tthis.perfMonitor.setCallback(this.settings.perfCallback);\n\t\tlet t = this.settings.perfCallback ? performance.now() : 0, n = this.stageInfo.position(), r = this.settings.roomSize / 2, i = this.settings.cullingBounds, a = i ? i.x : 0, o = i ? i.x + i.width : this.stageInfo.width(), s = i ? i.y : 0, c = i ? i.y + i.height : this.stageInfo.height(), l = (Math.min(a, o) - n.x) / e, u = (Math.max(a, o) - n.x) / e, d = (Math.min(s, c) - n.y) / e, f = (Math.max(s, c) - n.y) / e, p = !1, m = !1, h = this.settings.cullingEnabled ? this.settings.cullingMode ?? \"indexed\" : \"none\", g = l - r, _ = u + r, v = d - r, y = f + r;\n\t\tif (this.refreshStandaloneExitBoundsIfNeeded(), h === \"none\") {\n\t\t\tthis.roomNodes.forEach((e) => {\n\t\t\t\te.group.isVisible() || (e.group.setVisible(!0), p = !0);\n\t\t\t}), this.standaloneExitNodes.forEach((e) => {\n\t\t\t\te.group.isVisible() || (e.group.setVisible(!0), m = !0);\n\t\t\t}), p && this.roomLayer.batchDraw(), m && this.linkLayer.batchDraw(), this.visibleRooms.clear(), this.roomNodes.forEach((e) => this.visibleRooms.add(e)), this.visibleStandaloneExitNodes.clear(), this.standaloneExitNodes.forEach((e) => this.visibleStandaloneExitNodes.add(e));\n\t\t\treturn;\n\t\t}\n\t\tif (h === \"basic\") {\n\t\t\tlet e = this.bufferRoomSet;\n\t\t\te.clear(), this.roomNodes.forEach((t) => {\n\t\t\t\tlet n = t.room.x + r >= l && t.room.x - r <= u && t.room.y + r >= d && t.room.y - r <= f;\n\t\t\t\tt.group.isVisible() !== n && (t.group.setVisible(n), p = !0), n && e.add(t);\n\t\t\t}), m = this.cullExits(l, u, d, f).changed, this.bufferRoomSet = this.visibleRooms, this.visibleRooms = e, p && this.roomLayer.batchDraw(), m && this.linkLayer.batchDraw();\n\t\t\treturn;\n\t\t}\n\t\tlet b = this.collectRoomCandidates(g, v, _, y), x = this.bufferRoomSet;\n\t\tif (x.clear(), b.forEach((e) => {\n\t\t\tlet t = e.room.x + r >= l && e.room.x - r <= u && e.room.y + r >= d && e.room.y - r <= f;\n\t\t\te.group.isVisible() !== t && (e.group.setVisible(t), p = !0), t && x.add(e);\n\t\t}), this.visibleRooms.forEach((e) => {\n\t\t\t!b.has(e) && e.group.isVisible() && (e.group.setVisible(!1), p = !0);\n\t\t}), this.bufferRoomSet = this.visibleRooms, this.visibleRooms = x, m = this.cullExits(l, u, d, f, !0).changed, p && this.roomLayer.batchDraw(), m && this.linkLayer.batchDraw(), this.settings.perfCallback) {\n\t\t\tlet e = performance.now() - t;\n\t\t\tthis.perfMonitor.record({\n\t\t\t\tcullingMs: e,\n\t\t\t\tgridMs: 0,\n\t\t\t\tvisibleRooms: this.visibleRooms.size,\n\t\t\t\ttotalRooms: this.roomNodes.size,\n\t\t\t\tvisibleExits: this.visibleStandaloneExitNodes.size,\n\t\t\t\tfps: this.perfMonitor.computeFps()\n\t\t\t});\n\t\t}\n\t}\n\tcullExits(e, t, n, r, i = !1) {\n\t\tlet a = i ? this.collectStandaloneExitCandidates(e - this.settings.roomSize, n - this.settings.roomSize, t + this.settings.roomSize, r + this.settings.roomSize) : this.standaloneExitNodes, o = this.bufferExitSet;\n\t\to.clear();\n\t\tlet s = !1;\n\t\ta[Symbol.iterator], a.forEach(c);\n\t\tfunction c(i) {\n\t\t\tlet a = i.bounds, c = a.x + a.width >= e && a.x <= t && a.y + a.height >= n && a.y <= r;\n\t\t\ti.group.isVisible() !== c && (i.group.setVisible(c), s = !0), c && o.add(i);\n\t\t}\n\t\treturn this.visibleStandaloneExitNodes.forEach((e) => {\n\t\t\t!o.has(e) && e.group.isVisible() && (e.group.setVisible(!1), s = !0);\n\t\t}), this.bufferExitSet = this.visibleStandaloneExitNodes, this.visibleStandaloneExitNodes = o, { changed: s };\n\t}\n}, Ce = class {\n\tconstructor(e, t, n, r, i, a) {\n\t\tthis.cleanupFns = [], this.destroyed = !1, this.container = e, this.viewport = t, this.state = n, this.settings = r, this.hitTest = i, this.events = a, this.initViewportEvents(), this.initMapEvents();\n\t}\n\tdestroy() {\n\t\tif (!this.destroyed) {\n\t\t\tthis.destroyed = !0;\n\t\t\tfor (let e of this.cleanupFns) e();\n\t\t\tthis.cleanupFns.length = 0;\n\t\t}\n\t}\n\tlisten(e, t, n, r) {\n\t\te.addEventListener(t, n, r), this.cleanupFns.push(() => e.removeEventListener(t, n, r));\n\t}\n\tinitViewportEvents() {\n\t\tlet e = this.container, t = this.viewport, n = 1.1, r = () => {\n\t\t\tif (t.setSize(e.clientWidth, e.clientHeight), t.centerOnResize && this.state.positionRoomId) {\n\t\t\t\tlet e = this.state.mapReader.getRoom(this.state.positionRoomId);\n\t\t\t\te && t.panToMapPoint(e.x, e.y);\n\t\t\t}\n\t\t};\n\t\ttypeof window < \"u\" && this.listen(window, \"resize\", r), this.listen(e, \"resize\", r);\n\t\tlet i = !1, a;\n\t\tthis.listen(e, \"pointerdown\", (n) => {\n\t\t\tif (n.button !== 0 || n.pointerType === \"touch\") return;\n\t\t\ti = !0, a = n.pointerId, e.setPointerCapture(n.pointerId);\n\t\t\tlet r = e.getBoundingClientRect();\n\t\t\tt.startDrag(n.clientX - r.left, n.clientY - r.top);\n\t\t}), this.listen(e, \"pointermove\", (n) => {\n\t\t\tif (!i || n.pointerId !== a) return;\n\t\t\tlet r = e.getBoundingClientRect();\n\t\t\tt.updateDrag(n.clientX - r.left, n.clientY - r.top);\n\t\t}), this.listen(e, \"pointerup\", (e) => {\n\t\t\te.pointerId === a && (i = !1, a = void 0, t.endDrag(), this.events.emit(\"pan\", t.getViewportBounds()));\n\t\t}), this.listen(e, \"pointercancel\", (e) => {\n\t\t\te.pointerId === a && (i = !1, a = void 0, t.endDrag());\n\t\t});\n\t\tlet o;\n\t\tthis.listen(e, \"touchstart\", (n) => {\n\t\t\tif (n.touches.length === 1) {\n\t\t\t\tlet r = n.touches[0];\n\t\t\t\to = r.identifier;\n\t\t\t\tlet i = e.getBoundingClientRect();\n\t\t\t\tt.startDrag(r.clientX - i.left, r.clientY - i.top);\n\t\t\t} else t.isDragging() && t.endDrag(), o = void 0;\n\t\t}, { passive: !0 }), this.listen(e, \"touchmove\", (n) => {\n\t\t\tlet r = n.touches;\n\t\t\tif (r.length >= 2) {\n\t\t\t\tn.preventDefault(), t.isDragging() && t.endDrag(), o = void 0;\n\t\t\t\tlet i = e.getBoundingClientRect(), a = {\n\t\t\t\t\tx: r[0].clientX - i.left,\n\t\t\t\t\ty: r[0].clientY - i.top\n\t\t\t\t}, s = {\n\t\t\t\t\tx: r[1].clientX - i.left,\n\t\t\t\t\ty: r[1].clientY - i.top\n\t\t\t\t};\n\t\t\t\tthis.handlePinch(a, s);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (r.length === 1 && o === r[0].identifier) {\n\t\t\t\tlet n = r[0], i = e.getBoundingClientRect();\n\t\t\t\tt.updateDrag(n.clientX - i.left, n.clientY - i.top);\n\t\t\t}\n\t\t}), this.listen(e, \"touchend\", (n) => {\n\t\t\tif (this.lastPinchDistance = void 0, n.touches.length === 0) t.isDragging() && (t.endDrag(), this.events.emit(\"pan\", t.getViewportBounds())), o = void 0;\n\t\t\telse if (n.touches.length === 1) {\n\t\t\t\tlet r = n.touches[0];\n\t\t\t\to = r.identifier;\n\t\t\t\tlet i = e.getBoundingClientRect();\n\t\t\t\tt.startDrag(r.clientX - i.left, r.clientY - i.top);\n\t\t\t}\n\t\t}, { passive: !0 }), this.listen(e, \"touchcancel\", () => {\n\t\t\tthis.lastPinchDistance = void 0, t.isDragging() && t.endDrag(), o = void 0;\n\t\t}, { passive: !0 }), this.listen(e, \"wheel\", (r) => {\n\t\t\tr.preventDefault();\n\t\t\tlet i = e.getBoundingClientRect(), a = r.clientX - i.left, o = r.clientY - i.top, s = r.deltaY > 0 ? -1 : 1;\n\t\t\tr.ctrlKey && (s = -s);\n\t\t\tlet c = s > 0 ? t.zoom * n : t.zoom / n;\n\t\t\tt.zoomToPoint(c, a, o) && (this.events.emit(\"zoom\", { zoom: t.zoom }), this.events.emit(\"pan\", t.getViewportBounds()));\n\t\t}, { passive: !1 });\n\t}\n\thandlePinch(e, t) {\n\t\tlet n = Math.hypot(e.x - t.x, e.y - t.y);\n\t\tif (this.lastPinchDistance === void 0 || this.lastPinchDistance === 0 || n === 0) {\n\t\t\tthis.lastPinchDistance = n;\n\t\t\treturn;\n\t\t}\n\t\tlet r = (e.x + t.x) / 2, i = (e.y + t.y) / 2, a = this.viewport.zoom * (n / this.lastPinchDistance);\n\t\tthis.viewport.zoomToPoint(a, r, i) && (this.events.emit(\"zoom\", { zoom: this.viewport.zoom }), this.events.emit(\"pan\", this.viewport.getViewportBounds())), this.lastPinchDistance = n;\n\t}\n\tinitMapEvents() {\n\t\tlet e = this.container, t = null;\n\t\tthis.listen(e, \"mousemove\", (n) => {\n\t\t\tlet r = this.findRoomAtClientPoint(n.clientX, n.clientY);\n\t\t\tif (r !== t && (t = r, r)) {\n\t\t\t\te.style.cursor = \"pointer\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!t) {\n\t\t\t\tlet t = this.findAreaExitAtClientPoint(n.clientX, n.clientY) !== null;\n\t\t\t\te.style.cursor = t ? \"pointer\" : \"auto\";\n\t\t\t}\n\t\t}), this.listen(e, \"mouseleave\", () => {\n\t\t\tt = null, e.style.cursor = \"auto\";\n\t\t});\n\t\tlet n = null;\n\t\tthis.listen(e, \"mousedown\", (e) => {\n\t\t\te.button === 0 && (n = {\n\t\t\t\tx: e.clientX,\n\t\t\t\ty: e.clientY\n\t\t\t});\n\t\t}), this.listen(e, \"mouseup\", (e) => {\n\t\t\tif (e.button !== 0 || !n) return;\n\t\t\tlet t = e.clientX - n.x, r = e.clientY - n.y;\n\t\t\tif (n = null, t * t + r * r > 25) return;\n\t\t\tlet i = this.findRoomAtClientPoint(e.clientX, e.clientY);\n\t\t\tif (i) {\n\t\t\t\tthis.emitRoomClickEvent(i.id, e.clientX, e.clientY);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet a = this.findAreaExitAtClientPoint(e.clientX, e.clientY);\n\t\t\tif (a) {\n\t\t\t\tthis.emitAreaExitClickEvent(a.targetRoomId, e.clientX, e.clientY);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.emitMapClickEvent();\n\t\t}), this.listen(e, \"contextmenu\", (e) => {\n\t\t\tlet t = this.findRoomAtClientPoint(e.clientX, e.clientY);\n\t\t\tt && (e.preventDefault(), this.emitRoomContextEvent(t.id, e.clientX, e.clientY));\n\t\t});\n\t\tlet r, i, a = () => {\n\t\t\tr !== void 0 && (window.clearTimeout(r), r = void 0), i = void 0;\n\t\t};\n\t\tthis.listen(e, \"touchstart\", (e) => {\n\t\t\tif (a(), e.touches.length > 1) return;\n\t\t\tlet t = e.touches[0];\n\t\t\tt && this.findRoomAtClientPoint(t.clientX, t.clientY) && (i = {\n\t\t\t\tclientX: t.clientX,\n\t\t\t\tclientY: t.clientY\n\t\t\t}, r = window.setTimeout(() => {\n\t\t\t\tif (i) {\n\t\t\t\t\tlet e = this.findRoomAtClientPoint(i.clientX, i.clientY);\n\t\t\t\t\te && this.emitRoomContextEvent(e.id, i.clientX, i.clientY);\n\t\t\t\t}\n\t\t\t\ta();\n\t\t\t}, 500));\n\t\t}, { passive: !0 }), this.listen(e, \"touchend\", () => a(), { passive: !0 }), this.listen(e, \"touchcancel\", () => a(), { passive: !0 }), this.listen(e, \"touchmove\", (e) => {\n\t\t\tif (!i) return;\n\t\t\tlet t = e.touches[0];\n\t\t\tif (!t) {\n\t\t\t\ta();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet n = t.clientX - i.clientX, r = t.clientY - i.clientY;\n\t\t\tn * n + r * r > 100 && a();\n\t\t}, { passive: !0 });\n\t}\n\tfindRoomAtClientPoint(e, t) {\n\t\tlet n = this.hitTest.clientToMapPoint(e, t);\n\t\treturn n ? this.hitTest.findRoomAtPoint(n.x, n.y) : null;\n\t}\n\tfindAreaExitAtClientPoint(e, t) {\n\t\tlet n = this.hitTest.clientToMapPoint(e, t);\n\t\tif (!n) return null;\n\t\tlet r = this.settings.roomSize * .5;\n\t\tfor (let e of this.hitTest.getAreaExitHitZones()) {\n\t\t\tlet t = e.bounds;\n\t\t\tif (n.x >= t.x - r && n.x <= t.x + t.width + r && n.y >= t.y - r && n.y <= t.y + t.height + r) return e;\n\t\t}\n\t\treturn null;\n\t}\n\temitRoomClickEvent(e, t, n) {\n\t\tlet r = this.container.getBoundingClientRect();\n\t\tthis.events.emit(\"roomclick\", {\n\t\t\troomId: e,\n\t\t\tposition: {\n\t\t\t\tx: t - r.left,\n\t\t\t\ty: n - r.top\n\t\t\t}\n\t\t});\n\t}\n\temitRoomContextEvent(e, t, n) {\n\t\tlet r = this.container.getBoundingClientRect();\n\t\tthis.events.emit(\"roomcontextmenu\", {\n\t\t\troomId: e,\n\t\t\tposition: {\n\t\t\t\tx: t - r.left,\n\t\t\t\ty: n - r.top\n\t\t\t}\n\t\t});\n\t}\n\temitAreaExitClickEvent(e, t, n) {\n\t\tlet r = this.container.getBoundingClientRect();\n\t\tthis.events.emit(\"areaexitclick\", {\n\t\t\ttargetRoomId: e,\n\t\t\tposition: {\n\t\t\t\tx: t - r.left,\n\t\t\t\ty: n - r.top\n\t\t\t}\n\t\t});\n\t}\n\temitMapClickEvent() {\n\t\tthis.events.emit(\"mapclick\", void 0);\n\t}\n}, R = class {\n\tconstructor(e) {\n\t\tthis.konvaGroup = e;\n\t}\n\tsetVisible(e) {\n\t\tthis.konvaGroup.visible(e);\n\t}\n\tisVisible() {\n\t\treturn this.konvaGroup.visible();\n\t}\n\tdestroy() {\n\t\tthis.konvaGroup.destroy();\n\t}\n\tsetPosition(e, t) {\n\t\tthis.konvaGroup.position({\n\t\t\tx: e,\n\t\t\ty: t\n\t\t});\n\t}\n\tgetPosition() {\n\t\treturn this.konvaGroup.position();\n\t}\n\tmoveToTop() {\n\t\tthis.konvaGroup.moveToTop();\n\t}\n}, z = class {\n\tconstructor(e) {\n\t\tthis.konvaLayer = e;\n\t}\n\taddNode(e) {\n\t\te instanceof R && this.konvaLayer.add(e.konvaGroup);\n\t}\n\tdestroyChildren() {\n\t\tthis.konvaLayer.destroyChildren();\n\t}\n\tbatchDraw() {\n\t\tthis.konvaLayer.batchDraw();\n\t}\n}, we = class {\n\tcreateGroup(t, n) {\n\t\treturn new R(new e.Group({\n\t\t\tx: t,\n\t\t\ty: n,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n\taddRect(t, n) {\n\t\tt instanceof R && t.konvaGroup.add(new e.Rect({\n\t\t\tx: n.x,\n\t\t\ty: n.y,\n\t\t\twidth: n.width,\n\t\t\theight: n.height,\n\t\t\tfill: n.fill,\n\t\t\tstroke: n.stroke,\n\t\t\tstrokeWidth: n.strokeWidth ?? 0,\n\t\t\tcornerRadius: n.cornerRadius ?? 0,\n\t\t\tdash: n.dash,\n\t\t\tdashEnabled: n.dashEnabled ?? !1,\n\t\t\tperfectDrawEnabled: !1,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n\taddCircle(t, n) {\n\t\tt instanceof R && t.konvaGroup.add(new e.Circle({\n\t\t\tx: n.cx,\n\t\t\ty: n.cy,\n\t\t\tradius: n.radius,\n\t\t\tfill: n.fill,\n\t\t\tstroke: n.stroke,\n\t\t\tstrokeWidth: n.strokeWidth ?? 0,\n\t\t\tdash: n.dash,\n\t\t\tdashEnabled: n.dashEnabled ?? !1,\n\t\t\tperfectDrawEnabled: !1,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n\taddLine(t, n) {\n\t\tt instanceof R && t.konvaGroup.add(new e.Line({\n\t\t\tpoints: n.points,\n\t\t\tstroke: n.stroke,\n\t\t\tstrokeWidth: n.strokeWidth ?? 0,\n\t\t\tdash: n.dash,\n\t\t\tlineCap: n.lineCap,\n\t\t\tlineJoin: n.lineJoin,\n\t\t\topacity: n.alpha,\n\t\t\tperfectDrawEnabled: !1,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n\taddPolygon(t, n) {\n\t\tt instanceof R && t.konvaGroup.add(new e.Line({\n\t\t\tpoints: n.vertices,\n\t\t\tclosed: !0,\n\t\t\tfill: n.fill,\n\t\t\tstroke: n.stroke,\n\t\t\tstrokeWidth: n.strokeWidth ?? 0,\n\t\t\tperfectDrawEnabled: !1,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n\taddText(t, n) {\n\t\tif (!(t instanceof R)) return;\n\t\tlet r = (n.offsetY ?? 0) + (n.konvaCorrectionRatio ?? 0) * n.fontSize;\n\t\tt.konvaGroup.add(new e.Text({\n\t\t\tx: n.x,\n\t\t\ty: n.y,\n\t\t\ttext: n.text,\n\t\t\tfontSize: n.fontSize,\n\t\t\tfontFamily: n.fontFamily,\n\t\t\tfontStyle: n.fontStyle,\n\t\t\tfill: n.fill,\n\t\t\talign: n.align,\n\t\t\tverticalAlign: n.verticalAlign,\n\t\t\twidth: n.width,\n\t\t\theight: n.height,\n\t\t\toffsetY: r || void 0,\n\t\t\tperfectDrawEnabled: !1,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n\taddImage(t, n) {\n\t\tif (!(t instanceof R)) return;\n\t\tlet r = e.Util.createImageElement();\n\t\tr.src = n.src, t.konvaGroup.add(new e.Image({\n\t\t\tx: n.x,\n\t\t\ty: n.y,\n\t\t\twidth: n.width,\n\t\t\theight: n.height,\n\t\t\timage: r,\n\t\t\tlistening: !1\n\t\t}));\n\t}\n}, B = [\n\t\"up\",\n\t\"down\",\n\t\"in\",\n\t\"out\"\n];\nfunction V(e, t, n, r, i) {\n\treturn e.roomShape === \"circle\" ? N(t, n, r, i) : e.roomShape === \"roundedRectangle\" ? M(t, n, r, i, e.roomSize * .2) : j(t, n, r, i);\n}\nfunction Te(e, t, n) {\n\tfor (let [e, r] of Object.entries(t.exits)) if (r === n.id) {\n\t\tlet r = e;\n\t\tif (B.includes(r)) {\n\t\t\tlet e = D[r];\n\t\t\treturn {\n\t\t\t\ttype: \"inner\",\n\t\t\t\tfromDir: r,\n\t\t\t\tcustomLineKey: t.customLines[e] ? e : t.customLines[r] ? r : void 0,\n\t\t\t\tfromRoom: t,\n\t\t\t\ttoRoom: n\n\t\t\t};\n\t\t}\n\t\tlet i = D[r];\n\t\treturn t.customLines[i] ? {\n\t\t\ttype: \"special\",\n\t\t\tfromDir: r,\n\t\t\tcustomLineKey: i,\n\t\t\tfromRoom: t,\n\t\t\ttoRoom: n\n\t\t} : t.customLines[r] ? {\n\t\t\ttype: \"special\",\n\t\t\tfromDir: r,\n\t\t\tcustomLineKey: r,\n\t\t\tfromRoom: t,\n\t\t\ttoRoom: n\n\t\t} : {\n\t\t\ttype: \"regular\",\n\t\t\tfromDir: r,\n\t\t\ttoDir: Ee(n, t.id),\n\t\t\tfromRoom: t,\n\t\t\ttoRoom: n\n\t\t};\n\t}\n\tfor (let [e, r] of Object.entries(t.specialExits)) if (r === n.id) return t.customLines[e] ? {\n\t\ttype: \"special\",\n\t\tcustomLineKey: e,\n\t\tfromRoom: t,\n\t\ttoRoom: n\n\t} : {\n\t\ttype: \"inner\",\n\t\tfromRoom: t,\n\t\ttoRoom: n\n\t};\n\tfor (let [e, r] of Object.entries(n.exits)) if (r === t.id) {\n\t\tlet r = e;\n\t\tif (B.includes(r)) {\n\t\t\tlet e = D[r];\n\t\t\treturn {\n\t\t\t\ttype: \"inner\",\n\t\t\t\ttoDir: r,\n\t\t\t\tcustomLineKey: n.customLines[e] ? e : n.customLines[r] ? r : void 0,\n\t\t\t\tfromRoom: t,\n\t\t\t\ttoRoom: n\n\t\t\t};\n\t\t}\n\t\tlet i = D[r];\n\t\treturn n.customLines[i] ? {\n\t\t\ttype: \"special\",\n\t\t\ttoDir: r,\n\t\t\tcustomLineKey: i,\n\t\t\tfromRoom: t,\n\t\t\ttoRoom: n\n\t\t} : n.customLines[r] ? {\n\t\t\ttype: \"special\",\n\t\t\ttoDir: r,\n\t\t\tcustomLineKey: r,\n\t\t\tfromRoom: t,\n\t\t\ttoRoom: n\n\t\t} : {\n\t\t\ttype: \"regular\",\n\t\t\ttoDir: r,\n\t\t\tfromRoom: t,\n\t\t\ttoRoom: n\n\t\t};\n\t}\n\tfor (let [e, r] of Object.entries(n.specialExits)) if (r === t.id) return n.customLines[e] ? {\n\t\ttype: \"special\",\n\t\tcustomLineKey: e,\n\t\tfromRoom: t,\n\t\ttoRoom: n\n\t} : {\n\t\ttype: \"inner\",\n\t\tfromRoom: t,\n\t\ttoRoom: n\n\t};\n\treturn {\n\t\ttype: \"none\",\n\t\tfromRoom: t,\n\t\ttoRoom: n\n\t};\n}\nfunction Ee(e, t) {\n\tfor (let [n, r] of Object.entries(e.exits)) if (r === t) return n;\n}\nfunction De(e, t, n) {\n\treturn e ? e.area === t && e.z === n : !1;\n}\nfunction Oe(e, t) {\n\tfor (let [n, r] of Object.entries(e.exits)) if (r === t.id) return { direction: n };\n\tfor (let [n, r] of Object.entries(e.specialExits)) if (r === t.id) return;\n}\nfunction ke(e, t) {\n\tfor (let n of k) if (e.exits[n] === t.id) return n;\n\tfor (let n of k) if (t.exits[n] === e.id) return oe[n];\n}\nfunction Ae(e, t, n) {\n\tlet { fromRoom: r, toRoom: i, fromDir: a, toDir: o } = t;\n\tif (n.length === 0 && n.push(r.x, r.y), a && E.includes(a)) {\n\t\tlet t = V(e, r.x, r.y, a, e.roomSize / 2);\n\t\tn.push(t.x, t.y);\n\t}\n\tif (o && E.includes(o)) {\n\t\tlet t = V(e, i.x, i.y, o, e.roomSize / 2);\n\t\tn.push(t.x, t.y);\n\t}\n\tn.push(i.x, i.y);\n}\nfunction je(e, t) {\n\tlet { fromRoom: n, toRoom: r, customLineKey: i } = e, a = n, o;\n\ti && (o = n.customLines[i], o || (o = r.customLines[i], a = r)), t.length === 0 && t.push(a.x, a.y), o && o.points.forEach((e) => {\n\t\tt.push(e.x, -e.y);\n\t}), t.push(r.x, r.y);\n}\nfunction Me(e, t, n, r, i) {\n\tlet a = [], o = [], s = [], c = n.map((t) => e.getRoom(t)).filter((e) => e !== void 0), l = [], u = () => {\n\t\tl.length >= 4 && a.push({ points: [...l] }), l = [];\n\t}, d = (e) => {\n\t\tlet { fromRoom: t, toRoom: n, fromDir: r, toDir: i, customLineKey: a } = e;\n\t\tif (a) {\n\t\t\tlet e = t, r = t.customLines[a];\n\t\t\tif (r || (r = n.customLines[a], e = n), r) {\n\t\t\t\tlet t = [e.x, e.y];\n\t\t\t\tr.points.forEach((e) => {\n\t\t\t\t\tt.push(e.x, -e.y);\n\t\t\t\t}), s.push({ points: t });\n\t\t\t}\n\t\t}\n\t\tr && B.includes(r) && o.push({\n\t\t\troom: t,\n\t\t\tdirection: r\n\t\t}), i && B.includes(i) && o.push({\n\t\t\troom: n,\n\t\t\tdirection: i\n\t\t});\n\t};\n\tfor (let n = 0; n < c.length - 1; n++) {\n\t\tlet a = c[n], s = c[n + 1], f = De(a, r, i), p = De(s, r, i);\n\t\tif (!f && !p) {\n\t\t\tu();\n\t\t\tcontinue;\n\t\t}\n\t\tif (f && p) {\n\t\t\tlet n = Te(e, a, s);\n\t\t\tswitch (n.type) {\n\t\t\t\tcase \"regular\":\n\t\t\t\t\tAe(t, n, l);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"special\":\n\t\t\t\t\tje(n, l);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inner\":\n\t\t\t\t\tu(), d(n);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"none\":\n\t\t\t\t\tl.length === 0 && l.push(a.x, a.y), l.push(s.x, s.y);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tlet e = f ? a : s, n = f ? s : a, r = Oe(e, n);\n\t\t\tif (r) {\n\t\t\t\tif (B.includes(r.direction)) u(), o.push({\n\t\t\t\t\troom: e,\n\t\t\t\t\tdirection: r.direction\n\t\t\t\t});\n\t\t\t\telse if (E.includes(r.direction)) {\n\t\t\t\t\tl.length === 0 && l.push(e.x, e.y);\n\t\t\t\t\tlet n = V(t, e.x, e.y, r.direction, t.roomSize / 2), i = j(e.x, e.y, r.direction, t.roomSize);\n\t\t\t\t\tl.push(n.x, n.y, i.x, i.y), u();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tlet r = ke(e, n);\n\t\t\t\tif (r) {\n\t\t\t\t\tl.length === 0 && l.push(e.x, e.y);\n\t\t\t\t\tlet n = V(t, e.x, e.y, r, t.roomSize / 2), i = j(e.x, e.y, r, t.roomSize);\n\t\t\t\t\tl.push(n.x, n.y, i.x, i.y), u();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn u(), {\n\t\tsegments: a,\n\t\tinnerMarkers: o,\n\t\tcustomLines: s\n\t};\n}\n//#endregion\n//#region src/scene/OverlayStyle.ts\nfunction Ne(e, t, n) {\n\tlet r = 1.425, i = n.roomSize;\n\treturn {\n\t\tshape: n.roomShape === \"circle\" ? \"circle\" : \"rect\",\n\t\tcx: e.x,\n\t\tcy: e.y,\n\t\tsize: i / 2 * r,\n\t\tcornerRadius: n.roomShape === \"roundedRectangle\" ? i * r * .2 : 0,\n\t\tstroke: t,\n\t\tstrokeWidth: .1,\n\t\tdash: [.05, .05]\n\t};\n}\nfunction Pe(e, t) {\n\tlet n = t.playerMarker, r = t.roomSize * n.sizeFactor, i = n.matchRoomShape && t.roomShape !== \"circle\";\n\treturn {\n\t\tshape: i ? \"rect\" : \"circle\",\n\t\tcx: e.x,\n\t\tcy: e.y,\n\t\tsize: r / 2,\n\t\tcornerRadius: i && t.roomShape === \"roundedRectangle\" ? r * .2 : 0,\n\t\tstrokeColor: n.strokeColor,\n\t\tstrokeWidth: n.strokeWidth,\n\t\tstrokeAlpha: n.strokeAlpha,\n\t\tfillColor: n.fillColor,\n\t\tfillAlpha: n.fillAlpha,\n\t\tdash: n.dash,\n\t\tdashEnabled: n.dashEnabled\n\t};\n}\nfunction Fe(e, t, n, r, i, a) {\n\tlet o = Me(e, t, n, i, a), s = t.lineWidth, c = t.roomSize / 5, l = [];\n\tfor (let e of o.segments) e.points.length >= 4 && l.push({ points: e.points });\n\tfor (let e of o.customLines) e.points.length >= 4 && l.push({ points: e.points });\n\tlet u = [];\n\tfor (let e of o.innerMarkers) {\n\t\tlet t = e.direction === \"up\" ? 0 : e.direction === \"down\" ? 180 : e.direction === \"in\" ? 90 : -90;\n\t\tu.push({ vertices: F(e.room.x, e.room.y, c, t) });\n\t}\n\treturn {\n\t\tsegments: l,\n\t\ttriangles: u,\n\t\tcolor: r,\n\t\toutlineWidth: s * 8,\n\t\tlineWidth: s * 4\n\t};\n}\n//#endregion\n//#region src/scene/AmbientLightStyle.ts\nvar H, Ie, Le = 256;\nfunction Re(e, t, n) {\n\tlet r = `${e.toFixed(2)}:${t}:${n.toFixed(3)}`;\n\tif (Ie === r && H) return H;\n\tlet i = Le, a = i / 2, o = document.createElement(\"canvas\");\n\to.width = i, o.height = i;\n\tlet s = o.getContext(\"2d\");\n\ts.fillStyle = `rgba(0, 0, 0, ${e})`, s.fillRect(0, 0, i, i), s.globalCompositeOperation = \"destination-out\";\n\tlet c = s.createRadialGradient(a, a, 0, a, a, a), l = Math.min(n, .99);\n\tc.addColorStop(0, \"rgba(0, 0, 0, 1)\"), c.addColorStop(l * .25, \"rgba(0, 0, 0, 0.97)\"), c.addColorStop(l * .5, \"rgba(0, 0, 0, 0.82)\"), c.addColorStop(l * .7, \"rgba(0, 0, 0, 0.50)\"), c.addColorStop(l * .85, \"rgba(0, 0, 0, 0.22)\"), c.addColorStop(l * .95, \"rgba(0, 0, 0, 0.06)\"), c.addColorStop(l, \"rgba(0, 0, 0, 0)\"), l < .98 && c.addColorStop(1, \"rgba(0, 0, 0, 0)\"), s.fillStyle = c, s.beginPath(), s.arc(a, a, a, 0, Math.PI * 2), s.fill(), s.globalCompositeOperation = \"source-over\";\n\tlet u = parseInt(t.slice(1, 3), 16), d = parseInt(t.slice(3, 5), 16), f = parseInt(t.slice(5, 7), 16), p = s.createRadialGradient(a, a, 0, a, a, a * l);\n\treturn p.addColorStop(0, `rgba(${u}, ${d}, ${f}, 0.05)`), p.addColorStop(1, `rgba(${u}, ${d}, ${f}, 0)`), s.fillStyle = p, s.fillRect(0, 0, i, i), H = o.toDataURL(), Ie = r, H;\n}\nfunction ze(e, t, n, r) {\n\tlet { radius: i, intensity: a, color: o } = r.ambientLight, s = n.maxX - n.minX, c = n.maxY - n.minY, l = Math.sqrt(s * s + c * c), u = Math.max(l * 2.5, i * 4);\n\treturn {\n\t\tcx: e,\n\t\tcy: t,\n\t\tdisplaySize: u,\n\t\tsrc: Re(a, o, Math.round(i / (u / 2) * 50) / 50)\n\t};\n}\n//#endregion\n//#region src/scene/OverlayRenderer.ts\nfunction U(e, t) {\n\tlet n = e.createGroup(0, 0);\n\tif (t.shape === \"circle\") e.addCircle(n, {\n\t\tcx: t.cx,\n\t\tcy: t.cy,\n\t\tradius: t.size,\n\t\tstroke: t.stroke,\n\t\tstrokeWidth: t.strokeWidth,\n\t\tdash: t.dash,\n\t\tdashEnabled: !0\n\t});\n\telse {\n\t\tlet r = t.cx - t.size, i = t.cy - t.size, a = t.cx + t.size, o = t.cy + t.size, s = [\n\t\t\t[\n\t\t\t\tr,\n\t\t\t\ti,\n\t\t\t\ta,\n\t\t\t\ti\n\t\t\t],\n\t\t\t[\n\t\t\t\ta,\n\t\t\t\ti,\n\t\t\t\ta,\n\t\t\t\to\n\t\t\t],\n\t\t\t[\n\t\t\t\ta,\n\t\t\t\to,\n\t\t\t\tr,\n\t\t\t\to\n\t\t\t],\n\t\t\t[\n\t\t\t\tr,\n\t\t\t\to,\n\t\t\t\tr,\n\t\t\t\ti\n\t\t\t]\n\t\t];\n\t\tfor (let r of s) e.addLine(n, {\n\t\t\tpoints: r,\n\t\t\tstroke: t.stroke,\n\t\t\tstrokeWidth: t.strokeWidth,\n\t\t\tdash: t.dash,\n\t\t\tlineCap: \"butt\"\n\t\t});\n\t}\n\treturn n;\n}\nfunction Be(e, t) {\n\tlet n = e.createGroup(0, 0), r = _(t.strokeColor, t.strokeAlpha), i = t.fillAlpha > 0 ? _(t.fillColor, t.fillAlpha) : void 0;\n\treturn t.shape === \"circle\" ? e.addCircle(n, {\n\t\tcx: t.cx,\n\t\tcy: t.cy,\n\t\tradius: t.size,\n\t\tfill: i,\n\t\tstroke: r,\n\t\tstrokeWidth: t.strokeWidth,\n\t\tdash: t.dash,\n\t\tdashEnabled: t.dashEnabled\n\t}) : e.addRect(n, {\n\t\tx: t.cx - t.size,\n\t\ty: t.cy - t.size,\n\t\twidth: t.size * 2,\n\t\theight: t.size * 2,\n\t\tfill: i,\n\t\tstroke: r,\n\t\tstrokeWidth: t.strokeWidth,\n\t\tcornerRadius: t.cornerRadius,\n\t\tdash: t.dash,\n\t\tdashEnabled: t.dashEnabled\n\t}), n;\n}\nfunction Ve(e, t) {\n\tlet n = e.createGroup(0, 0);\n\tfor (let r of t.segments) e.addLine(n, {\n\t\tpoints: r.points,\n\t\tstroke: \"black\",\n\t\tstrokeWidth: t.outlineWidth,\n\t\tlineCap: \"round\",\n\t\tlineJoin: \"round\",\n\t\talpha: .8\n\t}), e.addLine(n, {\n\t\tpoints: r.points,\n\t\tstroke: t.color,\n\t\tstrokeWidth: t.lineWidth,\n\t\tlineCap: \"round\",\n\t\tlineJoin: \"round\",\n\t\talpha: .8\n\t});\n\tfor (let r of t.triangles) e.addPolygon(n, {\n\t\tvertices: r.vertices,\n\t\tfill: t.color,\n\t\tstroke: \"black\",\n\t\tstrokeWidth: t.outlineWidth / 4\n\t});\n\treturn n;\n}\nfunction He(e, t) {\n\tlet n = e.createGroup(0, 0);\n\treturn e.addLine(n, {\n\t\tpoints: t.line.points,\n\t\tstroke: t.line.stroke,\n\t\tstrokeWidth: t.line.strokeWidth,\n\t\tdash: t.line.dash\n\t}), t.arrow && e.addPolygon(n, {\n\t\tvertices: [\n\t\t\tt.arrow.tipX,\n\t\t\tt.arrow.tipY,\n\t\t\tt.arrow.x1,\n\t\t\tt.arrow.y1,\n\t\t\tt.arrow.x2,\n\t\t\tt.arrow.y2\n\t\t],\n\t\tfill: t.arrow.fill,\n\t\tstroke: t.arrow.stroke,\n\t\tstrokeWidth: t.arrow.strokeWidth\n\t}), t.door && e.addRect(n, {\n\t\tx: t.door.x,\n\t\ty: t.door.y,\n\t\twidth: t.door.width,\n\t\theight: t.door.height,\n\t\tstroke: t.door.stroke,\n\t\tstrokeWidth: t.door.strokeWidth\n\t}), n;\n}\nfunction Ue(e, t) {\n\tlet n = e.createGroup(0, 0);\n\tfor (let r of t) e.addLine(n, {\n\t\tpoints: [\n\t\t\tr.x1,\n\t\t\tr.y1,\n\t\t\tr.x2,\n\t\t\tr.y2\n\t\t],\n\t\tstroke: r.stroke,\n\t\tstrokeWidth: r.strokeWidth\n\t});\n\treturn n;\n}\nfunction We(e, t) {\n\tlet n = e.createGroup(0, 0);\n\tfor (let r of t) e.addPolygon(n, {\n\t\tvertices: r.vertices,\n\t\tfill: r.fill,\n\t\tstroke: r.stroke,\n\t\tstrokeWidth: r.strokeWidth\n\t});\n\treturn n;\n}\nfunction Ge(e, t) {\n\tlet n = e.createGroup(0, 0);\n\treturn e.addImage(n, {\n\t\tx: t.cx - t.displaySize / 2,\n\t\ty: t.cy - t.displaySize / 2,\n\t\twidth: t.displaySize,\n\t\theight: t.displaySize,\n\t\tsrc: t.src\n\t}), n;\n}\n//#endregion\n//#region src/reader/Plane.ts\nvar Ke = class {\n\tconstructor(e, t) {\n\t\tthis.rooms = [], this.labels = [], this.rooms = e, this.labels = t, this.bounds = this.createBounds();\n\t}\n\tgetRooms() {\n\t\treturn this.rooms;\n\t}\n\tgetLabels() {\n\t\treturn this.labels;\n\t}\n\tgetBounds() {\n\t\treturn this.bounds;\n\t}\n\tcreateBounds() {\n\t\tlet e = this.rooms.reduce((e, t) => ({\n\t\t\tminX: Math.min(e.minX, t.x),\n\t\t\tmaxX: Math.max(e.maxX, t.x),\n\t\t\tminY: Math.min(e.minY, t.y),\n\t\t\tmaxY: Math.max(e.maxY, t.y)\n\t\t}), {\n\t\t\tminX: Infinity,\n\t\t\tmaxX: -Infinity,\n\t\t\tminY: Infinity,\n\t\t\tmaxY: -Infinity\n\t\t});\n\t\tfor (let t of this.labels) {\n\t\t\tlet n = t.X, r = -t.Y;\n\t\t\te.minX = Math.min(e.minX, n), e.maxX = Math.max(e.maxX, n + t.Width), e.minY = Math.min(e.minY, r), e.maxY = Math.max(e.maxY, r + t.Height);\n\t\t}\n\t\treturn e;\n\t}\n}, W = class e {\n\tconstructor(e) {\n\t\tthis.planes = {}, this.exits = /* @__PURE__ */ new Map(), this.version = 0, this.area = e, this.planes = this.createPlanes(), this.createExits();\n\t}\n\tgetAreaName() {\n\t\treturn this.area.areaName;\n\t}\n\tgetAreaId() {\n\t\treturn parseInt(this.area.areaId);\n\t}\n\tgetVersion() {\n\t\treturn this.version;\n\t}\n\tmarkDirty() {\n\t\tthis.version++;\n\t}\n\tgetPlane(e) {\n\t\treturn this.planes[e];\n\t}\n\tgetPlanes() {\n\t\treturn Object.values(this.planes);\n\t}\n\tgetZLevels() {\n\t\treturn Object.keys(this.planes).map(Number).sort((e, t) => e - t);\n\t}\n\tgetRooms() {\n\t\treturn this.area.rooms;\n\t}\n\tgetFullBounds() {\n\t\treturn this.getPlanes().reduce((e, t) => {\n\t\t\tlet n = t.getBounds();\n\t\t\treturn {\n\t\t\t\tminX: Math.min(e.minX, n.minX),\n\t\t\t\tmaxX: Math.max(e.maxX, n.maxX),\n\t\t\t\tminY: Math.min(e.minY, n.minY),\n\t\t\t\tmaxY: Math.max(e.maxY, n.maxY)\n\t\t\t};\n\t\t}, {\n\t\t\tminX: Infinity,\n\t\t\tmaxX: -Infinity,\n\t\t\tminY: Infinity,\n\t\t\tmaxY: -Infinity\n\t\t});\n\t}\n\tgetLinkExits(e) {\n\t\treturn Array.from(this.exits.values()).filter((t) => t.zIndex.includes(e));\n\t}\n\tcreatePlanes() {\n\t\tlet e = this.area.rooms.reduce((e, t) => (e[t.z] || (e[t.z] = []), e[t.z].push(t), e), {});\n\t\treturn Object.entries(e).reduce((e, [t, n]) => (e[+t] = new Ke(n, this.area.labels.filter((e) => e.Z === +t)), e), {});\n\t}\n\tstatic {\n\t\tthis.oppositeDir = {\n\t\t\tnorth: \"south\",\n\t\t\tsouth: \"north\",\n\t\t\teast: \"west\",\n\t\t\twest: \"east\",\n\t\t\tnortheast: \"southwest\",\n\t\t\tsouthwest: \"northeast\",\n\t\t\tnorthwest: \"southeast\",\n\t\t\tsoutheast: \"northwest\",\n\t\t\tup: \"down\",\n\t\t\tdown: \"up\",\n\t\t\tin: \"out\",\n\t\t\tout: \"in\"\n\t\t};\n\t}\n\tcreateExits() {\n\t\tlet t = /* @__PURE__ */ new Map();\n\t\tthis.area.rooms.forEach((e) => {\n\t\t\tObject.entries(e.exits).forEach(([n, r]) => {\n\t\t\t\tif (e.id === r) return;\n\t\t\t\tlet i = `${Math.min(e.id, r)}-${Math.max(e.id, r)}`;\n\t\t\t\tt.has(i) || t.set(i, []), t.get(i).push({\n\t\t\t\t\torigin: e.id,\n\t\t\t\t\ttarget: r,\n\t\t\t\t\tz: e.z,\n\t\t\t\t\tdir: n\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t\tfor (let [n, r] of t) {\n\t\t\tlet [t, i] = n.split(\"-\"), a = parseInt(t), o = parseInt(i), s = r.filter((e) => e.origin === a), c = r.filter((e) => e.origin === o), l = /* @__PURE__ */ new Set();\n\t\t\tfor (let t of s) {\n\t\t\t\tlet r = -1;\n\t\t\t\tfor (let n = 0; n < c.length; n++) if (!l.has(n)) {\n\t\t\t\t\tif (c[n].dir === e.oppositeDir[t.dir]) {\n\t\t\t\t\t\tr = n;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tr === -1 && (r = n);\n\t\t\t\t}\n\t\t\t\tif (r !== -1) {\n\t\t\t\t\tl.add(r);\n\t\t\t\t\tlet e = c[r];\n\t\t\t\t\tthis.exits.set(`${n}-${t.dir}`, {\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tb: o,\n\t\t\t\t\t\taDir: t.dir,\n\t\t\t\t\t\tbDir: e.dir,\n\t\t\t\t\t\tzIndex: [t.z, e.z]\n\t\t\t\t\t});\n\t\t\t\t} else this.exits.set(`${n}-a:${t.dir}`, {\n\t\t\t\t\ta,\n\t\t\t\t\tb: o,\n\t\t\t\t\taDir: t.dir,\n\t\t\t\t\tzIndex: [t.z]\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (let e = 0; e < c.length; e++) if (!l.has(e)) {\n\t\t\t\tlet t = c[e];\n\t\t\t\tthis.exits.set(`${n}-b:${t.dir}`, {\n\t\t\t\t\ta,\n\t\t\t\t\tb: o,\n\t\t\t\t\tbDir: t.dir,\n\t\t\t\t\tzIndex: [t.z]\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}, qe = class extends Ke {\n\tconstructor(e, t) {\n\t\tsuper(e.getRooms(), e.getLabels()), this.basePlane = e, this.visitedRooms = t;\n\t}\n\tgetRooms() {\n\t\treturn this.basePlane.getRooms().filter((e) => this.visitedRooms.has(e.id));\n\t}\n\tgetLabels() {\n\t\treturn this.basePlane.getLabels();\n\t}\n\tgetBounds() {\n\t\tlet e = this.getRooms();\n\t\treturn e.length ? e.reduce((e, t) => ({\n\t\t\tminX: Math.min(e.minX, t.x),\n\t\t\tmaxX: Math.max(e.maxX, t.x),\n\t\t\tminY: Math.min(e.minY, t.y),\n\t\t\tmaxY: Math.max(e.maxY, t.y)\n\t\t}), {\n\t\t\tminX: Infinity,\n\t\t\tmaxX: -Infinity,\n\t\t\tminY: Infinity,\n\t\t\tmaxY: -Infinity\n\t\t}) : this.basePlane.getBounds();\n\t}\n}, G = class extends W {\n\tconstructor(e, t) {\n\t\tsuper(e), this.planeCache = /* @__PURE__ */ new WeakMap(), this.visitedRooms = t instanceof Set ? t : new Set(t ?? []), this.areaRoomIds = new Set(e.rooms.map((e) => e.id));\n\t}\n\tgetPlane(e) {\n\t\tlet t = super.getPlane(e);\n\t\tif (!t) return t;\n\t\tlet n = this.planeCache.get(t);\n\t\treturn n || (n = new qe(t, this.visitedRooms), this.planeCache.set(t, n)), n;\n\t}\n\tgetPlanes() {\n\t\treturn super.getPlanes().map((e) => {\n\t\t\tlet t = this.planeCache.get(e);\n\t\t\treturn t || (t = new qe(e, this.visitedRooms), this.planeCache.set(e, t)), t;\n\t\t});\n\t}\n\tgetLinkExits(e) {\n\t\treturn super.getLinkExits(e).filter((e) => this.visitedRooms.has(e.a) || this.visitedRooms.has(e.b));\n\t}\n\tgetVisitedRoomCount() {\n\t\treturn super.getRooms().reduce((e, t) => e + +!!this.visitedRooms.has(t.id), 0);\n\t}\n\tgetTotalRoomCount() {\n\t\treturn this.areaRoomIds.size;\n\t}\n\thasVisitedRoom(e) {\n\t\treturn this.areaRoomIds.has(e) && this.visitedRooms.has(e);\n\t}\n\tgetVisitedRoomIds() {\n\t\treturn super.getRooms().filter((e) => this.visitedRooms.has(e.id)).map((e) => e.id);\n\t}\n\taddVisitedRoom(e) {\n\t\tlet t = this.visitedRooms.has(e);\n\t\tthis.visitedRooms.add(e);\n\t\tlet n = !t && this.areaRoomIds.has(e);\n\t\treturn n && this.markDirty(), n;\n\t}\n\taddVisitedRooms(e) {\n\t\tlet t = 0;\n\t\tfor (let n of e) {\n\t\t\tlet e = this.visitedRooms.has(n);\n\t\t\tthis.visitedRooms.add(n), !e && this.areaRoomIds.has(n) && t++;\n\t\t}\n\t\treturn t > 0 && this.markDirty(), t;\n\t}\n}, K = \"rgb(120, 72, 0)\", Je = class {\n\tconstructor(t, n, r) {\n\t\tif (this.highlightShapes = /* @__PURE__ */ new Map(), this.pathShapes = [], this.currentRoomOverlay = [], this.areaExitHitZones = [], this.destroyed = !1, this.state = t, this.container = n, n ? (this.stage = new e.Stage({\n\t\t\tcontainer: n,\n\t\t\twidth: n.clientWidth,\n\t\t\theight: n.clientHeight,\n\t\t\tdraggable: !1\n\t\t}), n.style.backgroundColor = t.settings.backgroundColor, this.viewport = new L(n.clientWidth, n.clientHeight)) : (this.stage = new e.Stage({\n\t\t\twidth: 1,\n\t\t\theight: 1\n\t\t}), this.viewport = new L(1, 1)), this.gridLayer = new e.Layer({ listening: !1 }), this.stage.add(this.gridLayer), this.linkLayer = new e.Layer({ listening: !1 }), this.stage.add(this.linkLayer), this.roomLayer = new e.Layer({ listening: !1 }), this.stage.add(this.roomLayer), this.positionLayer = new e.Layer({ listening: !1 }), this.stage.add(this.positionLayer), this.overlayLayer = new e.Layer({ listening: !1 }), this.stage.add(this.overlayLayer), this.drawingBackend = r ?? new we(), this.positionLayerNode = new z(this.positionLayer), this.overlayLayerNode = new z(this.overlayLayer), this.pipeline = new ye(t.mapReader, t.settings, this.drawingBackend, {\n\t\t\tgridLayer: new z(this.gridLayer),\n\t\t\tlinkLayer: new z(this.linkLayer),\n\t\t\troomLayer: new z(this.roomLayer)\n\t\t}), this.events = new v(n), this.culling = new Se(this.stage, new z(this.roomLayer), new z(this.linkLayer), t.settings), this.viewport.onChange = () => this.applyViewportToStage(), n) {\n\t\t\tthis.origSetSize = this.viewport.setSize.bind(this.viewport);\n\t\t\tlet e = this.origSetSize;\n\t\t\tthis.viewport.setSize = (t, n) => {\n\t\t\t\te(t, n), this.stage.width(t), this.stage.height(n);\n\t\t\t}, this.interactionHandler = new Ce(n, this.viewport, t, t.settings, {\n\t\t\t\tclientToMapPoint: (e, t) => this.viewport.clientToMapPoint(e, t, n.getBoundingClientRect()),\n\t\t\t\tfindRoomAtPoint: (e, t) => this.culling.findRoomAtMapPoint(e, t),\n\t\t\t\tgetAreaExitHitZones: () => this.areaExitHitZones\n\t\t\t}, this.events);\n\t\t}\n\t\tthis.subscribeToState(t);\n\t}\n\tsetDrawingBackend(e) {\n\t\tthis.drawingBackend = e, this.pipeline = new ye(this.state.mapReader, this.state.settings, e, {\n\t\t\tgridLayer: new z(this.gridLayer),\n\t\t\tlinkLayer: new z(this.linkLayer),\n\t\t\troomLayer: new z(this.roomLayer)\n\t\t});\n\t}\n\tget exitRenderer() {\n\t\treturn this.pipeline.exitRenderer;\n\t}\n\tget roomShapeRenderer() {\n\t\treturn this.pipeline.roomShapeRenderer;\n\t}\n\tget gridRenderer() {\n\t\treturn this.pipeline.gridRenderer;\n\t}\n\tdestroy() {\n\t\tthis.destroyed || (this.destroyed = !0, this.state.events.removeAllListeners(), this.interactionHandler?.destroy(), this.viewport.cancelAnimation(), this.origSetSize && (this.viewport.setSize = this.origSetSize), this.viewport.onChange = void 0, this.clearOverlayShapes(), this.clearCurrentRoomOverlay(), this.positionMarker &&= (this.positionMarker.destroy(), void 0), this.ambientLightNode &&= (this.ambientLightNode.destroy(), void 0), this.stage.destroy(), this.events.removeAllListeners());\n\t}\n\tupdateBackground() {\n\t\tthis.container && (this.container.style.backgroundColor = this.state.settings.backgroundColor);\n\t}\n\texportCanvas(e) {\n\t\tif (this.state.currentArea === void 0 || this.state.currentZIndex === void 0) return;\n\t\tlet t = this.stage.toCanvas({ pixelRatio: e?.pixelRatio ?? 1 }), n = document.createElement(\"canvas\");\n\t\tn.width = t.width, n.height = t.height;\n\t\tlet r = n.getContext(\"2d\");\n\t\treturn r.fillStyle = this.state.settings.backgroundColor, r.fillRect(0, 0, n.width, n.height), r.drawImage(t, 0, 0), n;\n\t}\n\tapplyViewportToStage() {\n\t\tlet e = this.viewport.getScale();\n\t\tthis.stage.scale({\n\t\t\tx: e,\n\t\t\ty: e\n\t\t}), this.stage.position(this.viewport.position), this.stage.batchDraw(), this.pipeline.gridRenderer.render(this.viewport.getViewportBounds()), this.culling.scheduleCulling(), this.refreshAmbientLight();\n\t}\n\ttoCanvas(t) {\n\t\tlet { currentArea: n, currentZIndex: r, currentAreaInstance: i } = this.state;\n\t\tif (n === void 0 || r === void 0 || !i) return;\n\t\tlet a = i, o = a.getPlane(r);\n\t\tif (!o) return;\n\t\tlet { width: s, height: c } = t, l = t.padding ?? 3, u = this.viewport.width, d = this.viewport.height, f = this.viewport.zoom, p = this.viewport.minZoom, m = { ...this.viewport.position }, h = this.viewport.onChange;\n\t\tthis.viewport.onChange = void 0;\n\t\tlet g = this.state.computeExportBounds(a, o, t.roomId, l), _ = s / g.w, v = c / g.h, y = Math.min(_, v), b = g.w * y, x = g.h * y, S = (s - b) / 2, C = (c - x) / 2, w = {\n\t\t\tx: S - g.x * y,\n\t\t\ty: C - g.y * y\n\t\t};\n\t\tthis.viewport.width = s, this.viewport.height = c, this.viewport.zoom = y / (this.viewport.getScale() / this.viewport.zoom), this.viewport.position = w, this.stage.width(s), this.stage.height(c), this.stage.scale({\n\t\t\tx: y,\n\t\t\ty\n\t\t}), this.stage.position(w), this.pipeline.gridRenderer.render(this.viewport.getViewportBounds()), this.culling.updateCulling();\n\t\tlet T = new e.Layer({ listening: !1 });\n\t\tT.scale({\n\t\t\tx: 1 / y,\n\t\t\ty: 1 / y\n\t\t}), T.position({\n\t\t\tx: -(S - g.x * y) / y,\n\t\t\ty: -(C - g.y * y) / y\n\t\t}), T.add(new e.Rect({\n\t\t\tx: 0,\n\t\t\ty: 0,\n\t\t\twidth: s,\n\t\t\theight: c,\n\t\t\tfill: this.state.settings.backgroundColor\n\t\t})), this.stage.add(T), T.moveToBottom();\n\t\tlet ee = this.stage.toCanvas({\n\t\t\twidth: s,\n\t\t\theight: c\n\t\t});\n\t\treturn T.destroy(), this.viewport.width = u, this.viewport.height = d, this.viewport.zoom = f, this.viewport.minZoom = p, this.viewport.position = m, this.viewport.onChange = h, this.stage.width(u), this.stage.height(d), this.applyViewportToStage(), this.culling.updateCulling(), ee;\n\t}\n\trefresh() {\n\t\tlet { currentAreaInstance: e, currentZIndex: t, positionRoomId: n } = this.state;\n\t\tif (!e || t === void 0) return;\n\t\tlet r = e.getPlane(t);\n\t\tif (!r) return;\n\t\tthis.updateBackground();\n\t\tlet i = this.buildScene(e, r, t, this.viewport.getViewportBounds());\n\t\tthis.onSceneBuilt(i), this.syncHighlights(), n !== void 0 && this.onPositionChanged(n, !1, !1);\n\t}\n\tsubscribeToState(e) {\n\t\te.events.on(\"area\", () => {\n\t\t\tthis.refresh();\n\t\t}), e.events.on(\"position\", ({ roomId: e, center: t, areaChanged: n }) => {\n\t\t\tthis.onPositionChanged(e, t, n);\n\t\t}), e.events.on(\"center\", ({ roomId: t, instant: n }) => {\n\t\t\tlet r = e.mapReader.getRoom(t);\n\t\t\tr && this.viewport.panToMapPointAnimated(r.x, r.y, n || this.state.settings.instantMapMove);\n\t\t}), e.events.on(\"highlight\", ({ roomId: e, color: t }) => {\n\t\t\tthis.syncHighlight(e, t);\n\t\t}), e.events.on(\"path\", () => {\n\t\t\tthis.syncPaths();\n\t\t}), e.events.on(\"clear\", () => {\n\t\t\tthis.syncHighlights();\n\t\t});\n\t}\n\tbuildScene(e, t, n, r) {\n\t\tthis.positionLayer.destroyChildren(), this.positionMarker = void 0, this.clearOverlayShapes(), this.currentRoomOverlay = [];\n\t\tlet i = this.pipeline.buildScene(e, t, n, r);\n\t\treturn this.lastBuildResult = i, i;\n\t}\n\tonSceneBuilt(e) {\n\t\tthis.culling.clear(), this.areaExitHitZones = [], this.culling.computeBucketSize();\n\t\tlet t = this.viewport.getScale();\n\t\tthis.stage.scale({\n\t\t\tx: t,\n\t\t\ty: t\n\t\t});\n\t\tfor (let [, t] of e.roomNodes) this.culling.roomNodes.set(t.room.id, t), this.culling.addRoomToSpatialIndex(t);\n\t\tfor (let t of e.standaloneExitNodes) this.culling.standaloneExitNodes.push(t), this.culling.addStandaloneExitToSpatialIndex(t);\n\t\tthis.culling.setExitBoundsRoomSize(), this.areaExitHitZones = e.areaExitHitZones, this.culling.updateCulling(), this.stage.batchDraw();\n\t}\n\tonPositionChanged(e, t, n) {\n\t\tif (e === void 0) {\n\t\t\tthis.positionMarker &&= (this.positionMarker.destroy(), void 0), this.ambientLightNode &&= (this.ambientLightNode.destroy(), void 0), this.positionLayerNode.batchDraw(), this.clearCurrentRoomOverlay(), this.overlayLayerNode.batchDraw();\n\t\t\treturn;\n\t\t}\n\t\tlet r = this.state.mapReader.getRoom(e);\n\t\tr && (t && this.viewport.panToMapPointAnimated(r.x, r.y, n || this.state.settings.instantMapMove), this.updateCurrentRoomOverlay(r), this.applyAmbientLight(r), this.applyPositionMarker(r));\n\t}\n\tapplyPositionMarker(e) {\n\t\tthis.positionMarker && this.positionMarker.destroy();\n\t\tlet t = Pe(e, this.state.settings);\n\t\tthis.positionMarker = Be(this.drawingBackend, t), this.positionLayerNode.addNode(this.positionMarker);\n\t}\n\tapplyAmbientLight(e) {\n\t\tif (this.ambientLightNode &&= (this.ambientLightNode.destroy(), void 0), !this.state.settings.ambientLight.enabled) return;\n\t\tlet t = this.viewport.getViewportBounds(), n = ze(e.x, e.y, t, this.state.settings);\n\t\tthis.ambientLightNode = Ge(this.drawingBackend, n), this.overlayLayerNode.addNode(this.ambientLightNode), this.overlayLayerNode.batchDraw();\n\t}\n\trefreshAmbientLight() {\n\t\tif (!this.state.settings.ambientLight.enabled || this.state.positionRoomId === void 0) return;\n\t\tlet e = this.state.mapReader.getRoom(this.state.positionRoomId);\n\t\te && this.applyAmbientLight(e);\n\t}\n\tclearCurrentRoomOverlay() {\n\t\tthis.currentRoomOverlay.forEach((e) => e.destroy()), this.currentRoomOverlay = [], this.positionLayerNode.batchDraw();\n\t}\n\tupdateCurrentRoomOverlay(e) {\n\t\tif (this.clearCurrentRoomOverlay(), e.area !== this.state.currentArea || e.z !== this.state.currentZIndex) {\n\t\t\tthis.positionLayerNode.batchDraw();\n\t\t\treturn;\n\t\t}\n\t\tlet t = this.state.settings;\n\t\tif (!t.highlightCurrentRoom) {\n\t\t\tthis.positionMarker && this.positionMarker.moveToTop(), this.positionLayerNode.batchDraw();\n\t\t\treturn;\n\t\t}\n\t\tlet n = /* @__PURE__ */ new Map();\n\t\tn.set(e.id, e);\n\t\tlet r = [], i = this.pipeline.exitRenderer, a = this.state.currentAreaInstance instanceof G ? this.state.currentAreaInstance : void 0;\n\t\tthis.state.currentAreaInstance && this.state.currentZIndex !== void 0 && this.state.currentAreaInstance.getLinkExits(this.state.currentZIndex).filter((t) => t.a === e.id || t.b === e.id).forEach((e) => {\n\t\t\tlet t = i.renderDataWithColor(e, K, this.state.currentZIndex);\n\t\t\tt && r.push(this.pipeline.renderExitData(t));\n\t\t});\n\t\tfor (let n of pe(e, t, K)) r.push(He(this.drawingBackend, n));\n\t\tlet o = de(e, t, K);\n\t\to.length > 0 && r.push(Ue(this.drawingBackend, o)), [...Object.values(e.exits), ...Object.values(e.specialExits)].forEach((e) => {\n\t\t\tlet t = this.state.mapReader.getRoom(e), r = !a || a.hasVisitedRoom(e);\n\t\t\tt && t.area === this.state.currentArea && t.z === this.state.currentZIndex && r && n.set(e, t);\n\t\t}), r.forEach((e) => {\n\t\t\tthis.positionLayerNode.addNode(e), this.currentRoomOverlay.push(e);\n\t\t}), n.forEach((n, r) => {\n\t\t\tlet i = r === e.id, a = this.pipeline.roomShapeRenderer.createRoomGroup(n, { strokeOverride: i ? K : t.lineColor });\n\t\t\tthis.positionLayerNode.addNode(a), this.currentRoomOverlay.push(a);\n\t\t}), n.forEach((e) => {\n\t\t\tlet { triangles: n } = _e(e, this.state.mapReader, t);\n\t\t\tif (n.length > 0) {\n\t\t\t\tlet e = We(this.drawingBackend, n);\n\t\t\t\tthis.positionLayerNode.addNode(e), this.currentRoomOverlay.push(e);\n\t\t\t}\n\t\t}), this.positionMarker && this.positionMarker.moveToTop(), this.positionLayerNode.batchDraw();\n\t}\n\tsyncHighlight(e, t) {\n\t\tlet n = this.highlightShapes.get(e);\n\t\tif (n && (n.destroy(), this.highlightShapes.delete(e)), t !== void 0) {\n\t\t\tlet n = this.state.mapReader.getRoom(e);\n\t\t\tif (n && n.area === this.state.currentArea && n.z === this.state.currentZIndex) {\n\t\t\t\tlet r = Ne(n, t, this.state.settings), i = U(this.drawingBackend, r);\n\t\t\t\tthis.overlayLayerNode.addNode(i), this.highlightShapes.set(e, i);\n\t\t\t}\n\t\t}\n\t\tthis.overlayLayerNode.batchDraw();\n\t}\n\tsyncHighlights() {\n\t\tfor (let e of this.highlightShapes.values()) e.destroy();\n\t\tthis.highlightShapes.clear();\n\t\tfor (let [e, t] of this.state.highlights) {\n\t\t\tif (t.area !== this.state.currentArea || t.z !== this.state.currentZIndex) continue;\n\t\t\tlet n = this.state.mapReader.getRoom(e);\n\t\t\tif (!n) continue;\n\t\t\tlet r = Ne(n, t.color, this.state.settings), i = U(this.drawingBackend, r);\n\t\t\tthis.overlayLayerNode.addNode(i), this.highlightShapes.set(e, i);\n\t\t}\n\t\tthis.overlayLayerNode.batchDraw();\n\t}\n\tsyncPaths() {\n\t\tthis.clearPathShapes();\n\t\tlet { currentArea: e, currentZIndex: t } = this.state;\n\t\tif (!(e === void 0 || t === void 0)) {\n\t\t\tfor (let n of this.state.paths) {\n\t\t\t\tlet r = Fe(this.state.mapReader, this.state.settings, n.locations, n.color, e, t), i = Ve(this.drawingBackend, r);\n\t\t\t\tthis.overlayLayerNode.addNode(i), this.pathShapes.push(i);\n\t\t\t}\n\t\t\tthis.overlayLayerNode.batchDraw();\n\t\t}\n\t}\n\tclearOverlayShapes() {\n\t\tfor (let e of this.highlightShapes.values()) e.destroy();\n\t\tthis.highlightShapes.clear(), this.clearPathShapes();\n\t}\n\tclearPathShapes() {\n\t\tfor (let e of this.pathShapes) e.destroy();\n\t\tthis.pathShapes = [];\n\t}\n};\n//#endregion\n//#region src/backend/SvgBackend.ts\nfunction q(e) {\n\treturn e.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n}\nfunction J(e, t) {\n\treturn t === void 0 ? \"\" : ` ${e}=\"${typeof t == \"string\" ? q(t) : t}\"`;\n}\nfunction Y(e, t) {\n\treturn !e || t === !1 ? \"\" : ` stroke-dasharray=\"${e.join(\" \")}\"`;\n}\nvar X = class {\n\tconstructor(e, t) {\n\t\tthis.elements = [], this.visible = !0, this.x = e, this.y = t;\n\t}\n\tsetVisible(e) {\n\t\tthis.visible = e;\n\t}\n\tisVisible() {\n\t\treturn this.visible;\n\t}\n\tdestroy() {\n\t\tthis.elements.length = 0;\n\t}\n\tsetPosition(e, t) {}\n\tgetPosition() {\n\t\treturn {\n\t\t\tx: this.x,\n\t\t\ty: this.y\n\t\t};\n\t}\n\tmoveToTop() {}\n\ttoSvg() {\n\t\treturn !this.visible || this.elements.length === 0 ? \"\" : this.x === 0 && this.y === 0 ? this.elements.join(\"\\n\") : `<g transform=\"translate(${this.x},${this.y})\">\\n${this.elements.join(\"\\n\")}\\n</g>`;\n\t}\n}, Z = class {\n\tconstructor() {\n\t\tthis.groups = [];\n\t}\n\taddNode(e) {\n\t\te instanceof X && this.groups.push(e);\n\t}\n\tdestroyChildren() {\n\t\tthis.groups = [];\n\t}\n\tbatchDraw() {}\n\ttoSvg() {\n\t\treturn this.groups.filter((e) => e.isVisible()).map((e) => e.toSvg()).filter((e) => e.length > 0).join(\"\\n\");\n\t}\n}, Ye = class {\n\tcreateGroup(e, t) {\n\t\treturn new X(e, t);\n\t}\n\taddRect(e, t) {\n\t\tif (!(e instanceof X)) return;\n\t\tlet n = t.fill ?? \"none\", r = `<rect${J(\"x\", t.x)}${J(\"y\", t.y)}${J(\"width\", t.width)}${J(\"height\", t.height)}${J(\"fill\", n)}${J(\"stroke\", t.stroke)}${J(\"stroke-width\", t.strokeWidth)}${t.cornerRadius ? `${J(\"rx\", t.cornerRadius)}${J(\"ry\", t.cornerRadius)}` : \"\"}${Y(t.dash, t.dashEnabled)}/>`;\n\t\te.elements.push(r);\n\t}\n\taddCircle(e, t) {\n\t\tif (!(e instanceof X)) return;\n\t\tlet n = t.fill ?? \"none\", r = `<circle${J(\"cx\", t.cx)}${J(\"cy\", t.cy)}${J(\"r\", t.radius)}${J(\"fill\", n)}${J(\"stroke\", t.stroke)}${J(\"stroke-width\", t.strokeWidth)}${Y(t.dash, t.dashEnabled)}/>`;\n\t\te.elements.push(r);\n\t}\n\taddLine(e, t) {\n\t\tif (!(e instanceof X)) return;\n\t\tlet n = t.points, r = [];\n\t\tfor (let e = 0; e < n.length; e += 2) r.push(`${n[e]},${n[e + 1]}`);\n\t\tlet i = `<polyline points=\"${r.join(\" \")}\"${J(\"stroke\", t.stroke)}${J(\"stroke-width\", t.strokeWidth)}${Y(t.dash)}${J(\"stroke-linecap\", t.lineCap)}${J(\"stroke-linejoin\", t.lineJoin)}${J(\"opacity\", t.alpha)} fill=\"none\"/>`;\n\t\te.elements.push(i);\n\t}\n\taddPolygon(e, t) {\n\t\tif (!(e instanceof X)) return;\n\t\tlet n = t.vertices, r = [];\n\t\tfor (let e = 0; e < n.length; e += 2) r.push(`${n[e]},${n[e + 1]}`);\n\t\tlet i = `<polygon points=\"${r.join(\" \")}\"${J(\"fill\", t.fill)}${J(\"stroke\", t.stroke)}${J(\"stroke-width\", t.strokeWidth)}/>`;\n\t\te.elements.push(i);\n\t}\n\taddText(e, t) {\n\t\tif (!(e instanceof X)) return;\n\t\tlet n = t.x, r = t.y, i = \"start\", a = \"auto\";\n\t\tt.width !== void 0 && (t.align === \"center\" ? (n = t.x + t.width / 2, i = \"middle\") : t.align === \"right\" && (n = t.x + t.width, i = \"end\")), t.height !== void 0 && t.verticalAlign === \"middle\" ? t.baselineRatio === void 0 ? (r = t.y + t.height / 2, a = \"central\") : r = t.y + t.height / 2 + t.baselineRatio * t.fontSize : t.offsetY && (r -= t.offsetY);\n\t\tlet o = `<text${J(\"x\", n)}${J(\"y\", r)}${J(\"font-size\", t.fontSize)}${t.fontFamily ? J(\"font-family\", t.fontFamily) : \"\"}${t.fontStyle === \"bold\" ? \" font-weight=\\\"bold\\\"\" : \"\"}${J(\"fill\", t.fill)} text-anchor=\"${i}\" dominant-baseline=\"${a}\">${q(t.text)}</text>`;\n\t\te.elements.push(o);\n\t}\n\taddImage(e, t) {\n\t\tif (!(e instanceof X)) return;\n\t\tlet n = `<image${J(\"x\", t.x)}${J(\"y\", t.y)}${J(\"width\", t.width)}${J(\"height\", t.height)} href=\"${q(t.src)}\"/>`;\n\t\te.elements.push(n);\n\t}\n};\n//#endregion\n//#region src/rendering/SvgRenderBackend.ts\nfunction Xe(e) {\n\treturn e.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n}\nvar Ze = class {\n\tconstructor(e, t) {\n\t\tthis.state = e, this.drawingBackendFactory = t;\n\t}\n\texportSvg(e) {\n\t\tlet { currentArea: t, currentZIndex: n, currentAreaInstance: r } = this.state;\n\t\tif (t === void 0 || n === void 0 || !r) return;\n\t\tlet i = r, a = i.getPlane(n);\n\t\tif (!a) return;\n\t\tlet o = this.state.settings, s = e?.padding ?? 3, c = this.state.computeExportBounds(i, a, e?.roomId, s), l = new Ye(), u = this.drawingBackendFactory ? this.drawingBackendFactory(l) : l, d = new Z(), f = new Z(), p = new Z(), m = new ye(this.state.mapReader, o, u, {\n\t\t\tgridLayer: d,\n\t\t\tlinkLayer: f,\n\t\t\troomLayer: p\n\t\t}), h = {\n\t\t\tminX: c.x,\n\t\t\tmaxX: c.x + c.w,\n\t\t\tminY: c.y,\n\t\t\tmaxY: c.y + c.h\n\t\t};\n\t\tm.buildScene(i, a, n, h);\n\t\tlet g = [];\n\t\tg.push(`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${c.x} ${c.y} ${c.w} ${c.h}\">`), g.push(`<rect x=\"${c.x}\" y=\"${c.y}\" width=\"${c.w}\" height=\"${c.h}\" fill=\"${Xe(o.backgroundColor)}\"/>`);\n\t\tlet _ = d.toSvg();\n\t\t_ && g.push(_);\n\t\tlet v = f.toSvg();\n\t\tv && g.push(v);\n\t\tlet y = p.toSvg();\n\t\ty && g.push(y);\n\t\tlet b = e?.overlays;\n\t\tif (b) {\n\t\t\tif (b.paths) for (let e of b.paths) {\n\t\t\t\tlet r = Ve(u, Fe(this.state.mapReader, o, e.locations, e.color, t, n)).toSvg();\n\t\t\t\tr && g.push(r);\n\t\t\t}\n\t\t\tif (b.highlights) for (let e of b.highlights) {\n\t\t\t\tlet t = this.state.mapReader.getRoom(e.roomId);\n\t\t\t\tif (!t) continue;\n\t\t\t\tlet n = U(u, Ne(t, e.color, o)).toSvg();\n\t\t\t\tn && g.push(n);\n\t\t\t}\n\t\t\tif (b.position) {\n\t\t\t\tif (o.ambientLight.enabled) {\n\t\t\t\t\tlet e = this.state.mapReader.getRoom(b.position.roomId);\n\t\t\t\t\tif (e) {\n\t\t\t\t\t\tlet t = Ge(u, ze(e.x, e.y, h, o)).toSvg();\n\t\t\t\t\t\tt && g.push(t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet e = this.state.mapReader.getRoom(b.position.roomId);\n\t\t\t\tif (e) {\n\t\t\t\t\tlet t = Be(u, Pe(e, o)).toSvg();\n\t\t\t\t\tt && g.push(t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn g.push(\"</svg>\"), g.join(\"\\n\");\n\t}\n}, Qe = class {\n\tget settings() {\n\t\treturn this.state.settings;\n\t}\n\tconstructor(e, t, n, r, i, a) {\n\t\tthis.state = new y(e, t ?? p()), this.svgDrawingBackendFactory = a, this.backend = r ? r(this.state) : new Je(this.state, n, i);\n\t}\n\tdestroy() {\n\t\tthis.backend.destroy();\n\t}\n\tdrawArea(e, t) {\n\t\tthis.state.setArea(e, t);\n\t}\n\tgetCurrentArea() {\n\t\treturn this.state.currentAreaInstance;\n\t}\n\tsetPosition(e, t = !0) {\n\t\tthis.state.setPosition(e, t);\n\t}\n\tupdatePositionMarker(e) {\n\t\tthis.state.updatePositionMarker(e);\n\t}\n\tclearPosition() {\n\t\tthis.state.clearPosition();\n\t}\n\tcenterOn(e, t) {\n\t\tthis.state.setCenterRoom(e, t);\n\t}\n\trenderHighlight(e, t) {\n\t\tthis.state.addHighlight(e, t);\n\t}\n\tremoveHighlight(e) {\n\t\tthis.state.removeHighlight(e);\n\t}\n\thasHighlight(e) {\n\t\treturn this.state.hasHighlight(e);\n\t}\n\tclearHighlights() {\n\t\tthis.state.clearHighlights();\n\t}\n\trenderPath(e, t) {\n\t\tthis.state.addPath(e, t);\n\t}\n\tclearPaths() {\n\t\tthis.state.clearPaths();\n\t}\n\trefreshCurrentRoomOverlay() {\n\t\tthis.state.refreshPosition();\n\t}\n\tsetDrawingBackend(e) {\n\t\tthis.backend.setDrawingBackend(e);\n\t}\n\tupdateBackground() {\n\t\tthis.backend.updateBackground();\n\t}\n\trefresh() {\n\t\tthis.backend.updateBackground(), this.backend.refresh();\n\t}\n\texportSvg(e) {\n\t\tlet t = {\n\t\t\t...e,\n\t\t\toverlays: this.state.getOverlaysForArea(e?.overlays)\n\t\t};\n\t\treturn new Ze(this.state, this.svgDrawingBackendFactory).exportSvg(t);\n\t}\n\texportPng(e) {\n\t\treturn this.backend.exportCanvas(e)?.toDataURL(\"image/png\");\n\t}\n\texportPngBlob(e) {\n\t\tlet t = this.backend.exportCanvas(e);\n\t\tif (t) return new Promise((e) => {\n\t\t\tt.toBlob((t) => {\n\t\t\t\tt && e(t);\n\t\t\t}, \"image/png\");\n\t\t});\n\t}\n\trenderToCanvas(e) {\n\t\treturn this.backend.toCanvas(e);\n\t}\n\ton(e, t) {\n\t\tthis.backend.events.on(e, t);\n\t}\n\toff(e, t) {\n\t\tthis.backend.events.off(e, t);\n\t}\n\tsetZoom(e) {\n\t\treturn this.backend.viewport.setZoom(e);\n\t}\n\tzoomToCenter(e) {\n\t\treturn this.backend.viewport.zoomToCenter(e);\n\t}\n\tgetZoom() {\n\t\treturn this.backend.viewport.zoom;\n\t}\n\tgetViewportBounds() {\n\t\treturn this.backend.viewport.getViewportBounds();\n\t}\n\tgetAreaBounds() {\n\t\tif (!this.state.currentAreaInstance || this.state.currentZIndex === void 0) return null;\n\t\tlet e = this.state.currentAreaInstance.getPlane(this.state.currentZIndex);\n\t\tif (!e) return null;\n\t\tlet t = this.state.getEffectiveBounds(this.state.currentAreaInstance, e), n = this.state.settings.areaName && this.state.currentAreaInstance.getAreaName();\n\t\treturn {\n\t\t\tminX: n ? t.minX - 4 : t.minX,\n\t\t\tmaxX: t.maxX,\n\t\t\tminY: n ? t.minY - 7 : t.minY,\n\t\t\tmaxY: t.maxY\n\t\t};\n\t}\n\tfitArea() {\n\t\tlet e = this.getAreaBounds();\n\t\te && this.backend.viewport.fitToMapBounds(e.minX, e.maxX, e.minY, e.maxY);\n\t}\n\tget centerOnResize() {\n\t\treturn this.backend.viewport.centerOnResize;\n\t}\n\tset centerOnResize(e) {\n\t\tthis.backend.viewport.centerOnResize = e;\n\t}\n\tget minZoom() {\n\t\treturn this.backend.viewport.minZoom;\n\t}\n\tset minZoom(e) {\n\t\tthis.backend.viewport.minZoom = e;\n\t}\n\tsetCullingMode(e) {\n\t\tthis.state.settings.cullingMode = e, this.state.settings.cullingEnabled = e !== \"none\", this.backend.culling.scheduleCulling();\n\t}\n\tgetCullingMode() {\n\t\treturn this.state.settings.cullingMode;\n\t}\n}, $e = class {\n\tget settings() {\n\t\treturn this.renderer.settings;\n\t}\n\tconstructor(e, t, n) {\n\t\tthis.renderer = new Qe(t, n, e);\n\t}\n\tdrawArea(e, t) {\n\t\tthis.renderer.drawArea(e, t);\n\t}\n\tgetCurrentArea() {\n\t\treturn this.renderer.getCurrentArea();\n\t}\n\tsetPosition(e, t = !0) {\n\t\tthis.renderer.setPosition(e, t);\n\t}\n\tupdatePositionMarker(e) {\n\t\tthis.renderer.updatePositionMarker(e);\n\t}\n\tclearPosition() {\n\t\tthis.renderer.clearPosition();\n\t}\n\tcenterOn(e, t) {\n\t\tthis.renderer.centerOn(e, t);\n\t}\n\trenderHighlight(e, t) {\n\t\tthis.renderer.renderHighlight(e, t);\n\t}\n\tremoveHighlight(e) {\n\t\tthis.renderer.removeHighlight(e);\n\t}\n\thasHighlight(e) {\n\t\treturn this.renderer.hasHighlight(e);\n\t}\n\tclearHighlights() {\n\t\tthis.renderer.clearHighlights();\n\t}\n\trenderPath(e, t) {\n\t\tthis.renderer.renderPath(e, t);\n\t}\n\tclearPaths() {\n\t\tthis.renderer.clearPaths();\n\t}\n\texportSvg(e) {\n\t\treturn this.renderer.exportSvg(e);\n\t}\n\texportPng(e) {\n\t\treturn this.renderer.exportPng(e);\n\t}\n\texportPngBlob(e) {\n\t\treturn this.renderer.exportPngBlob(e);\n\t}\n\tsetZoom(e) {\n\t\treturn this.renderer.setZoom(e);\n\t}\n\tzoomToCenter(e) {\n\t\treturn this.renderer.zoomToCenter(e);\n\t}\n\tgetZoom() {\n\t\treturn this.renderer.getZoom();\n\t}\n\tgetViewportBounds() {\n\t\treturn this.renderer.getViewportBounds();\n\t}\n\tgetAreaBounds() {\n\t\treturn this.renderer.getAreaBounds();\n\t}\n\tfitArea() {\n\t\tthis.renderer.fitArea();\n\t}\n\tget centerOnResize() {\n\t\treturn this.renderer.centerOnResize;\n\t}\n\tset centerOnResize(e) {\n\t\tthis.renderer.centerOnResize = e;\n\t}\n\tget minZoom() {\n\t\treturn this.renderer.minZoom;\n\t}\n\tset minZoom(e) {\n\t\tthis.renderer.minZoom = e;\n\t}\n\ton(e, t) {\n\t\tthis.renderer.on(e, t);\n\t}\n\toff(e, t) {\n\t\tthis.renderer.off(e, t);\n\t}\n\tsetCullingMode(e) {\n\t\tthis.renderer.setCullingMode(e);\n\t}\n\tgetCullingMode() {\n\t\treturn this.renderer.getCullingMode();\n\t}\n\trefreshCurrentRoomOverlay() {\n\t\tthis.renderer.refreshCurrentRoomOverlay();\n\t}\n\tupdateBackground() {\n\t\tthis.renderer.updateBackground();\n\t}\n\trefresh() {\n\t\tthis.renderer.refresh();\n\t}\n\tdestroy() {\n\t\tthis.renderer.destroy();\n\t}\n};\n//#endregion\n//#region src/backend/SketchyBackend.ts\nfunction Q(e) {\n\tlet t = e | 0 || 1;\n\treturn () => (t = t * 1664525 + 1013904223 | 0, (t >>> 0) / 4294967296);\n}\nfunction $(...e) {\n\tlet t = 2654435769;\n\tfor (let n of e) t ^= (n * 1e3 | 0) + 2654435769 + (t << 6) + (t >> 2);\n\treturn t;\n}\nfunction et(e, t, n, r, i, a) {\n\tlet o = n - e, s = r - t, c = Math.sqrt(o * o + s * s);\n\tif (c < .001) return [\n\t\te,\n\t\tt,\n\t\tn,\n\t\tr\n\t];\n\tlet l = -s / c, u = o / c, d = Math.max(2, Math.min(6, Math.ceil(c / .15))), f = [e + l * (a() - .5) * i * .3, t + u * (a() - .5) * i * .3];\n\tfor (let n = 1; n < d; n++) {\n\t\tlet r = n / d, c = e + o * r, p = t + s * r, m = (a() - .5) * 2 * i;\n\t\tf.push(c + l * m, p + u * m);\n\t}\n\treturn f.push(n + l * (a() - .5) * i * .3, r + u * (a() - .5) * i * .3), f;\n}\nfunction tt(e, t, n) {\n\tif (e.length < 4) return e;\n\tlet r = [];\n\tfor (let i = 0; i < e.length - 2; i += 2) {\n\t\tlet a = et(e[i], e[i + 1], e[i + 2], e[i + 3], t, n);\n\t\tif (i === 0) r.push(...a);\n\t\telse for (let e = 2; e < a.length; e++) r.push(a[e]);\n\t}\n\treturn r;\n}\nfunction nt(e, t, n, r, i, a) {\n\tlet o = [\n\t\te,\n\t\tt,\n\t\te + n,\n\t\tt,\n\t\te + n,\n\t\tt + r,\n\t\te,\n\t\tt + r\n\t], s = [];\n\tfor (let e = 0; e < 4; e++) {\n\t\tlet t = o[e * 2], n = o[e * 2 + 1], r = (e + 1) % 4, c = o[r * 2], l = o[r * 2 + 1], u = et(t, n, c, l, i, a);\n\t\tfor (let e = 0; e < u.length - 2; e++) s.push(u[e]);\n\t}\n\treturn s;\n}\nfunction rt(e, t, n, r, i) {\n\tlet a = [];\n\tfor (let o = 0; o < 24; o++) {\n\t\tlet s = o / 24 * Math.PI * 2, c = n + (i() - .5) * 2 * r;\n\t\ta.push(e + Math.cos(s) * c, t + Math.sin(s) * c);\n\t}\n\treturn a;\n}\nfunction it(e, t, n) {\n\tlet r = e.length / 2;\n\tif (r < 2) return e;\n\tlet i = [];\n\tfor (let a = 0; a < r; a++) {\n\t\tlet o = e[a * 2], s = e[a * 2 + 1], c = (a + 1) % r, l = e[c * 2], u = e[c * 2 + 1], d = et(o, s, l, u, t, n);\n\t\tfor (let e = 0; e < d.length - 2; e++) i.push(d[e]);\n\t}\n\treturn i;\n}\nvar at = class {\n\tconstructor(e, t, n) {\n\t\tthis.inner = e, this.jitter = t, this.pencil = n;\n\t}\n\tcreateGroup(e, t) {\n\t\treturn this.inner.createGroup(e, t);\n\t}\n\tapplyPencilWithAlpha(e) {\n\t\tif (!e) return this.pencil;\n\t\tlet t = e.match(/^rgba\\(.+,\\s*([\\d.]+)\\s*\\)$/);\n\t\tif (!t) return this.pencil;\n\t\tlet n = parseFloat(t[1]);\n\t\treturn n >= 1 ? this.pencil : `rgba(${parseInt(this.pencil.slice(1, 3), 16)}, ${parseInt(this.pencil.slice(3, 5), 16)}, ${parseInt(this.pencil.slice(5, 7), 16)}, ${n})`;\n\t}\n\taddRect(e, t) {\n\t\tlet n = this.jitter, r = this.pencil, i = Q($(t.x, t.y, t.width, t.height)), a = t.fill ? \"#ffffff\" : void 0, o = t.stroke ? r : void 0;\n\t\tif (t.cornerRadius && t.cornerRadius > 0) {\n\t\t\tif (a && this.inner.addRect(e, {\n\t\t\t\t...t,\n\t\t\t\tfill: a,\n\t\t\t\tstroke: void 0,\n\t\t\t\tstrokeWidth: 0\n\t\t\t}), o && t.strokeWidth) {\n\t\t\t\tlet r = nt(t.x, t.y, t.width, t.height, n, i);\n\t\t\t\tthis.inner.addPolygon(e, {\n\t\t\t\t\tvertices: r,\n\t\t\t\t\tstroke: o,\n\t\t\t\t\tstrokeWidth: t.strokeWidth\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tlet s = nt(t.x, t.y, t.width, t.height, n, i);\n\t\tthis.inner.addPolygon(e, {\n\t\t\tvertices: s,\n\t\t\tfill: a,\n\t\t\tstroke: o,\n\t\t\tstrokeWidth: t.strokeWidth ?? 0\n\t\t});\n\t}\n\taddCircle(e, t) {\n\t\tlet n = this.jitter, r = this.pencil, i = Q($(t.cx, t.cy, t.radius)), a = rt(t.cx, t.cy, t.radius, n, i);\n\t\tthis.inner.addPolygon(e, {\n\t\t\tvertices: a,\n\t\t\tfill: t.fill ? \"#ffffff\" : void 0,\n\t\t\tstroke: t.stroke ? r : void 0,\n\t\t\tstrokeWidth: t.strokeWidth ?? 0\n\t\t});\n\t}\n\taddLine(e, t) {\n\t\tlet n = this.jitter, r = Q($(...t.points.slice(0, 4))), i = tt(t.points, n, r), a = this.applyPencilWithAlpha(t.stroke);\n\t\tthis.inner.addLine(e, {\n\t\t\t...t,\n\t\t\tpoints: i,\n\t\t\tstroke: a\n\t\t});\n\t}\n\taddPolygon(e, t) {\n\t\tlet n = this.jitter, r = this.pencil, i = Q($(...t.vertices.slice(0, 4))), a = it(t.vertices, n, i);\n\t\tthis.inner.addPolygon(e, {\n\t\t\t...t,\n\t\t\tvertices: a,\n\t\t\tfill: t.fill ? r : void 0,\n\t\t\tstroke: t.stroke ? r : void 0\n\t\t});\n\t}\n\taddText(e, t) {\n\t\tthis.inner.addText(e, {\n\t\t\t...t,\n\t\t\tfill: this.pencil\n\t\t});\n\t}\n\taddImage(e, t) {\n\t\tthis.inner.addImage(e, t);\n\t}\n}, ot = {\n\trgb: [\n\t\t114,\n\t\t1,\n\t\t0\n\t],\n\trgbValue: \"rgb(114, 1, 0)\",\n\tsymbolColor: [\n\t\t225,\n\t\t225,\n\t\t225\n\t],\n\tsymbolColorValue: \"rgb(225,225,225)\"\n};\nfunction st(e) {\n\tlet t = e[0] / 255, n = e[1] / 255, r = e[2] / 255;\n\treturn (Math.max(t, n, r) + Math.min(t, n, r)) / 2;\n}\nvar ct = class {\n\tconstructor(e, t) {\n\t\tthis.rooms = {}, this.areas = {}, this.areaSources = {}, this.explorationEnabled = !1, this.colors = {}, e.forEach((e) => {\n\t\t\te.rooms.forEach((e) => {\n\t\t\t\te.y = -e.y, this.rooms[e.id] = e;\n\t\t\t});\n\t\t\tlet t = parseInt(e.areaId);\n\t\t\tthis.areas[t] = new W(e), this.areaSources[t] = e;\n\t\t}), this.colors = t.reduce((e, t) => ({\n\t\t\t...e,\n\t\t\t[t.envId]: {\n\t\t\t\trgb: t.colors,\n\t\t\t\trgbValue: `rgb(${t.colors.join(\",\")})`,\n\t\t\t\tsymbolColor: st(t.colors) > .41 ? [\n\t\t\t\t\t25,\n\t\t\t\t\t25,\n\t\t\t\t\t25\n\t\t\t\t] : [\n\t\t\t\t\t225,\n\t\t\t\t\t255,\n\t\t\t\t\t255\n\t\t\t\t],\n\t\t\t\tsymbolColorValue: st(t.colors) > .41 ? \"rgb(25,25,25)\" : \"rgb(225,255,255)\"\n\t\t\t}\n\t\t}), {});\n\t}\n\tgetArea(e) {\n\t\treturn this.areas[e];\n\t}\n\tgetExplorationArea(e) {\n\t\tlet t = this.areas[e];\n\t\tif (t instanceof G) return t;\n\t}\n\tgetAreas() {\n\t\treturn Object.values(this.areas);\n\t}\n\tgetRooms() {\n\t\treturn Object.values(this.rooms);\n\t}\n\tgetRoom(e) {\n\t\treturn this.rooms[e];\n\t}\n\tensureVisitedRooms() {\n\t\treturn this.visitedRooms ||= /* @__PURE__ */ new Set(), this.visitedRooms;\n\t}\n\tapplyExplorationDecoration() {\n\t\tthis.visitedRooms && Object.entries(this.areaSources).forEach(([e, t]) => {\n\t\t\tlet n = parseInt(e, 10);\n\t\t\tthis.areas[n] = new G(t, this.visitedRooms);\n\t\t});\n\t}\n\tdecorateWithExploration(e) {\n\t\treturn e === void 0 ? this.ensureVisitedRooms() : this.setVisitedRooms(e), this.applyExplorationDecoration(), this.explorationEnabled = !0, this.visitedRooms;\n\t}\n\tgetVisitedRooms() {\n\t\treturn this.visitedRooms;\n\t}\n\tclearExplorationDecoration() {\n\t\tObject.entries(this.areaSources).forEach(([e, t]) => {\n\t\t\tlet n = parseInt(e, 10);\n\t\t\tthis.areas[n] = new W(t);\n\t\t}), this.explorationEnabled = !1;\n\t}\n\tisExplorationEnabled() {\n\t\treturn this.explorationEnabled;\n\t}\n\tsetVisitedRooms(e) {\n\t\treturn this.visitedRooms = e instanceof Set ? e : new Set(e), this.explorationEnabled && this.applyExplorationDecoration(), this.visitedRooms;\n\t}\n\taddVisitedRoom(e) {\n\t\tif (this.explorationEnabled) {\n\t\t\tlet t = this.getRoom(e);\n\t\t\tif (t) {\n\t\t\t\tlet n = this.getExplorationArea(t.area);\n\t\t\t\tif (n) return n.addVisitedRoom(e);\n\t\t\t}\n\t\t}\n\t\tlet t = this.ensureVisitedRooms(), n = t.has(e);\n\t\treturn t.add(e), !n;\n\t}\n\taddVisitedRooms(e) {\n\t\tlet t = this.ensureVisitedRooms(), n = 0;\n\t\tfor (let r of e) {\n\t\t\tif (this.explorationEnabled) {\n\t\t\t\tlet e = this.getRoom(r);\n\t\t\t\tif (e) {\n\t\t\t\t\tlet t = this.getExplorationArea(e.area);\n\t\t\t\t\tif (t) {\n\t\t\t\t\t\tt.addVisitedRoom(r) && n++;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet e = t.has(r);\n\t\t\tt.add(r), e || n++;\n\t\t}\n\t\treturn n;\n\t}\n\thasVisitedRoom(e) {\n\t\treturn this.visitedRooms?.has(e) ?? !1;\n\t}\n\tgetColorValue(e) {\n\t\treturn this.colors[e]?.rgbValue ?? ot.rgbValue;\n\t}\n\tgetSymbolColor(e, t) {\n\t\tlet n = this.colors[e]?.symbolColor ?? ot.symbolColor, r = Math.min(Math.max(t ?? 1, 0), 1), i = n.join(\",\");\n\t\treturn r == 1 ? `rgba(${i})` : `rgba(${i}, ${r})`;\n\t}\n}, lt = /* @__PURE__ */ s(((e, t) => {\n\tt.exports = class {\n\t\tconstructor() {\n\t\t\tthis.keys = /* @__PURE__ */ new Set(), this.queue = [];\n\t\t}\n\t\tsort() {\n\t\t\tthis.queue.sort((e, t) => e.priority - t.priority);\n\t\t}\n\t\tset(e, t) {\n\t\t\tlet n = Number(t);\n\t\t\tif (isNaN(n)) throw TypeError(\"\\\"priority\\\" must be a number\");\n\t\t\treturn this.keys.has(e) ? this.queue.map((t) => (t.key === e && Object.assign(t, { priority: n }), t)) : (this.keys.add(e), this.queue.push({\n\t\t\t\tkey: e,\n\t\t\t\tpriority: n\n\t\t\t})), this.sort(), this.queue.length;\n\t\t}\n\t\tnext() {\n\t\t\tlet e = this.queue.shift();\n\t\t\treturn this.keys.delete(e.key), e;\n\t\t}\n\t\tisEmpty() {\n\t\t\treturn this.queue.length === 0;\n\t\t}\n\t\thas(e) {\n\t\t\treturn this.keys.has(e);\n\t\t}\n\t\tget(e) {\n\t\t\treturn this.queue.find((t) => t.key === e);\n\t\t}\n\t};\n})), ut = /* @__PURE__ */ s(((e, t) => {\n\tfunction n(e, t) {\n\t\tlet r = /* @__PURE__ */ new Map();\n\t\tfor (let [i, a] of e) i !== t && a instanceof Map ? r.set(i, n(a, t)) : i !== t && r.set(i, a);\n\t\treturn r;\n\t}\n\tt.exports = n;\n})), dt = /* @__PURE__ */ s(((e, t) => {\n\tfunction n(e) {\n\t\tlet t = Number(e);\n\t\treturn !(isNaN(t) || t <= 0);\n\t}\n\tfunction r(e) {\n\t\tlet t = /* @__PURE__ */ new Map();\n\t\treturn Object.keys(e).forEach((i) => {\n\t\t\tlet a = e[i];\n\t\t\tif (typeof a == \"object\" && a && !Array.isArray(a)) return t.set(i, r(a));\n\t\t\tif (!n(a)) throw Error(`Could not add node at key \"${i}\", make sure it's a valid node`, a);\n\t\t\treturn t.set(i, Number(a));\n\t\t}), t;\n\t}\n\tt.exports = r;\n})), ft = /* @__PURE__ */ s(((e, t) => {\n\tfunction n(e) {\n\t\tif (!(e instanceof Map)) throw Error(`Invalid graph: Expected Map instead found ${typeof e}`);\n\t\te.forEach((e, t) => {\n\t\t\tif (typeof e == \"object\" && e instanceof Map) {\n\t\t\t\tn(e);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (typeof e != \"number\" || e <= 0) throw Error(`Values must be numbers greater than 0. Found value ${e} at ${t}`);\n\t\t});\n\t}\n\tt.exports = n;\n})), pt = /* @__PURE__ */ l((/* @__PURE__ */ s(((e, t) => {\n\tvar n = lt(), r = ut(), i = dt(), a = ft();\n\tt.exports = class {\n\t\tconstructor(e) {\n\t\t\te instanceof Map ? (a(e), this.graph = e) : e ? this.graph = i(e) : this.graph = /* @__PURE__ */ new Map();\n\t\t}\n\t\taddNode(e, t) {\n\t\t\tlet n;\n\t\t\treturn t instanceof Map ? (a(t), n = t) : n = i(t), this.graph.set(e, n), this;\n\t\t}\n\t\taddVertex(e, t) {\n\t\t\treturn this.addNode(e, t);\n\t\t}\n\t\tremoveNode(e) {\n\t\t\treturn this.graph = r(this.graph, e), this;\n\t\t}\n\t\tpath(e, t, r = {}) {\n\t\t\tif (!this.graph.size) return r.cost ? {\n\t\t\t\tpath: null,\n\t\t\t\tcost: 0\n\t\t\t} : null;\n\t\t\tlet i = /* @__PURE__ */ new Set(), a = new n(), o = /* @__PURE__ */ new Map(), s = [], c = 0, l = [];\n\t\t\tif (r.avoid && (l = [].concat(r.avoid)), l.includes(e)) throw Error(`Starting node (${e}) cannot be avoided`);\n\t\t\tif (l.includes(t)) throw Error(`Ending node (${t}) cannot be avoided`);\n\t\t\tfor (a.set(e, 0); !a.isEmpty();) {\n\t\t\t\tlet e = a.next();\n\t\t\t\tif (e.key === t) {\n\t\t\t\t\tc = e.priority;\n\t\t\t\t\tlet t = e.key;\n\t\t\t\t\tfor (; o.has(t);) s.push(t), t = o.get(t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ti.add(e.key), (this.graph.get(e.key) || /* @__PURE__ */ new Map()).forEach((t, n) => {\n\t\t\t\t\tif (i.has(n) || l.includes(n)) return null;\n\t\t\t\t\tif (!a.has(n)) return o.set(n, e.key), a.set(n, e.priority + t);\n\t\t\t\t\tlet r = a.get(n).priority, s = e.priority + t;\n\t\t\t\t\treturn s < r ? (o.set(n, e.key), a.set(n, s)) : null;\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn s.length ? (r.trim ? s.shift() : s = s.concat([e]), r.reverse || (s = s.reverse()), r.cost ? {\n\t\t\t\tpath: s,\n\t\t\t\tcost: c\n\t\t\t} : s) : r.cost ? {\n\t\t\t\tpath: null,\n\t\t\t\tcost: 0\n\t\t\t} : null;\n\t\t}\n\t\tshortestPath(...e) {\n\t\t\treturn this.path(...e);\n\t\t}\n\t};\n})))(), 1), mt = {\n\t1: \"north\",\n\t2: \"northeast\",\n\t3: \"northwest\",\n\t4: \"east\",\n\t5: \"west\",\n\t6: \"south\",\n\t7: \"southeast\",\n\t8: \"southwest\",\n\t9: \"up\",\n\t10: \"down\",\n\t11: \"in\",\n\t12: \"out\"\n}, ht = {\n\tnorth: \"n\",\n\tnortheast: \"ne\",\n\tnorthwest: \"nw\",\n\teast: \"e\",\n\twest: \"w\",\n\tsouth: \"s\",\n\tsoutheast: \"se\",\n\tsouthwest: \"sw\",\n\tup: \"up\",\n\tdown: \"down\",\n\tin: \"in\",\n\tout: \"out\"\n}, gt = class {\n\tconstructor(e) {\n\t\tthis.mapReader = e, this.data = this.buildGraph();\n\t}\n\tgetAdj() {\n\t\treturn this.data.adj;\n\t}\n\tgetGraphDefinition() {\n\t\treturn this.data.graphDefinition;\n\t}\n\tgetMaxEdgeDistance() {\n\t\treturn this.data.maxEdgeDistance;\n\t}\n\tgetMinEdgeWeight() {\n\t\treturn this.data.minEdgeWeight;\n\t}\n\tgetRoom(e) {\n\t\treturn this.mapReader.getRoom(e);\n\t}\n\tresolveEdgeWeight(e, t, n) {\n\t\tlet r = e.exitWeights?.[t];\n\t\treturn r !== void 0 && r > 0 ? r : Math.max(n.weight, 1);\n\t}\n\tbuildGraph() {\n\t\tlet e = /* @__PURE__ */ new Map(), t = {}, n = 1, r = Infinity;\n\t\treturn this.mapReader.getRooms().forEach((i) => {\n\t\t\tlet a = [], o = {}, s = new Set((i.exitLocks ?? []).map((e) => mt[e]).filter((e) => !!e)), c = new Set(i.mSpecialExitLocks ?? []);\n\t\t\tObject.entries(i.exits ?? {}).forEach(([e, t]) => {\n\t\t\t\tif (s.has(e)) return;\n\t\t\t\tlet c = this.mapReader.getRoom(t);\n\t\t\t\tif (c) {\n\t\t\t\t\tlet s = ht[e] ?? e, l = this.resolveEdgeWeight(i, s, c);\n\t\t\t\t\ta.push({\n\t\t\t\t\t\tid: t,\n\t\t\t\t\t\tweight: l\n\t\t\t\t\t}), o[t.toString()] = l, l < r && (r = l);\n\t\t\t\t\tlet u = c.x - i.x, d = c.y - i.y, f = c.z - i.z, p = Math.sqrt(u * u + d * d + f * f);\n\t\t\t\t\tp > n && (n = p);\n\t\t\t\t}\n\t\t\t}), Object.entries(i.specialExits ?? {}).forEach(([e, t]) => {\n\t\t\t\tif (c.has(t)) return;\n\t\t\t\tlet s = this.mapReader.getRoom(t);\n\t\t\t\tif (s) {\n\t\t\t\t\tlet c = this.resolveEdgeWeight(i, e, s);\n\t\t\t\t\ta.push({\n\t\t\t\t\t\tid: t,\n\t\t\t\t\t\tweight: c\n\t\t\t\t\t}), o[t.toString()] = c, c < r && (r = c);\n\t\t\t\t\tlet l = s.x - i.x, u = s.y - i.y, d = s.z - i.z, f = Math.sqrt(l * l + u * u + d * d);\n\t\t\t\t\tf > n && (n = f);\n\t\t\t\t}\n\t\t\t}), e.set(i.id, a), t[i.id.toString()] = o;\n\t\t}), isFinite(r) || (r = 1), {\n\t\t\tadj: e,\n\t\t\tgraphDefinition: t,\n\t\t\tmaxEdgeDistance: n,\n\t\t\tminEdgeWeight: r\n\t\t};\n\t}\n};\n//#endregion\n//#region src/PathFinder.ts\nfunction _t(e, t) {\n\te.push(t);\n\tlet n = e.length - 1;\n\tfor (; n > 0;) {\n\t\tlet t = n - 1 >> 1;\n\t\tif (e[t].priority <= e[n].priority) break;\n\t\t[e[t], e[n]] = [e[n], e[t]], n = t;\n\t}\n}\nfunction vt(e) {\n\tif (e.length === 0) return;\n\tlet t = e[0], n = e.pop();\n\tif (e.length > 0) {\n\t\te[0] = n;\n\t\tlet t = 0, r = e.length;\n\t\tfor (;;) {\n\t\t\tlet n = t, i = 2 * t + 1, a = 2 * t + 2;\n\t\t\tif (i < r && e[i].priority < e[n].priority && (n = i), a < r && e[a].priority < e[n].priority && (n = a), n === t) break;\n\t\t\t[e[t], e[n]] = [e[n], e[t]], t = n;\n\t\t}\n\t}\n\treturn t;\n}\nfunction yt(e, t, n) {\n\tlet r = [n], i = n;\n\tfor (; i !== t;) i = e.get(i), r.push(i);\n\treturn r.reverse(), r;\n}\nfunction bt(e, t, n) {\n\tlet r = e.path(t.toString(), n.toString()), i = Array.isArray(r) ? r : r?.path;\n\treturn i ? i.map((e) => Number(e)) : null;\n}\nfunction xt(e, t, n, r) {\n\tlet i = r.getRoom(n);\n\tif (!i) return null;\n\tlet a = i.x, o = i.y, s = i.z, c = r.getMaxEdgeDistance(), l = r.getMinEdgeWeight(), u = (e) => {\n\t\tlet t = r.getRoom(e);\n\t\tif (!t) return 0;\n\t\tlet n = t.x - a, i = t.y - o, u = t.z - s;\n\t\treturn Math.sqrt(n * n + i * i + u * u) / c * l;\n\t}, d = /* @__PURE__ */ new Map(), f = /* @__PURE__ */ new Map(), p = [];\n\tfor (d.set(t, 0), _t(p, {\n\t\tid: t,\n\t\tpriority: u(t)\n\t}); p.length > 0;) {\n\t\tlet { id: r } = vt(p);\n\t\tif (r === n) return yt(f, t, n);\n\t\tlet i = d.get(r) ?? Infinity, a = e.get(r);\n\t\tif (a) for (let e of a) {\n\t\t\tlet t = i + e.weight;\n\t\t\tt < (d.get(e.id) ?? Infinity) && (d.set(e.id, t), f.set(e.id, r), _t(p, {\n\t\t\t\tid: e.id,\n\t\t\t\tpriority: t + u(e.id)\n\t\t\t}));\n\t\t}\n\t}\n\treturn null;\n}\nvar St = class {\n\tconstructor(e, t = \"dijkstra\") {\n\t\tthis.cache = /* @__PURE__ */ new Map(), this._algorithm = t, this.mapGraph = new gt(e), this.dijkstraGraph = new pt.default(this.mapGraph.getGraphDefinition());\n\t}\n\tget algorithm() {\n\t\treturn this._algorithm;\n\t}\n\tsetAlgorithm(e) {\n\t\te !== this._algorithm && (this._algorithm = e, this.cache.clear());\n\t}\n\tfindPath(e, t) {\n\t\tlet n = `${e}->${t}`;\n\t\tif (this.cache.has(n)) return this.cache.get(n);\n\t\tif (e === t) {\n\t\t\tlet t = this.mapGraph.getRoom(e) ? [e] : null;\n\t\t\treturn this.cache.set(n, t), t;\n\t\t}\n\t\tif (!this.mapGraph.getRoom(e) || !this.mapGraph.getRoom(t)) return this.cache.set(n, null), null;\n\t\tlet r;\n\t\tswitch (this._algorithm) {\n\t\t\tcase \"dijkstra\":\n\t\t\t\tr = bt(this.dijkstraGraph, e, t);\n\t\t\t\tbreak;\n\t\t\tcase \"astar\":\n\t\t\t\tr = xt(this.mapGraph.getAdj(), e, t, this.mapGraph);\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this.cache.set(n, r), r;\n\t}\n}, Ct = {\n\t1: \"north\",\n\t2: \"northeast\",\n\t3: \"northwest\",\n\t4: \"east\",\n\t5: \"west\",\n\t6: \"south\",\n\t7: \"southeast\",\n\t8: \"southwest\",\n\t9: \"up\",\n\t10: \"down\",\n\t11: \"in\",\n\t12: \"out\"\n};\nfunction wt() {\n\treturn {\n\t\tareaWidth: 150,\n\t\tareaHeight: 80,\n\t\tareaSpacing: 50,\n\t\tfontSize: 14,\n\t\tconnectionLineWidth: 2,\n\t\tareaFillColor: \"#2a2a3e\",\n\t\tareaStrokeColor: \"#4a4a6e\",\n\t\ttextColor: \"#e0e0e0\",\n\t\tconnectionColor: \"#6a6a8e\",\n\t\thighlightColor: \"#ff9900\"\n\t};\n}\nvar Tt = class {\n\tconstructor(t, n, r) {\n\t\tthis.areaNodes = /* @__PURE__ */ new Map(), this.connectionGroups = [], this.currentZoom = 1, this.domainInfo = /* @__PURE__ */ new Map(), this.domainFilter = \"all\", this.dotsMode = !1, this.settings = r ?? wt(), this.stage = new e.Stage({\n\t\t\tcontainer: t,\n\t\t\twidth: t.clientWidth,\n\t\t\theight: t.clientHeight,\n\t\t\tdraggable: !0\n\t\t}), this.backgroundLayer = new e.Layer({ listening: !1 }), this.stage.add(this.backgroundLayer), this.connectionLayer = new e.Layer({ listening: !1 }), this.stage.add(this.connectionLayer), this.areaLayer = new e.Layer(), this.stage.add(this.areaLayer), this.mapReader = n, this.initScaling(), this.initResize(t);\n\t}\n\tinitResize(e) {\n\t\tnew ResizeObserver(() => {\n\t\t\tthis.stage.width(e.clientWidth), this.stage.height(e.clientHeight), this.stage.batchDraw();\n\t\t}).observe(e);\n\t}\n\tinitScaling() {\n\t\tlet e = 1.1;\n\t\tthis.stage.on(\"wheel\", (t) => {\n\t\t\tt.evt.preventDefault();\n\t\t\tlet n = this.stage.scaleX(), r = this.stage.getPointerPosition();\n\t\t\tif (!r) return;\n\t\t\tlet i = {\n\t\t\t\tx: (r.x - this.stage.x()) / n,\n\t\t\t\ty: (r.y - this.stage.y()) / n\n\t\t\t}, a = (t.evt.deltaY > 0 ? -1 : 1) > 0 ? this.currentZoom * e : this.currentZoom / e;\n\t\t\tif (this.setZoom(a)) {\n\t\t\t\tlet e = this.stage.scaleX(), t = {\n\t\t\t\t\tx: r.x - i.x * e,\n\t\t\t\t\ty: r.y - i.y * e\n\t\t\t\t};\n\t\t\t\tthis.stage.position(t), this.stage.batchDraw();\n\t\t\t}\n\t\t});\n\t}\n\tsetZoom(e) {\n\t\tlet t = Math.max(.1, Math.min(5, e));\n\t\treturn this.currentZoom === t ? !1 : (this.currentZoom = t, this.stage.scale({\n\t\t\tx: this.currentZoom,\n\t\t\ty: this.currentZoom\n\t\t}), !0);\n\t}\n\tgetZoom() {\n\t\treturn this.currentZoom;\n\t}\n\tsetDomainInfo(e) {\n\t\tthis.domainInfo.clear();\n\t\tfor (let [t, n] of Object.entries(e)) this.domainInfo.set(Number(t), n);\n\t}\n\tsetDomainFilter(e) {\n\t\tthis.domainFilter = e;\n\t}\n\tgetDomainFilter() {\n\t\treturn this.domainFilter;\n\t}\n\tsetBackgroundImage(e) {\n\t\tthis.backgroundConfig = {\n\t\t\turl: e.url,\n\t\t\tx: e.x,\n\t\t\ty: e.y,\n\t\t\twidth: e.width,\n\t\t\theight: e.height,\n\t\t\topacity: e.opacity ?? .3\n\t\t};\n\t}\n\tclearBackgroundImage() {\n\t\tthis.backgroundConfig = void 0, this.backgroundImage = void 0, this.backgroundLayer.destroyChildren(), this.backgroundLayer.batchDraw();\n\t}\n\tredrawBackground() {\n\t\tthis.drawBackground();\n\t}\n\tsetDotsMode(e) {\n\t\tthis.dotsMode = e;\n\t}\n\tgetDotsMode() {\n\t\treturn this.dotsMode;\n\t}\n\tredraw() {\n\t\tthis.drawBackground(), this.drawConnections(), this.drawAreas(), this.stage.batchDraw();\n\t}\n\tisAreaInDomain(e) {\n\t\tlet t = this.domainInfo.get(e);\n\t\tif (!t) return this.domainFilter === \"interdomain\" || this.domainFilter === \"all\";\n\t\tswitch (this.domainFilter) {\n\t\t\tcase \"ishtar\": return t.isIshtar;\n\t\t\tcase \"empire\": return t.isEmpire;\n\t\t\tcase \"interdomain\": return !t.isIshtar && !t.isEmpire;\n\t\t\tcase \"all\": return !0;\n\t\t}\n\t}\n\tareAreasInSameDomain(e, t) {\n\t\tlet n = this.domainInfo.get(e), r = this.domainInfo.get(t);\n\t\treturn !n || !r ? !1 : n.isIshtar && r.isIshtar || n.isEmpire && r.isEmpire ? !0 : !n.isIshtar && !n.isEmpire && !r.isIshtar && !r.isEmpire;\n\t}\n\trender() {\n\t\tthis.analyzeConnections(), this.layoutAreas(), this.drawBackground(), this.drawConnections(), this.drawAreas(), this.centerView(), this.stage.batchDraw();\n\t}\n\tdrawBackground() {\n\t\tif (this.backgroundLayer.destroyChildren(), !this.backgroundConfig) return;\n\t\tlet t = new Image();\n\t\tt.crossOrigin = \"anonymous\", t.onload = () => {\n\t\t\tthis.backgroundImage = new e.Image({\n\t\t\t\tx: this.backgroundConfig.x,\n\t\t\t\ty: this.backgroundConfig.y,\n\t\t\t\timage: t,\n\t\t\t\twidth: this.backgroundConfig.width,\n\t\t\t\theight: this.backgroundConfig.height,\n\t\t\t\topacity: this.backgroundConfig.opacity,\n\t\t\t\tlistening: !1\n\t\t\t}), this.backgroundLayer.add(this.backgroundImage), this.backgroundLayer.batchDraw();\n\t\t}, t.onerror = () => {\n\t\t\tconsole.error(\"Failed to load background image:\", this.backgroundConfig?.url);\n\t\t}, t.src = this.backgroundConfig.url;\n\t}\n\tanalyzeConnections() {\n\t\tthis.areaNodes.clear(), this.connectionGroups = [];\n\t\tlet e = this.mapReader.getRooms(), t = this.mapReader.getAreas(), n = /* @__PURE__ */ new Map();\n\t\tfor (let e of t) {\n\t\t\tlet t = e.getAreaId(), r = e.getRooms();\n\t\t\tif (r.length === 0) continue;\n\t\t\tlet i = Infinity, a = -Infinity, o = Infinity, s = -Infinity, c = 0;\n\t\t\tfor (let e of r) e.z === 0 && (c++, i = Math.min(i, e.x), a = Math.max(a, e.x), o = Math.min(o, e.y), s = Math.max(s, e.y));\n\t\t\tif (c === 0) for (let e of r) i = Math.min(i, e.x), a = Math.max(a, e.x), o = Math.min(o, e.y), s = Math.max(s, e.y);\n\t\t\tlet l = (i + a) / 2, u = (o + s) / 2;\n\t\t\tn.set(t, {\n\t\t\t\tminX: i,\n\t\t\t\tmaxX: a,\n\t\t\t\tminY: o,\n\t\t\t\tmaxY: s,\n\t\t\t\tcenterX: l,\n\t\t\t\tcenterY: u,\n\t\t\t\troomCount: r.length\n\t\t\t});\n\t\t}\n\t\tlet r = 1;\n\t\tfor (let e of n.values()) {\n\t\t\tlet t = e.maxX - e.minX, n = e.maxY - e.minY;\n\t\t\tr = Math.max(r, t, n);\n\t\t}\n\t\tlet i = 200 / r;\n\t\tfor (let e of t) {\n\t\t\tlet t = e.getAreaId(), r = n.get(t);\n\t\t\tif (!r || !this.isAreaInDomain(t)) continue;\n\t\t\tlet a = r.maxX - r.minX, o = r.maxY - r.minY, s = Math.max(100, a * i), c = Math.max(100, o * i), l = s / c;\n\t\t\tl > 3 ? c = s / 3 : l < 1 / 3 && (s = c / 3), this.areaNodes.set(t, {\n\t\t\t\tareaId: t,\n\t\t\t\tname: e.getAreaName(),\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\twidth: s,\n\t\t\t\theight: c,\n\t\t\t\tconnections: [],\n\t\t\t\troomCount: r.roomCount,\n\t\t\t\trealCenterX: r.centerX,\n\t\t\t\trealCenterY: r.centerY\n\t\t\t});\n\t\t}\n\t\tlet a = /* @__PURE__ */ new Map();\n\t\tfor (let t of e) {\n\t\t\tlet e = t.area;\n\t\t\tif (!this.areaNodes.has(e)) continue;\n\t\t\tlet n = this.getLockedDirections(t), r = new Set(t.mSpecialExitLocks ?? []);\n\t\t\tfor (let [r, i] of Object.entries(t.exits ?? {})) {\n\t\t\t\tif (n.has(r)) continue;\n\t\t\t\tlet o = this.mapReader.getRoom(i);\n\t\t\t\tif (!o || o.area === e || !this.areaNodes.has(o.area) || !this.areAreasInSameDomain(e, o.area)) continue;\n\t\t\t\tlet s = this.createConnection(t, o, r);\n\t\t\t\ts && this.addConnection(a, s);\n\t\t\t}\n\t\t\tfor (let [n, i] of Object.entries(t.specialExits ?? {})) {\n\t\t\t\tif (r.has(i)) continue;\n\t\t\t\tlet o = this.mapReader.getRoom(i);\n\t\t\t\tif (!o || o.area === e || !this.areaNodes.has(o.area) || !this.areAreasInSameDomain(e, o.area)) continue;\n\t\t\t\tlet s = this.parseDirection(n), c = this.createConnection(t, o, s);\n\t\t\t\tc && this.addConnection(a, c);\n\t\t\t}\n\t\t}\n\t\tfor (let [e, t] of a) {\n\t\t\tlet [n, r] = e.split(\"-\").map(Number), i = this.createConnectionGroup(n, r, t);\n\t\t\tthis.connectionGroups.push(i);\n\t\t\tlet a = this.areaNodes.get(n), o = this.areaNodes.get(r);\n\t\t\tif (a && a.connections.push(...t), o) for (let e of t) o.connections.push({\n\t\t\t\t...e,\n\t\t\t\tfromAreaId: e.toAreaId,\n\t\t\t\ttoAreaId: e.fromAreaId,\n\t\t\t\tfromRoomId: e.toRoomId,\n\t\t\t\ttoRoomId: e.fromRoomId,\n\t\t\t\tdirection: e.direction ? oe[e.direction] : null,\n\t\t\t\tfromRoomPosition: e.toRoomPosition,\n\t\t\t\ttoRoomPosition: e.fromRoomPosition\n\t\t\t});\n\t\t}\n\t}\n\tgetLockedDirections(e) {\n\t\treturn new Set((e.exitLocks ?? []).map((e) => Ct[e]).filter((e) => !!e));\n\t}\n\tcreateConnection(e, t, n) {\n\t\tlet r = this.toPlanarDirection(n);\n\t\treturn {\n\t\t\tfromAreaId: e.area,\n\t\t\ttoAreaId: t.area,\n\t\t\tfromRoomId: e.id,\n\t\t\ttoRoomId: t.id,\n\t\t\tdirection: r,\n\t\t\tfromRoomPosition: {\n\t\t\t\tx: e.x,\n\t\t\t\ty: e.y\n\t\t\t},\n\t\t\ttoRoomPosition: {\n\t\t\t\tx: t.x,\n\t\t\t\ty: t.y\n\t\t\t}\n\t\t};\n\t}\n\taddConnection(e, t) {\n\t\tlet n = t.fromAreaId < t.toAreaId ? `${t.fromAreaId}-${t.toAreaId}` : `${t.toAreaId}-${t.fromAreaId}`;\n\t\te.has(n) || e.set(n, []), e.get(n).push(t);\n\t}\n\tcreateConnectionGroup(e, t, n) {\n\t\tlet r = /* @__PURE__ */ new Map(), i = 0, a = 0;\n\t\tfor (let e of n) e.direction && r.set(e.direction, (r.get(e.direction) ?? 0) + 1), i += e.toRoomPosition.x - e.fromRoomPosition.x, a += e.toRoomPosition.y - e.fromRoomPosition.y;\n\t\tlet o = null, s = 0;\n\t\tfor (let [e, t] of r) t > s && (s = t, o = e);\n\t\treturn {\n\t\t\tfromAreaId: e,\n\t\t\ttoAreaId: t,\n\t\t\tconnections: n,\n\t\t\tprimaryDirection: o,\n\t\t\taverageOffset: {\n\t\t\t\tx: i / n.length,\n\t\t\t\ty: a / n.length\n\t\t\t}\n\t\t};\n\t}\n\tparseDirection(e) {\n\t\treturn {\n\t\t\tn: \"north\",\n\t\t\tnorth: \"north\",\n\t\t\ts: \"south\",\n\t\t\tsouth: \"south\",\n\t\t\te: \"east\",\n\t\t\teast: \"east\",\n\t\t\tw: \"west\",\n\t\t\twest: \"west\",\n\t\t\tne: \"northeast\",\n\t\t\tnortheast: \"northeast\",\n\t\t\tnw: \"northwest\",\n\t\t\tnorthwest: \"northwest\",\n\t\t\tse: \"southeast\",\n\t\t\tsoutheast: \"southeast\",\n\t\t\tsw: \"southwest\",\n\t\t\tsouthwest: \"southwest\",\n\t\t\tu: \"up\",\n\t\t\tup: \"up\",\n\t\t\td: \"down\",\n\t\t\tdown: \"down\",\n\t\t\ti: \"in\",\n\t\t\tin: \"in\",\n\t\t\to: \"out\",\n\t\t\tout: \"out\"\n\t\t}[e.toLowerCase().trim()] ?? null;\n\t}\n\ttoPlanarDirection(e) {\n\t\treturn e && k.includes(e) ? e : null;\n\t}\n\tlayoutAreas() {\n\t\tif (Array.from(this.areaNodes.values()).length === 0) return;\n\t\tlet e = this.findConnectedComponents(), t = 0, n = this.settings.areaWidth * 3;\n\t\tfor (let r of e) if (r.length === 1) {\n\t\t\tlet e = this.areaNodes.get(r[0]);\n\t\t\te && (e.x = t, e.y = 0), t += this.settings.areaWidth + n;\n\t\t} else {\n\t\t\tlet e = this.forceDirectedLayout(r);\n\t\t\tfor (let n of r) {\n\t\t\t\tlet r = this.areaNodes.get(n);\n\t\t\t\tr && isFinite(e.minX) && isFinite(e.minY) && (r.x -= e.minX, r.x += t, r.y -= e.minY);\n\t\t\t}\n\t\t\tlet i = isFinite(e.maxX - e.minX) ? e.maxX - e.minX : this.settings.areaWidth;\n\t\t\tt += i + n;\n\t\t}\n\t}\n\tfindConnectedComponents() {\n\t\tlet e = /* @__PURE__ */ new Set(), t = [];\n\t\tfor (let [n] of this.areaNodes) {\n\t\t\tif (e.has(n)) continue;\n\t\t\tlet r = [], i = [n];\n\t\t\tfor (; i.length > 0;) {\n\t\t\t\tlet t = i.shift();\n\t\t\t\tif (e.has(t)) continue;\n\t\t\t\te.add(t), r.push(t);\n\t\t\t\tlet n = this.areaNodes.get(t);\n\t\t\t\tif (n) for (let t of n.connections) e.has(t.toAreaId) || i.push(t.toAreaId);\n\t\t\t}\n\t\t\tt.push(r);\n\t\t}\n\t\treturn t;\n\t}\n\tforceDirectedLayout(e) {\n\t\tlet t = /* @__PURE__ */ new Map();\n\t\tfor (let n of e) {\n\t\t\tlet e = this.areaNodes.get(n);\n\t\t\tif (!e) continue;\n\t\t\tlet r = new Set(e.connections.map((e) => e.toAreaId));\n\t\t\tt.set(n, r);\n\t\t}\n\t\tlet n = /* @__PURE__ */ new Set(), r = /* @__PURE__ */ new Set();\n\t\tfor (let [e, r] of t) r.size >= 3 && n.add(e);\n\t\tfor (let [e, i] of t) {\n\t\t\tif (n.has(e) || r.has(e) || i.size > 2) continue;\n\t\t\tlet a = [e];\n\t\t\tr.add(e);\n\t\t\tlet o = Array.from(i);\n\t\t\tfor (let i of o) {\n\t\t\t\tlet o = i, s = e;\n\t\t\t\tfor (; o && !r.has(o) && !n.has(o);) {\n\t\t\t\t\tlet e = t.get(o);\n\t\t\t\t\tif (!e) break;\n\t\t\t\t\tif (e.size >= 3) {\n\t\t\t\t\t\tn.add(o);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ta.push(o), r.add(o);\n\t\t\t\t\tlet i = !1;\n\t\t\t\t\tfor (let t of e) if (t !== s && !r.has(t)) {\n\t\t\t\t\t\ts = o, o = t, i = !0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (!i) break;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet s = !1;\n\t\t\tfor (let e of a) {\n\t\t\t\tlet r = t.get(e);\n\t\t\t\tif (r) {\n\t\t\t\t\tfor (let e of r) if (n.has(e)) {\n\t\t\t\t\t\ts = !0;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (s) break;\n\t\t\t}\n\t\t\tif (!s && a.length > 0) {\n\t\t\t\tlet e = a[0], i = t.get(a[0])?.size ?? 0;\n\t\t\t\tfor (let n of a) {\n\t\t\t\t\tlet r = t.get(n)?.size ?? 0;\n\t\t\t\t\tr > i && (i = r, e = n);\n\t\t\t\t}\n\t\t\t\tn.add(e), r.delete(e);\n\t\t\t}\n\t\t}\n\t\tfor (let r of e) {\n\t\t\tlet e = t.get(r);\n\t\t\t(!e || e.size === 0) && n.add(r);\n\t\t}\n\t\tlet i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();\n\t\tfor (let e of n) i.set(e, e), a.set(e, []);\n\t\tlet o = new Set(n);\n\t\tfor (let e of n) {\n\t\t\tlet n = t.get(e) ?? /* @__PURE__ */ new Set();\n\t\t\tfor (let r of n) {\n\t\t\t\tif (o.has(r)) continue;\n\t\t\t\tlet n = [], s = r, c = e;\n\t\t\t\tfor (; s && !o.has(s);) {\n\t\t\t\t\tn.push(s), i.set(s, e), o.add(s);\n\t\t\t\t\tlet r = t.get(s) ?? /* @__PURE__ */ new Set(), a;\n\t\t\t\t\tfor (let e of r) if (e !== c && !o.has(e)) {\n\t\t\t\t\t\ta = e;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tc = s, s = a;\n\t\t\t\t}\n\t\t\t\tn.length > 0 && a.get(e).push(n);\n\t\t\t}\n\t\t}\n\t\tlet s = /* @__PURE__ */ new Set(), c = [], l = n.values().next().value, u = l === void 0 ? e[0] : l;\n\t\tif (u !== void 0) {\n\t\t\tlet e = this.areaNodes.get(u);\n\t\t\te && (e.x = 0, e.y = 0, s.add(u), c.push(u));\n\t\t}\n\t\tfor (; c.length > 0;) {\n\t\t\tlet e = c.shift(), t = this.areaNodes.get(e), r = /* @__PURE__ */ new Map();\n\t\t\tfor (let e of t.connections) {\n\t\t\t\tlet t = e.toAreaId;\n\t\t\t\tif (s.has(t) || !n.has(t)) continue;\n\t\t\t\tlet i = this.areaNodes.get(t);\n\t\t\t\tif (!i) continue;\n\t\t\t\tlet a = e.direction ?? \"none\";\n\t\t\t\tr.has(a) || r.set(a, []), r.get(a).push({\n\t\t\t\t\tid: t,\n\t\t\t\t\tnode: i,\n\t\t\t\t\tconn: e\n\t\t\t\t});\n\t\t\t}\n\t\t\tfor (let [e, n] of r) {\n\t\t\t\tlet r = this.getDirectionOffset(e === \"none\" ? null : e);\n\t\t\t\tn.sort((e, t) => Math.abs(r.x) > Math.abs(r.y) ? t.node.realCenterY - e.node.realCenterY : e.node.realCenterX - t.node.realCenterX);\n\t\t\t\tlet i = this.settings.areaWidth + this.settings.areaSpacing, a = this.settings.areaHeight + this.settings.areaSpacing;\n\t\t\t\tn.forEach((e, o) => {\n\t\t\t\t\tif (e.node.x = t.x + r.x * i, e.node.y = t.y + r.y * a, n.length > 1) {\n\t\t\t\t\t\tlet t = (o - (n.length - 1) / 2) * .5;\n\t\t\t\t\t\tMath.abs(r.x) > Math.abs(r.y) ? e.node.y += t * a : e.node.x += t * i;\n\t\t\t\t\t}\n\t\t\t\t\ts.add(e.id), c.push(e.id);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tlet d = Array.from(n);\n\t\td.length > 1 && this.applyForces(d, 80);\n\t\tlet f = this.settings.areaWidth + this.settings.areaSpacing + 30, p = this.settings.areaHeight + this.settings.areaSpacing + 30, m = /* @__PURE__ */ new Map(), h = [\n\t\t\t\"east\",\n\t\t\t\"west\",\n\t\t\t\"north\",\n\t\t\t\"south\",\n\t\t\t\"northeast\",\n\t\t\t\"northwest\",\n\t\t\t\"southeast\",\n\t\t\t\"southwest\"\n\t\t];\n\t\tfor (let [e, t] of a) {\n\t\t\tlet n = this.areaNodes.get(e);\n\t\t\tif (!n) continue;\n\t\t\tlet r = 0, i = /* @__PURE__ */ new Map();\n\t\t\tfor (let a of t) {\n\t\t\t\tlet t = e, o = n.x, s = n.y, c = null;\n\t\t\t\tfor (let l of a) {\n\t\t\t\t\tlet a = this.areaNodes.get(l);\n\t\t\t\t\tif (!a) continue;\n\t\t\t\t\tlet u = this.areaNodes.get(t), d = null;\n\t\t\t\t\tif (u) {\n\t\t\t\t\t\tfor (let e of u.connections) if (e.toAreaId === l) {\n\t\t\t\t\t\t\td = e.direction;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t!d && t === e ? (c = h[r % h.length], r++, d = c) : !d && c && (d = c);\n\t\t\t\t\tlet g = this.getDirectionOffset(d), _ = 0;\n\t\t\t\t\tif (t === e && d) {\n\t\t\t\t\t\tlet e = d, t = i.get(e) ?? 0;\n\t\t\t\t\t\ti.set(e, t + 1), _ = t;\n\t\t\t\t\t}\n\t\t\t\t\tif (a.x = o + g.x * f, a.y = s + g.y * p, _ > 0) {\n\t\t\t\t\t\tlet e = 1.2;\n\t\t\t\t\t\tg.x !== 0 && g.y === 0 ? a.y += _ * p * e : g.y !== 0 && g.x === 0 ? a.x += _ * f * e : (a.x += _ * f * e, a.y -= _ * p * e);\n\t\t\t\t\t}\n\t\t\t\t\tm.set(l, {\n\t\t\t\t\t\tdx: a.x - n.x,\n\t\t\t\t\t\tdy: a.y - n.y,\n\t\t\t\t\t\thubId: e\n\t\t\t\t\t}), t = l, o = a.x, s = a.y;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlet g = /* @__PURE__ */ new Map(), _ = /* @__PURE__ */ new Map();\n\t\tfor (let e of n) {\n\t\t\tlet t = this.areaNodes.get(e);\n\t\t\tif (!t) continue;\n\t\t\tlet n = t.x, r = t.y, i = t.x + t.width, o = t.y + t.height, s = a.get(e) ?? [];\n\t\t\tfor (let e of s) for (let t of e) {\n\t\t\t\tlet e = this.areaNodes.get(t);\n\t\t\t\te && (n = Math.min(n, e.x), r = Math.min(r, e.y), i = Math.max(i, e.x + e.width), o = Math.max(o, e.y + e.height));\n\t\t\t}\n\t\t\tg.set(e, {\n\t\t\t\tminX: n,\n\t\t\t\tminY: r,\n\t\t\t\tmaxX: i,\n\t\t\t\tmaxY: o\n\t\t\t}), _.set(e, {\n\t\t\t\tdx: n - t.x,\n\t\t\t\tdy: r - t.y\n\t\t\t});\n\t\t}\n\t\tthis.applyClusterForces(d, g, _, 60);\n\t\tfor (let [e, t] of m) {\n\t\t\tlet n = this.areaNodes.get(e), r = this.areaNodes.get(t.hubId);\n\t\t\t!n || !r || (n.x = r.x + t.dx, n.y = r.y + t.dy);\n\t\t}\n\t\tlet v = Infinity, y = Infinity, b = -Infinity, x = -Infinity;\n\t\tfor (let t of e) {\n\t\t\tlet e = this.areaNodes.get(t);\n\t\t\tv = Math.min(v, e.x), y = Math.min(y, e.y), b = Math.max(b, e.x + e.width), x = Math.max(x, e.y + e.height);\n\t\t}\n\t\treturn {\n\t\t\tminX: v,\n\t\t\tminY: y,\n\t\t\tmaxX: b,\n\t\t\tmaxY: x\n\t\t};\n\t}\n\tgetDirectionOffset(e) {\n\t\tlet t = {\n\t\t\tnorth: {\n\t\t\t\tx: 0,\n\t\t\t\ty: -1\n\t\t\t},\n\t\t\tsouth: {\n\t\t\t\tx: 0,\n\t\t\t\ty: 1\n\t\t\t},\n\t\t\teast: {\n\t\t\t\tx: 1,\n\t\t\t\ty: 0\n\t\t\t},\n\t\t\twest: {\n\t\t\t\tx: -1,\n\t\t\t\ty: 0\n\t\t\t},\n\t\t\tnortheast: {\n\t\t\t\tx: .75,\n\t\t\t\ty: -.75\n\t\t\t},\n\t\t\tnorthwest: {\n\t\t\t\tx: -.75,\n\t\t\t\ty: -.75\n\t\t\t},\n\t\t\tsoutheast: {\n\t\t\t\tx: .75,\n\t\t\t\ty: .75\n\t\t\t},\n\t\t\tsouthwest: {\n\t\t\t\tx: -.75,\n\t\t\t\ty: .75\n\t\t\t}\n\t\t};\n\t\treturn e && t[e] ? t[e] : {\n\t\t\tx: 1,\n\t\t\ty: 0\n\t\t};\n\t}\n\tapplyClusterForces(e, t, n, r) {\n\t\tlet i = .8, a = /* @__PURE__ */ new Map();\n\t\tfor (let t of e) a.set(t, {\n\t\t\tvx: 0,\n\t\t\tvy: 0\n\t\t});\n\t\tfor (let o = 0; o < r; o++) {\n\t\t\tfor (let r of e) {\n\t\t\t\tlet e = this.areaNodes.get(r), i = t.get(r), a = n.get(r);\n\t\t\t\tif (!e || !i || !a) continue;\n\t\t\t\tlet o = i.maxX - i.minX, s = i.maxY - i.minY;\n\t\t\t\ti.minX = e.x + a.dx, i.minY = e.y + a.dy, i.maxX = i.minX + o, i.maxY = i.minY + s;\n\t\t\t}\n\t\t\tfor (let n of e) {\n\t\t\t\tlet r = this.areaNodes.get(n), i = a.get(n), o = t.get(n);\n\t\t\t\tif (!(!r || !i || !o)) {\n\t\t\t\t\tfor (let r of e) {\n\t\t\t\t\t\tif (n === r) continue;\n\t\t\t\t\t\tlet e = t.get(r);\n\t\t\t\t\t\tif (!e) continue;\n\t\t\t\t\t\tlet a = (o.minX + o.maxX) / 2, s = (o.minY + o.maxY) / 2, c = (e.minX + e.maxX) / 2, l = (e.minY + e.maxY) / 2, u = a - c, d = s - l, f = (o.maxX - o.minX) / 2, p = (o.maxY - o.minY) / 2, m = (e.maxX - e.minX) / 2, h = (e.maxY - e.minY) / 2, g = f + m + 50, _ = p + h + 50, v = g - Math.abs(u), y = _ - Math.abs(d);\n\t\t\t\t\t\tif (v > 0 && y > 0) if (v < y) {\n\t\t\t\t\t\t\tlet e = v * (u >= 0 ? 1 : -1) * .5;\n\t\t\t\t\t\t\ti.vx += e;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet e = y * (d >= 0 ? 1 : -1) * .5;\n\t\t\t\t\t\t\ti.vy += e;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfor (let t of r.connections) {\n\t\t\t\t\t\tlet n = this.areaNodes.get(t.toAreaId);\n\t\t\t\t\t\tif (!n || !e.includes(t.toAreaId)) continue;\n\t\t\t\t\t\tlet a = n.x - r.x, o = n.y - r.y, s = Math.sqrt(a * a + o * o) || 1, c = (s - (this.settings.areaWidth + this.settings.areaSpacing + 50)) * .015;\n\t\t\t\t\t\ti.vx += a / s * c, i.vy += o / s * c;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let t of e) {\n\t\t\t\tlet e = this.areaNodes.get(t), n = a.get(t);\n\t\t\t\t!e || !n || (e.x += n.vx, e.y += n.vy, n.vx *= i, n.vy *= i);\n\t\t\t}\n\t\t}\n\t}\n\tapplyForces(e, t) {\n\t\tlet n = .8, r = this.settings.areaWidth + this.settings.areaSpacing, i = this.settings.areaWidth / 2 + 60, a = new Set(e), o = [], s = /* @__PURE__ */ new Set();\n\t\tfor (let t of e) {\n\t\t\tlet e = this.areaNodes.get(t);\n\t\t\tif (e) for (let n of e.connections) {\n\t\t\t\tif (!a.has(n.toAreaId)) continue;\n\t\t\t\tlet e = Math.min(t, n.toAreaId) + \"-\" + Math.max(t, n.toAreaId);\n\t\t\t\ts.has(e) || (s.add(e), o.push({\n\t\t\t\t\tfrom: t,\n\t\t\t\t\tto: n.toAreaId\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t\tlet c = /* @__PURE__ */ new Map();\n\t\tfor (let t of e) c.set(t, {\n\t\t\tvx: 0,\n\t\t\tvy: 0\n\t\t});\n\t\tfor (let s = 0; s < t; s++) {\n\t\t\tfor (let t of e) {\n\t\t\t\tlet n = this.areaNodes.get(t), s = c.get(t);\n\t\t\t\tif (!n || !s) continue;\n\t\t\t\tlet l = n.x + n.width / 2, u = n.y + n.height / 2;\n\t\t\t\tfor (let r of e) {\n\t\t\t\t\tif (t === r) continue;\n\t\t\t\t\tlet e = this.areaNodes.get(r);\n\t\t\t\t\tif (!e) continue;\n\t\t\t\t\tlet i = (n.width + e.width) / 2 + 20, a = (n.height + e.height) / 2 + 20, o = n.x + n.width / 2, c = n.y + n.height / 2, l = e.x + e.width / 2, u = e.y + e.height / 2, d = o - l, f = c - u, p = i - Math.abs(d), m = a - Math.abs(f);\n\t\t\t\t\tp > 0 && m > 0 && (p < m ? s.vx += (d >= 0 ? 1 : -1) * p * .5 : s.vy += (f >= 0 ? 1 : -1) * m * .5);\n\t\t\t\t}\n\t\t\t\tfor (let e of o) {\n\t\t\t\t\tif (e.from === t || e.to === t) continue;\n\t\t\t\t\tlet n = this.areaNodes.get(e.from), r = this.areaNodes.get(e.to);\n\t\t\t\t\tif (!n || !r) continue;\n\t\t\t\t\tlet a = n.x + n.width / 2, o = n.y + n.height / 2, c = r.x + r.width / 2, d = r.y + r.height / 2, f = this.closestPointOnSegment(l, u, a, o, c, d), p = l - f.x, m = u - f.y, h = Math.sqrt(p * p + m * m) || 1;\n\t\t\t\t\tif (h < i) {\n\t\t\t\t\t\tlet e = (i - h) * .6;\n\t\t\t\t\t\ts.vx += p / h * e, s.vy += m / h * e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (let e of n.connections) {\n\t\t\t\t\tif (!a.has(e.toAreaId)) continue;\n\t\t\t\t\tlet t = this.areaNodes.get(e.toAreaId);\n\t\t\t\t\tif (!t) continue;\n\t\t\t\t\tlet i = t.x - n.x, o = t.y - n.y, l = Math.sqrt(i * i + o * o) || 1, u = (l - r) * .03;\n\t\t\t\t\ts.vx += i / l * u, s.vy += o / l * u;\n\t\t\t\t\tlet d = this.getDirectionOffset(e.direction), f = n.x + d.x * r, p = n.y + d.y * r, m = c.get(e.toAreaId);\n\t\t\t\t\tm && (m.vx += (f - t.x) * .01, m.vy += (p - t.y) * .01);\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (let t of e) {\n\t\t\t\tlet e = this.areaNodes.get(t), r = c.get(t);\n\t\t\t\t!e || !r || (e.x += r.vx, e.y += r.vy, r.vx *= n, r.vy *= n);\n\t\t\t}\n\t\t}\n\t}\n\tclosestPointOnSegment(e, t, n, r, i, a) {\n\t\tlet o = i - n, s = a - r, c = e - n, l = t - r, u = o * o + s * s;\n\t\tif (u === 0) return {\n\t\t\tx: n,\n\t\t\ty: r\n\t\t};\n\t\tlet d = (c * o + l * s) / u;\n\t\treturn d = Math.max(0, Math.min(1, d)), {\n\t\t\tx: n + d * o,\n\t\t\ty: r + d * s\n\t\t};\n\t}\n\tedgesIntersect(e, t, n, r, i, a, o, s) {\n\t\tlet c = (e, t, n, r, i, a) => (a - t) * (n - e) > (r - t) * (i - e);\n\t\treturn c(e, t, i, a, o, s) !== c(n, r, i, a, o, s) && c(e, t, n, r, i, a) !== c(e, t, n, r, o, s);\n\t}\n\tdrawConnections() {\n\t\tthis.connectionLayer.destroyChildren();\n\t\tfor (let t of this.connectionGroups) {\n\t\t\tlet n = this.areaNodes.get(t.fromAreaId), r = this.areaNodes.get(t.toAreaId);\n\t\t\tif (!n || !r || !isFinite(n.x) || !isFinite(n.y) || !isFinite(r.x) || !isFinite(r.y)) continue;\n\t\t\tlet i = {\n\t\t\t\tx: n.x + n.width / 2,\n\t\t\t\ty: n.y + n.height / 2\n\t\t\t}, a = {\n\t\t\t\tx: r.x + r.width / 2,\n\t\t\t\ty: r.y + r.height / 2\n\t\t\t}, o, s;\n\t\t\tif (this.dotsMode ? (o = i, s = a) : (o = this.getEdgePoint(n, a), s = this.getEdgePoint(r, i)), !isFinite(o.x) || !isFinite(o.y) || !isFinite(s.x) || !isFinite(s.y)) continue;\n\t\t\tlet c = this.dotsMode ? \"#ffffff\" : this.settings.connectionColor, l = this.dotsMode ? 1 : Math.min(this.settings.connectionLineWidth, 1 + t.connections.length * .5), u = new e.Line({\n\t\t\t\tpoints: [\n\t\t\t\t\to.x,\n\t\t\t\t\to.y,\n\t\t\t\t\ts.x,\n\t\t\t\t\ts.y\n\t\t\t\t],\n\t\t\t\tstroke: c,\n\t\t\t\tstrokeWidth: l,\n\t\t\t\tlineCap: \"round\",\n\t\t\t\tlistening: !1\n\t\t\t});\n\t\t\tthis.connectionLayer.add(u);\n\t\t}\n\t}\n\tgetEdgePoint(e, t) {\n\t\tlet n = e.x + e.width / 2, r = e.y + e.height / 2, i = t.x - n, a = t.y - r, o = e.width / 2, s = e.height / 2;\n\t\tif (i === 0 && a === 0) return {\n\t\t\tx: n,\n\t\t\ty: r\n\t\t};\n\t\tlet c = Math.abs(i), l = Math.abs(a), u;\n\t\treturn u = c / o > l / s ? o / c : s / l, {\n\t\t\tx: n + i * u,\n\t\t\ty: r + a * u\n\t\t};\n\t}\n\tdrawAreas() {\n\t\tthis.areaLayer.destroyChildren();\n\t\tfor (let [, t] of this.areaNodes) {\n\t\t\tif (!isFinite(t.x) || !isFinite(t.y)) continue;\n\t\t\tlet n = t.areaId === this.highlightedArea;\n\t\t\tif (this.dotsMode) {\n\t\t\t\tlet r = t.x + t.width / 2, i = t.y + t.height / 2, a = new e.Group({\n\t\t\t\t\tx: r,\n\t\t\t\t\ty: i,\n\t\t\t\t\tdraggable: !0\n\t\t\t\t}), o = new e.Circle({\n\t\t\t\t\tradius: 6,\n\t\t\t\t\tfill: n ? this.settings.highlightColor : \"#ffffff\",\n\t\t\t\t\tstroke: n ? this.settings.highlightColor : \"#ffffff\",\n\t\t\t\t\tstrokeWidth: 1\n\t\t\t\t}), s = new e.Text({\n\t\t\t\t\ttext: t.name,\n\t\t\t\t\tfontSize: 10,\n\t\t\t\t\tfill: \"#ffffff\",\n\t\t\t\t\tx: 10,\n\t\t\t\t\ty: -5\n\t\t\t\t});\n\t\t\t\ta.add(o), a.add(s), a.on(\"click tap\", () => {\n\t\t\t\t\tthis.emitAreaClickEvent(t.areaId);\n\t\t\t\t}), a.on(\"mouseenter\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"pointer\", o.fill(this.settings.highlightColor), o.stroke(this.settings.highlightColor), this.areaLayer.batchDraw();\n\t\t\t\t}), a.on(\"mouseleave\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"auto\", o.fill(n ? this.settings.highlightColor : \"#ffffff\"), o.stroke(n ? this.settings.highlightColor : \"#ffffff\"), this.areaLayer.batchDraw();\n\t\t\t\t}), a.on(\"dragmove\", () => {\n\t\t\t\t\tt.x = a.x() - t.width / 2, t.y = a.y() - t.height / 2, this.drawConnections(), this.connectionLayer.batchDraw();\n\t\t\t\t}), a.on(\"dragstart\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"grabbing\";\n\t\t\t\t}), a.on(\"dragend\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"pointer\";\n\t\t\t\t}), this.areaLayer.add(a);\n\t\t\t} else {\n\t\t\t\tlet r = new e.Group({\n\t\t\t\t\tx: t.x,\n\t\t\t\t\ty: t.y,\n\t\t\t\t\tdraggable: !0\n\t\t\t\t}), i = new e.Rect({\n\t\t\t\t\twidth: t.width,\n\t\t\t\t\theight: t.height,\n\t\t\t\t\tfill: this.settings.areaFillColor,\n\t\t\t\t\tstroke: n ? this.settings.highlightColor : this.settings.areaStrokeColor,\n\t\t\t\t\tstrokeWidth: n ? 3 : 2,\n\t\t\t\t\tcornerRadius: 8\n\t\t\t\t}), a = new e.Text({\n\t\t\t\t\ttext: t.name,\n\t\t\t\t\tfontSize: this.settings.fontSize,\n\t\t\t\t\tfill: this.settings.textColor,\n\t\t\t\t\twidth: t.width - 10,\n\t\t\t\t\theight: t.height - 20,\n\t\t\t\t\tx: 5,\n\t\t\t\t\ty: 10,\n\t\t\t\t\talign: \"center\",\n\t\t\t\t\tverticalAlign: \"middle\",\n\t\t\t\t\tellipsis: !0,\n\t\t\t\t\twrap: \"word\"\n\t\t\t\t}), o = new e.Text({\n\t\t\t\t\ttext: `${t.roomCount} rooms`,\n\t\t\t\t\tfontSize: 10,\n\t\t\t\t\tfill: this.settings.connectionColor,\n\t\t\t\t\twidth: t.width - 10,\n\t\t\t\t\tx: 5,\n\t\t\t\t\ty: t.height - 18,\n\t\t\t\t\talign: \"center\"\n\t\t\t\t});\n\t\t\t\tr.add(i), r.add(a), r.add(o), r.on(\"click tap\", () => {\n\t\t\t\t\tthis.emitAreaClickEvent(t.areaId);\n\t\t\t\t}), r.on(\"mouseenter\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"pointer\", i.stroke(this.settings.highlightColor), this.areaLayer.batchDraw();\n\t\t\t\t}), r.on(\"mouseleave\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"auto\", i.stroke(n ? this.settings.highlightColor : this.settings.areaStrokeColor), this.areaLayer.batchDraw();\n\t\t\t\t}), r.on(\"dragmove\", () => {\n\t\t\t\t\tt.x = r.x(), t.y = r.y(), this.drawConnections(), this.connectionLayer.batchDraw();\n\t\t\t\t}), r.on(\"dragstart\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"grabbing\";\n\t\t\t\t}), r.on(\"dragend\", () => {\n\t\t\t\t\tthis.stage.container().style.cursor = \"pointer\";\n\t\t\t\t}), this.areaLayer.add(r);\n\t\t\t}\n\t\t}\n\t}\n\tcenterView() {\n\t\tlet e = Infinity, t = Infinity, n = -Infinity, r = -Infinity;\n\t\tfor (let [, i] of this.areaNodes) e = Math.min(e, i.x), t = Math.min(t, i.y), n = Math.max(n, i.x + i.width), r = Math.max(r, i.y + i.height);\n\t\tif (!isFinite(e)) return;\n\t\tlet i = n - e, a = r - t, o = e + i / 2, s = t + a / 2, c = (this.stage.width() - 100) / i, l = (this.stage.height() - 100) / a, u = Math.min(c, l, 1.5);\n\t\tthis.setZoom(u);\n\t\tlet d = this.stage.scaleX();\n\t\tthis.stage.position({\n\t\t\tx: this.stage.width() / 2 - o * d,\n\t\t\ty: this.stage.height() / 2 - s * d\n\t\t});\n\t}\n\thighlightArea(e) {\n\t\tthis.highlightedArea = e, this.drawAreas(), this.stage.batchDraw();\n\t}\n\tcenterOnArea(e) {\n\t\tlet t = this.areaNodes.get(e);\n\t\tif (!t) return;\n\t\tlet n = this.stage.scaleX(), r = t.x + t.width / 2, i = t.y + t.height / 2;\n\t\tthis.stage.position({\n\t\t\tx: this.stage.width() / 2 - r * n,\n\t\t\ty: this.stage.height() / 2 - i * n\n\t\t}), this.stage.batchDraw();\n\t}\n\temitAreaClickEvent(e) {\n\t\tlet t = new CustomEvent(\"areaclick\", { detail: { areaId: e } });\n\t\tthis.stage.container().dispatchEvent(t);\n\t}\n\tgetAreaNode(e) {\n\t\treturn this.areaNodes.get(e);\n\t}\n\tgetConnectionGroups() {\n\t\treturn this.connectionGroups;\n\t}\n\tdestroy() {\n\t\tthis.stage.destroy();\n\t}\n}, Et = class {\n\tget settings() {\n\t\treturn this.renderer.settings;\n\t}\n\tconstructor(e, t) {\n\t\tthis.renderer = new Qe(e, t);\n\t}\n\tdrawArea(e, t) {\n\t\tthis.renderer.drawArea(e, t);\n\t}\n\tgetCurrentArea() {\n\t\treturn this.renderer.getCurrentArea();\n\t}\n\tsetPosition(e) {\n\t\tthis.renderer.state.positionRoomId = e;\n\t}\n\tclearPosition() {\n\t\tthis.renderer.state.positionRoomId = void 0;\n\t}\n\trenderPath(e, t = \"#66E64D\") {\n\t\tthis.renderer.renderPath(e, t);\n\t}\n\tclearPaths() {\n\t\tthis.renderer.clearPaths();\n\t}\n\trenderHighlight(e, t) {\n\t\tthis.renderer.renderHighlight(e, t);\n\t}\n\tremoveHighlight(e) {\n\t\tthis.renderer.removeHighlight(e);\n\t}\n\thasHighlight(e) {\n\t\treturn this.renderer.hasHighlight(e);\n\t}\n\tclearHighlights() {\n\t\tthis.renderer.clearHighlights();\n\t}\n\texportSvg(e) {\n\t\treturn this.renderer.exportSvg(e);\n\t}\n\trenderToCanvas(e) {\n\t\treturn this.renderer.renderToCanvas(e);\n\t}\n\tdestroy() {\n\t\tthis.renderer.destroy();\n\t}\n};\n//#endregion\nexport { Tt as AreaMapRenderer, G as ExplorationArea, Et as HeadlessRenderer, we as KonvaBackend, Je as KonvaRenderBackend, gt as MapGraph, ct as MapReader, Qe as MapRenderer, y as MapState, St as PathFinder, $e as Renderer, at as SketchyBackend, L as Viewport, m as colorLightness, Me as computePathData, wt as createAreaMapSettings, p as createSettings, h as darkenColor, _ as hexToRgba };\n\n//# sourceMappingURL=index.mjs.map","/**\r\n * Preview minimap overlay for the browser-based map viewer.\r\n *\r\n * Shows a low-resolution snapshot of the current area with a viewport\r\n * indicator that reflects the current zoom level and pan position.\r\n */\r\n\r\nimport type {MapRenderer, ViewportBounds} from \"mudlet-map-renderer\";\r\n\r\nconst MAX_SIZE = 400;\r\n\r\nexport class Preview {\r\n private readonly map: HTMLDivElement;\r\n private readonly preview: HTMLElement;\r\n private readonly previewBg: HTMLElement;\r\n private readonly previewPan: HTMLElement;\r\n private readonly pageControls: any;\r\n\r\n private areaBounds: ViewportBounds | null = null;\r\n private timeout: ReturnType<typeof setTimeout> | undefined;\r\n\r\n constructor(map: HTMLDivElement, pageControls: any) {\r\n this.map = map;\r\n this.preview = document.querySelector(\".preview-container\") as HTMLElement;\r\n this.previewBg = document.querySelector(\".preview\") as HTMLElement;\r\n this.previewPan = document.querySelector(\".preview-pan\") as HTMLElement;\r\n this.pageControls = pageControls;\r\n\r\n this.map.addEventListener(\"pan\", (() => {\r\n this.update();\r\n }) as EventListener);\r\n }\r\n\r\n /**\r\n * @param bounds Viewport bounds captured right after fitArea().\r\n * @param pngDataUrl PNG captured at the same fitArea() state, or null.\r\n */\r\n init(bounds: ViewportBounds, pngDataUrl: string | null): void {\r\n this.areaBounds = bounds;\r\n\r\n const areaW = bounds.maxX - bounds.minX;\r\n const areaH = bounds.maxY - bounds.minY;\r\n if (areaW <= 0 || areaH <= 0) {\r\n this.preview.style.opacity = \"0\";\r\n return;\r\n }\r\n\r\n // Size the preview box to match the viewport aspect ratio\r\n const aspect = areaW / areaH;\r\n let boxW: number, boxH: number;\r\n if (aspect >= 1) {\r\n boxW = MAX_SIZE;\r\n boxH = MAX_SIZE / aspect;\r\n } else {\r\n boxH = MAX_SIZE;\r\n boxW = MAX_SIZE * aspect;\r\n }\r\n this.preview.style.width = `${Math.round(boxW)}px`;\r\n this.preview.style.height = `${Math.round(boxH)}px`;\r\n\r\n if (pngDataUrl) {\r\n this.previewBg.style.backgroundImage = `url(${pngDataUrl})`;\r\n this.previewBg.style.backgroundSize = \"100% 100%\";\r\n this.previewBg.style.opacity = \"0.6\";\r\n } else {\r\n this.previewBg.style.backgroundImage = \"\";\r\n this.previewBg.style.opacity = \"\";\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n update(): void {\r\n if (!this.pageControls.pageSettings?.preview) {\r\n return;\r\n }\r\n\r\n this.preview.style.opacity = \"1\";\r\n clearTimeout(this.timeout);\r\n this.timeout = setTimeout(() => {\r\n this.preview.style.opacity = \"0\";\r\n }, 4000);\r\n\r\n const renderer: MapRenderer = this.pageControls.renderer;\r\n if (!renderer || !this.areaBounds) {\r\n return;\r\n }\r\n\r\n const viewport = renderer.getViewportBounds();\r\n\r\n const areaW = this.areaBounds.maxX - this.areaBounds.minX;\r\n const areaH = this.areaBounds.maxY - this.areaBounds.minY;\r\n if (areaW <= 0 || areaH <= 0) return;\r\n\r\n const left = ((viewport.minX - this.areaBounds.minX) / areaW) * 100;\r\n const top = ((viewport.minY - this.areaBounds.minY) / areaH) * 100;\r\n const width = ((viewport.maxX - viewport.minX) / areaW) * 100;\r\n const height = ((viewport.maxY - viewport.minY) / areaH) * 100;\r\n\r\n const clampedLeft = Math.max(0, Math.min(left, 100));\r\n const clampedTop = Math.max(0, Math.min(top, 100));\r\n const clampedRight = Math.min(100, left + width);\r\n const clampedBottom = Math.min(100, top + height);\r\n\r\n this.previewPan.style.left = `${clampedLeft}%`;\r\n this.previewPan.style.top = `${clampedTop}%`;\r\n this.previewPan.style.width = `${Math.max(0, clampedRight - clampedLeft)}%`;\r\n this.previewPan.style.height = `${Math.max(0, clampedBottom - clampedTop)}%`;\r\n }\r\n}\r\n","var e,t;e=this,t=function(){\"use strict\";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;n<arguments.length;n++){var i=null!=arguments[n]?arguments[n]:{};n%2?e(Object(i),!0).forEach((function(e){r(t,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):e(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function n(e){return n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},n(e)}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||o(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function o(e,t){if(e){if(\"string\"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var u=function(e){return\"string\"==typeof e?document.querySelector(e):e()},a=function(e,t){var n=\"string\"==typeof e?document.createElement(e):e;for(var r in t){var i=t[r];if(\"inside\"===r)i.append(n);else if(\"dest\"===r)u(i[0]).insertAdjacentElement(i[1],n);else if(\"around\"===r){var o=i;o.parentNode.insertBefore(n,o),n.append(o),null!=o.getAttribute(\"autofocus\")&&o.focus()}else r in n?n[r]=i:n.setAttribute(r,i)}return n},c=function(e,t){return e=String(e).toLowerCase(),t?e.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g,\"\").normalize(\"NFC\"):e},l=function(e,n){return a(\"mark\",t({innerHTML:e},\"string\"==typeof n&&{class:n})).outerHTML},f=function(e,t){t.input.dispatchEvent(new CustomEvent(e,{bubbles:!0,detail:t.feedback,cancelable:!0}))},p=function(e,t,n){var r=n||{},i=r.mode,o=r.diacritics,s=r.highlight,u=c(t,o);if(t=String(t),e=c(e,o),\"loose\"===i){var a=(e=e.replace(/ /g,\"\")).length,f=0,p=Array.from(t).map((function(t,n){return f<a&&u[n]===e[f]&&(t=s?l(t,s):t,f++),t})).join(\"\");if(f===a)return p}else{var d=u.indexOf(e);if(~d)return e=t.substring(d,d+e.length),d=s?t.replace(e,l(e,s)):t}},d=function(e,t){return new Promise((function(n,r){var i;return(i=e.data).cache&&i.store?n():new Promise((function(e,n){return\"function\"==typeof i.src?i.src(t).then(e,n):e(i.src)})).then((function(t){try{return e.feedback=i.store=t,f(\"response\",e),n()}catch(e){return r(e)}}),r)}))},h=function(e,t){var n=t.data,r=t.searchEngine,i=[];n.store.forEach((function(s,u){var a=function(n){var o=n?s[n]:s,u=\"function\"==typeof r?r(e,o):p(e,o,{mode:r,diacritics:t.diacritics,highlight:t.resultItem.highlight});if(u){var a={match:u,value:s};n&&(a.key=n),i.push(a)}};if(n.keys){var c,l=function(e,t){var n=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=o(e))||t&&e&&\"number\"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,s=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw s}}}}(n.keys);try{for(l.s();!(c=l.n()).done;)a(c.value)}catch(e){l.e(e)}finally{l.f()}}else a()})),n.filter&&(i=n.filter(i));var s=i.slice(0,t.resultsList.maxResults);t.feedback={query:e,matches:i,results:s},f(\"results\",t)},m=\"aria-expanded\",b=\"aria-activedescendant\",y=\"aria-selected\",v=function(e,n){e.feedback.selection=t({index:n},e.feedback.results[n])},g=function(e){e.isOpen||((e.wrapper||e.input).setAttribute(m,!0),e.list.removeAttribute(\"hidden\"),e.isOpen=!0,f(\"open\",e))},w=function(e){e.isOpen&&((e.wrapper||e.input).setAttribute(m,!1),e.input.setAttribute(b,\"\"),e.list.setAttribute(\"hidden\",\"\"),e.isOpen=!1,f(\"close\",e))},O=function(e,t){var n=t.resultItem,r=t.list.getElementsByTagName(n.tag),o=!!n.selected&&n.selected.split(\" \");if(t.isOpen&&r.length){var s,u,a=t.cursor;e>=r.length&&(e=0),e<0&&(e=r.length-1),t.cursor=e,a>-1&&(r[a].removeAttribute(y),o&&(u=r[a].classList).remove.apply(u,i(o))),r[e].setAttribute(y,!0),o&&(s=r[e].classList).add.apply(s,i(o)),t.input.setAttribute(b,r[t.cursor].id),t.list.scrollTop=r[e].offsetTop-t.list.clientHeight+r[e].clientHeight+5,t.feedback.cursor=t.cursor,v(t,e),f(\"navigate\",t)}},A=function(e){O(e.cursor+1,e)},k=function(e){O(e.cursor-1,e)},L=function(e,t,n){(n=n>=0?n:e.cursor)<0||(e.feedback.event=t,v(e,n),f(\"selection\",e),w(e))};function j(e,n){var r=this;return new Promise((function(i,o){var s,u;return s=n||((u=e.input)instanceof HTMLInputElement||u instanceof HTMLTextAreaElement?u.value:u.innerHTML),function(e,t,n){return t?t(e):e.length>=n}(s=e.query?e.query(s):s,e.trigger,e.threshold)?d(e,s).then((function(n){try{return e.feedback instanceof Error?i():(h(s,e),e.resultsList&&function(e){var n=e.resultsList,r=e.list,i=e.resultItem,o=e.feedback,s=o.matches,u=o.results;if(e.cursor=-1,r.innerHTML=\"\",s.length||n.noResults){var c=new DocumentFragment;u.forEach((function(e,n){var r=a(i.tag,t({id:\"\".concat(i.id,\"_\").concat(n),role:\"option\",innerHTML:e.match,inside:c},i.class&&{class:i.class}));i.element&&i.element(r,e)})),r.append(c),n.element&&n.element(r,o),g(e)}else w(e)}(e),c.call(r))}catch(e){return o(e)}}),o):(w(e),c.call(r));function c(){return i()}}))}var S=function(e,t){for(var n in e)for(var r in e[n])t(n,r)},T=function(e){var n,r,i,o=e.events,s=(n=function(){return j(e)},r=e.debounce,function(){clearTimeout(i),i=setTimeout((function(){return n()}),r)}),u=e.events=t({input:t({},o&&o.input)},e.resultsList&&{list:o?t({},o.list):{}}),a={input:{input:function(){s()},keydown:function(t){!function(e,t){switch(e.keyCode){case 40:case 38:e.preventDefault(),40===e.keyCode?A(t):k(t);break;case 13:t.submit||e.preventDefault(),t.cursor>=0&&L(t,e);break;case 9:t.resultsList.tabSelect&&t.cursor>=0&&L(t,e);break;case 27:t.input.value=\"\",w(t)}}(t,e)},blur:function(){w(e)}},list:{mousedown:function(e){e.preventDefault()},click:function(t){!function(e,t){var n=t.resultItem.tag.toUpperCase(),r=Array.from(t.list.querySelectorAll(n)),i=e.target.closest(n);i&&i.nodeName===n&&L(t,e,r.indexOf(i))}(t,e)}}};S(a,(function(t,n){(e.resultsList||\"input\"===n)&&(u[t][n]||(u[t][n]=a[t][n]))})),S(u,(function(t,n){e[t].addEventListener(n,u[t][n])}))};function E(e){var n=this;return new Promise((function(r,i){var o,s,u;if(o=e.placeHolder,u={role:\"combobox\",\"aria-owns\":(s=e.resultsList).id,\"aria-haspopup\":!0,\"aria-expanded\":!1},a(e.input,t(t({\"aria-controls\":s.id,\"aria-autocomplete\":\"both\"},o&&{placeholder:o}),!e.wrapper&&t({},u))),e.wrapper&&(e.wrapper=a(\"div\",t({around:e.input,class:e.name+\"_wrapper\"},u))),s&&(e.list=a(s.tag,t({dest:[s.destination,s.position],id:s.id,role:\"listbox\",hidden:\"hidden\"},s.class&&{class:s.class}))),T(e),e.data.cache)return d(e).then((function(e){try{return c.call(n)}catch(e){return i(e)}}),i);function c(){return f(\"init\",e),r()}return c.call(n)}))}function x(e){var t=e.prototype;t.init=function(){E(this)},t.start=function(e){j(this,e)},t.unInit=function(){if(this.wrapper){var e=this.wrapper.parentNode;e.insertBefore(this.input,this.wrapper),e.removeChild(this.wrapper)}var t;S((t=this).events,(function(e,n){t[e].removeEventListener(n,t.events[e][n])}))},t.open=function(){g(this)},t.close=function(){w(this)},t.goTo=function(e){O(e,this)},t.next=function(){A(this)},t.previous=function(){k(this)},t.select=function(e){L(this,null,e)},t.search=function(e,t,n){return p(e,t,n)}}return function e(t){this.options=t,this.id=e.instances=(e.instances||0)+1,this.name=\"autoComplete\",this.wrapper=1,this.threshold=1,this.debounce=0,this.resultsList={position:\"afterend\",tag:\"ul\",maxResults:5},this.resultItem={tag:\"li\"},function(e){var t=e.name,r=e.options,i=e.resultsList,o=e.resultItem;for(var s in r)if(\"object\"===n(r[s]))for(var a in e[s]||(e[s]={}),r[s])e[s][a]=r[s][a];else e[s]=r[s];e.selector=e.selector||\"#\"+t,i.destination=i.destination||e.selector,i.id=i.id||t+\"_list_\"+e.id,o.id=o.id||t+\"_result\",e.input=u(e.selector)}(this),x.call(this,e),E(this)}},\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).autoComplete=t();\n","import autoComplete from \"@tarekraafat/autocomplete.js\";\r\n\r\ninterface Npc {\r\n name: string;\r\n loc: number;\r\n}\r\n\r\ntype RoomNpcMap = Record<number, string[]>;\r\ntype NpcLocationMap = Record<string, number[]>;\r\n\r\nconst npcs: NpcLocationMap = {};\r\n\r\nconst searchFieldSelector = \"#search-id\";\r\nconst defaultMaxResults = 10;\r\nlet maxResults = defaultMaxResults;\r\n\r\nconst searchField = document.querySelector<HTMLInputElement>(searchFieldSelector);\r\n\r\nexport const downloadNpc = async (): Promise<RoomNpcMap> => {\r\n const roomNpc: RoomNpcMap = {};\r\n const url = searchField?.getAttribute(\"data-npc\");\r\n if (!url) {\r\n return roomNpc;\r\n }\r\n\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch NPCs: ${response.status} ${response.statusText}`);\r\n }\r\n\r\n const data: Npc[] = await response.json();\r\n data.forEach((npc) => {\r\n if (!roomNpc[npc.loc]) {\r\n roomNpc[npc.loc] = [];\r\n }\r\n roomNpc[npc.loc].push(npc.name);\r\n npcs[npc.name] =\r\n npcs[npc.name] && npcs[npc.name].indexOf(npc.loc) === -1\r\n ? npcs[npc.name].concat([npc.loc])\r\n : [npc.loc];\r\n });\r\n\r\n return roomNpc;\r\n};\r\n\r\nexport const findNpc = (name: string): number[] | false => {\r\n return npcs[name] ?? false;\r\n};\r\n\r\nconst ac = new autoComplete({\r\n selector: searchFieldSelector,\r\n data: {\r\n src: async () => {\r\n await downloadNpc();\r\n const items = Object.keys(npcs).map((item) => {\r\n return { value: npcs[item], text: item };\r\n });\r\n return items;\r\n },\r\n keys: [\"text\"],\r\n cache: true,\r\n },\r\n resultItem: {\r\n tag: \"a\",\r\n class: \"dropdown-item\",\r\n selected: \"active\",\r\n highlight: true,\r\n },\r\n resultsList: {\r\n tag: \"div\",\r\n class: \"npc-autocomplete dropdown-menu show\",\r\n maxResults: undefined,\r\n destination: \"#search .advancedAutoComplete\",\r\n },\r\n submit: false,\r\n});\r\n\r\nlet shouldNavigate = true;\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"selection\", function (event: any) {\r\n if (event.detail.selection.value instanceof Function) {\r\n event.detail.selection.value();\r\n } else {\r\n if (event.detail.selection.value && searchField) {\r\n searchField.value = event.detail.selection.value.value;\r\n }\r\n searchField?.form?.requestSubmit();\r\n }\r\n});\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"keyup\", ((event: KeyboardEvent) => {\r\n if (event.keyCode === 13) {\r\n if (shouldNavigate) {\r\n ac.select(0);\r\n }\r\n if (searchField && searchField.value.trim() !== \"\" && !isNaN(Number(searchField.value))) {\r\n searchField.form?.requestSubmit();\r\n }\r\n }\r\n}) as EventListener);\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"navigate\", () => {\r\n shouldNavigate = false;\r\n});\r\n\r\ndocument.querySelector(searchFieldSelector)?.addEventListener(\"results\", function (event: any) {\r\n let list = event.detail.results;\r\n\r\n const length = list.length;\r\n if (length > 0) {\r\n list.sort((a: any, b: any) => {\r\n const aText: string = a.value.text.toLowerCase();\r\n const bText: string = b.value.text.toLowerCase();\r\n const query: string = event.detail.query.toLowerCase();\r\n\r\n if (aText.startsWith(query) && !bText.startsWith(query)) {\r\n return -1;\r\n } else if (!aText.startsWith(event.detail.query) && bText.startsWith(query)) {\r\n return 1;\r\n } else {\r\n return aText.localeCompare(bText);\r\n }\r\n });\r\n list = list.slice(0, maxResults);\r\n if (length > maxResults) {\r\n list.push({\r\n value: function () {\r\n const newMax = maxResults + 10;\r\n ac.start();\r\n maxResults = newMax;\r\n },\r\n match: \"Więcej...\",\r\n });\r\n }\r\n }\r\n\r\n event.detail.results = list;\r\n});\r\n\r\nsearchField?.addEventListener(\"input\", () => {\r\n maxResults = defaultMaxResults;\r\n});\r\n","import Translator from \"@andreasremdt/simple-translator\";\r\nimport {Modal, Toast} from \"bootstrap\";\r\nimport {MapReader, MapRenderer, createSettings, PathFinder, KonvaBackend, SketchyBackend, colorLightness} from \"mudlet-map-renderer\";\r\nimport type {Settings, RoomClickEventDetail, RoomContextMenuEventDetail, AreaExitClickEventDetail, ZoomChangeEventDetail} from \"mudlet-map-renderer\";\r\nimport {Preview} from \"./preview\";\r\nimport {downloadTags, downloadVersion} from \"./versions\";\r\n\r\nconst rainbow = [\"#CC99C9\", \"#9EC1CF\", \"#9EE09E\", \"#FDFD97\", \"#FEB144\", \"#FF6663\"];\r\nlet pathPick = 0;\r\n\r\nconst defaultLanguage = document.querySelector(\"html\")!.getAttribute(\"lang\") ?? \"pl\";\r\n\r\nconst translator = new Translator({\r\n defaultLanguage: defaultLanguage,\r\n detectLanguage: false,\r\n selector: \"[data-i18n]\",\r\n debug: false,\r\n registerGlobally: \"__\",\r\n persist: true,\r\n persistKey: \"preferred_language\",\r\n filesLocation: \"i18n\",\r\n});\r\n(window as any).translator = translator;\r\n\r\nif (location.hostname !== \"\") {\r\n translator\r\n .fetch([defaultLanguage], false)\r\n .then((json: any) => {\r\n const defaultLang: Record<string, string> = {};\r\n document.querySelectorAll(\"[data-i18n]\").forEach(item => {\r\n defaultLang[item.getAttribute(\"data-i18n\")!] = item.innerHTML;\r\n });\r\n translator.add(defaultLanguage, {...defaultLang, ...json});\r\n })\r\n .catch((e: Error) => console.log(`Cannot fetch translations. ${e.message}`));\r\n\r\n translator\r\n .fetch([\"en\"])\r\n .then(() => {\r\n translator.translatePageTo();\r\n })\r\n .catch((e: Error) => console.log(`Cannot fetch translations. ${e.message}`));\r\n} else if (typeof translations !== \"undefined\") {\r\n const defaultLang: Record<string, string> = {};\r\n document.querySelectorAll(\"[data-i18n]\").forEach(item => {\r\n defaultLang[item.getAttribute(\"data-i18n\")!] = item.innerHTML;\r\n });\r\n translator.add(\"pl\", {...defaultLang, ...translations.pl});\r\n translator.add(\"en\", translations.en);\r\n}\r\n\r\nconst urlSearchParams = new URLSearchParams(window.location.search);\r\nconst params = Object.fromEntries(urlSearchParams.entries());\r\nconst url = window.location.origin + window.location.pathname;\r\n\r\nconst svgToDataURL = (svgStr: string): string => {\r\n const encoded = encodeURIComponent(svgStr).replace(/'/g, \"%27\").replace(/\"/g, \"%22\");\r\n return \"data:image/svg+xml,\" + encoded;\r\n};\r\n\r\nfunction toHexColor(color: string): string {\r\n if (color.startsWith(\"#\")) return color;\r\n const match = color.match(/rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/);\r\n if (match) {\r\n const r = parseInt(match[1]).toString(16).padStart(2, \"0\");\r\n const g = parseInt(match[2]).toString(16).padStart(2, \"0\");\r\n const b = parseInt(match[3]).toString(16).padStart(2, \"0\");\r\n return `#${r}${g}${b}`;\r\n }\r\n return color;\r\n}\r\n\r\nimport {downloadNpc, findNpc} from \"./npc\";\r\nlet roomNpc: Record<number, string[]> = {};\r\ndownloadNpc().then(value => (roomNpc = value));\r\n\r\nlet position: {area: number; zIndex: number} | null = null;\r\nconst storedPosition = localStorage.getItem(\"position\");\r\nif (storedPosition) {\r\n position = JSON.parse(storedPosition);\r\n}\r\n\r\ninterface PageSettings {\r\n preview: boolean;\r\n keepZoomLevel: boolean;\r\n disableKeyBinds: boolean;\r\n}\r\n\r\ninterface PathData {\r\n locations: number[];\r\n color: string;\r\n}\r\n\r\nclass PageControls {\r\n map: HTMLDivElement;\r\n reader: MapReader;\r\n renderer: MapRenderer;\r\n pathFinder: PathFinder;\r\n settings: Settings;\r\n pageSettings: PageSettings;\r\n select: HTMLSelectElement;\r\n infoBox: HTMLElement;\r\n levels: HTMLElement;\r\n saveImageButton: HTMLElement | null;\r\n saveSvgImageButton: HTMLElement | null;\r\n copyImageButton: HTMLElement | null;\r\n zoomButtons: NodeListOf<HTMLElement>;\r\n toastContainer: HTMLElement;\r\n searchModal: HTMLElement;\r\n search: HTMLFormElement;\r\n findPathForm: HTMLFormElement | null;\r\n findPathModal: HTMLElement | null;\r\n helpModal: HTMLElement;\r\n zoomBar: HTMLElement;\r\n settingsModal: HTMLElement;\r\n settingsForm: HTMLFormElement;\r\n resetSettingsButton: HTMLElement;\r\n versions: HTMLSelectElement | null;\r\n releaseDescription: HTMLElement;\r\n versionBadge: HTMLElement;\r\n languageSelector: HTMLElement;\r\n currentLanguageFlag: HTMLElement;\r\n pathBox: HTMLElement;\r\n areaModal: HTMLElement | null;\r\n preview: Preview;\r\n areaId: number = 0;\r\n zIndex: number = 0;\r\n zoom: number = 1;\r\n selectedRoom: MapData.Room | null = null;\r\n paths: Record<string, PathData> = {};\r\n progressTimeout: ReturnType<typeof setTimeout> | undefined;\r\n renderMode: string = \"normal\";\r\n\r\n constructor(reader: MapReader) {\r\n this.map = document.querySelector(\"#map\") as HTMLDivElement;\r\n this.reader = reader;\r\n this.settings = createSettings();\r\n this.pathFinder = new PathFinder(this.reader);\r\n\r\n this.pageSettings = {\r\n preview: true,\r\n keepZoomLevel: false,\r\n disableKeyBinds: false,\r\n };\r\n\r\n const loaded = localStorage.getItem(\"settings\");\r\n if (loaded) {\r\n const parsed = JSON.parse(loaded);\r\n // Migrate old field names\r\n if (parsed.mapBackground !== undefined && parsed.backgroundColor === undefined) {\r\n parsed.backgroundColor = parsed.mapBackground;\r\n }\r\n if (parsed.linesColor !== undefined && parsed.lineColor === undefined) {\r\n parsed.lineColor = parsed.linesColor;\r\n }\r\n if (parsed.exitsSize !== undefined && parsed.lineWidth === undefined) {\r\n parsed.lineWidth = parsed.exitsSize;\r\n }\r\n if (parsed.isRound !== undefined && parsed.roomShape === undefined) {\r\n parsed.roomShape = parsed.isRound ? \"circle\" : \"rectangle\";\r\n }\r\n // Scale old integer roomSize values to new float scale\r\n if (parsed.roomSize !== undefined && parsed.roomSize > 5) {\r\n parsed.roomSize = parsed.roomSize / 25;\r\n }\r\n if (parsed.lineWidth !== undefined && parsed.lineWidth > 1) {\r\n parsed.lineWidth = parsed.lineWidth / 100;\r\n }\r\n // Remove obsolete fields before applying\r\n delete parsed.mapBackground;\r\n delete parsed.linesColor;\r\n delete parsed.exitsSize;\r\n delete parsed.isRound;\r\n delete parsed.optimizeDrag;\r\n delete parsed.showLabels;\r\n // Remove old grid defaults so new ones take effect\r\n delete parsed.gridColor;\r\n delete parsed.gridLineWidth;\r\n // Reset areaName to pick up new default (true)\r\n delete parsed.areaName;\r\n\r\n // Apply renderer settings\r\n const defaults = createSettings();\r\n for (const key of Object.keys(defaults)) {\r\n if (parsed[key] !== undefined) {\r\n (this.settings as any)[key] = parsed[key];\r\n }\r\n }\r\n // Apply page settings\r\n if (parsed.preview !== undefined) this.pageSettings.preview = parsed.preview;\r\n if (parsed.keepZoomLevel !== undefined) this.pageSettings.keepZoomLevel = parsed.keepZoomLevel;\r\n if (parsed.disableKeyBinds !== undefined) this.pageSettings.disableKeyBinds = parsed.disableKeyBinds;\r\n if (parsed.renderMode !== undefined) this.renderMode = parsed.renderMode;\r\n }\r\n\r\n this.map.addEventListener(\"roomclick\", ((event: CustomEvent<RoomClickEventDetail>) => {\r\n const room = this.reader.getRoom(event.detail.roomId);\r\n if (room) {\r\n this.selectRoom(room);\r\n }\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"zoom\", ((event: CustomEvent<ZoomChangeEventDetail>) => {\r\n this.adjustZoomBar(event.detail);\r\n this.zoom = event.detail.zoom;\r\n this.preview.update();\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"mapclick\", () => {\r\n this.deselectRoom();\r\n });\r\n\r\n this.map.addEventListener(\"roomcontextmenu\", ((event: CustomEvent<RoomContextMenuEventDetail>) => {\r\n this.renderer.centerOn(event.detail.roomId);\r\n }) as EventListener);\r\n\r\n this.map.addEventListener(\"areaexitclick\", ((event: CustomEvent<AreaExitClickEventDetail>) => {\r\n setTimeout(() => {\r\n if (event.detail.targetRoomId) {\r\n this.findRoom(event.detail.targetRoomId);\r\n }\r\n });\r\n }) as EventListener);\r\n\r\n this.select = document.querySelector(\"#area\") as HTMLSelectElement;\r\n this.infoBox = document.querySelector(\".info-box\")!;\r\n this.levels = document.querySelector(\".levels\")!;\r\n this.saveImageButton = document.querySelector(\".save-image\");\r\n this.saveSvgImageButton = document.querySelector(\".save-image-svg\");\r\n this.copyImageButton = document.querySelector(\".copy-image\");\r\n this.zoomButtons = document.querySelectorAll(\".zoom-controls .btn\");\r\n this.toastContainer = document.querySelector(\".toast\")!;\r\n this.searchModal = document.querySelector(\"#search\")!;\r\n this.search = document.querySelector(\".search-form\") as HTMLFormElement;\r\n this.findPathForm = document.querySelector(\".findpath-form\") as HTMLFormElement | null;\r\n this.findPathModal = document.querySelector(\"#findpath\");\r\n this.helpModal = document.querySelector(\"#help\")!;\r\n this.zoomBar = document.querySelector(\".progress-container\")!;\r\n this.settingsModal = document.querySelector(\"#settings\")!;\r\n this.settingsForm = document.querySelector(\"#settings form\") as HTMLFormElement;\r\n this.resetSettingsButton = document.querySelector(\"#settings button[type='reset']\")!;\r\n this.versions = document.querySelector(\"#versions\") as HTMLSelectElement | null;\r\n this.releaseDescription = document.querySelector(\".release-description\")!;\r\n this.versionBadge = document.querySelector(\".version-number\")!;\r\n this.languageSelector = document.querySelector(\".lang-dropdown\")!;\r\n this.currentLanguageFlag = document.querySelector(\".current-language-flag\")!;\r\n this.pathBox = document.querySelector(\".path-box ul\")!;\r\n this.areaModal = document.getElementById(\"area-info\");\r\n this.preview = new Preview(this.map, this);\r\n\r\n if (this.versions) {\r\n this.versions.addEventListener(\"change\", event => {\r\n const target = event.target as HTMLSelectElement;\r\n this.replaceVersion(target.value);\r\n this.releaseDescription.innerHTML = target.selectedOptions[0].getAttribute(\"data-description\") ?? \"\";\r\n Modal.getInstance(this.helpModal)?.hide();\r\n });\r\n\r\n this.helpModal.addEventListener(\"shown.bs.modal\", () => {\r\n if (this.versions!.children.length == 0) {\r\n (downloadTags(this.versions!.getAttribute(\"data-tags\")!) as Promise<any[]>).then((tags) => {\r\n tags.forEach((tag: any) => {\r\n const option = document.createElement(\"option\");\r\n option.setAttribute(\"value\", tag.tag_name);\r\n option.setAttribute(\"data-description\", (tag.body ?? \"\").replaceAll(\"\\n\\n\", \"\\n\"));\r\n option.innerHTML = tag.tag_name;\r\n this.versions!.append(option);\r\n });\r\n this.releaseDescription.innerHTML = this.versions!.firstElementChild?.getAttribute(\"data-description\") ?? \"\";\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.saveImageButton?.addEventListener(\"click\", () => this.saveImage());\r\n this.saveSvgImageButton?.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.downloadImage();\r\n });\r\n this.copyImageButton?.addEventListener(\"click\", () => this.copyImage());\r\n\r\n this.zoomButtons.forEach(item =>\r\n item.addEventListener(\"click\", event => {\r\n const delta = parseFloat((event.currentTarget as HTMLElement).getAttribute(\"data-factor\")!);\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * delta);\r\n })\r\n );\r\n\r\n this.search.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.submitSearch();\r\n });\r\n\r\n this.findPathForm?.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.submitPathFind();\r\n });\r\n\r\n this.findPathModal?.addEventListener(\"shown.bs.modal\", () => {\r\n (this.findPathModal!.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.searchModal.addEventListener(\"shown.bs.modal\", () => {\r\n (this.searchModal.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.settingsModal.addEventListener(\"show.bs.modal\", () => {\r\n this.populateSettings();\r\n });\r\n\r\n this.settingsModal.addEventListener(\"shown.bs.modal\", () => {\r\n (this.settingsModal.querySelector(\"input\") as HTMLInputElement)?.focus();\r\n });\r\n\r\n this.settingsForm.addEventListener(\"submit\", event => {\r\n event.preventDefault();\r\n this.handleSaveSettings();\r\n });\r\n\r\n this.resetSettingsButton.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.resetSettings();\r\n });\r\n\r\n this.areaModal?.addEventListener(\"show.bs.modal\", () => {\r\n this.populateAreaInfo(this.areaId, this.zIndex);\r\n });\r\n\r\n this.translatePage();\r\n this.languageSelector.querySelectorAll(\"a\").forEach(element => {\r\n element.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.translatePage((element as HTMLElement).getAttribute(\"data-lang\") ?? undefined);\r\n });\r\n });\r\n\r\n this.renderer = new MapRenderer(this.reader, this.settings, this.map);\r\n }\r\n\r\n getEffectiveBackground(): string {\r\n return this.renderMode === \"pencil\" ? '#ffffff' : this.settings.backgroundColor;\r\n }\r\n\r\n applyBackground() {\r\n const bg = this.getEffectiveBackground();\r\n document.querySelector(\"body\")!.style.background = bg;\r\n this.map.style.backgroundColor = bg;\r\n // Also override any child divs the renderer may have created\r\n for (const child of Array.from(this.map.children) as HTMLElement[]) {\r\n child.style.backgroundColor = bg;\r\n }\r\n const isLight = colorLightness(bg) > 0.5;\r\n const filter = isLight ? 'invert(1)' : '';\r\n const logo = document.getElementById(\"logo\");\r\n const title = document.getElementById(\"title\");\r\n if (logo) logo.style.filter = filter;\r\n if (title) title.style.filter = filter;\r\n }\r\n\r\n applyRenderMode(mode: string) {\r\n this.renderMode = mode;\r\n this.settings.frameMode = mode === \"frame\";\r\n this.settings.coloredMode = mode === \"colored\";\r\n\r\n if (mode === \"pencil\") {\r\n const jitter = this.settings.lineWidth * 0.6;\r\n this.renderer.setDrawingBackend(new SketchyBackend(new KonvaBackend(), jitter, '#444444'));\r\n } else {\r\n this.renderer.setDrawingBackend(new KonvaBackend());\r\n }\r\n\r\n this.renderer.refresh();\r\n this.applyBackground();\r\n }\r\n\r\n init() {\r\n // Apply saved render mode after renderer is ready\r\n if (this.renderMode !== \"normal\") {\r\n this.applyRenderMode(this.renderMode);\r\n }\r\n\r\n if (params.version && this.versions) {\r\n this.replaceVersion(params.version);\r\n history.replaceState(null, \"\", url);\r\n return;\r\n }\r\n\r\n let area = this.reader.getAreas()[0].getAreaId();\r\n let zIdx = 0;\r\n if (params.loc) {\r\n this.findRoom(parseInt(params.loc));\r\n history.replaceState(null, \"\", url);\r\n } else {\r\n if (params.area) {\r\n area = parseInt(params.area);\r\n history.replaceState(null, \"\", url);\r\n } else if (position !== null && position.area) {\r\n area = position.area;\r\n zIdx = position.zIndex;\r\n }\r\n this.renderArea(area, zIdx);\r\n }\r\n }\r\n\r\n handleSaveSettings() {\r\n const formData: Record<string, any> = {};\r\n\r\n this.settingsModal.querySelectorAll<HTMLInputElement>(\"#nav-map input\").forEach(element => {\r\n const name = element.getAttribute(\"name\");\r\n if (!name) return;\r\n const type = element.getAttribute(\"type\");\r\n if (type === \"checkbox\") {\r\n formData[name] = element.checked;\r\n } else if (type === \"number\") {\r\n formData[name] = parseFloat(element.value);\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n });\r\n\r\n this.settingsModal.querySelectorAll<HTMLSelectElement>(\"#nav-map select[name]\").forEach(element => {\r\n const name = element.getAttribute(\"name\");\r\n if (name) formData[name] = element.value;\r\n });\r\n\r\n // Handle merged label render mode (data-transparent → data + transparentLabels)\r\n if (formData.labelRenderMode === \"data-transparent\") {\r\n formData.labelRenderMode = \"data\";\r\n formData.transparentLabels = true;\r\n } else if (formData.labelRenderMode !== undefined) {\r\n formData.transparentLabels = false;\r\n }\r\n\r\n // Apply renderer settings (only known keys)\r\n const defaults = createSettings();\r\n for (const key of Object.keys(defaults)) {\r\n if (formData[key] !== undefined) {\r\n (this.settings as any)[key] = formData[key];\r\n }\r\n }\r\n // Update page settings\r\n if (formData.preview !== undefined) this.pageSettings.preview = formData.preview;\r\n if (formData.keepZoomLevel !== undefined) this.pageSettings.keepZoomLevel = formData.keepZoomLevel;\r\n if (formData.disableKeyBinds !== undefined) this.pageSettings.disableKeyBinds = formData.disableKeyBinds;\r\n\r\n // Handle render mode (maps to frameMode/coloredMode/pencil)\r\n if (formData.renderMode !== undefined) {\r\n this.applyRenderMode(formData.renderMode);\r\n }\r\n\r\n this.showToast(translator.translateForKey(\"settings-saved\", translator.currentLanguage));\r\n Modal.getInstance(this.settingsModal)?.hide();\r\n this.saveSettings();\r\n this.render(true);\r\n }\r\n\r\n saveSettings() {\r\n localStorage.setItem(\"settings\", JSON.stringify({\r\n ...this.settings,\r\n ...this.pageSettings,\r\n renderMode: this.renderMode,\r\n }));\r\n }\r\n\r\n render(force?: boolean) {\r\n return this.renderArea(parseInt(this.select.value), this.zIndex, force);\r\n }\r\n\r\n renderArea(areaId: number, zIndex: number, force?: boolean): boolean {\r\n if (this.areaId !== areaId || this.zIndex !== zIndex || force) {\r\n this.areaId = areaId;\r\n this.zIndex = zIndex;\r\n\r\n localStorage.setItem(\"position\", JSON.stringify({area: areaId, zIndex: zIndex}));\r\n this.renderer.updateBackground();\r\n this.applyBackground();\r\n this.renderer.drawArea(areaId, zIndex);\r\n this.renderer.fitArea();\r\n\r\n // Capture preview data at fitArea() state before any zoom override\r\n const previewBounds = this.renderer.getViewportBounds();\r\n const previewPng = this.renderer.exportPng({pixelRatio: 0.25}) ?? null;\r\n\r\n const area = this.reader.getArea(areaId);\r\n this.select.value = String(areaId);\r\n if (area) {\r\n this.populateLevelButtons(area.getZLevels(), zIndex);\r\n }\r\n this.hideRoomInfo();\r\n\r\n // Re-render paths on the new area\r\n this.reRenderAllPaths();\r\n\r\n this.renderer.clearHighlights();\r\n if (this.pageSettings.keepZoomLevel && this.zoom) {\r\n this.renderer.zoomToCenter(this.zoom);\r\n }\r\n\r\n this.preview.init(previewBounds, previewPng);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n genericSetup() {\r\n document.querySelectorAll(\".btn\").forEach(element =>\r\n element.addEventListener(\"click\", () => (element as HTMLElement).blur())\r\n );\r\n }\r\n\r\n populateLevelButtons(levels: number[], zIndex: number) {\r\n this.levels.innerHTML = \"\";\r\n if (levels.length <= 1) {\r\n return;\r\n }\r\n const levelsSorted = levels.slice().sort((a, b) => a - b);\r\n\r\n if (levelsSorted.length > 10) {\r\n const container = document.createElement(\"div\");\r\n container.classList.add(\"dropdown\");\r\n const button = document.createElement(\"button\");\r\n button.classList.add(\"btn\", \"btn-secondary\", \"dropdown-toggle\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"data-bs-toggle\", \"dropdown\");\r\n button.append(document.createTextNode(String(zIndex)));\r\n const menu = document.createElement(\"div\");\r\n menu.classList.add(\"dropdown-menu\");\r\n container.append(button);\r\n container.append(menu);\r\n for (const level of levelsSorted) {\r\n const link = document.createElement(\"a\");\r\n link.classList.add(\"dropdown-item\", \"btn-level\");\r\n link.setAttribute(\"href\", \"#\");\r\n link.setAttribute(\"data-level\", String(level));\r\n link.append(document.createTextNode(String(level)));\r\n menu.append(link);\r\n }\r\n this.levels.append(container);\r\n } else {\r\n for (const level of levelsSorted) {\r\n const button = document.createElement(\"button\");\r\n button.setAttribute(\"type\", \"button\");\r\n button.setAttribute(\"data-level\", String(level));\r\n button.classList.add(\"btn\", \"btn-level\");\r\n if (level === zIndex) {\r\n button.classList.add(\"btn-primary\");\r\n } else {\r\n button.classList.add(\"btn-secondary\");\r\n }\r\n button.append(document.createTextNode(String(level)));\r\n this.levels.append(button);\r\n }\r\n }\r\n this.levels.querySelectorAll(\".btn-level\").forEach(item => {\r\n item.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n const zIdx = parseInt((event.target as HTMLElement).getAttribute(\"data-level\")!);\r\n this.renderArea(parseInt(this.select.value), zIdx);\r\n });\r\n });\r\n }\r\n\r\n populateAreaInfo(areaId: number, zIndex: number) {\r\n const area = this.reader.getArea(areaId);\r\n if (!area) return;\r\n this.areaModal!.querySelector(\".area-name\")!.innerHTML = `${area.getAreaName()} (id: ${area.getAreaId()})`;\r\n const rooms = area.getRooms();\r\n this.areaModal!.querySelector(\".area-room-count\")!.innerHTML = String(rooms.length);\r\n const areaExits = this.areaModal!.querySelector(\".area-exits\")!;\r\n areaExits.innerHTML = \"\";\r\n rooms.flatMap(room => this.getAreaExits(room)).forEach(([id, targetId]) => {\r\n const targetArea = this.reader.getArea(this.reader.getRoom(targetId)?.area ?? 0);\r\n const li = document.createElement(\"li\");\r\n const roomLink = document.createElement(\"a\");\r\n roomLink.setAttribute(\"href\", \"#\");\r\n roomLink.setAttribute(\"data-room\", String(id));\r\n roomLink.appendChild(document.createTextNode(String(id)));\r\n roomLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n const arrow = document.createTextNode(\" -> \");\r\n const targetLink = document.createElement(\"a\");\r\n targetLink.setAttribute(\"href\", \"#\");\r\n targetLink.setAttribute(\"data-room\", String(targetId));\r\n targetLink.appendChild(document.createTextNode(`${targetId} (${targetArea?.getAreaName() ?? \"?\"})`));\r\n targetLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n li.append(roomLink, arrow, targetLink);\r\n areaExits.appendChild(li);\r\n });\r\n }\r\n\r\n getAreaExits(room: MapData.Room): [number, number][] {\r\n const areaExits: [number, number][] = [];\r\n Object.values(room.exits).filter(target => this.isExitTarget(target)).forEach(exitId => areaExits.push([room.id, exitId]));\r\n Object.values(room.specialExits).filter(target => this.isExitTarget(target)).forEach(exitId => areaExits.push([room.id, exitId]));\r\n return areaExits;\r\n }\r\n\r\n isExitTarget(destinationRoom: number): boolean {\r\n const destRoom = this.reader.getRoom(destinationRoom);\r\n if (!destRoom) return false;\r\n const currentArea = this.renderer.getCurrentArea();\r\n return destRoom.area !== currentArea?.getAreaId();\r\n }\r\n\r\n populateSelectBox() {\r\n this.select.querySelectorAll(\"option\").forEach(item => item.remove());\r\n this.reader\r\n .getAreas()\r\n .filter(area => area.getRooms().length > 0 && area.getAreaName() !== undefined && area.getAreaName() !== \"\")\r\n .sort((a, b) => {\r\n const nameA = a.getAreaName().toLowerCase();\r\n const nameB = b.getAreaName().toLowerCase();\r\n if (nameA < nameB) return -1;\r\n if (nameA > nameB) return 1;\r\n return 0;\r\n })\r\n .forEach(areaElement => {\r\n if (!areaElement.getRooms().length) {\r\n return;\r\n }\r\n this.select.append(new Option(areaElement.getAreaName(), String(areaElement.getAreaId())));\r\n });\r\n this.select.addEventListener(\"change\", event => {\r\n this.renderArea(parseInt((event.target as HTMLSelectElement).value), 0);\r\n });\r\n }\r\n\r\n submitSearch() {\r\n Modal.getInstance(this.searchModal)?.hide();\r\n const inputs = this.search.querySelectorAll(\"input\");\r\n\r\n const formData: Record<string, string> = {};\r\n inputs.forEach(element => {\r\n formData[element.name] = element.value;\r\n element.value = \"\";\r\n });\r\n\r\n if (formData.roomId !== undefined) {\r\n let roomId: any = formData.roomId.split(\",\");\r\n if (isNaN(roomId[0])) {\r\n roomId = findNpc(roomId);\r\n }\r\n this.findRooms(roomId);\r\n }\r\n }\r\n\r\n submitPathFind() {\r\n Modal.getInstance(this.findPathModal!)?.hide();\r\n const inputs = this.findPathForm!.querySelectorAll(\"input\");\r\n\r\n const formData: Record<string, string> = {};\r\n inputs.forEach(element => {\r\n formData[element.name] = element.value;\r\n element.value = \"\";\r\n });\r\n if (this.findPath(formData[\"start-loc\"], formData[\"end-loc\"])) {\r\n this.findRoom(parseInt(formData[\"start-loc\"]));\r\n }\r\n }\r\n\r\n findRoom(id: number) {\r\n if (!id) {\r\n return;\r\n }\r\n const room = this.reader.getRoom(id);\r\n if (room) {\r\n const areaChanged = this.renderArea(room.area, room.z);\r\n this.renderer.setZoom(0.5);\r\n this.renderer.centerOn(id, areaChanged);\r\n this.selectRoom(room);\r\n } else {\r\n this.showToast(translator.translateForKey(\"location-not-found\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n findRooms(rooms: (string | number)[]) {\r\n const firstRoom = this.reader.getRoom(parseInt(String(rooms[0])));\r\n if (firstRoom) {\r\n const areaChanged = this.renderArea(firstRoom.area, firstRoom.z);\r\n this.renderer.setZoom(0.5);\r\n this.renderer.centerOn(firstRoom.id, areaChanged);\r\n this.selectRoom(firstRoom);\r\n // Also highlight additional rooms if multiple\r\n if (rooms.length > 1) {\r\n rooms.slice(1).forEach(roomId => {\r\n this.renderer.renderHighlight(parseInt(String(roomId)), \"#FFFF00\");\r\n });\r\n }\r\n } else {\r\n this.showToast(translator.translateForKey(\"location-not-found\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n findPath(from: string, to: string): boolean {\r\n const key = `${from}#${to}`;\r\n const existingColor = (this.pathBox.querySelector(`[data-path-key='${key}'] input[type='color']`) as HTMLInputElement)?.value;\r\n const pathColor = existingColor ?? rainbow[pathPick++ % rainbow.length];\r\n\r\n const pathLocations = this.pathFinder.findPath(parseInt(from), parseInt(to));\r\n if (!pathLocations) {\r\n this.showToast(translator.translateForKey(\"no-path\", translator.currentLanguage));\r\n pathPick--;\r\n return false;\r\n }\r\n\r\n this.paths[key] = {locations: pathLocations, color: pathColor};\r\n this.reRenderAllPaths();\r\n\r\n if (!this.pathBox.querySelector(`[data-path-key='${key}']`)) {\r\n const pathSelector = document.createElement(\"li\");\r\n pathSelector.classList.add(\"list-group-item\", \"d-inline-flex\", \"align-items-center\", \"position-relative\");\r\n pathSelector.setAttribute(\"data-path-key\", key);\r\n\r\n const color = document.createElement(\"input\");\r\n color.setAttribute(\"type\", \"color\");\r\n color.classList.add(\"small-color\", \"me-2\");\r\n color.value = pathColor;\r\n color.addEventListener(\"input\", () => {\r\n this.paths[key].color = color.value;\r\n this.reRenderAllPaths();\r\n });\r\n pathSelector.appendChild(color);\r\n\r\n pathSelector.appendChild(document.createTextNode(`${from} -> ${to}`));\r\n\r\n const deletePath = document.createElement(\"span\");\r\n deletePath.classList.add(\"badge\", \"bg-secondary\", \"position-absolute\", \"end-0\", \"me-2\");\r\n deletePath.appendChild(document.createTextNode(translator.translateForKey(\"delete\", translator.currentLanguage)));\r\n deletePath.onclick = () => {\r\n delete this.paths[key];\r\n this.reRenderAllPaths();\r\n pathSelector.remove();\r\n\r\n if (Object.keys(this.paths).length === 0) {\r\n this.pathBox.parentElement!.classList.add(\"invisible\");\r\n }\r\n };\r\n pathSelector.appendChild(deletePath);\r\n this.pathBox.appendChild(pathSelector);\r\n this.pathBox.parentElement!.classList.remove(\"invisible\");\r\n }\r\n return true;\r\n }\r\n\r\n reRenderAllPaths() {\r\n this.renderer.clearPaths();\r\n Object.entries(this.paths).forEach(([key, pathData]) => {\r\n const colorEl = (this.pathBox.querySelector(`[data-path-key='${key}'] input[type='color']`) as HTMLInputElement);\r\n const color = colorEl?.value ?? pathData.color;\r\n this.renderer.renderPath(pathData.locations, color);\r\n });\r\n }\r\n\r\n adjustZoomBar(detail: ZoomChangeEventDetail) {\r\n const minZoom = 0.1;\r\n const maxZoom = 5;\r\n const percentage = (detail.zoom - minZoom) / (maxZoom - minZoom);\r\n\r\n (this.zoomBar.querySelector(\".progress-bar\") as HTMLElement).style.width = percentage * 100 + \"%\";\r\n if (!this.zoomBar.classList.contains(\"visible\")) {\r\n this.zoomBar.classList.add(\"visible\");\r\n this.zoomBar.classList.remove(\"hidden\");\r\n this.progressTimeout = setTimeout(() => {\r\n this.zoomBar.classList.add(\"hidden\");\r\n this.zoomBar.classList.remove(\"visible\");\r\n }, 3000);\r\n } else {\r\n if (this.progressTimeout !== undefined) {\r\n clearTimeout(this.progressTimeout);\r\n this.progressTimeout = undefined;\r\n }\r\n this.progressTimeout = setTimeout(() => {\r\n this.zoomBar.classList.add(\"hidden\");\r\n this.zoomBar.classList.remove(\"visible\");\r\n }, 3000);\r\n }\r\n }\r\n\r\n selectRoom(room: MapData.Room) {\r\n this.renderer.clearHighlights();\r\n this.selectedRoom = room;\r\n this.renderer.updatePositionMarker(room.id);\r\n this.showRoomInfo(room);\r\n }\r\n\r\n deselectRoom() {\r\n this.selectedRoom = null;\r\n this.renderer.clearHighlights();\r\n this.renderer.clearPosition();\r\n this.hideRoomInfo();\r\n }\r\n\r\n showRoomInfo(room: MapData.Room) {\r\n const bgColor = this.reader.getColorValue(room.env);\r\n this.infoBox.style.border = `2px solid ${bgColor.replace(\"rgb(\", \"rgba(\").replace(\")\", \", 0.5)\")}`;\r\n this.infoBox.style.display = \"initial\";\r\n this.infoBox.querySelector(\".room-id\")!.innerHTML = String(room.id);\r\n (this.infoBox.querySelector(\".room-link\") as HTMLAnchorElement).setAttribute(\"href\", `${url}?loc=${room.id}`);\r\n this.infoBox.querySelector(\".room-name\")!.innerHTML = room.name;\r\n this.infoBox.querySelector(\".room-env\")!.innerHTML = String(room.env);\r\n this.infoBox.querySelector(\".coord-x\")!.innerHTML = String(room.x);\r\n this.infoBox.querySelector(\".coord-y\")!.innerHTML = String(room.y);\r\n this.infoBox.querySelector(\".coord-z\")!.innerHTML = String(room.z);\r\n this.infoBox.querySelector(\".room-hash\")!.innerHTML = room.hash ?? \"\";\r\n\r\n this.infoExitsGroup(this.infoBox.querySelector(\".exits\")!, room.exits);\r\n this.infoExitsGroup(this.infoBox.querySelector(\".special\")!, room.specialExits);\r\n\r\n this.userDataGroup(this.infoBox.querySelector(\".userData\")!, room.userData);\r\n this.npcDataGroup(this.infoBox.querySelector(\".npc\")!, roomNpc[room.id] || []);\r\n }\r\n\r\n userDataGroup(container: HTMLElement, userData: Record<string, string>) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const userDataKey in userData) {\r\n show = true;\r\n const dataElement = document.createElement(\"li\");\r\n dataElement.classList.add(\"user-data\");\r\n const key = document.createElement(\"p\");\r\n key.append(`${userDataKey}:`);\r\n const value = document.createElement(\"p\");\r\n value.append(`${userData[userDataKey].replaceAll(\"\\\\n\", \"\\n\")}`);\r\n value.className = \"value\";\r\n dataElement.append(key, value);\r\n containerList.append(dataElement);\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n infoExitsGroup(container: HTMLElement, exits: Record<string, number>) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const exit in exits) {\r\n show = true;\r\n containerList.append(this.infoExit(exit, exits[exit]));\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n npcDataGroup(container: HTMLElement, npcs: string[]) {\r\n const containerList = container.querySelector(\"ul\")!;\r\n containerList.innerHTML = \"\";\r\n let show = false;\r\n for (const npc of npcs) {\r\n show = true;\r\n const element = document.createElement(\"li\");\r\n element.append(document.createTextNode(npc));\r\n containerList.append(element);\r\n }\r\n container.style.display = show ? \"initial\" : \"none\";\r\n }\r\n\r\n infoExit(exit: string, id: number): HTMLElement {\r\n const exitElement = document.createElement(\"li\");\r\n\r\n const exitDir = document.createElement(\"span\");\r\n exitDir.setAttribute(\"data-i18n\", exit);\r\n exitDir.innerHTML = this.translateDir(exit);\r\n exitElement.append(exitDir);\r\n exitElement.append(document.createTextNode(\": \"));\r\n\r\n const link = document.createElement(\"a\");\r\n link.setAttribute(\"href\", \"#\");\r\n link.setAttribute(\"data-room\", String(id));\r\n link.innerHTML = String(id);\r\n link.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n exitElement.append(link);\r\n\r\n const destRoom = this.reader.getRoom(id);\r\n if (destRoom) {\r\n const currentArea = this.renderer.getCurrentArea();\r\n if (destRoom.area !== currentArea?.getAreaId()) {\r\n const area = this.reader.getArea(destRoom.area);\r\n exitElement.append(document.createTextNode(\" -> \"));\r\n const areaLink = document.createElement(\"a\");\r\n areaLink.setAttribute(\"href\", \"#\");\r\n areaLink.setAttribute(\"data-room\", String(destRoom.id));\r\n areaLink.innerHTML = area?.getAreaName() ?? \"?\";\r\n areaLink.addEventListener(\"click\", event => {\r\n event.preventDefault();\r\n this.findRoom(parseInt((event.currentTarget as HTMLElement).getAttribute(\"data-room\")!));\r\n });\r\n exitElement.append(areaLink);\r\n }\r\n }\r\n\r\n return exitElement;\r\n }\r\n\r\n showToast(text: string) {\r\n this.toastContainer.querySelector(\".toast-body\")!.innerHTML = text;\r\n Toast.getOrCreateInstance(this.toastContainer).show();\r\n }\r\n\r\n translateDir(dir: string): string {\r\n return translator.translateForKey(dir) ?? dir;\r\n }\r\n\r\n translatePage(lang?: string) {\r\n this.currentLanguageFlag.classList.remove(`flag-${translator.currentLanguage}`);\r\n if (lang) {\r\n translator.translatePageTo(lang);\r\n }\r\n this.currentLanguageFlag.classList.add(`flag-${translator.currentLanguage}`);\r\n }\r\n\r\n hideRoomInfo() {\r\n this.infoBox.style.display = \"none\";\r\n }\r\n\r\n populateSettings() {\r\n const allSettings: Record<string, any> = {...this.settings, ...this.pageSettings, renderMode: this.renderMode};\r\n // Merge transparentLabels back into labelRenderMode for the select\r\n if (allSettings.labelRenderMode === \"data\" && allSettings.transparentLabels) {\r\n allSettings.labelRenderMode = \"data-transparent\";\r\n }\r\n const mapTab = this.settingsModal.querySelector(\"#nav-map\");\r\n if (!mapTab) return;\r\n\r\n for (const setting in allSettings) {\r\n // Try input first\r\n const input = mapTab.querySelector(`input[name='${setting}']`) as HTMLInputElement | null;\r\n if (input) {\r\n if (input.getAttribute(\"type\") === \"checkbox\") {\r\n input.checked = allSettings[setting];\r\n } else if (input.getAttribute(\"type\") === \"color\") {\r\n input.value = toHexColor(allSettings[setting]);\r\n } else {\r\n input.value = allSettings[setting];\r\n }\r\n continue;\r\n }\r\n // Try select\r\n const select = mapTab.querySelector(`select[name='${setting}']`) as HTMLSelectElement | null;\r\n if (select) {\r\n select.value = allSettings[setting];\r\n }\r\n }\r\n }\r\n\r\n resetSettings() {\r\n const defaults = createSettings();\r\n const allDefaults: Record<string, any> = {\r\n ...defaults,\r\n preview: true,\r\n keepZoomLevel: false,\r\n disableKeyBinds: false,\r\n renderMode: \"normal\",\r\n };\r\n const mapTab = this.settingsModal.querySelector(\"#nav-map\");\r\n if (!mapTab) return;\r\n\r\n for (const setting in allDefaults) {\r\n const input = mapTab.querySelector(`input[name='${setting}']`) as HTMLInputElement | null;\r\n if (input) {\r\n if (input.getAttribute(\"type\") === \"checkbox\") {\r\n input.checked = allDefaults[setting];\r\n } else if (input.getAttribute(\"type\") === \"color\") {\r\n input.value = toHexColor(allDefaults[setting]);\r\n } else {\r\n input.value = allDefaults[setting];\r\n }\r\n continue;\r\n }\r\n const select = mapTab.querySelector(`select[name='${setting}']`) as HTMLSelectElement | null;\r\n if (select) {\r\n select.value = allDefaults[setting];\r\n }\r\n }\r\n }\r\n\r\n saveImage() {\r\n const pngUrl = this.renderer.exportPng();\r\n if (!pngUrl) return;\r\n const a = document.createElement(\"a\");\r\n a.setAttribute(\"href\", pngUrl);\r\n a.setAttribute(\"download\", (this.renderer.getCurrentArea()?.getAreaName() ?? \"map\") + \".png\");\r\n document.querySelector(\"body\")!.append(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n downloadImage() {\r\n const svg = this.renderer.exportSvg();\r\n if (!svg) return;\r\n const a = document.createElement(\"a\");\r\n a.setAttribute(\"href\", svgToDataURL(svg));\r\n a.setAttribute(\"download\", (this.renderer.getCurrentArea()?.getAreaName() ?? \"map\") + \".svg\");\r\n document.querySelector(\"body\")!.append(a);\r\n a.click();\r\n a.remove();\r\n }\r\n\r\n copyImage() {\r\n if (typeof ClipboardItem !== \"undefined\") {\r\n const blobPromise = this.renderer.exportPngBlob();\r\n if (blobPromise) {\r\n blobPromise.then(blob =>\r\n navigator.clipboard.write([new ClipboardItem({\"image/png\": blob})])\r\n );\r\n }\r\n this.showToast(translator.translateForKey(\"copied\", translator.currentLanguage));\r\n } else {\r\n this.showToast(translator.translateForKey(\"no-clipboard\", translator.currentLanguage));\r\n }\r\n }\r\n\r\n goDirection(directionKey: string) {\r\n const fullDirection = dirsShortToLong(directionKey);\r\n if (this.selectedRoom && this.selectedRoom.exits[fullDirection as MapData.direction]) {\r\n this.findRoom(this.selectedRoom.exits[fullDirection as MapData.direction]);\r\n }\r\n }\r\n\r\n registerKeyBoard() {\r\n const directionKeys: Record<string, string> = {\r\n Numpad1: \"sw\",\r\n Numpad2: \"s\",\r\n Numpad3: \"se\",\r\n Numpad4: \"w\",\r\n Numpad6: \"e\",\r\n Numpad7: \"nw\",\r\n Numpad8: \"n\",\r\n Numpad9: \"ne\",\r\n NumpadMultiply: \"u\",\r\n NumpadDivide: \"d\",\r\n };\r\n\r\n window.addEventListener(\"keydown\", event => {\r\n if (this.pageSettings.disableKeyBinds) {\r\n return;\r\n }\r\n\r\n if (event.code === \"F1\") {\r\n event.preventDefault();\r\n this.showHelp();\r\n }\r\n\r\n if (event.ctrlKey && event.code === \"KeyF\") {\r\n event.preventDefault();\r\n this.showSearch();\r\n }\r\n });\r\n\r\n window.addEventListener(\"keydown\", event => {\r\n if (document.querySelector(\"input:focus\") || this.pageSettings.disableKeyBinds) {\r\n return;\r\n }\r\n\r\n if (event.ctrlKey && event.code === \"KeyS\") {\r\n this.saveImage();\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === \"Equal\") {\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * 1.1);\r\n event.preventDefault();\r\n }\r\n\r\n if (event.code === \"Minus\") {\r\n this.renderer.zoomToCenter(this.renderer.getZoom() * 0.9);\r\n event.preventDefault();\r\n }\r\n\r\n if (directionKeys.hasOwnProperty(event.code)) {\r\n this.goDirection(directionKeys[event.code]);\r\n event.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n showHelp() {\r\n Modal.getOrCreateInstance(this.helpModal).show();\r\n }\r\n\r\n showSearch() {\r\n Modal.getOrCreateInstance(this.searchModal).show();\r\n }\r\n\r\n replaceVersion(tag: string) {\r\n downloadVersion(tag, this.versions!.getAttribute(\"data-files\")!).then(data => {\r\n this.reader = new MapReader(data as MapData.Map, colors);\r\n this.pathFinder = new PathFinder(this.reader);\r\n this.renderer = new MapRenderer(this.reader, this.settings, this.map);\r\n if (this.renderMode !== \"normal\") this.applyRenderMode(this.renderMode);\r\n this.populateSelectBox();\r\n this.renderArea(this.areaId, this.zIndex, true);\r\n this.showToast(`Przeladowano wersje na ${tag}`);\r\n this.versionBadge.innerHTML = `v${tag}`;\r\n this.versionBadge.style.display = \"initial\";\r\n });\r\n }\r\n}\r\n\r\nconst controls = new PageControls(new MapReader(mapData, colors));\r\n(window as any).controls = controls;\r\ncontrols.genericSetup();\r\ncontrols.populateSelectBox();\r\ncontrols.init();\r\ncontrols.registerKeyBoard();\r\n\r\nconst dirs: Record<string, string> = {\r\n north: \"n\",\r\n south: \"s\",\r\n east: \"e\",\r\n west: \"w\",\r\n northeast: \"ne\",\r\n northwest: \"nw\",\r\n southeast: \"se\",\r\n southwest: \"sw\",\r\n up: \"u\",\r\n down: \"d\",\r\n};\r\n\r\nfunction getKeyByValue(obj: Record<string, string>, val: string): string | undefined {\r\n for (const k in obj) {\r\n if (obj.hasOwnProperty(k) && obj[k] === val) {\r\n return k;\r\n }\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction dirsShortToLong(dir: string): string {\r\n const result = getKeyByValue(dirs, dir);\r\n return result !== undefined ? result : dir;\r\n}\r\n","export const downloadTags = async (url: string): Promise<unknown> => {\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch tags: ${response.status} ${response.statusText}`);\r\n }\r\n return response.json();\r\n};\r\n\r\nexport const downloadVersion = async (tag: string, address: string): Promise<unknown> => {\r\n const url = address.replace(\"%tag%\", tag);\r\n const response = await fetch(url);\r\n if (!response.ok) {\r\n throw new Error(`Failed to fetch version: ${response.status} ${response.statusText}`);\r\n }\r\n return response.json();\r\n};\r\n"],"names":["t","e","Symbol","iterator","constructor","prototype","n","length","r","enumerable","configurable","writable","Object","defineProperty","key","a","Array","o","INVALID_PARAM_LANGUAGE","concat","INVALID_PARAM_JSON","EMPTY_PARAM_LANGUAGE","EMPTY_PARAM_JSON","INVALID_PARAM_KEY","NO_LANGUAGE_REGISTERED","TRANSLATION_NOT_FOUND","INVALID_PARAMETER_SOURCES","FETCH_ERROR","url","status","statusText","INVALID_ENVIRONMENT","MODULE_NOT_FOUND","MISMATCHING_ATTRIBUTES","join","outerHTML","INVALID_OPTIONS","i","arguments","u","TypeError","apply","c","isArray","call","next","done","push","value","return","toString","slice","name","from","test","stack","split","g","f","console","error","message","this","debug","languages","Map","config","assign","defaultConfig","registerGlobally","s","detectLanguage","_globalObject","translateForKey","bind","_env","_detectLanguage","get","window","global","module","exports","localStorage","getItem","persistKey","defaultLanguage","navigator","language","substr","reduce","getAttribute","forEach","_getValueFromJSON","setAttribute","has","selector","document","querySelectorAll","_replace","_currentLanguage","documentElement","lang","persist","setItem","keys","set","delete","map","replace","filesLocation","Promise","all","fetch","then","ok","json","filter","add","JSON","parse","require","readFileSync","process","cwd","top","bottom","right","left","auto","basePlacements","start","end","clippingParents","viewport","popper","reference","variationPlacements","acc","placement","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","element","nodeName","toLowerCase","getWindow","node","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","applyStyles$1","enabled","phase","fn","_ref","state","elements","style","styles","attributes","removeAttribute","effect","_ref2","initialStyles","position","options","strategy","margin","arrow","hasOwnProperty","property","attribute","requires","getBasePlacement","max","Math","min","round","getUAString","uaData","userAgentData","brands","item","brand","version","userAgent","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","width","offsetHeight","height","visualViewport","addVisualOffsets","x","offsetLeft","y","offsetTop","getLayoutRect","abs","contains","parent","child","rootNode","getRootNode","isSameNode","parentNode","host","getComputedStyle","isTableElement","indexOf","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","getMainAxisFromPlacement","within","mathMax","mathMin","mergePaddingObject","paddingObject","expandToHashMap","hashMap","arrow$1","_state$modifiersData$","arrowElement","popperOffsets","modifiersData","basePlacement","axis","len","padding","rects","toPaddingObject","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","clientHeight","clientWidth","centerToReference","center","offset","axisProp","centerOffset","_options$element","querySelector","requiresIfExists","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","_ref4","dpr","devicePixelRatio","roundOffsetsByDPR","computeStyles$1","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","data","passive","eventListeners","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","addEventListener","update","removeEventListener","hash","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","pageXOffset","scrollTop","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","body","listScrollParents","list","_element$ownerDocumen","isBody","target","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","html","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","contextElement","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","flip$1","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","sort","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","find","reset","getSideOffsets","preventedOffsets","isAnySideFullyClipped","some","side","hide$1","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","offset$1","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","popperOffsets$1","preventOverflow$1","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","v","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","order","modifiers","visited","Set","result","modifier","dep","depModifier","DEFAULT_OPTIONS","areValidElements","args","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","pending","orderedModifiers","effectCleanupFns","isDestroyed","setOptions","setOptionsAction","cleanupModifierEffects","merged","orderModifiers","current","existing","m","_ref3$options","cleanupFn","noopFn","forceUpdate","_state$elements","index","_state$orderedModifie","_state$orderedModifie2","resolve","destroy","onFirstUpdate","createPopper","computeStyles","applyStyles","flip","hide","TRANSITION_END","toType","object","match","getSelector","hrefAttribute","includes","startsWith","trim","getSelectorFromElement","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","jquery","nodeType","getElement","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","attachShadow","root","noop","reflow","getjQuery","jQuery","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","NAME","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","readyState","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","setTimeout","getNextActiveElement","activeElement","shouldGetNext","isCycleAllowed","listLength","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","values","event","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","oneOff","relatedTarget","delegateTarget","wrapFunction","handlers","previousFunction","domElements","domElement","hydrateObj","EventHandler","off","type","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","keyHandlers","trigger","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","entries","_unused","elementMap","Data","instanceMap","size","remove","normalizeData","decodeURIComponent","normalizeDataKey","chr","Manipulator","setDataAttribute","removeDataAttribute","getDataAttributes","bsKeys","dataset","pureKey","charAt","getDataAttribute","Config","Default","DefaultType","Error","_getConfig","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","configTypes","expectedTypes","valueType","RegExp","toUpperCase","BaseComponent","super","_element","_config","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","VERSION","eventName","enableDismissTrigger","component","method","clickEvent","tagName","EVENT_KEY$b","EVENT_CLOSE","EVENT_CLOSED","Alert","close","_destroyElement","each","SELECTOR_DATA_TOGGLE$5","Button","toggle","button","SelectorEngine","findOne","children","matches","parents","ancestor","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","EVENT_KEY$9","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERDOWN","EVENT_POINTERUP","Default$c","endCallback","leftCallback","rightCallback","DefaultType$c","Swipe","isSupported","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","pointerType","maxTouchPoints","EVENT_KEY$8","DATA_API_KEY$5","ARROW_LEFT_KEY$1","ARROW_RIGHT_KEY$1","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN$1","EVENT_MOUSEENTER$1","EVENT_MOUSELEAVE$1","EVENT_DRAG_START","EVENT_LOAD_DATA_API$3","EVENT_CLICK_DATA_API$5","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE$2","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","Default$b","interval","keyboard","pause","ride","touch","wrap","DefaultType$b","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","items","_getItems","activeIndex","_getItemIndex","_getActive","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","isNext","nextElement","nextElementIndex","triggerEvent","_orderToDirection","isCycling","directionalClassName","orderClassName","_isAnimated","clearInterval","carousel","slideIndex","carousels","EVENT_KEY$7","EVENT_SHOW$6","EVENT_SHOWN$6","EVENT_HIDE$6","EVENT_HIDDEN$6","EVENT_CLICK_DATA_API$4","CLASS_NAME_SHOW$7","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_DEEPER_CHILDREN","SELECTOR_DATA_TOGGLE$4","Default$a","DefaultType$a","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","selected","triggerArray","isOpen","selectorElements","NAME$a","EVENT_KEY$6","DATA_API_KEY$3","ARROW_UP_KEY$1","ARROW_DOWN_KEY$1","EVENT_HIDE$5","EVENT_HIDDEN$5","EVENT_SHOW$5","EVENT_SHOWN$5","EVENT_CLICK_DATA_API$3","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","CLASS_NAME_SHOW$6","SELECTOR_DATA_TOGGLE$3","SELECTOR_DATA_TOGGLE_SHOWN","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","Default$9","autoClose","display","popperConfig","DefaultType$9","Dropdown","_popper","_parent","_menu","_inNavbar","_detectNavbar","_createPopper","focus","_completeHide","Popper","referenceElement","_getPopperConfig","Popper.createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","_selectMenuItem","clearMenus","openToggles","context","composedPath","isMenuTarget","dataApiKeydownHandler","isInput","isEscapeEvent","isUpOrDownEvent","getToggleButton","stopPropagation","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","PROPERTY_PADDING","PROPERTY_MARGIN","ScrollBarHelper","getWidth","documentWidth","innerWidth","_disableOverFlow","_setElementAttributes","calculatedValue","_resetElementAttributes","isOverflowing","_saveInitialAttribute","styleProperty","scrollbarWidth","_applyManipulationCallback","setProperty","actualValue","removeProperty","callBack","sel","NAME$9","CLASS_NAME_SHOW$5","EVENT_MOUSEDOWN","Default$8","className","clickCallback","rootElement","DefaultType$8","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","EVENT_KEY$5","EVENT_FOCUSIN$2","EVENT_KEYDOWN_TAB","TAB_NAV_BACKWARD","Default$7","autofocus","trapElement","DefaultType$7","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","shiftKey","EVENT_KEY$4","EVENT_HIDE$4","EVENT_HIDE_PREVENTED$1","EVENT_HIDDEN$4","EVENT_SHOW$4","EVENT_SHOWN$4","EVENT_RESIZE$1","EVENT_CLICK_DISMISS","EVENT_MOUSEDOWN_DISMISS","EVENT_KEYDOWN_DISMISS$1","EVENT_CLICK_DATA_API$2","CLASS_NAME_OPEN","CLASS_NAME_SHOW$4","CLASS_NAME_STATIC","Default$6","DefaultType$6","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_scrollBar","_adjustDialog","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","_triggerBackdropTransition","event2","_resetAdjustments","isModalOverflowing","initialOverflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","alreadyOpen","EVENT_KEY$3","DATA_API_KEY$1","EVENT_LOAD_DATA_API$2","CLASS_NAME_SHOW$3","CLASS_NAME_SHOWING$1","CLASS_NAME_HIDING","OPEN_SELECTOR","EVENT_SHOW$3","EVENT_SHOWN$3","EVENT_HIDE$3","EVENT_HIDE_PREVENTED","EVENT_HIDDEN$3","EVENT_RESIZE","EVENT_CLICK_DATA_API$1","EVENT_KEYDOWN_DISMISS","Default$5","DefaultType$5","Offcanvas","blur","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attributeName","nodeValue","attributeRegex","regex","DefaultAllowlist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","li","ol","p","pre","small","span","sub","sup","strong","ul","Default$4","allowList","content","extraClass","sanitize","sanitizeFn","template","DefaultType$4","DefaultContentType","entry","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","innerHTML","_maybeSanitize","text","_setContent","arg","templateElement","_putElementInTemplate","textContent","unsafeHtml","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","sanitizeHtml","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE$2","CLASS_NAME_SHOW$2","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$3","animation","container","customClass","delay","title","DefaultType$3","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","click","_leave","_enter","_hideModalHandler","_disposePopper","_isWithContent","isInTheDom","_getTipElement","_isWithActiveTrigger","_getTitle","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","prefix","floor","random","getElementById","getUID","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","attachment","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","SELECTOR_TITLE","SELECTOR_CONTENT","Default$2","DefaultType$2","Popover","_getContent","EVENT_KEY$2","EVENT_ACTIVATE","EVENT_CLICK","EVENT_LOAD_DATA_API$1","CLASS_NAME_ACTIVE$1","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LINKS","SELECTOR_LINK_ITEMS","Default$1","rootMargin","smoothScroll","threshold","DefaultType$1","ScrollSpy","_targetLinks","_observableSections","_rootElement","_activeTarget","_observer","_previousScrollData","visibleEntryTop","parentScrollTop","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","disconnect","_getNewObserver","section","observe","observableSection","scrollTo","behavior","IntersectionObserver","_observerCallback","targetElement","id","_process","userScrollsDown","isIntersecting","_clearActiveClass","entryIsLowerThanPrevious","targetLinks","anchor","_activateParents","listGroup","activeNodes","spy","EVENT_KEY$1","EVENT_HIDE$1","EVENT_HIDDEN$1","EVENT_SHOW$1","EVENT_SHOWN$1","EVENT_CLICK_DATA_API","EVENT_KEYDOWN","EVENT_LOAD_DATA_API","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","CLASS_NAME_ACTIVE","CLASS_NAME_FADE$1","CLASS_NAME_SHOW$1","NOT_SELECTOR_DROPDOWN_TOGGLE","SELECTOR_DATA_TOGGLE","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","active","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleDropDown","nextActiveElement","preventScroll","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","open","EVENT_MOUSEOVER","EVENT_MOUSEOUT","EVENT_FOCUSIN","EVENT_FOCUSOUT","EVENT_HIDE","EVENT_HIDDEN","EVENT_SHOW","EVENT_SHOWN","CLASS_NAME_HIDE","CLASS_NAME_SHOW","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","PI_OVER_180","PI","glob","WorkerGlobalScope","self","Konva","_global","isBrowser","isUnminified","param","dblClickWindow","getAngle","angle","angleDeg","enableTrace","pointerEventsEnabled","autoDrawEnabled","hitOnDragEnabled","capturePointerEventsEnabled","_mouseListenClick","_touchListenClick","_pointerListenClick","_mouseInDblClickWindow","_touchInDblClickWindow","_pointerInDblClickWindow","_mouseDblClickPointerId","_touchDblClickPointerId","_pointerDblClickPointerId","_renderBackend","legacyTextRendering","pixelRatio","dragDistance","showWarnings","dragButtons","isDragging","isTransforming","_a","_b","isDragReady","releaseCanvasOnDestroy","_injectGlobal","_registerNode","NodeClass","getClassName","ensureBrowser","Transform","dirty","copy","copyInto","tr","point","translate","scale","sx","sy","rotate","rad","cos","sin","m11","m12","m21","m22","getTranslation","skew","matrix","dx","dy","invert","d","m0","m1","m2","m3","m4","m5","getMatrix","decompose","delta","rotation","skewX","skewY","sqrt","acos","Util","_getRotation","PI_OVER_DEG180","DEG180_OVER_PI","HASH","KONVA_ERROR","COLORS","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","transparent","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","RGB_REGEX","animQueue","_isCanvasFarblingActive","req","requestAnimationFrame","_isElement","_isFunction","_isPlainObject","_isArray","_isNumber","isNaN","isFinite","_isString","_isBoolean","isObject","val","isValidSelector","firstChar","_sign","number","requestAnimFrame","queue","cb","createCanvasElement","canvas","createImageElement","_isInDocument","_urlToImage","imageObj","onload","src","_rgbToHex","_hexToRgb","hex","bigint","getRandomColor","randColor","isCanvasFarblingActive","ctx","getContext","willReadFrequently","clearRect","fillStyle","fillRect","getImageData","isFarbling","releaseCanvas","getHitColor","color","getSnappedHexColor","getHitColorKey","rgb","getRGB","substring","exec","colorToRGBA","str","_namedColorToRBA","_hex3ColorToRGBA","_hex4ColorToRGBA","_hex6ColorToRGBA","_hex8ColorToRGBA","_rgbColorToRGBA","_rgbaColorToRGBA","_hslColorToRGBA","parts","_","hsl","h","l","t2","t3","t1","haveIntersection","r1","r2","cloneObject","retObj","cloneArray","arr","degToRad","deg","radToDeg","_degToRad","warn","_radToDeg","radians","_capitalize","func","_inRange","_getProjectionToSegment","x1","y1","x2","y2","x3","y3","dist","pd2","_getProjectionToLine","pt","line","isClosed","pc","MAX_VALUE","p1","p2","proj","px","py","pdist","_prepareArrayForTween","startArray","endArray","temp","newStart","pr","_prepareToStringify","desc","visitedByCircularReferenceRemoval","getOwnPropertyDescriptor","_assign","source","_getFirstPointerId","changedTouches","identifier","pointerId","canvases","drawRoundedRectPath","cornerRadius","xOrigin","yOrigin","topLeft","topRight","bottomLeft","bottomRight","moveTo","lineTo","arc","drawRoundedPolygonPath","points","sides","radius","curr","vec1","vec2","len1","hypot","len2","currCornerRadius","normalVec1","normalVec2","arcTo","CONTEXT_METHODS","_pixelRatio","_cssFiltersSupported","isCSSFiltersSupported","Context","traceArr","_enableTrace","fillShape","shape","fillEnabled","_fill","strokeShape","hasStroke","_stroke","fillStrokeShape","attrs","fillAfterStrokeEnabled","getTrace","relaxed","rounded","trace","clearTrace","_trace","shift","getCanvas","getPixelRatio","setTransform","clear","bounds","getHeight","_applyLineCap","lineCap","setAttr","_applyOpacity","absOpacity","getAbsoluteOpacity","_applyLineJoin","lineJoin","_applyMiterLimit","miterLimit","attr","_context","startAngle","endAngle","counterClockwise","beginPath","bezierCurveTo","cp1x","cp1y","cp2x","cp2y","clip","closePath","createImageData","createLinearGradient","x0","y0","createPattern","image","repetition","createRadialGradient","r0","drawImage","sWidth","sHeight","dWidth","dHeight","ellipse","radiusX","radiusY","counterclockwise","isPointInPath","path","fillRule","fill","strokeRect","fillText","maxWidth","measureText","sw","sh","roundRect","radii","putImageData","imageData","quadraticCurveTo","cpx","cpy","restore","save","setLineDash","segments","getLineDash","stroke","path2d","strokeText","that","origSetter","methodName","ret","origMethod","retArr","util","simplifyArray","prop","_applyGlobalCompositeOperation","op","globalCompositeOperation","SceneContext","_canvas","_fillColor","_fillFunc","_fillPattern","_getFillPattern","_fillLinearGradient","grd","_getLinearGradient","_fillRadialGradient","_getRadialGradient","hasColor","fillPriority","getFillPriority","hasPattern","getFillPatternImage","hasLinearGradient","getFillLinearGradientColorStops","hasRadialGradient","getFillRadialGradientColorStops","_strokeLinearGradient","getStrokeLinearGradientStartPoint","getStrokeLinearGradientEndPoint","colorStops","getStrokeLinearGradientColorStops","addColorStop","dash","strokeScaleEnabled","getStrokeScaleEnabled","dashEnabled","dashOffset","strokeWidth","getShadowForStrokeEnabled","_strokeFunc","_applyShadow","_c","getShadowRGBA","getShadowBlur","getShadowOffset","getAbsoluteScale","ratio","HitContext","colorKey","_fillFuncHit","hasHitStroke","hitStrokeWidth","_strokeFuncHit","Canvas","isCache","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","getDevicePixelRatio","border","background","setPixelRatio","previousRatio","setSize","setWidth","setHeight","toDataURL","mimeType","quality","err","SceneCanvas","HitCanvas","hitCanvas","DD","flag","_dragElements","dragStatus","justDragged","_drag","nodesToFireEvents","stage","getStage","setPointersPositions","pos","_changedPointerPositions","startPointerPos","startDrag","_setDragPosition","fire","_endDragBefore","drawNodes","drawNode","getLayer","draw","_endDragAfter","_formatValue","RGBComponent","getNumberValidator","getNumberOrArrayOfNumbersValidator","noOfElements","isNumber","isValidArray","getNumberOrAutoValidator","getStringValidator","getStringOrGradientValidator","isString","isGradient","getBooleanValidator","GET","SET","Factory","addGetterSetter","def","validator","after","addGetter","addSetter","addOverloadedGetterSetter","overWriteSetter","_setAttr","addComponentsGetterSetter","components","capitalize","getter","setter","getAttr","basicValidator","getComponentValidator","oldVal","_fireChangeEvent","capitalizedAttr","addDeprecatedGetterSetter","backCompat","methods","oldMethodName","newMethodName","oldGetter","oldSetter","deprecated","afterSetFilter","_filterUpToDate","parseCSSFilters","cssFilter","filterRegex","filterName","filterValue","blurRadius","KonvaFilters","Filters","Blur","brightness","Brightness","contrast","konvaContrast","Contrast","Grayscale","Sepia","Invert","ABSOLUTE_OPACITY","ALL_LISTENERS","ABSOLUTE_TRANSFORM","ABSOLUTE_SCALE","CANVAS","LISTENING","SHAPE","SPACE","STAGE","TRANSFORM","VISIBLE","TRANSFORM_CHANGE_STR","idCounter","Node$1","_id","_allEventListeners","_cache","_attachedDepsListeners","_lastPos","_batchingTransformChange","_needClearTransformCache","_isUnderCache","_dragEventId","_shouldFireChangeEvents","setAttrs","hasChildren","_clearCache","_getCache","privateGetter","cache","_calculate","deps","depsString","_getCanvasCache","_clearSelfAndDescendantCache","clearCache","scene","hit","_requestDraw","conf","getClientRect","skipTransform","relativeTo","getParent","ceil","drawBorder","hitCanvasPixelRatio","cachedSceneCanvas","cachedFilterCanvas","cachedHitCanvas","sceneContext","hitContext","bufferCanvas","bufferContext","imageSmoothingEnabled","drawScene","drawHit","isCached","_transformedRect","minX","Infinity","minY","maxX","maxY","trans","getAbsoluteTransform","transformed","_drawCachedSceneCanvas","canvasCache","cacheCanvas","_getCachedSceneCanvas","_drawCachedHitCanvas","filters","cachedCanvas","sceneCanvas","filterCanvas","filterContext","useNativeOnly","finalFilter","evtStr","selectorOrHandler","_delegate","baseEvent","_off","stopNode","targets","findAncestors","currentTarget","stopDrag","isAncestorOf","_remove","_clearCaches","splice","_setChildrenIndices","getAncestors","ancestors","getAttrs","_batchTransformChanges","isListening","_isListening","listening","_isVisible","visible","shouldDrawHit","skipDragCheck","layer","layerUnderDrag","dragSkip","getZIndex","getAbsoluteZIndex","nodes","depth","getDepth","addChildren","getChildren","setPosition","getPosition","getRelativePointerPosition","getPointerPosition","getAbsolutePosition","haveCachedParent","absoluteMatrix","absoluteTransform","setAbsolutePosition","origTrans","_clearTransform","it","_getAbsoluteTransform","_setTransform","offsetX","offsetY","move","change","changeX","changeY","_eachAncestorReverse","family","unshift","theta","moveToTop","moveUp","moveDown","moveToBottom","setZIndex","zIndex","_getAbsoluteOpacity","opacity","newContainer","toObject","defaultValue","nonPlainObject","toJSON","stringify","includeSelf","res","_isMatch","findAncestor","selectorArr","hasName","_getStage","eventType","bubble","_fireAndBubble","_fire","at","transformsEnabled","getTransform","getAbsoluteRotation","_getTransform","clone","allListeners","listener","_toKonvaCanvas","box","toCanvas","toImage","reject","toBlob","blob","getSize","getType","getDragDistance","evtName","evtListeners","newVal","addName","oldName","newName","fullName","removeName","names","batchDraw","_setComponentAttr","compareShape","nonBubbling","stopBubble","cancelBubble","_getProtoListeners","protoListenerMap","getPrototypeOf","hierarchyEvents","topListeners","selfListeners","origLen","liveListeners","_createDragElement","ap","_getPointerById","startEvent","bubbleEvent","newNodePos","dbf","dragBoundFunc","bounded","setDraggable","draggable","_dragChange","_listenDrag","_dragCleanup","hasDraggingChild","dragElement","isReady","isClientRectOnScreen","screenRect","create","_createNode","no","Class","_attrsAffectingSize","rotateDeg","setRotationDeg","getRotationDeg","Container","filterFunc","removeChildren","destroyChildren","_validateAdd","_generalFind","_descendants","valid","shouldStop","getAllIntersections","intersects","can","caching","_drawChildren","drawMethod","clipWidth","clipHeight","clipFunc","hasClip","selfCache","clipArgs","clipX","clipY","hasComposition","selfRect","skipShadow","skipStroke","shapes","hasVisible","Captures","SUPPORT_POINTER_EVENTS","getCapturedShape","createEvent","hasPointerCapture","setPointerCapture","releaseCapture","MOUSELEAVE","MOUSEOVER","MOUSEENTER","MOUSEMOVE","MOUSEDOWN","MOUSEUP","POINTERMOVE","POINTERDOWN","POINTERUP","POINTERCANCEL","POINTEROUT","POINTERLEAVE","POINTEROVER","POINTERENTER","CONTEXTMENU","TOUCHSTART","TOUCHEND","TOUCHMOVE","TOUCHCANCEL","WHEEL","EVENTS","EVENTS_MAP","mouse","pointerclick","pointerdblclick","pointer","getEventType","getEventsMap","checkNoClip","stages","Stage","_pointerPositions","_buildDOM","_bindContentEvents","_resizeDOM","_checkVisibility","isLayer","isFastLayer","throw","setContainer","getElementsByClassName","parentElement","removeChild","appendChild","layers","bufferHitCanvas","getPointersPositions","layerCanvas","getIntersection","rest","PointerEvents.hasPointerCapture","PointerEvents.setPointerCapture","PointerEvents.releaseCapture","getLayers","_pointerenter","pointerenter","_pointerover","pointerover","_getTargetShape","evenType","_pointerleave","targetShape","eventsEnabled","pointerout","pointerleave","pointerPos","_pointerdown","triggeredOnShape","pointerdown","isTouch","_pointermove","isTouchPointer","processedShapesIds","PointerEvents.getCapturedShape","differentTarget","pointermove","_pointerup","clickStartShape","clickEndShape","skipPointerUpTrigger","fireDblClick","pointerup","_contextmenu","_wheel","_pointercancel","PointerEvents.createEvent","_lostpointercapture","contentPosition","_getContentPosition","clientY","_setPointerPosition","userSelect","HAS_SHADOW","SHADOW_RGBA","patternImage","linearGradient","radialGradient","dummyContext","getDummyContext","Shape","attempts","getSceneFunc","sceneFunc","getHitFunc","hitFunc","hasShadow","_hasShadow","shadowEnabled","shadowOpacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY","__getFillPattern","fillPatternImage","pattern","fillPatternRepeat","fillPatternX","fillPatternY","fillPatternRotation","fillPatternScaleX","fillPatternScaleY","fillPatternOffsetX","fillPatternOffsetY","DOMMatrix","__getLinearGradient","fillLinearGradientColorStops","fillLinearGradientStartPoint","fillLinearGradientEndPoint","__getRadialGradient","fillRadialGradientColorStops","fillRadialGradientStartPoint","fillRadialGradientEndPoint","fillRadialGradientStartRadius","fillRadialGradientEndRadius","_getShadowRGBA","rgba","hasFill","strokeEnabled","strokeLinearGradientColorStops","_useBufferCanvas","forceFill","perfectDrawEnabled","isTransparent","strokeForShadow","shadowForStrokeEnabled","setStrokeHitEnabled","getStrokeHitEnabled","getSelfRect","_centroid","hasCachedParent","fillAndStrokeWidth","fillAndStrokeHeight","applyShadow","preWidth","preHeight","drawFunc","cachingSelf","bc","drawHitFromCache","alphaThreshold","hitWidth","hitHeight","hitImageData","hitData","rgbColorKey","dashArray","getDashArray","setDashArray","getDrawFunc","setDrawFunc","drawHitFunc","getDrawHitFunc","setDrawHitFunc","INTERSECTION_OFFSETS","INTERSECTION_OFFSETS_LEN","Layer","_waitingForDraw","_setSmoothEnabled","createPNGStream","getNativeCanvasElement","getHitCanvas","insertBefore","spiralSearchDistance","continueSearch","intersectionOffset","_getIntersection","antialiased","p3","clearBeforeDraw","enableHitGraph","hitGraphEnabled","disableHitGraph","setHitGraphEnabled","getHitGraphEnabled","toggleHitCanvas","FastLayer","Group","now","performance","Date","getTime","Animation","animIdCounter","frame","time","timeDiff","lastTime","frameRate","setLayers","lays","addLayer","isRunning","animations","stop","_addAnimation","_removeAnimation","_updateFrameObject","anim","_handleAnimation","_runFrames","layerHash","layersLen","needRedraw","_animationLoop","Anim","animRunning","blacklist","duration","easing","onFinish","yoyo","colorAttrs","TweenEngine","propFunc","begin","finish","_pos","_change","prevPos","_time","_position","_startTime","_finish","setTime","reverse","play","getTimer","onEnterFrame","seek","Tween","nodeId","Easings","Linear","tween","_tweenFunc","_addListeners","tweens","_addAttr","onReset","onUpdate","diff","trueEnd","trueStart","endRGBA","tweenId","closed","startRGBA","onPlay","onReverse","onPause","thisId","params","BackEaseIn","BackEaseOut","BackEaseInOut","ElasticEaseIn","asin","pow","ElasticEaseOut","ElasticEaseInOut","BounceEaseOut","BounceEaseIn","BounceEaseInOut","EaseIn","EaseOut","EaseInOut","StrongEaseIn","StrongEaseOut","StrongEaseInOut","Global","Arc","_sceneFunc","clockwise","outerRadius","innerRadius","boundLeftRatio","boundTopRatio","boundBottomRatio","boundLeft","boundTop","boundBottom","getControlPoints","d01","d12","fa","fb","expandPoints","tension","allPoints","cp","getBezierExtremaPoints","axisPoints","extremaTs","discriminant","flatMap","mt","Line","bezier","tp","getTensionPoints","_getTensionPoints","_getTensionPointsClosed","firstControlPoints","lastControlPoints","middle","TypedArray","Int8Array","getNumberArrayValidator","tValues","cValues","binomialCoefficients","getCubicArcLength","xs","ys","sum","correctedT","z","BFunc","getQuadraticArcLength","ax","ay","bx","by","A","B","C","k","uuk","bbk","term","log","xbase","getDerivative","ybase","combined","derivative","vs","_vs","t2length","totalLength","step","numIterations","increasedTLength","increasedTError","decreasedTLength","decreasedTError","Path","dataArray","pathLength","_readDataAttribute","parsePathData","getPathLength","ca","command","cx","cy","rx","ry","dTheta","psi","fs","inc","getPointOnEllipticalArc","getPointOnCubicBezier","getLength","getPointAtLength","getPointAtLengthOfDataArray","getLineLength","ii","getPointOnLine","getPointOnQuadraticBezier","P1x","P1y","P2x","P2y","fromX","fromY","run","rise","ix","iy","pRise","pRun","adjustedRun","pct","P3x","P3y","P4x","P4y","CB1","CB2","CB3","CB4","QB1","QB2","QB3","cosPsi","sinPsi","cs","cc","coords","re","arcParamIndex","j","jlen","token","parsedArc","parsed","cmd","startX","startY","prevCmd","ctlPtx","ctlPty","idx","convertEndpointToCenterParameterization","calcLength","psiDeg","xp","yp","lambda","cxp","cyp","vMag","vRatio","vAngle","Arrow","PI2","fromTension","pointerLength","lp","lastLength","atan2","pointerWidth","pointerAtEnding","__fillStroke","pointerAtBeginning","isDashEnabled","lineRect","Circle","Ellipse","Image","_loadListener","props","_removeImageLoad","_setImageLoad","complete","hasCornerRadius","cropWidth","cropHeight","cropX","cropY","_hitFunc","fromURL","onError","onerror","crossOrigin","ATTR_CHANGE_LIST","UP","DOWN","attrChangeListLen","Label","_sync","getText","getTag","pointerDirection","pointerHeight","tag","Tag","Rect","RegularPolygon","_getPoints","PIx2","Ring","Sprite","_updated","updated","frameIndex","_setInterval","ix4","frameOffsets","ix2","_updateIndex","getIndex","setIndex","Star","numPoints","stringToArray","string","char","array","nextChar","INHERIT","JUSTIFY","MIDDLE","NORMAL","NONE","_shadowOpacityBuggy","Text","checkDefaultFill","_partialTextX","_partialTextY","_setTextData","textArr","textArrLen","fontSize","lineHeightPx","lineHeight","verticalAlign","alignY","align","totalWidth","letterSpacing","charRenderFunc","textDecoration","underlineOffset","shouldUnderline","shouldLineThrough","translateY","baseline","metrics","measureSize","fontBoundingBoxAscent","actualBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxDescent","_getContextFont","lineTranslateX","lineTranslateY","lastLine","lastInParagraph","lineWidth","gradient","strokeStyle","lineThroughStartX","_partialText","spacesNumber","letter","lineIndex","column","isLastInLine","yOffset","setText","getTextWidth","textWidth","getTextHeight","textHeight","_d","_e","_f","_g","_h","_j","_k","_l","font","scaleFactor","actualBoundingBoxLeft","actualBoundingBoxRight","alphabeticBaseline","emHeightAscent","emHeightDescent","hangingBaseline","ideographicBaseline","fontStyle","fontVariant","fontFamily","hasSpace","hasQuotes","_addTextLine","_getTextWidth","lines","fixedWidth","fixedHeight","maxHeightPx","currentHeightPx","wrapAtWord","shouldAddEllipsis","ellipsis","additionalWidth","low","high","matchWidth","mid","substrWidth","lineArray","matchArray","wrapIndex","lastSpaceIndex","lastIndexOf","lastDashIndex","trimRight","_shouldHandleEllipsis","_tryToAddEllipsisToLastLine","trimLeft","hasLine","globalAlpha","hasShadowOpacityBug","partialText","TextPath","dummyCanvas","_getTextPathLength","_getPointAtLength","textBaseline","glyphInfo","hasUnderline","hasLineThrough","p0","_getTextSize","charArr","chars","fullTextWidth","kerningFunc","kerningAdjustment","offsetToGlyph","charStartPoint","glyphWidth","numberOfSpaces","charEndLength","charEndPoint","kern","midpoint","transposeX","transposeY","info","EVENTS_NAME","NODES_RECT","ANGLES","TOUCH_DEVICE","ANCHORS_NAMES","rotateAroundPoint","angleRad","rotateAroundCenter","deltaRad","getCenter","activeTransformersCount","Transformer","_movingAnchorName","_transforming","_elementsCreated","_createElements","_handleMouseMove","_handleMouseUp","getNode","attachTo","setNode","setNodes","_nodes","_getEventNamespace","detach","filteredNodes","useSingleNodeRotation","onChange","_resetTransformCache","additionalEvents","_proxyDrag","lastPos","otherNode","otherAbs","getNodes","getActiveAnchor","_getNodeRect","__getNodeRect","__getNodeShape","rot","relative","ignoreStroke","absScale","absPos","totalPoints","getX","getY","_createBack","_createAnchor","_handleMouseDown","rotateCursor","rotateAnchorCursor","cursor","anchorName","getCursor","_cursorChange","back","rotateEnabled","rotateLineVisible","rotateAnchorAngle","rotateAnchorOffset","dirX","dirY","edgeX","edgeY","sign","endX","endY","shouldOverdrawWholeArea","hypotenuse","_anchorDragOffset","newHypotenuse","anchorNode","pp","oldAbs","anchorDragBoundFunc","newAbs","rotateAnchorAngleRad","newRotation","tol","rotationSnapTolerance","snappedRot","snaps","newRotationRad","snapped","absDiff","getSnap","rotationSnaps","_fitNodesInto","shiftBehavior","keepProportion","keepRatio","centeredScaling","altKey","comparePoint","reverseX","reverseY","topOffsetX","topOffsetY","bottomOffsetX","bottomOffsetY","_removeEvents","newAttrs","oldAttrs","boundBoxFunc","baseSize","oldTr","newTr","newScaleX","newScaleY","flipEnabled","parentTransform","localTransform","newLocalTransform","_batchChangeChild","enabledAnchors","resizeEnabled","anchorSize","anchors","anchorStroke","anchorStrokeWidth","anchorFill","anchorCornerRadius","borderEnabled","borderStroke","borderStrokeWidth","borderDash","styleFunc","anchorStyleFunc","stopTransform","lineEnabled","rotateHandlerOffset","enabledHandlers","Wedge","BlurStack","getAngleDeg","setAngleDeg","mul_table","shg_table","remap","fromValue","fromMin","fromMax","toMin","toMax","fromRange","toRange","toValue","pixelAt","idata","rgbDistance","Core","pixels","yi","yw","r_sum","g_sum","b_sum","a_sum","r_out_sum","g_out_sum","b_out_sum","a_out_sum","r_in_sum","g_in_sum","b_in_sum","a_in_sum","pg","pb","pa","rbs","widthMinus1","heightMinus1","radiusPlus1","sumFactor","stackStart","mul_sum","shg_sum","stackEnd","stackIn","stackOut","filterGaussBlurRGBA","Brighten","adjust","nPixels","Emboss","w","strength01","embossStrength","whiteLevel01","embossWhiteLevel","directionDeg","embossDirection","blend","embossBlend","strength","bias","dirRad","SCALE","Uint8ClampedArray","lum","Float32Array","Gx","Gy","OFF","clamp8","outGray","oTop","oBot","oL","oR","Enhance","nSubPixels","rMin","rMax","gMin","gMax","bMin","bMax","enhanceAmount","enhance","rGoalMax","rGoalMin","gGoalMax","gGoalMin","bGoalMax","bGoalMin","rMid","gMid","bMid","HSL","saturation","hue","luminance","vsu","vsw","rr","rg","rb","gr","gg","gb","bg","bb","HSV","Kaleidoscope","xSize","ySize","xoff","srcPos","dstPos","power","kaleidoscopePower","kaleidoscopeAngle","tempCanvas","scratchData","dst","opt","srcPixels","dstPixels","xMid","polarCenterX","yMid","polarCenterY","rSize","tSize","conversion","ToPolar","minSectionSize","sectionSize","xStart","xEnd","xDelta","FromPolar","Mask","mask","rgbv_no","rgbv_ne","rgbv_so","rgbv_se","thres","mean","pTab","rgbMean","backgroundMask","weights","halfSide","maskResult","so","scy","scx","wt","erodeMask","dilateMask","smoothEdgeMask","applyMask","Noise","amount","noise","half","Pixelate","pixelSize","nBinsX","nBinsY","xBin","yBin","alpha","xBinStart","xBinEnd","yBinStart","yBinEnd","pixelsInBin","Posterize","levels","RGB","RGBA","ia","Solarize","Threshold","level","listeners","removeAllListeners","emit","CustomEvent","detail","highlights","paths","mapReader","settings","setArea","getArea","getPlane","currentArea","currentAreaInstance","currentZIndex","currentAreaVersion","getVersion","getRoom","positionRoomId","roomId","areaChanged","updatePositionMarker","refreshPosition","clearPosition","setCenterRoom","needsAreaRedraw","centerRoomId","instant","addHighlight","removeHighlight","hasHighlight","clearHighlights","addPath","locations","clearPaths","getOverlaysForArea","getEffectiveBounds","uniformLevelSize","getFullBounds","getBounds","computeExportBounds","areaName","getAreaName","ee","textAlign","baselineRatio","konvaCorrectionRatio","backend","createRoomGroup","fillColor","strokeColor","borderWidth","symbolColor","envColor","getColorValue","env","coloredMode","frameMode","backgroundColor","lineColor","borders","getSymbolColor","te","strokeOverride","roomSize","createGroup","roomShape","addCircle","addRect","emboss","shadow","highlight","ne","addLine","roomChar","addText","ie","cachedBounds","invalidateCache","render","gridEnabled","gridSize","gridColor","gridLineWidth","addNode","E","ae","nw","se","D","north","south","east","west","northeast","northwest","southeast","southwest","up","down","in","out","O","oe","M","SQRT2","N","P","ce","getRoomEdgePoint","renderData","renderDataWithColor","aDir","bDir","renderTwoWayExitData","renderOneWayExitData","customLines","doors","arrows","targetRoomId","getSpecialExitAreaTargets","specialExits","exits","le","ue","de","stubs","fe","pe","tipX","tipY","door","me","F","ge","symbolFill","he","vertices","triangles","ve","ye","gridLayer","linkLayer","roomLayer","roomShapeRenderer","gridRenderer","exitRenderer","buildScene","renderLabels","getLabels","renderLinkExits","getLinkExits","renderRooms","getRooms","renderAreaName","roomNodes","standaloneExitNodes","areaExitHitZones","addPolygon","room","group","renderExitData","renderArrow","labelRenderMode","X","Y","pixMap","addImage","Width","Height","BgColor","transparentLabels","FgColor","L","zoom","minZoom","centerOnResize","dragging","dragStart","positionAtDragStart","getScale","setZoom","notify","zoomToCenter","zoomToPoint","getViewportBounds","clientToMapPoint","panToMapPoint","panToMapPointAnimated","animate","fitToMapBounds","cancelAnimation","updateDrag","endDrag","be","animationId","cancelAnimationFrame","isAnimating","xe","samples","lastCullingTime","windowSize","setCallback","record","flush","computeFps","cullingMs","gridMs","visibleRooms","totalRooms","visibleExits","fps","Se","spatialBucketSize","roomSpatialIndex","exitSpatialIndex","visibleStandaloneExitNodes","bufferRoomSet","bufferExitSet","bufferRoomCandidates","bufferExitCandidates","cullingScheduled","perfMonitor","stageInfo","computeBucketSize","standaloneExitBoundsRoomSize","getBucketKey","forEachBucket","addRoomToSpatialIndex","addStandaloneExitToSpatialIndex","findRoomAtMapPoint","markExitBoundsStale","setExitBoundsRoomSize","collectRoomCandidates","collectStandaloneExitCandidates","refreshStandaloneExitBoundsIfNeeded","scheduleCulling","updateCulling","perfCallback","cullingBounds","cullingEnabled","cullingMode","setVisible","cullExits","changed","Ce","cleanupFns","destroyed","hitTest","initViewportEvents","initMapEvents","listen","handlePinch","lastPinchDistance","deltaY","ctrlKey","findRoomAtClientPoint","findAreaExitAtClientPoint","emitRoomClickEvent","emitAreaExitClickEvent","emitMapClickEvent","emitRoomContextEvent","findRoomAtPoint","getAreaExitHitZones","R","konvaGroup","konvaLayer","we","V","Te","fromDir","customLineKey","fromRoom","toRoom","toDir","Ee","De","Oe","ke","Ae","je","Ne","Pe","playerMarker","sizeFactor","matchRoomShape","strokeAlpha","fillAlpha","Fe","innerMarkers","Me","outlineWidth","H","Ie","Re","toFixed","ze","intensity","ambientLight","displaySize","U","Be","Ve","He","Ge","Ke","rooms","labels","createBounds","W","planes","createPlanes","createExits","getAreaId","areaId","markDirty","getPlanes","getZLevels","Z","origin","oppositeDir","qe","basePlane","visitedRooms","G","planeCache","WeakMap","areaRoomIds","getVisitedRoomCount","getTotalRoomCount","hasVisitedRoom","getVisitedRoomIds","addVisitedRoom","addVisitedRooms","K","Je","highlightShapes","pathShapes","currentRoomOverlay","positionLayer","overlayLayer","drawingBackend","positionLayerNode","overlayLayerNode","pipeline","culling","applyViewportToStage","origSetSize","interactionHandler","subscribeToState","setDrawingBackend","clearOverlayShapes","clearCurrentRoomOverlay","positionMarker","ambientLightNode","updateBackground","exportCanvas","refreshAmbientLight","S","T","onSceneBuilt","syncHighlights","onPositionChanged","instantMapMove","syncHighlight","syncPaths","lastBuildResult","updateCurrentRoomOverlay","applyAmbientLight","applyPositionMarker","highlightCurrentRoom","Ue","We","clearPathShapes","q","J","toSvg","groups","Ye","Ze","drawingBackendFactory","exportSvg","Xe","overlays","Qe","svgDrawingBackendFactory","drawArea","getCurrentArea","centerOn","renderHighlight","renderPath","refreshCurrentRoomOverlay","exportPng","exportPngBlob","renderToCanvas","getZoom","getAreaBounds","fitArea","setCullingMode","getCullingMode","Q","et","nt","inner","jitter","pencil","applyPencilWithAlpha","rt","tt","ot","rgbValue","st","ct","areas","areaSources","explorationEnabled","colors","envId","symbolColorValue","getExplorationArea","getAreas","ensureVisitedRooms","applyExplorationDecoration","decorateWithExploration","setVisitedRooms","getVisitedRooms","clearExplorationDecoration","isExplorationEnabled","lt","priority","isEmpty","ut","dt","ft","graph","addVertex","removeNode","cost","avoid","shortestPath","ht","gt","buildGraph","getAdj","adj","getGraphDefinition","graphDefinition","getMaxEdgeDistance","maxEdgeDistance","getMinEdgeWeight","minEdgeWeight","resolveEdgeWeight","exitWeights","weight","exitLocks","mSpecialExitLocks","_t","vt","pop","yt","St","_algorithm","mapGraph","dijkstraGraph","default","algorithm","setAlgorithm","findPath","bt","xt","MAX_SIZE","Preview","pageControls","areaBounds","preview","previewBg","previewPan","init","pngDataUrl","areaW","areaH","aspect","boxW","boxH","backgroundImage","backgroundSize","pageSettings","renderer","clampedLeft","clampedTop","clampedRight","clampedBottom","getOwnPropertySymbols","getOwnPropertyDescriptors","defineProperties","insertAdjacentElement","String","normalize","class","input","feedback","mode","diacritics","store","selection","results","wrapper","resultItem","getElementsByTagName","HTMLInputElement","HTMLTextAreaElement","query","searchEngine","resultsList","maxResults","noResults","DocumentFragment","role","inside","placeHolder","placeholder","around","dest","destination","debounce","keydown","keyCode","submit","tabSelect","mousedown","unInit","goTo","select","search","instances","npcs","searchFieldSelector","searchField","downloadNpc","async","roomNpc","response","npc","loc","ac","autoComplete","shouldNavigate","Function","form","requestSubmit","aText","bText","localeCompare","newMax","rainbow","pathPick","translator","Translator","location","hostname","defaultLang","catch","translatePageTo","translations","pl","en","urlSearchParams","URLSearchParams","fromEntries","pathname","toHexColor","padStart","storedPosition","controls","reader","selectedRoom","renderMode","pathFinder","PathFinder","keepZoomLevel","disableKeyBinds","loaded","mapBackground","linesColor","exitsSize","isRound","optimizeDrag","showLabels","defaults","selectRoom","adjustZoomBar","deselectRoom","findRoom","infoBox","saveImageButton","saveSvgImageButton","copyImageButton","zoomButtons","toastContainer","searchModal","findPathForm","findPathModal","helpModal","zoomBar","settingsModal","settingsForm","resetSettingsButton","versions","releaseDescription","versionBadge","languageSelector","currentLanguageFlag","pathBox","areaModal","replaceVersion","selectedOptions","downloadTags","tags","option","tag_name","replaceAll","firstElementChild","saveImage","downloadImage","copyImage","submitSearch","submitPathFind","populateSettings","handleSaveSettings","resetSettings","populateAreaInfo","translatePage","MapRenderer","getEffectiveBackground","applyBackground","isLight","colorLightness","logo","applyRenderMode","SketchyBackend","KonvaBackend","history","replaceState","zIdx","renderArea","formData","checked","showToast","currentLanguage","saveSettings","force","previewBounds","previewPng","populateLevelButtons","hideRoomInfo","reRenderAllPaths","genericSetup","levelsSorted","createTextNode","menu","link","areaExits","getAreaExits","targetId","targetArea","roomLink","targetLink","isExitTarget","exitId","destinationRoom","destRoom","populateSelectBox","nameA","nameB","areaElement","Option","inputs","findRooms","firstRoom","existingColor","pathColor","pathLocations","pathSelector","deletePath","onclick","pathData","colorEl","percentage","progressTimeout","showRoomInfo","bgColor","infoExitsGroup","userDataGroup","userData","npcDataGroup","containerList","userDataKey","dataElement","exit","infoExit","exitElement","exitDir","translateDir","areaLink","allSettings","mapTab","setting","allDefaults","pngUrl","svg","encodeURIComponent","ClipboardItem","blobPromise","clipboard","goDirection","directionKey","fullDirection","getKeyByValue","dirs","dirsShortToLong","registerKeyBoard","directionKeys","Numpad1","Numpad2","Numpad3","Numpad4","Numpad6","Numpad7","Numpad8","Numpad9","NumpadMultiply","NumpadDivide","showHelp","showSearch","address","downloadVersion","MapReader","mapData"],"mappings":"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I,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,kBACA,mBACA,mBACA,oBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,kBACA,mBACA,kBACA,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,mBACH,oBACA,mBACA,oBACA,mBACA,oBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,gBACA,iBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,mBACA,oBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,mBACA,oBACA,mBACA,oBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBAEJ,CACI,GAAG,kBACH,mBACA,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBAEJ,EACI,mBACA,oBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,iBACA,kBACA,kBACA,mBACA,kBACA,mBACA,kBACA,mBACA,kBACA,oBAGKC,GAAU,CACnB,GACA,GACA,CAAC,EAAK,GACN,CACI,kBACA,kBACA,mBAEJ,CACI,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,kBACA,mBAEJ,CACI,iBACA,iBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,oBAEJ,CACI,kBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,gBACA,gBACA,mBACA,mBACA,kBACA,kBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,oBACA,oBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,mBACA,mBACA,kBACA,mBAEJ,CACI,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,oBACA,qBAEJ,CACI,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,mBACA,mBACA,kBACA,kBACA,mBACA,mBACA,mBACA,mBACA,oBACA,oBACA,kBACA,oBAGKC,GAAuB,CAAC,CAAC,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,EAAG,IAC1DC,GAAoB,CAACC,EAAIC,EAAIzgF,KACtC,IAAI0gF,EACAC,EACJ,MACMC,EAAI5gF,EAAI,EACd0gF,EAAM,EACN,IAAA,IAASr+E,EAAI,EAAGA,EAHN,GAGaA,IACn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K,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEpEC,GAAY,CACd,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAC3E,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACxE,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IA+L5B5kC,GAAQC,gBAAgBr0C,GAAM,aAAc,EAAGuzC,KAAsBa,GAAQ6B,gBC/N7E7B,GAAQC,gBAAgBr0C,GAAM,aAAc,EAAGuzC,KAAsBa,GAAQ6B,gBCuB7E7B,GAAQC,gBAAgBr0C,GAAM,WAAY,EAAGuzC,KAAsBa,GAAQ6B,gBC/B3E,SAASgjC,GAAMC,EAAWC,EAASC,EAASC,EAAOC,GAC/C,MAAMC,EAAYH,EAAUD,EAASK,EAAUF,EAAQD,EACvD,GAAkB,IAAdE,EACA,OAAOF,EAAQG,EAAU,EAE7B,GAAgB,IAAZA,EACA,OAAOH,EAEX,IAAII,GAAWP,EAAYC,GAAWI,EAEtC,OADAE,EAAUD,EAAUC,EAAUJ,EACvBI,CACX,CCmFArlC,GAAQC,gBAAgBr0C,GAAM,iBAAkB,GAAKuzC,KAAsBa,GAAQ6B,gBACnF7B,GAAQC,gBAAgBr0C,GAAM,mBAAoB,GAAKuzC,KAAsBa,GAAQ6B,gBACrF7B,GAAQC,gBAAgBr0C,GAAM,kBAAmB,gBAAY,EAAWo0C,GAAQ6B,gBAChF7B,GAAQC,gBAAgBr0C,GAAM,eAAe,OAAO,EAAWo0C,GAAQ6B,gBDjBvE7B,GAAQC,gBAAgBr0C,GAAM,UAAW,EAAGuzC,KAAsBa,GAAQ6B,gBEhF1E7B,GAAQC,gBAAgBr0C,GAAM,MAAO,EAAGuzC,KAAsBa,GAAQ6B,gBACtE7B,GAAQC,gBAAgBr0C,GAAM,aAAc,EAAGuzC,KAAsBa,GAAQ6B,gBAC7E7B,GAAQC,gBAAgBr0C,GAAM,YAAa,EAAGuzC,KAAsBa,GAAQ6B,gBCe5E7B,GAAQC,gBAAgBr0C,GAAM,MAAO,EAAGuzC,KAAsBa,GAAQ6B,gBACtE7B,GAAQC,gBAAgBr0C,GAAM,aAAc,EAAGuzC,KAAsBa,GAAQ6B,gBAC7E7B,GAAQC,gBAAgBr0C,GAAM,QAAS,EAAGuzC,KAAsBa,GAAQ6B,gBCnBxE,SAASyjC,GAAQC,EAAOjwF,EAAGE,GACvB,IAAIu5E,EAA8B,GAAvBv5E,EAAI+vF,EAAMtwF,MAAQK,GAC7B,MAAMgpC,EAAI,GAEV,OADAA,EAAEtzC,KAAKu6F,EAAM9pF,KAAKszE,KAAQwW,EAAM9pF,KAAKszE,KAAQwW,EAAM9pF,KAAKszE,KAAQwW,EAAM9pF,KAAKszE,MACpEzwC,CACX,CACA,SAASknD,GAAY91C,EAAIC,GACrB,OAAO77C,KAAKqrC,KAAKrrC,KAAKoxE,IAAIx1B,EAAG,GAAKC,EAAG,GAAI,GACrC77C,KAAKoxE,IAAIx1B,EAAG,GAAKC,EAAG,GAAI,GACxB77C,KAAKoxE,IAAIx1B,EAAG,GAAKC,EAAG,GAAI,GAChC,CCsHAqQ,GAAQC,gBAAgBr0C,GAAM,oBAAqB,EAAGuzC,KAAsBa,GAAQ6B,gBACpF7B,GAAQC,gBAAgBr0C,GAAM,oBAAqB,EAAGuzC,KAAsBa,GAAQ6B,gBDkBpF7B,GAAQC,gBAAgBr0C,GAAM,YAAa,EAAGuzC,KAAsBa,GAAQ6B,gBE3I5E7B,GAAQC,gBAAgBr0C,GAAM,QAAS,GAAKuzC,KAAsBa,GAAQ6B,gBCgD1E7B,GAAQC,gBAAgBr0C,GAAM,YAAa,EAAGuzC,KAAsBa,GAAQ6B,gBClD5E7B,GAAQC,gBAAgBr0C,GAAM,SAAU,GAAKuzC,KAAsBa,GAAQ6B,gBCI3E7B,GAAQC,gBAAgBr0C,GAAM,MAAO,EAAG,SAAUo+B,GAE9C,OADAj+C,KAAK+1D,iBAAkB,EACnB9X,EAAM,IACC,IAEFA,EAAM,EACJ,EAGAl2C,KAAKE,MAAMg2C,EAE1B,GACAgW,GAAQC,gBAAgBr0C,GAAM,QAAS,EAAG,SAAUo+B,GAEhD,OADAj+C,KAAK+1D,iBAAkB,EACnB9X,EAAM,IACC,IAEFA,EAAM,EACJ,EAGAl2C,KAAKE,MAAMg2C,EAE1B,GACAgW,GAAQC,gBAAgBr0C,GAAM,OAAQ,EAAGszC,GAAcc,GAAQ6B,gBCzB/D7B,GAAQC,gBAAgBr0C,GAAM,MAAO,EAAG,SAAUo+B,GAE9C,OADAj+C,KAAK+1D,iBAAkB,EACnB9X,EAAM,IACC,IAEFA,EAAM,EACJ,EAGAl2C,KAAKE,MAAMg2C,EAE1B,GACAgW,GAAQC,gBAAgBr0C,GAAM,QAAS,EAAG,SAAUo+B,GAEhD,OADAj+C,KAAK+1D,iBAAkB,EACnB9X,EAAM,IACC,IAEFA,EAAM,EACJ,EAGAl2C,KAAKE,MAAMg2C,EAE1B,GACAgW,GAAQC,gBAAgBr0C,GAAM,OAAQ,EAAGszC,GAAcc,GAAQ6B,gBAC/D7B,GAAQC,gBAAgBr0C,GAAM,QAAS,EAAG,SAAUo+B,GAEhD,OADAj+C,KAAK+1D,iBAAkB,EACnB9X,EAAM,EACC,EAEFA,EAAM,EACJ,EAGAA,CAEf,GCvCAgW,GAAQC,gBAAgBr0C,GAAM,YAAa,GAAKuzC,KAAsBa,GAAQ6B,gBC6BvE,MAAMvnB,GAAQmrD,GAAKpmD,KAAKqR,QAAQ+0C,GAAM,CACzC1f,OACA4J,SACAa,UACAC,WACAC,SACAoB,SACAO,OACA5K,QACAkD,QACA2H,QACAC,kBACAG,QACAC,UACAW,QACAa,QACAqG,YACAqC,eACA0H,SACAjiC,QAAS,CACLC,Kf0KY,SAAczK,GAC9B,MAAM/F,EAASj+C,KAAKE,MAAMjI,KAAKq2D,cAC3BrQ,EAAS,GAzLjB,SAA6B+F,EAAW/F,GACpC,MAAM2zC,EAAS5tC,EAAUr8C,KAAMxG,EAAQ6iD,EAAU7iD,MAAOE,EAAS2iD,EAAU3iD,OAC3E,IAAIi3B,EAAGu5D,EAAIC,EAAIC,EAAOC,EAAOC,EAAOC,EAAOC,EAAWC,EAAWC,EAAWC,EAAWC,EAAUC,EAAUC,EAAUC,EAAUn2C,EAAIo2C,EAAIC,EAAIC,EAAIC,EAC/I,MAAMn7D,EAAMsmB,EAASA,EAAS,EAAG80C,EAAc5xF,EAAQ,EAAG6xF,EAAe3xF,EAAS,EAAG4xF,EAAch1C,EAAS,EAAGi1C,EAAaD,GAAeA,EAAc,GAAM,EAAGE,EAAa,IAAIzC,GAAa0C,EAAUvC,GAAU5yC,GAASo1C,EAAUvC,GAAU7yC,GACjP,IAAIq1C,EAAW,KAAM57F,EAAQy7F,EAAYI,EAAU,KAAMC,EAAW,KACpE,IAAA,IAASh9F,EAAI,EAAGA,EAAImhC,EAAKnhC,IACrBkB,EAAQA,EAAMV,KAAO,IAAI05F,GACrBl6F,IAAMy8F,IACNK,EAAW57F,GAGnBA,EAAMV,KAAOm8F,EACbrB,EAAKD,EAAK,EACV,IAAA,IAASnwF,EAAI,EAAGA,EAAIL,EAAQK,IAAK,CAC7B6wF,EACIC,EACIC,EACIC,EACIX,EACIC,EACIC,EACIC,EACI,EAChCC,EAAYc,GAAe12C,EAAKq1C,EAAOC,IACvCO,EAAYa,GAAeN,EAAKf,EAAOC,EAAK,IAC5CQ,EAAYY,GAAeL,EAAKhB,EAAOC,EAAK,IAC5CS,EAAYW,GAAeJ,EAAKjB,EAAOC,EAAK,IAC5CE,GAASmB,EAAY32C,EACrBy1C,GAASkB,EAAYP,EACrBV,GAASiB,EAAYN,EACrBV,GAASgB,EAAYL,EACrBn7F,EAAQy7F,EACR,IAAA,IAAS38F,EAAI,EAAGA,EAAIy8F,EAAaz8F,IAC7BkB,EAAM/C,EAAI4nD,EACV7kD,EAAME,EAAI+6F,EACVj7F,EAAMyW,EAAIykF,EACVl7F,EAAMxC,EAAI29F,EACVn7F,EAAQA,EAAMV,KAElB,IAAA,IAASR,EAAI,EAAGA,EAAIy8F,EAAaz8F,IAC7B8hC,EAAIu5D,IAAOkB,EAAcv8F,EAAIu8F,EAAcv8F,IAAM,GACjDu7F,IAAUr6F,EAAM/C,EAAI4nD,EAAKq1C,EAAOt5D,KAAOw6D,EAAMG,EAAcz8F,GAC3Dw7F,IAAUt6F,EAAME,EAAI+6F,EAAKf,EAAOt5D,EAAI,IAAMw6D,EAC1Cb,IAAUv6F,EAAMyW,EAAIykF,EAAKhB,EAAOt5D,EAAI,IAAMw6D,EAC1CZ,IAAUx6F,EAAMxC,EAAI29F,EAAKjB,EAAOt5D,EAAI,IAAMw6D,EAC1CP,GAAYh2C,EACZi2C,GAAYG,EACZF,GAAYG,EACZF,GAAYG,EACZn7F,EAAQA,EAAMV,KAElBu8F,EAAUJ,EACVK,EAAWF,EACX,IAAA,IAAS9xF,EAAI,EAAGA,EAAIL,EAAOK,IACvBowF,EAAOC,EAAK,GAAKgB,EAAMX,EAAQkB,GAAYC,EAChC,IAAPR,GACAA,EAAK,IAAMA,EACXjB,EAAOC,IAAQE,EAAQqB,GAAYC,GAAWR,EAC9CjB,EAAOC,EAAK,IAAOG,EAAQoB,GAAYC,GAAWR,EAClDjB,EAAOC,EAAK,IAAOI,EAAQmB,GAAYC,GAAWR,GAGlDjB,EAAOC,GAAMD,EAAOC,EAAK,GAAKD,EAAOC,EAAK,GAAK,EAEnDE,GAASI,EACTH,GAASI,EACTH,GAASI,EACTH,GAASI,EACTH,GAAaoB,EAAQ5+F,EACrBy9F,GAAamB,EAAQ37F,EACrBy6F,GAAakB,EAAQplF,EACrBmkF,GAAaiB,EAAQr+F,EACrBojC,EAAKw5D,IAAOx5D,EAAI92B,EAAIy8C,EAAS,GAAK80C,EAAcz6D,EAAIy6D,IAAiB,EACrER,GAAYgB,EAAQ5+F,EAAIi9F,EAAOt5D,GAC/Bk6D,GAAYe,EAAQ37F,EAAIg6F,EAAOt5D,EAAI,GACnCm6D,GAAYc,EAAQplF,EAAIyjF,EAAOt5D,EAAI,GACnCo6D,GAAYa,EAAQr+F,EAAI08F,EAAOt5D,EAAI,GACnCy5D,GAASQ,EACTP,GAASQ,EACTP,GAASQ,EACTP,GAASQ,EACTa,EAAUA,EAAQv8F,KAClBm7F,GAAa51C,EAAKi3C,EAAS7+F,EAC3By9F,GAAaO,EAAKa,EAAS57F,EAC3By6F,GAAaO,EAAKY,EAASrlF,EAC3BmkF,GAAaO,EAAKW,EAASt+F,EAC3Bq9F,GAAYh2C,EACZi2C,GAAYG,EACZF,GAAYG,EACZF,GAAYG,EACZW,EAAWA,EAASx8F,KACpB66F,GAAM,EAEVC,GAAM3wF,CACV,CACA,IAAA,IAASK,EAAI,EAAGA,EAAIL,EAAOK,IAAK,CAC5BgxF,EACIC,EACIC,EACIH,EACIP,EACIC,EACIC,EACIH,EACI,EAChCF,EAAKrwF,GAAK,EACV2wF,EAAYc,GAAe12C,EAAKq1C,EAAOC,IACvCO,EAAYa,GAAeN,EAAKf,EAAOC,EAAK,IAC5CQ,EAAYY,GAAeL,EAAKhB,EAAOC,EAAK,IAC5CS,EAAYW,GAAeJ,EAAKjB,EAAOC,EAAK,IAC5CE,GAASmB,EAAY32C,EACrBy1C,GAASkB,EAAYP,EACrBV,GAASiB,EAAYN,EACrBV,GAASgB,EAAYL,EACrBn7F,EAAQy7F,EACR,IAAA,IAAS38F,EAAI,EAAGA,EAAIy8F,EAAaz8F,IAC7BkB,EAAM/C,EAAI4nD,EACV7kD,EAAME,EAAI+6F,EACVj7F,EAAMyW,EAAIykF,EACVl7F,EAAMxC,EAAI29F,EACVn7F,EAAQA,EAAMV,KAElB,IAAIskF,EAAKn6E,EACT,IAAA,IAAS3K,EAAI,EAAGA,GAAKynD,EAAQznD,IACzBq7F,EAAMvW,EAAK95E,GAAM,EACjBuwF,IAAUr6F,EAAM/C,EAAI4nD,EAAKq1C,EAAOC,KAAQiB,EAAMG,EAAcz8F,GAC5Dw7F,IAAUt6F,EAAME,EAAI+6F,EAAKf,EAAOC,EAAK,IAAMiB,EAC3Cb,IAAUv6F,EAAMyW,EAAIykF,EAAKhB,EAAOC,EAAK,IAAMiB,EAC3CZ,IAAUx6F,EAAMxC,EAAI29F,EAAKjB,EAAOC,EAAK,IAAMiB,EAC3CP,GAAYh2C,EACZi2C,GAAYG,EACZF,GAAYG,EACZF,GAAYG,EACZn7F,EAAQA,EAAMV,KACVR,EAAIw8F,IACJ1X,GAAMn6E,GAGd0wF,EAAKrwF,EACL+xF,EAAUJ,EACVK,EAAWF,EACX,IAAA,IAAS5xF,EAAI,EAAGA,EAAIL,EAAQK,IACxB42B,EAAIu5D,GAAM,EACVD,EAAOt5D,EAAI,GAAKu6D,EAAMX,EAAQkB,GAAYC,EACtCR,EAAK,GACLA,EAAK,IAAMA,EACXjB,EAAOt5D,IAAOy5D,EAAQqB,GAAYC,GAAWR,EAC7CjB,EAAOt5D,EAAI,IAAO05D,EAAQoB,GAAYC,GAAWR,EACjDjB,EAAOt5D,EAAI,IAAO25D,EAAQmB,GAAYC,GAAWR,GAGjDjB,EAAOt5D,GAAKs5D,EAAOt5D,EAAI,GAAKs5D,EAAOt5D,EAAI,GAAK,EAEhDy5D,GAASI,EACTH,GAASI,EACTH,GAASI,EACTH,GAASI,EACTH,GAAaoB,EAAQ5+F,EACrBy9F,GAAamB,EAAQ37F,EACrBy6F,GAAakB,EAAQplF,EACrBmkF,GAAaiB,EAAQr+F,EACrBojC,EACK92B,IACK82B,EAAI52B,EAAIuxF,GAAeD,EAAe16D,EAAI06D,GAAgB7xF,GAC5D,EACR4wF,GAASQ,GAAYgB,EAAQ5+F,EAAIi9F,EAAOt5D,GACxC05D,GAASQ,GAAYe,EAAQ37F,EAAIg6F,EAAOt5D,EAAI,GAC5C25D,GAASQ,GAAYc,EAAQplF,EAAIyjF,EAAOt5D,EAAI,GAC5C45D,GAASQ,GAAYa,EAAQr+F,EAAI08F,EAAOt5D,EAAI,GAC5Ci7D,EAAUA,EAAQv8F,KAClBm7F,GAAa51C,EAAKi3C,EAAS7+F,EAC3By9F,GAAaO,EAAKa,EAAS57F,EAC3By6F,GAAaO,EAAKY,EAASrlF,EAC3BmkF,GAAaO,EAAKW,EAASt+F,EAC3Bq9F,GAAYh2C,EACZi2C,GAAYG,EACZF,GAAYG,EACZF,GAAYG,EACZW,EAAWA,EAASx8F,KACpB66F,GAAM1wF,CAEd,CACJ,CAIQsyF,CAAoBzvC,EAAW/F,EAEvC,Ee9KQ0Q,WC3DkB,SAAU3K,GAChC,MAAM0K,EAAaz2D,KAAKy2D,aAAc/mD,EAAOq8C,EAAUr8C,KAAMrD,EAAMqD,EAAKjT,OACxE,IAAA,IAAS8B,EAAI,EAAGA,EAAI8N,EAAK9N,GAAK,EAC1BmR,EAAKnR,GAAKwJ,KAAKC,IAAI,IAAK0H,EAAKnR,GAAKk4D,GAClC/mD,EAAKnR,EAAI,GAAKwJ,KAAKC,IAAI,IAAK0H,EAAKnR,EAAI,GAAKk4D,GAC1C/mD,EAAKnR,EAAI,GAAKwJ,KAAKC,IAAI,IAAK0H,EAAKnR,EAAI,GAAKk4D,EAElD,EDqDQglC,SdzDgB,SAAU1vC,GAC9B,MAAM0K,EAAiC,IAApBz2D,KAAKy2D,aAAoB/mD,EAAOq8C,EAAUr8C,KAAMrD,EAAMqD,EAAKjT,OAC9E,IAAA,IAAS8B,EAAI,EAAGA,EAAI8N,EAAK9N,GAAK,EAC1BmR,EAAKnR,IAAMk4D,EACX/mD,EAAKnR,EAAI,IAAMk4D,EACf/mD,EAAKnR,EAAI,IAAMk4D,CAEvB,EcmDQI,Sb1DgB,SAAU9K,GAC9B,MAAM2vC,EAAS3zF,KAAKoxE,KAAKn5E,KAAK22D,WAAa,KAAO,IAAK,GACjDjnD,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAC5C,IAAI4+C,EAAM,IAAKlE,EAAQ,IAAK7C,EAAO,IACnC,IAAA,IAAS/1C,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAC9B88C,EAAM3rC,EAAKnR,GACX44C,EAAQznC,EAAKnR,EAAI,GACjB+1C,EAAO5kC,EAAKnR,EAAI,GAChB88C,GAAO,IACPA,GAAO,GACPA,GAAOqgD,EACPrgD,GAAO,GACPA,GAAO,IACPlE,GAAS,IACTA,GAAS,GACTA,GAASukD,EACTvkD,GAAS,GACTA,GAAS,IACT7C,GAAQ,IACRA,GAAQ,GACRA,GAAQonD,EACRpnD,GAAQ,GACRA,GAAQ,IACR+G,EAAMA,EAAM,EAAI,EAAIA,EAAM,IAAM,IAAMA,EACtClE,EAAQA,EAAQ,EAAI,EAAIA,EAAQ,IAAM,IAAMA,EAC5C7C,EAAOA,EAAO,EAAI,EAAIA,EAAO,IAAM,IAAMA,EACzC5kC,EAAKnR,GAAK88C,EACV3rC,EAAKnR,EAAI,GAAK44C,EACdznC,EAAKnR,EAAI,GAAK+1C,CAEtB,Ea6BQsnD,OX3Dc,SAAU7vC,GAC5B,IAAIzb,EAAIC,EAAImf,EAAI27B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EACpC,MAAMh8E,EAAOq8C,EAAUr8C,KACjBmsF,EAAI9vC,EAAU7iD,MACdo4C,EAAIyK,EAAU3iD,OACd0yF,EAAa/zF,KAAKC,IAAI,EAAGD,KAAKD,IAAI,EAA4F,QAAxFyoC,EAAoC,QAA9BD,EAAKtwC,KAAK+7F,sBAAmC,IAAPzrD,OAAgB,EAASA,EAAGxxC,KAAKkB,aAA0B,IAAPuwC,EAAgBA,EAAK,KAC3JyrD,EAAej0F,KAAKC,IAAI,EAAGD,KAAKD,IAAI,EAA8F,QAA1FujF,EAAsC,QAAhC37B,EAAK1vD,KAAKi8F,wBAAqC,IAAPvsC,OAAgB,EAASA,EAAG5wD,KAAKkB,aAA0B,IAAPqrF,EAAgBA,EAAK,KAW/J6Q,EAA0K,QAA1J1Q,EAVD,CACjB,WAAY,IACZ1nF,IAAK,IACL,YAAa,IACbE,MAAO,IACP,eAAgB,IAChBD,OAAQ,GACR,cAAe,GACfE,KAAM,GAEwH,QAAzFsnF,EAAqC,QAA/BD,EAAKtrF,KAAKm8F,uBAAoC,IAAP7Q,OAAgB,EAASA,EAAGxsF,KAAKkB,aAA0B,IAAPurF,EAAgBA,EAAK,mBAAgC,IAAPC,EAAgBA,EAAK,IACvM4Q,IAAiG,QAArF1Q,EAAiC,QAA3BD,EAAKzrF,KAAKq8F,mBAAgC,IAAP5Q,OAAgB,EAASA,EAAG3sF,KAAKkB,iBAAmB0rF,IAAgBA,GACzH4Q,EAAwB,GAAbR,EACXS,EAAsB,IAAfP,EACPQ,EAAUN,EAAen0F,KAAKomC,GAAM,IACpCixC,EAAKr3E,KAAK4pC,IAAI6qD,GACdnd,EAAKt3E,KAAK6pC,IAAI4qD,GACdC,EAAS,IAAM,KAAQH,EACvBt9C,EAAM,IAAI09C,kBAAkBhtF,GAC5BitF,EAAM,IAAIC,aAAaf,EAAIv6C,GACjC,IAAA,IAASjhB,EAAI,EAAG9hC,EAAI,EAAGA,EAAImR,EAAKjT,OAAQ8B,GAAK,EAAG8hC,IAC5Cs8D,EAAIt8D,GAAK,MAAS2e,EAAIzgD,GAAK,MAASygD,EAAIzgD,EAAI,GAAK,MAASygD,EAAIzgD,EAAI,GAEtE,MAAMs+F,EAAK,EAAC,EAAI,EAAG,KAAO,EAAG,GAAG,EAAI,EAAG,GACjCC,EAAK,EAAC,GAAI,GAAI,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACjCC,EAAM,EAAElB,EAAI,GAAIA,EAAQ,EAAJA,KAAW,EAAG,EAAGA,EAAI,EAAGA,EAAGA,EAAI,GACnDmB,EAAUjiF,GAAOA,EAAI,EAAI,EAAIA,EAAI,IAAM,IAAMA,EACnD,IAAA,IAAStR,EAAI,EAAGA,EAAI63C,EAAI,EAAG73C,IACvB,IAAA,IAASF,EAAI,EAAGA,EAAIsyF,EAAI,EAAGtyF,IAAK,CAC5B,MAAM82B,EAAI52B,EAAIoyF,EAAItyF,EAClB,IAAIgoC,EAAK,EAAGC,EAAK,EACjBD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3BvrD,GAAMorD,EAAIt8D,EAAI08D,EAAI,IAAMF,EAAG,GAC3BrrD,GAAMmrD,EAAIt8D,EAAI08D,EAAI,IAAMD,EAAG,GAC3B,MACMG,EAAUD,EAAOT,GADbnd,EAAK7tC,EAAK8tC,EAAK7tC,GACSirD,GAC5Bt/F,EAAQ,EAAJkjC,EACV,GAAI+7D,EAAO,CACP,MAAMppD,EAAQiqD,EAAUV,EACxB7sF,EAAKvS,GAAK6/F,EAAOh+C,EAAI7hD,GAAK61C,GAC1BtjC,EAAKvS,EAAI,GAAK6/F,EAAOh+C,EAAI7hD,EAAI,GAAK61C,GAClCtjC,EAAKvS,EAAI,GAAK6/F,EAAOh+C,EAAI7hD,EAAI,GAAK61C,GAClCtjC,EAAKvS,EAAI,GAAK6hD,EAAI7hD,EAAI,EAC1B,MAEIuS,EAAKvS,GAAKuS,EAAKvS,EAAI,GAAKuS,EAAKvS,EAAI,GAAK8/F,EACtCvtF,EAAKvS,EAAI,GAAK6hD,EAAI7hD,EAAI,EAE9B,CAEJ,IAAA,IAASoM,EAAI,EAAGA,EAAIsyF,EAAGtyF,IAAK,CACxB,IAAI2zF,EAAW,EAAJ3zF,EAAO4zF,EAA2B,IAAlB77C,EAAI,GAAKu6C,EAAItyF,GACxCmG,EAAKwtF,GAAQl+C,EAAIk+C,GACjBxtF,EAAKwtF,EAAO,GAAKl+C,EAAIk+C,EAAO,GAC5BxtF,EAAKwtF,EAAO,GAAKl+C,EAAIk+C,EAAO,GAC5BxtF,EAAKwtF,EAAO,GAAKl+C,EAAIk+C,EAAO,GAC5BxtF,EAAKytF,GAAQn+C,EAAIm+C,GACjBztF,EAAKytF,EAAO,GAAKn+C,EAAIm+C,EAAO,GAC5BztF,EAAKytF,EAAO,GAAKn+C,EAAIm+C,EAAO,GAC5BztF,EAAKytF,EAAO,GAAKn+C,EAAIm+C,EAAO,EAChC,CACA,IAAA,IAAS1zF,EAAI,EAAGA,EAAI63C,EAAI,EAAG73C,IAAK,CAC5B,IAAI2zF,EAAK3zF,EAAIoyF,EAAI,EAAGwB,EAAyB,GAAnB5zF,EAAIoyF,GAAKA,EAAI,IACvCnsF,EAAK0tF,GAAMp+C,EAAIo+C,GACf1tF,EAAK0tF,EAAK,GAAKp+C,EAAIo+C,EAAK,GACxB1tF,EAAK0tF,EAAK,GAAKp+C,EAAIo+C,EAAK,GACxB1tF,EAAK0tF,EAAK,GAAKp+C,EAAIo+C,EAAK,GACxB1tF,EAAK2tF,GAAMr+C,EAAIq+C,GACf3tF,EAAK2tF,EAAK,GAAKr+C,EAAIq+C,EAAK,GACxB3tF,EAAK2tF,EAAK,GAAKr+C,EAAIq+C,EAAK,GACxB3tF,EAAK2tF,EAAK,GAAKr+C,EAAIq+C,EAAK,EAC5B,CACA,OAAOtxC,CACX,EWjCQuxC,QZhDe,SAAUvxC,GAC7B,MAAMr8C,EAAOq8C,EAAUr8C,KAAM6tF,EAAa7tF,EAAKjT,OAC/C,IAAiCC,EAAgCiD,EAAgCuW,EAA7FsnF,EAAO9tF,EAAK,GAAI+tF,EAAOD,EAASE,EAAOhuF,EAAK,GAAIiuF,EAAOD,EAASE,EAAOluF,EAAK,GAAImuF,EAAOD,EAC3F,MAAME,EAAgB99F,KAAK+9F,UAC3B,GAAsB,IAAlBD,EACA,OAEJ,IAAA,IAASv/F,EAAI,EAAGA,EAAIg/F,EAAYh/F,GAAK,EACjC7B,EAAIgT,EAAKnR,EAAI,GACT7B,EAAI8gG,EACJA,EAAO9gG,EAEFA,EAAI+gG,IACTA,EAAO/gG,GAEXiD,EAAI+P,EAAKnR,EAAI,GACToB,EAAI+9F,EACJA,EAAO/9F,EAEFA,EAAIg+F,IACTA,EAAOh+F,GAEXuW,EAAIxG,EAAKnR,EAAI,GACT2X,EAAI0nF,EACJA,EAAO1nF,EAEFA,EAAI2nF,IACTA,EAAO3nF,GAef,IAAI8nF,EAAUC,EAAUC,EAAUC,EAAUC,EAAUC,EACtD,GAbIZ,IAASD,IACTC,EAAO,IACPD,EAAO,GAEPG,IAASD,IACTC,EAAO,IACPD,EAAO,GAEPG,IAASD,IACTC,EAAO,IACPD,EAAO,GAGPE,EAAgB,EAChBE,EAAWP,EAAOK,GAAiB,IAAML,GACzCQ,EAAWT,EAAOM,GAAiBN,EAAO,GAC1CU,EAAWP,EAAOG,GAAiB,IAAMH,GACzCQ,EAAWT,EAAOI,GAAiBJ,EAAO,GAC1CU,EAAWP,EAAOC,GAAiB,IAAMD,GACzCQ,EAAWT,EAAOE,GAAiBF,EAAO,OAEzC,CACD,MAAMU,EAAuB,IAAfb,EAAOD,GACrBQ,EAAWP,EAAOK,GAAiBL,EAAOa,GAC1CL,EAAWT,EAAOM,GAAiBN,EAAOc,GAC1C,MAAMC,EAAuB,IAAfZ,EAAOD,GACrBQ,EAAWP,EAAOG,GAAiBH,EAAOY,GAC1CJ,EAAWT,EAAOI,GAAiBJ,EAAOa,GAC1C,MAAMC,EAAuB,IAAfX,EAAOD,GACrBQ,EAAWP,EAAOC,GAAiBD,EAAOW,GAC1CH,EAAWT,EAAOE,GAAiBF,EAAOY,EAC9C,CACA,IAAA,IAASjgG,EAAI,EAAGA,EAAIg/F,EAAYh/F,GAAK,EACjCmR,EAAKnR,EAAI,GAAKu6F,GAAMppF,EAAKnR,EAAI,GAAIi/F,EAAMC,EAAMQ,EAAUD,GACvDtuF,EAAKnR,EAAI,GAAKu6F,GAAMppF,EAAKnR,EAAI,GAAIm/F,EAAMC,EAAMQ,EAAUD,GACvDxuF,EAAKnR,EAAI,GAAKu6F,GAAMppF,EAAKnR,EAAI,GAAIq/F,EAAMC,EAAMQ,EAAUD,EAE/D,EYlBQtnC,UEhEiB,SAAU/K,GAC/B,MAAMr8C,EAAOq8C,EAAUr8C,KAAMrD,EAAMqD,EAAKjT,OACxC,IAAA,IAAS8B,EAAI,EAAGA,EAAI8N,EAAK9N,GAAK,EAAG,CAC7B,MAAMk4D,EAAa,IAAO/mD,EAAKnR,GAAK,GAAMmR,EAAKnR,EAAI,GAAK,IAAOmR,EAAKnR,EAAI,GACxEmR,EAAKnR,GAAKk4D,EACV/mD,EAAKnR,EAAI,GAAKk4D,EACd/mD,EAAKnR,EAAI,GAAKk4D,CAClB,CACJ,EFyDQgoC,IV3DW,SAAU1yC,GACzB,MAAMr8C,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAAe+D,EAAIuH,KAAKoxE,IAAI,EAAGn5E,KAAK0+F,cAAep9C,EAAIv5C,KAAK6B,IAAI5J,KAAK2+F,MAAQ,KAAO,IAAKp9C,EAAuB,IAAnBvhD,KAAK4+F,YACxIC,EADkD,EACxCr+F,EAAIuH,KAAK4pC,IAAK2P,EAAIv5C,KAAKomC,GAAM,KAAM2wD,EADK,EACKt+F,EAAIuH,KAAK6pC,IAAK0P,EAAIv5C,KAAKomC,GAAM,KACpF4wD,EAAK,KAAY,KAAQF,EAAM,KAAQC,EAAKE,EAAK,KAAY,KAAQH,EAAM,IAAOC,EAAKG,EAAK,KAAY,KAAQJ,EAAM,KAAQC,EAC9HI,EAAK,KAAY,KAAQL,EAAM,KAAQC,EAAKK,EAAK,KAAY,KAAQN,EAAM,KAAQC,EAAKM,EAAK,KAAY,KAAQP,EAAM,KAAQC,EAC/Hv/D,EAAK,KAAY,GAAMs/D,EAAM,KAAOC,EAAKO,EAAK,KAAY,KAAQR,EAAM,KAAOC,EAAKQ,EAAK,KAAY,KAAQT,EAAM,GAAMC,EAC/H,IAAIpiG,EAAGiD,EAAGuW,EAAGjZ,EACb,IAAA,IAASsB,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAC9B7B,EAAIgT,EAAKnR,EAAI,GACboB,EAAI+P,EAAKnR,EAAI,GACb2X,EAAIxG,EAAKnR,EAAI,GACbtB,EAAIyS,EAAKnR,EAAI,GACbmR,EAAKnR,EAAI,GAAKwgG,EAAKriG,EAAIsiG,EAAKr/F,EAAIs/F,EAAK/oF,EAAIqrC,EACzC7xC,EAAKnR,EAAI,GAAK2gG,EAAKxiG,EAAIyiG,EAAKx/F,EAAIy/F,EAAKlpF,EAAIqrC,EACzC7xC,EAAKnR,EAAI,GAAKghC,EAAK7iC,EAAI2iG,EAAK1/F,EAAI2/F,EAAKppF,EAAIqrC,EACzC7xC,EAAKnR,EAAI,GAAKtB,CAEtB,EU2CQsiG,IT/DW,SAAUxzC,GACzB,MAAMr8C,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAAQse,EAAIhT,KAAKoxE,IAAI,EAAGn5E,KAAKd,SAAUsB,EAAIuH,KAAKoxE,IAAI,EAAGn5E,KAAK0+F,cAAep9C,EAAIv5C,KAAK6B,IAAI5J,KAAK2+F,MAAQ,KAAO,IAClJE,EAAM9jF,EAAIva,EAAIuH,KAAK4pC,IAAK2P,EAAIv5C,KAAKomC,GAAM,KAAM2wD,EAAM/jF,EAAIva,EAAIuH,KAAK6pC,IAAK0P,EAAIv5C,KAAKomC,GAAM,KACpF4wD,EAAK,KAAQhkF,EAAI,KAAQ8jF,EAAM,KAAQC,EAAKE,EAAK,KAAQjkF,EAAI,KAAQ8jF,EAAM,IAAOC,EAAKG,EAAK,KAAQlkF,EAAI,KAAQ8jF,EAAM,KAAQC,EAC9HI,EAAK,KAAQnkF,EAAI,KAAQ8jF,EAAM,KAAQC,EAAKK,EAAK,KAAQpkF,EAAI,KAAQ8jF,EAAM,KAAQC,EAAKM,EAAK,KAAQrkF,EAAI,KAAQ8jF,EAAM,KAAQC,EAC/Hv/D,EAAK,KAAQxkB,EAAI,GAAM8jF,EAAM,KAAOC,EAAKO,EAAK,KAAQtkF,EAAI,KAAQ8jF,EAAM,KAAOC,EAAKQ,EAAK,KAAQvkF,EAAI,KAAQ8jF,EAAM,GAAMC,EAC/H,IAAA,IAASvgG,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAAG,CACjC,MAAM7B,EAAIgT,EAAKnR,EAAI,GACboB,EAAI+P,EAAKnR,EAAI,GACb2X,EAAIxG,EAAKnR,EAAI,GACbtB,EAAIyS,EAAKnR,EAAI,GACnBmR,EAAKnR,EAAI,GAAKwgG,EAAKriG,EAAIsiG,EAAKr/F,EAAIs/F,EAAK/oF,EACrCxG,EAAKnR,EAAI,GAAK2gG,EAAKxiG,EAAIyiG,EAAKx/F,EAAIy/F,EAAKlpF,EACrCxG,EAAKnR,EAAI,GAAKghC,EAAK7iC,EAAI2iG,EAAK1/F,EAAI2/F,EAAKppF,EACrCxG,EAAKnR,EAAI,GAAKtB,CAClB,CACJ,ESgDQ+5D,OGnEc,SAAUjL,GAC5B,MAAMr8C,EAAOq8C,EAAUr8C,KAAMrD,EAAMqD,EAAKjT,OACxC,IAAA,IAAS8B,EAAI,EAAGA,EAAI8N,EAAK9N,GAAK,EAC1BmR,EAAKnR,GAAK,IAAMmR,EAAKnR,GACrBmR,EAAKnR,EAAI,GAAK,IAAMmR,EAAKnR,EAAI,GAC7BmR,EAAKnR,EAAI,GAAK,IAAMmR,EAAKnR,EAAI,EAErC,EH6DQihG,aPLoB,SAAUzzC,GAClC,MAAM0zC,EAAQ1zC,EAAU7iD,MAAOw2F,EAAQ3zC,EAAU3iD,OACjD,IAAIG,EAAGE,EAAGk2F,EAAMphG,EAAG7B,EAAGiD,EAAGuW,EAAGjZ,EAAG2iG,EAAQC,EACnCC,EAAQ/3F,KAAKE,MAAMjI,KAAK+/F,qBAC5B,MAAMjxD,EAAQ/mC,KAAKE,MAAMjI,KAAKggG,qBACxB5yF,EAASrF,KAAKk+B,MAAOw5D,GAAS3wD,EAAQ,KAAQ,KACpD,GAAIgxD,EAAQ,EACR,OAEJ,MAAMG,EAAa3sD,GAAKmL,sBACxBwhD,EAAW/2F,MAAQu2F,EACnBQ,EAAW72F,OAASs2F,EACpB,MAAMQ,EAAcD,EACfxgD,WAAW,MACXK,aAAa,EAAG,EAAG2/C,EAAOC,GAC/BpsD,GAAK0M,cAAcigD,GA1EP,SAAUjhD,EAAKmhD,EAAKC,GAChC,MAAMC,EAAYrhD,EAAItvC,KAAM4wF,EAAYH,EAAIzwF,KAAM+vF,EAAQzgD,EAAI91C,MAAOw2F,EAAQ1gD,EAAI51C,OAAQm3F,EAAOH,EAAII,cAAgBf,EAAQ,EAAGgB,EAAOL,EAAIM,cAAgBhB,EAAQ,EAClK,IAAIjC,EAAO11F,KAAKqrC,KAAKmtD,EAAOA,EAAOE,EAAOA,GACtCl3F,EAAIk2F,EAAQc,EACZ92F,EAAIi2F,EAAQe,EAChB,MAAM/uD,EAAM3pC,KAAKqrC,KAAK7pC,EAAIA,EAAIE,EAAIA,GAClCg0F,EAAO/rD,EAAM+rD,EAAO/rD,EAAM+rD,EAC1B,MAAMkD,EAAQjB,EAAOkB,EAAQnB,EACvBoB,EAAe,IAAMD,EAAS74F,KAAKomC,GAAM,IAC/C,IAAA,IAASwxB,EAAQ,EAAGA,EAAQihC,EAAOjhC,GAAS,EAAG,CAC3C,MAAM/tB,EAAM7pC,KAAK6pC,IAAI+tB,EAAQkhC,GACvBlvD,EAAM5pC,KAAK4pC,IAAIguB,EAAQkhC,GAC7B,IAAA,IAAS76C,EAAS,EAAGA,EAAS26C,EAAO36C,GAAU,EAAG,CAC9Cz8C,EAAIxB,KAAKk+B,MAAMs6D,EAAS9C,EAAOz3C,EAAU26C,EAAShvD,GAClDloC,EAAI1B,KAAKk+B,MAAMw6D,EAAShD,EAAOz3C,EAAU26C,EAAS/uD,GAClD,IAAIrzC,EAAsB,GAAjBkL,EAAIg2F,EAAQl2F,GACrB,MAAM7M,EAAI2jG,EAAU9hG,EAAI,GAClBoB,EAAI0gG,EAAU9hG,EAAI,GAClB2X,EAAImqF,EAAU9hG,EAAI,GAClBtB,EAAIojG,EAAU9hG,EAAI,GACxBA,EAA+B,GAA1BohE,EAAQ3Z,EAASy5C,GACtBa,EAAU/hG,EAAI,GAAK7B,EACnB4jG,EAAU/hG,EAAI,GAAKoB,EACnB2gG,EAAU/hG,EAAI,GAAK2X,EACnBoqF,EAAU/hG,EAAI,GAAKtB,CACvB,CACJ,CACJ,CAgDI6jG,CAAQ/0C,EAAWm0C,EAAa,CAC5BM,aAAcf,EAAQ,EACtBiB,aAAchB,EAAQ,IAE1B,IAAIqB,EAAiBtB,EAAQ13F,KAAKoxE,IAAI,EAAG2mB,GACzC,KAAOiB,GAAkB,GACrBA,GAAkC,EAClCjB,GAAS,EAEbiB,EAAiBh5F,KAAK8xD,KAAKknC,GAC3B,IAAIC,EAAcD,EACdE,EAAS,EAAGC,EAAOF,EAAaG,EAAS,EAM7C,IALI/zF,EAAS2zF,EAAiBtB,IAC1BwB,EAASD,EACTE,EAAO,EACPC,GAAS,GAER13F,EAAI,EAAGA,EAAIi2F,EAAOj2F,GAAK,EACxB,IAAKF,EAAI03F,EAAQ13F,IAAM23F,EAAM33F,GAAK43F,EAC9BxB,EAAO53F,KAAKE,MAAMsB,EAAI6D,GAAUqyF,EAChCG,EAA8B,GAApBH,EAAQh2F,EAAIk2F,GACtBjjG,EAAIwjG,EAAYxwF,KAAKkwF,EAAS,GAC9BjgG,EAAIugG,EAAYxwF,KAAKkwF,EAAS,GAC9B1pF,EAAIgqF,EAAYxwF,KAAKkwF,EAAS,GAC9B3iG,EAAIijG,EAAYxwF,KAAKkwF,EAAS,GAC9BC,EAA2B,GAAjBJ,EAAQh2F,EAAIF,GACtB22F,EAAYxwF,KAAKmwF,EAAS,GAAKnjG,EAC/BwjG,EAAYxwF,KAAKmwF,EAAS,GAAKlgG,EAC/BugG,EAAYxwF,KAAKmwF,EAAS,GAAK3pF,EAC/BgqF,EAAYxwF,KAAKmwF,EAAS,GAAK5iG,EAGvC,IAAKwM,EAAI,EAAGA,EAAIi2F,EAAOj2F,GAAK,EAExB,IADAu3F,EAAcj5F,KAAKk+B,MAAM86D,GACpBxiG,EAAI,EAAGA,EAAIuhG,EAAOvhG,GAAK,EAAG,CAC3B,IAAKgL,EAAI,EAAGA,EAAIy3F,EAAc,EAAGz3F,GAAK,EAClCq2F,EAA2B,GAAjBH,EAAQh2F,EAAIF,GACtB7M,EAAIwjG,EAAYxwF,KAAKkwF,EAAS,GAC9BjgG,EAAIugG,EAAYxwF,KAAKkwF,EAAS,GAC9B1pF,EAAIgqF,EAAYxwF,KAAKkwF,EAAS,GAC9B3iG,EAAIijG,EAAYxwF,KAAKkwF,EAAS,GAC9BC,EAAiD,GAAvCJ,EAAQh2F,EAAkB,EAAdu3F,EAAkBz3F,EAAI,GAC5C22F,EAAYxwF,KAAKmwF,EAAS,GAAKnjG,EAC/BwjG,EAAYxwF,KAAKmwF,EAAS,GAAKlgG,EAC/BugG,EAAYxwF,KAAKmwF,EAAS,GAAK3pF,EAC/BgqF,EAAYxwF,KAAKmwF,EAAS,GAAK5iG,EAEnC+jG,GAAe,CACnB,EA/FU,SAAUhiD,EAAKmhD,EAAKC,GAClC,MAAMC,EAAYrhD,EAAItvC,KAAM4wF,EAAYH,EAAIzwF,KAAM+vF,EAAQzgD,EAAI91C,MAAOw2F,EAAQ1gD,EAAI51C,OAAQm3F,EAAOH,EAAII,cAAgBf,EAAQ,EAAGgB,EAAOL,EAAIM,cAAgBhB,EAAQ,EAClK,IAAIjC,EAAO11F,KAAKqrC,KAAKmtD,EAAOA,EAAOE,EAAOA,GACtCl3F,EAAIk2F,EAAQc,EACZ92F,EAAIi2F,EAAQe,EAChB,MAAM/uD,EAAM3pC,KAAKqrC,KAAK7pC,EAAIA,EAAIE,EAAIA,GAClCg0F,EAAO/rD,EAAM+rD,EAAO/rD,EAAM+rD,EAC1B,MAAMkD,EAAQjB,EAAOkB,EAAQnB,EAC7B,IAAI58C,EAAIC,EACR,IAAKv5C,EAAI,EAAGA,EAAIk2F,EAAOl2F,GAAK,EACxB,IAAKE,EAAI,EAAGA,EAAIi2F,EAAOj2F,GAAK,EAAG,CAC3B,MAAM2oC,EAAK7oC,EAAIg3F,EACTluD,EAAK5oC,EAAIg3F,EACTz6C,EAAUj+C,KAAKqrC,KAAKhB,EAAKA,EAAKC,EAAKA,GAAMsuD,EAASlD,EACxD,IAAI99B,GAA+B,IAArB53D,KAAKm8E,MAAM7xC,EAAID,GAAarqC,KAAKomC,GAAK,IAPU,GAOU,IACxEwxB,EAASA,EAAQihC,EAAS,IAC1B/9C,EAAK96C,KAAKk+B,MAAM05B,GAChB7c,EAAK/6C,KAAKk+B,MAAM+f,GAChB,IAAIznD,EAAwB,GAAnBukD,EAAK28C,EAAQ58C,GACtB,MAAMnmD,EAAI2jG,EAAU9hG,EAAI,GAClBoB,EAAI0gG,EAAU9hG,EAAI,GAClB2X,EAAImqF,EAAU9hG,EAAI,GAClBtB,EAAIojG,EAAU9hG,EAAI,GACxBA,EAAsB,GAAjBkL,EAAIg2F,EAAQl2F,GACjB+2F,EAAU/hG,EAAI,GAAK7B,EACnB4jG,EAAU/hG,EAAI,GAAKoB,EACnB2gG,EAAU/hG,EAAI,GAAK2X,EACnBoqF,EAAU/hG,EAAI,GAAKtB,CACvB,CAER,CAmEImkG,CAAUlB,EAAan0C,EAAW,CAAmB,EACzD,EO7DQs1C,KRsEY,SAAUt1C,GAE1B,IAAIu1C,EAnHR,SAAwB9H,EAAOvxD,GAC3B,MAAMs5D,EAAUhI,GAAQC,EAAO,EAAG,GAC5BgI,EAAUjI,GAAQC,EAAOA,EAAMtwF,MAAQ,EAAG,GAC1Cu4F,EAAUlI,GAAQC,EAAO,EAAGA,EAAMpwF,OAAS,GAC3Cs4F,EAAUnI,GAAQC,EAAOA,EAAMtwF,MAAQ,EAAGswF,EAAMpwF,OAAS,GACzDu4F,EAAQ15D,GAAa,GAC3B,GAAIwxD,GAAY8H,EAASC,GAAWG,GAChClI,GAAY+H,EAASE,GAAWC,GAChClI,GAAYiI,EAASD,GAAWE,GAChClI,GAAYgI,EAASF,GAAWI,EAAO,CACvC,MAAMC,EAtBd,SAAiBC,GACb,MAAM1kF,EAAI,CAAC,EAAG,EAAG,GACjB,IAAA,IAAS5e,EAAI,EAAGA,EAAIsjG,EAAKplG,OAAQ8B,IAC7B4e,EAAE,IAAM0kF,EAAKtjG,GAAG,GAChB4e,EAAE,IAAM0kF,EAAKtjG,GAAG,GAChB4e,EAAE,IAAM0kF,EAAKtjG,GAAG,GAKpB,OAHA4e,EAAE,IAAM0kF,EAAKplG,OACb0gB,EAAE,IAAM0kF,EAAKplG,OACb0gB,EAAE,IAAM0kF,EAAKplG,OACN0gB,CACX,CAWqB2kF,CAAQ,CAACN,EAASD,EAASG,EAASD,IAC3CH,EAAO,GACb,IAAA,IAAS/iG,EAAI,EAAGA,EAAIi7F,EAAMtwF,MAAQswF,EAAMpwF,OAAQ7K,IAAK,CACjD,MAAMg0C,EAAIknD,GAAYmI,EAAM,CACxBpI,EAAM9pF,KAAS,EAAJnR,GACXi7F,EAAM9pF,KAAS,EAAJnR,EAAQ,GACnBi7F,EAAM9pF,KAAS,EAAJnR,EAAQ,KAEvB+iG,EAAK/iG,GAAKg0C,EAAIovD,EAAQ,EAAI,GAC9B,CACA,OAAOL,CACX,CACJ,CA6FeS,CAAeh2C,EADR/rD,KAAKioC,aAQvB,OANIq5D,IACAA,EAzFR,SAAmBA,EAAM51C,EAAIC,GACzB,MAAMq2C,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnCvqF,EAAO1P,KAAKE,MAAMF,KAAKqrC,KAAK4uD,EAAQvlG,SACpCwlG,EAAWl6F,KAAKk+B,MAAMxuB,EAAO,GAC7ByqF,EAAa,GACnB,IAAA,IAASz4F,EAAI,EAAGA,EAAIkiD,EAAIliD,IACpB,IAAA,IAASF,EAAI,EAAGA,EAAImiD,EAAIniD,IAAK,CACzB,MAAM44F,EAAK14F,EAAIiiD,EAAKniD,EACpB,IAAItM,EAAI,EACR,IAAA,IAASoiF,EAAK,EAAGA,EAAK5nE,EAAM4nE,IACxB,IAAA,IAASD,EAAK,EAAGA,EAAK3nE,EAAM2nE,IAAM,CAC9B,MAAMgjB,EAAM34F,EAAI41E,EAAK4iB,EACfI,EAAM94F,EAAI61E,EAAK6iB,EACrB,GAAIG,GAAO,GAAKA,EAAMz2C,GAAM02C,GAAO,GAAKA,EAAM32C,EAAI,CAC9C,MACM42C,EAAKN,EAAQ3iB,EAAK5nE,EAAO2nE,GAC/BniF,GAAKqkG,EAFUc,EAAM12C,EAAK22C,GAENC,CACxB,CACJ,CAEJJ,EAAWC,GAAY,OAANllG,EAAgB,IAAM,CAC3C,CAEJ,OAAOilG,CACX,CAiEeK,CAAUjB,EAAMv1C,EAAU7iD,MAAO6iD,EAAU3iD,QAClDk4F,EAjER,SAAoBA,EAAM51C,EAAIC,GAC1B,MAAMq2C,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACnCvqF,EAAO1P,KAAKE,MAAMF,KAAKqrC,KAAK4uD,EAAQvlG,SACpCwlG,EAAWl6F,KAAKk+B,MAAMxuB,EAAO,GAC7ByqF,EAAa,GACnB,IAAA,IAASz4F,EAAI,EAAGA,EAAIkiD,EAAIliD,IACpB,IAAA,IAASF,EAAI,EAAGA,EAAImiD,EAAIniD,IAAK,CACzB,MAAM44F,EAAK14F,EAAIiiD,EAAKniD,EACpB,IAAItM,EAAI,EACR,IAAA,IAASoiF,EAAK,EAAGA,EAAK5nE,EAAM4nE,IACxB,IAAA,IAASD,EAAK,EAAGA,EAAK3nE,EAAM2nE,IAAM,CAC9B,MAAMgjB,EAAM34F,EAAI41E,EAAK4iB,EACfI,EAAM94F,EAAI61E,EAAK6iB,EACrB,GAAIG,GAAO,GAAKA,EAAMz2C,GAAM02C,GAAO,GAAKA,EAAM32C,EAAI,CAC9C,MACM42C,EAAKN,EAAQ3iB,EAAK5nE,EAAO2nE,GAC/BniF,GAAKqkG,EAFUc,EAAM12C,EAAK22C,GAENC,CACxB,CACJ,CAEJJ,EAAWC,GAAMllG,GAAK,KAAU,IAAM,CAC1C,CAEJ,OAAOilG,CACX,CAyCeM,CAAWlB,EAAMv1C,EAAU7iD,MAAO6iD,EAAU3iD,QACnDk4F,EAzCR,SAAwBA,EAAM51C,EAAIC,GAC9B,MAAMq2C,EAAU,CACZ,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,EACJ,EAAI,GAEFvqF,EAAO1P,KAAKE,MAAMF,KAAKqrC,KAAK4uD,EAAQvlG,SACpCwlG,EAAWl6F,KAAKk+B,MAAMxuB,EAAO,GAC7ByqF,EAAa,GACnB,IAAA,IAASz4F,EAAI,EAAGA,EAAIkiD,EAAIliD,IACpB,IAAA,IAASF,EAAI,EAAGA,EAAImiD,EAAIniD,IAAK,CACzB,MAAM44F,EAAK14F,EAAIiiD,EAAKniD,EACpB,IAAItM,EAAI,EACR,IAAA,IAASoiF,EAAK,EAAGA,EAAK5nE,EAAM4nE,IACxB,IAAA,IAASD,EAAK,EAAGA,EAAK3nE,EAAM2nE,IAAM,CAC9B,MAAMgjB,EAAM34F,EAAI41E,EAAK4iB,EACfI,EAAM94F,EAAI61E,EAAK6iB,EACrB,GAAIG,GAAO,GAAKA,EAAMz2C,GAAM02C,GAAO,GAAKA,EAAM32C,EAAI,CAC9C,MACM42C,EAAKN,EAAQ3iB,EAAK5nE,EAAO2nE,GAC/BniF,GAAKqkG,EAFUc,EAAM12C,EAAK22C,GAENC,CACxB,CACJ,CAEJJ,EAAWC,GAAMllG,CACrB,CAEJ,OAAOilG,CACX,CAOeO,CAAenB,EAAMv1C,EAAU7iD,MAAO6iD,EAAU3iD,QAhG/D,SAAmBowF,EAAO8H,GACtB,IAAA,IAAS/iG,EAAI,EAAGA,EAAIi7F,EAAMtwF,MAAQswF,EAAMpwF,OAAQ7K,IAC5Ci7F,EAAM9pF,KAAK,EAAInR,EAAI,GAAK+iG,EAAK/iG,EAErC,CA6FQmkG,CAAU32C,EAAWu1C,IAElBv1C,CACX,EQ/EQ42C,MNnEa,SAAU52C,GAC3B,MAAM62C,EAAwB,IAAf5iG,KAAK6iG,QAAenzF,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAAQqmG,EAAOF,EAAS,EACjG,IAAA,IAASrkG,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAC9BmR,EAAKnR,EAAI,IAAMukG,EAAO,EAAIA,EAAO/6F,KAAKm+B,SACtCx2B,EAAKnR,EAAI,IAAMukG,EAAO,EAAIA,EAAO/6F,KAAKm+B,SACtCx2B,EAAKnR,EAAI,IAAMukG,EAAO,EAAIA,EAAO/6F,KAAKm+B,QAE9C,EM6DQ68D,SLnEgB,SAAUh3C,GAC9B,IAAIi3C,EAAYj7F,KAAK8xD,KAAK75D,KAAKgjG,aAAc95F,EAAQ6iD,EAAU7iD,MAAOE,EAAS2iD,EAAU3iD,OAAQ65F,EAASl7F,KAAK8xD,KAAK3wD,EAAQ85F,GAAYE,EAASn7F,KAAK8xD,KAAKzwD,EAAS45F,GAAYtzF,EAAOq8C,EAAUr8C,KACjM,GAAIszF,GAAa,EACb1vD,GAAKxzC,MAAM,wCAGf,IAAA,IAASqjG,EAAO,EAAGA,EAAOF,EAAQE,GAAQ,EACtC,IAAA,IAASC,EAAO,EAAGA,EAAOF,EAAQE,GAAQ,EAAG,CACzC,IAAI/nD,EAAM,EACNlE,EAAQ,EACR7C,EAAO,EACP+uD,EAAQ,EACZ,MAAMC,EAAYH,EAAOH,EACnBO,EAAUD,EAAYN,EACtBQ,EAAYJ,EAAOJ,EACnBS,EAAUD,EAAYR,EAC5B,IAAIU,EAAc,EAClB,IAAA,IAASn6F,EAAI+5F,EAAW/5F,EAAIg6F,EAASh6F,GAAK,EACtC,KAAIA,GAAKL,GAGT,IAAA,IAASO,EAAI+5F,EAAW/5F,EAAIg6F,EAASh6F,GAAK,EAAG,CACzC,GAAIA,GAAKL,EACL,SAEJ,MAAM7K,EAAsB,GAAjB2K,EAAQO,EAAIF,GACvB8xC,GAAO3rC,EAAKnR,EAAI,GAChB44C,GAASznC,EAAKnR,EAAI,GAClB+1C,GAAQ5kC,EAAKnR,EAAI,GACjB8kG,GAAS3zF,EAAKnR,EAAI,GAClBmlG,GAAe,CACnB,CAEJroD,GAAYqoD,EACZvsD,GAAgBusD,EAChBpvD,GAAcovD,EACdL,GAAgBK,EAChB,IAAA,IAASn6F,EAAI+5F,EAAW/5F,EAAIg6F,EAASh6F,GAAK,EACtC,KAAIA,GAAKL,GAGT,IAAA,IAASO,EAAI+5F,EAAW/5F,EAAIg6F,EAASh6F,GAAK,EAAG,CACzC,GAAIA,GAAKL,EACL,SAEJ,MAAM7K,EAAsB,GAAjB2K,EAAQO,EAAIF,GACvBmG,EAAKnR,EAAI,GAAK88C,EACd3rC,EAAKnR,EAAI,GAAK44C,EACdznC,EAAKnR,EAAI,GAAK+1C,EACd5kC,EAAKnR,EAAI,GAAK8kG,CAClB,CAER,CAER,EKcQM,UJrEiB,SAAU53C,GAC/B,MAAM63C,EAAS77F,KAAKE,MAAsB,IAAhBjI,KAAK4jG,UAAkB,EAAGl0F,EAAOq8C,EAAUr8C,KAAMrD,EAAMqD,EAAKjT,OAAQ60C,EAAQ,IAAMsyD,EAC5G,IAAA,IAASrlG,EAAI,EAAGA,EAAI8N,EAAK9N,GAAK,EAC1BmR,EAAKnR,GAAKwJ,KAAKk+B,MAAMv2B,EAAKnR,GAAK+yC,GAASA,CAEhD,EIiEQuyD,IHtEW,SAAU93C,GACzB,MAAMr8C,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAAQ4+C,EAAMr7C,KAAKq7C,MAAOlE,EAAQn3C,KAAKm3C,QAAS7C,EAAOt0C,KAAKs0C,OACxG,IAAA,IAAS/1C,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAAG,CACjC,MAAMk4D,GAAc,IAAO/mD,EAAKnR,GAAK,GAAMmR,EAAKnR,EAAI,GAAK,IAAOmR,EAAKnR,EAAI,IAAM,IAC/EmR,EAAKnR,GAAKk4D,EAAapb,EACvB3rC,EAAKnR,EAAI,GAAKk4D,EAAatf,EAC3BznC,EAAKnR,EAAI,GAAKk4D,EAAaniB,EAC3B5kC,EAAKnR,EAAI,GAAKmR,EAAKnR,EAAI,EAC3B,CACJ,EG8DQulG,KFvEY,SAAU/3C,GAC1B,MAAMr8C,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAAQ4+C,EAAMr7C,KAAKq7C,MAAOlE,EAAQn3C,KAAKm3C,QAAS7C,EAAOt0C,KAAKs0C,OAAQ+uD,EAAQrjG,KAAKqjG,QAC7H,IAAA,IAAS9kG,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAAG,CACjC,MAAMwlG,EAAK,EAAIV,EACf3zF,EAAKnR,GAAK88C,EAAMgoD,EAAQ3zF,EAAKnR,GAAKwlG,EAClCr0F,EAAKnR,EAAI,GAAK44C,EAAQksD,EAAQ3zF,EAAKnR,EAAI,GAAKwlG,EAC5Cr0F,EAAKnR,EAAI,GAAK+1C,EAAO+uD,EAAQ3zF,EAAKnR,EAAI,GAAKwlG,CAC/C,CACJ,EEgEQhtC,MI3Ea,SAAUhL,GAC3B,MAAMr8C,EAAOq8C,EAAUr8C,KAAMisF,EAAUjsF,EAAKjT,OAC5C,IAAA,IAAS8B,EAAI,EAAGA,EAAIo9F,EAASp9F,GAAK,EAAG,CACjC,MAAM7B,EAAIgT,EAAKnR,EAAI,GACboB,EAAI+P,EAAKnR,EAAI,GACb2X,EAAIxG,EAAKnR,EAAI,GACnBmR,EAAKnR,EAAI,GAAKwJ,KAAKC,IAAI,IAAS,KAAJtL,EAAgB,KAAJiD,EAAgB,KAAJuW,GACpDxG,EAAKnR,EAAI,GAAKwJ,KAAKC,IAAI,IAAS,KAAJtL,EAAgB,KAAJiD,EAAgB,KAAJuW,GACpDxG,EAAKnR,EAAI,GAAKwJ,KAAKC,IAAI,IAAS,KAAJtL,EAAgB,KAAJiD,EAAgB,KAAJuW,EACxD,CACJ,EJkEQ8tF,SK5EgB,SAAUj4C,GAC9B,MACMxZ,EAAIwZ,EAAUr8C,KACpB,IAAA,IAASnR,EAAI,EAAGA,EAAIg0C,EAAE91C,OAAQ8B,GAAK,EAAG,CAClC,MAAM7B,EAAI61C,EAAEh0C,GAAIoB,EAAI4yC,EAAEh0C,EAAI,GAAI2X,EAAIq8B,EAAEh0C,EAAI,GAC9B,MAAS7B,EAAI,MAASiD,EAAI,MAASuW,GAJ/B,MAMVq8B,EAAEh0C,GAAK,IAAM7B,EACb61C,EAAEh0C,EAAI,GAAK,IAAMoB,EACjB4yC,EAAEh0C,EAAI,GAAK,IAAM2X,EAEzB,CACA,OAAO61C,CACX,ELgEQk4C,UD1EiB,SAAUl4C,GAC/B,MAAMm4C,EAA2B,IAAnBlkG,KAAKioC,YAAmBv4B,EAAOq8C,EAAUr8C,KAAMrD,EAAMqD,EAAKjT,OACxE,IAAA,IAAS8B,EAAI,EAAGA,EAAI8N,EAAK9N,GAAK,EAC1BmR,EAAKnR,GAAKmR,EAAKnR,GAAK2lG,EAAQ,EAAI,GAExC,KONA,IAAIhoG,GAAIY,OAAOmoE,OAAQzoE,GAAIM,OAAOC,eAAgBL,GAAII,OAAO4nD,yBAA0BnmD,GAAIzB,OAAOssB,oBAAqBnsB,GAAIH,OAAO0mE,eAAgBrmE,GAAIL,OAAOP,UAAUkL,eAAgBjH,GAAI,CAACrE,EAAGD,IAAM,KAAOA,GAAKC,GAAGD,EAAI,CAAEiF,QAAS,CAAA,IAAMA,QAASjF,GAAIA,EAAEiF,SAMrPogD,GAAI,CAACplD,EAAGO,EAAG6B,KAAOA,EAAS,MAALpC,EAAY,CAAA,EAAKD,GAAEe,GAAEd,IANwN,EAACA,EAAGD,EAAGe,EAAGuD,KAC/Q,GAAItE,GAAiB,iBAALA,GAA6B,mBAALA,EAAiB,IAAA,IAAwCq2C,EAA/B3zC,EAAIL,GAAErC,GAAIqlD,EAAI,EAAG9iD,EAAIG,EAAEnC,OAAW8kD,EAAI9iD,EAAG8iD,IAAKhP,EAAI3zC,EAAE2iD,IAAKpkD,GAAE2B,KAAK3C,EAAGo2C,IAAMA,IAAMt1C,GAAKT,GAAEL,EAAGo2C,EAAG,CAC7JxxC,KAAO5E,GAAMD,EAAEC,IAAIyE,KAAK,KAAM2xC,GAC9B51C,aAAc6D,EAAI9D,GAAER,EAAGq2C,KAAO/xC,EAAE7D,aAEjC,OAAOR,GAC2CyC,CAA6BpC,GAAE+B,EAAG,UAAW,CAC/FW,MAAO/C,EACPQ,YAAY,IACLR,IAuDR,SAASmlD,GAAEnlD,EAAGD,GACb,IAAIM,EAAGE,EAAG6B,EAAGtB,EAAId,EAAEoiB,MAAM,iCACzB,GAAIthB,EAAGT,EAAI00B,SAASj0B,EAAE,IAAKP,EAAIw0B,SAASj0B,EAAE,IAAKsB,EAAI2yB,SAASj0B,EAAE,QAAE,MACvDd,EAAEwiB,WAAW,MAAQxiB,EAAEM,QAAU,GACrC,OAAON,EADiCK,EAAI00B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAK3C,EAAIw0B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAKd,EAAI2yB,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,GAC/HlD,CACZ,OAAOK,EAAIuL,KAAKE,MAAMzL,GAAK,EAAIN,IAAKQ,EAAIqL,KAAKE,MAAMvL,GAAK,EAAIR,IAAKqC,EAAIwJ,KAAKE,MAAM1J,GAAK,EAAIrC,IAAK,OAAOM,MAAME,MAAM6B,IAClH,CACA,SAASoB,GAAExD,EAAGD,GACb,IAAIM,EAAGE,EAAG6B,EAAGtB,EAAId,EAAEoiB,MAAM,iCACzB,GAAIthB,EAAGT,EAAI00B,SAASj0B,EAAE,IAAKP,EAAIw0B,SAASj0B,EAAE,IAAKsB,EAAI2yB,SAASj0B,EAAE,QAAE,MACvDd,EAAEwiB,WAAW,MAAQxiB,EAAEM,QAAU,GACrC,OAAON,EADiCK,EAAI00B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAK3C,EAAIw0B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAKd,EAAI2yB,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,GAC/HlD,CACZ,OAAOK,EAAIuL,KAAKC,IAAI,IAAKD,KAAKE,MAAMzL,GAAK,IAAMA,GAAKN,IAAKQ,EAAIqL,KAAKC,IAAI,IAAKD,KAAKE,MAAMvL,GAAK,IAAMA,GAAKR,IAAKqC,EAAIwJ,KAAKC,IAAI,IAAKD,KAAKE,MAAM1J,GAAK,IAAMA,GAAKrC,IAAK,OAAOM,MAAME,MAAM6B,IACjL,CACA,SAAS6iD,GAAEjlD,EAAGD,GACb,MAAO,QAAQg1B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,QAAQ6xB,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,QAAQ6xB,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,QAAQnD,IAChH,CAGA,IAAI6e,GAAI,MACP,WAAAze,CAAYH,GACX6D,KAAKmkG,UAA4B,IAAIhkG,IAAOH,KAAKgkC,UAAY7nC,CAC9D,CACA,EAAAopB,CAAGppB,EAAGD,GACL,IAAIM,EAAIwD,KAAKmkG,UAAUpjG,IAAI5E,GAC3BK,IAAMA,EAAoB,IAAIgf,IAAOxb,KAAKmkG,UAAUxhG,IAAIxG,EAAGK,IAAKA,EAAE+G,IAAIrH,EACvE,CACA,GAAA2oB,CAAI1oB,EAAGD,GACN8D,KAAKmkG,UAAUpjG,IAAI5E,IAAIyG,OAAO1G,EAC/B,CACA,kBAAAkoG,GACCpkG,KAAKmkG,UAAU77C,OAChB,CACA,IAAA+7C,CAAKloG,EAAGD,GACP8D,KAAKmkG,UAAUpjG,IAAI5E,IAAI0F,QAAS1F,GAAMA,EAAED,IAAK8D,KAAKgkC,WAAahkC,KAAKgkC,UAAUhlB,cAAc,IAAIslF,YAAYnoG,EAAG,CAAEooG,OAAQroG,IAC1H,GACEuN,GAAI,MACN,WAAAnN,CAAYH,EAAGD,GACd8D,KAAKujB,OAAS,IAAIxI,GAAK/a,KAAKwkG,WAA6B,IAAIrkG,IAAOH,KAAKykG,MAAQ,GAAIzkG,KAAK0kG,UAAYvoG,EAAG6D,KAAK2kG,SAAWzoG,CAC1H,CACA,OAAA0oG,CAAQzoG,EAAGD,GACV,IAAIM,EAAIwD,KAAK0kG,UAAUG,QAAQ1oG,GAC/B,SAAQK,IAAMA,EAAEsoG,SAAS5oG,MAAW8D,KAAK+kG,YAAc5oG,EAAG6D,KAAKglG,oBAAsBxoG,EAAGwD,KAAKilG,cAAgB/oG,EAAG8D,KAAKklG,mBAAqB1oG,EAAE2oG,aAAcnlG,KAAKujB,OAAO8gF,KAAK,OAAQ,CAClL/kE,KAAM9iC,EACNyjE,OAAQ/jE,KACL,EACL,CACA,WAAAkiE,CAAYjiE,EAAGD,GAAI,GAClB,IAAIM,EAAIwD,KAAK0kG,UAAUU,QAAQjpG,GAC/B,IAAKK,EAAG,OAAO,EACf,IAAIE,EAAIsD,KAAK0kG,UAAUG,QAAQroG,EAAE8iC,MAAO/gC,EAAI7B,GAAGyoG,aAAcloG,EAAI+C,KAAK+kG,cAAgBvoG,EAAE8iC,MAAQt/B,KAAKilG,gBAAkBzoG,EAAEsgF,QAAW,IAANv+E,GAAgByB,KAAKklG,qBAAuB3mG,QAAW,IAAN7B,GAAgBsD,KAAKglG,sBAAwBtoG,EAC5N,OAAOO,GAAK+C,KAAK4kG,QAAQpoG,EAAE8iC,KAAM9iC,EAAEsgF,GAAI98E,KAAKqlG,eAAiBlpG,EAAG6D,KAAKujB,OAAO8gF,KAAK,WAAY,CAC5FiB,OAAQnpG,EACRgR,OAAQjR,EACRqpG,YAAatoG,KACV,CACL,CACA,oBAAAuoG,CAAqBrpG,GACpB6D,KAAKqlG,eAAiBlpG,EAAG6D,KAAKujB,OAAO8gF,KAAK,WAAY,CACrDiB,OAAQnpG,EACRgR,QAAQ,EACRo4F,aAAa,GAEf,CACA,eAAAE,QACyB,IAAxBzlG,KAAKqlG,gBAA6BrlG,KAAKujB,OAAO8gF,KAAK,WAAY,CAC9DiB,OAAQtlG,KAAKqlG,eACbl4F,QAAQ,EACRo4F,aAAa,GAEf,CACA,aAAAG,GACC1lG,KAAKqlG,oBAAiB,EAAQrlG,KAAKujB,OAAO8gF,KAAK,WAAY,CAC1DiB,YAAQ,EACRn4F,QAAQ,EACRo4F,aAAa,GAEf,CACA,aAAAI,CAAcxpG,EAAGD,GAChB,IAAIM,EAAIwD,KAAK0kG,UAAUU,QAAQjpG,GAC/B,IAAKK,EAAG,OAAO,EACf,IAAIE,EAAIsD,KAAK+kG,cAAgBvoG,EAAE8iC,MAAQt/B,KAAKilG,gBAAkBzoG,EAAEsgF,EAChE,OAAQpgF,GAAKsD,KAAK4lG,gBAAgBppG,KAAOwD,KAAK4kG,QAAQpoG,EAAE8iC,KAAM9iC,EAAEsgF,GAAI98E,KAAK6lG,aAAe1pG,EAAG6D,KAAKujB,OAAO8gF,KAAK,SAAU,CACrHiB,OAAQnpG,EACR2pG,QAAS5pG,GAAKQ,KACX,CACL,CACA,eAAAkpG,CAAgBzpG,GACf,IAAID,EAAI8D,KAAK0kG,UAAUG,QAAQ1oG,EAAEmjC,MAAO9iC,EAAIN,GAAGipG,aAC/C,gBAAO3oG,GAAgBwD,KAAKklG,qBAAuB1oG,QAAW,IAANN,GAAgB8D,KAAKglG,sBAAwB9oG,CACtG,CACA,YAAA6pG,CAAa5pG,EAAGD,GACf,IAAIM,EAAIwD,KAAK0kG,UAAUU,QAAQjpG,GAC/B,QAAOK,IAAKwD,KAAKwkG,WAAW7hG,IAAIxG,EAAG,CAClC+jD,MAAOhkD,EACPojC,KAAM9iC,EAAE8iC,KACRw9C,EAAGtgF,EAAEsgF,IACF98E,KAAKujB,OAAO8gF,KAAK,YAAa,CACjCiB,OAAQnpG,EACR+jD,MAAOhkD,KACJ,EACL,CACA,eAAA8pG,CAAgB7pG,GACf6D,KAAKwkG,WAAWxiG,IAAI7F,KAAO6D,KAAKwkG,WAAW5hG,OAAOzG,GAAI6D,KAAKujB,OAAO8gF,KAAK,YAAa,CACnFiB,OAAQnpG,EACR+jD,WAAO,IAET,CACA,YAAA+lD,CAAa9pG,GACZ,OAAO6D,KAAKwkG,WAAWxiG,IAAI7F,EAC5B,CACA,eAAA+pG,GACClmG,KAAKwkG,WAAWl8C,QAAStoD,KAAKujB,OAAO8gF,KAAK,aAAS,EACpD,CACA,OAAA8B,CAAQhqG,EAAGD,EAAI,WACd8D,KAAKykG,MAAMxlG,KAAK,CACfmnG,UAAWjqG,EACX+jD,MAAOhkD,IACJ8D,KAAKujB,OAAO8gF,KAAK,YAAQ,EAC9B,CACA,UAAAgC,GACCrmG,KAAKykG,MAAQ,GAAIzkG,KAAKujB,OAAO8gF,KAAK,YAAQ,EAC3C,CACA,kBAAAiC,CAAmBnqG,GAClB,IAAID,EAAI,IAAKC,GACb,QAA4B,IAAxB6D,KAAKqlG,eAA2B,CACnC,IAAIlpG,EAAI6D,KAAK0kG,UAAUU,QAAQplG,KAAKqlG,gBACpClpG,GAAKA,EAAEmjC,OAASt/B,KAAK+kG,aAAe5oG,EAAE2gF,IAAM98E,KAAKilG,gBAAkB/oG,EAAEkL,SAAW,CAAEk+F,OAAQtlG,KAAKqlG,gBAChG,CACA,IAAI7oG,EAAI,IAAIL,GAAGqoG,YAAc,IAC7B,IAAA,IAAUroG,EAAGD,KAAM8D,KAAKwkG,WAAYtoG,EAAEojC,OAASt/B,KAAK+kG,aAAe7oG,EAAE4gF,IAAM98E,KAAKilG,eAAiBzoG,EAAEyC,KAAK,CACvGqmG,OAAQnpG,EACR+jD,MAAOhkD,EAAEgkD,QAEV1jD,EAAEC,OAAS,IAAMP,EAAEsoG,WAAahoG,GAChC,IAAIE,EAAI,IAAIP,GAAGsoG,OAAS,IACxB,OAAO/nG,EAAEuC,QAAQe,KAAKykG,OAAQ/nG,EAAED,OAAS,IAAMP,EAAEuoG,MAAQ/nG,GAAIR,CAC9D,CACA,kBAAAqqG,CAAmBpqG,EAAGD,GACrB,OAAO8D,KAAK2kG,SAAS6B,iBAAmBrqG,EAAEsqG,gBAAkBvqG,EAAEwqG,WAC/D,CACA,mBAAAC,CAAoBxqG,EAAGD,EAAGM,EAAGE,GAC5B,QAAU,IAANF,EAAc,CACjB,IAAIL,EAAI6D,KAAK0kG,UAAUU,QAAQ5oG,GAC/B,IAAKL,EAAG,MAAM8rB,MAAM,QAAQzrB,eAC5B,MAAO,CACN+M,EAAGpN,EAAEoN,EAAI7M,EACT+M,EAAGtN,EAAEsN,EAAI/M,EACTm/F,EAAO,EAAJn/F,EACH4kD,EAAO,EAAJ5kD,EAEL,CACA,IAAI6B,EAAIyB,KAAKumG,mBAAmBpqG,EAAGD,GAAIe,EAAI+C,KAAK2kG,SAASiC,SAAWzqG,EAAE0qG,qBAAwB1pG,EAAIF,EAAI,EAAI,EAAGuD,EAAIvD,EAAI,IAAM,EAAG2B,EAAIL,EAAEq8D,KAAOp6D,EAAG+gD,EAAIhjD,EAAEu8D,KAAO39D,EAAGsB,EAAIxB,EAAIsB,EAAEq8D,KAAO,IAAiB,IAAX39D,EAAER,OAAe,IAAKo+D,IAC3M,MAAO,CACNtxD,EAAG3K,EAAIlC,EACP+M,EAAG83C,EAAI7kD,EACPm/F,EAJyN9zF,KAAKD,IAAIvJ,EAAEw8D,KAAMt8D,GAInOG,EAAQ,EAAJlC,EACX4kD,EAAG/iD,EAAEy8D,KAAOzZ,EAAQ,EAAJ7kD,EAElB,GACU6M,GAAI,IAAcg0E,GAAoB,IAAIp9E,IAAO07F,GAAI,KAIhE,SAASiL,GAAG3qG,EAAGD,GACd,IAAIM,EAAI,GAAGL,MAAMD,IAAKQ,EAAI6gF,GAAEx8E,IAAIvE,GAChC,YAAIE,EAAc,OAAOA,EACzB,IAAI6B,GALGs9F,MAAMA,GAAI1/F,GAAEm3C,KAAKmL,uBAAyBv1C,MAAQK,GAAGsyF,GAAEzyF,OAASG,IAAIsyF,IAK/Dp8C,WAAW,KAAM,CAAEC,oBAAoB,IAAOziD,EAAI,aAAef,IAC7EqC,EAAEohD,UAAU,EAAG,EAAGp2C,GAAGA,IAAIhL,EAAEstF,KAAO5uF,EAAGsB,EAAEswF,aAAe,aAActwF,EAAEwoG,UAAY,SAAUxoG,EAAEqhD,UAAY,UAAWrhD,EAAEgtD,SAASpvD,EAAGoN,IAR5G,KASvB,IAAMmG,KAAMvS,GAAMoB,EAAEuhD,aAAa,EAAG,EAAGv2C,GAAGA,IAAI/I,EAAI+I,GAAG3K,GAAI,EACzD,IAAA,IAASzC,EAAI,EAAGA,EAAIoN,GAAGpN,IAAK,IAAA,IAASD,EAAI,EAAGA,EAAIqN,GAAGrN,IAAKiB,EAAgB,GAAbhB,EAAIoN,GAAIrN,GAAS,GAAK,KAAOC,EAAIqE,IAAMA,EAAIrE,GAAIA,EAAIyC,IAAMA,EAAIzC,IACxH,IAAU,IAANyC,EAAU,CACb,IAAIzC,EAAI,CACP6qG,cAAe,IACfC,qBAAsB,GAEvB,OAAO1pB,GAAE56E,IAAInG,EAAGL,GAAIA,CACrB,CACA,IAAIolD,GAlBmB,IAkBV/gD,EAAIuH,KAAKD,IAAI,EAAGlJ,EAlBN,MAkBgB,EAlBjC,GAkBwCH,EAAIF,EAAEktD,YAAY,KAAMlZ,EAAI,CACzEy0D,cAAezlD,EACf0lD,uBAAwBxoG,EAAEmrF,uBAAyBnrF,EAAEorF,yBAA2B,IAAMprF,EAAEqrF,wBAA0BrrF,EAAEsrF,0BAA4B,IAAM,EApBjJ,GAoByJxoC,GAE/J,OAAOg8B,GAAE56E,IAAInG,EAAG+1C,GAAIA,CACrB,CAqHA,IAAI4vC,GAAK,MACR,WAAA7lF,CAAYH,EAAGD,EAAGM,GACjBwD,KAAK0kG,UAAYvoG,EAAG6D,KAAK2kG,SAAWzoG,EAAG8D,KAAKknG,QAAU1qG,CACvD,CACA,eAAA2qG,CAAgBhrG,EAAGD,GAClB,IAAMkrG,UAAW5qG,EAAG6qG,YAAa3qG,EAAG4qG,YAAa/oG,EAAGgpG,YAAatqG,EAAGuqG,SAAUrqG,GAvHhF,SAAYhB,EAAGD,EAAGM,EAAGE,GACpB,IAAI6B,EAAIrC,EAAEurG,cAActrG,EAAEurG,KAAMzqG,EAAIT,EAAEmrG,YAAcrmD,GAAE/iD,EAAG,IAAM/B,EAAEorG,UAAYprG,EAAEqrG,gBAAkBtpG,EAAGpB,EAAIX,EAAEmrG,YAAchoG,GAAEpB,EAAG,IAAMA,EACnI,MAAO,CACN6oG,UAAWnqG,EACXoqG,YAAa3qG,EAAIF,EAAEorG,WAAaprG,EAAEmrG,YAAcxqG,EAAIT,EAAIF,EAAEorG,WAAaprG,EAAEmrG,YAAcxqG,EAAIX,EAAEsrG,UAC7FR,YAAa9qG,EAAEurG,QAAUvrG,EAAE6tF,UAAY,EACvCkd,YAAa/qG,EAAEorG,WAAaprG,EAAEmrG,YAAcxqG,EAAIjB,EAAE8rG,eAAe7rG,EAAEurG,KACnEF,SAAUjpG,EAEZ,CA8GsF0pG,CAAG9rG,EAAG6D,KAAK0kG,UAAW1kG,KAAK2kG,SAAUzoG,GAAGgsG,gBAAiB1nG,EAAIR,KAAK2kG,SAASwD,SAAUvpG,EAAIoB,KAAKknG,QAAQkB,YAAYjsG,EAAEoN,EAAI/I,EAAI,EAAGrE,EAAEsN,EAAIjJ,EAAI,GAC7N,GAAIR,KAAK2kG,SAASgD,aAAeppG,EAAI,EAAG,CACvC,IAAIpC,EAAIgB,EAAEohB,MAAM,iCAChB,GAAIpiB,EAAG,CACN,IAAID,EAAIyD,GAAExC,EAAG,IAAIohB,MAAM,iCAAkC/hB,EAAIN,EAAIA,EAAE,GAAKC,EAAE,GAAIO,EAAIR,EAAIA,EAAE,GAAKC,EAAE,GAAIc,EAAIf,EAAIA,EAAE,GAAKC,EAAE,GAAIolD,EAAIhjD,EAAI,EAAGE,EAAI+B,EAAI,EAAI+gD,EAAGhP,EAAgC,qBAA5BvyC,KAAK2kG,SAAS0D,UAA6C,IAAT7nG,EAAIjC,GAAU,EAAGqB,EAAI,CAAC,CAC7NsJ,MAAW,EAAJ3K,EACP7B,EAAGP,EAAE,GACLwD,EAAGxD,EAAE,GACL+Z,EAAG/Z,EAAE,GACLknG,MAAO,KACL,CACFn6F,MAAW,IAAJ3K,EACP7B,EAAGF,EACHmD,EAAGjD,EACHwZ,EAAGjZ,EACHomG,MAAO,KAER,IAAA,IAASlnG,KAAKyD,EAAG,CAChB,IAAI1D,EAAI,QAAQC,EAAEO,MAAMP,EAAEwD,MAAMxD,EAAE+Z,MAAM/Z,EAAEknG,SACd,WAA5BrjG,KAAK2kG,SAAS0D,UAAyBroG,KAAKknG,QAAQoB,UAAU1pG,EAAG,CAChEwgF,GAAI5+E,EAAI,EACR6+E,GAAI7+E,EAAI,EACRwlD,OAAQvnD,EACR+tD,OAAQtwD,EACRozD,YAAanzD,EAAE+M,QACXlJ,KAAKknG,QAAQqB,QAAQ3pG,EAAG,CAC5B2K,EAAGg4C,EACH93C,EAAG83C,EACHr4C,MAAO1I,EAAIjC,EACX6K,OAAQ5I,EAAIjC,EACZiuD,OAAQtwD,EACRozD,YAAanzD,EAAE+M,MACfi8C,aAAc5S,GAEhB,CACD,CACD,CACA,IAAIgP,EAAIhjD,EAAI,EAAGE,EAlJjB,SAAYtC,EAAGD,GACd,IAAKA,EAAEssG,OAAQ,OAAO,KACtB,IAAIhsG,EAAIN,EAAEisG,SAAUzrG,EAAIR,EAAE6rG,QAAU7rG,EAAEmuF,UAAY,EAAI,EAAG9rF,EAAIrC,EAAEmuF,UAAWptF,EAAI0C,GAAExD,EAAG,KAAMgB,EAAImkD,GAAEnlD,EAAG,KAClG,GAAoB,WAAhBD,EAAEmsG,UAAwB,CAC7B,IAAIlsG,EAAIK,EAAI,EAAGN,EAAIM,EAAI,EAAGgE,EAAIhE,EAAI,EAAIE,EAAGkC,EAAI,GAC7C,IAAA,IAASpC,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC7B,IAAIE,EAAIF,EAAI,GAAK,IAAMuL,KAAKomC,GAAK,IACjCvvC,EAAEK,KAAK9C,EAAI4L,KAAK4pC,IAAIj1C,GAAK8D,EAAGtE,EAAI6L,KAAK6pC,IAAIl1C,GAAK8D,EAC/C,CACA,IAAI+gD,EAAI,GACR,IAAA,IAAS/kD,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC7B,IAAIE,GAAK,IAAMF,EAAI,GAAK,KAAOuL,KAAKomC,GAAK,IACzCoT,EAAEtiD,KAAK9C,EAAI4L,KAAK4pC,IAAIj1C,GAAK8D,EAAGtE,EAAI6L,KAAK6pC,IAAIl1C,GAAK8D,EAC/C,CACA,MAAO,CACNioG,OAAQ,CACP3iD,OAAQlnD,EACR4tD,OAAQrvD,EACRmyD,YAAa/wD,EACbmqD,QAAS,QACTM,SAAU,SAEX0/C,UAAW,CACV5iD,OAAQvE,EACRiL,OAAQvvD,EACRqyD,YAAa/wD,EACbmqD,QAAS,QACTM,SAAU,SAGb,CACA,GAAoB,qBAAhB9sD,EAAEmsG,UAAkC,CACvC,IAAIlsG,EAAkB,IAAbK,EAAQ,EAAJE,GAAaR,EAAIQ,EAAG8D,EAAI9D,EAAGkC,EAAIpC,EAAIE,EAAG6kD,EAAI/kD,EAAIE,EAAG+B,EAAI,GAClE,IAAA,IAASjC,EAAI,EAAGA,GAAK,EAAQA,IAAK,CACjC,IAAIE,GAAK,IAAMF,EAAAA,EAAe,IAAMuL,KAAKomC,GAAK,IAC9C1vC,EAAEQ,KAAK/C,EAAIC,EAAI4L,KAAK4pC,IAAIj1C,GAAKP,EAAGolD,EAAIplD,EAAI4L,KAAK6pC,IAAIl1C,GAAKP,EACvD,CACA,IAAA,IAASK,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC7B,IAAIE,GAAK,IAAMF,EAAI,GAAK,IAAMuL,KAAKomC,GAAK,IACxC1vC,EAAEQ,KAAK/C,EAAIC,EAAI4L,KAAK4pC,IAAIj1C,GAAKP,EAAGqE,EAAIrE,EAAI4L,KAAK6pC,IAAIl1C,GAAKP,EACvD,CACA,IAAA,IAASD,EAAI,EAAGA,GAAK,EAAQA,IAAK,CACjC,IAAIM,GAAK,IAAMN,EAAAA,EAAe,IAAM6L,KAAKomC,GAAK,IAC9C1vC,EAAEQ,KAAKL,EAAIzC,EAAI4L,KAAK4pC,IAAIn1C,GAAKL,EAAGqE,EAAIrE,EAAI4L,KAAK6pC,IAAIp1C,GAAKL,EACvD,CACA,IAAIo2C,EAAI9zC,EAAEY,QAASO,EAAI,GACvB,IAAA,IAAS1D,EAAI,EAAGA,GAAK,EAAQA,IAAK,CACjC,IAAIM,GAAK,IAAMN,EAAAA,EAAe,IAAM6L,KAAKomC,GAAK,IAC9CvuC,EAAEX,KAAKL,EAAIzC,EAAI4L,KAAK4pC,IAAIn1C,GAAKL,EAAGqE,EAAIrE,EAAI4L,KAAK6pC,IAAIp1C,GAAKL,EACvD,CACA,IAAA,IAASD,EAAI,EAAGA,GAAK,GAAIA,IAAK,CAC7B,IAAIM,EAAIN,EAAI,GAAK,GAAK6L,KAAKomC,GAAK,IAChCvuC,EAAEX,KAAKL,EAAIzC,EAAI4L,KAAK4pC,IAAIn1C,GAAKL,EAAGolD,EAAIplD,EAAI4L,KAAK6pC,IAAIp1C,GAAKL,EACvD,CACA,IAAA,IAASK,EAAI,EAAGA,GAAK,EAAQA,IAAK,CACjC,IAAIE,GAAK,GAAKF,EAAAA,EAAe,IAAMuL,KAAKomC,GAAK,IAC7CvuC,EAAEX,KAAK/C,EAAIC,EAAI4L,KAAK4pC,IAAIj1C,GAAKP,EAAGolD,EAAIplD,EAAI4L,KAAK6pC,IAAIl1C,GAAKP,EACvD,CACA,MAAO,CACNusG,UAAW,CACV5iD,OAAQvT,EACRia,OAAQvvD,EACRqyD,YAAa/wD,EACbmqD,QAAS,QACTM,SAAU,SAEXy/C,OAAQ,CACP3iD,OAAQlmD,EACR4sD,OAAQrvD,EACRmyD,YAAa/wD,EACbmqD,QAAS,QACTM,SAAU,SAGb,CACA,MAAO,CACN0/C,UAAW,CACV5iD,OAAQ,CACPppD,EACAF,EAAIE,EACJA,EACAA,EACAF,EAAIE,EACJA,GAED8vD,OAAQvvD,EACRqyD,YAAa/wD,GAEdkqG,OAAQ,CACP3iD,OAAQ,CACPppD,EACAF,EAAIE,EACJF,EAAIE,EACJF,EAAIE,EACJF,EAAIE,EACJA,GAED8vD,OAAQrvD,EACRmyD,YAAa/wD,GAGhB,CA6CqBoqG,CAAGnsG,EAAGwD,KAAK2kG,UAAWpyD,EAAI9zC,EAAI,EAAIF,EACrD,GAAgC,WAA5ByB,KAAK2kG,SAAS0D,UAAyBroG,KAAKknG,QAAQoB,UAAU1pG,EAAG,CACpEwgF,GAAI5+E,EAAI,EACR6+E,GAAI7+E,EAAI,EACRwlD,OAAQxlD,EAAI,EAAI+gD,EAChB8J,KAAM7uD,EACNgwD,OAAQja,EAAI71C,OAAI,EAChB4yD,YAAa/c,IACTvyC,KAAKknG,QAAQqB,QAAQ3pG,EAAG,CAC5B2K,EAAGg4C,EACH93C,EAAG83C,EACHr4C,MAAO1I,EAAIjC,EACX6K,OAAQ5I,EAAIjC,EACZ8sD,KAAM7uD,EACNgwD,OAAQja,EAAI71C,OAAI,EAChB4yD,YAAa/c,EACb4S,aAA0C,qBAA5BnlD,KAAK2kG,SAAS0D,UAA6C,IAAT7nG,EAAIjC,GAAU,IAC3EE,IAAMuB,KAAKknG,QAAQ0B,QAAQhqG,EAAG,CACjCknD,OAAQrnD,EAAEgqG,OAAO3iD,OACjB0G,OAAQ/tD,EAAEgqG,OAAOj8C,OACjB8C,YAAa7wD,EAAEgqG,OAAOn5C,YACtB5G,QAASjqD,EAAEgqG,OAAO//C,QAClBM,SAAUvqD,EAAEgqG,OAAOz/C,WAChBhpD,KAAKknG,QAAQ0B,QAAQhqG,EAAG,CAC3BknD,OAAQrnD,EAAEiqG,UAAU5iD,OACpB0G,OAAQ/tD,EAAEiqG,UAAUl8C,OACpB8C,YAAa7wD,EAAEiqG,UAAUp5C,YACzB5G,QAASjqD,EAAEiqG,UAAUhgD,QACrBM,SAAUvqD,EAAEgqG,OAAOz/C,YACf7sD,EAAE0sG,SAAU,CAChB,IAAI3sG,EAAQ,IAAJsE,GAAWwmG,cAAexqG,EAAGyqG,qBAAsBvqG,GAAMoqG,GAAG3qG,EAAE0sG,SAAU7oG,KAAK2kG,SAASnY,YAAajuF,EAAIwJ,KAAKD,IAAItH,EAAGrE,EAAE0sG,SAASpsG,OAASP,EAAI,IAAKiB,GAAKoB,EAAIiC,GAAK,EACtKR,KAAKknG,QAAQ4B,QAAQlqG,EAAG,CACvB2K,GAAIpM,EACJsM,EAAG,EACHw4B,KAAM9lC,EAAE0sG,SACRlgB,SAAUzsF,EACVswF,WAAYxsF,KAAK2kG,SAASnY,WAC1BF,UAAW,OACXjhC,KAAMpuD,EACN+rF,MAAO,SACPF,cAAe,SACf5/E,MAAO3K,EACP6K,OAAQ5I,EACRwmG,cAAexqG,EACfyqG,qBAAsBvqG,GAExB,CACA,OAAOkC,CACR,GACEmqG,GAAK,MACP,WAAAzsG,CAAYH,EAAGD,EAAGM,GACjBwD,KAAKgpG,aAAe,KAAMhpG,KAAK09D,MAAQvhE,EAAG6D,KAAK2kG,SAAWzoG,EAAG8D,KAAKknG,QAAU1qG,CAC7E,CACA,eAAAysG,GACCjpG,KAAKgpG,aAAe,IACrB,CACA,MAAAE,CAAO/sG,GACN,IAAK6D,KAAK2kG,SAASwE,YAElB,YADsB,OAAtBnpG,KAAKgpG,eAA0BhpG,KAAK09D,MAAMkI,kBAAmB5lE,KAAK09D,MAAMsF,YAAahjE,KAAKgpG,aAAe,OAG1G,IAAMpuC,KAAM1+D,EAAG6+D,KAAMv+D,EAAGs+D,KAAMp+D,EAAGs+D,KAAMz8D,GAAMpC,EAAGc,EAA6B,EAAzB+C,KAAK2kG,SAASyE,SAAcjsG,EAAI4K,KAAKk+B,OAAOl+B,KAAKC,IAAI9L,EAAGM,GAAKS,GAAK+C,KAAK2kG,SAASyE,UAAYppG,KAAK2kG,SAASyE,SAAU5oG,EAAIuH,KAAK8xD,MAAM9xD,KAAKD,IAAI5L,EAAGM,GAAKS,GAAK+C,KAAK2kG,SAASyE,UAAYppG,KAAK2kG,SAASyE,SAAUxqG,EAAImJ,KAAKk+B,OAAOl+B,KAAKC,IAAItL,EAAG6B,GAAKtB,GAAK+C,KAAK2kG,SAASyE,UAAYppG,KAAK2kG,SAASyE,SAAU7nD,EAAIx5C,KAAK8xD,MAAM9xD,KAAKD,IAAIpL,EAAG6B,GAAKtB,GAAK+C,KAAK2kG,SAASyE,UAAYppG,KAAK2kG,SAASyE,SAAU3qG,EAAIuB,KAAKgpG,aACvb,GAAIvqG,GAAKA,EAAEwF,OAAS9G,GAAKsB,EAAEuF,QAAUxD,GAAK/B,EAAEqF,MAAQlF,GAAKH,EAAEsF,SAAWw9C,EAAG,OACzEvhD,KAAK09D,MAAMkI,kBACX,IAAIrzB,EAAIvyC,KAAKknG,QAAQkB,YAAY,EAAG,GACpC,IAAA,IAASjsG,EAAIgB,EAAGhB,GAAKqE,EAAGrE,GAAK6D,KAAK2kG,SAASyE,SAAUppG,KAAKknG,QAAQ0B,QAAQr2D,EAAG,CAC5EuT,OAAQ,CACP3pD,EACAyC,EACAzC,EACAolD,GAEDiL,OAAQxsD,KAAK2kG,SAAS0E,UACtB/5C,YAAatvD,KAAK2kG,SAAS2E,gBAE5B,IAAA,IAASntG,EAAIyC,EAAGzC,GAAKolD,EAAGplD,GAAK6D,KAAK2kG,SAASyE,SAAUppG,KAAKknG,QAAQ0B,QAAQr2D,EAAG,CAC5EuT,OAAQ,CACP3oD,EACAhB,EACAqE,EACArE,GAEDqwD,OAAQxsD,KAAK2kG,SAAS0E,UACtB/5C,YAAatvD,KAAK2kG,SAAS2E,gBAE5BtpG,KAAK09D,MAAM6rC,QAAQh3D,GAAIvyC,KAAKgpG,aAAe,CAC1C/kG,KAAM9G,EACN6G,MAAOxD,EACPsD,IAAKlF,EACLmF,OAAQw9C,GACNvhD,KAAK09D,MAAMsF,WACf,GACEwmC,GAAI,CACN,QACA,QACA,OACA,OACA,YACA,YACA,YACA,aACEC,GAAK,CACPjtG,EAAG,QACHgE,EAAG,QACHrE,EAAG,OACH0/F,EAAG,OACH8M,GAAI,YACJe,GAAI,YACJC,GAAI,YACJj+C,GAAI,aACFk+C,GAAI,CACNC,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,UAAW,KACXC,UAAW,KACXC,UAAW,KACXC,UAAW,KACXC,GAAI,IACJC,KAAM,IACNC,GAAI,IACJC,IAAK,KACHC,GAAI,CACNZ,MAAO,CACNtgG,EAAG,EACHE,GAAG,GAEJqgG,MAAO,CACNvgG,EAAG,EACHE,EAAG,GAEJsgG,KAAM,CACLxgG,EAAG,EACHE,EAAG,GAEJugG,KAAM,CACLzgG,GAAG,EACHE,EAAG,GAEJwgG,UAAW,CACV1gG,EAAG,EACHE,GAAG,GAEJygG,UAAW,CACV3gG,GAAG,EACHE,GAAG,GAEJ0gG,UAAW,CACV5gG,EAAG,EACHE,EAAG,GAEJ2gG,UAAW,CACV7gG,GAAG,EACHE,EAAG,IAEF+zE,GAAI,CACN,QACA,QACA,OACA,OACA,YACA,YACA,YACA,aACEktB,GAAK,CACPb,MAAO,QACPC,MAAO,QACPC,KAAM,OACNC,KAAM,OACNC,UAAW,YACXC,UAAW,YACXC,UAAW,YACXC,UAAW,aAEZ,SAAS/sB,GAAElhF,GACV,QAAOA,GAAIW,OAAOP,UAAUkL,eAAe3I,KAAK2rG,GAAGtuG,EACpD,CACA,SAASkmF,GAAElmF,EAAGD,EAAGM,EAAGE,EAAI,GACvB,IAAK2gF,GAAE7gF,GAAI,MAAO,CACjB+M,EAAGpN,EACHsN,EAAGvN,GAEJ,IAAIqC,EAAIksG,GAAEjuG,GACV,MAAO,CACN+M,EAAGpN,EAAIoC,EAAEgL,EAAI7M,EACb+M,EAAGvN,EAAIqC,EAAEkL,EAAI/M,EAEf,CACA,SAASiuG,GAAExuG,EAAGD,EAAGM,EAAGE,EAAI,EAAG6B,EAAI,GAC9B,IAAK8+E,GAAE7gF,GAAI,MAAO,CACjB+M,EAAGpN,EACHsN,EAAGvN,GAEJ,IAAIe,EAAIwtG,GAAEjuG,GACV,GAAc,IAARS,EAAEsM,GAAmB,IAARtM,EAAEwM,GAAYlL,GAAK,EAAG,OAAO8jF,GAAElmF,EAAGD,EAAGM,EAAGE,GAC3D,IAAIS,EAAIT,EAAI6B,EAAIA,EAAIwJ,KAAK6iG,MACzB,MAAO,CACNrhG,EAAGpN,EAAIc,EAAEsM,EAAIpM,EACbsM,EAAGvN,EAAIe,EAAEwM,EAAItM,EAEf,CACA,SAAS0tG,GAAE1uG,EAAGD,EAAGM,EAAGE,EAAI,GACvB,IAAK2gF,GAAE7gF,GAAI,MAAO,CACjB+M,EAAGpN,EACHsN,EAAGvN,GAEJ,IAAIqC,EAAIksG,GAAEjuG,GAAIS,EAAI8K,KAAKm8E,MAAM3lF,EAAEkL,EAAGlL,EAAEgL,GACpC,MAAO,CACNA,EAAGpN,EAAI4L,KAAK4pC,IAAI10C,GAAKP,EACrB+M,EAAGvN,EAAI6L,KAAK6pC,IAAI30C,GAAKP,EAEvB,CAGA,IAAIouG,GACQ,mBADRA,GAEU,oBAFVA,GAGU,mBAHVA,GAIW,mBAEf,SAASnB,GAAGxtG,GACX,OAAQA,GACP,KAAK,EAAG,OAAO2uG,GACf,KAAK,EAAG,OAAOA,GACf,QAAS,OAAOA,GAElB,CACA,IAAIC,GAAK,MACR,WAAAzuG,CAAYH,EAAGD,GACd8D,KAAK0kG,UAAYvoG,EAAG6D,KAAK2kG,SAAWzoG,CACrC,CACA,gBAAA8uG,CAAiB7uG,EAAGD,EAAGM,EAAGE,GACzB,IAAI6B,EAAI7B,GAAKsD,KAAK2kG,SAASoD,QAAU/nG,KAAK2kG,SAASta,UAAY,EAAI,GACnE,MAAmC,WAA5BrqF,KAAK2kG,SAAS0D,UAAyBwC,GAAE1uG,EAAGD,EAAGM,EAAG+B,GAAiC,qBAA5ByB,KAAK2kG,SAAS0D,UAAmCsC,GAAExuG,EAAGD,EAAGM,EAAG+B,EAA4B,GAAzByB,KAAK2kG,SAASwD,UAAiB9lB,GAAElmF,EAAGD,EAAGM,EAAG+B,EACxK,CACA,UAAA0sG,CAAW9uG,EAAGD,GACb,OAAO8D,KAAKkrG,oBAAoB/uG,EAAG6D,KAAK2kG,SAASmD,UAAW5rG,EAC7D,CACA,mBAAAgvG,CAAoB/uG,EAAGD,EAAGM,GACzB,IAAIE,EAAIP,EAAEgvG,MAAQ3B,GAAE9qF,SAASviB,EAAEgvG,MAAO5sG,EAAIpC,EAAEivG,MAAQ5B,GAAE9qF,SAASviB,EAAEivG,MACjE,GAAI1uG,GAAK6B,EAAG,OAAOyB,KAAKqrG,qBAAqBlvG,EAAGD,EAAGM,GACnD,GAAIE,GAAK6B,EAAG,CACX,IAAI/B,EAAIE,EAAI,IAAM,IAClB,OAAOsD,KAAKsrG,qBAAqBnvG,EAAGD,EAAGM,EACxC,CACD,CACA,oBAAA6uG,CAAqBlvG,EAAGD,EAAGM,GAC1B,IAAIE,EAAIsD,KAAK0kG,UAAUU,QAAQjpG,EAAEc,GAAIsB,EAAIyB,KAAK0kG,UAAUU,QAAQjpG,EAAE+Z,GAClE,IAAKxZ,IAAM6B,IAAMpC,EAAEgvG,OAAShvG,EAAEivG,MAAQ1uG,EAAE6uG,YAAY3B,GAAEztG,EAAEgvG,QAAU5sG,EAAEgtG,YAAY3B,GAAEztG,EAAEivG,QAAU1uG,EAAEogF,IAAMv+E,EAAEu+E,IAAMtgF,IAAM+B,EAAEu+E,GAAKpgF,EAAE6uG,YAAY3B,GAAEztG,EAAEgvG,QAAU3uG,IAAME,EAAEogF,GAAKv+E,EAAEgtG,YAAY3B,GAAEztG,EAAEivG,QAAS,OAC/L,IAAInuG,EAAI+C,KAAKgrG,iBAAiBtuG,EAAE6M,EAAG7M,EAAE+M,EAAGtN,EAAEgvG,KAAMnrG,KAAK2kG,SAASwD,SAAW,GAAIhrG,EAAI6C,KAAKgrG,iBAAiBzsG,EAAEgL,EAAGhL,EAAEkL,EAAGtN,EAAEivG,KAAMprG,KAAK2kG,SAASwD,SAAW,GAAI3nG,EAAI,CACzJvD,EAAEsM,EACFtM,EAAEwM,EACFtM,EAAEoM,EACFpM,EAAEsM,GACA7K,EAAI,CAAC,CACPknD,OAAQtlD,EACRgsD,OAAQtwD,EACRozD,YAAatvD,KAAK2kG,SAASta,YACxB9oC,EAAI,GAAI9iD,EAAI/B,EAAE8uG,MAAM5B,GAAEztG,EAAEgvG,QAAU5sG,EAAEitG,MAAM5B,GAAEztG,EAAEivG,OAClD,GAAI3sG,EAAG,CACN,IAAItC,EAAIqE,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,EAAGtE,EAAIsE,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,EAC7D+gD,EAAEtiD,KAAK,CACNsK,EAAGpN,EAAI6D,KAAK2kG,SAASwD,SAAW,EAChC1+F,EAAGvN,EAAI8D,KAAK2kG,SAASwD,SAAW,EAChCj/F,MAAOlJ,KAAK2kG,SAASwD,SAAW,EAChC/+F,OAAQpJ,KAAK2kG,SAASwD,SAAW,EACjC37C,OAAQm9C,GAAGlrG,GACX6wD,YAAatvD,KAAK2kG,SAASta,WAE7B,CACA,IAAI93C,EAAIxqC,KAAKC,IAAIxH,EAAE,GAAIA,EAAE,IAAKZ,EAAImI,KAAKD,IAAItH,EAAE,GAAIA,EAAE,IAAK6/B,EAAIt4B,KAAKC,IAAIxH,EAAE,GAAIA,EAAE,IAC7E,MAAO,CACNqsF,MAAOjuF,EACP6sG,OAAQ,GACRD,MAAOjqD,EACPgH,OAAQ,CACPh/C,EAAGgpC,EACH9oC,EAAG42B,EACHn3B,MAAOtJ,EAAI2yC,EACXnpC,OAToFrB,KAAKD,IAAItH,EAAE,GAAIA,EAAE,IASzF6/B,GAEbqrE,aAX+GhvG,EAAEogF,IAAMv+E,EAAEu+E,OAAI,EAASpgF,EAAEogF,IAAMtgF,EAAI+B,EAAEkrC,GAAK/sC,EAAE+sC,GAa7J,CACA,oBAAA6hE,CAAqBnvG,EAAGD,EAAGM,GAC1B,IAAIE,EAAU,MAANF,IAAcA,GAAKL,EAAEgvG,KAAM5sG,EAAI7B,EAAIsD,KAAK0kG,UAAUU,QAAQjpG,EAAEc,GAAK+C,KAAK0kG,UAAUU,QAAQjpG,EAAE+Z,GAAIjZ,EAAIP,EAAIsD,KAAK0kG,UAAUU,QAAQjpG,EAAE+Z,GAAKlW,KAAK0kG,UAAUU,QAAQjpG,EAAEc,GAAIE,EAAIT,EAAIP,EAAEgvG,KAAOhvG,EAAEivG,KAC5L,IAAKjuG,IAAMoB,IAAMtB,IAAMusG,GAAE9qF,SAASvhB,IAAMoB,EAAEgtG,YAAY3B,GAAEzsG,IAAMA,GAAI,OAClE,GAAIoB,EAAE+gC,MAAQriC,EAAEqiC,MAAQniC,EAAG,CAC1B,IAAIhB,EAAI6D,KAAK0kG,UAAU+C,cAAcxqG,EAAEyqG,KAAMxrG,EAAI8D,KAAKgrG,iBAAiBzsG,EAAEgL,EAAGhL,EAAEkL,EAAGtM,EAAG6C,KAAK2kG,SAASwD,SAAW,GAAI3rG,EAAI6lF,GAAE9jF,EAAEgL,EAAGhL,EAAEkL,EAAGtM,EAA4B,IAAzB6C,KAAK2kG,SAASwD,UAAiBzrG,EAAIP,EACvK,MAAO,CACN0wF,MAAO,GACP4e,OAAQ,CAAC,CACR3lD,OAAQ,CACP5pD,EAAEqN,EACFrN,EAAEuN,EACFjN,EAAE+M,EACF/M,EAAEiN,GAEHs6E,cAAe,GACfI,aAAc,GACd70B,YAAuC,IAA1BtvD,KAAK2kG,SAASta,UAC3B79B,OAAQ9vD,EACR2uD,KAAM3uD,IAEP8uG,MAAO,GACPjjD,OAAQ,CACPh/C,EAAGxB,KAAKC,IAAI9L,EAAEqN,EAAG/M,EAAE+M,GACnBE,EAAG1B,KAAKC,IAAI9L,EAAEuN,EAAGjN,EAAEiN,GACnBP,MAAOnB,KAAK6B,IAAIpN,EAAE+M,EAAIrN,EAAEqN,GACxBH,OAAQrB,KAAK6B,IAAIpN,EAAEiN,EAAIvN,EAAEuN,IAE1BiiG,aAAczuG,EAAEwsC,GAElB,CACA,IAAIjpC,EAAIvD,EAAEqiC,OAAS/gC,EAAE+gC,MAAQriC,EAAE6/E,IAAMv+E,EAAEu+E,EAAGl+E,EAAI,CAC7C2K,EAAGtM,EAAEsM,EACLE,EAAGxM,EAAEwM,GAENjJ,IAAM5B,EAAIyjF,GAAE9jF,EAAEgL,EAAGhL,EAAEkL,EAAGtM,EAAG6C,KAAK2kG,SAASwD,SAAW,IAClD,IAAI5mD,EAAI8gC,GAAE9jF,EAAEgL,EAAGhL,EAAEkL,EAAGtM,EAAG,IAAKsB,EAAI8iD,EAAEh4C,GAAKg4C,EAAEh4C,EAAI3K,EAAE2K,GAAK,EAAGgpC,EAAIgP,EAAE93C,GAAK83C,EAAE93C,EAAI7K,EAAE6K,GAAK,EAAG7J,EAAII,KAAKgrG,iBAAiBzsG,EAAEgL,EAAGhL,EAAEkL,EAAGtM,EAAG6C,KAAK2kG,SAASwD,SAAW,GAAI9nE,EAAI,CACzJzgC,EAAE2J,EACF3J,EAAE6J,EACF7K,EAAE2K,EACF3K,EAAE6K,GACA0T,EAAI,CACNvd,EAAE2J,EACF3K,EAAE2K,EACF9K,GACE6iD,EAAI,CACN1hD,EAAE6J,EACF7K,EAAE6K,EACF8oC,GACE5yC,EAAIoI,KAAKC,OAAOmV,GAAIikC,EAAIr5C,KAAKD,OAAOqV,GAAIpC,EAAIhT,KAAKC,OAAOs5C,GAAI73C,EAAI1B,KAAKD,OAAOw5C,GAC/E,MAAO,CACNurC,MAAO,CAAC,CACP/mC,OAAQzlB,EACRmsB,OAAQtwD,EACRozD,YAAatvD,KAAK2kG,SAASta,UAC3Bp7B,KAAM,CAAC,GAAI,OAEZw8C,OAAQ,CAAC,CACR3lD,OAAQ,CACPzlB,EAAE,GACFA,EAAE,GACF5hC,EACA8zC,GAEDwxC,cAAe,GACfI,aAAc,IACd70B,YAAuC,IAA1BtvD,KAAK2kG,SAASta,UAC3B79B,OAAQtwD,EACRmvD,KAAMy/C,GACN77C,KAAM,CAAC,GAAI,OAEZu8C,MAAO,GACPjjD,OAAQ,CACPh/C,EAAG5J,EACH8J,EAAGsR,EACH7R,MAAOk4C,EAAIzhD,EACXyJ,OAAQK,EAAIsR,MAEVva,EAAI,CAAEkrG,aAAczuG,EAAEwsC,IAAO,CAAA,EAElC,CACA,yBAAAkiE,CAA0BxvG,GACzB,IAAID,EAAI,GACR,IAAA,IAAUM,EAAGE,KAAMI,OAAO4pB,QAAQvqB,EAAEovG,aAAc,CACjD,IAAIhtG,EAAIpC,EAAEyvG,aAAapvG,GACvB,QAAU,IAAN+B,EAAc,CACjB,IAAIrC,EAAIutG,GAAGjtG,GACXN,IAAMqC,EAAIpC,EAAE0vG,MAAM3vG,IAAMC,EAAEyvG,aAAa1vG,GACxC,CACA,QAAU,IAANqC,EAAc,SAClB,IAAItB,EAAI+C,KAAK0kG,UAAUU,QAAQ7mG,GAC/B,IAAKtB,GAAKA,EAAEqiC,OAASnjC,EAAEmjC,MAAQriC,EAAE6/E,IAAM3gF,EAAE2gF,EAAG,SAC5C,IAAI3/E,EAAI,CAAChB,EAAEoN,EAAGpN,EAAEsN,GAChB/M,EAAEopD,OAAOnkD,OAAO,CAACxF,EAAGD,KAAOC,EAAE8C,KAAK/C,EAAEqN,GAAIrN,EAAEuN,GAAItN,GAAIgB,GAClD,IAAIqD,EAAIq6D,IAAUj8D,EAAIi8D,IAAUtZ,OAAe9iD,GAAIo8D,IACnD,IAAA,IAAS1+D,EAAI,EAAGA,EAAIgB,EAAEV,OAAQN,GAAK,EAAGqE,EAAIuH,KAAKC,IAAIxH,EAAGrD,EAAEhB,IAAKolD,EAAIx5C,KAAKD,IAAIy5C,EAAGpkD,EAAEhB,IAAKyC,EAAImJ,KAAKC,IAAIpJ,EAAGzB,EAAEhB,EAAI,IAAKsC,EAAIsJ,KAAKD,IAAIrJ,EAAGtB,EAAEhB,EAAI,IACrID,EAAE+C,KAAK,CACNspD,OAAQ,CACPh/C,EAAG/I,EACHiJ,EAAG7K,EACHsK,MAAOq4C,EAAI/gD,EACX4I,OAAQ3K,EAAIG,GAEb8sG,aAAcntG,GAEhB,CACA,OAAOrC,CACR,GACE4vG,GAAK,CACP,EAAG,QACH,EAAG,YACH,EAAG,YACH,EAAG,OACH,EAAG,OACH,EAAG,QACH,EAAG,YACH,EAAG,YACH,EAAG,KACH,GAAI,OACJ,GAAI,KACJ,GAAI,OAEL,SAASC,GAAG5vG,EAAGD,EAAGM,EAAGE,EAAG6B,GACvB,MAAuB,WAAhBpC,EAAEksG,UAAyBwC,GAAE3uG,EAAGM,EAAGE,EAAG6B,GAAqB,qBAAhBpC,EAAEksG,UAAmCsC,GAAEzuG,EAAGM,EAAGE,EAAG6B,EAAgB,GAAbpC,EAAEgsG,UAAiB9lB,GAAEnmF,EAAGM,EAAGE,EAAG6B,EACpI,CACA,SAASytG,GAAG7vG,EAAGD,EAAGM,GACjB,IAAIE,EAAI,GACR,IAAA,IAAS6B,KAAKpC,EAAE8vG,MAAO,CACtB,IAAIhvG,EAAI6uG,GAAGvtG,GACX,IAAKtB,EAAG,SACR,IAAIE,EAAI4uG,GAAG7vG,EAAGC,EAAEoN,EAAGpN,EAAEsN,EAAGxM,EAAGf,EAAEisG,SAAW,GAAI3nG,EAAI6hF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAGxM,EAAGf,EAAEisG,SAAW,EAAI,IAChFzrG,EAAEuC,KAAK,CACN4jD,GAAI1lD,EAAEoM,EACNu5C,GAAI3lD,EAAEsM,EACNs5C,GAAIviD,EAAE+I,EACNy5C,GAAIxiD,EAAEiJ,EACN+iD,OAAQhwD,GAAKN,EAAE4rG,UACfx4C,YAAapzD,EAAEmuF,WAEjB,CACA,OAAO3tF,CACR,CAGA,IAAIwvG,GAAK,CACR,EAAG,mBACH,EAAG,oBACH,EAAG,oBAEJ,SAASC,GAAGhwG,EAAGD,EAAGM,GACjB,IAAIE,EAAI,GACR,IAAA,IAAU6B,EAAGtB,KAAMH,OAAO4pB,QAAQvqB,EAAEovG,aAAc,CACjD,IAAIpuG,EAAI,CAAChB,EAAEoN,EAAGpN,EAAEsN,GAChB,IAAA,IAAStN,KAAKc,EAAE6oD,OAAQ3oD,EAAE8B,KAAK9C,EAAEoN,GAAIpN,EAAEsN,GACvC,IAA+F7K,EAA3F4B,EAAIhE,GAAK,OAAOS,EAAE8J,WAAWm5C,MAAMxjD,MAAMO,EAAE8J,WAAWm5C,MAAMvgD,MAAM1C,EAAE8J,WAAWm5C,MAAMhqC,KAClE,aAAvBjZ,EAAE8J,WAAWF,MAAuBjI,EAAI,CAAC,IAAK,KAA8B,cAAvB3B,EAAE8J,WAAWF,QAA0BjI,EAAI,CAAC,GAAI,KACrG,IAKGH,EALC8iD,EAAI,CACPuE,OAAQ3oD,EACRqvD,OAAQhsD,EACR8uD,YAAapzD,EAAEmuF,UACfp7B,KAAMrwD,GAEP,GAAI3B,EAAE8J,WAAWS,OAASrK,EAAEV,QAAU,EAAG,CACxC,IAAIN,EAAIgB,EAAEV,OAAS,EAAGD,EAAIW,EAAEhB,GAAIO,EAAIS,EAAEhB,EAAI,GAAIoC,EAAIpB,EAAEhB,EAAI,GAAIc,EAAIE,EAAEhB,EAAI,GAAIyC,EAAImJ,KAAKm8E,MAAMxnF,EAAIO,EAAGT,EAAI+B,GAAIgjD,EAAI,GAAIhP,EAAI,GACpH9zC,EAAI,CACH2tG,KAAM5vG,EACN6vG,KAAM3vG,EACNmmD,GAAIrmD,EAAI+kD,EAAIx5C,KAAK4pC,IAAI/yC,EAAImJ,KAAKm8E,MAAM3xC,EAAGgP,IACvCuB,GAAIpmD,EAAI6kD,EAAIx5C,KAAK6pC,IAAIhzC,EAAImJ,KAAKm8E,MAAM3xC,EAAGgP,IACvCwB,GAAIvmD,EAAI+kD,EAAIx5C,KAAK4pC,IAAI/yC,EAAImJ,KAAKm8E,MAAM3xC,EAAGgP,IACvCyB,GAAItmD,EAAI6kD,EAAIx5C,KAAK6pC,IAAIhzC,EAAImJ,KAAKm8E,MAAM3xC,EAAGgP,IACvC8J,KAAM7qD,EACNgsD,OAAQhsD,EACR8uD,YAAapzD,EAAEmuF,UAEjB,CACA,IAAI93C,EAAG3yC,EAAIzD,EAAEqvG,MAAMjtG,GACnB,GAAIqB,GAAKzC,EAAEV,QAAU,EAAG,CACvB,IAAIN,EAAIgB,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,EAAGX,EAAIW,EAAE,IAAMA,EAAE,GAAKA,EAAE,IAAM,EAAGT,EAAIR,EAAEisG,SAAW,EACjF51D,EAAI,CACHhpC,EAAGpN,EAAIO,EAAI,EACX+M,EAAGjN,EAAIE,EAAI,EACXwM,MAAOxM,EACP0M,OAAQ1M,EACR8vD,OAAQ0/C,GAAGtsG,IAAMssG,GAAG,GACpB58C,YAAapzD,EAAEmuF,UAEjB,CACA3tF,EAAEuC,KAAK,CACNskD,KAAMhC,EACN/5C,MAAO/I,EACP6tG,KAAM/5D,GAER,CACA,OAAO71C,CACR,CAGA,IAAI6vG,GAAK,CACR,KACA,OACA,KACA,OAED,SAASC,GAAErwG,EAAGD,EAAGM,EAAGE,GACnB,IAAI6B,EAAI7B,EAAIqL,KAAKomC,GAAK,IAAKlxC,EAAI,GAC/B,IAAA,IAASP,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC3B,IAAIS,EAAI,EAAI4K,KAAKomC,GAAKzxC,EAAI,EAAIqL,KAAKomC,GAAK,EAAG3tC,EAAIuH,KAAK4pC,IAAIx0C,GAAKX,EAAI,IAAKoC,EAAImJ,KAAK6pC,IAAIz0C,GAAKX,EAAI,GAAI+kD,EAAI/gD,EAAIuH,KAAK4pC,IAAIpzC,GAAKK,EAAImJ,KAAK6pC,IAAIrzC,GAAIE,EAAI+B,EAAIuH,KAAK6pC,IAAIrzC,GAAKK,EAAImJ,KAAK4pC,IAAIpzC,GAC1KtB,EAAEgC,KAAK9C,EAAIolD,EAAGrlD,EAAIuC,EACnB,CACA,OAAOxB,CACR,CAOA,IAAIwvG,GAAK,CACR,EAAG,mBACH,EAAG,oBACH,EAAG,oBAEJ,SAASnhB,GAAGnvF,EAAGD,EAAGM,GACjB,IAAIE,EAAI,GAAI6B,EAAI/B,EAAE2rG,SAAUlrG,EAAIsB,EAAI,GAAKgpG,YAAapqG,EAAGuvG,WAAYlsG,GAZtE,SAAYrE,EAAGD,EAAGM,GACjB,MAAO,CACN+qG,YAAa/qG,EAAEorG,WAAaprG,EAAEmrG,YAAczrG,EAAEurG,cAActrG,EAAEurG,KAAOxrG,EAAE8rG,eAAe7rG,EAAEurG,KACxFgF,WAAYlwG,EAAEorG,WAAaprG,EAAEmrG,YAAczrG,EAAEurG,cAActrG,EAAEurG,KAAOxrG,EAAE8rG,eAAe7rG,EAAEurG,IAAK,IAE9F,CAO4EiF,CAAGxwG,EAAGD,EAAGM,GACpF,IAAA,IAASN,KAAKqwG,GAAI,CACjB,IAAKpwG,EAAE0vG,MAAM3vG,GAAI,SACjB,IAAI0C,EAAIzC,EAAEqvG,MAAMtvG,GAAIqlD,OAAU,IAAN3iD,EAAezB,EAAIsvG,GAAG7tG,IAAM6tG,GAAG,GACvD,OAAQvwG,GACP,IAAK,KAAM,CACV,IAAIA,EAAImmF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG,QAASlL,EAAI,GACjC7B,EAAEuC,KAAK,CACNmgF,GAAIljF,EAAEqN,EACN81E,GAAInjF,EAAEuN,EACNmjG,SAAUJ,GAAEtwG,EAAEqN,EAAGrN,EAAEuN,EAAGxM,EAAG,GACzBouD,KAAM7qD,EACNgsD,OAAQjL,EACR+N,YAAa9yD,EAAE6tF,YAEhB,KACD,CACA,IAAK,OAAQ,CACZ,IAAInuF,EAAImmF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG,QAASlL,EAAI,GACjC7B,EAAEuC,KAAK,CACNmgF,GAAIljF,EAAEqN,EACN81E,GAAInjF,EAAEuN,EACNmjG,SAAUJ,GAAEtwG,EAAEqN,EAAGrN,EAAEuN,EAAGxM,EAAG,KACzBouD,KAAM7qD,EACNgsD,OAAQjL,EACR+N,YAAa9yD,EAAE6tF,YAEhB,KACD,CACA,IAAK,KAAM,CACV,IAAInuF,EAAImmF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG,OAAQlL,EAAI,GAAIpB,EAAIklF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG,OAAQlL,EAAI,GAChE7B,EAAEuC,KAAK,CACNmgF,GAAIljF,EAAEqN,EACN81E,GAAInjF,EAAEuN,EACNmjG,SAAUJ,GAAEtwG,EAAEqN,EAAGrN,EAAEuN,EAAGxM,EAAG,IACzBouD,KAAM7qD,EACNgsD,OAAQjL,EACR+N,YAAa9yD,EAAE6tF,YACZ3tF,EAAEuC,KAAK,CACVmgF,GAAIjiF,EAAEoM,EACN81E,GAAIliF,EAAEsM,EACNmjG,SAAUJ,GAAErvG,EAAEoM,EAAGpM,EAAEsM,EAAGxM,GAAG,IACzBouD,KAAM7qD,EACNgsD,OAAQjL,EACR+N,YAAa9yD,EAAE6tF,YAEhB,KACD,CACA,IAAK,MAAO,CACX,IAAInuF,EAAImmF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG,OAAQlL,EAAI,GAAIpB,EAAIklF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG,OAAQlL,EAAI,GAChE7B,EAAEuC,KAAK,CACNmgF,GAAIljF,EAAEqN,EACN81E,GAAInjF,EAAEuN,EACNmjG,SAAUJ,GAAEtwG,EAAEqN,EAAGrN,EAAEuN,EAAGxM,GAAG,IACzBouD,KAAM7qD,EACNgsD,OAAQjL,EACR+N,YAAa9yD,EAAE6tF,YACZ3tF,EAAEuC,KAAK,CACVmgF,GAAIjiF,EAAEoM,EACN81E,GAAIliF,EAAEsM,EACNmjG,SAAUJ,GAAErvG,EAAEoM,EAAGpM,EAAEsM,EAAGxM,EAAG,IACzBouD,KAAM7qD,EACNgsD,OAAQjL,EACR+N,YAAa9yD,EAAE6tF,YAEhB,KACD,EAEF,CACA,MAAO,CAAEwiB,UAAWnwG,EACrB,CAGA,SAASowG,GAAG3wG,GACX,IAAID,GAAKC,GAAGknG,OAAS,KAAO,IAAK7mG,EAAKL,GAAM4L,KAAKC,IAAI,IAAKD,KAAKD,IAAI,EAAG3L,GAAK,IAC3E,MAAO,QAAQK,EAAEL,GAAGO,OAAOF,EAAEL,GAAGwD,OAAOnD,EAAEL,GAAG+Z,OAAOha,IACpD,CACA,IAAI6wG,GAAK,MACR,WAAAzwG,CAAYH,EAAGD,EAAGM,EAAGE,GACpBsD,KAAK0kG,UAAYvoG,EAAG6D,KAAK2kG,SAAWzoG,EAAG8D,KAAKknG,QAAU1qG,EAAGwD,KAAKgtG,UAAYtwG,EAAEswG,UAAWhtG,KAAKitG,UAAYvwG,EAAEuwG,UAAWjtG,KAAKktG,UAAYxwG,EAAEwwG,UAAWltG,KAAKmtG,kBAAoB,IAAIhrB,GAAGhmF,EAAGD,EAAGM,GAAIwD,KAAKotG,aAAe,IAAIrE,GAAGrsG,EAAEswG,UAAW9wG,EAAGM,GAAIwD,KAAKqtG,aAAe,IAAItC,GAAG5uG,EAAGD,EAC3Q,CACA,UAAAoxG,CAAWnxG,EAAGD,EAAGM,EAAGE,GACnBsD,KAAKgtG,UAAUpnC,kBAAmB5lE,KAAKotG,aAAanE,kBAAmBjpG,KAAKitG,UAAUrnC,kBAAmB5lE,KAAKktG,UAAUtnC,kBAAmBlpE,GAAKsD,KAAKotG,aAAalE,OAAOxsG,GAAIsD,KAAKutG,aAAarxG,EAAEsxG,aACjM,IAAIjvG,EAAIyB,KAAKytG,gBAAgBtxG,EAAEuxG,aAAalxG,GAAIA,GAAIS,EAAI+C,KAAK2tG,YAAYzxG,EAAE0xG,YAAc,IACzF,OAAO5tG,KAAK6tG,eAAe1xG,EAAGD,GAAI,CACjC4xG,UAAW7wG,EAAE6wG,UACbC,oBAAqBxvG,EAAEwvG,oBACvBC,iBAAkB,IAAIzvG,EAAEyvG,oBAAqB/wG,EAAE+wG,kBAEjD,CACA,kBAAAzH,CAAmBpqG,EAAGD,GACrB,OAAO8D,KAAK2kG,SAAS6B,iBAAmBrqG,EAAEsqG,gBAAkBvqG,EAAEwqG,WAC/D,CACA,WAAAiH,CAAYxxG,GACX,IAAID,MAAwBiE,IAAO3D,EAAI,GAAIE,EAAIsD,KAAK2kG,SAASwD,SAC7D,OAAOhsG,EAAE0F,QAAS1F,IACjB,IAAIoC,EAAIyB,KAAKmtG,kBAAkBhG,gBAAgBhrG,GAC/C,IAAA,IAASD,KAAKiwG,GAAGhwG,EAAG6D,KAAK2kG,UAAW,CACnC,IAAIxoG,EAAI6D,KAAKknG,QAAQkB,YAAY,EAAG,GACpC,GAAIpoG,KAAKknG,QAAQ0B,QAAQzsG,EAAG,CAC3B2pD,OAAQ5pD,EAAEqnD,KAAKuC,OACf0G,OAAQtwD,EAAEqnD,KAAKiJ,OACf8C,YAAapzD,EAAEqnD,KAAK+L,YACpBL,KAAM/yD,EAAEqnD,KAAK0L,OACV/yD,EAAEsL,MAAO,CACZ,IAAIhL,EAAIN,EAAEsL,MACVxH,KAAKknG,QAAQ+G,WAAW9xG,EAAG,CAC1BywG,SAAU,CACTpwG,EAAE4vG,KACF5vG,EAAE6vG,KACF7vG,EAAEqmD,GACFrmD,EAAEsmD,GACFtmD,EAAEumD,GACFvmD,EAAEwmD,IAEHqI,KAAM7uD,EAAE6uD,KACRmB,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,aAEjB,CACA,GAAIpzD,EAAEowG,KAAM,CACX,IAAI9vG,EAAIN,EAAEowG,KACVtsG,KAAKknG,QAAQqB,QAAQpsG,EAAG,CACvBoN,EAAG/M,EAAE+M,EACLE,EAAGjN,EAAEiN,EACLP,MAAO1M,EAAE0M,MACTE,OAAQ5M,EAAE4M,OACVojD,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,aAEjB,CACAtvD,KAAKitG,UAAU1D,QAAQptG,EACxB,CACA6D,KAAKqtG,aAAa1B,0BAA0BxvG,GAAG0F,QAAS1F,IACvDK,EAAEyC,KAAK9C,KAER,IAAIc,EAAId,EAAEoN,EAAI7M,EAAI,EAAGS,EAAIhB,EAAEsN,EAAI/M,EAAI,EACnC,IAAA,IAASR,KAAK8vG,GAAG7vG,EAAG6D,KAAK2kG,UAAW3kG,KAAKknG,QAAQ0B,QAAQrqG,EAAG,CAC3DunD,OAAQ,CACP5pD,EAAE2mD,GAAK5lD,EACPf,EAAE4mD,GAAK3lD,EACPjB,EAAE6mD,GAAK9lD,EACPf,EAAE8mD,GAAK7lD,GAERqvD,OAAQtwD,EAAEswD,OACV8C,YAAapzD,EAAEozD,cAEhB,IAAMu9C,UAAWrsG,GAAM8qF,GAAGnvF,EAAG6D,KAAK0kG,UAAW1kG,KAAK2kG,UAClD,IAAA,IAASxoG,KAAKqE,EAAG,CAChB,IAAItE,EAAI,GACR,IAAA,IAASM,EAAI,EAAGA,EAAIL,EAAEywG,SAASnwG,OAAQD,GAAK,EAAGN,EAAE+C,KAAK9C,EAAEywG,SAASpwG,GAAKS,EAAGd,EAAEywG,SAASpwG,EAAI,GAAKW,GAC7F6C,KAAKknG,QAAQ+G,WAAW1vG,EAAG,CAC1BquG,SAAU1wG,EACVmvD,KAAMlvD,EAAEkvD,KACRmB,OAAQrwD,EAAEqwD,OACV8C,YAAanzD,EAAEmzD,aAEjB,CACAtvD,KAAKktG,UAAU3D,QAAQhrG,GAAIrC,EAAEyG,IAAIxG,EAAEstC,GAAI,CACtCykE,KAAM/xG,EACNgyG,MAAO5vG,MAEL,CACHuvG,UAAW5xG,EACX8xG,iBAAkBxxG,EAEpB,CACA,eAAAixG,CAAgBtxG,EAAGD,GAClB,IAAIM,EAAI,GAAIE,EAAI,GAChB,OAAOP,EAAE0F,QAAS1F,IACjB,IAAIoC,EAAIyB,KAAKqtG,aAAapC,WAAW9uG,EAAGD,GACxC,IAAKqC,EAAG,OACR,IAAItB,EAAI+C,KAAKouG,eAAe7vG,GAC5ByB,KAAKitG,UAAU1D,QAAQtsG,GAAIT,EAAEyC,KAAK,CACjCkvG,MAAOlxG,EACPsrD,OAAQhqD,EAAEgqD,OACVmjD,aAAcntG,EAAEmtG,oBACM,IAAnBntG,EAAEmtG,cAA2BhvG,EAAEuC,KAAK,CACvCspD,OAAQhqD,EAAEgqD,OACVmjD,aAAcntG,EAAEmtG,iBAEd,CACHqC,oBAAqBvxG,EACrBwxG,iBAAkBtxG,EAEpB,CACA,cAAA0xG,CAAejyG,GACd,IAAID,EAAI8D,KAAKknG,QAAQkB,YAAY,EAAG,GACpC,IAAA,IAAS5rG,KAAKL,EAAE0wF,MAAO7sF,KAAKknG,QAAQ0B,QAAQ1sG,EAAG,CAC9C4pD,OAAQtpD,EAAEspD,OACV0G,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,YACfL,KAAMzyD,EAAEyyD,OAET,IAAA,IAASzyD,KAAKL,EAAEsvG,OAAQzrG,KAAKquG,YAAYnyG,EAAGM,GAC5C,IAAA,IAASA,KAAKL,EAAEqvG,MAAOxrG,KAAKknG,QAAQqB,QAAQrsG,EAAG,CAC9CqN,EAAG/M,EAAE+M,EACLE,EAAGjN,EAAEiN,EACLP,MAAO1M,EAAE0M,MACTE,OAAQ5M,EAAE4M,OACVojD,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,cAEhB,OAAOpzD,CACR,CACA,WAAAmyG,CAAYlyG,EAAGD,GACd8D,KAAKknG,QAAQ0B,QAAQzsG,EAAG,CACvB2pD,OAAQ5pD,EAAE4pD,OACV0G,OAAQtwD,EAAEswD,OACV8C,YAAapzD,EAAEozD,YACfL,KAAM/yD,EAAE+yD,OAET,IAAIzyD,EAAIN,EAAE4pD,OAAOrpD,OAAS,EAAGC,EAAIR,EAAE4pD,OAAOtpD,GAAI+B,EAAIrC,EAAE4pD,OAAOtpD,EAAI,GAAIS,EAAIf,EAAE4pD,OAAOtpD,EAAI,GAAIW,EAAIjB,EAAE4pD,OAAOtpD,EAAI,GAAIgE,EAAIuH,KAAKm8E,MAAM3lF,EAAIpB,EAAGT,EAAIO,GAAI2B,EAAI1C,EAAE6nF,cAAexiC,EAAIrlD,EAAEioF,aAAe,EAAG1lF,EAAI/B,EAAIkC,EAAImJ,KAAK4pC,IAAInxC,EAAIuH,KAAKm8E,MAAM3iC,EAAG3iD,IAAK2zC,EAAIh0C,EAAIK,EAAImJ,KAAK6pC,IAAIpxC,EAAIuH,KAAKm8E,MAAM3iC,EAAG3iD,IAAKgB,EAAIlD,EAAIkC,EAAImJ,KAAK4pC,IAAInxC,EAAIuH,KAAKm8E,MAAM3iC,EAAG3iD,IAAKyhC,EAAI9hC,EAAIK,EAAImJ,KAAK6pC,IAAIpxC,EAAIuH,KAAKm8E,MAAM3iC,EAAG3iD,IACnWoB,KAAKknG,QAAQ+G,WAAW9xG,EAAG,CAC1BywG,SAAU,CACTlwG,EACA6B,EACAE,EACA8zC,EACA3yC,EACAygC,GAEDgrB,KAAMnvD,EAAEmvD,KACRmB,OAAQtwD,EAAEswD,OACV8C,YAAapzD,EAAEozD,aAEjB,CACA,YAAAi+C,CAAapxG,GACsB,SAAlC6D,KAAK2kG,SAAS2J,iBAA8BnyG,EAAE0F,QAAS1F,IACtD,IAAID,EAAIC,EAAEoyG,EAAG/xG,GAAKL,EAAEqyG,EACpB,GAAsC,UAAlCxuG,KAAK2kG,SAAS2J,iBAA+BnyG,EAAEsyG,OAAQ,CAC1D,IAAI/xG,EAAIsD,KAAKknG,QAAQkB,YAAY,EAAG,GAQpC,OAPApoG,KAAKknG,QAAQwH,SAAShyG,EAAG,CACxB6M,EAAGrN,EACHuN,EAAGjN,EACH0M,MAAO/M,EAAEwyG,MACTvlG,OAAQjN,EAAEyyG,OACV5vD,IAAK,yBAAyB7iD,EAAEsyG,gBAC7BzuG,KAAKitG,UAAU1D,QAAQ7sG,EAE5B,CACA,IAAIA,EAAIsD,KAAKknG,QAAQkB,YAAY,EAAG,GACpC,IAAKjsG,EAAE0yG,SAASxL,OAAS,GAAK,IAAMrjG,KAAK2kG,SAASmK,mBAAqB9uG,KAAKknG,QAAQqB,QAAQ7rG,EAAG,CAC9F6M,EAAGrN,EACHuN,EAAGjN,EACH0M,MAAO/M,EAAEwyG,MACTvlG,OAAQjN,EAAEyyG,OACVvjD,KAAMyhD,GAAG3wG,EAAE0yG,WACR1yG,EAAEisF,KAAM,CACX,IAAI7pF,EAAIwJ,KAAKC,IAAI,IAAK7L,EAAEwyG,MAAQ5mG,KAAKD,IAAI3L,EAAEisF,KAAK3rF,OAAS,EAAG,IAAKQ,EAAI8K,KAAKD,IAAI,GAAIC,KAAKC,IAAIzJ,EAAGwJ,KAAKD,IAAe,GAAX3L,EAAEyyG,OAAa,MACtH5uG,KAAKknG,QAAQ4B,QAAQpsG,EAAG,CACvB6M,EAAGrN,EACHuN,EAAGjN,EACH0M,MAAO/M,EAAEwyG,MACTvlG,OAAQjN,EAAEyyG,OACV3sE,KAAM9lC,EAAEisF,KACRO,SAAU1rF,EACVouD,KAAMyhD,GAAG3wG,EAAE4yG,SACX/lB,MAAO,SACPF,cAAe,UAEjB,CACA9oF,KAAKitG,UAAU1D,QAAQ7sG,IAEzB,CACA,cAAAmxG,CAAe1xG,EAAGD,GACjB,IAAK8D,KAAK2kG,SAASiC,SAAU,OAC7B,IAAIpqG,EAAIL,EAAE0qG,cACV,IAAKrqG,EAAG,OACR,IAAIE,EAAIsD,KAAKumG,mBAAmBpqG,EAAGD,GAAIqC,EAAIyB,KAAKknG,QAAQkB,YAAY,EAAG,GACvEpoG,KAAKknG,QAAQ4B,QAAQvqG,EAAG,CACvBgL,EAAG7M,EAAEk+D,KAAO,IACZnxD,EAAG/M,EAAEo+D,KAAO,IACZ74B,KAAMzlC,EACNmsF,SAAU,IACV6D,WAAYxsF,KAAK2kG,SAASnY,WAC1BnhC,KAAM,UACHrrD,KAAKktG,UAAU3D,QAAQhrG,EAC5B,GAKD,IAAIywG,GAAI,MACP,WAAA1yG,CAAYH,EAAGD,GACd8D,KAAKivG,KAAO,EAAGjvG,KAAKkvG,QAAU,IAAKlvG,KAAKoH,SAAW,CAClDmC,EAAG,EACHE,EAAG,GACDzJ,KAAKmvG,gBAAiB,EAAInvG,KAAKovG,UAAW,EAAIpvG,KAAKqvG,UAAY,CACjE9lG,EAAG,EACHE,EAAG,GACDzJ,KAAKsvG,oBAAsB,CAC7B/lG,EAAG,EACHE,EAAG,GACDzJ,KAAKkJ,MAAQ/M,EAAG6D,KAAKoJ,OAASlN,CAClC,CACA,QAAAqzG,GACC,OAlBK,GAkBMvvG,KAAKivG,IACjB,CACA,OAAAO,CAAQrzG,GACP,IAAID,EAAI6L,KAAKD,IAAI9H,KAAKkvG,QAASnnG,KAAKC,IAAI,EAAG7L,IAC3C,OAAO6D,KAAKivG,OAAS/yG,IAAU8D,KAAKivG,KAAO/yG,EAAG8D,KAAKyvG,UAAU,EAC9D,CACA,YAAAC,CAAavzG,GACZ,IAAID,EAAI6L,KAAKD,IAAI9H,KAAKkvG,QAASnnG,KAAKC,IAAI,EAAG7L,IAC3C,GAAI6D,KAAKivG,OAAS/yG,EAAG,OAAO,EAC5B,IAAIM,EAAIwD,KAAKuvG,WAAY7yG,EAAIsD,KAAKkJ,MAAQ,EAAG3K,EAAIyB,KAAKoJ,OAAS,EAAGnM,GAC7DP,EAAIsD,KAAKoH,SAASmC,GAAK/M,EADsCS,GAE7DsB,EAAIyB,KAAKoH,SAASqC,GAAKjN,EAE5BwD,KAAKivG,KAAO/yG,EACZ,IAAIiB,EAAI6C,KAAKuvG,WACb,OAAOvvG,KAAKoH,SAAW,CACtBmC,EAAG7M,EAAIO,EAAME,EACbsM,EAAGlL,EAAItB,EAAME,GACX6C,KAAKyvG,UAAU,CACnB,CACA,WAAAE,CAAYxzG,EAAGD,EAAGM,GACjB,IAAIE,EAAIsD,KAAKuvG,WAAYhxG,GACpBrC,EAAI8D,KAAKoH,SAASmC,GAAK7M,EADH6B,GAEpB/B,EAAIwD,KAAKoH,SAASqC,GAAK/M,EACzBO,EAAI8K,KAAKD,IAAI9H,KAAKkvG,QAASnnG,KAAKC,IAAI,EAAG7L,IAC1C,GAAI6D,KAAKivG,OAAShyG,EAAG,OAAO,EAC5B+C,KAAKivG,KAAOhyG,EACZ,IAAIE,EAAI6C,KAAKuvG,WACb,OAAOvvG,KAAKoH,SAAW,CACtBmC,EAAGrN,EAAIqC,EAAMpB,EACbsM,EAAGjN,EAAI+B,EAAMpB,GACX6C,KAAKyvG,UAAU,CACnB,CACA,iBAAAG,GACC,IAAIzzG,EAAI6D,KAAKuvG,WACb,MAAO,CACN30C,MAAO,EAAI56D,KAAKoH,SAASmC,GAAKpN,EAC9B4+D,MAAO/6D,KAAKkJ,MAAQlJ,KAAKoH,SAASmC,GAAKpN,EACvC2+D,MAAO,EAAI96D,KAAKoH,SAASqC,GAAKtN,EAC9B6+D,MAAOh7D,KAAKoJ,OAASpJ,KAAKoH,SAASqC,GAAKtN,EAE1C,CACA,gBAAA0zG,CAAiB1zG,EAAGD,EAAGM,GACtB,IAAIE,EAAIP,GAAKK,GAAGyH,MAAQ,GAAI1F,EAAIrC,GAAKM,GAAGsH,KAAO,GAAI7G,EAAI+C,KAAKuvG,WAC5D,OAAOtyG,EAAI,CACVsM,GAAI7M,EAAIsD,KAAKoH,SAASmC,GAAKtM,EAC3BwM,GAAIlL,EAAIyB,KAAKoH,SAASqC,GAAKxM,GACxB,IACL,CACA,aAAA6yG,CAAc3zG,EAAGD,GAChB,IAAIM,EAAIwD,KAAKuvG,WACbvvG,KAAKoH,SAAW,CACfmC,EAAGvJ,KAAKkJ,MAAQ,EAAI/M,EAAIK,EACxBiN,EAAGzJ,KAAKoJ,OAAS,EAAIlN,EAAIM,GACvBwD,KAAKyvG,QACT,CACA,qBAAAM,CAAsB5zG,EAAGD,EAAGM,GAC3B,GAAIA,EAEH,YADAwD,KAAK8vG,cAAc3zG,EAAGD,GAGvB,IAAIQ,EAAI,IAAKsD,KAAKoH,UAAY7I,EAAIyB,KAAKuvG,WAAYtyG,EAC/C+C,KAAKkJ,MAAQ,EAAI/M,EAAIoC,EAD0BtB,EAE/C+C,KAAKoJ,OAAS,EAAIlN,EAAIqC,EAE1ByB,KAAKgwG,QAAQ,IAAM7zG,IAClB6D,KAAKoH,SAAW,CACfmC,EAAG7M,EAAE6M,GAAKtM,EAAMP,EAAE6M,GAAKpN,EACvBsN,EAAG/M,EAAE+M,GAAKxM,EAAMP,EAAE+M,GAAKtN,IAG1B,CACA,cAAA8zG,CAAe9zG,EAAGD,EAAGM,EAAGE,GACvB,IAAI6B,EAAIrC,EAAIC,EAAGc,EAAIP,EAAIF,EACvB,GAAI+B,GAAK,GAAKtB,GAAK,EAAG,OACtB,IAAIE,EAAI6C,KAAKkJ,OA7FR,IA6FkB3K,EAAI,IAASiC,EAAIR,KAAKoJ,QA7FxC,IA6FmDnM,EAAI,IAC5D+C,KAAKivG,KAAOlnG,KAAKD,IAAI,IAAKC,KAAKC,IAAI,EAAGD,KAAKC,IAAI7K,EAAGqD,KAAMR,KAAKkvG,QAAUlvG,KAAKivG,KAC5E,IAAIrwG,EAAIoB,KAAKuvG,WAAYhuD,GAAKplD,EAAID,GAAK,EAAGuC,GAAKjC,EAAIE,GAAK,EACxDsD,KAAKoH,SAAW,CACfmC,EAAGvJ,KAAKkJ,MAAQ,EAAIq4C,EAAI3iD,EACxB6K,EAAGzJ,KAAKoJ,OAAS,EAAI3K,EAAIG,GACvBoB,KAAKyvG,QACT,CACA,OAAAv+C,CAAQ/0D,EAAGD,GACV8D,KAAKkJ,MAAQ/M,EAAG6D,KAAKoJ,OAASlN,EAAG8D,KAAKyvG,QACvC,CACA,SAAAh9C,CAAUt2D,EAAGD,GACZ8D,KAAKkwG,kBAAmBlwG,KAAKovG,UAAW,EAAIpvG,KAAKqvG,UAAY,CAC5D9lG,EAAGpN,EACHsN,EAAGvN,GACD8D,KAAKsvG,oBAAsB,IAAKtvG,KAAKoH,SACzC,CACA,UAAA+oG,CAAWh0G,EAAGD,GACb8D,KAAKovG,WAAapvG,KAAKoH,SAAW,CACjCmC,EAAGvJ,KAAKsvG,oBAAoB/lG,GAAKpN,EAAI6D,KAAKqvG,UAAU9lG,GACpDE,EAAGzJ,KAAKsvG,oBAAoB7lG,GAAKvN,EAAI8D,KAAKqvG,UAAU5lG,IAClDzJ,KAAKyvG,SACT,CACA,OAAAW,GACCpwG,KAAKovG,UAAW,CACjB,CACA,UAAAh/D,GACC,OAAOpwC,KAAKovG,QACb,CACA,OAAAY,CAAQ7zG,EAAGD,GACV8D,KAAKkwG,kBACL,IAAI1zG,EAAI43E,YAAYD,MAAOz3E,SAAW4gD,sBAAwB,IAAMA,sBAAyBnhD,GAAMimB,WAAW,IAAMjmB,EAAEi4E,YAAYD,OAAQ,IAAK51E,EAAKtB,IACnJ,IAAIE,EAAIF,EAAIT,EAAGgE,EAAIuH,KAAKC,IAAI7K,EAAIhB,EAAG,GACnCD,EA7HH,SAAYC,GACX,OAAOA,EAAI,GAAK,EAAIA,EAAIA,GAAU,EAAI,EAAIA,GAAKA,EAAnB,CAC7B,CA2HKk0G,CAAG7vG,IAAKR,KAAKyvG,SAAkBzvG,KAAKswG,YAAb9vG,EAAI,EAAuB9D,EAAE6B,QAAwB,GAE/EyB,KAAKswG,YAAc5zG,EAAE6B,EACtB,CACA,eAAA2xG,QACsB,IAArBlwG,KAAKswG,sBAAmCC,qBAAuB,IAAMA,qBAAwBp0G,GAAM00B,aAAa10B,IAAI6D,KAAKswG,aAActwG,KAAKswG,iBAAc,EAC3J,CACA,WAAAE,GACC,YAA4B,IAArBxwG,KAAKswG,WACb,CACA,MAAAb,GACCzvG,KAAK8xF,YACN,GACE2e,GAAK,MACP,WAAAn0G,CAAYH,EAAI,IACf6D,KAAK0wG,QAAU,GAAI1wG,KAAK2wG,gBAAkB,EAAG3wG,KAAK8gB,SAAW,KAAM9gB,KAAK4wG,WAAaz0G,CACtF,CACA,WAAA00G,CAAY10G,GACXA,IAAM6D,KAAK8gB,WAAa9gB,KAAK8gB,SAAW3kB,EAAG6D,KAAK0wG,QAAU,GAC3D,CACA,MAAAI,CAAO30G,GACN6D,KAAK8gB,WAAa9gB,KAAK0wG,QAAQzxG,KAAK9C,GAAI6D,KAAK0wG,QAAQj0G,QAAUuD,KAAK4wG,YAAc5wG,KAAK+wG,QACxF,CACA,UAAAC,GACC,IAAI70G,EAAIi4E,YAAYD,MAAOj4E,EAAIC,EAAI6D,KAAK2wG,gBACxC,OAAO3wG,KAAK2wG,gBAAkBx0G,EAAGD,EAAI,EAAI,IAAMA,EAAI,CACpD,CACA,KAAA60G,GACC,IAAI50G,EAAI6D,KAAK0wG,QAAQj0G,OACrB,GAAU,IAANN,EAAS,OACb,IAAID,EAAI,CACP+0G,UAAW,EACXC,OAAQ,EACRC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,IAAK,GAEN,IAAA,IAASn1G,KAAK6D,KAAK0wG,QAASx0G,EAAE+0G,WAAa90G,EAAE80G,UAAW/0G,EAAEg1G,QAAU/0G,EAAE+0G,OAAQh1G,EAAEi1G,cAAgBh1G,EAAEg1G,aAAcj1G,EAAEk1G,YAAcj1G,EAAEi1G,WAAYl1G,EAAEm1G,cAAgBl1G,EAAEk1G,aAAcn1G,EAAEo1G,KAAOn1G,EAAEm1G,IAC3Lp1G,EAAE+0G,WAAa90G,EAAGD,EAAEg1G,QAAU/0G,EAAGD,EAAEi1G,aAAeppG,KAAKE,MAAM/L,EAAEi1G,aAAeh1G,GAAID,EAAEk1G,WAAarpG,KAAKE,MAAM/L,EAAEk1G,WAAaj1G,GAAID,EAAEm1G,aAAetpG,KAAKE,MAAM/L,EAAEm1G,aAAel1G,GAAID,EAAEo1G,IAAMvpG,KAAKE,MAAM/L,EAAEo1G,KAAMtxG,KAAK8gB,SAAS5kB,GAAI8D,KAAK0wG,QAAU,EAC7O,GACEa,GAAK,MACP,WAAAj1G,CAAYH,EAAGD,EAAGM,EAAGE,GACpBsD,KAAK8tG,UAA4B,IAAI3tG,IAAOH,KAAK+tG,oBAAsB,GAAI/tG,KAAKwxG,kBAAoB,EAAGxxG,KAAKyxG,qBAAuCtxG,IAAOH,KAAK0xG,iBAAmC,IAAIvxG,IAAOH,KAAKmxG,aAA+B,IAAI31F,IAAOxb,KAAK2xG,2BAA6C,IAAIn2F,IAAOxb,KAAK4xG,cAAgC,IAAIp2F,IAAOxb,KAAK6xG,cAAgC,IAAIr2F,IAAOxb,KAAK8xG,qBAAuC,IAAIt2F,IAAOxb,KAAK+xG,qBAAuC,IAAIv2F,IAAOxb,KAAKgyG,kBAAmB,EAAIhyG,KAAKiyG,YAAc,IAAIxB,GAAMzwG,KAAKkyG,UAAY/1G,EAAG6D,KAAKktG,UAAYhxG,EAAG8D,KAAKitG,UAAYzwG,EAAGwD,KAAK2kG,SAAWjoG,CAC7oB,CACA,iBAAAy1G,GACCnyG,KAAKwxG,kBAAoBzpG,KAAKD,IAA6B,GAAzB9H,KAAK2kG,SAASwD,SAAe,EAChE,CACA,KAAA7/C,GACCtoD,KAAK8tG,UAAUxlD,QAAStoD,KAAK+tG,oBAAsB,GAAI/tG,KAAKoyG,kCAA+B,EAAQpyG,KAAKyxG,iBAAiBnpD,QAAStoD,KAAK0xG,iBAAiBppD,QAAStoD,KAAKmxG,aAAa7oD,QAAStoD,KAAK2xG,2BAA2BrpD,OAC7N,CACA,YAAA+pD,CAAal2G,EAAGD,GACf,OAAW,QAAJC,EAAcD,CACtB,CACA,aAAAo2G,CAAcn2G,EAAGD,EAAGM,EAAGE,EAAG6B,GACzB,IAAItB,EAAI+C,KAAKwxG,kBAAmBr0G,EAAI4K,KAAKC,IAAI7L,EAAGK,GAAIgE,EAAIuH,KAAKD,IAAI3L,EAAGK,GAAIoC,EAAImJ,KAAKC,IAAI9L,EAAGQ,GAAI6kD,EAAIx5C,KAAKD,IAAI5L,EAAGQ,GAAI+B,EAAIsJ,KAAKk+B,MAAM9oC,EAAIF,GAAIs1C,EAAIxqC,KAAKk+B,MAAMzlC,EAAIvD,GAAI2C,EAAImI,KAAKk+B,MAAMrnC,EAAI3B,GAAIojC,EAAIt4B,KAAKk+B,MAAMsb,EAAItkD,GACxM,IAAA,IAASd,EAAIsC,EAAGtC,GAAKo2C,EAAGp2C,YAAcD,EAAI0D,EAAG1D,GAAKmkC,EAAGnkC,IAAKqC,EAAEyB,KAAKqyG,aAAal2G,EAAGD,GAClF,CACA,qBAAAq2G,CAAsBp2G,GACrB,IAAID,EAAI8D,KAAK2kG,SAASwD,SAAW,EACjCnoG,KAAKsyG,cAAcn2G,EAAE+xG,KAAK3kG,EAAIrN,EAAGC,EAAE+xG,KAAKzkG,EAAIvN,EAAGC,EAAE+xG,KAAK3kG,EAAIrN,EAAGC,EAAE+xG,KAAKzkG,EAAIvN,EAAIA,IAC3E,IAAIM,EAAIwD,KAAKyxG,iBAAiB1wG,IAAI7E,GAClCM,IAAMA,EAAoB,IAAIgf,IAAOxb,KAAKyxG,iBAAiB9uG,IAAIzG,EAAGM,IAAKA,EAAE+G,IAAIpH,IAE/E,CACA,+BAAAq2G,CAAgCr2G,GAC/B,IAAMosD,OAAQrsD,GAAMC,EACpB6D,KAAKsyG,cAAcp2G,EAAEqN,EAAGrN,EAAEuN,EAAGvN,EAAEqN,EAAIrN,EAAEgN,MAAOhN,EAAEuN,EAAIvN,EAAEkN,OAASlN,IAC5D,IAAIM,EAAIwD,KAAK0xG,iBAAiB3wG,IAAI7E,GAClCM,IAAMA,EAAoB,IAAIgf,IAAOxb,KAAK0xG,iBAAiB/uG,IAAIzG,EAAGM,IAAKA,EAAE+G,IAAIpH,IAE/E,CACA,kBAAAs2G,CAAmBt2G,EAAGD,GACrB,IAAIM,EAAIwD,KAAK2kG,SAASwD,SAAW,EAAGzrG,EAAIsD,KAAKqyG,aAAatqG,KAAKk+B,MAAM9pC,EAAI6D,KAAKwxG,mBAAoBzpG,KAAKk+B,MAAM/pC,EAAI8D,KAAKwxG,oBAAqBjzG,EAAIyB,KAAKyxG,iBAAiB1wG,IAAIrE,GACzK,IAAK6B,EAAG,OAAO,KACf,IAAA,IAAS7B,KAAK6B,EAAG,CAChB,IAAIA,EAAIpC,EAAIO,EAAEwxG,KAAK3kG,EAAGtM,EAAIf,EAAIQ,EAAEwxG,KAAKzkG,EACrC,GAAIlL,IAAM/B,GAAK+B,GAAK/B,GAAKS,IAAMT,GAAKS,GAAKT,EAAG,OAAOE,EAAEwxG,IACtD,CACA,OAAO,IACR,CACA,mBAAAwE,GACC1yG,KAAKoyG,kCAA+B,CACrC,CACA,qBAAAO,GACC3yG,KAAKoyG,6BAA+BpyG,KAAK2kG,SAASwD,QACnD,CACA,qBAAAyK,CAAsBz2G,EAAGD,EAAGM,EAAGE,GAC9B,IAAI6B,EAAIyB,KAAK8xG,qBACb,OAAOvzG,EAAE+pD,QAAStoD,KAAKsyG,cAAcn2G,EAAGD,EAAGM,EAAGE,EAAIP,IACjD6D,KAAKyxG,iBAAiB1wG,IAAI5E,IAAI0F,QAAS1F,GAAMoC,EAAEgF,IAAIpH,MAChDoC,CACL,CACA,+BAAAs0G,CAAgC12G,EAAGD,EAAGM,EAAGE,GACxC,IAAI6B,EAAIyB,KAAK+xG,qBACb,OAAOxzG,EAAE+pD,QAAStoD,KAAKsyG,cAAcn2G,EAAGD,EAAGM,EAAGE,EAAIP,IACjD6D,KAAK0xG,iBAAiB3wG,IAAI5E,IAAI0F,QAAS1F,GAAMoC,EAAEgF,IAAIpH,MAChDoC,CACL,CACA,mCAAAu0G,GACC9yG,KAAKoyG,+BAAiCpyG,KAAK2kG,SAASwD,WAAanoG,KAAK0xG,iBAAiBppD,QAAStoD,KAAK+tG,oBAAoBlsG,QAAS1F,GAAM6D,KAAKwyG,gCAAgCr2G,IAAK6D,KAAKoyG,6BAA+BpyG,KAAK2kG,SAASwD,SACrO,CACA,eAAA4K,GACC,GAAI/yG,KAAKgyG,iBAAkB,OAC3BhyG,KAAKgyG,kBAAmB,EACxB,IAAI71G,EAAI,KACP6D,KAAKgyG,kBAAmB,EAAIhyG,KAAKgzG,wBAE3B11D,sBAAwB,IAAMA,sBAAsBnhD,GAAKA,GACjE,CACA,aAAA62G,GACC,GAA4B,IAAxBhzG,KAAK8tG,UAAU/mF,MAAkD,IAApC/mB,KAAK+tG,oBAAoBtxG,OAAc,OACxE,IAAIN,EAAI6D,KAAKkyG,UAAUnpG,SACvB,IAAK5M,EAAG,OACR6D,KAAKiyG,YAAYpB,YAAY7wG,KAAK2kG,SAASsO,cAC3C,IAAI/2G,EAAI8D,KAAK2kG,SAASsO,aAAe7+B,YAAYD,MAAQ,EAAG33E,EAAIwD,KAAKkyG,UAAU9qG,WAAY1K,EAAIsD,KAAK2kG,SAASwD,SAAW,EAAG5pG,EAAIyB,KAAK2kG,SAASuO,cAAej2G,EAAIsB,EAAIA,EAAEgL,EAAI,EAAGpM,EAAIoB,EAAIA,EAAEgL,EAAIhL,EAAE2K,MAAQlJ,KAAKkyG,UAAUhpG,QAAS1I,EAAIjC,EAAIA,EAAEkL,EAAI,EAAG7K,EAAIL,EAAIA,EAAEkL,EAAIlL,EAAE6K,OAASpJ,KAAKkyG,UAAU9oG,SAAUm4C,GAAKx5C,KAAKC,IAAI/K,EAAGE,GAAKX,EAAE+M,GAAKpN,EAAGsC,GAAKsJ,KAAKD,IAAI7K,EAAGE,GAAKX,EAAE+M,GAAKpN,EAAGo2C,GAAKxqC,KAAKC,IAAIxH,EAAG5B,GAAKpC,EAAEiN,GAAKtN,EAAGyD,GAAKmI,KAAKD,IAAItH,EAAG5B,GAAKpC,EAAEiN,GAAKtN,EAAGkkC,GAAI,EAAIljB,GAAI,EAAImkC,EAAIthD,KAAK2kG,SAASwO,eAAiBnzG,KAAK2kG,SAASyO,aAAe,UAAY,OAAQzzG,EAAI4hD,EAAI7kD,EAAG0kD,EAAI3iD,EAAI/B,EAAGqe,EAAIw3B,EAAI71C,EAAG+M,EAAI7J,EAAIlD,EAC7iB,GAAIsD,KAAK8yG,sCAA6C,SAANxxD,EAM/C,OALAthD,KAAK8tG,UAAUjsG,QAAS1F,IACvBA,EAAEgyG,MAAM9uF,cAAgBljB,EAAEgyG,MAAMkF,YAAW,GAAKhzE,GAAI,KACjDrgC,KAAK+tG,oBAAoBlsG,QAAS1F,IACrCA,EAAEgyG,MAAM9uF,cAAgBljB,EAAEgyG,MAAMkF,YAAW,GAAKl2F,GAAI,KACjDkjB,GAAKrgC,KAAKktG,UAAUlqC,YAAa7lD,GAAKnd,KAAKitG,UAAUjqC,YAAahjE,KAAKmxG,aAAa7oD,QAAStoD,KAAK8tG,UAAUjsG,QAAS1F,GAAM6D,KAAKmxG,aAAa5tG,IAAIpH,IAAK6D,KAAK2xG,2BAA2BrpD,aAAStoD,KAAK+tG,oBAAoBlsG,QAAS1F,GAAM6D,KAAK2xG,2BAA2BpuG,IAAIpH,IAGhR,GAAU,UAANmlD,EAAe,CAClB,IAAInlD,EAAI6D,KAAK4xG,cAKb,OAJAz1G,EAAEmsD,QAAStoD,KAAK8tG,UAAUjsG,QAAS3F,IAClC,IAAIM,EAAIN,EAAEgyG,KAAK3kG,EAAI7M,GAAK6kD,GAAKrlD,EAAEgyG,KAAK3kG,EAAI7M,GAAK+B,GAAKvC,EAAEgyG,KAAKzkG,EAAI/M,GAAK61C,GAAKr2C,EAAEgyG,KAAKzkG,EAAI/M,GAAKkD,EACvF1D,EAAEiyG,MAAM9uF,cAAgB7iB,IAAMN,EAAEiyG,MAAMkF,WAAW72G,GAAI6jC,GAAI,GAAK7jC,GAAKL,EAAEoH,IAAIrH,KACtEihB,EAAInd,KAAKszG,UAAU/xD,EAAG9iD,EAAG8zC,EAAG3yC,GAAG2zG,QAASvzG,KAAK4xG,cAAgB5xG,KAAKmxG,aAAcnxG,KAAKmxG,aAAeh1G,EAAGkkC,GAAKrgC,KAAKktG,UAAUlqC,iBAAa7lD,GAAKnd,KAAKitG,UAAUjqC,YAEjK,CACA,IAAI9sD,EAAIlW,KAAK4yG,sBAAsBjzG,EAAGob,EAAGqmC,EAAG33C,GAAIF,EAAIvJ,KAAK4xG,cACzD,GAAIroG,EAAE++C,QAASpyC,EAAErU,QAAS1F,IACzB,IAAID,EAAIC,EAAE+xG,KAAK3kG,EAAI7M,GAAK6kD,GAAKplD,EAAE+xG,KAAK3kG,EAAI7M,GAAK+B,GAAKtC,EAAE+xG,KAAKzkG,EAAI/M,GAAK61C,GAAKp2C,EAAE+xG,KAAKzkG,EAAI/M,GAAKkD,EACvFzD,EAAEgyG,MAAM9uF,cAAgBnjB,IAAMC,EAAEgyG,MAAMkF,WAAWn3G,GAAImkC,GAAI,GAAKnkC,GAAKqN,EAAEhG,IAAIpH,KACtE6D,KAAKmxG,aAAatvG,QAAS1F,KAC7B+Z,EAAElU,IAAI7F,IAAMA,EAAEgyG,MAAM9uF,cAAgBljB,EAAEgyG,MAAMkF,YAAW,GAAKhzE,GAAI,KAC9DrgC,KAAK4xG,cAAgB5xG,KAAKmxG,aAAcnxG,KAAKmxG,aAAe5nG,EAAG4T,EAAInd,KAAKszG,UAAU/xD,EAAG9iD,EAAG8zC,EAAG3yC,GAAG,GAAI2zG,QAASlzE,GAAKrgC,KAAKktG,UAAUlqC,YAAa7lD,GAAKnd,KAAKitG,UAAUjqC,YAAahjE,KAAK2kG,SAASsO,aAAc,CAC5M,IAAI92G,EAAIi4E,YAAYD,MAAQj4E,EAC5B8D,KAAKiyG,YAAYnB,OAAO,CACvBG,UAAW90G,EACX+0G,OAAQ,EACRC,aAAcnxG,KAAKmxG,aAAapqF,KAChCqqF,WAAYpxG,KAAK8tG,UAAU/mF,KAC3BsqF,aAAcrxG,KAAK2xG,2BAA2B5qF,KAC9CuqF,IAAKtxG,KAAKiyG,YAAYjB,cAExB,CACD,CACA,SAAAsC,CAAUn3G,EAAGD,EAAGM,EAAGE,EAAG6B,GAAI,GACzB,IAAItB,EAAIsB,EAAIyB,KAAK6yG,gCAAgC12G,EAAI6D,KAAK2kG,SAASwD,SAAU3rG,EAAIwD,KAAK2kG,SAASwD,SAAUjsG,EAAI8D,KAAK2kG,SAASwD,SAAUzrG,EAAIsD,KAAK2kG,SAASwD,UAAYnoG,KAAK+tG,oBAAqB5wG,EAAI6C,KAAK6xG,cACtM10G,EAAEmrD,QACF,IAAI9nD,GAAI,EAMR,OALAvD,EAAEb,OAAOC,UAAWY,EAAE4E,QACtB,SAAWtD,GACV,IAAItB,EAAIsB,EAAEgqD,OAAQ3pD,EAAI3B,EAAEsM,EAAItM,EAAEiM,OAAS/M,GAAKc,EAAEsM,GAAKrN,GAAKe,EAAEwM,EAAIxM,EAAEmM,QAAU5M,GAAKS,EAAEwM,GAAK/M,EACtF6B,EAAE4vG,MAAM9uF,cAAgBzgB,IAAML,EAAE4vG,MAAMkF,WAAWz0G,GAAI4B,GAAI,GAAK5B,GAAKzB,EAAEoG,IAAIhF,EAC1E,GACOyB,KAAK2xG,2BAA2B9vG,QAAS1F,KAC9CgB,EAAE6E,IAAI7F,IAAMA,EAAEgyG,MAAM9uF,cAAgBljB,EAAEgyG,MAAMkF,YAAW,GAAK7yG,GAAI,KAC9DR,KAAK6xG,cAAgB7xG,KAAK2xG,2BAA4B3xG,KAAK2xG,2BAA6Bx0G,EAAG,CAAEo2G,QAAS/yG,EAC3G,GACEgzG,GAAK,MACP,WAAAl3G,CAAYH,EAAGD,EAAGM,EAAGE,EAAG6B,EAAGtB,GAC1B+C,KAAKyzG,WAAa,GAAIzzG,KAAK0zG,WAAY,EAAI1zG,KAAKgkC,UAAY7nC,EAAG6D,KAAKuE,SAAWrI,EAAG8D,KAAK2G,MAAQnK,EAAGwD,KAAK2kG,SAAWjoG,EAAGsD,KAAK2zG,QAAUp1G,EAAGyB,KAAKujB,OAAStmB,EAAG+C,KAAK4zG,qBAAsB5zG,KAAK6zG,eACzL,CACA,OAAAh2F,GACC,IAAK7d,KAAK0zG,UAAW,CACpB1zG,KAAK0zG,WAAY,EACjB,IAAA,IAASv3G,KAAK6D,KAAKyzG,WAAYt3G,IAC/B6D,KAAKyzG,WAAWh3G,OAAS,CAC1B,CACD,CACA,MAAAq3G,CAAO33G,EAAGD,EAAGM,EAAGE,GACfP,EAAEiU,iBAAiBlU,EAAGM,EAAGE,GAAIsD,KAAKyzG,WAAWx0G,KAAK,IAAM9C,EAAEmU,oBAAoBpU,EAAGM,EAAGE,GACrF,CACA,kBAAAk3G,GACC,IAAIz3G,EAAI6D,KAAKgkC,UAAW9nC,EAAI8D,KAAKuE,SAAmB7H,EAAI,KACvD,GAAIR,EAAEg1D,QAAQ/0D,EAAE8Q,YAAa9Q,EAAE6Q,cAAe9Q,EAAEizG,gBAAkBnvG,KAAK2G,MAAM0+F,eAAgB,CAC5F,IAAIlpG,EAAI6D,KAAK2G,MAAM+9F,UAAUU,QAAQplG,KAAK2G,MAAM0+F,gBAChDlpG,GAAKD,EAAE4zG,cAAc3zG,EAAEoN,EAAGpN,EAAEsN,EAC7B,UAEMzI,OAAS,KAAOhB,KAAK8zG,OAAO9yG,OAAQ,SAAUtE,GAAIsD,KAAK8zG,OAAO33G,EAAG,SAAUO,GAClF,IAAYO,EAeRE,EAfAoB,GAAI,EACRyB,KAAK8zG,OAAO33G,EAAG,cAAgBK,IAC9B,GAAiB,IAAbA,EAAEkuB,QAAkC,UAAlBluB,EAAEywB,YAAyB,OACjD1uB,GAAI,EAAItB,EAAIT,EAAEwoD,UAAW7oD,EAAEwrE,kBAAkBnrE,EAAEwoD,WAC/C,IAAItoD,EAAIP,EAAEwM,wBACVzM,EAAEu2D,UAAUj2D,EAAEmwB,QAAUjwB,EAAEuH,KAAMzH,EAAE8wE,QAAU5wE,EAAEoH,OAC3C9D,KAAK8zG,OAAO33G,EAAG,cAAgBK,IAClC,IAAK+B,GAAK/B,EAAEwoD,YAAc/nD,EAAG,OAC7B,IAAIP,EAAIP,EAAEwM,wBACVzM,EAAEi0G,WAAW3zG,EAAEmwB,QAAUjwB,EAAEuH,KAAMzH,EAAE8wE,QAAU5wE,EAAEoH,OAC5C9D,KAAK8zG,OAAO33G,EAAG,YAAcA,IAChCA,EAAE6oD,YAAc/nD,IAAMsB,GAAI,EAAItB,OAAI,EAAQf,EAAEk0G,UAAWpwG,KAAKujB,OAAO8gF,KAAK,MAAOnoG,EAAE0zG,wBAC9E5vG,KAAK8zG,OAAO33G,EAAG,gBAAkBA,IACpCA,EAAE6oD,YAAc/nD,IAAMsB,GAAI,EAAItB,OAAI,EAAQf,EAAEk0G,aAG7CpwG,KAAK8zG,OAAO33G,EAAG,aAAeK,IAC7B,GAAyB,IAArBA,EAAEowB,QAAQnwB,OAAc,CAC3B,IAAIC,EAAIF,EAAEowB,QAAQ,GAClBzvB,EAAIT,EAAEqoD,WACN,IAAIxmD,EAAIpC,EAAEwM,wBACVzM,EAAEu2D,UAAU/1D,EAAEiwB,QAAUpuB,EAAE0F,KAAMvH,EAAE4wE,QAAU/uE,EAAEuF,IAC/C,MAAO5H,EAAEk0C,cAAgBl0C,EAAEk0G,UAAWjzG,OAAI,GACxC,CAAEwS,SAAS,IAAO3P,KAAK8zG,OAAO33G,EAAG,YAAcK,IACjD,IAAIE,EAAIF,EAAEowB,QACV,GAAIlwB,EAAED,QAAU,EAAG,CAClBD,EAAE+pB,iBAAkBrqB,EAAEk0C,cAAgBl0C,EAAEk0G,UAAWjzG,OAAI,EACvD,IAAIoB,EAAIpC,EAAEwM,wBAAyB1L,EAAI,CACtCsM,EAAG7M,EAAE,GAAGiwB,QAAUpuB,EAAE0F,KACpBwF,EAAG/M,EAAE,GAAG4wE,QAAU/uE,EAAEuF,KAClBtD,EAAI,CACN+I,EAAG7M,EAAE,GAAGiwB,QAAUpuB,EAAE0F,KACpBwF,EAAG/M,EAAE,GAAG4wE,QAAU/uE,EAAEuF,KAGrB,YADA9D,KAAK+zG,YAAY92G,EAAGuD,EAErB,CACA,GAAiB,IAAb9D,EAAED,QAAgBU,IAAMT,EAAE,GAAGqoD,WAAY,CAC5C,IAAIvoD,EAAIE,EAAE,GAAI6B,EAAIpC,EAAEwM,wBACpBzM,EAAEi0G,WAAW3zG,EAAEmwB,QAAUpuB,EAAE0F,KAAMzH,EAAE8wE,QAAU/uE,EAAEuF,IAChD,IACG9D,KAAK8zG,OAAO33G,EAAG,WAAaK,IAC/B,GAAIwD,KAAKg0G,uBAAoB,EAA6B,IAArBx3G,EAAEowB,QAAQnwB,OAAcP,EAAEk0C,eAAiBl0C,EAAEk0G,UAAWpwG,KAAKujB,OAAO8gF,KAAK,MAAOnoG,EAAE0zG,sBAAuBzyG,OAAI,OAAA,GACpH,IAArBX,EAAEowB,QAAQnwB,OAAc,CAChC,IAAIC,EAAIF,EAAEowB,QAAQ,GAClBzvB,EAAIT,EAAEqoD,WACN,IAAIxmD,EAAIpC,EAAEwM,wBACVzM,EAAEu2D,UAAU/1D,EAAEiwB,QAAUpuB,EAAE0F,KAAMvH,EAAE4wE,QAAU/uE,EAAEuF,IAC/C,GACE,CAAE6L,SAAS,IAAO3P,KAAK8zG,OAAO33G,EAAG,cAAe,KAClD6D,KAAKg0G,yBAA4B93G,EAAEk0C,cAAgBl0C,EAAEk0G,UAAWjzG,OAAI,GAClE,CAAEwS,SAAS,IAAO3P,KAAK8zG,OAAO33G,EAAG,QAAUO,IAC7CA,EAAE6pB,iBACF,IAAIhoB,EAAIpC,EAAEwM,wBAAyB1L,EAAIP,EAAEiwB,QAAUpuB,EAAE0F,KAAM9G,EAAIT,EAAE4wE,QAAU/uE,EAAEuF,IAAKtD,EAAI9D,EAAEu3G,OAAS,GAAI,EAAK,EAC1Gv3G,EAAEw3G,UAAY1zG,GAAKA,GACnB,IAAI5B,EAAI4B,EAAI,EA9DkC,IA8D9BtE,EAAE+yG,KAAW/yG,EAAE+yG,KA9De,IA+D9C/yG,EAAEyzG,YAAY/wG,EAAG3B,EAAGE,KAAO6C,KAAKujB,OAAO8gF,KAAK,OAAQ,CAAE4K,KAAM/yG,EAAE+yG,OAASjvG,KAAKujB,OAAO8gF,KAAK,MAAOnoG,EAAE0zG,uBAC/F,CAAEjgG,SAAS,GACf,CACA,WAAAokG,CAAY53G,EAAGD,GACd,IAAIM,EAAIuL,KAAKs+C,MAAMlqD,EAAEoN,EAAIrN,EAAEqN,EAAGpN,EAAEsN,EAAIvN,EAAEuN,GACtC,QAA+B,IAA3BzJ,KAAKg0G,mBAA2D,IAA3Bh0G,KAAKg0G,mBAAiC,IAANx3G,EAExE,YADAwD,KAAKg0G,kBAAoBx3G,GAG1B,IAAIE,GAAKP,EAAEoN,EAAIrN,EAAEqN,GAAK,EAAGhL,GAAKpC,EAAEsN,EAAIvN,EAAEuN,GAAK,EAAGxM,EAAI+C,KAAKuE,SAAS0qG,MAAQzyG,EAAIwD,KAAKg0G,mBACjFh0G,KAAKuE,SAASorG,YAAY1yG,EAAGP,EAAG6B,KAAOyB,KAAKujB,OAAO8gF,KAAK,OAAQ,CAAE4K,KAAMjvG,KAAKuE,SAAS0qG,OAASjvG,KAAKujB,OAAO8gF,KAAK,MAAOrkG,KAAKuE,SAASqrG,sBAAuB5vG,KAAKg0G,kBAAoBx3G,CACtL,CACA,aAAAq3G,GACC,IAAI13G,EAAI6D,KAAKgkC,UAAW9nC,EAAI,KAC5B8D,KAAK8zG,OAAO33G,EAAG,YAAcK,IAC5B,IAAIE,EAAIsD,KAAKm0G,sBAAsB33G,EAAEmwB,QAASnwB,EAAE8wE,SAChD,GAAI5wE,IAAMR,IAAMA,EAAIQ,EAAGA,GACtBP,EAAE0K,MAAM0sF,OAAS,eAGlB,IAAKr3F,EAAG,CACP,IAAIA,EAA6D,OAAzD8D,KAAKo0G,0BAA0B53G,EAAEmwB,QAASnwB,EAAE8wE,SACpDnxE,EAAE0K,MAAM0sF,OAASr3F,EAAI,UAAY,MAClC,IACG8D,KAAK8zG,OAAO33G,EAAG,aAAc,KAChCD,EAAI,KAAMC,EAAE0K,MAAM0sF,OAAS,SAE5B,IAAI/2F,EAAI,KACRwD,KAAK8zG,OAAO33G,EAAG,YAAcA,IACf,IAAbA,EAAEuuB,SAAiBluB,EAAI,CACtB+M,EAAGpN,EAAEwwB,QACLljB,EAAGtN,EAAEmxE,YAEHttE,KAAK8zG,OAAO33G,EAAG,UAAYA,IAC9B,GAAiB,IAAbA,EAAEuuB,SAAiBluB,EAAG,OAC1B,IAAIN,EAAIC,EAAEwwB,QAAUnwB,EAAE+M,EAAG7M,EAAIP,EAAEmxE,QAAU9wE,EAAEiN,EAC3C,GAAIjN,EAAI,KAAMN,EAAIA,EAAIQ,EAAIA,EAAI,GAAI,OAClC,IAAI6B,EAAIyB,KAAKm0G,sBAAsBh4G,EAAEwwB,QAASxwB,EAAEmxE,SAChD,GAAI/uE,EAEH,YADAyB,KAAKq0G,mBAAmB91G,EAAEkrC,GAAIttC,EAAEwwB,QAASxwB,EAAEmxE,SAG5C,IAAIrwE,EAAI+C,KAAKo0G,0BAA0Bj4G,EAAEwwB,QAASxwB,EAAEmxE,SAChDrwE,EACH+C,KAAKs0G,uBAAuBr3G,EAAEyuG,aAAcvvG,EAAEwwB,QAASxwB,EAAEmxE,SAG1DttE,KAAKu0G,sBACFv0G,KAAK8zG,OAAO33G,EAAG,cAAgBA,IAClC,IAAID,EAAI8D,KAAKm0G,sBAAsBh4G,EAAEwwB,QAASxwB,EAAEmxE,SAChDpxE,IAAMC,EAAEoqB,iBAAkBvmB,KAAKw0G,qBAAqBt4G,EAAEutC,GAAIttC,EAAEwwB,QAASxwB,EAAEmxE,YAExE,IAAI5wE,EAAG6B,EAAGtB,EAAI,cACbP,IAAiBsE,OAAO6vB,aAAan0B,GAAIA,UAAa6B,OAAI,GAE3DyB,KAAK8zG,OAAO33G,EAAG,aAAeA,IAC7B,GAAIc,IAAKd,EAAEywB,QAAQnwB,OAAS,EAAG,OAC/B,IAAIP,EAAIC,EAAEywB,QAAQ,GAClB1wB,GAAK8D,KAAKm0G,sBAAsBj4G,EAAEywB,QAASzwB,EAAEoxE,WAAa/uE,EAAI,CAC7DouB,QAASzwB,EAAEywB,QACX2gD,QAASpxE,EAAEoxE,SACT5wE,EAAIsE,OAAOohB,WAAW,KACxB,GAAI7jB,EAAG,CACN,IAAIpC,EAAI6D,KAAKm0G,sBAAsB51G,EAAEouB,QAASpuB,EAAE+uE,SAChDnxE,GAAK6D,KAAKw0G,qBAAqBr4G,EAAEstC,GAAIlrC,EAAEouB,QAASpuB,EAAE+uE,QACnD,CACArwE,KACE,OACD,CAAE0S,SAAS,IAAO3P,KAAK8zG,OAAO33G,EAAG,WAAY,IAAMc,IAAK,CAAE0S,SAAS,IAAO3P,KAAK8zG,OAAO33G,EAAG,cAAe,IAAMc,IAAK,CAAE0S,SAAS,IAAO3P,KAAK8zG,OAAO33G,EAAG,YAAcA,IACpK,IAAKoC,EAAG,OACR,IAAIrC,EAAIC,EAAEywB,QAAQ,GAClB,IAAK1wB,EAEJ,YADAe,IAGD,IAAIT,EAAIN,EAAEywB,QAAUpuB,EAAEouB,QAASjwB,EAAIR,EAAEoxE,QAAU/uE,EAAE+uE,QACjD9wE,EAAIA,EAAIE,EAAIA,EAAI,KAAOO,KACrB,CAAE0S,SAAS,GACf,CACA,qBAAAwkG,CAAsBh4G,EAAGD,GACxB,IAAIM,EAAIwD,KAAK2zG,QAAQ9D,iBAAiB1zG,EAAGD,GACzC,OAAOM,EAAIwD,KAAK2zG,QAAQc,gBAAgBj4G,EAAE+M,EAAG/M,EAAEiN,GAAK,IACrD,CACA,yBAAA2qG,CAA0Bj4G,EAAGD,GAC5B,IAAIM,EAAIwD,KAAK2zG,QAAQ9D,iBAAiB1zG,EAAGD,GACzC,IAAKM,EAAG,OAAO,KACf,IAAIE,EAA6B,GAAzBsD,KAAK2kG,SAASwD,SACtB,IAAA,IAAShsG,KAAK6D,KAAK2zG,QAAQe,sBAAuB,CACjD,IAAIx4G,EAAIC,EAAEosD,OACV,GAAI/rD,EAAE+M,GAAKrN,EAAEqN,EAAI7M,GAAKF,EAAE+M,GAAKrN,EAAEqN,EAAIrN,EAAEgN,MAAQxM,GAAKF,EAAEiN,GAAKvN,EAAEuN,EAAI/M,GAAKF,EAAEiN,GAAKvN,EAAEuN,EAAIvN,EAAEkN,OAAS1M,EAAG,OAAOP,CACvG,CACA,OAAO,IACR,CACA,kBAAAk4G,CAAmBl4G,EAAGD,EAAGM,GACxB,IAAIE,EAAIsD,KAAKgkC,UAAUr7B,wBACvB3I,KAAKujB,OAAO8gF,KAAK,YAAa,CAC7BiB,OAAQnpG,EACRiL,SAAU,CACTmC,EAAGrN,EAAIQ,EAAEuH,KACTwF,EAAGjN,EAAIE,EAAEoH,MAGZ,CACA,oBAAA0wG,CAAqBr4G,EAAGD,EAAGM,GAC1B,IAAIE,EAAIsD,KAAKgkC,UAAUr7B,wBACvB3I,KAAKujB,OAAO8gF,KAAK,kBAAmB,CACnCiB,OAAQnpG,EACRiL,SAAU,CACTmC,EAAGrN,EAAIQ,EAAEuH,KACTwF,EAAGjN,EAAIE,EAAEoH,MAGZ,CACA,sBAAAwwG,CAAuBn4G,EAAGD,EAAGM,GAC5B,IAAIE,EAAIsD,KAAKgkC,UAAUr7B,wBACvB3I,KAAKujB,OAAO8gF,KAAK,gBAAiB,CACjCqH,aAAcvvG,EACdiL,SAAU,CACTmC,EAAGrN,EAAIQ,EAAEuH,KACTwF,EAAGjN,EAAIE,EAAEoH,MAGZ,CACA,iBAAAywG,GACCv0G,KAAKujB,OAAO8gF,KAAK,gBAAY,EAC9B,GACEsQ,GAAI,MACN,WAAAr4G,CAAYH,GACX6D,KAAK40G,WAAaz4G,CACnB,CACA,UAAAk3G,CAAWl3G,GACV6D,KAAK40G,WAAWr3C,QAAQphE,EACzB,CACA,SAAAkjB,GACC,OAAOrf,KAAK40G,WAAWr3C,SACxB,CACA,OAAA1/C,GACC7d,KAAK40G,WAAW/2F,SACjB,CACA,WAAAugD,CAAYjiE,EAAGD,GACd8D,KAAK40G,WAAWxtG,SAAS,CACxBmC,EAAGpN,EACHsN,EAAGvN,GAEL,CACA,WAAAmiE,GACC,OAAOr+D,KAAK40G,WAAWxtG,UACxB,CACA,SAAAw4D,GACC5/D,KAAK40G,WAAWh1C,WACjB,GACEkd,GAAI,MACN,WAAAxgF,CAAYH,GACX6D,KAAK60G,WAAa14G,CACnB,CACA,OAAAotG,CAAQptG,GACPA,aAAaw4G,IAAK30G,KAAK60G,WAAWtxG,IAAIpH,EAAEy4G,WACzC,CACA,eAAAhvC,GACC5lE,KAAK60G,WAAWjvC,iBACjB,CACA,SAAA5C,GACChjE,KAAK60G,WAAW7xC,WACjB,GACE8xC,GAAK,MACP,WAAA1M,CAAYlsG,EAAGM,GACd,OAAO,IAAIm4G,GAAE,IAAIx4G,GAAE+3E,MAAM,CACxB3qE,EAAGrN,EACHuN,EAAGjN,EACH6gE,WAAW,IAEb,CACA,OAAAkrC,CAAQrsG,EAAGM,GACVN,aAAay4G,IAAKz4G,EAAE04G,WAAWrxG,IAAI,IAAIpH,GAAEoqF,KAAK,CAC7Ch9E,EAAG/M,EAAE+M,EACLE,EAAGjN,EAAEiN,EACLP,MAAO1M,EAAE0M,MACTE,OAAQ5M,EAAE4M,OACViiD,KAAM7uD,EAAE6uD,KACRmB,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,aAAe,EAC9BnK,aAAc3oD,EAAE2oD,cAAgB,EAChC8J,KAAMzyD,EAAEyyD,KACRG,YAAa5yD,EAAE4yD,cAAe,EAC9BuhB,oBAAoB,EACpBtT,WAAW,IAEb,CACA,SAAAirC,CAAUpsG,EAAGM,GACZN,aAAay4G,IAAKz4G,EAAE04G,WAAWrxG,IAAI,IAAIpH,GAAEsoF,OAAO,CAC/Cl7E,EAAG/M,EAAE4iF,GACL31E,EAAGjN,EAAE6iF,GACLr5B,OAAQxpD,EAAEwpD,OACVqF,KAAM7uD,EAAE6uD,KACRmB,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,aAAe,EAC9BL,KAAMzyD,EAAEyyD,KACRG,YAAa5yD,EAAE4yD,cAAe,EAC9BuhB,oBAAoB,EACpBtT,WAAW,IAEb,CACA,OAAAurC,CAAQ1sG,EAAGM,GACVN,aAAay4G,IAAKz4G,EAAE04G,WAAWrxG,IAAI,IAAIpH,GAAEu/E,KAAK,CAC7C51B,OAAQtpD,EAAEspD,OACV0G,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,aAAe,EAC9BL,KAAMzyD,EAAEyyD,KACRvG,QAASlsD,EAAEksD,QACXM,SAAUxsD,EAAEwsD,SACZmX,QAAS3jE,EAAE6mG,MACX1yB,oBAAoB,EACpBtT,WAAW,IAEb,CACA,UAAA4wC,CAAW/xG,EAAGM,GACbN,aAAay4G,IAAKz4G,EAAE04G,WAAWrxG,IAAI,IAAIpH,GAAEu/E,KAAK,CAC7C51B,OAAQtpD,EAAEowG,SACVr0B,QAAQ,EACRltB,KAAM7uD,EAAE6uD,KACRmB,OAAQhwD,EAAEgwD,OACV8C,YAAa9yD,EAAE8yD,aAAe,EAC9BqhB,oBAAoB,EACpBtT,WAAW,IAEb,CACA,OAAAyrC,CAAQ5sG,EAAGM,GACV,KAAMN,aAAay4G,IAAI,OACvB,IAAIj4G,GAAKF,EAAE2iE,SAAW,IAAM3iE,EAAEyqG,sBAAwB,GAAKzqG,EAAEmsF,SAC7DzsF,EAAE04G,WAAWrxG,IAAI,IAAIpH,GAAEisF,KAAK,CAC3B7+E,EAAG/M,EAAE+M,EACLE,EAAGjN,EAAEiN,EACLw4B,KAAMzlC,EAAEylC,KACR0mD,SAAUnsF,EAAEmsF,SACZ6D,WAAYhwF,EAAEgwF,WACdF,UAAW9vF,EAAE8vF,UACbjhC,KAAM7uD,EAAE6uD,KACR29B,MAAOxsF,EAAEwsF,MACTF,cAAetsF,EAAEssF,cACjB5/E,MAAO1M,EAAE0M,MACTE,OAAQ5M,EAAE4M,OACV+1D,QAASziE,QAAK,EACdi0E,oBAAoB,EACpBtT,WAAW,IAEb,CACA,QAAAqxC,CAASxyG,EAAGM,GACX,KAAMN,aAAay4G,IAAI,OACvB,IAAIj4G,EAAIP,GAAEm3C,KAAKqL,qBACfjiD,EAAEsiD,IAAMxiD,EAAEwiD,IAAK9iD,EAAE04G,WAAWrxG,IAAI,IAAIpH,GAAEwoF,MAAM,CAC3Cp7E,EAAG/M,EAAE+M,EACLE,EAAGjN,EAAEiN,EACLP,MAAO1M,EAAE0M,MACTE,OAAQ5M,EAAE4M,OACVihD,MAAO3tD,EACP2gE,WAAW,IAEb,GACEigB,GAAI,CACN,KACA,OACA,KACA,OAED,SAASy3B,GAAE54G,EAAGD,EAAGM,EAAGE,EAAG6B,GACtB,MAAuB,WAAhBpC,EAAEksG,UAAyBwC,GAAE3uG,EAAGM,EAAGE,EAAG6B,GAAqB,qBAAhBpC,EAAEksG,UAAmCsC,GAAEzuG,EAAGM,EAAGE,EAAG6B,EAAgB,GAAbpC,EAAEgsG,UAAiB9lB,GAAEnmF,EAAGM,EAAGE,EAAG6B,EACpI,CACA,SAASy2G,GAAG74G,EAAGD,EAAGM,GACjB,IAAA,IAAUL,EAAGO,KAAMI,OAAO4pB,QAAQxqB,EAAE2vG,OAAQ,GAAInvG,IAAMF,EAAEitC,GAAI,CAC3D,IAAI/sC,EAAIP,EACR,GAAImhF,GAAE5+D,SAAShiB,GAAI,CAClB,IAAIP,EAAIytG,GAAEltG,GACV,MAAO,CACNooB,KAAM,QACNmwF,QAASv4G,EACTw4G,cAAeh5G,EAAEqvG,YAAYpvG,GAAKA,EAAID,EAAEqvG,YAAY7uG,GAAKA,OAAI,EAC7Dy4G,SAAUj5G,EACVk5G,OAAQ54G,EAEV,CACA,IAAI+B,EAAIqrG,GAAEltG,GACV,OAAOR,EAAEqvG,YAAYhtG,GAAK,CACzBumB,KAAM,UACNmwF,QAASv4G,EACTw4G,cAAe32G,EACf42G,SAAUj5G,EACVk5G,OAAQ54G,GACLN,EAAEqvG,YAAY7uG,GAAK,CACtBooB,KAAM,UACNmwF,QAASv4G,EACTw4G,cAAex4G,EACfy4G,SAAUj5G,EACVk5G,OAAQ54G,GACL,CACHsoB,KAAM,UACNmwF,QAASv4G,EACT24G,MAAOC,GAAG94G,EAAGN,EAAEutC,IACf0rE,SAAUj5G,EACVk5G,OAAQ54G,EAEV,CACA,IAAA,IAAUL,EAAGO,KAAMI,OAAO4pB,QAAQxqB,EAAE0vG,cAAe,GAAIlvG,IAAMF,EAAEitC,UAAWvtC,EAAEqvG,YAAYpvG,GAAK,CAC5F2oB,KAAM,UACNowF,cAAe/4G,EACfg5G,SAAUj5G,EACVk5G,OAAQ54G,GACL,CACHsoB,KAAM,QACNqwF,SAAUj5G,EACVk5G,OAAQ54G,GAET,IAAA,IAAUL,EAAGO,KAAMI,OAAO4pB,QAAQlqB,EAAEqvG,OAAQ,GAAInvG,IAAMR,EAAEutC,GAAI,CAC3D,IAAI/sC,EAAIP,EACR,GAAImhF,GAAE5+D,SAAShiB,GAAI,CAClB,IAAIP,EAAIytG,GAAEltG,GACV,MAAO,CACNooB,KAAM,QACNuwF,MAAO34G,EACPw4G,cAAe14G,EAAE+uG,YAAYpvG,GAAKA,EAAIK,EAAE+uG,YAAY7uG,GAAKA,OAAI,EAC7Dy4G,SAAUj5G,EACVk5G,OAAQ54G,EAEV,CACA,IAAI+B,EAAIqrG,GAAEltG,GACV,OAAOF,EAAE+uG,YAAYhtG,GAAK,CACzBumB,KAAM,UACNuwF,MAAO34G,EACPw4G,cAAe32G,EACf42G,SAAUj5G,EACVk5G,OAAQ54G,GACLA,EAAE+uG,YAAY7uG,GAAK,CACtBooB,KAAM,UACNuwF,MAAO34G,EACPw4G,cAAex4G,EACfy4G,SAAUj5G,EACVk5G,OAAQ54G,GACL,CACHsoB,KAAM,UACNuwF,MAAO34G,EACPy4G,SAAUj5G,EACVk5G,OAAQ54G,EAEV,CACA,IAAA,IAAUL,EAAGO,KAAMI,OAAO4pB,QAAQlqB,EAAEovG,cAAe,GAAIlvG,IAAMR,EAAEutC,UAAWjtC,EAAE+uG,YAAYpvG,GAAK,CAC5F2oB,KAAM,UACNowF,cAAe/4G,EACfg5G,SAAUj5G,EACVk5G,OAAQ54G,GACL,CACHsoB,KAAM,QACNqwF,SAAUj5G,EACVk5G,OAAQ54G,GAET,MAAO,CACNsoB,KAAM,OACNqwF,SAAUj5G,EACVk5G,OAAQ54G,EAEV,CACA,SAAS84G,GAAGn5G,EAAGD,GACd,IAAA,IAAUM,EAAGE,KAAMI,OAAO4pB,QAAQvqB,EAAE0vG,OAAQ,GAAInvG,IAAMR,EAAG,OAAOM,CACjE,CACA,SAAS+4G,GAAGp5G,EAAGD,EAAGM,GACjB,QAAOL,IAAIA,EAAEmjC,OAASpjC,GAAKC,EAAE2gF,IAAMtgF,EACpC,CACA,SAASg5G,GAAGr5G,EAAGD,GACd,IAAA,IAAUM,EAAGE,KAAMI,OAAO4pB,QAAQvqB,EAAE0vG,OAAQ,GAAInvG,IAAMR,EAAEutC,GAAI,MAAO,CAAE92B,UAAWnW,GAChF,IAAA,IAAUA,EAAGE,KAAMI,OAAO4pB,QAAQvqB,EAAEyvG,cAAe,GAAIlvG,IAAMR,EAAEutC,GAAI,MACpE,CACA,SAASgsE,GAAGt5G,EAAGD,GACd,IAAA,IAASM,KAAKghF,GAAG,GAAIrhF,EAAE0vG,MAAMrvG,KAAON,EAAEutC,GAAI,OAAOjtC,EACjD,IAAA,IAASA,KAAKghF,GAAG,GAAIthF,EAAE2vG,MAAMrvG,KAAOL,EAAEstC,GAAI,OAAOihE,GAAGluG,EACrD,CACA,SAASk5G,GAAGv5G,EAAGD,EAAGM,GACjB,IAAM24G,SAAUz4G,EAAG04G,OAAQ72G,EAAG02G,QAASh4G,EAAGo4G,MAAOl4G,GAAMjB,EACvD,GAAiB,IAAbM,EAAEC,QAAgBD,EAAEyC,KAAKvC,EAAE6M,EAAG7M,EAAE+M,GAAIxM,GAAKusG,GAAE9qF,SAASzhB,GAAI,CAC3D,IAAIf,EAAI64G,GAAE54G,EAAGO,EAAE6M,EAAG7M,EAAE+M,EAAGxM,EAAGd,EAAEgsG,SAAW,GACvC3rG,EAAEyC,KAAK/C,EAAEqN,EAAGrN,EAAEuN,EACf,CACA,GAAItM,GAAKqsG,GAAE9qF,SAASvhB,GAAI,CACvB,IAAIjB,EAAI64G,GAAE54G,EAAGoC,EAAEgL,EAAGhL,EAAEkL,EAAGtM,EAAGhB,EAAEgsG,SAAW,GACvC3rG,EAAEyC,KAAK/C,EAAEqN,EAAGrN,EAAEuN,EACf,CACAjN,EAAEyC,KAAKV,EAAEgL,EAAGhL,EAAEkL,EACf,CACA,SAASksG,GAAGx5G,EAAGD,GACd,IAA6DiB,GAAvDg4G,SAAU34G,EAAG44G,OAAQ14G,EAAGw4G,cAAe32G,GAAMpC,EAAGc,EAAIT,EAC1D+B,IAAMpB,EAAIX,EAAE+uG,YAAYhtG,GAAIpB,IAAMA,EAAIT,EAAE6uG,YAAYhtG,GAAItB,EAAIP,IAAkB,IAAbR,EAAEO,QAAgBP,EAAE+C,KAAKhC,EAAEsM,EAAGtM,EAAEwM,GAAItM,GAAKA,EAAE2oD,OAAOjkD,QAAS1F,IAC3HD,EAAE+C,KAAK9C,EAAEoN,GAAIpN,EAAEsN,KACZvN,EAAE+C,KAAKvC,EAAE6M,EAAG7M,EAAE+M,EACnB,CA2EA,SAASmsG,GAAGz5G,EAAGD,EAAGM,GACjB,IAAe+B,EAAI/B,EAAE2rG,SACrB,MAAO,CACNhhD,MAAuB,WAAhB3qD,EAAE6rG,UAAyB,SAAW,OAC7CjpB,GAAIjjF,EAAEoN,EACN81E,GAAIljF,EAAEsN,EACNsd,KAAMxoB,EAAI,EALH,MAMP4mD,aAA8B,qBAAhB3oD,EAAE6rG,UANT,MAM4C9pG,EAAQ,GAAK,EAChEiuD,OAAQtwD,EACRozD,YAAa,GACbL,KAAM,CAAC,IAAK,KAEd,CACA,SAAS4mD,GAAG15G,EAAGD,GACd,IAAIM,EAAIN,EAAE45G,aAAcp5G,EAAIR,EAAEisG,SAAW3rG,EAAEu5G,WAAYx3G,EAAI/B,EAAEw5G,gBAAkC,WAAhB95G,EAAEmsG,UACjF,MAAO,CACNlhD,MAAO5oD,EAAI,OAAS,SACpB6gF,GAAIjjF,EAAEoN,EACN81E,GAAIljF,EAAEsN,EACNsd,KAAMrqB,EAAI,EACVyoD,aAAc5mD,GAAqB,qBAAhBrC,EAAEmsG,UAAuC,GAAJ3rG,EAAS,EACjE2qG,YAAa7qG,EAAE6qG,YACf/3C,YAAa9yD,EAAE8yD,YACf2mD,YAAaz5G,EAAEy5G,YACf7O,UAAW5qG,EAAE4qG,UACb8O,UAAW15G,EAAE05G,UACbjnD,KAAMzyD,EAAEyyD,KACRG,YAAa5yD,EAAE4yD,YAEjB,CACA,SAAS+mD,GAAGh6G,EAAGD,EAAGM,EAAGE,EAAG6B,EAAGtB,GAC1B,IAAIE,EAzGL,SAAYhB,EAAGD,EAAGM,EAAGE,EAAG6B,GACvB,IAAItB,EAAI,GAAIE,EAAI,GAAIqD,EAAI,GAAI5B,EAAIpC,EAAEqG,IAAK3G,GAAMC,EAAEipG,QAAQlpG,IAAIoH,OAAQnH,QAAY,IAANA,GAAeolD,EAAI,GAAI9iD,EAAI,KACnG8iD,EAAE9kD,QAAU,GAAKQ,EAAEgC,KAAK,CAAE6mD,OAAQ,IAAIvE,KAAOA,EAAI,IAC/ChP,EAAKp2C,IACP,IAAMg5G,SAAUj5G,EAAGk5G,OAAQ54G,EAAGy4G,QAASv4G,EAAG24G,MAAO92G,EAAG22G,cAAej4G,GAAMd,EACzE,GAAIc,EAAG,CACN,IAAId,EAAID,EAAGQ,EAAIR,EAAEqvG,YAAYtuG,GAC7B,GAAIP,IAAMA,EAAIF,EAAE+uG,YAAYtuG,GAAId,EAAIK,GAAIE,EAAG,CAC1C,IAAIR,EAAI,CAACC,EAAEoN,EAAGpN,EAAEsN,GAChB/M,EAAEopD,OAAOjkD,QAAS1F,IACjBD,EAAE+C,KAAK9C,EAAEoN,GAAIpN,EAAEsN,KACZjJ,EAAEvB,KAAK,CAAE6mD,OAAQ5pD,GACtB,CACD,CACAQ,GAAK4gF,GAAE5+D,SAAShiB,IAAMS,EAAE8B,KAAK,CAC5BivG,KAAMhyG,EACNyW,UAAWjW,IACR6B,GAAK++E,GAAE5+D,SAASngB,IAAMpB,EAAE8B,KAAK,CAChCivG,KAAM1xG,EACNmW,UAAWpU,KAGb,IAAA,IAAS/B,EAAI,EAAGA,EAAIoC,EAAEnC,OAAS,EAAGD,IAAK,CACtC,IAAIS,EAAI2B,EAAEpC,GAAIgE,EAAI5B,EAAEpC,EAAI,GAAIoD,EAAI21G,GAAGt4G,EAAGP,EAAG6B,GAAI8hC,EAAIk1E,GAAG/0G,EAAG9D,EAAG6B,GAC1D,GAAKqB,GAAMygC,EAIX,GAAIzgC,GAAKygC,EAAG,CACX,IAAI7jC,EAAIw4G,GAAG74G,EAAGc,EAAGuD,GACjB,OAAQhE,EAAEsoB,MACT,IAAK,UACJ4wF,GAAGx5G,EAAGM,EAAG+kD,GACT,MACD,IAAK,UACJo0D,GAAGn5G,EAAG+kD,GACN,MACD,IAAK,QACJ9iD,IAAK8zC,EAAE/1C,GACP,MACD,IAAK,OACS,IAAb+kD,EAAE9kD,QAAgB8kD,EAAEtiD,KAAKhC,EAAEsM,EAAGtM,EAAEwM,GAAI83C,EAAEtiD,KAAKuB,EAAE+I,EAAG/I,EAAEiJ,GAGrD,KAAO,CACN,IAAItN,EAAIyD,EAAI3C,EAAIuD,EAAGhE,EAAIoD,EAAIY,EAAIvD,EAAGP,EAAI84G,GAAGr5G,EAAGK,GAC5C,GAAIE,GACH,GAAI4gF,GAAE5+D,SAAShiB,EAAEiW,WAAYlU,IAAKtB,EAAE8B,KAAK,CACxCivG,KAAM/xG,EACNwW,UAAWjW,EAAEiW,iBACb,GACQ62F,GAAE9qF,SAAShiB,EAAEiW,WAAY,CACpB,IAAb4uC,EAAE9kD,QAAgB8kD,EAAEtiD,KAAK9C,EAAEoN,EAAGpN,EAAEsN,GAChC,IAAIjN,EAAIu4G,GAAE74G,EAAGC,EAAEoN,EAAGpN,EAAEsN,EAAG/M,EAAEiW,UAAWzW,EAAEisG,SAAW,GAAI5pG,EAAI8jF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG/M,EAAEiW,UAAWzW,EAAEisG,UACpF5mD,EAAEtiD,KAAKzC,EAAE+M,EAAG/M,EAAEiN,EAAGlL,EAAEgL,EAAGhL,EAAEkL,GAAIhL,GAC7B,MACM,CACN,IAAI/B,EAAI+4G,GAAGt5G,EAAGK,GACd,GAAIE,EAAG,CACO,IAAb6kD,EAAE9kD,QAAgB8kD,EAAEtiD,KAAK9C,EAAEoN,EAAGpN,EAAEsN,GAChC,IAAIjN,EAAIu4G,GAAE74G,EAAGC,EAAEoN,EAAGpN,EAAEsN,EAAG/M,EAAGR,EAAEisG,SAAW,GAAI5pG,EAAI8jF,GAAElmF,EAAEoN,EAAGpN,EAAEsN,EAAG/M,EAAGR,EAAEisG,UAChE5mD,EAAEtiD,KAAKzC,EAAE+M,EAAG/M,EAAEiN,EAAGlL,EAAEgL,EAAGhL,EAAEkL,GAAIhL,GAC7B,CACD,CACD,MAvCCA,GAwCF,CACA,OAAOA,IAAK,CACX6tD,SAAUrvD,EACVm5G,aAAcj5G,EACdouG,YAAa/qG,EAEf,CAkCS61G,CAAGl6G,EAAGD,EAAGM,EAAG+B,EAAGtB,GAAIuD,EAAItE,EAAEmuF,UAAWzrF,EAAI1C,EAAEisG,SAAW,EAAG5mD,EAAI,GACpE,IAAA,IAASplD,KAAKgB,EAAEmvD,SAAUnwD,EAAE2pD,OAAOrpD,QAAU,GAAK8kD,EAAEtiD,KAAK,CAAE6mD,OAAQ3pD,EAAE2pD,SACrE,IAAA,IAAS3pD,KAAKgB,EAAEouG,YAAapvG,EAAE2pD,OAAOrpD,QAAU,GAAK8kD,EAAEtiD,KAAK,CAAE6mD,OAAQ3pD,EAAE2pD,SACxE,IAAIrnD,EAAI,GACR,IAAA,IAAStC,KAAKgB,EAAEi5G,aAAc,CAC7B,IAAIl6G,EAAoB,OAAhBC,EAAEwW,UAAqB,EAAoB,SAAhBxW,EAAEwW,UAAuB,IAAsB,OAAhBxW,EAAEwW,UAAqB,IAAK,GAC9FlU,EAAEQ,KAAK,CAAE2tG,SAAUJ,GAAErwG,EAAE+xG,KAAK3kG,EAAGpN,EAAE+xG,KAAKzkG,EAAG7K,EAAG1C,IAC7C,CACA,MAAO,CACNowD,SAAU/K,EACVsrD,UAAWpuG,EACXyhD,MAAOxjD,EACP45G,aAAkB,EAAJ91G,EACd6pF,UAAe,EAAJ7pF,EAEb,CAGA,IAAI+1G,GAAGC,GACP,SAASC,GAAGt6G,EAAGD,EAAGM,GACjB,IAAIE,EAAI,GAAGP,EAAEu6G,QAAQ,MAAMx6G,KAAKM,EAAEk6G,QAAQ,KAC1C,GAAIF,KAAO95G,GAAK65G,GAAG,OAAOA,GAC1B,IAAIh4G,EAJW,IAIHtB,EAAIsB,IAAOpB,EAAI+E,SAAS83B,cAAc,UAClD78B,EAAE+L,MAAQ3K,EAAGpB,EAAEiM,OAAS7K,EACxB,IAAIiC,EAAIrD,EAAEsiD,WAAW,MACrBj/C,EAAEo/C,UAAY,iBAAiBzjD,KAAMqE,EAAEq/C,SAAS,EAAG,EAAGthD,EAAGA,GAAIiC,EAAE8sD,yBAA2B,kBAC1F,IAAI1uD,EAAI4B,EAAE+pD,qBAAqBttD,EAAGA,EAAG,EAAGA,EAAGA,EAAGA,GAAIskD,EAAIx5C,KAAKC,IAAIxL,EAAG,KAClEoC,EAAEowD,aAAa,EAAG,oBAAqBpwD,EAAEowD,aAAiB,IAAJzN,EAAS,uBAAwB3iD,EAAEowD,aAAiB,GAAJzN,EAAQ,uBAAwB3iD,EAAEowD,aAAiB,GAAJzN,EAAQ,uBAAwB3iD,EAAEowD,aAAiB,IAAJzN,EAAS,uBAAwB3iD,EAAEowD,aAAiB,IAAJzN,EAAS,uBAAwB3iD,EAAEowD,aAAazN,EAAG,oBAAqBA,EAAI,KAAO3iD,EAAEowD,aAAa,EAAG,oBAAqBxuD,EAAEo/C,UAAYhhD,EAAG4B,EAAEgpD,YAAahpD,EAAEolD,IAAI3oD,EAAGA,EAAGA,EAAG,EAAa,EAAV8K,KAAKomC,IAAS3tC,EAAE6qD,OAAQ7qD,EAAE8sD,yBAA2B,cACrd,IAAI7uD,EAAIyyB,SAASh1B,EAAEmD,MAAM,EAAG,GAAI,IAAKkzC,EAAIrhB,SAASh1B,EAAEmD,MAAM,EAAG,GAAI,IAAKO,EAAIsxB,SAASh1B,EAAEmD,MAAM,EAAG,GAAI,IAAKghC,EAAI7/B,EAAE+pD,qBAAqBttD,EAAGA,EAAG,EAAGA,EAAGA,EAAGA,EAAIskD,GACrJ,OAAOlhB,EAAE2uB,aAAa,EAAG,QAAQvwD,MAAM8zC,MAAM3yC,YAAaygC,EAAE2uB,aAAa,EAAG,QAAQvwD,MAAM8zC,MAAM3yC,SAAUY,EAAEo/C,UAAYvf,EAAG7/B,EAAEq/C,SAAS,EAAG,EAAGthD,EAAGA,GAAIg4G,GAAIp5G,EAAEk0D,YAAamlD,GAAK95G,EAAG65G,EAC/K,CACA,SAASI,GAAGx6G,EAAGD,EAAGM,EAAGE,GACpB,IAAMspD,OAAQznD,EAAGq4G,UAAW35G,EAAGijD,MAAO/iD,GAAMT,EAAEm6G,aAAcr2G,EAAIhE,EAAEu+D,KAAOv+D,EAAEo+D,KAAMh8D,EAAIpC,EAAEw+D,KAAOx+D,EAAEs+D,KAAMvZ,EAAIx5C,KAAKqrC,KAAK5yC,EAAIA,EAAI5B,EAAIA,GAAIH,EAAIsJ,KAAKD,IAAQ,IAAJy5C,EAAa,EAAJhjD,GAC1J,MAAO,CACN6gF,GAAIjjF,EACJkjF,GAAInjF,EACJ46G,YAAar4G,EACbugD,IAAKy3D,GAAGx5G,EAAGE,EAAG4K,KAAKE,MAAM1J,GAAKE,EAAI,GAAK,IAAM,IAE/C,CAGA,SAASs4G,GAAE56G,EAAGD,GACb,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GACzB,GAAgB,WAAZlsG,EAAEirD,MAAoBhrD,EAAEmsG,UAAU9rG,EAAG,CACxC4iF,GAAIljF,EAAEkjF,GACNC,GAAInjF,EAAEmjF,GACNr5B,OAAQ9pD,EAAE6qB,KACVylC,OAAQtwD,EAAEswD,OACV8C,YAAapzD,EAAEozD,YACfL,KAAM/yD,EAAE+yD,KACRG,aAAa,QAET,CACJ,IAAI1yD,EAAIR,EAAEkjF,GAAKljF,EAAE6qB,KAAMxoB,EAAIrC,EAAEmjF,GAAKnjF,EAAE6qB,KAAM9pB,EAAIf,EAAEkjF,GAAKljF,EAAE6qB,KAAM5pB,EAAIjB,EAAEmjF,GAAKnjF,EAAE6qB,KAAMvmB,EAAI,CACnF,CACC9D,EACA6B,EACAtB,EACAsB,GAED,CACCtB,EACAsB,EACAtB,EACAE,GAED,CACCF,EACAE,EACAT,EACAS,GAED,CACCT,EACAS,EACAT,EACA6B,IAGF,IAAA,IAAS7B,KAAK8D,EAAGrE,EAAEysG,QAAQpsG,EAAG,CAC7BspD,OAAQppD,EACR8vD,OAAQtwD,EAAEswD,OACV8C,YAAapzD,EAAEozD,YACfL,KAAM/yD,EAAE+yD,KACRvG,QAAS,QAEX,CACA,OAAOlsD,CACR,CACA,SAASw6G,GAAG76G,EAAGD,GACd,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GAAI1rG,EAAI0kD,GAAEllD,EAAEmrG,YAAanrG,EAAE+5G,aAAc13G,EAAIrC,EAAEg6G,UAAY,EAAI90D,GAAEllD,EAAEkrG,UAAWlrG,EAAEg6G,gBAAa,EACtH,MAAmB,WAAZh6G,EAAEirD,MAAqBhrD,EAAEmsG,UAAU9rG,EAAG,CAC5C4iF,GAAIljF,EAAEkjF,GACNC,GAAInjF,EAAEmjF,GACNr5B,OAAQ9pD,EAAE6qB,KACVskC,KAAM9sD,EACNiuD,OAAQ9vD,EACR4yD,YAAapzD,EAAEozD,YACfL,KAAM/yD,EAAE+yD,KACRG,YAAalzD,EAAEkzD,cACXjzD,EAAEosG,QAAQ/rG,EAAG,CACjB+M,EAAGrN,EAAEkjF,GAAKljF,EAAE6qB,KACZtd,EAAGvN,EAAEmjF,GAAKnjF,EAAE6qB,KACZ7d,MAAgB,EAAThN,EAAE6qB,KACT3d,OAAiB,EAATlN,EAAE6qB,KACVskC,KAAM9sD,EACNiuD,OAAQ9vD,EACR4yD,YAAapzD,EAAEozD,YACfnK,aAAcjpD,EAAEipD,aAChB8J,KAAM/yD,EAAE+yD,KACRG,YAAalzD,EAAEkzD,cACZ5yD,CACL,CACA,SAASy6G,GAAG96G,EAAGD,GACd,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GACzB,IAAA,IAAS1rG,KAAKR,EAAEowD,SAAUnwD,EAAEysG,QAAQpsG,EAAG,CACtCspD,OAAQppD,EAAEopD,OACV0G,OAAQ,QACR8C,YAAapzD,EAAEo6G,aACf5tD,QAAS,QACTM,SAAU,QACVq6C,MAAO,KACJlnG,EAAEysG,QAAQpsG,EAAG,CAChBspD,OAAQppD,EAAEopD,OACV0G,OAAQtwD,EAAEgkD,MACVoP,YAAapzD,EAAEmuF,UACf3hC,QAAS,QACTM,SAAU,QACVq6C,MAAO,KAER,IAAA,IAAS3mG,KAAKR,EAAE2wG,UAAW1wG,EAAE8xG,WAAWzxG,EAAG,CAC1CowG,SAAUlwG,EAAEkwG,SACZvhD,KAAMnvD,EAAEgkD,MACRsM,OAAQ,QACR8C,YAAapzD,EAAEo6G,aAAe,IAE/B,OAAO95G,CACR,CACA,SAAS06G,GAAG/6G,EAAGD,GACd,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GACzB,OAAOjsG,EAAEysG,QAAQpsG,EAAG,CACnBspD,OAAQ5pD,EAAEqnD,KAAKuC,OACf0G,OAAQtwD,EAAEqnD,KAAKiJ,OACf8C,YAAapzD,EAAEqnD,KAAK+L,YACpBL,KAAM/yD,EAAEqnD,KAAK0L,OACV/yD,EAAEsL,OAASrL,EAAE8xG,WAAWzxG,EAAG,CAC9BowG,SAAU,CACT1wG,EAAEsL,MAAM4kG,KACRlwG,EAAEsL,MAAM6kG,KACRnwG,EAAEsL,MAAMq7C,GACR3mD,EAAEsL,MAAMs7C,GACR5mD,EAAEsL,MAAMu7C,GACR7mD,EAAEsL,MAAMw7C,IAETqI,KAAMnvD,EAAEsL,MAAM6jD,KACdmB,OAAQtwD,EAAEsL,MAAMglD,OAChB8C,YAAapzD,EAAEsL,MAAM8nD,cAClBpzD,EAAEowG,MAAQnwG,EAAEosG,QAAQ/rG,EAAG,CAC1B+M,EAAGrN,EAAEowG,KAAK/iG,EACVE,EAAGvN,EAAEowG,KAAK7iG,EACVP,MAAOhN,EAAEowG,KAAKpjG,MACdE,OAAQlN,EAAEowG,KAAKljG,OACfojD,OAAQtwD,EAAEowG,KAAK9/C,OACf8C,YAAapzD,EAAEowG,KAAKh9C,cACjB9yD,CACL,CAyBA,SAAS26G,GAAGh7G,EAAGD,GACd,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GACzB,OAAOjsG,EAAEuyG,SAASlyG,EAAG,CACpB+M,EAAGrN,EAAEkjF,GAAKljF,EAAE46G,YAAc,EAC1BrtG,EAAGvN,EAAEmjF,GAAKnjF,EAAE46G,YAAc,EAC1B5tG,MAAOhN,EAAE46G,YACT1tG,OAAQlN,EAAE46G,YACV93D,IAAK9iD,EAAE8iD,MACJxiD,CACL,CAGA,IAAI46G,GAAK,MACR,WAAA96G,CAAYH,EAAGD,GACd8D,KAAKq3G,MAAQ,GAAIr3G,KAAKs3G,OAAS,GAAIt3G,KAAKq3G,MAAQl7G,EAAG6D,KAAKs3G,OAASp7G,EAAG8D,KAAKuoD,OAASvoD,KAAKu3G,cACxF,CACA,QAAA3J,GACC,OAAO5tG,KAAKq3G,KACb,CACA,SAAA7J,GACC,OAAOxtG,KAAKs3G,MACb,CACA,SAAA5Q,GACC,OAAO1mG,KAAKuoD,MACb,CACA,YAAAgvD,GACC,IAAIp7G,EAAI6D,KAAKq3G,MAAM11G,OAAO,CAACxF,EAAGD,KAAAA,CAC7B0+D,KAAM7yD,KAAKC,IAAI7L,EAAEy+D,KAAM1+D,EAAEqN,GACzBwxD,KAAMhzD,KAAKD,IAAI3L,EAAE4+D,KAAM7+D,EAAEqN,GACzBuxD,KAAM/yD,KAAKC,IAAI7L,EAAE2+D,KAAM5+D,EAAEuN,GACzBuxD,KAAMjzD,KAAKD,IAAI3L,EAAE6+D,KAAM9+D,EAAEuN,KACtB,CACHmxD,KAAMC,IACNE,MAAMF,IACNC,KAAMD,IACNG,MAAMH,MAEP,IAAA,IAAS3+D,KAAK8D,KAAKs3G,OAAQ,CAC1B,IAAI96G,EAAIN,EAAEqyG,EAAG7xG,GAAKR,EAAEsyG,EACpBryG,EAAEy+D,KAAO7yD,KAAKC,IAAI7L,EAAEy+D,KAAMp+D,GAAIL,EAAE4+D,KAAOhzD,KAAKD,IAAI3L,EAAE4+D,KAAMv+D,EAAIN,EAAEyyG,OAAQxyG,EAAE2+D,KAAO/yD,KAAKC,IAAI7L,EAAE2+D,KAAMp+D,GAAIP,EAAE6+D,KAAOjzD,KAAKD,IAAI3L,EAAE6+D,KAAMt+D,EAAIR,EAAE0yG,OACrI,CACA,OAAOzyG,CACR,GACEq7G,IAAIlnE,EAAA,MACN,WAAAh0C,CAAYH,GACX6D,KAAKy3G,OAAS,CAAA,EAAIz3G,KAAK6rG,MAAwB,IAAI1rG,IAAOH,KAAKwI,QAAU,EAAGxI,KAAKs/B,KAAOnjC,EAAG6D,KAAKy3G,OAASz3G,KAAK03G,eAAgB13G,KAAK23G,aACpI,CACA,WAAA9Q,GACC,OAAO7mG,KAAKs/B,KAAKsnE,QAClB,CACA,SAAAgR,GACC,OAAO1mF,SAASlxB,KAAKs/B,KAAKu4E,OAC3B,CACA,UAAA1S,GACC,OAAOnlG,KAAKwI,OACb,CACA,SAAAsvG,GACC93G,KAAKwI,SACN,CACA,QAAAs8F,CAAS3oG,GACR,OAAO6D,KAAKy3G,OAAOt7G,EACpB,CACA,SAAA47G,GACC,OAAOj7G,OAAO4mB,OAAO1jB,KAAKy3G,OAC3B,CACA,UAAAO,GACC,OAAOl7G,OAAO4F,KAAK1C,KAAKy3G,QAAQ50G,IAAIif,QAAQ7L,KAAK,CAAC9Z,EAAGD,IAAMC,EAAID,EAChE,CACA,QAAA0xG,GACC,OAAO5tG,KAAKs/B,KAAK+3E,KAClB,CACA,aAAA5Q,GACC,OAAOzmG,KAAK+3G,YAAYp2G,OAAO,CAACxF,EAAGD,KAClC,IAAIM,EAAIN,EAAEwqG,YACV,MAAO,CACN9rC,KAAM7yD,KAAKC,IAAI7L,EAAEy+D,KAAMp+D,EAAEo+D,MACzBG,KAAMhzD,KAAKD,IAAI3L,EAAE4+D,KAAMv+D,EAAEu+D,MACzBD,KAAM/yD,KAAKC,IAAI7L,EAAE2+D,KAAMt+D,EAAEs+D,MACzBE,KAAMjzD,KAAKD,IAAI3L,EAAE6+D,KAAMx+D,EAAEw+D,QAExB,CACFJ,KAAMC,IACNE,MAAMF,IACNC,KAAMD,IACNG,MAAMH,KAER,CACA,YAAA6yC,CAAavxG,GACZ,OAAOe,MAAMqC,KAAKS,KAAK6rG,MAAMnoF,UAAUpgB,OAAQpH,GAAMA,EAAE+jE,OAAOvhD,SAASviB,GACxE,CACA,YAAAu7G,GACC,IAAIv7G,EAAI6D,KAAKs/B,KAAK+3E,MAAM11G,OAAO,CAACxF,EAAGD,KAAOC,EAAED,EAAE4gF,KAAO3gF,EAAED,EAAE4gF,GAAK,IAAK3gF,EAAED,EAAE4gF,GAAG79E,KAAK/C,GAAIC,GAAI,CAAA,GACvF,OAAOW,OAAO4pB,QAAQvqB,GAAGwF,OAAO,CAACxF,GAAID,EAAGM,MAAQL,GAAGD,GAAK,IAAIk7G,GAAG56G,EAAGwD,KAAKs/B,KAAKg4E,OAAOh0G,OAAQnH,GAAMA,EAAE87G,KAAO/7G,IAAKC,GAAI,CAAA,EACpH,CAiBA,WAAAw7G,GACC,IAAIz7G,MAAwBiE,IAC5BH,KAAKs/B,KAAK+3E,MAAMx1G,QAAS1F,IACxBW,OAAO4pB,QAAQvqB,EAAE0vG,OAAOhqG,QAAQ,EAAErF,EAAGE,MACpC,GAAIP,EAAEstC,KAAO/sC,EAAG,OAChB,IAAI6B,EAAI,GAAGwJ,KAAKC,IAAI7L,EAAEstC,GAAI/sC,MAAMqL,KAAKD,IAAI3L,EAAEstC,GAAI/sC,KAC/CR,EAAE8F,IAAIzD,IAAMrC,EAAEyG,IAAIpE,EAAG,IAAKrC,EAAE6E,IAAIxC,GAAGU,KAAK,CACvCi5G,OAAQ/7G,EAAEstC,GACV73B,OAAQlV,EACRogF,EAAG3gF,EAAE2gF,EACLn8D,IAAKnkB,QAIR,IAAA,IAAUA,EAAGE,KAAMR,EAAG,CACrB,IAAKA,EAAGqC,GAAK/B,EAAEkD,MAAM,KAAMzC,EAAIi0B,SAASh1B,GAAIiB,EAAI+zB,SAAS3yB,GAAIiC,EAAI9D,EAAE4G,OAAQnH,GAAMA,EAAE+7G,SAAWj7G,GAAI2B,EAAIlC,EAAE4G,OAAQnH,GAAMA,EAAE+7G,SAAW/6G,GAAIokD,MAAwB/lC,IAC/J,IAAA,IAAStf,KAAKsE,EAAG,CAChB,IAAI9D,GAAI,EACR,IAAA,IAASF,EAAI,EAAGA,EAAIoC,EAAEnC,OAAQD,IAAK,IAAK+kD,EAAEv/C,IAAIxF,GAAI,CACjD,GAAIoC,EAAEpC,GAAGmkB,MAAQ2vB,EAAE6nE,YAAYj8G,EAAEykB,KAAM,CACtCjkB,EAAIF,EACJ,KACD,MACAE,IAAaA,EAAIF,EAClB,CACA,IAAU,IAANE,EAAU,CACb6kD,EAAEh+C,IAAI7G,GACN,IAAIP,EAAIyC,EAAElC,GACVsD,KAAK6rG,MAAMlpG,IAAI,GAAGnG,KAAKN,EAAEykB,MAAO,CAC/B1jB,EAAAA,EACAiZ,EAAG/Y,EACHguG,KAAMjvG,EAAEykB,IACRyqF,KAAMjvG,EAAEwkB,IACRs/C,OAAQ,CAAC/jE,EAAE4gF,EAAG3gF,EAAE2gF,IAElB,WAAY+uB,MAAMlpG,IAAI,GAAGnG,OAAON,EAAEykB,MAAO,CACxC1jB,EAAAA,EACAiZ,EAAG/Y,EACHguG,KAAMjvG,EAAEykB,IACRs/C,OAAQ,CAAC/jE,EAAE4gF,IAEb,CACA,IAAA,IAAS3gF,EAAI,EAAGA,EAAIyC,EAAEnC,OAAQN,IAAK,IAAKolD,EAAEv/C,IAAI7F,GAAI,CACjD,IAAID,EAAI0C,EAAEzC,GACV6D,KAAK6rG,MAAMlpG,IAAI,GAAGnG,OAAON,EAAEykB,MAAO,CACjC1jB,EAAAA,EACAiZ,EAAG/Y,EACHiuG,KAAMlvG,EAAEykB,IACRs/C,OAAQ,CAAC/jE,EAAE4gF,IAEb,CACD,CACD,GAnECxsC,EAAK6nE,YAAc,CAClBtO,MAAO,QACPC,MAAO,QACPC,KAAM,OACNC,KAAM,OACNC,UAAW,YACXG,UAAW,YACXF,UAAW,YACXC,UAAW,YACXE,GAAI,OACJC,KAAM,KACNC,GAAI,MACJC,IAAK,MAhEDl6D,GAwHJ8nE,GAAK,cAAchB,GACrB,WAAA96G,CAAYH,EAAGD,GACd2sB,MAAM1sB,EAAEyxG,WAAYzxG,EAAEqxG,aAAcxtG,KAAKq4G,UAAYl8G,EAAG6D,KAAKs4G,aAAep8G,CAC7E,CACA,QAAA0xG,GACC,OAAO5tG,KAAKq4G,UAAUzK,WAAWtqG,OAAQnH,GAAM6D,KAAKs4G,aAAat2G,IAAI7F,EAAEstC,IACxE,CACA,SAAA+jE,GACC,OAAOxtG,KAAKq4G,UAAU7K,WACvB,CACA,SAAA9G,GACC,IAAIvqG,EAAI6D,KAAK4tG,WACb,OAAOzxG,EAAEM,OAASN,EAAEwF,OAAO,CAACxF,EAAGD,KAAAA,CAC9B0+D,KAAM7yD,KAAKC,IAAI7L,EAAEy+D,KAAM1+D,EAAEqN,GACzBwxD,KAAMhzD,KAAKD,IAAI3L,EAAE4+D,KAAM7+D,EAAEqN,GACzBuxD,KAAM/yD,KAAKC,IAAI7L,EAAE2+D,KAAM5+D,EAAEuN,GACzBuxD,KAAMjzD,KAAKD,IAAI3L,EAAE6+D,KAAM9+D,EAAEuN,KACtB,CACHmxD,KAAMC,IACNE,MAAMF,IACNC,KAAMD,IACNG,MAAMH,MACF76D,KAAKq4G,UAAU3R,WACrB,GACE6R,GAAI,cAAcf,GACpB,WAAAl7G,CAAYH,EAAGD,GACd2sB,MAAM1sB,GAAI6D,KAAKw4G,WAA6B,IAAIC,QAAWz4G,KAAKs4G,aAAep8G,aAAasf,IAAMtf,EAAI,IAAIsf,IAAItf,GAAK,IAAK8D,KAAK04G,YAAc,IAAIl9F,IAAIrf,EAAEk7G,MAAMx0G,IAAK1G,GAAMA,EAAEstC,IACzK,CACA,QAAAq7D,CAAS3oG,GACR,IAAID,EAAI2sB,MAAMi8E,SAAS3oG,GACvB,IAAKD,EAAG,OAAOA,EACf,IAAIM,EAAIwD,KAAKw4G,WAAWz3G,IAAI7E,GAC5B,OAAOM,IAAMA,EAAI,IAAI47G,GAAGl8G,EAAG8D,KAAKs4G,cAAet4G,KAAKw4G,WAAW71G,IAAIzG,EAAGM,IAAKA,CAC5E,CACA,SAAAu7G,GACC,OAAOlvF,MAAMkvF,YAAYl1G,IAAK1G,IAC7B,IAAID,EAAI8D,KAAKw4G,WAAWz3G,IAAI5E,GAC5B,OAAOD,IAAMA,EAAI,IAAIk8G,GAAGj8G,EAAG6D,KAAKs4G,cAAet4G,KAAKw4G,WAAW71G,IAAIxG,EAAGD,IAAKA,GAE7E,CACA,YAAAwxG,CAAavxG,GACZ,OAAO0sB,MAAM6kF,aAAavxG,GAAGmH,OAAQnH,GAAM6D,KAAKs4G,aAAat2G,IAAI7F,EAAEc,IAAM+C,KAAKs4G,aAAat2G,IAAI7F,EAAE+Z,GAClG,CACA,mBAAAyiG,GACC,OAAO9vF,MAAM+kF,WAAWjsG,OAAO,CAACxF,EAAGD,IAAMC,MAAO6D,KAAKs4G,aAAat2G,IAAI9F,EAAEutC,IAAK,EAC9E,CACA,iBAAAmvE,GACC,OAAO54G,KAAK04G,YAAY3xF,IACzB,CACA,cAAA8xF,CAAe18G,GACd,OAAO6D,KAAK04G,YAAY12G,IAAI7F,IAAM6D,KAAKs4G,aAAat2G,IAAI7F,EACzD,CACA,iBAAA28G,GACC,OAAOjwF,MAAM+kF,WAAWtqG,OAAQnH,GAAM6D,KAAKs4G,aAAat2G,IAAI7F,EAAEstC,KAAK5mC,IAAK1G,GAAMA,EAAEstC,GACjF,CACA,cAAAsvE,CAAe58G,GACd,IAAID,EAAI8D,KAAKs4G,aAAat2G,IAAI7F,GAC9B6D,KAAKs4G,aAAa/0G,IAAIpH,GACtB,IAAIK,GAAKN,GAAK8D,KAAK04G,YAAY12G,IAAI7F,GACnC,OAAOK,GAAKwD,KAAK83G,YAAat7G,CAC/B,CACA,eAAAw8G,CAAgB78G,GACf,IAAID,EAAI,EACR,IAAA,IAASM,KAAKL,EAAG,CAChB,IAAIA,EAAI6D,KAAKs4G,aAAat2G,IAAIxF,GAC9BwD,KAAKs4G,aAAa/0G,IAAI/G,IAAKL,GAAK6D,KAAK04G,YAAY12G,IAAIxF,IAAMN,GAC5D,CACA,OAAOA,EAAI,GAAK8D,KAAK83G,YAAa57G,CACnC,GACE+8G,GAAI,kBAAmBC,GAAK,MAC9B,WAAA58G,CAAYJ,EAAGM,EAAGE,GACjB,GAAIsD,KAAKm5G,gBAAkC,IAAIh5G,IAAOH,KAAKo5G,WAAa,GAAIp5G,KAAKq5G,mBAAqB,GAAIr5G,KAAKguG,iBAAmB,GAAIhuG,KAAK0zG,WAAY,EAAI1zG,KAAK2G,MAAQzK,EAAG8D,KAAKgkC,UAAYxnC,EAAGA,GAAKwD,KAAKmyD,MAAQ,IAAIh2D,GAAEwtE,MAAM,CAC5N3lC,UAAWxnC,EACX0M,MAAO1M,EAAEyQ,YACT7D,OAAQ5M,EAAEwQ,aACVw3D,WAAW,IACRhoE,EAAEqK,MAAMghG,gBAAkB3rG,EAAEyoG,SAASkD,gBAAiB7nG,KAAKuE,SAAW,IAAIyqG,GAAExyG,EAAEyQ,YAAazQ,EAAEwQ,gBAAkBhN,KAAKmyD,MAAQ,IAAIh2D,GAAEwtE,MAAM,CAC3IzgE,MAAO,EACPE,OAAQ,IACLpJ,KAAKuE,SAAW,IAAIyqG,GAAE,EAAG,IAAKhvG,KAAKgtG,UAAY,IAAI7wG,GAAE02E,MAAM,CAAExV,WAAW,IAAOr9D,KAAKmyD,MAAM5uD,IAAIvD,KAAKgtG,WAAYhtG,KAAKitG,UAAY,IAAI9wG,GAAE02E,MAAM,CAAExV,WAAW,IAAOr9D,KAAKmyD,MAAM5uD,IAAIvD,KAAKitG,WAAYjtG,KAAKktG,UAAY,IAAI/wG,GAAE02E,MAAM,CAAExV,WAAW,IAAOr9D,KAAKmyD,MAAM5uD,IAAIvD,KAAKktG,WAAYltG,KAAKs5G,cAAgB,IAAIn9G,GAAE02E,MAAM,CAAExV,WAAW,IAAOr9D,KAAKmyD,MAAM5uD,IAAIvD,KAAKs5G,eAAgBt5G,KAAKu5G,aAAe,IAAIp9G,GAAE02E,MAAM,CAAExV,WAAW,IAAOr9D,KAAKmyD,MAAM5uD,IAAIvD,KAAKu5G,cAAev5G,KAAKw5G,eAAiB98G,GAAK,IAAIo4G,GAAM90G,KAAKy5G,kBAAoB,IAAI38B,GAAE98E,KAAKs5G,eAAgBt5G,KAAK05G,iBAAmB,IAAI58B,GAAE98E,KAAKu5G,cAAev5G,KAAK25G,SAAW,IAAI5M,GAAG7wG,EAAEwoG,UAAWxoG,EAAEyoG,SAAU3kG,KAAKw5G,eAAgB,CACppBxM,UAAW,IAAIlwB,GAAE98E,KAAKgtG,WACtBC,UAAW,IAAInwB,GAAE98E,KAAKitG,WACtBC,UAAW,IAAIpwB,GAAE98E,KAAKktG,aACnBltG,KAAKujB,OAAS,IAAIxI,GAAEve,GAAIwD,KAAK45G,QAAU,IAAIrI,GAAGvxG,KAAKmyD,MAAO,IAAI2qB,GAAE98E,KAAKktG,WAAY,IAAIpwB,GAAE98E,KAAKitG,WAAY/wG,EAAEyoG,UAAW3kG,KAAKuE,SAASutF,SAAW,IAAM9xF,KAAK65G,uBAAwBr9G,EAAG,CACvLwD,KAAK85G,YAAc95G,KAAKuE,SAAS2sD,QAAQtwD,KAAKZ,KAAKuE,UACnD,IAAIpI,EAAI6D,KAAK85G,YACb95G,KAAKuE,SAAS2sD,QAAU,CAACh1D,EAAGM,KAC3BL,EAAED,EAAGM,GAAIwD,KAAKmyD,MAAMjpD,MAAMhN,GAAI8D,KAAKmyD,MAAM/oD,OAAO5M,IAC9CwD,KAAK+5G,mBAAqB,IAAIvG,GAAGh3G,EAAGwD,KAAKuE,SAAUrI,EAAGA,EAAEyoG,SAAU,CACpEkL,iBAAkB,CAAC1zG,EAAGD,IAAM8D,KAAKuE,SAASsrG,iBAAiB1zG,EAAGD,EAAGM,EAAEmM,yBACnE8rG,gBAAiB,CAACt4G,EAAGD,IAAM8D,KAAK45G,QAAQnH,mBAAmBt2G,EAAGD,GAC9Dw4G,oBAAqB,IAAM10G,KAAKguG,kBAC9BhuG,KAAKujB,OACT,CACAvjB,KAAKg6G,iBAAiB99G,EACvB,CACA,iBAAA+9G,CAAkB99G,GACjB6D,KAAKw5G,eAAiBr9G,EAAG6D,KAAK25G,SAAW,IAAI5M,GAAG/sG,KAAK2G,MAAM+9F,UAAW1kG,KAAK2G,MAAMg+F,SAAUxoG,EAAG,CAC7F6wG,UAAW,IAAIlwB,GAAE98E,KAAKgtG,WACtBC,UAAW,IAAInwB,GAAE98E,KAAKitG,WACtBC,UAAW,IAAIpwB,GAAE98E,KAAKktG,YAExB,CACA,gBAAIG,GACH,OAAOrtG,KAAK25G,SAAStM,YACtB,CACA,qBAAIF,GACH,OAAOntG,KAAK25G,SAASxM,iBACtB,CACA,gBAAIC,GACH,OAAOptG,KAAK25G,SAASvM,YACtB,CACA,OAAAvvF,GACC7d,KAAK0zG,YAAc1zG,KAAK0zG,WAAY,EAAI1zG,KAAK2G,MAAM4c,OAAO6gF,qBAAsBpkG,KAAK+5G,oBAAoBl8F,UAAW7d,KAAKuE,SAAS2rG,kBAAmBlwG,KAAK85G,cAAgB95G,KAAKuE,SAAS2sD,QAAUlxD,KAAK85G,aAAc95G,KAAKuE,SAASutF,gBAAmB9xF,KAAKk6G,qBAAsBl6G,KAAKm6G,0BAA2Bn6G,KAAKo6G,sBAAoBp6G,KAAKo6G,eAAev8F,UAAoB7d,KAAKq6G,wBAAsBr6G,KAAKq6G,iBAAiBx8F,UAAoB7d,KAAKmyD,MAAMt0C,UAAW7d,KAAKujB,OAAO6gF,qBAC1d,CACA,gBAAAkW,GACCt6G,KAAKgkC,YAAchkC,KAAKgkC,UAAUn9B,MAAMghG,gBAAkB7nG,KAAK2G,MAAMg+F,SAASkD,gBAC/E,CACA,YAAA0S,CAAap+G,GACZ,YAAI6D,KAAK2G,MAAMo+F,kBAAuD,IAA7B/kG,KAAK2G,MAAMs+F,cAA0B,OAC9E,IAAI/oG,EAAI8D,KAAKmyD,MAAM4P,SAAS,CAAE/xB,WAAY7zC,GAAG6zC,YAAc,IAAMxzC,EAAI0F,SAAS83B,cAAc,UAC5Fx9B,EAAE0M,MAAQhN,EAAEgN,MAAO1M,EAAE4M,OAASlN,EAAEkN,OAChC,IAAI1M,EAAIF,EAAEijD,WAAW,MACrB,OAAO/iD,EAAEkjD,UAAY5/C,KAAK2G,MAAMg+F,SAASkD,gBAAiBnrG,EAAEmjD,SAAS,EAAG,EAAGrjD,EAAE0M,MAAO1M,EAAE4M,QAAS1M,EAAE+tD,UAAUvuD,EAAG,EAAG,GAAIM,CACtH,CACA,oBAAAq9G,GACC,IAAI19G,EAAI6D,KAAKuE,SAASgrG,WACtBvvG,KAAKmyD,MAAM7gB,MAAM,CAChB/nC,EAAGpN,EACHsN,EAAGtN,IACA6D,KAAKmyD,MAAM/qD,SAASpH,KAAKuE,SAAS6C,UAAWpH,KAAKmyD,MAAM6Q,YAAahjE,KAAK25G,SAASvM,aAAalE,OAAOlpG,KAAKuE,SAASqrG,qBAAsB5vG,KAAK45G,QAAQ7G,kBAAmB/yG,KAAKw6G,qBACrL,CACA,QAAAz4C,CAAS7lE,GACR,IAAM6oG,YAAavoG,EAAGyoG,cAAevoG,EAAGsoG,oBAAqBzmG,GAAMyB,KAAK2G,MACxE,QAAU,IAANnK,QAAsB,IAANE,IAAiB6B,EAAG,OACxC,IAAItB,EAAIsB,EAAGpB,EAAIF,EAAE6nG,SAASpoG,GAC1B,IAAKS,EAAG,OACR,IAAM+L,MAAO1I,EAAG4I,OAAQxK,GAAM1C,EAAGqlD,EAAIrlD,EAAEoQ,SAAW,EAAG7N,EAAIuB,KAAKuE,SAAS2E,MAAOqpC,EAAIvyC,KAAKuE,SAAS6E,OAAQxJ,EAAII,KAAKuE,SAAS0qG,KAAM5uE,EAAIrgC,KAAKuE,SAAS2qG,QAAS/xF,EAAI,IAAKnd,KAAKuE,SAAS6C,UAAYk6C,EAAIthD,KAAKuE,SAASutF,SAChN9xF,KAAKuE,SAASutF,cAAW,EACzB,IAAInyF,EAAIK,KAAK2G,MAAMggG,oBAAoB1pG,EAAGE,EAAGjB,EAAEopG,OAAQ/jD,GAAIH,EAAI5gD,EAAIb,EAAEk8F,EAAG9gF,EAAInc,EAAIe,EAAE2hD,EAAG73C,EAAI1B,KAAKC,IAAIo5C,EAAGrmC,GAA8B0/F,GAAKj6G,EAA3Bb,EAAEk8F,EAAIpyF,GAA8B,EAAG8zE,GAAK3+E,EAA/Be,EAAE2hD,EAAI73C,GAAkC,EAAGoyF,EAAI,CACxKtyF,EAAGkxG,EAAI96G,EAAE4J,EAAIE,EACbA,EAAG8zE,EAAI59E,EAAE8J,EAAIA,GAEdzJ,KAAKuE,SAAS2E,MAAQ1I,EAAGR,KAAKuE,SAAS6E,OAASxK,EAAGoB,KAAKuE,SAAS0qG,KAAOxlG,GAAKzJ,KAAKuE,SAASgrG,WAAavvG,KAAKuE,SAAS0qG,MAAOjvG,KAAKuE,SAAS6C,SAAWy0F,EAAG77F,KAAKmyD,MAAMjpD,MAAM1I,GAAIR,KAAKmyD,MAAM/oD,OAAOxK,GAAIoB,KAAKmyD,MAAM7gB,MAAM,CACpN/nC,EAAGE,EACHA,EAAAA,IACGzJ,KAAKmyD,MAAM/qD,SAASy0F,GAAI77F,KAAK25G,SAASvM,aAAalE,OAAOlpG,KAAKuE,SAASqrG,qBAAsB5vG,KAAK45G,QAAQ5G,gBAC/G,IAAI0H,EAAI,IAAIv+G,GAAE02E,MAAM,CAAExV,WAAW,IACjCq9C,EAAEppE,MAAM,CACP/nC,EAAG,EAAIE,EACPA,EAAG,EAAIA,IACJixG,EAAEtzG,SAAS,CACdmC,IAAKkxG,EAAI96G,EAAE4J,EAAIE,GAAKA,EACpBA,IAAK8zE,EAAI59E,EAAE8J,EAAIA,GAAKA,IACjBixG,EAAEn3G,IAAI,IAAIpH,GAAEoqF,KAAK,CACpBh9E,EAAG,EACHE,EAAG,EACHP,MAAO1I,EACP4I,OAAQxK,EACRysD,KAAMrrD,KAAK2G,MAAMg+F,SAASkD,mBACtB7nG,KAAKmyD,MAAM5uD,IAAIm3G,GAAIA,EAAE36C,eAC1B,IAAI+mC,EAAK9mG,KAAKmyD,MAAM4P,SAAS,CAC5B74D,MAAO1I,EACP4I,OAAQxK,IAET,OAAO87G,EAAE78F,UAAW7d,KAAKuE,SAAS2E,MAAQzK,EAAGuB,KAAKuE,SAAS6E,OAASmpC,EAAGvyC,KAAKuE,SAAS0qG,KAAOrvG,EAAGI,KAAKuE,SAAS2qG,QAAU7uE,EAAGrgC,KAAKuE,SAAS6C,SAAW+V,EAAGnd,KAAKuE,SAASutF,SAAWxwC,EAAGthD,KAAKmyD,MAAMjpD,MAAMzK,GAAIuB,KAAKmyD,MAAM/oD,OAAOmpC,GAAIvyC,KAAK65G,uBAAwB75G,KAAK45G,QAAQ5G,gBAAiBlM,CACzR,CACA,OAAAl+D,GACC,IAAMo8D,oBAAqB7oG,EAAG8oG,cAAe/oG,EAAGmpG,eAAgB7oG,GAAMwD,KAAK2G,MAC3E,IAAKxK,QAAW,IAAND,EAAc,OACxB,IAAIQ,EAAIP,EAAE2oG,SAAS5oG,GACnB,IAAKQ,EAAG,OACRsD,KAAKs6G,mBACL,IAAI/7G,EAAIyB,KAAKstG,WAAWnxG,EAAGO,EAAGR,EAAG8D,KAAKuE,SAASqrG,qBAC/C5vG,KAAK26G,aAAap8G,GAAIyB,KAAK46G,sBAAwB,IAANp+G,GAAgBwD,KAAK66G,kBAAkBr+G,GAAG,GAAI,EAC5F,CACA,gBAAAw9G,CAAiB79G,GAChBA,EAAEonB,OAAOgC,GAAG,OAAQ,KACnBvlB,KAAK4oC,YACFzsC,EAAEonB,OAAOgC,GAAG,WAAY,EAAG+/E,OAAQnpG,EAAGgR,OAAQjR,EAAGqpG,YAAa/oG,MACjEwD,KAAK66G,kBAAkB1+G,EAAGD,EAAGM,KAC1BL,EAAEonB,OAAOgC,GAAG,SAAU,EAAG+/E,OAAQppG,EAAG4pG,QAAStpG,MAChD,IAAIE,EAAIP,EAAEuoG,UAAUU,QAAQlpG,GAC5BQ,GAAKsD,KAAKuE,SAASwrG,sBAAsBrzG,EAAE6M,EAAG7M,EAAE+M,EAAGjN,GAAKwD,KAAK2G,MAAMg+F,SAASmW,kBACzE3+G,EAAEonB,OAAOgC,GAAG,YAAa,EAAG+/E,OAAQnpG,EAAG+jD,MAAOhkD,MACjD8D,KAAK+6G,cAAc5+G,EAAGD,KACnBC,EAAEonB,OAAOgC,GAAG,OAAQ,KACvBvlB,KAAKg7G,cACF7+G,EAAEonB,OAAOgC,GAAG,QAAS,KACxBvlB,KAAK46G,kBAEP,CACA,UAAAtN,CAAWnxG,EAAGD,EAAGM,EAAGE,GACnBsD,KAAKs5G,cAAc1zC,kBAAmB5lE,KAAKo6G,oBAAiB,EAAQp6G,KAAKk6G,qBAAsBl6G,KAAKq5G,mBAAqB,GACzH,IAAI96G,EAAIyB,KAAK25G,SAASrM,WAAWnxG,EAAGD,EAAGM,EAAGE,GAC1C,OAAOsD,KAAKi7G,gBAAkB18G,EAAGA,CAClC,CACA,YAAAo8G,CAAax+G,GACZ6D,KAAK45G,QAAQtxD,QAAStoD,KAAKguG,iBAAmB,GAAIhuG,KAAK45G,QAAQzH,oBAC/D,IAAIj2G,EAAI8D,KAAKuE,SAASgrG,WACtBvvG,KAAKmyD,MAAM7gB,MAAM,CAChB/nC,EAAGrN,EACHuN,EAAGvN,IAEJ,IAAA,IAAS,CAAGA,KAAMC,EAAE2xG,eAAgB8L,QAAQ9L,UAAUnrG,IAAIzG,EAAEgyG,KAAKzkE,GAAIvtC,GAAI8D,KAAK45G,QAAQrH,sBAAsBr2G,GAC5G,IAAA,IAASA,KAAKC,EAAE4xG,oBAAqB/tG,KAAK45G,QAAQ7L,oBAAoB9uG,KAAK/C,GAAI8D,KAAK45G,QAAQpH,gCAAgCt2G,GAC5H8D,KAAK45G,QAAQjH,wBAAyB3yG,KAAKguG,iBAAmB7xG,EAAE6xG,iBAAkBhuG,KAAK45G,QAAQ5G,gBAAiBhzG,KAAKmyD,MAAM6Q,WAC5H,CACA,iBAAA63C,CAAkB1+G,EAAGD,EAAGM,GACvB,QAAU,IAANL,EAEH,OADA6D,KAAKo6G,sBAAoBp6G,KAAKo6G,eAAev8F,UAAoB7d,KAAKq6G,wBAAsBr6G,KAAKq6G,iBAAiBx8F,UAAoB7d,KAAKy5G,kBAAkBz2C,YAAahjE,KAAKm6G,+BAA2Bn6G,KAAK05G,iBAAiB12C,YAGjO,IAAItmE,EAAIsD,KAAK2G,MAAM+9F,UAAUU,QAAQjpG,GACrCO,IAAMR,GAAK8D,KAAKuE,SAASwrG,sBAAsBrzG,EAAE6M,EAAG7M,EAAE+M,EAAGjN,GAAKwD,KAAK2G,MAAMg+F,SAASmW,gBAAiB96G,KAAKk7G,yBAAyBx+G,GAAIsD,KAAKm7G,kBAAkBz+G,GAAIsD,KAAKo7G,oBAAoB1+G,GAC1L,CACA,mBAAA0+G,CAAoBj/G,GACnB6D,KAAKo6G,gBAAkBp6G,KAAKo6G,eAAev8F,UAC3C,IAAI3hB,EAAI25G,GAAG15G,EAAG6D,KAAK2G,MAAMg+F,UACzB3kG,KAAKo6G,eAAiBpD,GAAGh3G,KAAKw5G,eAAgBt9G,GAAI8D,KAAKy5G,kBAAkBlQ,QAAQvpG,KAAKo6G,eACvF,CACA,iBAAAe,CAAkBh/G,GACjB,GAAI6D,KAAKq6G,wBAAsBr6G,KAAKq6G,iBAAiBx8F,WAAqB7d,KAAK2G,MAAMg+F,SAASkS,aAAatwG,QAAS,OACpH,IAAIrK,EAAI8D,KAAKuE,SAASqrG,oBAAqBpzG,EAAIm6G,GAAGx6G,EAAEoN,EAAGpN,EAAEsN,EAAGvN,EAAG8D,KAAK2G,MAAMg+F,UAC1E3kG,KAAKq6G,iBAAmBlD,GAAGn3G,KAAKw5G,eAAgBh9G,GAAIwD,KAAK05G,iBAAiBnQ,QAAQvpG,KAAKq6G,kBAAmBr6G,KAAK05G,iBAAiB12C,WACjI,CACA,mBAAAw3C,GACC,IAAKx6G,KAAK2G,MAAMg+F,SAASkS,aAAatwG,cAAyC,IAA9BvG,KAAK2G,MAAM0+F,eAA2B,OACvF,IAAIlpG,EAAI6D,KAAK2G,MAAM+9F,UAAUU,QAAQplG,KAAK2G,MAAM0+F,gBAChDlpG,GAAK6D,KAAKm7G,kBAAkBh/G,EAC7B,CACA,uBAAAg+G,GACCn6G,KAAKq5G,mBAAmBx3G,QAAS1F,GAAMA,EAAE0hB,WAAY7d,KAAKq5G,mBAAqB,GAAIr5G,KAAKy5G,kBAAkBz2C,WAC3G,CACA,wBAAAk4C,CAAyB/+G,GACxB,GAAI6D,KAAKm6G,0BAA2Bh+G,EAAEmjC,OAASt/B,KAAK2G,MAAMo+F,aAAe5oG,EAAE2gF,IAAM98E,KAAK2G,MAAMs+F,cAE3F,YADAjlG,KAAKy5G,kBAAkBz2C,YAGxB,IAAI9mE,EAAI8D,KAAK2G,MAAMg+F,SACnB,IAAKzoG,EAAEm/G,qBAEN,OADAr7G,KAAKo6G,gBAAkBp6G,KAAKo6G,eAAex6C,iBAAa5/D,KAAKy5G,kBAAkBz2C,YAGhF,IAAIxmE,MAAwB2D,IAC5B3D,EAAEmG,IAAIxG,EAAEstC,GAAIttC,GACZ,IAAIO,EAAI,GAAI6B,EAAIyB,KAAK25G,SAAStM,aAAcpwG,EAAI+C,KAAK2G,MAAMq+F,+BAA+BuT,GAAIv4G,KAAK2G,MAAMq+F,yBAAsB,EAC/HhlG,KAAK2G,MAAMq+F,0BAAoD,IAA7BhlG,KAAK2G,MAAMs+F,eAA4BjlG,KAAK2G,MAAMq+F,oBAAoB0I,aAAa1tG,KAAK2G,MAAMs+F,eAAe3hG,OAAQpH,GAAMA,EAAEe,IAAMd,EAAEstC,IAAMvtC,EAAEga,IAAM/Z,EAAEstC,IAAI5nC,QAAS1F,IACnM,IAAID,EAAIqC,EAAE2sG,oBAAoB/uG,EAAG88G,GAAGj5G,KAAK2G,MAAMs+F,eAC/C/oG,GAAKQ,EAAEuC,KAAKe,KAAK25G,SAASvL,eAAelyG,MAE1C,IAAA,IAASM,KAAK2vG,GAAGhwG,EAAGD,EAAG+8G,IAAIv8G,EAAEuC,KAAKi4G,GAAGl3G,KAAKw5G,eAAgBh9G,IAC1D,IAAIW,EAAI6uG,GAAG7vG,EAAGD,EAAG+8G,IACjB97G,EAAEV,OAAS,GAAKC,EAAEuC,KAxbpB,SAAY9C,EAAGD,GACd,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GACzB,IAAA,IAAS1rG,KAAKR,EAAGC,EAAEysG,QAAQpsG,EAAG,CAC7BspD,OAAQ,CACPppD,EAAEmmD,GACFnmD,EAAEomD,GACFpmD,EAAEqmD,GACFrmD,EAAEsmD,IAEHwJ,OAAQ9vD,EAAE8vD,OACV8C,YAAa5yD,EAAE4yD,cAEhB,OAAO9yD,CACR,CA2ayB8+G,CAAGt7G,KAAKw5G,eAAgBr8G,IAAK,IAAIL,OAAO4mB,OAAOvnB,EAAE0vG,UAAW/uG,OAAO4mB,OAAOvnB,EAAEyvG,eAAe/pG,QAAS1F,IAC1H,IAAID,EAAI8D,KAAK2G,MAAM+9F,UAAUU,QAAQjpG,GAAIO,GAAKO,GAAKA,EAAE47G,eAAe18G,GACpED,GAAKA,EAAEojC,OAASt/B,KAAK2G,MAAMo+F,aAAe7oG,EAAE4gF,IAAM98E,KAAK2G,MAAMs+F,eAAiBvoG,GAAKF,EAAEmG,IAAIxG,EAAGD,KACzFQ,EAAEmF,QAAS1F,IACd6D,KAAKy5G,kBAAkBlQ,QAAQptG,GAAI6D,KAAKq5G,mBAAmBp6G,KAAK9C,KAC7DK,EAAEqF,QAAQ,CAACrF,EAAGE,KACjB,IAAI6B,EAAI7B,IAAMP,EAAEstC,GAAIxsC,EAAI+C,KAAK25G,SAASxM,kBAAkBhG,gBAAgB3qG,EAAG,CAAE0rG,eAAgB3pG,EAAI06G,GAAI/8G,EAAE4rG,YACvG9nG,KAAKy5G,kBAAkBlQ,QAAQtsG,GAAI+C,KAAKq5G,mBAAmBp6G,KAAKhC,KAC7DT,EAAEqF,QAAS1F,IACd,IAAM0wG,UAAWrwG,GAAM8uF,GAAGnvF,EAAG6D,KAAK2G,MAAM+9F,UAAWxoG,GACnD,GAAIM,EAAEC,OAAS,EAAG,CACjB,IAAIN,EArbR,SAAYA,EAAGD,GACd,IAAIM,EAAIL,EAAEisG,YAAY,EAAG,GACzB,IAAA,IAAS1rG,KAAKR,EAAGC,EAAE8xG,WAAWzxG,EAAG,CAChCowG,SAAUlwG,EAAEkwG,SACZvhD,KAAM3uD,EAAE2uD,KACRmB,OAAQ9vD,EAAE8vD,OACV8C,YAAa5yD,EAAE4yD,cAEhB,OAAO9yD,CACR,CA4aY++G,CAAGv7G,KAAKw5G,eAAgBh9G,GAChCwD,KAAKy5G,kBAAkBlQ,QAAQptG,GAAI6D,KAAKq5G,mBAAmBp6G,KAAK9C,EACjE,IACG6D,KAAKo6G,gBAAkBp6G,KAAKo6G,eAAex6C,YAAa5/D,KAAKy5G,kBAAkBz2C,WACpF,CACA,aAAA+3C,CAAc5+G,EAAGD,GAChB,IAAIM,EAAIwD,KAAKm5G,gBAAgBp4G,IAAI5E,GACjC,GAAIK,IAAMA,EAAEqhB,UAAW7d,KAAKm5G,gBAAgBv2G,OAAOzG,SAAW,IAAND,EAAc,CACrE,IAAIM,EAAIwD,KAAK2G,MAAM+9F,UAAUU,QAAQjpG,GACrC,GAAIK,GAAKA,EAAE8iC,OAASt/B,KAAK2G,MAAMo+F,aAAevoG,EAAEsgF,IAAM98E,KAAK2G,MAAMs+F,cAAe,CAC/E,IAAIvoG,EAAIk5G,GAAGp5G,EAAGN,EAAG8D,KAAK2G,MAAMg+F,UAAWpmG,EAAIw4G,GAAE/2G,KAAKw5G,eAAgB98G,GAClEsD,KAAK05G,iBAAiBnQ,QAAQhrG,GAAIyB,KAAKm5G,gBAAgBx2G,IAAIxG,EAAGoC,EAC/D,CACD,CACAyB,KAAK05G,iBAAiB12C,WACvB,CACA,cAAA43C,GACC,IAAA,IAASz+G,KAAK6D,KAAKm5G,gBAAgBz1F,SAAUvnB,EAAE0hB,UAC/C7d,KAAKm5G,gBAAgB7wD,QACrB,IAAA,IAAUnsD,EAAGD,KAAM8D,KAAK2G,MAAM69F,WAAY,CACzC,GAAItoG,EAAEojC,OAASt/B,KAAK2G,MAAMo+F,aAAe7oG,EAAE4gF,IAAM98E,KAAK2G,MAAMs+F,cAAe,SAC3E,IAAIzoG,EAAIwD,KAAK2G,MAAM+9F,UAAUU,QAAQjpG,GACrC,IAAKK,EAAG,SACR,IAAIE,EAAIk5G,GAAGp5G,EAAGN,EAAEgkD,MAAOlgD,KAAK2G,MAAMg+F,UAAWpmG,EAAIw4G,GAAE/2G,KAAKw5G,eAAgB98G,GACxEsD,KAAK05G,iBAAiBnQ,QAAQhrG,GAAIyB,KAAKm5G,gBAAgBx2G,IAAIxG,EAAGoC,EAC/D,CACAyB,KAAK05G,iBAAiB12C,WACvB,CACA,SAAAg4C,GACCh7G,KAAKw7G,kBACL,IAAMzW,YAAa5oG,EAAG8oG,cAAe/oG,GAAM8D,KAAK2G,MAChD,QAAY,IAANxK,QAAsB,IAAND,EAAe,CACpC,IAAA,IAASM,KAAKwD,KAAK2G,MAAM89F,MAAO,CAC/B,IAAI/nG,EAAIy5G,GAAGn2G,KAAK2G,MAAM+9F,UAAW1kG,KAAK2G,MAAMg+F,SAAUnoG,EAAE4pG,UAAW5pG,EAAE0jD,MAAO/jD,EAAGD,GAAIqC,EAAI04G,GAAGj3G,KAAKw5G,eAAgB98G,GAC/GsD,KAAK05G,iBAAiBnQ,QAAQhrG,GAAIyB,KAAKo5G,WAAWn6G,KAAKV,EACxD,CACAyB,KAAK05G,iBAAiB12C,WACvB,CACD,CACA,kBAAAk3C,GACC,IAAA,IAAS/9G,KAAK6D,KAAKm5G,gBAAgBz1F,SAAUvnB,EAAE0hB,UAC/C7d,KAAKm5G,gBAAgB7wD,QAAStoD,KAAKw7G,iBACpC,CACA,eAAAA,GACC,IAAA,IAASr/G,KAAK6D,KAAKo5G,WAAYj9G,EAAE0hB,UACjC7d,KAAKo5G,WAAa,EACnB,GAID,SAASqC,GAAEt/G,GACV,OAAOA,EAAE2G,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,QACnH,CACA,SAAS44G,GAAEv/G,EAAGD,GACb,YAAa,IAANA,EAAe,GAAK,IAAIC,MAAkB,iBAALD,EAAgBu/G,GAAEv/G,GAAKA,IACpE,CACA,SAASsyG,GAAEryG,EAAGD,GACb,OAAQC,IAAW,IAAND,EAAgB,sBAAsBC,EAAEiC,KAAK,QAAlC,EACzB,CACA,IAAImwG,GAAI,MACP,WAAAjyG,CAAYH,EAAGD,GACd8D,KAAK4G,SAAW,GAAI5G,KAAKu9D,SAAU,EAAIv9D,KAAKuJ,EAAIpN,EAAG6D,KAAKyJ,EAAIvN,CAC7D,CACA,UAAAm3G,CAAWl3G,GACV6D,KAAKu9D,QAAUphE,CAChB,CACA,SAAAkjB,GACC,OAAOrf,KAAKu9D,OACb,CACA,OAAA1/C,GACC7d,KAAK4G,SAASnK,OAAS,CACxB,CACA,WAAA2hE,CAAYjiE,EAAGD,GAAI,CACnB,WAAAmiE,GACC,MAAO,CACN90D,EAAGvJ,KAAKuJ,EACRE,EAAGzJ,KAAKyJ,EAEV,CACA,SAAAm2D,GAAa,CACb,KAAA+7C,GACC,OAAQ37G,KAAKu9D,SAAoC,IAAzBv9D,KAAK4G,SAASnK,OAA+B,IAAXuD,KAAKuJ,GAAsB,IAAXvJ,KAAKyJ,EAAUzJ,KAAK4G,SAASxI,KAAK,MAAQ,2BAA2B4B,KAAKuJ,KAAKvJ,KAAKyJ,SAASzJ,KAAK4G,SAASxI,KAAK,cAArI,EACtD,GACE65G,GAAI,MACN,WAAA37G,GACC0D,KAAK47G,OAAS,EACf,CACA,OAAArS,CAAQptG,GACPA,aAAaoyG,IAAKvuG,KAAK47G,OAAO38G,KAAK9C,EACpC,CACA,eAAAypE,GACC5lE,KAAK47G,OAAS,EACf,CACA,SAAA54C,GAAa,CACb,KAAA24C,GACC,OAAO37G,KAAK47G,OAAOt4G,OAAQnH,GAAMA,EAAEkjB,aAAaxc,IAAK1G,GAAMA,EAAEw/G,SAASr4G,OAAQnH,GAAMA,EAAEM,OAAS,GAAG2B,KAAK,KACxG,GACEy9G,GAAK,MACP,WAAAzT,CAAYjsG,EAAGD,GACd,OAAO,IAAIqyG,GAAEpyG,EAAGD,EACjB,CACA,OAAAqsG,CAAQpsG,EAAGD,GACV,KAAMC,aAAaoyG,IAAI,OACvB,IAAI/xG,EAAIN,EAAEmvD,MAAQ,OAAQ3uD,EAAI,QAAQg/G,GAAE,IAAKx/G,EAAEqN,KAAKmyG,GAAE,IAAKx/G,EAAEuN,KAAKiyG,GAAE,QAASx/G,EAAEgN,SAASwyG,GAAE,SAAUx/G,EAAEkN,UAAUsyG,GAAE,OAAQl/G,KAAKk/G,GAAE,SAAUx/G,EAAEswD,UAAUkvD,GAAE,eAAgBx/G,EAAEozD,eAAepzD,EAAEipD,aAAe,GAAGu2D,GAAE,KAAMx/G,EAAEipD,gBAAgBu2D,GAAE,KAAMx/G,EAAEipD,gBAAkB,KAAKqpD,GAAEtyG,EAAE+yD,KAAM/yD,EAAEkzD,iBACrRjzD,EAAEyK,SAAS3H,KAAKvC,EACjB,CACA,SAAA4rG,CAAUnsG,EAAGD,GACZ,KAAMC,aAAaoyG,IAAI,OACvB,IAAI/xG,EAAIN,EAAEmvD,MAAQ,OAAQ3uD,EAAI,UAAUg/G,GAAE,KAAMx/G,EAAEkjF,MAAMs8B,GAAE,KAAMx/G,EAAEmjF,MAAMq8B,GAAE,IAAKx/G,EAAE8pD,UAAU01D,GAAE,OAAQl/G,KAAKk/G,GAAE,SAAUx/G,EAAEswD,UAAUkvD,GAAE,eAAgBx/G,EAAEozD,eAAek/C,GAAEtyG,EAAE+yD,KAAM/yD,EAAEkzD,iBACjLjzD,EAAEyK,SAAS3H,KAAKvC,EACjB,CACA,OAAAksG,CAAQzsG,EAAGD,GACV,KAAMC,aAAaoyG,IAAI,OACvB,IAAI/xG,EAAIN,EAAE4pD,OAAQppD,EAAI,GACtB,IAAA,IAASP,EAAI,EAAGA,EAAIK,EAAEC,OAAQN,GAAK,EAAGO,EAAEuC,KAAK,GAAGzC,EAAEL,MAAMK,EAAEL,EAAI,MAC9D,IAAIoC,EAAI,qBAAqB7B,EAAE0B,KAAK,QAAQs9G,GAAE,SAAUx/G,EAAEswD,UAAUkvD,GAAE,eAAgBx/G,EAAEozD,eAAek/C,GAAEtyG,EAAE+yD,QAAQysD,GAAE,iBAAkBx/G,EAAEwsD,WAAWgzD,GAAE,kBAAmBx/G,EAAE8sD,YAAY0yD,GAAE,UAAWx/G,EAAEmnG,uBACtMlnG,EAAEyK,SAAS3H,KAAKV,EACjB,CACA,UAAA0vG,CAAW9xG,EAAGD,GACb,KAAMC,aAAaoyG,IAAI,OACvB,IAAI/xG,EAAIN,EAAE0wG,SAAUlwG,EAAI,GACxB,IAAA,IAASP,EAAI,EAAGA,EAAIK,EAAEC,OAAQN,GAAK,EAAGO,EAAEuC,KAAK,GAAGzC,EAAEL,MAAMK,EAAEL,EAAI,MAC9D,IAAIoC,EAAI,oBAAoB7B,EAAE0B,KAAK,QAAQs9G,GAAE,OAAQx/G,EAAEmvD,QAAQqwD,GAAE,SAAUx/G,EAAEswD,UAAUkvD,GAAE,eAAgBx/G,EAAEozD,iBAC3GnzD,EAAEyK,SAAS3H,KAAKV,EACjB,CACA,OAAAuqG,CAAQ3sG,EAAGD,GACV,KAAMC,aAAaoyG,IAAI,OACvB,IAAI/xG,EAAIN,EAAEqN,EAAG7M,EAAIR,EAAEuN,EAAGlL,EAAI,QAAStB,EAAI,YAC3B,IAAZf,EAAEgN,QAAiC,WAAZhN,EAAE8sF,OAAsBxsF,EAAIN,EAAEqN,EAAIrN,EAAEgN,MAAQ,EAAG3K,EAAI,UAAwB,UAAZrC,EAAE8sF,QAAsBxsF,EAAIN,EAAEqN,EAAIrN,EAAEgN,MAAO3K,EAAI,aAAsB,IAAbrC,EAAEkN,QAAyC,WAApBlN,EAAE4sF,mBAAiD,IAApB5sF,EAAE8qG,eAA4BtqG,EAAIR,EAAEuN,EAAIvN,EAAEkN,OAAS,EAAGnM,EAAI,WAAaP,EAAIR,EAAEuN,EAAIvN,EAAEkN,OAAS,EAAIlN,EAAE8qG,cAAgB9qG,EAAEysF,SAAWzsF,EAAEijE,UAAYziE,GAAKR,EAAEijE,SACxV,IAAIhiE,EAAI,QAAQu+G,GAAE,IAAKl/G,KAAKk/G,GAAE,IAAKh/G,KAAKg/G,GAAE,YAAax/G,EAAEysF,YAAYzsF,EAAEswF,WAAakvB,GAAE,cAAex/G,EAAEswF,YAAc,KAAqB,SAAhBtwF,EAAEowF,UAAuB,sBAA0B,KAAKovB,GAAE,OAAQx/G,EAAEmvD,sBAAsB9sD,yBAAyBtB,MAAMw+G,GAAEv/G,EAAE+lC,eACvP9lC,EAAEyK,SAAS3H,KAAK9B,EACjB,CACA,QAAAuxG,CAASvyG,EAAGD,GACX,KAAMC,aAAaoyG,IAAI,OACvB,IAAI/xG,EAAI,SAASk/G,GAAE,IAAKx/G,EAAEqN,KAAKmyG,GAAE,IAAKx/G,EAAEuN,KAAKiyG,GAAE,QAASx/G,EAAEgN,SAASwyG,GAAE,SAAUx/G,EAAEkN,iBAAiBqyG,GAAEv/G,EAAE8iD,UACtG7iD,EAAEyK,SAAS3H,KAAKzC,EACjB,GAOE,IAACs/G,GAAK,MACR,WAAAx/G,CAAYH,EAAGD,GACd8D,KAAK2G,MAAQxK,EAAG6D,KAAK+7G,sBAAwB7/G,CAC9C,CACA,SAAA8/G,CAAU7/G,GACT,IAAM4oG,YAAa7oG,EAAG+oG,cAAezoG,EAAGwoG,oBAAqBtoG,GAAMsD,KAAK2G,MACxE,QAAU,IAANzK,QAAsB,IAANM,IAAiBE,EAAG,OACxC,IAAI6B,EAAI7B,EAAGO,EAAIsB,EAAEumG,SAAStoG,GAC1B,IAAKS,EAAG,OACR,IAAIE,EAAI6C,KAAK2G,MAAMg+F,SAAUnkG,EAAIrE,GAAGmQ,SAAW,EAAG1N,EAAIoB,KAAK2G,MAAMggG,oBAAoBpoG,EAAGtB,EAAGd,GAAGmpG,OAAQ9kG,GAAI+gD,EAAI,IAAIs6D,GAAMp9G,EAAIuB,KAAK+7G,sBAAwB/7G,KAAK+7G,sBAAsBx6D,GAAKA,EAAGhP,EAAI,IAAI0lE,GAAKr4G,EAAI,IAAIq4G,GAAK53E,EAAI,IAAI43E,GAAK96F,EAAI,IAAI4vF,GAAG/sG,KAAK2G,MAAM+9F,UAAWvnG,EAAGsB,EAAG,CACzQuuG,UAAWz6D,EACX06D,UAAWrtG,EACXstG,UAAW7sE,IACRihB,EAAI,CACPsZ,KAAMh8D,EAAE2K,EACRwxD,KAAMn8D,EAAE2K,EAAI3K,EAAEi9F,EACd/gC,KAAMl8D,EAAE6K,EACRuxD,KAAMp8D,EAAE6K,EAAI7K,EAAE0iD,GAEfnkC,EAAEmwF,WAAW/uG,EAAGtB,EAAGT,EAAG8kD,GACtB,IAAI3hD,EAAI,GACRA,EAAEV,KAAK,oDAAoDL,EAAE2K,KAAK3K,EAAE6K,KAAK7K,EAAEi9F,KAAKj9F,EAAE0iD,OAAQ3hD,EAAEV,KAAK,YAAYL,EAAE2K,SAAS3K,EAAE6K,aAAa7K,EAAEi9F,cAAcj9F,EAAE0iD,YAxB3J,SAAYnlD,GACX,OAAOA,EAAE2G,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,QACnH,CAsBuKm5G,CAAG9+G,EAAE0qG,uBAC1K,IAAIzmD,EAAI7O,EAAEopE,QACVv6D,GAAKzhD,EAAEV,KAAKmiD,GACZ,IAAIrmC,EAAInb,EAAE+7G,QACV5gG,GAAKpb,EAAEV,KAAK8b,GACZ,IAAItR,EAAI42B,EAAEs7E,QACVlyG,GAAK9J,EAAEV,KAAKwK,GACZ,IAAIyM,EAAI/Z,GAAG+/G,SACX,GAAIhmG,EAAG,CACN,GAAIA,EAAEuuF,MAAO,IAAA,IAAStoG,KAAK+Z,EAAEuuF,MAAO,CACnC,IAAI/nG,EAAIu6G,GAAGx4G,EAAG03G,GAAGn2G,KAAK2G,MAAM+9F,UAAWvnG,EAAGhB,EAAEiqG,UAAWjqG,EAAE+jD,MAAOhkD,EAAGM,IAAIm/G,QACvEj/G,GAAKiD,EAAEV,KAAKvC,EACb,CACA,GAAIwZ,EAAEsuF,WAAY,IAAA,IAASroG,KAAK+Z,EAAEsuF,WAAY,CAC7C,IAAItoG,EAAI8D,KAAK2G,MAAM+9F,UAAUU,QAAQjpG,EAAEmpG,QACvC,IAAKppG,EAAG,SACR,IAAIM,EAAIu6G,GAAEt4G,EAAGm3G,GAAG15G,EAAGC,EAAE+jD,MAAO/iD,IAAIw+G,QAChCn/G,GAAKmD,EAAEV,KAAKzC,EACb,CACA,GAAI0Z,EAAE9O,SAAU,CACf,GAAIjK,EAAE05G,aAAatwG,QAAS,CAC3B,IAAIpK,EAAI6D,KAAK2G,MAAM+9F,UAAUU,QAAQlvF,EAAE9O,SAASk+F,QAChD,GAAInpG,EAAG,CACN,IAAID,EAAIi7G,GAAG14G,EAAGk4G,GAAGx6G,EAAEoN,EAAGpN,EAAEsN,EAAG63C,EAAGnkD,IAAIw+G,QAClCz/G,GAAKyD,EAAEV,KAAK/C,EACb,CACD,CACA,IAAIC,EAAI6D,KAAK2G,MAAM+9F,UAAUU,QAAQlvF,EAAE9O,SAASk+F,QAChD,GAAInpG,EAAG,CACN,IAAID,EAAI86G,GAAGv4G,EAAGo3G,GAAG15G,EAAGgB,IAAIw+G,QACxBz/G,GAAKyD,EAAEV,KAAK/C,EACb,CACD,CACD,CACA,OAAOyD,EAAEV,KAAK,UAAWU,EAAEvB,KAAK,KACjC,GACE+9G,GAAK,MACP,YAAIxX,GACH,OAAO3kG,KAAK2G,MAAMg+F,QACnB,CACA,WAAAroG,CAAYH,EAAGD,EAAGM,EAAGE,EAAG6B,EAAGtB,GAC1B+C,KAAK2G,MAAQ,IAAI8C,GAAEtN,EAAGD,GApzFhB,CACNisG,SAHe,GAIf9d,UAJuB,KAKvByd,UALiC,qBAMjCD,gBAAiB,UACjBiT,gBAAgB,EAChBO,sBAAsB,EACtBlI,gBAAgB,EAChBC,YAAa,UACbF,cAAe,KACf5E,gBAAiB,QACjBQ,mBAAmB,EACnBzG,UAAW,YACXyN,aAAc,CACbzO,YAAa,UACb4O,YAAa,EACb7O,UAAW,UACX8O,UAAW,EACX5mD,YAAa,GACbymD,WAAY,IACZ9mD,KAAM,CAAC,IAAK,KACZG,aAAa,EACb4mD,gBAAgB,GAEjB7M,aAAa,EACbC,SAAU,EACVC,UAAW,4BACXC,cAAe,IACf2J,aAAc,KACdlL,SAAS,EACTH,WAAW,EACXD,aAAa,EACba,QAAQ,EACR5B,UAAU,EACVpa,WAAY,aACZga,kBAAkB,EAClBqQ,aAAc,CACbtwG,SAAS,EACT25C,MAAO,UACP8F,OAAQ,GACR4wD,UAAW,MA4wFqB52G,KAAKo8G,yBAA2Bn/G,EAAG+C,KAAKknG,QAAUxqG,EAAIA,EAAEsD,KAAK2G,OAAS,IAAIuyG,GAAGl5G,KAAK2G,MAAOnK,EAAG+B,EAC9H,CACA,OAAAsf,GACC7d,KAAKknG,QAAQrpF,SACd,CACA,QAAAw+F,CAASlgH,EAAGD,GACX8D,KAAK2G,MAAMi+F,QAAQzoG,EAAGD,EACvB,CACA,cAAAogH,GACC,OAAOt8G,KAAK2G,MAAMq+F,mBACnB,CACA,WAAA5mC,CAAYjiE,EAAGD,GAAI,GAClB8D,KAAK2G,MAAMy3D,YAAYjiE,EAAGD,EAC3B,CACA,oBAAAspG,CAAqBrpG,GACpB6D,KAAK2G,MAAM6+F,qBAAqBrpG,EACjC,CACA,aAAAupG,GACC1lG,KAAK2G,MAAM++F,eACZ,CACA,QAAA6W,CAASpgH,EAAGD,GACX8D,KAAK2G,MAAMg/F,cAAcxpG,EAAGD,EAC7B,CACA,eAAAsgH,CAAgBrgH,EAAGD,GAClB8D,KAAK2G,MAAMo/F,aAAa5pG,EAAGD,EAC5B,CACA,eAAA8pG,CAAgB7pG,GACf6D,KAAK2G,MAAMq/F,gBAAgB7pG,EAC5B,CACA,YAAA8pG,CAAa9pG,GACZ,OAAO6D,KAAK2G,MAAMs/F,aAAa9pG,EAChC,CACA,eAAA+pG,GACClmG,KAAK2G,MAAMu/F,iBACZ,CACA,UAAAuW,CAAWtgH,EAAGD,GACb8D,KAAK2G,MAAMw/F,QAAQhqG,EAAGD,EACvB,CACA,UAAAmqG,GACCrmG,KAAK2G,MAAM0/F,YACZ,CACA,yBAAAqW,GACC18G,KAAK2G,MAAM8+F,iBACZ,CACA,iBAAAwU,CAAkB99G,GACjB6D,KAAKknG,QAAQ+S,kBAAkB99G,EAChC,CACA,gBAAAm+G,GACCt6G,KAAKknG,QAAQoT,kBACd,CACA,OAAA1xE,GACC5oC,KAAKknG,QAAQoT,mBAAoBt6G,KAAKknG,QAAQt+D,SAC/C,CACA,SAAAozE,CAAU7/G,GACT,IAAID,EAAI,IACJC,EACH+/G,SAAUl8G,KAAK2G,MAAM2/F,mBAAmBnqG,GAAG+/G,WAE5C,OAAO,IAAIJ,GAAG97G,KAAK2G,MAAO3G,KAAKo8G,0BAA0BJ,UAAU9/G,EACpE,CACA,SAAAygH,CAAUxgH,GACT,OAAO6D,KAAKknG,QAAQqT,aAAap+G,IAAIk1D,UAAU,YAChD,CACA,aAAAurD,CAAczgH,GACb,IAAID,EAAI8D,KAAKknG,QAAQqT,aAAap+G,GAClC,GAAID,EAAG,OAAO,IAAI8G,QAAS7G,IAC1BD,EAAEgmE,OAAQhmE,IACTA,GAAKC,EAAED,IACL,cAEL,CACA,cAAA2gH,CAAe1gH,GACd,OAAO6D,KAAKknG,QAAQnlC,SAAS5lE,EAC9B,CACA,EAAAopB,CAAGppB,EAAGD,GACL8D,KAAKknG,QAAQ3jF,OAAOgC,GAAGppB,EAAGD,EAC3B,CACA,GAAA2oB,CAAI1oB,EAAGD,GACN8D,KAAKknG,QAAQ3jF,OAAOsB,IAAI1oB,EAAGD,EAC5B,CACA,OAAAszG,CAAQrzG,GACP,OAAO6D,KAAKknG,QAAQ3iG,SAASirG,QAAQrzG,EACtC,CACA,YAAAuzG,CAAavzG,GACZ,OAAO6D,KAAKknG,QAAQ3iG,SAASmrG,aAAavzG,EAC3C,CACA,OAAA2gH,GACC,OAAO98G,KAAKknG,QAAQ3iG,SAAS0qG,IAC9B,CACA,iBAAAW,GACC,OAAO5vG,KAAKknG,QAAQ3iG,SAASqrG,mBAC9B,CACA,aAAAmN,GACC,IAAK/8G,KAAK2G,MAAMq+F,8BAAuBhlG,KAAK2G,MAAMs+F,cAA0B,OAAO,KACnF,IAAI9oG,EAAI6D,KAAK2G,MAAMq+F,oBAAoBF,SAAS9kG,KAAK2G,MAAMs+F,eAC3D,IAAK9oG,EAAG,OAAO,KACf,IAAID,EAAI8D,KAAK2G,MAAM4/F,mBAAmBvmG,KAAK2G,MAAMq+F,oBAAqB7oG,GAAIK,EAAIwD,KAAK2G,MAAMg+F,SAASiC,UAAY5mG,KAAK2G,MAAMq+F,oBAAoB6B,cAC7I,MAAO,CACNjsC,KAAMp+D,EAAIN,EAAE0+D,KAAO,EAAI1+D,EAAE0+D,KACzBG,KAAM7+D,EAAE6+D,KACRD,KAAMt+D,EAAIN,EAAE4+D,KAAO,EAAI5+D,EAAE4+D,KACzBE,KAAM9+D,EAAE8+D,KAEV,CACA,OAAAgiD,GACC,IAAI7gH,EAAI6D,KAAK+8G,gBACb5gH,GAAK6D,KAAKknG,QAAQ3iG,SAAS0rG,eAAe9zG,EAAEy+D,KAAMz+D,EAAE4+D,KAAM5+D,EAAE2+D,KAAM3+D,EAAE6+D,KACrE,CACA,kBAAIm0C,GACH,OAAOnvG,KAAKknG,QAAQ3iG,SAAS4qG,cAC9B,CACA,kBAAIA,CAAehzG,GAClB6D,KAAKknG,QAAQ3iG,SAAS4qG,eAAiBhzG,CACxC,CACA,WAAI+yG,GACH,OAAOlvG,KAAKknG,QAAQ3iG,SAAS2qG,OAC9B,CACA,WAAIA,CAAQ/yG,GACX6D,KAAKknG,QAAQ3iG,SAAS2qG,QAAU/yG,CACjC,CACA,cAAA8gH,CAAe9gH,GACd6D,KAAK2G,MAAMg+F,SAASyO,YAAcj3G,EAAG6D,KAAK2G,MAAMg+F,SAASwO,eAAuB,SAANh3G,EAAc6D,KAAKknG,QAAQ0S,QAAQ7G,iBAC9G,CACA,cAAAmK,GACC,OAAOl9G,KAAK2G,MAAMg+F,SAASyO,WAC5B,GA8GD,SAAS+J,GAAEhhH,GACV,IAAID,EAAQ,EAAJC,GAAS,EACjB,MAAO,KAAOD,EAAQ,QAAJA,EAAc,WAAa,GAAIA,IAAM,GAAK,WAC7D,CACA,SAAS6kB,MAAK5kB,GACb,IAAID,EAAI,WACR,IAAA,IAASM,KAAKL,EAAGD,GAAqB,YAAX,IAAJM,EAAU,IAAmBN,GAAK,IAAMA,GAAK,GACpE,OAAOA,CACR,CACA,SAASkhH,GAAGjhH,EAAGD,EAAGM,EAAGE,EAAG6B,EAAGtB,GAC1B,IAAIE,EAAIX,EAAIL,EAAGqE,EAAI9D,EAAIR,EAAG0C,EAAImJ,KAAKqrC,KAAKj2C,EAAIA,EAAIqD,EAAIA,GACpD,GAAI5B,EAAI,KAAM,MAAO,CACpBzC,EACAD,EACAM,EACAE,GAED,IAAI6kD,GAAK/gD,EAAI5B,EAAGH,EAAItB,EAAIyB,EAAG2zC,EAAIxqC,KAAKD,IAAI,EAAGC,KAAKC,IAAI,EAAGD,KAAK8xD,KAAKj7D,EAAI,OAAQgB,EAAI,CAACzD,EAAIolD,GAAKtkD,IAAM,IAAMsB,EAAI,GAAIrC,EAAIuC,GAAKxB,IAAM,IAAMsB,EAAI,IACxI,IAAA,IAAS/B,EAAI,EAAGA,EAAI+1C,EAAG/1C,IAAK,CAC3B,IAAIE,EAAIF,EAAI+1C,EAAG3zC,EAAIzC,EAAIgB,EAAIT,EAAG2jC,EAAInkC,EAAIsE,EAAI9D,EAAGygB,EAAiB,GAAZlgB,IAAM,IAAUsB,EAClEqB,EAAEX,KAAKL,EAAI2iD,EAAIpkC,EAAGkjB,EAAI5hC,EAAI0e,EAC3B,CACA,OAAOvd,EAAEX,KAAKzC,EAAI+kD,GAAKtkD,IAAM,IAAMsB,EAAI,GAAI7B,EAAI+B,GAAKxB,IAAM,IAAMsB,EAAI,IAAKqB,CAC1E,CAWA,SAASy9G,GAAGlhH,EAAGD,EAAGM,EAAGE,EAAG6B,EAAGtB,GAC1B,IAAIE,EAAI,CACPhB,EACAD,EACAC,EAAIK,EACJN,EACAC,EAAIK,EACJN,EAAIQ,EACJP,EACAD,EAAIQ,GACF8D,EAAI,GACP,IAAA,IAASrE,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC3B,IAAoCO,GAAKP,EAAI,GAAK,EAAmCsC,EAAI2+G,GAAjFjgH,EAAM,EAAJhB,GAAYgB,EAAM,EAAJhB,EAAQ,GAAyBgB,EAAM,EAAJT,GAAYS,EAAM,EAAJT,EAAQ,GAAuB6B,EAAGtB,GAC3G,IAAA,IAASd,EAAI,EAAGA,EAAIsC,EAAEhC,OAAS,EAAGN,IAAKqE,EAAEvB,KAAKR,EAAEtC,GACjD,CACA,OAAOqE,CACR,CAmBA,IAAI6gE,GAAK,MACR,WAAA/kE,CAAYH,EAAGD,EAAGM,GACjBwD,KAAKs9G,MAAQnhH,EAAG6D,KAAKu9G,OAASrhH,EAAG8D,KAAKw9G,OAAShhH,CAChD,CACA,WAAA4rG,CAAYjsG,EAAGD,GACd,OAAO8D,KAAKs9G,MAAMlV,YAAYjsG,EAAGD,EAClC,CACA,oBAAAuhH,CAAqBthH,GACpB,IAAKA,EAAG,OAAO6D,KAAKw9G,OACpB,IAAIthH,EAAIC,EAAEoiB,MAAM,+BAChB,IAAKriB,EAAG,OAAO8D,KAAKw9G,OACpB,IAAIhhH,EAAIulB,WAAW7lB,EAAE,IACrB,OAAOM,GAAK,EAAIwD,KAAKw9G,OAAS,QAAQtsF,SAASlxB,KAAKw9G,OAAOn+G,MAAM,EAAG,GAAI,QAAQ6xB,SAASlxB,KAAKw9G,OAAOn+G,MAAM,EAAG,GAAI,QAAQ6xB,SAASlxB,KAAKw9G,OAAOn+G,MAAM,EAAG,GAAI,QAAQ7C,IACrK,CACA,OAAA+rG,CAAQpsG,EAAGD,GACV,IAAIM,EAAIwD,KAAKu9G,OAAQ7gH,EAAIsD,KAAKw9G,OAAQj/G,EAAI4+G,GAAEp8F,GAAE7kB,EAAEqN,EAAGrN,EAAEuN,EAAGvN,EAAEgN,MAAOhN,EAAEkN,SAAUnM,EAAIf,EAAEmvD,KAAO,eAAY,EAAQluD,EAAIjB,EAAEswD,OAAS9vD,OAAI,EACjI,GAAIR,EAAEipD,cAAgBjpD,EAAEipD,aAAe,EAAG,CACzC,GAAIloD,GAAK+C,KAAKs9G,MAAM/U,QAAQpsG,EAAG,IAC3BD,EACHmvD,KAAMpuD,EACNuvD,YAAQ,EACR8C,YAAa,IACVnyD,GAAKjB,EAAEozD,YAAa,CACvB,IAAI5yD,EAAI2gH,GAAGnhH,EAAEqN,EAAGrN,EAAEuN,EAAGvN,EAAEgN,MAAOhN,EAAEkN,OAAQ5M,EAAG+B,GAC3CyB,KAAKs9G,MAAMrP,WAAW9xG,EAAG,CACxBywG,SAAUlwG,EACV8vD,OAAQrvD,EACRmyD,YAAapzD,EAAEozD,aAEjB,CACA,MACD,CACA,IAAI9uD,EAAI68G,GAAGnhH,EAAEqN,EAAGrN,EAAEuN,EAAGvN,EAAEgN,MAAOhN,EAAEkN,OAAQ5M,EAAG+B,GAC3CyB,KAAKs9G,MAAMrP,WAAW9xG,EAAG,CACxBywG,SAAUpsG,EACV6qD,KAAMpuD,EACNuvD,OAAQrvD,EACRmyD,YAAapzD,EAAEozD,aAAe,GAEhC,CACA,SAAAg5C,CAAUnsG,EAAGD,GACZ,IAAIM,EAAIwD,KAAKu9G,OAAQ7gH,EAAIsD,KAAKw9G,OAAQj/G,EAAI4+G,GAAEp8F,GAAE7kB,EAAEkjF,GAAIljF,EAAEmjF,GAAInjF,EAAE8pD,SAAU/oD,EA3DxE,SAAYd,EAAGD,EAAGM,EAAGE,EAAG6B,GACvB,IAAItB,EAAI,GACR,IAAA,IAASE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC5B,IAAIqD,EAAIrD,EAAI,GAAK4K,KAAKomC,GAAK,EAAGvvC,EAAIpC,EAAiB,GAAZ+B,IAAM,IAAU7B,EACvDO,EAAEgC,KAAK9C,EAAI4L,KAAK4pC,IAAInxC,GAAK5B,EAAG1C,EAAI6L,KAAK6pC,IAAIpxC,GAAK5B,EAC/C,CACA,OAAO3B,CACR,CAoD4EygH,CAAGxhH,EAAEkjF,GAAIljF,EAAEmjF,GAAInjF,EAAE8pD,OAAQxpD,EAAG+B,GACtGyB,KAAKs9G,MAAMrP,WAAW9xG,EAAG,CACxBywG,SAAU3vG,EACVouD,KAAMnvD,EAAEmvD,KAAO,eAAY,EAC3BmB,OAAQtwD,EAAEswD,OAAS9vD,OAAI,EACvB4yD,YAAapzD,EAAEozD,aAAe,GAEhC,CACA,OAAAs5C,CAAQzsG,EAAGD,GACV,IAAIM,EAAIwD,KAAKu9G,OAAQ7gH,EAAIygH,GAAEp8F,MAAK7kB,EAAE4pD,OAAOzmD,MAAM,EAAG,KAAMd,EA/F1D,SAAYpC,EAAGD,EAAGM,GACjB,GAAIL,EAAEM,OAAS,EAAG,OAAON,EACzB,IAAIO,EAAI,GACR,IAAA,IAAS6B,EAAI,EAAGA,EAAIpC,EAAEM,OAAS,EAAG8B,GAAK,EAAG,CACzC,IAAItB,EAAImgH,GAAGjhH,EAAEoC,GAAIpC,EAAEoC,EAAI,GAAIpC,EAAEoC,EAAI,GAAIpC,EAAEoC,EAAI,GAAIrC,EAAGM,GAClD,GAAU,IAAN+B,EAAS7B,EAAEuC,QAAQhC,QAClB,IAAA,IAASd,EAAI,EAAGA,EAAIc,EAAER,OAAQN,IAAKO,EAAEuC,KAAKhC,EAAEd,GAClD,CACA,OAAOO,CACR,CAsF8DihH,CAAGzhH,EAAE4pD,OAAQtpD,EAAGE,GAAIO,EAAI+C,KAAKy9G,qBAAqBvhH,EAAEswD,QAChHxsD,KAAKs9G,MAAM1U,QAAQzsG,EAAG,IAClBD,EACH4pD,OAAQvnD,EACRiuD,OAAQvvD,GAEV,CACA,UAAAgxG,CAAW9xG,EAAGD,GACb,IAAIM,EAAIwD,KAAKu9G,OAAQ7gH,EAAIsD,KAAKw9G,OAAQj/G,EAAI4+G,GAAEp8F,MAAK7kB,EAAE0wG,SAASvtG,MAAM,EAAG,KAAMpC,EApE7E,SAAYd,EAAGD,EAAGM,GACjB,IAAIE,EAAIP,EAAEM,OAAS,EACnB,GAAIC,EAAI,EAAG,OAAOP,EAClB,IAAIoC,EAAI,GACR,IAAA,IAAStB,EAAI,EAAGA,EAAIP,EAAGO,IAAK,CAC3B,IAAoC2B,GAAK3B,EAAI,GAAKP,EAAmC61C,EAAI6qE,GAAjFjhH,EAAM,EAAJc,GAAYd,EAAM,EAAJc,EAAQ,GAAyBd,EAAM,EAAJyC,GAAYzC,EAAM,EAAJyC,EAAQ,GAAuB1C,EAAGM,GAC3G,IAAA,IAASL,EAAI,EAAGA,EAAIo2C,EAAE91C,OAAS,EAAGN,IAAKoC,EAAEU,KAAKszC,EAAEp2C,GACjD,CACA,OAAOoC,CACR,CA2DiFwgE,CAAG7iE,EAAE0wG,SAAUpwG,EAAG+B,GACjGyB,KAAKs9G,MAAMrP,WAAW9xG,EAAG,IACrBD,EACH0wG,SAAU3vG,EACVouD,KAAMnvD,EAAEmvD,KAAO3uD,OAAI,EACnB8vD,OAAQtwD,EAAEswD,OAAS9vD,OAAI,GAEzB,CACA,OAAAosG,CAAQ3sG,EAAGD,GACV8D,KAAKs9G,MAAMxU,QAAQ3sG,EAAG,IAClBD,EACHmvD,KAAMrrD,KAAKw9G,QAEb,CACA,QAAA9O,CAASvyG,EAAGD,GACX8D,KAAKs9G,MAAM5O,SAASvyG,EAAGD,EACxB,GACE0hH,GAAK,CAMPC,SAAU,iBACVtW,YAAa,CACZ,IACA,IACA,MAIF,SAASuW,GAAG3hH,GACX,IAAID,EAAIC,EAAE,GAAK,IAAKK,EAAIL,EAAE,GAAK,IAAKO,EAAIP,EAAE,GAAK,IAC/C,OAAQ4L,KAAKD,IAAI5L,EAAGM,EAAGE,GAAKqL,KAAKC,IAAI9L,EAAGM,EAAGE,IAAM,CAClD,CACA,IAAIqhH,GAAK,MACR,WAAAzhH,CAAYH,EAAGD,GACd8D,KAAKq3G,MAAQ,CAAA,EAAIr3G,KAAKg+G,MAAQ,GAAIh+G,KAAKi+G,YAAc,CAAA,EAAIj+G,KAAKk+G,oBAAqB,EAAIl+G,KAAKm+G,OAAS,CAAA,EAAIhiH,EAAE0F,QAAS1F,IACnHA,EAAEk7G,MAAMx1G,QAAS1F,IAChBA,EAAEsN,GAAKtN,EAAEsN,EAAGzJ,KAAKq3G,MAAMl7G,EAAEstC,IAAMttC,IAEhC,IAAID,EAAIg1B,SAAS/0B,EAAE07G,QACnB73G,KAAKg+G,MAAM9hH,GAAK,IAAIs7G,GAAEr7G,GAAI6D,KAAKi+G,YAAY/hH,GAAKC,IAC7C6D,KAAKm+G,OAASjiH,EAAEyF,OAAO,CAACxF,EAAGD,KAAAA,IAC3BC,EACH,CAACD,EAAEkiH,OAAQ,CACV/9D,IAAKnkD,EAAEiiH,OACPN,SAAU,OAAO3hH,EAAEiiH,OAAO//G,KAAK,QAC/BmpG,YAAauW,GAAG5hH,EAAEiiH,QAAU,IAAM,CACjC,GACA,GACA,IACG,CACH,IACA,IACA,KAEDE,iBAAkBP,GAAG5hH,EAAEiiH,QAAU,IAAM,gBAAkB,sBAEvD,CAAA,EACL,CACA,OAAAtZ,CAAQ1oG,GACP,OAAO6D,KAAKg+G,MAAM7hH,EACnB,CACA,kBAAAmiH,CAAmBniH,GAClB,IAAID,EAAI8D,KAAKg+G,MAAM7hH,GACnB,GAAID,aAAaq8G,GAAG,OAAOr8G,CAC5B,CACA,QAAAqiH,GACC,OAAOzhH,OAAO4mB,OAAO1jB,KAAKg+G,MAC3B,CACA,QAAApQ,GACC,OAAO9wG,OAAO4mB,OAAO1jB,KAAKq3G,MAC3B,CACA,OAAAjS,CAAQjpG,GACP,OAAO6D,KAAKq3G,MAAMl7G,EACnB,CACA,kBAAAqiH,GACC,OAAOx+G,KAAKs4G,eAAiC,IAAI98F,IAAOxb,KAAKs4G,YAC9D,CACA,0BAAAmG,GACCz+G,KAAKs4G,cAAgBx7G,OAAO4pB,QAAQ1mB,KAAKi+G,aAAap8G,QAAQ,EAAE1F,EAAGD,MAClE,IAAIM,EAAI00B,SAAS/0B,EAAG,IACpB6D,KAAKg+G,MAAMxhH,GAAK,IAAI+7G,GAAEr8G,EAAG8D,KAAKs4G,eAEhC,CACA,uBAAAoG,CAAwBviH,GACvB,YAAa,IAANA,EAAe6D,KAAKw+G,qBAAuBx+G,KAAK2+G,gBAAgBxiH,GAAI6D,KAAKy+G,6BAA8Bz+G,KAAKk+G,oBAAqB,EAAIl+G,KAAKs4G,YAClJ,CACA,eAAAsG,GACC,OAAO5+G,KAAKs4G,YACb,CACA,0BAAAuG,GACC/hH,OAAO4pB,QAAQ1mB,KAAKi+G,aAAap8G,QAAQ,EAAE1F,EAAGD,MAC7C,IAAIM,EAAI00B,SAAS/0B,EAAG,IACpB6D,KAAKg+G,MAAMxhH,GAAK,IAAIg7G,GAAEt7G,KACnB8D,KAAKk+G,oBAAqB,CAC/B,CACA,oBAAAY,GACC,OAAO9+G,KAAKk+G,kBACb,CACA,eAAAS,CAAgBxiH,GACf,OAAO6D,KAAKs4G,aAAen8G,aAAaqf,IAAMrf,EAAI,IAAIqf,IAAIrf,GAAI6D,KAAKk+G,oBAAsBl+G,KAAKy+G,6BAA8Bz+G,KAAKs4G,YAClI,CACA,cAAAS,CAAe58G,GACd,GAAI6D,KAAKk+G,mBAAoB,CAC5B,IAAIhiH,EAAI8D,KAAKolG,QAAQjpG,GACrB,GAAID,EAAG,CACN,IAAIM,EAAIwD,KAAKs+G,mBAAmBpiH,EAAEojC,MAClC,GAAI9iC,EAAG,OAAOA,EAAEu8G,eAAe58G,EAChC,CACD,CACA,IAAID,EAAI8D,KAAKw+G,qBAAsBhiH,EAAIN,EAAE8F,IAAI7F,GAC7C,OAAOD,EAAEqH,IAAIpH,IAAKK,CACnB,CACA,eAAAw8G,CAAgB78G,GACf,IAAID,EAAI8D,KAAKw+G,qBAAsBhiH,EAAI,EACvC,IAAA,IAASE,KAAKP,EAAG,CAChB,GAAI6D,KAAKk+G,mBAAoB,CAC5B,IAAI/hH,EAAI6D,KAAKolG,QAAQ1oG,GACrB,GAAIP,EAAG,CACN,IAAID,EAAI8D,KAAKs+G,mBAAmBniH,EAAEmjC,MAClC,GAAIpjC,EAAG,CACNA,EAAE68G,eAAer8G,IAAMF,IACvB,QACD,CACD,CACD,CACA,IAAIL,EAAID,EAAE8F,IAAItF,GACdR,EAAEqH,IAAI7G,GAAIP,GAAKK,GAChB,CACA,OAAOA,CACR,CACA,cAAAq8G,CAAe18G,GACd,OAAO6D,KAAKs4G,cAAct2G,IAAI7F,KAAM,CACrC,CACA,aAAAsrG,CAActrG,GACb,OAAO6D,KAAKm+G,OAAOhiH,IAAI0hH,UAAYD,GAAGC,QACvC,CACA,cAAA7V,CAAe7rG,EAAGD,GACjB,IAAIM,EAAIwD,KAAKm+G,OAAOhiH,IAAIorG,aAAeqW,GAAGrW,YAAa7qG,EAAIqL,KAAKC,IAAID,KAAKD,IAAI5L,GAAK,EAAG,GAAI,GAAIqC,EAAI/B,EAAE4B,KAAK,KACxG,OAAY,GAAL1B,EAAS,QAAQ6B,KAAO,QAAQA,MAAM7B,IAC9C,GACEqiH,GAAqBv+G,GAAA,CAAIrE,EAAGD,KAC9BA,EAAEiF,QAAU,MACX,WAAA7E,GACC0D,KAAK0C,KAAuB,IAAI8Y,IAAOxb,KAAKu+C,MAAQ,EACrD,CACA,IAAAtoC,GACCjW,KAAKu+C,MAAMtoC,KAAK,CAAC9Z,EAAGD,IAAMC,EAAE6iH,SAAW9iH,EAAE8iH,SAC1C,CACA,GAAAr8G,CAAIxG,EAAGD,GACN,IAAIM,EAAIslB,OAAO5lB,GACf,GAAI0hD,MAAMphD,GAAI,MAAMkC,UAAU,+BAC9B,OAAOsB,KAAK0C,KAAKV,IAAI7F,GAAK6D,KAAKu+C,MAAM17C,IAAK3G,IAAOA,EAAEc,MAAQb,GAAKW,OAAOuD,OAAOnE,EAAG,CAAE8iH,SAAUxiH,IAAMN,KAAO8D,KAAK0C,KAAKa,IAAIpH,GAAI6D,KAAKu+C,MAAMt/C,KAAK,CAC3IjC,IAAKb,EACL6iH,SAAUxiH,KACNwD,KAAKiW,OAAQjW,KAAKu+C,MAAM9hD,MAC9B,CACA,IAAAsC,GACC,IAAI5C,EAAI6D,KAAKu+C,MAAM2J,QACnB,OAAOloD,KAAK0C,KAAKE,OAAOzG,EAAEa,KAAMb,CACjC,CACA,OAAA8iH,GACC,OAA6B,IAAtBj/G,KAAKu+C,MAAM9hD,MACnB,CACA,GAAAuF,CAAI7F,GACH,OAAO6D,KAAK0C,KAAKV,IAAI7F,EACtB,CACA,GAAA4E,CAAI5E,GACH,OAAO6D,KAAKu+C,MAAMpnC,KAAMjb,GAAMA,EAAEc,MAAQb,EACzC,KAEG+iH,GAAqB1+G,GAAA,CAAIrE,EAAGD,KAMhCA,EAAEiF,QALF,SAAS3E,EAAEL,EAAGD,GACb,IAAIQ,MAAwByD,IAC5B,IAAA,IAAU5B,EAAGtB,KAAMd,EAAGoC,IAAMrC,GAAKe,aAAakD,IAAMzD,EAAEiG,IAAIpE,EAAG/B,EAAES,EAAGf,IAAMqC,IAAMrC,GAAKQ,EAAEiG,IAAIpE,EAAGtB,GAC5F,OAAOP,CACR,IAEIyiH,GAAqB3+G,GAAA,CAAIrE,EAAGD,KAchCA,EAAEiF,QATF,SAASzE,EAAEP,GACV,IAAID,MAAwBiE,IAC5B,OAAOrD,OAAO4F,KAAKvG,GAAG0F,QAAStD,IAC9B,IAAItB,EAAId,EAAEoC,GACV,GAAgB,iBAALtB,GAAiBA,IAAMC,MAAM2B,QAAQ5B,UAAWf,EAAEyG,IAAIpE,EAAG7B,EAAEO,IACtE,IATF,SAAWd,GACV,IAAID,EAAI4lB,OAAO3lB,GACf,QAASyhD,MAAM1hD,IAAMA,GAAK,EAC3B,CAMOM,CAAES,SAAUgrB,MAAM,8BAA8B1pB,kCAAmCtB,GACxF,OAAOf,EAAEyG,IAAIpE,EAAGujB,OAAO7kB,MACpBf,CACL,IAEIkjH,GAAqB5+G,GAAA,CAAIrE,EAAGD,KAWhCA,EAAEiF,QAVF,SAAS3E,EAAEL,GACV,KAAMA,aAAagE,KAAM,MAAM8nB,MAAM,oDAAoD9rB,GACzFA,EAAE0F,QAAQ,CAAC1F,EAAGD,KACb,GAAgB,iBAALC,GAAiBA,aAAagE,IACxC3D,EAAEL,QAGH,GAAgB,iBAALA,GAAiBA,GAAK,EAAG,MAAM8rB,MAAM,sDAAsD9rB,QAAQD,MAEhH,IAEIonD,MAAwC9iD,GAAA,CAAIrE,EAAGD,KACnD,IAAIM,EAAIuiH,KAAMriH,EAAIwiH,KAAM3gH,EAAI4gH,KAAMliH,EAAImiH,KACtCljH,EAAEiF,QAAU,MACX,WAAA7E,CAAYH,GACXA,aAAagE,KAAOlD,EAAEd,GAAI6D,KAAKq/G,MAAQljH,GAAS6D,KAAKq/G,MAATljH,EAAiBoC,EAAEpC,OAAsCgE,GACtG,CACA,OAAAopG,CAAQptG,EAAGD,GACV,IAAIM,EACJ,OAAON,aAAaiE,KAAOlD,EAAEf,GAAIM,EAAIN,GAAKM,EAAI+B,EAAErC,GAAI8D,KAAKq/G,MAAM18G,IAAIxG,EAAGK,GAAIwD,IAC3E,CACA,SAAAs/G,CAAUnjH,EAAGD,GACZ,OAAO8D,KAAKupG,QAAQptG,EAAGD,EACxB,CACA,UAAAqjH,CAAWpjH,GACV,OAAO6D,KAAKq/G,MAAQ3iH,EAAEsD,KAAKq/G,MAAOljH,GAAI6D,IACvC,CACA,IAAAmrD,CAAKhvD,EAAGD,EAAGQ,EAAI,CAAA,GACd,IAAKsD,KAAKq/G,MAAMt4F,KAAM,OAAOrqB,EAAE8iH,KAAO,CACrCr0D,KAAM,KACNq0D,KAAM,GACH,KACJ,IAAIjhH,EAAoB,IAAIid,IAAOve,EAAI,IAAIT,EAAKW,EAAoB,IAAIgD,IAAOK,EAAI,GAAI5B,EAAI,EAAG2iD,EAAI,GAClG,GAAI7kD,EAAE+iH,QAAUl+D,EAAI,GAAGlkD,OAAOX,EAAE+iH,QAASl+D,EAAE7iC,SAASviB,SAAU8rB,MAAM,kBAAkB9rB,wBACtF,GAAIolD,EAAE7iC,SAASxiB,SAAU+rB,MAAM,gBAAgB/rB,wBAC/C,IAAKe,EAAE0F,IAAIxG,EAAG,IAAKc,EAAEgiH,WAAY,CAChC,IAAI9iH,EAAIc,EAAE8B,OACV,GAAI5C,EAAEa,MAAQd,EAAG,CAChB0C,EAAIzC,EAAE6iH,SACN,IAAI9iH,EAAIC,EAAEa,IACV,KAAOG,EAAE6E,IAAI9F,IAAKsE,EAAEvB,KAAK/C,GAAIA,EAAIiB,EAAE4D,IAAI7E,GACvC,KACD,CACAqC,EAAEgF,IAAIpH,EAAEa,MAAOgD,KAAKq/G,MAAMt+G,IAAI5E,EAAEa,MAAwB,IAAImD,KAAO0B,QAAQ,CAAC3F,EAAGM,KAC9E,GAAI+B,EAAEyD,IAAIxF,IAAM+kD,EAAE7iC,SAASliB,GAAI,OAAO,KACtC,IAAKS,EAAE+E,IAAIxF,UAAWW,EAAEwF,IAAInG,EAAGL,EAAEa,KAAMC,EAAE0F,IAAInG,EAAGL,EAAE6iH,SAAW9iH,GAC7D,IAAIQ,EAAIO,EAAE8D,IAAIvE,GAAGwiH,SAAUx+G,EAAIrE,EAAE6iH,SAAW9iH,EAC5C,OAAOsE,EAAI9D,GAAKS,EAAEwF,IAAInG,EAAGL,EAAEa,KAAMC,EAAE0F,IAAInG,EAAGgE,IAAM,MAElD,CACA,OAAOA,EAAE/D,QAAUC,EAAEkiB,KAAOpe,EAAE0nD,QAAU1nD,EAAIA,EAAEnD,OAAO,CAAClB,IAAKO,EAAEw6E,UAAY12E,EAAIA,EAAE02E,WAAYx6E,EAAE8iH,KAAO,CACnGr0D,KAAM3qD,EACNg/G,KAAM5gH,GACH4B,GAAK9D,EAAE8iH,KAAO,CACjBr0D,KAAM,KACNq0D,KAAM,GACH,IACL,CACA,YAAAE,IAAgBvjH,GACf,OAAO6D,KAAKmrD,QAAQhvD,EACrB,EAEF,MAAYs/E,GAAK,CAChB,EAAG,QACH,EAAG,YACH,EAAG,YACH,EAAG,OACH,EAAG,OACH,EAAG,QACH,EAAG,YACH,EAAG,YACH,EAAG,KACH,GAAI,OACJ,GAAI,KACJ,GAAI,OACFkkC,GAAK,CACP9V,MAAO,IACPI,UAAW,KACXC,UAAW,KACXH,KAAM,IACNC,KAAM,IACNF,MAAO,IACPK,UAAW,KACXC,UAAW,KACXC,GAAI,KACJC,KAAM,OACNC,GAAI,KACJC,IAAK,OACHoV,GAAK,MACP,WAAAtjH,CAAYH,GACX6D,KAAK0kG,UAAYvoG,EAAG6D,KAAK0P,KAAO1P,KAAK6/G,YACtC,CACA,MAAAC,GACC,OAAO9/G,KAAK0P,KAAKqwG,GAClB,CACA,kBAAAC,GACC,OAAOhgH,KAAK0P,KAAKuwG,eAClB,CACA,kBAAAC,GACC,OAAOlgH,KAAK0P,KAAKywG,eAClB,CACA,gBAAAC,GACC,OAAOpgH,KAAK0P,KAAK2wG,aAClB,CACA,OAAAjb,CAAQjpG,GACP,OAAO6D,KAAK0kG,UAAUU,QAAQjpG,EAC/B,CACA,iBAAAmkH,CAAkBnkH,EAAGD,EAAGM,GACvB,IAAIE,EAAIP,EAAEokH,cAAcrkH,GACxB,gBAAOQ,GAAgBA,EAAI,EAAIA,EAAIqL,KAAKD,IAAItL,EAAEgkH,OAAQ,EACvD,CACA,UAAAX,GACC,IAAI1jH,MAAwBgE,IAAOjE,EAAI,CAAA,EAAIM,EAAI,EAAGE,EAAIm+D,IACtD,OAAO76D,KAAK0kG,UAAUkJ,WAAW/rG,QAAStD,IACzC,IAAItB,EAAI,GAAIE,EAAI,CAAA,EAAIqD,EAAI,IAAIgb,KAAKjd,EAAEkiH,WAAa,IAAI59G,IAAK1G,GAAMs/E,GAAGt/E,IAAImH,OAAQnH,KAAQA,IAAKyC,EAAI,IAAI4c,IAAIjd,EAAEmiH,mBAAqB,IAC9H5jH,OAAO4pB,QAAQnoB,EAAEstG,OAAS,CAAA,GAAIhqG,QAAQ,EAAE1F,EAAGD,MAC1C,GAAIsE,EAAEwB,IAAI7F,GAAI,OACd,IAAIyC,EAAIoB,KAAK0kG,UAAUU,QAAQlpG,GAC/B,GAAI0C,EAAG,CACN,IAAI4B,EAAIm/G,GAAGxjH,IAAMA,EAAGolD,EAAIvhD,KAAKsgH,kBAAkB/hH,EAAGiC,EAAG5B,GACrD3B,EAAEgC,KAAK,CACNwqC,GAAIvtC,EACJskH,OAAQj/D,IACLpkD,EAAEjB,EAAEkD,YAAcmiD,EAAGA,EAAI7kD,IAAMA,EAAI6kD,GACvC,IAAI9iD,EAAIG,EAAE2K,EAAIhL,EAAEgL,EAAGgpC,EAAI3zC,EAAE6K,EAAIlL,EAAEkL,EAAG7J,EAAIhB,EAAEk+E,EAAIv+E,EAAEu+E,EAAGz8C,EAAIt4B,KAAKqrC,KAAK30C,EAAIA,EAAI8zC,EAAIA,EAAI3yC,EAAIA,GACnFygC,EAAI7jC,IAAMA,EAAI6jC,EACf,IACGvjC,OAAO4pB,QAAQnoB,EAAEqtG,cAAgB,IAAI/pG,QAAQ,EAAE1F,EAAGD,MACrD,GAAI0C,EAAEoD,IAAI9F,GAAI,OACd,IAAIsE,EAAIR,KAAK0kG,UAAUU,QAAQlpG,GAC/B,GAAIsE,EAAG,CACN,IAAI5B,EAAIoB,KAAKsgH,kBAAkB/hH,EAAGpC,EAAGqE,GACrCvD,EAAEgC,KAAK,CACNwqC,GAAIvtC,EACJskH,OAAQ5hH,IACLzB,EAAEjB,EAAEkD,YAAcR,EAAGA,EAAIlC,IAAMA,EAAIkC,GACvC,IAAI2iD,EAAI/gD,EAAE+I,EAAIhL,EAAEgL,EAAG9K,EAAI+B,EAAEiJ,EAAIlL,EAAEkL,EAAG8oC,EAAI/xC,EAAEs8E,EAAIv+E,EAAEu+E,EAAGl9E,EAAImI,KAAKqrC,KAAKmO,EAAIA,EAAI9iD,EAAIA,EAAI8zC,EAAIA,GACnF3yC,EAAIpD,IAAMA,EAAIoD,EACf,IACGzD,EAAEwG,IAAIpE,EAAEkrC,GAAIxsC,GAAIf,EAAEqC,EAAEkrC,GAAGrqC,YAAcjC,IACtC0gD,SAASnhD,KAAOA,EAAI,GAAI,CAC3BqjH,IAAK5jH,EACL8jH,gBAAiB/jH,EACjBikH,gBAAiB3jH,EACjB6jH,cAAe3jH,EAEjB,GAID,SAASikH,GAAGxkH,EAAGD,GACdC,EAAE8C,KAAK/C,GACP,IAAIM,EAAIL,EAAEM,OAAS,EACnB,KAAOD,EAAI,GAAI,CACd,IAAIN,EAAIM,EAAI,GAAK,EACjB,GAAIL,EAAED,GAAG8iH,UAAY7iH,EAAEK,GAAGwiH,SAAU,OACnC7iH,EAAED,GAAIC,EAAEK,IAAM,CAACL,EAAEK,GAAIL,EAAED,IAAKM,EAAIN,CAClC,CACD,CACA,SAAS0kH,GAAGzkH,GACX,GAAiB,IAAbA,EAAEM,OAAc,OACpB,IAAIP,EAAIC,EAAE,GAAIK,EAAIL,EAAE0kH,MACpB,GAAI1kH,EAAEM,OAAS,EAAG,CACjBN,EAAE,GAAKK,EACP,IAAIN,EAAI,EAAGQ,EAAIP,EAAEM,OACjB,OAAS,CACR,IAAID,EAAIN,EAAGqC,EAAI,EAAIrC,EAAI,EAAGe,EAAI,EAAIf,EAAI,EACtC,GAAIqC,EAAI7B,GAAKP,EAAEoC,GAAGygH,SAAW7iH,EAAEK,GAAGwiH,WAAaxiH,EAAI+B,GAAItB,EAAIP,GAAKP,EAAEc,GAAG+hH,SAAW7iH,EAAEK,GAAGwiH,WAAaxiH,EAAIS,GAAIT,IAAMN,EAAG,OAClHC,EAAED,GAAIC,EAAEK,IAAM,CAACL,EAAEK,GAAIL,EAAED,IAAKA,EAAIM,CAClC,CACD,CACA,OAAON,CACR,CACA,SAAS4kH,GAAG3kH,EAAGD,EAAGM,GACjB,IAAIE,EAAI,CAACF,GAAI+B,EAAI/B,EACjB,KAAO+B,IAAMrC,GAAIqC,EAAIpC,EAAE4E,IAAIxC,GAAI7B,EAAEuC,KAAKV,GACtC,OAAO7B,EAAEw6E,UAAWx6E,CACrB,CA+BG,IAACqkH,GAAK,MACR,WAAAzkH,CAAYH,EAAGD,EAAI,YAClB8D,KAAK84D,UAA4B34D,IAAOH,KAAKghH,WAAa9kH,EAAG8D,KAAKihH,SAAW,IAAIrB,GAAGzjH,GAAI6D,KAAKkhH,cAAgB,IAAI59D,GAAG69D,QAAQnhH,KAAKihH,SAASjB,qBAC3I,CACA,aAAIoB,GACH,OAAOphH,KAAKghH,UACb,CACA,YAAAK,CAAallH,GACZA,IAAM6D,KAAKghH,aAAehhH,KAAKghH,WAAa7kH,EAAG6D,KAAK84D,MAAMxQ,QAC3D,CACA,QAAAg5D,CAASnlH,EAAGD,GACX,IAOIQ,EAPAF,EAAI,GAAGL,MAAMD,IACjB,GAAI8D,KAAK84D,MAAM92D,IAAIxF,GAAI,OAAOwD,KAAK84D,MAAM/3D,IAAIvE,GAC7C,GAAIL,IAAMD,EAAG,CACZ,IAAIA,EAAI8D,KAAKihH,SAAS7b,QAAQjpG,GAAK,CAACA,GAAK,KACzC,OAAO6D,KAAK84D,MAAMn2D,IAAInG,EAAGN,GAAIA,CAC9B,CACA,IAAK8D,KAAKihH,SAAS7b,QAAQjpG,KAAO6D,KAAKihH,SAAS7b,QAAQlpG,GAAI,OAAO8D,KAAK84D,MAAMn2D,IAAInG,EAAG,MAAO,KAE5F,OAAQwD,KAAKghH,YACZ,IAAK,WACJtkH,EAnDJ,SAAYP,EAAGD,EAAGM,GACjB,IAAIE,EAAIP,EAAEgvD,KAAKjvD,EAAEkD,WAAY5C,EAAE4C,YAAab,EAAIrB,MAAM2B,QAAQnC,GAAKA,EAAIA,GAAGyuD,KAC1E,OAAO5sD,EAAIA,EAAEsE,IAAK1G,GAAM2lB,OAAO3lB,IAAM,IACtC,CAgDQolH,CAAGvhH,KAAKkhH,cAAe/kH,EAAGD,GAC9B,MACD,IAAK,QACJQ,EAlDJ,SAAYP,EAAGD,EAAGM,EAAGE,GACpB,IAAI6B,EAAI7B,EAAE0oG,QAAQ5oG,GAClB,IAAK+B,EAAG,OAAO,KACf,IAAItB,EAAIsB,EAAEgL,EAAGpM,EAAIoB,EAAEkL,EAAGjJ,EAAIjC,EAAEu+E,EAAGl+E,EAAIlC,EAAEwjH,qBAAsB3+D,EAAI7kD,EAAE0jH,mBAAoB3hH,EAAKtC,IACzF,IAAID,EAAIQ,EAAE0oG,QAAQjpG,GAClB,IAAKD,EAAG,OAAO,EACf,IAAIM,EAAIN,EAAEqN,EAAItM,EAAGsB,EAAIrC,EAAEuN,EAAItM,EAAGsB,EAAIvC,EAAE4gF,EAAIt8E,EACxC,OAAOuH,KAAKqrC,KAAK52C,EAAIA,EAAI+B,EAAIA,EAAIE,EAAIA,GAAKG,EAAI2iD,GAC5ChP,EAAoB,IAAIpyC,IAAOP,EAAoB,IAAIO,IAAOkgC,EAAI,GACrE,IAAKkS,EAAE5vC,IAAIzG,EAAG,GAAIykH,GAAGtgF,EAAG,CACvBoJ,GAAIvtC,EACJ8iH,SAAUvgH,EAAEvC,KACTmkC,EAAE5jC,OAAS,GAAI,CAClB,IAAMgtC,GAAI/sC,GAAMkkH,GAAGvgF,GACnB,GAAI3jC,IAAMF,EAAG,OAAOskH,GAAGlhH,EAAG1D,EAAGM,GAC7B,IAAI+B,EAAIg0C,EAAExxC,IAAIrE,IAAMm+D,IAAU59D,EAAId,EAAE4E,IAAIrE,GACxC,GAAIO,EAAG,IAAA,IAASd,KAAKc,EAAG,CACvB,IAAIf,EAAIqC,EAAIpC,EAAEqkH,OACdtkH,GAAKq2C,EAAExxC,IAAI5E,EAAEstC,KAAOoxB,OAActoB,EAAE5vC,IAAIxG,EAAEstC,GAAIvtC,GAAI0D,EAAE+C,IAAIxG,EAAEstC,GAAI/sC,GAAIikH,GAAGtgF,EAAG,CACvEoJ,GAAIttC,EAAEstC,GACNu1E,SAAU9iH,EAAIuC,EAAEtC,EAAEstC,MAEpB,CACD,CACA,OAAO,IACR,CAyBQ+3E,CAAGxhH,KAAKihH,SAASnB,SAAU3jH,EAAGD,EAAG8D,KAAKihH,UAG5C,OAAOjhH,KAAK84D,MAAMn2D,IAAInG,EAAGE,GAAIA,CAC9B,GCllHD,MAAM+kH,GAAW,IAEV,MAAMC,GAUT,WAAAplH,CAAYuG,EAAqB8+G,GAHjC3hH,KAAQ4hH,WAAoC,KAIxC5hH,KAAK6C,IAAMA,EACX7C,KAAK6hH,QAAU3/G,SAASsL,cAAc,sBACtCxN,KAAK8hH,UAAY5/G,SAASsL,cAAc,YACxCxN,KAAK+hH,WAAa7/G,SAASsL,cAAc,gBACzCxN,KAAK2hH,aAAeA,EAEpB3hH,KAAK6C,IAAIuN,iBAAiB,MAAA,KACtBpQ,KAAKqQ,QACT,EACJ,CAMA,IAAA2xG,CAAKz5D,EAAwB05D,GACzBjiH,KAAK4hH,WAAar5D,EAElB,MAAM25D,EAAQ35D,EAAOwS,KAAOxS,EAAOqS,KAC7BunD,EAAQ55D,EAAOyS,KAAOzS,EAAOuS,KACnC,GAAIonD,GAAS,GAAKC,GAAS,EAEvB,YADAniH,KAAK6hH,QAAQh7G,MAAMs5D,QAAU,KAKjC,MAAMiiD,EAASF,EAAQC,EACvB,IAAIE,EAAcC,EACdF,GAAU,GACVC,EAAOZ,GACPa,EAAOb,GAAWW,IAElBE,EAAOb,GACPY,EAAOZ,GAAWW,GAEtBpiH,KAAK6hH,QAAQh7G,MAAMqC,MAAQ,GAAGnB,KAAKE,MAAMo6G,OACzCriH,KAAK6hH,QAAQh7G,MAAMuC,OAAS,GAAGrB,KAAKE,MAAMq6G,OAEtCL,GACAjiH,KAAK8hH,UAAUj7G,MAAM07G,gBAAkB,OAAON,KAC9CjiH,KAAK8hH,UAAUj7G,MAAM27G,eAAiB,YACtCxiH,KAAK8hH,UAAUj7G,MAAMs5D,QAAU,QAE/BngE,KAAK8hH,UAAUj7G,MAAM07G,gBAAkB,GACvCviH,KAAK8hH,UAAUj7G,MAAMs5D,QAAU,IAGnCngE,KAAKqQ,QACT,CAEA,MAAAA,GACI,IAAKrQ,KAAK2hH,aAAac,cAAcZ,QACjC,OAGJ7hH,KAAK6hH,QAAQh7G,MAAMs5D,QAAU,IAC7BtvC,aAAa7wB,KAAK6mC,SAClB7mC,KAAK6mC,QAAUzkB,WAAW,KACtBpiB,KAAK6hH,QAAQh7G,MAAMs5D,QAAU,KAC9B,KAEH,MAAMuiD,EAAwB1iH,KAAK2hH,aAAae,SAChD,IAAKA,IAAa1iH,KAAK4hH,WACnB,OAGJ,MAAMr9G,EAAWm+G,EAAS9S,oBAEpBsS,EAAQliH,KAAK4hH,WAAW7mD,KAAO/6D,KAAK4hH,WAAWhnD,KAC/CunD,EAAQniH,KAAK4hH,WAAW5mD,KAAOh7D,KAAK4hH,WAAW9mD,KACrD,GAAIonD,GAAS,GAAKC,GAAS,EAAG,OAE9B,MAAMl+G,GAASM,EAASq2D,KAAO56D,KAAK4hH,WAAWhnD,MAAQsnD,EAAS,IAC1Dp+G,GAAQS,EAASu2D,KAAO96D,KAAK4hH,WAAW9mD,MAAQqnD,EAAS,IACzDj5G,GAAU3E,EAASw2D,KAAOx2D,EAASq2D,MAAQsnD,EAAS,IACpD94G,GAAW7E,EAASy2D,KAAOz2D,EAASu2D,MAAQqnD,EAAS,IAErDQ,EAAc56G,KAAKD,IAAI,EAAGC,KAAKC,IAAI/D,EAAM,MACzC2+G,EAAa76G,KAAKD,IAAI,EAAGC,KAAKC,IAAIlE,EAAK,MACvC++G,EAAe96G,KAAKC,IAAI,IAAK/D,EAAOiF,GACpC45G,EAAgB/6G,KAAKC,IAAI,IAAKlE,EAAMsF,GAE1CpJ,KAAK+hH,WAAWl7G,MAAM5C,KAAO,GAAG0+G,KAChC3iH,KAAK+hH,WAAWl7G,MAAM/C,IAAM,GAAG8+G,KAC/B5iH,KAAK+hH,WAAWl7G,MAAMqC,MAAQ,GAAGnB,KAAKD,IAAI,EAAG+6G,EAAeF,MAC5D3iH,KAAK+hH,WAAWl7G,MAAMuC,OAAS,GAAGrB,KAAKD,IAAI,EAAGg7G,EAAgBF,KAClE,kIC5GE1mH,iBAASA,GAAE,WAAwB,SAASC,EAAEA,EAAED,GAAG,IAAIM,EAAEM,OAAO4F,KAAKvG,GAAG,GAAGW,OAAOimH,sBAAsB,CAAC,IAAIrmH,EAAEI,OAAOimH,sBAAsB5mH,GAAGD,IAAIQ,EAAEA,EAAE4G,OAAA,SAAiBpH,GAAG,OAAOY,OAAO4nD,yBAAyBvoD,EAAED,GAAGS,cAAeH,EAAEyC,KAAKN,MAAMnC,EAAEE,EAAE,CAAC,OAAOF,CAAC,CAAC,SAASN,EAAEA,GAAG,IAAA,IAAQM,EAAE,EAAEA,EAAEgC,UAAU/B,OAAOD,IAAI,CAAC,IAAI+B,EAAE,MAAMC,UAAUhC,GAAGgC,UAAUhC,GAAG,CAAA,EAAGA,EAAE,EAAEL,EAAEW,OAAOyB,IAAG,GAAIsD,QAAA,SAAkB1F,GAAGO,EAAER,EAAEC,EAAEoC,EAAEpC,MAAOW,OAAOkmH,0BAA0BlmH,OAAOmmH,iBAAiB/mH,EAAEY,OAAOkmH,0BAA0BzkH,IAAIpC,EAAEW,OAAOyB,IAAIsD,QAAA,SAAkB1F,GAAGW,OAAOC,eAAeb,EAAEC,EAAEW,OAAO4nD,yBAAyBnmD,EAAEpC,GAAG,EAAG,CAAC,OAAOD,CAAC,CAAC,SAASM,EAAEL,GAAG,OAAOK,EAAE,mBAAmBJ,QAAQ,iBAAiBA,OAAOC,SAAS,SAASF,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmBC,QAAQD,EAAEG,cAAcF,QAAQD,IAAIC,OAAOG,UAAU,gBAAgBJ,CAAC,GAAIA,EAAE,CAAC,SAASO,EAAEP,EAAED,EAAEM,GAAG,OAAON,KAAKC,EAAEW,OAAOC,eAAeZ,EAAED,EAAE,CAACgD,MAAM1C,EAAEG,YAAW,EAAGC,cAAa,EAAGC,UAAS,IAAKV,EAAED,GAAGM,EAAEL,CAAC,CAAC,SAASoC,EAAEpC,GAAG,OAAA,SAAgBA,GAAG,GAAGe,MAAM2B,QAAQ1C,GAAG,OAAOqE,EAAErE,EAAE,CAAlD,CAAoDA,IAAC,SAAYA,GAAG,GAAG,oBAAoBC,QAAQ,MAAMD,EAAEC,OAAOC,WAAW,MAAMF,EAAE,cAAc,OAAOe,MAAMqC,KAAKpD,GAAhH,CAAoHA,IAAIgB,EAAEhB,eAAe,MAAM,IAAIuC,UAAU,uIAAuI,GAAG,CAAC,SAASvB,EAAEhB,EAAED,GAAG,GAAGC,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAOqE,EAAErE,EAAED,GAAG,IAAIM,EAAEM,OAAOP,UAAU6C,SAASN,KAAK3C,GAAGkD,MAAM,GAAE,GAAI,MAAM,WAAW7C,GAAGL,EAAEG,cAAcE,EAAEL,EAAEG,YAAYgD,MAAM,QAAQ9C,GAAG,QAAQA,EAAEU,MAAMqC,KAAKpD,GAAG,cAAcK,GAAG,2CAA2CgD,KAAKhD,GAAGgE,EAAErE,EAAED,QAAG,CAAM,CAAC,CAAC,SAASsE,EAAErE,EAAED,IAAI,MAAMA,GAAGA,EAAEC,EAAEM,UAAUP,EAAEC,EAAEM,QAAQ,IAAA,IAAQD,EAAE,EAAEE,EAAE,IAAIQ,MAAMhB,GAAGM,EAAEN,EAAEM,IAAIE,EAAEF,GAAGL,EAAEK,GAAG,OAAOE,CAAC,CAAC,IAAI+B,EAAE,SAAStC,GAAG,MAAM,iBAAiBA,EAAE+F,SAASsL,cAAcrR,GAAGA,GAAG,EAAEc,EAAE,SAASd,EAAED,GAAG,IAAIM,EAAE,iBAAiBL,EAAE+F,SAAS83B,cAAc79B,GAAGA,EAAE,IAAA,IAAQO,KAAKR,EAAE,CAAC,IAAIqC,EAAErC,EAAEQ,GAAG,GAAG,WAAWA,EAAE6B,EAAE07B,OAAOz9B,QAAC,GAAU,SAASE,EAAE+B,EAAEF,EAAE,IAAI2kH,sBAAsB3kH,EAAE,GAAG/B,QAAC,GAAU,WAAWE,EAAE,CAAC,IAAIS,EAAEoB,EAAEpB,EAAEgN,WAAWgpE,aAAa32E,EAAEW,GAAGX,EAAEy9B,OAAO98B,GAAG,MAAMA,EAAEyE,aAAa,cAAczE,EAAEi5B,OAAO,MAAM15B,KAAKF,EAAEA,EAAEE,GAAG6B,EAAE/B,EAAEuF,aAAarF,EAAE6B,EAAE,CAAC,OAAO/B,CAAC,EAAEoC,EAAE,SAASzC,EAAED,GAAG,OAAOC,EAAEgnH,OAAOhnH,GAAGwJ,cAAczJ,EAAEC,EAAEinH,UAAU,OAAOtgH,QAAQ,mBAAmB,IAAIsgH,UAAU,OAAOjnH,CAAC,EAAEolD,EAAE,SAASplD,EAAEK,GAAG,OAAOS,EAAE,OAAOf,EAAE,CAAC6lC,UAAU5lC,GAAG,iBAAiBK,GAAG,CAAC6mH,MAAM7mH,KAAK6B,SAAS,EAAEuB,EAAE,SAASzD,EAAED,GAAGA,EAAEonH,MAAMtkG,cAAc,IAAIslF,YAAYnoG,EAAE,CAAC4pB,SAAQ,EAAGw+E,OAAOroG,EAAEqnH,SAASj9F,YAAW,IAAK,EAAE+Z,EAAE,SAASlkC,EAAED,EAAEM,GAAG,IAAIE,EAAEF,GAAG,CAAA,EAAG+B,EAAE7B,EAAE8mH,KAAKrmH,EAAET,EAAE+mH,WAAWjjH,EAAE9D,EAAEgsG,UAAUjqG,EAAEG,EAAE1C,EAAEiB,GAAG,GAAGjB,EAAEinH,OAAOjnH,GAAGC,EAAEyC,EAAEzC,EAAEgB,GAAG,UAAUoB,EAAE,CAAC,IAAItB,GAAGd,EAAEA,EAAE2G,QAAQ,KAAK,KAAKrG,OAAOmD,EAAE,EAAEygC,EAAEnjC,MAAMqC,KAAKrD,GAAG2G,IAAA,SAAc3G,EAAEM,GAAG,OAAOoD,EAAE3C,GAAGwB,EAAEjC,KAAKL,EAAEyD,KAAK1D,EAAEsE,EAAE+gD,EAAErlD,EAAEsE,GAAGtE,EAAE0D,KAAK1D,CAAC,GAAIkC,KAAK,IAAI,GAAGwB,IAAI3C,EAAE,OAAOojC,CAAC,KAAK,CAAC,IAAIkS,EAAE9zC,EAAE8L,QAAQpO,GAAG,IAAIo2C,EAAE,OAAOp2C,EAAED,EAAEqkD,UAAUhO,EAAEA,EAAEp2C,EAAEM,QAAU+D,EAAEtE,EAAE4G,QAAQ3G,EAAEolD,EAAEplD,EAAEqE,IAAItE,CAAC,CAAC,EAAEq2C,EAAE,SAASp2C,EAAED,GAAG,OAAO,IAAI8G,QAAA,SAAkBxG,EAAEE,GAAG,IAAI6B,EAAE,OAAOA,EAAEpC,EAAEuT,MAAMopD,OAAOv6D,EAAEmlH,MAAMlnH,IAAI,IAAIwG,QAAA,SAAkB7G,EAAEK,GAAG,MAAM,mBAAmB+B,EAAEygD,IAAIzgD,EAAEygD,IAAI9iD,GAAGiH,KAAKhH,EAAEK,GAAGL,EAAEoC,EAAEygD,IAAI,GAAI77C,KAAA,SAAejH,GAAG,IAAI,OAAOC,EAAEonH,SAAShlH,EAAEmlH,MAAMxnH,EAAE0D,EAAE,WAAWzD,GAAGK,GAAG,OAAOL,GAAG,OAAOO,EAAEP,EAAE,GAAIO,EAAE,EAAG,EAAioCygB,EAAE,gBAAgBjH,EAAE,wBAAwBzM,EAAE,gBAAgBsR,EAAE,SAAS5e,EAAEK,GAAGL,EAAEonH,SAASI,UAAUznH,EAAE,CAACuhB,MAAMjhB,GAAGL,EAAEonH,SAASK,QAAQpnH,GAAG,EAAEmD,EAAE,SAASxD,GAAGA,EAAE63B,UAAU73B,EAAE0nH,SAAS1nH,EAAEmnH,OAAOvhH,aAAaob,GAAE,GAAIhhB,EAAEsV,KAAKzK,gBAAgB,UAAU7K,EAAE63B,QAAO,EAAGp0B,EAAE,OAAOzD,GAAG,EAAE0/F,EAAE,SAAS1/F,GAAGA,EAAE63B,UAAU73B,EAAE0nH,SAAS1nH,EAAEmnH,OAAOvhH,aAAaob,GAAE,GAAIhhB,EAAEmnH,MAAMvhH,aAAamU,EAAE,IAAI/Z,EAAEsV,KAAK1P,aAAa,SAAS,IAAI5F,EAAE63B,QAAO,EAAGp0B,EAAE,QAAQzD,GAAG,EAAEsuG,EAAE,SAAStuG,EAAED,GAAG,IAAIM,EAAEN,EAAE4nH,WAAWpnH,EAAER,EAAEuV,KAAKsyG,qBAAqBvnH,EAAE6pF,KAAKlpF,IAAIX,EAAEs3B,UAAUt3B,EAAEs3B,SAASp0B,MAAM,KAAK,GAAGxD,EAAE83B,QAAQt3B,EAAED,OAAO,CAAC,IAAI+D,EAAE/B,EAAExB,EAAEf,EAAEq3F,OAAOp3F,GAAGO,EAAED,SAASN,EAAE,GAAGA,EAAE,IAAIA,EAAEO,EAAED,OAAO,GAAGP,EAAEq3F,OAAOp3F,EAAEc,OAAOP,EAAEO,GAAG+J,gBAAgByC,GAAGtM,IAAIsB,EAAE/B,EAAEO,GAAG8iB,WAAWiH,OAAOroB,MAAMF,EAAEF,EAAEpB,KAAKT,EAAEP,GAAG4F,aAAa0H,GAAE,GAAItM,IAAIqD,EAAE9D,EAAEP,GAAG4jB,WAAWxc,IAAI5E,MAAM6B,EAAEjC,EAAEpB,IAAIjB,EAAEonH,MAAMvhH,aAAamU,EAAExZ,EAAER,EAAEq3F,QAAQ9pD,IAAIvtC,EAAEuV,KAAKX,UAAUpU,EAAEP,GAAGuN,UAAUxN,EAAEuV,KAAKzE,aAAatQ,EAAEP,GAAG6Q,aAAa,EAAE9Q,EAAEqnH,SAAShwB,OAAOr3F,EAAEq3F,OAAOx4E,EAAE7e,EAAEC,GAAGyD,EAAE,WAAW1D,EAAE,CAAC,EAAEmhF,EAAE,SAASlhF,GAAGsuG,EAAEtuG,EAAEo3F,OAAO,EAAEp3F,EAAE,EAAEqhF,EAAE,SAASrhF,GAAGsuG,EAAEtuG,EAAEo3F,OAAO,EAAEp3F,EAAE,EAAE6yG,EAAE,SAAS7yG,EAAED,EAAEM,IAAIA,EAAEA,GAAG,EAAEA,EAAEL,EAAEo3F,QAAQ,IAAIp3F,EAAEonH,SAAS5/F,MAAMznB,EAAE6e,EAAE5e,EAAEK,GAAGoD,EAAE,YAAYzD,GAAG0/F,EAAE1/F,GAAG,EAAE,SAASkmF,EAAElmF,EAAEK,GAAG,IAAIE,EAAEsD,KAAK,OAAO,IAAIgD,QAAA,SAAkBzE,EAAEpB,GAAG,IAAIqD,EAAE/B,EAAsHtC,EAAED,EAAEM,EAAxH,OAAOgE,EAAEhE,KAAKiC,EAAEtC,EAAEmnH,iBAAiBU,kBAAkBvlH,aAAawlH,oBAAoBxlH,EAAES,MAAMT,EAAEsjC,WAAoB5lC,EAAkCqE,EAAErE,EAAE+nH,MAAM/nH,EAAE+nH,MAAM1jH,GAAGA,EAArDtE,EAAuDC,EAAE0pB,QAAvDrpB,EAA+DL,EAAE8rC,WAAvD/rC,EAAEA,EAAEC,GAAGA,EAAEM,QAAQD,GAAiD+1C,EAAEp2C,EAAEqE,GAAG2C,KAAA,SAAe3G,GAAG,IAAI,OAAOL,EAAEonH,oBAAoBt7F,MAAM1pB,KAAn/E,SAASpC,EAAED,GAAG,IAAIM,EAAEN,EAAEwT,KAAKhT,EAAER,EAAEioH,aAAa5lH,EAAE,GAAG/B,EAAEknH,MAAM7hH,QAAA,SAAkBrB,EAAE/B,GAAG,IAAIxB,EAAE,SAAST,GAAG,IAAIW,EAAEX,EAAEgE,EAAEhE,GAAGgE,EAAE/B,EAAE,mBAAmB/B,EAAEA,EAAEP,EAAEgB,GAAGkjC,EAAElkC,EAAEgB,EAAE,CAACqmH,KAAK9mH,EAAE+mH,WAAWvnH,EAAEunH,WAAW/a,UAAUxsG,EAAE4nH,WAAWpb,YAAY,GAAGjqG,EAAE,CAAC,IAAIxB,EAAE,CAACshB,MAAM9f,EAAES,MAAMsB,GAAGhE,IAAIS,EAAED,IAAIR,GAAG+B,EAAEU,KAAKhC,EAAE,CAAC,EAAE,GAAGT,EAAEkG,KAAK,CAAC,IAAI9D,EAAE2iD,EAAAA,SAAWplD,GAAK,IAAIK,EAAE,oBAAoBJ,QAAQD,EAAEC,OAAOC,WAAWF,EAAE,cAAc,IAAIK,EAAE,CAAC,GAAGU,MAAM2B,QAAQ1C,KAAKK,EAAEW,EAAEhB,IAAqC,CAACK,IAAIL,EAAEK,GAAG,IAAIE,EAAE,EAAE6B,EAAE,WAAU,EAAG,MAAM,CAACiC,EAAEjC,EAAE/B,EAAE,WAAW,OAAOE,GAAGP,EAAEM,OAAO,CAACuC,MAAK,GAAI,CAACA,MAAK,EAAGE,MAAM/C,EAAEO,KAAK,EAAEP,EAAE,SAASA,GAAG,MAAMA,CAAC,EAAEyD,EAAErB,EAAE,CAAC,MAAM,IAAIG,UAAU,wIAAwI,CAAC,IAAI8B,EAAE/B,GAAE,EAAGxB,GAAE,EAAG,MAAM,CAACuD,EAAE,WAAWhE,EAAEA,EAAEsC,KAAK3C,EAAE,EAAEK,EAAE,WAAW,IAAIL,EAAEK,EAAEuC,OAAO,OAAON,EAAEtC,EAAE6C,KAAK7C,CAAC,EAAEA,EAAE,SAASA,GAAGc,GAAE,EAAGuD,EAAErE,CAAC,EAAEyD,EAAE,WAAW,IAAInB,GAAG,MAAMjC,EAAE2C,QAAQ3C,EAAE2C,QAAQ,CAAA,QAAS,GAAGlC,EAAE,MAAMuD,CAAC,CAAC,EAAE,CAAjoB+gD,CAAmoB/kD,EAAEkG,MAAM,IAAI,IAAI6+C,EAAE/gD,MAAM5B,EAAE2iD,EAAE/kD,KAAKwC,MAAM/B,EAAE2B,EAAEM,MAAM,OAAO/C,GAAGolD,EAAEplD,EAAEA,EAAE,CAAA,QAASolD,EAAE3hD,GAAG,CAAC,MAAM3C,MAAOT,EAAE8G,SAAS/E,EAAE/B,EAAE8G,OAAO/E,IAAI,IAAIiC,EAAEjC,EAAEc,MAAM,EAAEnD,EAAEkoH,YAAYC,YAAYnoH,EAAEqnH,SAAS,CAACW,MAAM/nH,EAAE2uB,QAAQvsB,EAAEqlH,QAAQpjH,GAAGZ,EAAE,UAAU1D,EAAE,CAA63ColD,CAAE9gD,EAAErE,GAAGA,EAAEioH,aAAA,SAAsBjoH,GAAG,IAAIK,EAAEL,EAAEioH,YAAY1nH,EAAEP,EAAEsV,KAAKlT,EAAEpC,EAAE2nH,WAAW3mH,EAAEhB,EAAEonH,SAAS/iH,EAAErD,EAAE2tB,QAAQrsB,EAAEtB,EAAEymH,QAAQ,GAAGznH,EAAEo3F,QAAO,EAAG72F,EAAEqlC,UAAU,GAAGvhC,EAAE/D,QAAQD,EAAE8nH,UAAU,CAAC,IAAI1lH,EAAE,IAAI2lH,iBAAiB9lH,EAAEoD,QAAA,SAAkB1F,EAAEK,GAAG,IAAIE,EAAEO,EAAEsB,EAAE8nF,IAAInqF,EAAE,CAACutC,GAAG,GAAGpsC,OAAOkB,EAAEkrC,GAAG,KAAKpsC,OAAOb,GAAGgoH,KAAK,SAASziF,UAAU5lC,EAAEoiB,MAAMkmG,OAAO7lH,GAAGL,EAAE8kH,OAAO,CAACA,MAAM9kH,EAAE8kH,SAAS9kH,EAAEkH,SAASlH,EAAEkH,QAAQ/I,EAAEP,EAAE,GAAIO,EAAEu9B,OAAOr7B,GAAGpC,EAAEiJ,SAASjJ,EAAEiJ,QAAQ/I,EAAES,GAAGwC,EAAExD,EAAE,MAAM0/F,EAAE1/F,EAAE,CAA3Z,CAA6ZA,GAAGyC,EAAEE,KAAKpC,GAAG,OAAOP,GAAG,OAAOgB,EAAEhB,EAAE,CAAC,EAAGgB,IAAI0+F,EAAE1/F,GAAGyC,EAAEE,KAAKpC,IAAI,SAASkC,IAAI,OAAOL,GAAG,CAAC,EAAG,CAAC,IAAIk8G,EAAE,SAASt+G,EAAED,GAAG,IAAA,IAAQM,KAAKL,EAAE,IAAA,IAAQO,KAAKP,EAAEK,GAAGN,EAAEM,EAAEE,EAAE,EAA+5B,SAAS8sG,EAAErtG,GAAG,IAAIK,EAAEwD,KAAK,OAAO,IAAIgD,QAAA,SAAkBtG,EAAE6B,GAAG,IAAIpB,EAAEqD,EAAE/B,EAAE,GAAGtB,EAAEhB,EAAEuoH,YAAYjmH,EAAE,CAAC+lH,KAAK,WAAW,aAAahkH,EAAErE,EAAEioH,aAAa36E,GAAG,iBAAgB,EAAG,iBAAgB,GAAIxsC,EAAEd,EAAEmnH,MAAMpnH,EAAEA,EAAE,CAAC,gBAAgBsE,EAAEipC,GAAG,oBAAoB,QAAQtsC,GAAG,CAACwnH,YAAYxnH,KAAKhB,EAAE0nH,SAAS3nH,EAAE,GAAGuC,KAAKtC,EAAE0nH,UAAU1nH,EAAE0nH,QAAQ5mH,EAAE,MAAMf,EAAE,CAAC0oH,OAAOzoH,EAAEmnH,MAAMD,MAAMlnH,EAAEmD,KAAK,YAAYb,KAAK+B,IAAIrE,EAAEsV,KAAKxU,EAAEuD,EAAE6lF,IAAInqF,EAAE,CAAC2oH,KAAK,CAACrkH,EAAEskH,YAAYtkH,EAAE4G,UAAUqiC,GAAGjpC,EAAEipC,GAAG+6E,KAAK,UAAU50F,OAAO,UAAUpvB,EAAE6iH,OAAO,CAACA,MAAM7iH,EAAE6iH,UAAt3C,SAASlnH,GAAG,IAAIK,EAAEE,EAAE6B,EAAEpB,EAAEhB,EAAEonB,OAAO/iB,GAAGhE,EAAE,WAAW,OAAO6lF,EAAElmF,EAAE,EAAEO,EAAEP,EAAE4oH,SAAS,WAAWl0F,aAAatyB,GAAGA,EAAE6jB,WAAA,WAAuB,OAAO5lB,KAAME,EAAE,GAAG+B,EAAEtC,EAAEonB,OAAOrnB,EAAE,CAAConH,MAAMpnH,EAAE,CAAA,EAAGiB,GAAGA,EAAEmmH,QAAQnnH,EAAEioH,aAAa,CAAC3yG,KAAKtU,EAAEjB,EAAE,CAAA,EAAGiB,EAAEsU,MAAM,CAAA,IAAKxU,EAAE,CAACqmH,MAAM,CAACA,MAAM,WAAW9iH,GAAG,EAAEwkH,QAAQ,SAAS9oH,IAAG,SAAUC,EAAED,GAAG,OAAOC,EAAE8oH,SAAS,KAAK,GAAG,KAAK,GAAG9oH,EAAEoqB,iBAAiB,KAAKpqB,EAAE8oH,QAAQ5nC,EAAEnhF,GAAGshF,EAAEthF,GAAG,MAAM,KAAK,GAAGA,EAAEgpH,QAAQ/oH,EAAEoqB,iBAAiBrqB,EAAEq3F,QAAQ,GAAGyb,EAAE9yG,EAAEC,GAAG,MAAM,KAAK,EAAED,EAAEkoH,YAAYe,WAAWjpH,EAAEq3F,QAAQ,GAAGyb,EAAE9yG,EAAEC,GAAG,MAAM,KAAK,GAAGD,EAAEonH,MAAMpkH,MAAM,GAAG28F,EAAE3/F,GAAG,CAA1P,CAA4PA,EAAEC,EAAE,EAAEwiC,KAAK,WAAWk9D,EAAE1/F,EAAE,GAAGsV,KAAK,CAAC2zG,UAAU,SAASjpH,GAAGA,EAAEoqB,gBAAgB,EAAE2e,MAAM,SAAShpC,GAAG,IAAUC,EAAED,EAAOM,EAAiCE,EAAyC6B,EAAnFpC,EAAiJD,EAAxIM,GAAPN,EAAiJC,GAAtI2nH,WAAWz9B,IAAI19D,cAAcjsB,EAAEQ,MAAMqC,KAAKrD,EAAEuV,KAAKtP,iBAAiB3F,KAAI+B,EAAEpC,EAAEyV,OAAO8N,QAAQljB,KAAM+B,EAAEmH,WAAWlJ,GAAGwyG,EAAE9yG,EAAEC,EAAEO,EAAE6N,QAAQhM,GAAS,IAAIk8G,EAAEx9G,EAAAA,SAAYf,EAAEM,IAAIL,EAAEioH,aAAa,UAAU5nH,KAAKiC,EAAEvC,GAAGM,KAAKiC,EAAEvC,GAAGM,GAAGS,EAAEf,GAAGM,OAAQi+G,EAAEh8G,EAAAA,SAAYvC,EAAEM,GAAGL,EAAED,GAAGkU,iBAAiB5T,EAAEiC,EAAEvC,GAAGM,GAAG,EAAG,CAAuek+G,CAAEv+G,GAAGA,EAAEuT,KAAKopD,MAAM,OAAOvmB,EAAEp2C,GAAGgH,KAAA,SAAehH,GAAG,IAAI,OAAOyC,EAAEE,KAAKtC,EAAE,OAAOL,GAAG,OAAOoC,EAAEpC,EAAE,GAAIoC,GAAG,SAASK,IAAI,OAAOgB,EAAE,OAAOzD,GAAGO,GAAG,CAAC,OAAOkC,EAAEE,KAAKtC,EAAE,EAAG,CAAC,SAAS+M,EAAEpN,GAAG,IAAID,EAAEC,EAAEI,UAAUL,EAAE8lH,KAAK,WAAWxY,EAAExpG,KAAK,EAAE9D,EAAEkI,MAAM,SAASjI,GAAGkmF,EAAEriF,KAAK7D,EAAE,EAAED,EAAEmpH,OAAO,WAAW,GAAGrlH,KAAK6jH,QAAQ,CAAC,IAAI1nH,EAAE6D,KAAK6jH,QAAQ15G,WAAWhO,EAAEg3E,aAAanzE,KAAKsjH,MAAMtjH,KAAK6jH,SAAS1nH,EAAEouE,YAAYvqE,KAAK6jH,QAAQ,CAAC,IAAI3nH,EAAEu+G,GAAGv+G,EAAE8D,MAAMujB,OAAA,SAAiBpnB,EAAEK,GAAGN,EAAEC,GAAGmU,oBAAoB9T,EAAEN,EAAEqnB,OAAOpnB,GAAGK,GAAG,EAAG,EAAEN,EAAE2wC,KAAK,WAAWltC,EAAEK,KAAK,EAAE9D,EAAEkuB,MAAM,WAAWyxE,EAAE77F,KAAK,EAAE9D,EAAEopH,KAAK,SAASnpH,GAAGsuG,EAAEtuG,EAAE6D,KAAK,EAAE9D,EAAE6C,KAAK,WAAWs+E,EAAEr9E,KAAK,EAAE9D,EAAEgvB,SAAS,WAAWsyD,EAAEx9E,KAAK,EAAE9D,EAAEqpH,OAAO,SAASppH,GAAG6yG,EAAEhvG,KAAK,KAAK7D,EAAE,EAAED,EAAEspH,OAAO,SAASrpH,EAAED,EAAEM,GAAG,OAAO6jC,EAAElkC,EAAED,EAAEM,EAAE,CAAC,CAAC,OAAO,SAASL,EAAED,GAAG8D,KAAKqH,QAAQnL,EAAE8D,KAAKypC,GAAGttC,EAAEspH,WAAWtpH,EAAEspH,WAAW,GAAG,EAAEzlH,KAAKV,KAAK,eAAeU,KAAK6jH,QAAQ,EAAE7jH,KAAKioC,UAAU,EAAEjoC,KAAK+kH,SAAS,EAAE/kH,KAAKokH,YAAY,CAACh9G,SAAS,WAAWi/E,IAAI,KAAKg+B,WAAW,GAAGrkH,KAAK8jH,WAAW,CAACz9B,IAAI,MAAI,SAAWlqF,GAAG,IAAID,EAAEC,EAAEmD,KAAK5C,EAAEP,EAAEkL,QAAQ9I,EAAEpC,EAAEioH,YAAYjnH,EAAEhB,EAAE2nH,WAAW,IAAA,IAAQtjH,KAAK9D,EAAE,GAAG,WAAWF,EAAEE,EAAE8D,IAAI,IAAA,IAAQvD,KAAKd,EAAEqE,KAAKrE,EAAEqE,GAAG,CAAA,GAAI9D,EAAE8D,GAAGrE,EAAEqE,GAAGvD,GAAGP,EAAE8D,GAAGvD,QAAQd,EAAEqE,GAAG9D,EAAE8D,GAAGrE,EAAE8F,SAAS9F,EAAE8F,UAAU,IAAI/F,EAAEqC,EAAEumH,YAAYvmH,EAAEumH,aAAa3oH,EAAE8F,SAAS1D,EAAEkrC,GAAGlrC,EAAEkrC,IAAIvtC,EAAE,SAASC,EAAEstC,GAAGtsC,EAAEssC,GAAGtsC,EAAEssC,IAAIvtC,EAAE,UAAUC,EAAEmnH,MAAM7kH,EAAEtC,EAAE8F,SAAS,CAAxT,CAA0TjC,MAAMuJ,EAAEzK,KAAKkB,KAAK7D,GAAGqtG,EAAExpG,KAAK,CAAC,KAAuDmB,QAAejF,kCCU9vRwpH,GAAuB,CAAA,EAEvBC,GAAsB,aAE5B,IAAItB,GADsB,GAG1B,MAAMuB,GAAc1jH,SAASsL,cAAgCm4G,IAEhDE,GAAcC,UACvB,MAAMC,EAAsB,CAAA,EACtBjoH,EAAM8nH,IAAahkH,aAAa,YACtC,IAAK9D,EACD,OAAOioH,EAGX,MAAMC,QAAiB9iH,MAAMpF,GAC7B,IAAKkoH,EAAS5iH,GACV,MAAM,IAAI6kB,MAAM,yBAAyB+9F,EAASjoH,UAAUioH,EAAShoH,cAezE,aAZ0BgoH,EAAS3iH,QAC9BxB,QAASokH,IACLF,EAAQE,EAAIC,OACbH,EAAQE,EAAIC,KAAO,IAEvBH,EAAQE,EAAIC,KAAKjnH,KAAKgnH,EAAI3mH,MAC1BomH,GAAKO,EAAI3mH,MACLomH,GAAKO,EAAI3mH,QAA6C,IAApComH,GAAKO,EAAI3mH,MAAMiL,QAAQ07G,EAAIC,KACvCR,GAAKO,EAAI3mH,MAAMjC,OAAO,CAAC4oH,EAAIC,MAC3B,CAACD,EAAIC,OAGZH,GAOLI,GAAK,IAAIC,GAAa,CACxBnkH,SAAU0jH,GACVj2G,KAAM,CACFsvC,IAAK8mE,gBACKD,KAIN,OAHc/oH,OAAO4F,KAAKgjH,IAAM7iH,IAAKyF,IAC1B,CAAEpJ,MAAOwmH,GAAKp9G,GAAO25B,KAAM35B,MAI1C5F,KAAM,CAAC,QACPo2D,OAAO,GAEXgrD,WAAY,CACRz9B,IAAK,IACLg9B,MAAO,gBACPvvF,SAAU,SACV40E,WAAW,GAEf0b,YAAa,CACT/9B,IAAK,MACLg9B,MAAO,sCACPgB,gBAAY,EACZS,YAAa,iCAEjBI,QAAQ,IAGZ,IAAImB,IAAiB,EAErBnkH,SAASsL,cAAcm4G,KAAsBv1G,iBAAiB,YAAa,SAAUuT,GAC7EA,EAAM4gF,OAAOof,UAAUzkH,iBAAiBonH,SACxC3iG,EAAM4gF,OAAOof,UAAUzkH,SAEnBykB,EAAM4gF,OAAOof,UAAUzkH,OAAS0mH,KAChCA,GAAY1mH,MAAQykB,EAAM4gF,OAAOof,UAAUzkH,MAAMA,OAErD0mH,IAAaW,MAAMC,gBAE3B,GAEAtkH,SAASsL,cAAcm4G,KAAsBv1G,iBAAiB,QAAWuT,IAC/C,KAAlBA,EAAMshG,UACFoB,IACAF,GAAGZ,OAAO,GAEVK,IAA4C,KAA7BA,GAAY1mH,MAAM0f,SAAkBg/B,MAAM97B,OAAO8jG,GAAY1mH,SAC5E0mH,GAAYW,MAAMC,gBAG9B,GAEAtkH,SAASsL,cAAcm4G,KAAsBv1G,iBAAiB,WAAY,KACtEi2G,IAAiB,IAGrBnkH,SAASsL,cAAcm4G,KAAsBv1G,iBAAiB,UAAW,SAAUuT,GAC/E,IAAIlS,EAAOkS,EAAM4gF,OAAOqf,QAExB,MAAMnnH,EAASgV,EAAKhV,OAChBA,EAAS,IACTgV,EAAKwE,KAAK,CAAChZ,EAAQiZ,KACf,MAAMuwG,EAAgBxpH,EAAEiC,MAAM+iC,KAAKt8B,cAC7B+gH,EAAgBxwG,EAAEhX,MAAM+iC,KAAKt8B,cAC7Bu+G,EAAgBvgG,EAAM4gF,OAAO2f,MAAMv+G,cAEzC,OAAI8gH,EAAM9nG,WAAWulG,KAAWwC,EAAM/nG,WAAWulG,IACtC,GACCuC,EAAM9nG,WAAWgF,EAAM4gF,OAAO2f,QAAUwC,EAAM/nG,WAAWulG,GAC1D,EAEAuC,EAAME,cAAcD,KAGnCj1G,EAAOA,EAAKpS,MAAM,EAAGglH,IACjB5nH,EAAS4nH,IACT5yG,EAAKxS,KAAK,CACNC,MAAO,WACH,MAAM0nH,EAASvC,GAAa,GAC5B8B,GAAG/hH,QACHigH,GAAauC,CACjB,EACAroG,MAAO,eAKnBoF,EAAM4gF,OAAOqf,QAAUnyG,CAC3B,GAEAm0G,IAAax1G,iBAAiB,QAAS,KACnCi0G,GA/HsB,KCN1B,MAAMwC,GAAU,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,WACxE,IAAIC,GAAW,EAEf,MAAMvlH,GAAkBW,SAASsL,cAAc,QAAS5L,aAAa,SAAW,KAE1EmlH,GAAa,IAAIC,EAAW,CAC9BzlH,mBACAd,gBAAgB,EAChBwB,SAAU,cACVhC,OAAO,EACPM,iBAAkB,KAClBiC,SAAS,EACTlB,WAAY,qBACZyB,cAAe,SAInB,GAFC/B,OAAe+lH,WAAaA,GAEH,KAAtBE,SAASC,SACTH,GACK7jH,MAAM,CAAC3B,KAAkB,GACzB4B,KAAME,IACH,MAAM8jH,EAAsC,CAAA,EAC5CjlH,SAASC,iBAAiB,eAAeN,QAAQyG,IAC7C6+G,EAAY7+G,EAAK1G,aAAa,cAAiB0G,EAAKy5B,YAExDglF,GAAWxjH,IAAIhC,GAAiB,IAAI4lH,KAAgB9jH,MAEvD+jH,MAAOjrH,GAAa0D,QAAQ+9E,IAAI,8BAA8BzhF,EAAE4D,YAErEgnH,GACK7jH,MAAM,CAAC,OACPC,KAAK,KACF4jH,GAAWM,oBAEdD,MAAOjrH,GAAa0D,QAAQ+9E,IAAI,8BAA8BzhF,EAAE4D,iBACzE,GAAmC,oBAAjBunH,aAA8B,CAC5C,MAAMH,EAAsC,CAAA,EAC5CjlH,SAASC,iBAAiB,eAAeN,QAAQyG,IAC7C6+G,EAAY7+G,EAAK1G,aAAa,cAAiB0G,EAAKy5B,YAExDglF,GAAWxjH,IAAI,KAAM,IAAI4jH,KAAgBG,aAAaC,KACtDR,GAAWxjH,IAAI,KAAM+jH,aAAaE,GACtC,CAEA,MAAMC,GAAkB,IAAIC,gBAAgB1mH,OAAOimH,SAASzB,QACtD3sC,GAAS/7E,OAAO6qH,YAAYF,GAAgB/gG,WAC5C5oB,GAAMkD,OAAOimH,SAAS/O,OAASl3G,OAAOimH,SAASW,SAOrD,SAASC,GAAW3nE,GAChB,GAAIA,EAAMvhC,WAAW,KAAM,OAAOuhC,EAClC,MAAM3hC,EAAQ2hC,EAAM3hC,MAAM,8CAC1B,GAAIA,EAAO,CAIP,MAAO,IAHG2S,SAAS3S,EAAM,IAAInf,SAAS,IAAI0oH,SAAS,EAAG,OAC5C52F,SAAS3S,EAAM,IAAInf,SAAS,IAAI0oH,SAAS,EAAG,OAC5C52F,SAAS3S,EAAM,IAAInf,SAAS,IAAI0oH,SAAS,EAAG,MAE1D,CACA,OAAO5nE,CACX,CAGA,IAAI6lE,GAAoC,CAAA,EACxCF,KAAc1iH,KAAKjE,GAAU6mH,GAAU7mH,GAEvC,IAAIkI,GAAkD,KACtD,MAAM2gH,GAAiB3mH,aAAaC,QAAQ,YACxC0mH,KACA3gH,GAAW5D,KAAKC,MAAMskH,KAkgC1B,MAAMC,GAAW,IAp/BjB,MAwCI,WAAA1rH,CAAY2rH,GARZjoH,KAAA63G,OAAiB,EACjB73G,KAAAigE,OAAiB,EACjBjgE,KAAAivG,KAAe,EACfjvG,KAAAkoH,aAAoC,KACpCloH,KAAAykG,MAAkC,CAAA,EAElCzkG,KAAAmoH,WAAqB,SAGjBnoH,KAAK6C,IAAMX,SAASsL,cAAc,QAClCxN,KAAKioH,OAASA,EACdjoH,KAAK2kG,SJ3HL,CACNwD,SAHe,GAIf9d,UAJuB,KAKvByd,UALiC,qBAMjCD,gBAAiB,UACjBiT,gBAAgB,EAChBO,sBAAsB,EACtBlI,gBAAgB,EAChBC,YAAa,UACbF,cAAe,KACf5E,gBAAiB,QACjBQ,mBAAmB,EACnBzG,UAAW,YACXyN,aAAc,CACbzO,YAAa,UACb4O,YAAa,EACb7O,UAAW,UACX8O,UAAW,EACX5mD,YAAa,GACbymD,WAAY,IACZ9mD,KAAM,CAAC,IAAK,KACZG,aAAa,EACb4mD,gBAAgB,GAEjB7M,aAAa,EACbC,SAAU,EACVC,UAAW,4BACXC,cAAe,IACf2J,aAAc,KACdlL,SAAS,EACTH,WAAW,EACXD,aAAa,EACba,QAAQ,EACR5B,UAAU,EACVpa,WAAY,aACZga,kBAAkB,EAClBqQ,aAAc,CACbtwG,SAAS,EACT25C,MAAO,UACP8F,OAAQ,GACR4wD,UAAW,KIoFN52G,KAAKooH,WAAa,IAAIC,GAAWroH,KAAKioH,QAEtCjoH,KAAKyiH,aAAe,CAChBZ,SAAS,EACTyG,eAAe,EACfC,iBAAiB,GAGrB,MAAMC,EAASpnH,aAAaC,QAAQ,YACpC,GAAImnH,EAAQ,CACR,MAAM/lC,EAASj/E,KAAKC,MAAM+kH,QAEG,IAAzB/lC,EAAOgmC,oBAA0D,IAA3BhmC,EAAOolB,kBAC7CplB,EAAOolB,gBAAkBplB,EAAOgmC,oBAEV,IAAtBhmC,EAAOimC,iBAAiD,IAArBjmC,EAAOqlB,YAC1CrlB,EAAOqlB,UAAYrlB,EAAOimC,iBAEL,IAArBjmC,EAAOkmC,gBAAgD,IAArBlmC,EAAO4H,YACzC5H,EAAO4H,UAAY5H,EAAOkmC,gBAEP,IAAnBlmC,EAAOmmC,cAA8C,IAArBnmC,EAAO4lB,YACvC5lB,EAAO4lB,UAAY5lB,EAAOmmC,QAAU,SAAW,kBAG3B,IAApBnmC,EAAO0lB,UAA0B1lB,EAAO0lB,SAAW,IACnD1lB,EAAO0lB,SAAW1lB,EAAO0lB,SAAW,SAEf,IAArB1lB,EAAO4H,WAA2B5H,EAAO4H,UAAY,IACrD5H,EAAO4H,UAAY5H,EAAO4H,UAAY,YAGnC5H,EAAOgmC,qBACPhmC,EAAOimC,kBACPjmC,EAAOkmC,iBACPlmC,EAAOmmC,eACPnmC,EAAOomC,oBACPpmC,EAAOqmC,kBAEPrmC,EAAO4mB,iBACP5mB,EAAO6mB,qBAEP7mB,EAAOmkB,SAGd,MAAMmiB,EJzKV,CACN5gB,SAHe,GAIf9d,UAJuB,KAKvByd,UALiC,qBAMjCD,gBAAiB,UACjBiT,gBAAgB,EAChBO,sBAAsB,EACtBlI,gBAAgB,EAChBC,YAAa,UACbF,cAAe,KACf5E,gBAAiB,QACjBQ,mBAAmB,EACnBzG,UAAW,YACXyN,aAAc,CACbzO,YAAa,UACb4O,YAAa,EACb7O,UAAW,UACX8O,UAAW,EACX5mD,YAAa,GACbymD,WAAY,IACZ9mD,KAAM,CAAC,IAAK,KACZG,aAAa,EACb4mD,gBAAgB,GAEjB7M,aAAa,EACbC,SAAU,EACVC,UAAW,4BACXC,cAAe,IACf2J,aAAc,KACdlL,SAAS,EACTH,WAAW,EACXD,aAAa,EACba,QAAQ,EACR5B,UAAU,EACVpa,WAAY,aACZga,kBAAkB,EAClBqQ,aAAc,CACbtwG,SAAS,EACT25C,MAAO,UACP8F,OAAQ,GACR4wD,UAAW,KIkIF,IAAA,MAAW55G,KAAOF,OAAO4F,KAAKqmH,QACN,IAAhBtmC,EAAOzlF,KACNgD,KAAK2kG,SAAiB3nG,GAAOylF,EAAOzlF,SAItB,IAAnBylF,EAAOo/B,UAAuB7hH,KAAKyiH,aAAaZ,QAAUp/B,EAAOo/B,cACxC,IAAzBp/B,EAAO6lC,gBAA6BtoH,KAAKyiH,aAAa6F,cAAgB7lC,EAAO6lC,oBAClD,IAA3B7lC,EAAO8lC,kBAA+BvoH,KAAKyiH,aAAa8F,gBAAkB9lC,EAAO8lC,sBAC3D,IAAtB9lC,EAAO0lC,aAA0BnoH,KAAKmoH,WAAa1lC,EAAO0lC,WAClE,CAEAnoH,KAAK6C,IAAIuN,iBAAiB,YAAeuT,IACrC,MAAMuqF,EAAOluG,KAAKioH,OAAO7iB,QAAQzhF,EAAM4gF,OAAOe,QAC1C4I,GACAluG,KAAKgpH,WAAW9a,EAExB,GAEAluG,KAAK6C,IAAIuN,iBAAiB,OAAUuT,IAChC3jB,KAAKipH,cAActlG,EAAM4gF,QACzBvkG,KAAKivG,KAAOtrF,EAAM4gF,OAAO0K,KACzBjvG,KAAK6hH,QAAQxxG,QACjB,GAEArQ,KAAK6C,IAAIuN,iBAAiB,WAAY,KAClCpQ,KAAKkpH,iBAGTlpH,KAAK6C,IAAIuN,iBAAiB,kBAAqBuT,IAC3C3jB,KAAK0iH,SAASnG,SAAS54F,EAAM4gF,OAAOe,OACxC,GAEAtlG,KAAK6C,IAAIuN,iBAAiB,gBAAmBuT,IACzCvB,WAAW,KACHuB,EAAM4gF,OAAOmH,cACb1rG,KAAKmpH,SAASxlG,EAAM4gF,OAAOmH,eAGvC,GAEA1rG,KAAKulH,OAASrjH,SAASsL,cAAc,SACrCxN,KAAKopH,QAAUlnH,SAASsL,cAAc,aACtCxN,KAAK4jG,OAAS1hG,SAASsL,cAAc,WACrCxN,KAAKqpH,gBAAkBnnH,SAASsL,cAAc,eAC9CxN,KAAKspH,mBAAqBpnH,SAASsL,cAAc,mBACjDxN,KAAKupH,gBAAkBrnH,SAASsL,cAAc,eAC9CxN,KAAKwpH,YAActnH,SAASC,iBAAiB,uBAC7CnC,KAAKypH,eAAiBvnH,SAASsL,cAAc,UAC7CxN,KAAK0pH,YAAcxnH,SAASsL,cAAc,WAC1CxN,KAAKwlH,OAAStjH,SAASsL,cAAc,gBACrCxN,KAAK2pH,aAAeznH,SAASsL,cAAc,kBAC3CxN,KAAK4pH,cAAgB1nH,SAASsL,cAAc,aAC5CxN,KAAK6pH,UAAY3nH,SAASsL,cAAc,SACxCxN,KAAK8pH,QAAU5nH,SAASsL,cAAc,uBACtCxN,KAAK+pH,cAAgB7nH,SAASsL,cAAc,aAC5CxN,KAAKgqH,aAAe9nH,SAASsL,cAAc,kBAC3CxN,KAAKiqH,oBAAsB/nH,SAASsL,cAAc,kCAClDxN,KAAKkqH,SAAWhoH,SAASsL,cAAc,aACvCxN,KAAKmqH,mBAAqBjoH,SAASsL,cAAc,wBACjDxN,KAAKoqH,aAAeloH,SAASsL,cAAc,mBAC3CxN,KAAKqqH,iBAAmBnoH,SAASsL,cAAc,kBAC/CxN,KAAKsqH,oBAAsBpoH,SAASsL,cAAc,0BAClDxN,KAAKuqH,QAAUroH,SAASsL,cAAc,gBACtCxN,KAAKwqH,UAAYtoH,SAASikC,eAAe,aACzCnmC,KAAK6hH,QAAU,IAAIH,GAAQ1hH,KAAK6C,IAAK7C,MAEjCA,KAAKkqH,WACLlqH,KAAKkqH,SAAS95G,iBAAiB,SAAUuT,IACrC,MAAM/R,EAAS+R,EAAM/R,OACrB5R,KAAKyqH,eAAe74G,EAAO1S,OAC3Bc,KAAKmqH,mBAAmBpoF,UAAYnwB,EAAO84G,gBAAgB,GAAG9oH,aAAa,qBAAuB,GAClGs6B,GAAM3S,YAAYvpB,KAAK6pH,YAAY1rG,SAGvCne,KAAK6pH,UAAUz5G,iBAAiB,iBAAkB,KACR,GAAlCpQ,KAAKkqH,SAAUr/F,SAASpuB,QCnQhBqpH,OAAOhoH,IAC/B,MAAMkoH,QAAiB9iH,MAAMpF,GAC7B,IAAKkoH,EAAS5iH,GACV,MAAM,IAAI6kB,MAAM,yBAAyB+9F,EAASjoH,UAAUioH,EAAShoH,cAEzE,OAAOgoH,EAAS3iH,QD+PCsnH,CAAa3qH,KAAKkqH,SAAUtoH,aAAa,cAAkCuB,KAAMynH,IAC9EA,EAAK/oH,QAASwkF,IACV,MAAMwkC,EAAS3oH,SAAS83B,cAAc,UACtC6wF,EAAO9oH,aAAa,QAASskF,EAAIykC,UACjCD,EAAO9oH,aAAa,oBAAqBskF,EAAI90E,MAAQ,IAAIw5G,WAAW,OAAQ,OAC5EF,EAAO9oF,UAAYskD,EAAIykC,SACvB9qH,KAAKkqH,SAAUjwF,OAAO4wF,KAE1B7qH,KAAKmqH,mBAAmBpoF,UAAY/hC,KAAKkqH,SAAUc,mBAAmBppH,aAAa,qBAAuB,QAM1H5B,KAAKqpH,iBAAiBj5G,iBAAiB,QAAS,IAAMpQ,KAAKirH,aAC3DjrH,KAAKspH,oBAAoBl5G,iBAAiB,QAASuT,IAC/CA,EAAM4C,iBACNvmB,KAAKkrH,kBAETlrH,KAAKupH,iBAAiBn5G,iBAAiB,QAAS,IAAMpQ,KAAKmrH,aAE3DnrH,KAAKwpH,YAAY3nH,QAAQyG,GACrBA,EAAK8H,iBAAiB,QAASuT,IAC3B,MAAMqvB,EAAQjxB,WAAY4B,EAAM64C,cAA8B56D,aAAa,gBAC3E5B,KAAK0iH,SAAShT,aAAa1vG,KAAK0iH,SAAS5F,UAAY9pE,MAI7DhzC,KAAKwlH,OAAOp1G,iBAAiB,SAAUuT,IACnCA,EAAM4C,iBACNvmB,KAAKorH,iBAGTprH,KAAK2pH,cAAcv5G,iBAAiB,SAAUuT,IAC1CA,EAAM4C,iBACNvmB,KAAKqrH,mBAGTrrH,KAAK4pH,eAAex5G,iBAAiB,iBAAkB,KAClDpQ,KAAK4pH,cAAep8G,cAAc,UAA+B4oB,UAGtEp2B,KAAK0pH,YAAYt5G,iBAAiB,iBAAkB,KAC/CpQ,KAAK0pH,YAAYl8G,cAAc,UAA+B4oB,UAGnEp2B,KAAK+pH,cAAc35G,iBAAiB,gBAAiB,KACjDpQ,KAAKsrH,qBAGTtrH,KAAK+pH,cAAc35G,iBAAiB,iBAAkB,KACjDpQ,KAAK+pH,cAAcv8G,cAAc,UAA+B4oB,UAGrEp2B,KAAKgqH,aAAa55G,iBAAiB,SAAUuT,IACzCA,EAAM4C,iBACNvmB,KAAKurH,uBAGTvrH,KAAKiqH,oBAAoB75G,iBAAiB,QAASuT,IAC/CA,EAAM4C,iBACNvmB,KAAKwrH,kBAGTxrH,KAAKwqH,WAAWp6G,iBAAiB,gBAAiB,KAC9CpQ,KAAKyrH,iBAAiBzrH,KAAK63G,OAAQ73G,KAAKigE,UAG5CjgE,KAAK0rH,gBACL1rH,KAAKqqH,iBAAiBloH,iBAAiB,KAAKN,QAAQ4D,IAChDA,EAAQ2K,iBAAiB,QAASuT,IAC9BA,EAAM4C,iBACNvmB,KAAK0rH,cAAejmH,EAAwB7D,aAAa,mBAAgB,OAIjF5B,KAAK0iH,SAAW,IAAIiJ,GAAY3rH,KAAKioH,OAAQjoH,KAAK2kG,SAAU3kG,KAAK6C,IACrE,CAEA,sBAAA+oH,GACI,MAA2B,WAApB5rH,KAAKmoH,WAA0B,UAAYnoH,KAAK2kG,SAASkD,eACpE,CAEA,eAAAgkB,GACI,MAAMxsB,EAAKr/F,KAAK4rH,yBAChB1pH,SAASsL,cAAc,QAAS3G,MAAMkqD,WAAasuC,EACnDr/F,KAAK6C,IAAIgE,MAAMghG,gBAAkBxI,EAEjC,IAAA,MAAWt1F,KAAS7M,MAAMqC,KAAKS,KAAK6C,IAAIgoB,UACpC9gB,EAAMlD,MAAMghG,gBAAkBxI,EAElC,MAAMysB,EJpSd,SAAW3vH,GACV,IAAID,EAAGM,EAAGE,EAAG6B,EAAIpC,EAAEoiB,MAAM,iCACzB,GAAIhgB,EAAGrC,EAAIg1B,SAAS3yB,EAAE,IAAM,IAAK/B,EAAI00B,SAAS3yB,EAAE,IAAM,IAAK7B,EAAIw0B,SAAS3yB,EAAE,IAAM,QAAA,MACvEpC,EAAEwiB,WAAW,MAAQxiB,EAAEM,QAAU,GACrC,MAAO,GADiCP,EAAIg1B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAM,IAAK7C,EAAI00B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAM,IAAK3C,EAAIw0B,SAAS/0B,EAAEkD,MAAM,EAAG,GAAI,IAAM,GACjJ,CACZ,OAAQ0I,KAAKD,IAAI5L,EAAGM,EAAGE,GAAKqL,KAAKC,IAAI9L,EAAGM,EAAGE,IAAM,CAClD,CI8RwBqvH,CAAe1sB,GAAM,GAC/B/7F,EAASwoH,EAAU,YAAc,GACjCE,EAAO9pH,SAASikC,eAAe,QAC/BhC,EAAQjiC,SAASikC,eAAe,SAClC6lF,IAAMA,EAAKnlH,MAAMvD,OAASA,GAC1B6gC,IAAOA,EAAMt9B,MAAMvD,OAASA,EACpC,CAEA,eAAA2oH,CAAgBzI,GAKZ,GAJAxjH,KAAKmoH,WAAa3E,EAClBxjH,KAAK2kG,SAASiD,UAAqB,UAAT4b,EAC1BxjH,KAAK2kG,SAASgD,YAAuB,YAAT6b,EAEf,WAATA,EAAmB,CACnB,MAAMjG,EAAmC,GAA1Bv9G,KAAK2kG,SAASta,UAC7BrqF,KAAK0iH,SAASzI,kBAAkB,IAAIiS,GAAe,IAAIC,GAAgB5O,EAAQ,WACnF,MACIv9G,KAAK0iH,SAASzI,kBAAkB,IAAIkS,IAGxCnsH,KAAK0iH,SAAS95E,UACd5oC,KAAK6rH,iBACT,CAEA,IAAA7J,GAMI,GAJwB,WAApBhiH,KAAKmoH,YACLnoH,KAAKisH,gBAAgBjsH,KAAKmoH,YAG1BtvC,GAAOrwE,SAAWxI,KAAKkqH,SAGvB,OAFAlqH,KAAKyqH,eAAe5xC,GAAOrwE,cAC3B4jH,QAAQC,aAAa,KAAM,GAAIvuH,IAInC,IAAIwhC,EAAOt/B,KAAKioH,OAAO1J,WAAW,GAAG3G,YACjC0U,EAAO,EACPzzC,GAAOqtC,KACPlmH,KAAKmpH,SAASj4F,SAAS2nD,GAAOqtC,MAC9BkG,QAAQC,aAAa,KAAM,GAAIvuH,MAE3B+6E,GAAOv5C,MACPA,EAAOpO,SAAS2nD,GAAOv5C,MACvB8sF,QAAQC,aAAa,KAAM,GAAIvuH,KACX,OAAbsJ,IAAqBA,GAASk4B,OACrCA,EAAOl4B,GAASk4B,KAChBgtF,EAAOllH,GAAS64D,QAEpBjgE,KAAKusH,WAAWjtF,EAAMgtF,GAE9B,CAEA,kBAAAf,GACI,MAAMiB,EAAgC,CAAA,EAEtCxsH,KAAK+pH,cAAc5nH,iBAAmC,kBAAkBN,QAAQ4D,IAC5E,MAAMnG,EAAOmG,EAAQ7D,aAAa,QAClC,IAAKtC,EAAM,OACX,MAAMwlB,EAAOrf,EAAQ7D,aAAa,QAE9B4qH,EAASltH,GADA,aAATwlB,EACiBrf,EAAQgnH,QACT,WAAT3nG,EACU/C,WAAWtc,EAAQvG,OAEnBuG,EAAQvG,QAIjCc,KAAK+pH,cAAc5nH,iBAAoC,yBAAyBN,QAAQ4D,IACpF,MAAMnG,EAAOmG,EAAQ7D,aAAa,QAC9BtC,IAAMktH,EAASltH,GAAQmG,EAAQvG,SAIN,qBAA7BstH,EAASle,iBACTke,EAASle,gBAAkB,OAC3Bke,EAAS1d,mBAAoB,QACO,IAA7B0d,EAASle,kBAChBke,EAAS1d,mBAAoB,GAIjC,MAAMia,EJraN,CACN5gB,SAHe,GAIf9d,UAJuB,KAKvByd,UALiC,qBAMjCD,gBAAiB,UACjBiT,gBAAgB,EAChBO,sBAAsB,EACtBlI,gBAAgB,EAChBC,YAAa,UACbF,cAAe,KACf5E,gBAAiB,QACjBQ,mBAAmB,EACnBzG,UAAW,YACXyN,aAAc,CACbzO,YAAa,UACb4O,YAAa,EACb7O,UAAW,UACX8O,UAAW,EACX5mD,YAAa,GACbymD,WAAY,IACZ9mD,KAAM,CAAC,IAAK,KACZG,aAAa,EACb4mD,gBAAgB,GAEjB7M,aAAa,EACbC,SAAU,EACVC,UAAW,4BACXC,cAAe,IACf2J,aAAc,KACdlL,SAAS,EACTH,WAAW,EACXD,aAAa,EACba,QAAQ,EACR5B,UAAU,EACVpa,WAAY,aACZga,kBAAkB,EAClBqQ,aAAc,CACbtwG,SAAS,EACT25C,MAAO,UACP8F,OAAQ,GACR4wD,UAAW,KI8XN,IAAA,MAAW55G,KAAOF,OAAO4F,KAAKqmH,QACJ,IAAlByD,EAASxvH,KACRgD,KAAK2kG,SAAiB3nG,GAAOwvH,EAASxvH,SAItB,IAArBwvH,EAAS3K,UAAuB7hH,KAAKyiH,aAAaZ,QAAU2K,EAAS3K,cAC1C,IAA3B2K,EAASlE,gBAA6BtoH,KAAKyiH,aAAa6F,cAAgBkE,EAASlE,oBACpD,IAA7BkE,EAASjE,kBAA+BvoH,KAAKyiH,aAAa8F,gBAAkBiE,EAASjE,sBAG7D,IAAxBiE,EAASrE,YACTnoH,KAAKisH,gBAAgBO,EAASrE,YAGlCnoH,KAAK0sH,UAAU3F,GAAWpmH,gBAAgB,iBAAkBomH,GAAW4F,kBACvEzwF,GAAM3S,YAAYvpB,KAAK+pH,gBAAgB5rG,OACvCne,KAAK4sH,eACL5sH,KAAKkpG,QAAO,EAChB,CAEA,YAAA0jB,GACIxrH,aAAaqB,QAAQ,WAAYe,KAAKi9D,UAAU,IACzCzgE,KAAK2kG,YACL3kG,KAAKyiH,aACR0F,WAAYnoH,KAAKmoH,aAEzB,CAEA,MAAAjf,CAAO2jB,GACH,OAAO7sH,KAAKusH,WAAWr7F,SAASlxB,KAAKulH,OAAOrmH,OAAQc,KAAKigE,OAAQ4sD,EACrE,CAEA,UAAAN,CAAW1U,EAAgB53C,EAAgB4sD,GACvC,GAAI7sH,KAAK63G,SAAWA,GAAU73G,KAAKigE,SAAWA,GAAU4sD,EAAO,CAC3D7sH,KAAK63G,OAASA,EACd73G,KAAKigE,OAASA,EAEd7+D,aAAaqB,QAAQ,WAAYe,KAAKi9D,UAAU,CAACnhC,KAAMu4E,EAAQ53C,YAC/DjgE,KAAK0iH,SAASpI,mBACdt6G,KAAK6rH,kBACL7rH,KAAK0iH,SAASrG,SAASxE,EAAQ53C,GAC/BjgE,KAAK0iH,SAAS1F,UAGd,MAAM8P,EAAgB9sH,KAAK0iH,SAAS9S,oBAC9Bmd,EAAa/sH,KAAK0iH,SAAS/F,UAAU,CAAC3sE,WAAY,OAAU,KAE5D1Q,EAAOt/B,KAAKioH,OAAOpjB,QAAQgT,GAgBjC,OAfA73G,KAAKulH,OAAOrmH,MAAQikH,OAAOtL,GACvBv4E,GACAt/B,KAAKgtH,qBAAqB1tF,EAAK04E,aAAc/3C,GAEjDjgE,KAAKitH,eAGLjtH,KAAKktH,mBAELltH,KAAK0iH,SAASxc,kBACVlmG,KAAKyiH,aAAa6F,eAAiBtoH,KAAKivG,MACxCjvG,KAAK0iH,SAAShT,aAAa1vG,KAAKivG,MAGpCjvG,KAAK6hH,QAAQG,KAAK8K,EAAeC,IAC1B,CACX,CACA,OAAO,CACX,CAEA,YAAAI,GACIjrH,SAASC,iBAAiB,QAAQN,WAC9B4D,EAAQ2K,iBAAiB,QAAS,IAAO3K,EAAwBk5B,QAEzE,CAEA,oBAAAquF,CAAqBppB,EAAkB3jC,GAEnC,GADAjgE,KAAK4jG,OAAO7hE,UAAY,GACpB6hE,EAAOnnG,QAAU,EACjB,OAEJ,MAAM2wH,EAAexpB,EAAOvkG,QAAQ4W,KAAK,CAAChZ,EAAGiZ,IAAMjZ,EAAIiZ,GAEvD,GAAIk3G,EAAa3wH,OAAS,GAAI,CAC1B,MAAMunC,EAAY9hC,SAAS83B,cAAc,OACzCgK,EAAUjkB,UAAUxc,IAAI,YACxB,MAAMmnB,EAASxoB,SAAS83B,cAAc,UACtCtP,EAAO3K,UAAUxc,IAAI,MAAO,gBAAiB,mBAC7CmnB,EAAO3oB,aAAa,OAAQ,UAC5B2oB,EAAO3oB,aAAa,iBAAkB,YACtC2oB,EAAOuP,OAAO/3B,SAASmrH,eAAelK,OAAOljD,KAC7C,MAAMqtD,EAAOprH,SAAS83B,cAAc,OACpCszF,EAAKvtG,UAAUxc,IAAI,iBACnBygC,EAAU/J,OAAOvP,GACjBsZ,EAAU/J,OAAOqzF,GACjB,IAAA,MAAWppB,KAASkpB,EAAc,CAC9B,MAAMG,EAAOrrH,SAAS83B,cAAc,KACpCuzF,EAAKxtG,UAAUxc,IAAI,gBAAiB,aACpCgqH,EAAKxrH,aAAa,OAAQ,KAC1BwrH,EAAKxrH,aAAa,aAAcohH,OAAOjf,IACvCqpB,EAAKtzF,OAAO/3B,SAASmrH,eAAelK,OAAOjf,KAC3CopB,EAAKrzF,OAAOszF,EAChB,CACAvtH,KAAK4jG,OAAO3pE,OAAO+J,EACvB,MACI,IAAA,MAAWkgE,KAASkpB,EAAc,CAC9B,MAAM1iG,EAASxoB,SAAS83B,cAAc,UACtCtP,EAAO3oB,aAAa,OAAQ,UAC5B2oB,EAAO3oB,aAAa,aAAcohH,OAAOjf,IACzCx5E,EAAO3K,UAAUxc,IAAI,MAAO,aACxB2gG,IAAUjkC,EACVv1C,EAAO3K,UAAUxc,IAAI,eAErBmnB,EAAO3K,UAAUxc,IAAI,iBAEzBmnB,EAAOuP,OAAO/3B,SAASmrH,eAAelK,OAAOjf,KAC7ClkG,KAAK4jG,OAAO3pE,OAAOvP,EACvB,CAEJ1qB,KAAK4jG,OAAOzhG,iBAAiB,cAAcN,QAAQyG,IAC/CA,EAAK8H,iBAAiB,QAASuT,IAC3BA,EAAM4C,iBACN,MAAM+lG,EAAOp7F,SAAUvN,EAAM/R,OAAuBhQ,aAAa,eACjE5B,KAAKusH,WAAWr7F,SAASlxB,KAAKulH,OAAOrmH,OAAQotH,MAGzD,CAEA,gBAAAb,CAAiB5T,EAAgB53C,GAC7B,MAAM3gC,EAAOt/B,KAAKioH,OAAOpjB,QAAQgT,GACjC,IAAKv4E,EAAM,OACXt/B,KAAKwqH,UAAWh9G,cAAc,cAAeu0B,UAAY,GAAGzC,EAAKunE,sBAAsBvnE,EAAKs4E,eAC5F,MAAMP,EAAQ/3E,EAAKsuE,WACnB5tG,KAAKwqH,UAAWh9G,cAAc,oBAAqBu0B,UAAYohF,OAAO9L,EAAM56G,QAC5E,MAAM+wH,EAAYxtH,KAAKwqH,UAAWh9G,cAAc,eAChDggH,EAAUzrF,UAAY,GACtBs1E,EAAM77B,QAAQ0yB,GAAQluG,KAAKytH,aAAavf,IAAOrsG,QAAQ,EAAE4nC,EAAIikF,MACzD,MAAMC,EAAa3tH,KAAKioH,OAAOpjB,QAAQ7kG,KAAKioH,OAAO7iB,QAAQsoB,IAAWpuF,MAAQ,GACxEa,EAAKj+B,SAAS83B,cAAc,MAC5B4zF,EAAW1rH,SAAS83B,cAAc,KACxC4zF,EAAS7rH,aAAa,OAAQ,KAC9B6rH,EAAS7rH,aAAa,YAAaohH,OAAO15E,IAC1CmkF,EAASpjD,YAAYtoE,SAASmrH,eAAelK,OAAO15E,KACpDmkF,EAASx9G,iBAAiB,QAASuT,IAC/BA,EAAM4C,iBACNvmB,KAAKmpH,SAASj4F,SAAUvN,EAAM64C,cAA8B56D,aAAa,iBAE7E,MAAM4F,EAAQtF,SAASmrH,eAAe,QAChCQ,EAAa3rH,SAAS83B,cAAc,KAC1C6zF,EAAW9rH,aAAa,OAAQ,KAChC8rH,EAAW9rH,aAAa,YAAaohH,OAAOuK,IAC5CG,EAAWrjD,YAAYtoE,SAASmrH,eAAe,GAAGK,MAAaC,GAAY9mB,eAAiB,SAC5FgnB,EAAWz9G,iBAAiB,QAASuT,IACjCA,EAAM4C,iBACNvmB,KAAKmpH,SAASj4F,SAAUvN,EAAM64C,cAA8B56D,aAAa,iBAE7Eu+B,EAAGlG,OAAO2zF,EAAUpmH,EAAOqmH,GAC3BL,EAAUhjD,YAAYrqC,IAE9B,CAEA,YAAAstF,CAAavf,GACT,MAAMsf,EAAgC,GAGtC,OAFA1wH,OAAO4mB,OAAOwqF,EAAKrC,OAAOvoG,OAAOsO,GAAU5R,KAAK8tH,aAAal8G,IAAS/P,QAAQksH,GAAUP,EAAUvuH,KAAK,CAACivG,EAAKzkE,GAAIskF,KACjHjxH,OAAO4mB,OAAOwqF,EAAKtC,cAActoG,OAAOsO,GAAU5R,KAAK8tH,aAAal8G,IAAS/P,QAAQksH,GAAUP,EAAUvuH,KAAK,CAACivG,EAAKzkE,GAAIskF,KACjHP,CACX,CAEA,YAAAM,CAAaE,GACT,MAAMC,EAAWjuH,KAAKioH,OAAO7iB,QAAQ4oB,GACrC,IAAKC,EAAU,OAAO,EACtB,MAAMlpB,EAAc/kG,KAAK0iH,SAASpG,iBAClC,OAAO2R,EAAS3uF,OAASylE,GAAa6S,WAC1C,CAEA,iBAAAsW,GACIluH,KAAKulH,OAAOpjH,iBAAiB,UAAUN,QAAQyG,GAAQA,EAAK0e,UAC5DhnB,KAAKioH,OACA1J,WACAj7G,UAAeg8B,EAAKsuE,WAAWnxG,OAAS,QAA4B,IAAvB6iC,EAAKunE,eAAsD,KAAvBvnE,EAAKunE,eACtF5wF,KAAK,CAAChZ,EAAGiZ,KACN,MAAMi4G,EAAQlxH,EAAE4pG,cAAclhG,cACxByoH,EAAQl4G,EAAE2wF,cAAclhG,cAC9B,OAAIwoH,EAAQC,GAAc,EACtBD,EAAQC,EAAc,EACnB,IAEVvsH,QAAQwsH,IACAA,EAAYzgB,WAAWnxG,QAG5BuD,KAAKulH,OAAOtrF,OAAO,IAAIq0F,OAAOD,EAAYxnB,cAAesc,OAAOkL,EAAYzW,iBAEpF53G,KAAKulH,OAAOn1G,iBAAiB,SAAUuT,IACnC3jB,KAAKusH,WAAWr7F,SAAUvN,EAAM/R,OAA6B1S,OAAQ,IAE7E,CAEA,YAAAksH,GACIlvF,GAAM3S,YAAYvpB,KAAK0pH,cAAcvrG,OACrC,MAAMowG,EAASvuH,KAAKwlH,OAAOrjH,iBAAiB,SAEtCqqH,EAAmC,CAAA,EAMzC,GALA+B,EAAO1sH,QAAQ4D,IACX+mH,EAAS/mH,EAAQnG,MAAQmG,EAAQvG,MACjCuG,EAAQvG,MAAQ,UAGI,IAApBstH,EAASlnB,OAAsB,CAC/B,IAAIA,EAAcknB,EAASlnB,OAAO5lG,MAAM,KACpCk+C,MAAM0nD,EAAO,MACbA,EDvlBLogB,GCulBsBpgB,KDvlBR,GCylBbtlG,KAAKwuH,UAAUlpB,EACnB,CACJ,CAEA,cAAA+lB,GACInvF,GAAM3S,YAAYvpB,KAAK4pH,gBAAiBzrG,OACxC,MAAMowG,EAASvuH,KAAK2pH,aAAcxnH,iBAAiB,SAE7CqqH,EAAmC,CAAA,EACzC+B,EAAO1sH,QAAQ4D,IACX+mH,EAAS/mH,EAAQnG,MAAQmG,EAAQvG,MACjCuG,EAAQvG,MAAQ,KAEhBc,KAAKshH,SAASkL,EAAS,aAAcA,EAAS,aAC9CxsH,KAAKmpH,SAASj4F,SAASs7F,EAAS,cAExC,CAEA,QAAArD,CAAS1/E,GACL,IAAKA,EACD,OAEJ,MAAMykE,EAAOluG,KAAKioH,OAAO7iB,QAAQ37D,GACjC,GAAIykE,EAAM,CACN,MAAM3I,EAAcvlG,KAAKusH,WAAWre,EAAK5uE,KAAM4uE,EAAKpxB,GACpD98E,KAAK0iH,SAASlT,QAAQ,IACtBxvG,KAAK0iH,SAASnG,SAAS9yE,EAAI87D,GAC3BvlG,KAAKgpH,WAAW9a,EACpB,MACIluG,KAAK0sH,UAAU3F,GAAWpmH,gBAAgB,qBAAsBomH,GAAW4F,iBAEnF,CAEA,SAAA6B,CAAUnX,GACN,MAAMoX,EAAYzuH,KAAKioH,OAAO7iB,QAAQl0E,SAASiyF,OAAO9L,EAAM,MAC5D,GAAIoX,EAAW,CACX,MAAMlpB,EAAcvlG,KAAKusH,WAAWkC,EAAUnvF,KAAMmvF,EAAU3xC,GAC9D98E,KAAK0iH,SAASlT,QAAQ,IACtBxvG,KAAK0iH,SAASnG,SAASkS,EAAUhlF,GAAI87D,GACrCvlG,KAAKgpH,WAAWyF,GAEZpX,EAAM56G,OAAS,GACf46G,EAAMh4G,MAAM,GAAGwC,QAAQyjG,IACnBtlG,KAAK0iH,SAASlG,gBAAgBtrF,SAASiyF,OAAO7d,IAAU,YAGpE,MACItlG,KAAK0sH,UAAU3F,GAAWpmH,gBAAgB,qBAAsBomH,GAAW4F,iBAEnF,CAEA,QAAArL,CAAS/hH,EAAc0wB,GACnB,MAAMjzB,EAAM,GAAGuC,KAAQ0wB,IACjBy+F,EAAiB1uH,KAAKuqH,QAAQ/8G,cAAc,mBAAmBxQ,4BAAmDkC,MAClHyvH,EAAYD,GAAiB7H,GAAQC,KAAaD,GAAQpqH,QAE1DmyH,EAAgB5uH,KAAKooH,WAAW9G,SAASpwF,SAAS3xB,GAAO2xB,SAASjB,IACxE,IAAK2+F,EAGD,OAFA5uH,KAAK0sH,UAAU3F,GAAWpmH,gBAAgB,UAAWomH,GAAW4F,kBAChE7F,MACO,EAMX,GAHA9mH,KAAKykG,MAAMznG,GAAO,CAACopG,UAAWwoB,EAAe1uE,MAAOyuE,GACpD3uH,KAAKktH,oBAEAltH,KAAKuqH,QAAQ/8G,cAAc,mBAAmBxQ,OAAU,CACzD,MAAM6xH,EAAe3sH,SAAS83B,cAAc,MAC5C60F,EAAa9uG,UAAUxc,IAAI,kBAAmB,gBAAiB,qBAAsB,qBACrFsrH,EAAa9sH,aAAa,gBAAiB/E,GAE3C,MAAMkjD,EAAQh+C,SAAS83B,cAAc,SACrCkmB,EAAMn+C,aAAa,OAAQ,SAC3Bm+C,EAAMngC,UAAUxc,IAAI,cAAe,QACnC28C,EAAMhhD,MAAQyvH,EACdzuE,EAAM9vC,iBAAiB,QAAS,KAC5BpQ,KAAKykG,MAAMznG,GAAKkjD,MAAQA,EAAMhhD,MAC9Bc,KAAKktH,qBAET2B,EAAarkD,YAAYtqB,GAEzB2uE,EAAarkD,YAAYtoE,SAASmrH,eAAe,GAAG9tH,QAAW0wB,MAE/D,MAAM6+F,EAAa5sH,SAAS83B,cAAc,QAC1C80F,EAAW/uG,UAAUxc,IAAI,QAAS,eAAgB,oBAAqB,QAAS,QAChFurH,EAAWtkD,YAAYtoE,SAASmrH,eAAetG,GAAWpmH,gBAAgB,SAAUomH,GAAW4F,mBAC/FmC,EAAWC,QAAU,YACV/uH,KAAKykG,MAAMznG,GAClBgD,KAAKktH,mBACL2B,EAAa7nG,SAE0B,IAAnClqB,OAAO4F,KAAK1C,KAAKykG,OAAOhoG,QACxBuD,KAAKuqH,QAAQjgD,cAAevqD,UAAUxc,IAAI,cAGlDsrH,EAAarkD,YAAYskD,GACzB9uH,KAAKuqH,QAAQ//C,YAAYqkD,GACzB7uH,KAAKuqH,QAAQjgD,cAAevqD,UAAUiH,OAAO,YACjD,CACA,OAAO,CACX,CAEA,gBAAAkmG,GACIltH,KAAK0iH,SAASrc,aACdvpG,OAAO4pB,QAAQ1mB,KAAKykG,OAAO5iG,QAAQ,EAAE7E,EAAKgyH,MACtC,MAAMC,EAAWjvH,KAAKuqH,QAAQ/8G,cAAc,mBAAmBxQ,2BACzDkjD,EAAQ+uE,GAAS/vH,OAAS8vH,EAAS9uE,MACzClgD,KAAK0iH,SAASjG,WAAWuS,EAAS5oB,UAAWlmD,IAErD,CAEA,aAAA+oE,CAAc1kB,GACV,MAEM2qB,GAAc3qB,EAAO0K,KAFX,IAEkB,IAEjCjvG,KAAK8pH,QAAQt8G,cAAc,iBAAiC3G,MAAMqC,MAAqB,IAAbgmH,EAAmB,IACzFlvH,KAAK8pH,QAAQ/pG,UAAUlW,SAAS,iBAQJ,IAAzB7J,KAAKmvH,kBACLt+F,aAAa7wB,KAAKmvH,iBAClBnvH,KAAKmvH,qBAAkB,GAE3BnvH,KAAKmvH,gBAAkB/sG,WAAW,KAC9BpiB,KAAK8pH,QAAQ/pG,UAAUxc,IAAI,UAC3BvD,KAAK8pH,QAAQ/pG,UAAUiH,OAAO,YAC/B,OAdHhnB,KAAK8pH,QAAQ/pG,UAAUxc,IAAI,WAC3BvD,KAAK8pH,QAAQ/pG,UAAUiH,OAAO,UAC9BhnB,KAAKmvH,gBAAkB/sG,WAAW,KAC9BpiB,KAAK8pH,QAAQ/pG,UAAUxc,IAAI,UAC3BvD,KAAK8pH,QAAQ/pG,UAAUiH,OAAO,YAC/B,KAWX,CAEA,UAAAgiG,CAAW9a,GACPluG,KAAK0iH,SAASxc,kBACdlmG,KAAKkoH,aAAeha,EACpBluG,KAAK0iH,SAASld,qBAAqB0I,EAAKzkE,IACxCzpC,KAAKovH,aAAalhB,EACtB,CAEA,YAAAgb,GACIlpH,KAAKkoH,aAAe,KACpBloH,KAAK0iH,SAASxc,kBACdlmG,KAAK0iH,SAAShd,gBACd1lG,KAAKitH,cACT,CAEA,YAAAmC,CAAalhB,GACT,MAAMmhB,EAAUrvH,KAAKioH,OAAOxgB,cAAcyG,EAAKxG,KAC/C1nG,KAAKopH,QAAQviH,MAAMiqD,OAAS,aAAau+D,EAAQvsH,QAAQ,OAAQ,SAASA,QAAQ,IAAK,YACvF9C,KAAKopH,QAAQviH,MAAM6uB,QAAU,UAC7B11B,KAAKopH,QAAQ57G,cAAc,YAAau0B,UAAYohF,OAAOjV,EAAKzkE,IAC/DzpC,KAAKopH,QAAQ57G,cAAc,cAAoCzL,aAAa,OAAQ,GAAGjE,UAAWowG,EAAKzkE,MACxGzpC,KAAKopH,QAAQ57G,cAAc,cAAeu0B,UAAYmsE,EAAK5uG,KAC3DU,KAAKopH,QAAQ57G,cAAc,aAAcu0B,UAAYohF,OAAOjV,EAAKxG,KACjE1nG,KAAKopH,QAAQ57G,cAAc,YAAau0B,UAAYohF,OAAOjV,EAAK3kG,GAChEvJ,KAAKopH,QAAQ57G,cAAc,YAAau0B,UAAYohF,OAAOjV,EAAKzkG,GAChEzJ,KAAKopH,QAAQ57G,cAAc,YAAau0B,UAAYohF,OAAOjV,EAAKpxB,GAChE98E,KAAKopH,QAAQ57G,cAAc,cAAeu0B,UAAYmsE,EAAK39F,MAAQ,GAEnEvQ,KAAKsvH,eAAetvH,KAAKopH,QAAQ57G,cAAc,UAAY0gG,EAAKrC,OAChE7rG,KAAKsvH,eAAetvH,KAAKopH,QAAQ57G,cAAc,YAAc0gG,EAAKtC,cAElE5rG,KAAKuvH,cAAcvvH,KAAKopH,QAAQ57G,cAAc,aAAe0gG,EAAKshB,UAClExvH,KAAKyvH,aAAazvH,KAAKopH,QAAQ57G,cAAc,QAAUu4G,GAAQ7X,EAAKzkE,KAAO,GAC/E,CAEA,aAAA8lF,CAAcvrF,EAAwBwrF,GAClC,MAAME,EAAgB1rF,EAAUx2B,cAAc,MAC9CkiH,EAAc3tF,UAAY,GAC1B,IAAIxO,GAAO,EACX,IAAA,MAAWo8F,KAAeH,EAAU,CAChCj8F,GAAO,EACP,MAAMq8F,EAAc1tH,SAAS83B,cAAc,MAC3C41F,EAAY7vG,UAAUxc,IAAI,aAC1B,MAAMvG,EAAMkF,SAAS83B,cAAc,KACnCh9B,EAAIi9B,OAAO,GAAG01F,MACd,MAAMzwH,EAAQgD,SAAS83B,cAAc,KACrC96B,EAAM+6B,OAAO,GAAGu1F,EAASG,GAAa5E,WAAW,MAAO,SACxD7rH,EAAMo6B,UAAY,QAClBs2F,EAAY31F,OAAOj9B,EAAKkC,GACxBwwH,EAAcz1F,OAAO21F,EACzB,CACA5rF,EAAUn9B,MAAM6uB,QAAUnC,EAAO,UAAY,MACjD,CAEA,cAAA+7F,CAAetrF,EAAwB6nE,GACnC,MAAM6jB,EAAgB1rF,EAAUx2B,cAAc,MAC9CkiH,EAAc3tF,UAAY,GAC1B,IAAIxO,GAAO,EACX,IAAA,MAAWs8F,KAAQhkB,EACft4E,GAAO,EACPm8F,EAAcz1F,OAAOj6B,KAAK8vH,SAASD,EAAMhkB,EAAMgkB,KAEnD7rF,EAAUn9B,MAAM6uB,QAAUnC,EAAO,UAAY,MACjD,CAEA,YAAAk8F,CAAazrF,EAAwB0hF,GACjC,MAAMgK,EAAgB1rF,EAAUx2B,cAAc,MAC9CkiH,EAAc3tF,UAAY,GAC1B,IAAIxO,GAAO,EACX,IAAA,MAAW0yF,KAAOP,EAAM,CACpBnyF,GAAO,EACP,MAAM9tB,EAAUvD,SAAS83B,cAAc,MACvCv0B,EAAQw0B,OAAO/3B,SAASmrH,eAAepH,IACvCyJ,EAAcz1F,OAAOx0B,EACzB,CACAu+B,EAAUn9B,MAAM6uB,QAAUnC,EAAO,UAAY,MACjD,CAEA,QAAAu8F,CAASD,EAAcpmF,GACnB,MAAMsmF,EAAc7tH,SAAS83B,cAAc,MAErCg2F,EAAU9tH,SAAS83B,cAAc,QACvCg2F,EAAQjuH,aAAa,YAAa8tH,GAClCG,EAAQjuF,UAAY/hC,KAAKiwH,aAAaJ,GACtCE,EAAY91F,OAAO+1F,GACnBD,EAAY91F,OAAO/3B,SAASmrH,eAAe,OAE3C,MAAME,EAAOrrH,SAAS83B,cAAc,KACpCuzF,EAAKxrH,aAAa,OAAQ,KAC1BwrH,EAAKxrH,aAAa,YAAaohH,OAAO15E,IACtC8jF,EAAKxrF,UAAYohF,OAAO15E,GACxB8jF,EAAKn9G,iBAAiB,QAASuT,IAC3BA,EAAM4C,iBACNvmB,KAAKmpH,SAASj4F,SAAUvN,EAAM64C,cAA8B56D,aAAa,iBAE7EmuH,EAAY91F,OAAOszF,GAEnB,MAAMU,EAAWjuH,KAAKioH,OAAO7iB,QAAQ37D,GACrC,GAAIwkF,EAAU,CACV,MAAMlpB,EAAc/kG,KAAK0iH,SAASpG,iBAClC,GAAI2R,EAAS3uF,OAASylE,GAAa6S,YAAa,CAC5C,MAAMt4E,EAAOt/B,KAAKioH,OAAOpjB,QAAQopB,EAAS3uF,MAC1CywF,EAAY91F,OAAO/3B,SAASmrH,eAAe,UAC3C,MAAM6C,EAAWhuH,SAAS83B,cAAc,KACxCk2F,EAASnuH,aAAa,OAAQ,KAC9BmuH,EAASnuH,aAAa,YAAaohH,OAAO8K,EAASxkF,KACnDymF,EAASnuF,UAAYzC,GAAMunE,eAAiB,IAC5CqpB,EAAS9/G,iBAAiB,QAASuT,IAC/BA,EAAM4C,iBACNvmB,KAAKmpH,SAASj4F,SAAUvN,EAAM64C,cAA8B56D,aAAa,iBAE7EmuH,EAAY91F,OAAOi2F,EACvB,CACJ,CAEA,OAAOH,CACX,CAEA,SAAArD,CAAUzqF,GACNjiC,KAAKypH,eAAej8G,cAAc,eAAgBu0B,UAAYE,EAC9DyL,GAAMlkB,oBAAoBxpB,KAAKypH,gBAAgBl2F,MACnD,CAEA,YAAA08F,CAAatvG,GACT,OAAOomG,GAAWpmH,gBAAgBggB,IAAQA,CAC9C,CAEA,aAAA+qG,CAAcnpH,GACVvC,KAAKsqH,oBAAoBvqG,UAAUiH,OAAO,QAAQ+/F,GAAW4F,mBACzDpqH,GACAwkH,GAAWM,gBAAgB9kH,GAE/BvC,KAAKsqH,oBAAoBvqG,UAAUxc,IAAI,QAAQwjH,GAAW4F,kBAC9D,CAEA,YAAAM,GACIjtH,KAAKopH,QAAQviH,MAAM6uB,QAAU,MACjC,CAEA,gBAAA41F,GACI,MAAM6E,EAAmC,IAAInwH,KAAK2kG,YAAa3kG,KAAKyiH,aAAc0F,WAAYnoH,KAAKmoH,YAE/D,SAAhCgI,EAAY7hB,iBAA8B6hB,EAAYrhB,oBACtDqhB,EAAY7hB,gBAAkB,oBAElC,MAAM8hB,EAASpwH,KAAK+pH,cAAcv8G,cAAc,YAChD,GAAK4iH,EAEL,IAAA,MAAWC,KAAWF,EAAa,CAE/B,MAAM7M,EAAQ8M,EAAO5iH,cAAc,eAAe6iH,OAClD,GAAI/M,EAAO,CAC4B,aAA/BA,EAAM1hH,aAAa,QACnB0hH,EAAMmJ,QAAU0D,EAAYE,GACU,UAA/B/M,EAAM1hH,aAAa,QAC1B0hH,EAAMpkH,MAAQ2oH,GAAWsI,EAAYE,IAErC/M,EAAMpkH,MAAQixH,EAAYE,GAE9B,QACJ,CAEA,MAAM9K,EAAS6K,EAAO5iH,cAAc,gBAAgB6iH,OAChD9K,IACAA,EAAOrmH,MAAQixH,EAAYE,GAEnC,CACJ,CAEA,aAAA7E,GACI,MACM8E,EAAmC,IJ56BzC,CACNnoB,SAHe,GAIf9d,UAJuB,KAKvByd,UALiC,qBAMjCD,gBAAiB,UACjBiT,gBAAgB,EAChBO,sBAAsB,EACtBlI,gBAAgB,EAChBC,YAAa,UACbF,cAAe,KACf5E,gBAAiB,QACjBQ,mBAAmB,EACnBzG,UAAW,YACXyN,aAAc,CACbzO,YAAa,UACb4O,YAAa,EACb7O,UAAW,UACX8O,UAAW,EACX5mD,YAAa,GACbymD,WAAY,IACZ9mD,KAAM,CAAC,IAAK,KACZG,aAAa,EACb4mD,gBAAgB,GAEjB7M,aAAa,EACbC,SAAU,EACVC,UAAW,4BACXC,cAAe,IACf2J,aAAc,KACdlL,SAAS,EACTH,WAAW,EACXD,aAAa,EACba,QAAQ,EACR5B,UAAU,EACVpa,WAAY,aACZga,kBAAkB,EAClBqQ,aAAc,CACbtwG,SAAS,EACT25C,MAAO,UACP8F,OAAQ,GACR4wD,UAAW,KIs4BFiL,SAAS,EACTyG,eAAe,EACfC,iBAAiB,EACjBJ,WAAY,UAEViI,EAASpwH,KAAK+pH,cAAcv8G,cAAc,YAChD,GAAK4iH,EAEL,IAAA,MAAWC,KAAWC,EAAa,CAC/B,MAAMhN,EAAQ8M,EAAO5iH,cAAc,eAAe6iH,OAClD,GAAI/M,EAAO,CAC4B,aAA/BA,EAAM1hH,aAAa,QACnB0hH,EAAMmJ,QAAU6D,EAAYD,GACU,UAA/B/M,EAAM1hH,aAAa,QAC1B0hH,EAAMpkH,MAAQ2oH,GAAWyI,EAAYD,IAErC/M,EAAMpkH,MAAQoxH,EAAYD,GAE9B,QACJ,CACA,MAAM9K,EAAS6K,EAAO5iH,cAAc,gBAAgB6iH,OAChD9K,IACAA,EAAOrmH,MAAQoxH,EAAYD,GAEnC,CACJ,CAEA,SAAApF,GACI,MAAMsF,EAASvwH,KAAK0iH,SAAS/F,YAC7B,IAAK4T,EAAQ,OACb,MAAMtzH,EAAIiF,SAAS83B,cAAc,KACjC/8B,EAAE8E,aAAa,OAAQwuH,GACvBtzH,EAAE8E,aAAa,YAAa/B,KAAK0iH,SAASpG,kBAAkBzV,eAAiB,OAAS,QACtF3kG,SAASsL,cAAc,QAASysB,OAAOh9B,GACvCA,EAAEioC,QACFjoC,EAAE+pB,QACN,CAEA,aAAAkkG,GACI,MAAMsF,EAAMxwH,KAAK0iH,SAAS1G,YAC1B,IAAKwU,EAAK,OACV,MAAMvzH,EAAIiF,SAAS83B,cAAc,KACjC/8B,EAAE8E,aAAa,OA56BZ,sBADS0uH,mBA66BwBD,GA76BG1tH,QAAQ,KAAM,OAAOA,QAAQ,KAAM,QA86B1E7F,EAAE8E,aAAa,YAAa/B,KAAK0iH,SAASpG,kBAAkBzV,eAAiB,OAAS,QACtF3kG,SAASsL,cAAc,QAASysB,OAAOh9B,GACvCA,EAAEioC,QACFjoC,EAAE+pB,QACN,CAEA,SAAAmkG,GACI,GAA6B,oBAAlBuF,cAA+B,CACtC,MAAMC,EAAc3wH,KAAK0iH,SAAS9F,gBAC9B+T,GACAA,EAAYxtH,KAAKg/D,GACb3gE,UAAUovH,UAAUvrH,MAAM,CAAC,IAAIqrH,cAAc,CAAC,YAAavuD,OAGnEniE,KAAK0sH,UAAU3F,GAAWpmH,gBAAgB,SAAUomH,GAAW4F,iBACnE,MACI3sH,KAAK0sH,UAAU3F,GAAWpmH,gBAAgB,eAAgBomH,GAAW4F,iBAE7E,CAEA,WAAAkE,CAAYC,GACR,MAAMC,EAmHd,SAAyBpwG,GACrB,MAAMlF,EAVV,SAAuB+K,EAA6By3B,GAChD,IAAA,MAAWu/B,KAAKh3D,EACZ,GAAIA,EAAI/e,eAAe+1E,IAAMh3D,EAAIg3D,KAAOv/B,EACpC,OAAOu/B,EAGf,MACJ,CAGmBwzC,CAAcC,GAAMtwG,GACnC,gBAAOlF,EAAuBA,EAASkF,CAC3C,CAtH8BuwG,CAAgBJ,GAClC9wH,KAAKkoH,cAAgBloH,KAAKkoH,aAAarc,MAAMklB,IAC7C/wH,KAAKmpH,SAASnpH,KAAKkoH,aAAarc,MAAMklB,GAE9C,CAEA,gBAAAI,GACI,MAAMC,EAAwC,CAC1CC,QAAS,KACTC,QAAS,IACTC,QAAS,KACTC,QAAS,IACTC,QAAS,IACTC,QAAS,KACTC,QAAS,IACTC,QAAS,KACTC,eAAgB,IAChBC,aAAc,KAGlB9wH,OAAOoP,iBAAiB,UAAWuT,IAC3B3jB,KAAKyiH,aAAa8F,kBAIH,OAAf5kG,EAAM8b,OACN9b,EAAM4C,iBACNvmB,KAAK+xH,YAGLpuG,EAAMuwF,SAA0B,SAAfvwF,EAAM8b,OACvB9b,EAAM4C,iBACNvmB,KAAKgyH,iBAIbhxH,OAAOoP,iBAAiB,UAAWuT,IAC3BzhB,SAASsL,cAAc,gBAAkBxN,KAAKyiH,aAAa8F,kBAI3D5kG,EAAMuwF,SAA0B,SAAfvwF,EAAM8b,OACvBz/B,KAAKirH,YACLtnG,EAAM4C,kBAGS,UAAf5C,EAAM8b,OACNz/B,KAAK0iH,SAAShT,aAAuC,IAA1B1vG,KAAK0iH,SAAS5F,WACzCn5F,EAAM4C,kBAGS,UAAf5C,EAAM8b,OACNz/B,KAAK0iH,SAAShT,aAAuC,GAA1B1vG,KAAK0iH,SAAS5F,WACzCn5F,EAAM4C,kBAGN6qG,EAAc3pH,eAAekc,EAAM8b,QACnCz/B,KAAK6wH,YAAYO,EAAcztG,EAAM8b,OACrC9b,EAAM4C,oBAGlB,CAEA,QAAAwrG,GACI71F,GAAM1S,oBAAoBxpB,KAAK6pH,WAAWt2F,MAC9C,CAEA,UAAAy+F,GACI91F,GAAM1S,oBAAoBxpB,KAAK0pH,aAAan2F,MAChD,CAEA,cAAAk3F,CAAepkC,GC1jCYy/B,OAAOz/B,EAAa4rC,KAC/C,MAAMn0H,EAAMm0H,EAAQnvH,QAAQ,QAASujF,GAC/B2/B,QAAiB9iH,MAAMpF,GAC7B,IAAKkoH,EAAS5iH,GACV,MAAM,IAAI6kB,MAAM,4BAA4B+9F,EAASjoH,UAAUioH,EAAShoH,cAE5E,OAAOgoH,EAAS3iH,QDqjCZ6uH,CAAgB7rC,EAAKrmF,KAAKkqH,SAAUtoH,aAAa,eAAgBuB,KAAKuM,IAClE1P,KAAKioH,OAAS,IAAIkK,GAAUziH,EAAqByuG,QACjDn+G,KAAKooH,WAAa,IAAIC,GAAWroH,KAAKioH,QACtCjoH,KAAK0iH,SAAW,IAAIiJ,GAAY3rH,KAAKioH,OAAQjoH,KAAK2kG,SAAU3kG,KAAK6C,KACzC,WAApB7C,KAAKmoH,YAAyBnoH,KAAKisH,gBAAgBjsH,KAAKmoH,YAC5DnoH,KAAKkuH,oBACLluH,KAAKusH,WAAWvsH,KAAK63G,OAAQ73G,KAAKigE,QAAQ,GAC1CjgE,KAAK0sH,UAAU,0BAA0BrmC,KACzCrmF,KAAKoqH,aAAaroF,UAAY,IAAIskD,IAClCrmF,KAAKoqH,aAAavjH,MAAM6uB,QAAU,WAE1C,GAG8B,IAAIy8F,GAAUC,QAASjU,SACxDn9G,OAAegnH,SAAWA,GAC3BA,GAASmF,eACTnF,GAASkG,oBACTlG,GAAShG,OACTgG,GAASmJ,mBAET,MAAMF,GAA+B,CACjCpnB,MAAO,IACPC,MAAO,IACPC,KAAM,IACNC,KAAM,IACNC,UAAW,KACXC,UAAW,KACXC,UAAW,KACXC,UAAW,KACXC,GAAI,IACJC,KAAM","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,115]}
|