{ "version": 3, "sources": ["../../app/assets/shared/components/confirm_account_deletion.js", "../../app/assets/shared/components/data_confirm.js", "../../app/assets/shared/components/foldable.js", "../../app/assets/shared/components/input_type_number.js", "../../app/assets/shared/components/invalid_input.js", "../../../../shared/node_modules/lazysizes/lazysizes.js", "../../app/assets/shared/components/query_diet.js", "../../app/assets/shared/components/video.js", "../../app/assets/frontend/components/active_on_clicked.js", "../../app/assets/frontend/components/alert_message_on_click.js", "../../app/assets/frontend/components/app_status.js", "../../app/assets/frontend/components/code_search.js", "../../app/assets/frontend/components/content_code_search.js", "../../app/assets/frontend/components/full_avatar.js", "../../app/assets/frontend/components/fullscreen.js", "../../app/assets/frontend/components/go_back.js", "../../app/assets/frontend/components/image_in_lightbox.js", "../../app/assets/frontend/components/javascript_links.js", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/BitMatrix.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/binarizer/index.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/decodeData/BitStream.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/decodeData/index.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/reedsolomon/GenericGFPoly.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/reedsolomon/GenericGF.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/reedsolomon/index.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/version.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/decoder/decoder.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/extractor/index.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/locator/index.ts", "../../../../shared/node_modules/qr-scanner/node_modules/jsqr-es6/src/index.ts", "../../../../shared/node_modules/qr-scanner/src/worker.ts", "../../app/assets/frontend/components/readonly_checkboxes.js", "../../app/assets/frontend/components/scale_to_fill_container.js", "../../app/assets/frontend/components/scrollable_pagination.js", "../../app/assets/frontend/components/service_worker.js", "../../app/assets/frontend/components/slide_form.js", "../../../../shared/node_modules/unpoly/unpoly.js", "../../app/assets/shared/util/environment.js", "../../app/assets/shared/config/unpoly.js", "../../app/assets/frontend/util/current_user.js", "../../app/assets/frontend/config/unpoly.js", "../../app/assets/shared/util/load_script.js", "../../app/assets/shared/components/animated_icon.js", "import-glob:./shared/components/**/*.js", "../../app/assets/shared/util/application.js", "../../app/assets/shared/util/timeout.js", "../../app/assets/shared/components/flash_message.js", "../../app/assets/shared/components/lazysizes.js", "import-glob:./frontend/components/**/*.js", "../../../../shared/node_modules/ismobilejs/src/isMobile.ts", "../../app/assets/frontend/components/add_to_homescreen.js", "../../app/assets/frontend/util/device_type.js", "../../app/assets/frontend/components/autofocus_only_desktop.js", "../../../../shared/node_modules/autosize/dist/autosize.esm.js", "../../app/assets/frontend/components/autosize.js", "../../app/assets/frontend/util/fix_caret_position.js", "../../app/assets/frontend/components/code_search_field.js", "../../app/assets/frontend/util/callback_registry.js", "../../app/assets/frontend/util/game_state.js", "../../app/assets/frontend/components/course-navigation-submit.js", "../../app/assets/frontend/components/course_units_scroller.js", "../../app/assets/frontend/components/game.js", "../../app/assets/frontend/util/blanks_text.js", "../../../../shared/node_modules/sortablejs/modular/sortable.core.esm.js", "../../app/assets/frontend/util/sortable.js", "../../app/assets/frontend/util/sortable_with_single_drop_targets.js", "../../app/assets/frontend/util/set_notification.js", "../../app/assets/frontend/components/game_slide_blanks_text.js", "../../app/assets/frontend/util/derangement.js", "../../app/assets/frontend/util/nugget_comparator.js", "../../app/assets/frontend/util/grid_game.js", "../../app/assets/frontend/util/nugget_finder.js", "../../app/assets/frontend/components/game_slide_grid.js", "../../app/assets/frontend/util/image_assignment.js", "../../app/assets/frontend/components/game_slide_image_assignment.js", "../../../../shared/node_modules/qr-scanner/src/qr-scanner.ts", "../../app/assets/frontend/components/layout.js", "../../app/assets/frontend/components/login_code_field.js", "../../app/assets/frontend/util/analytics.js", "../../app/assets/frontend/components/qr_scanner.js", "../../app/assets/frontend/util/question.js", "../../app/assets/frontend/components/question.js", "../../app/assets/frontend/components/read_aloud.js", "../../app/assets/frontend/components/track_page_view.js", "../../app/assets/frontend/util/video_play_button.js", "../../app/assets/frontend/components/video_multiple_choice.js", "../../app/assets/frontend/components/video_slide.js"], "sourcesContent": ["up.compiler('[confirm-account-deletion]', (element) => {\n\n const message = 'Zum dauerhaften L\u00F6schen deines Accounts, tippe bitte das Wort L\u00D6SCHEN ein.'\n const requiredInput = 'L\u00D6SCHEN'\n\n function onClick(event) {\n const input = prompt(message)\n const sanitizedInput = (input || '').trim().toUpperCase()\n const expectedInput = requiredInput.trim().toUpperCase()\n\n if (input === null) {\n alert('Du hast abgebrochen. Dein Account wurde nicht gel\u00F6scht.')\n event.preventDefault()\n } else if (sanitizedInput !== expectedInput) {\n alert(`Deine Eingabe war \u201E${sanitizedInput}\u201C statt \u201E${expectedInput}\u201C. Dein Account wurde nicht gel\u00F6scht.`)\n event.preventDefault()\n } else {\n // submit form to delete account\n }\n }\n\n element.addEventListener('click', onClick)\n\n})\n", "up.compiler('[data-confirm]', (element) => {\n\n function onClick(event) {\n const message = element.getAttribute('data-confirm')\n if (!confirm(message)) up.event.halt(event)\n }\n\n element.addEventListener('click', onClick)\n})\n", "up.compiler('[foldable]', (element) => {\n\n const foldableTriggers = element.querySelectorAll('[foldable--trigger]')\n const foldableContent = element.querySelector('[foldable--content]')\n const foldableIconExpanded = element.querySelector('[foldable--icon-expanded]')\n const foldableIconCollapsed = element.querySelector('[foldable--icon-collapsed]')\n\n foldableTriggers.forEach((trigger) => {\n trigger.addEventListener('click', () => {\n up.element.toggle(foldableContent)\n up.element.toggle(foldableIconExpanded)\n up.element.toggle(foldableIconCollapsed)\n if (up.element.isVisible(foldableContent)) {\n up.reveal(foldableContent, { padding: 30 })\n }\n })\n })\n\n})\n", "up.compiler('input[type=\"number\"]', (element) => {\n\n // Number inputs allow incrementing/decrementing with arrow keys, and support exponential notation\n // (in some browsers even regular letters). We want neither.\n element.addEventListener('keydown', (event) => {\n const key = event.key\n if (key === 'ArrowUp' || key === 'ArrowDown' || (key.length === 1 && !event.ctrlKey && !event.altKey && !key.match(/[0-9\\-+,.]/))) {\n event.preventDefault()\n }\n })\n\n // Some browser (at least Firefox) will increment/decrement a number when using the mouse's scroll wheel\n // above a focused number input. Since this can lead to users changing values by accident, we want to avoid that.\n element.addEventListener('wheel', (event) => {\n if (element.matches(':focus')) {\n event.preventDefault()\n }\n })\n\n})\n", "const selector = ['input', 'textarea', 'select']\n .map(tagName => `${tagName}.is-invalid`)\n .join(', ')\n\nup.compiler(selector, (element) => {\n\n const inputGroup = element.closest('.input-group')\n const formGroup = element.closest('.form-group')\n\n function setInputGroupInvalid(isInvalid) {\n inputGroup?.classList?.toggle('is-invalid', isInvalid)\n }\n\n function unsetOtherFormGroupFieldsInvalid() {\n if (formGroup) {\n Array.from(formGroup.querySelectorAll('.is-invalid')).forEach((element) => {\n element.classList.remove('is-invalid')\n })\n formGroup.querySelector('.invalid-feedback.d-block')?.classList?.remove('d-block')\n }\n }\n\n function unsetInvalid() {\n element.classList.remove('is-invalid')\n unsetOtherFormGroupFieldsInvalid()\n setInputGroupInvalid(false)\n }\n\n setInputGroupInvalid(true)\n element.addEventListener('input', unsetInvalid, { once: true })\n\n})\n", "(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n", "up.macro('#query_diet', (element) => {\n\n element.removeAttribute('onclick')\n up.on(element, 'click', () => { element.remove() })\n\n})\n", "up.compiler('video', (element) => {\n\n element.addEventListener('play', () => {\n element.currentTime = 0\n }, { once: true })\n\n})\n", "up.compiler('[active-on-clicked]', function(element) {\n up.on(element, 'click', (evt) => {\n // in feature specs: spec is too fast and still shows Unpoly's .up-active class\n const classNames = element.getAttribute('class').replaceAll(' up-active', '').replaceAll(' ', '.')\n document.querySelectorAll(`.${classNames}`).forEach((sibling) => {\n sibling.classList.remove('-active')\n })\n element.classList.add('-active')\n })\n})\n", "up.compiler('[alert-message-on-click]', (element, { message }) => {\n element.addEventListener('click', () => {\n alert(message)\n })\n})\n", "let currentRelease\nlet lastNotified\n\nconst newReleaseMessage = `\n
\n

\n Es gibt \u00C4nderungen an der Radfahrausbildung-App.\n
\n Bitte lade bei n\u00E4chster Gelegenheit neu!\n

\n

\n Beachte: Du bleibst angemeldet und kannst sofort weitermachen.\n

\n

\n Wenn du nicht m\u00F6chtest, musst du nicht jetzt neu laden. Die Anwendung funktioniert dann aber vielleicht nicht richtig.\n

\n\n

\n \n \n

\n
\n`\n\nup.compiler('[app-status]', (element, { release, frequency }) => {\n\n currentRelease ??= release\n frequency ??= 30000\n\n const time = new Date().getTime()\n\n function recentlyNotified() {\n return lastNotified && (time - lastNotified) < frequency\n }\n\n function showReloadNotification() {\n up.layer.open({\n content: newReleaseMessage,\n size: 'auto',\n onAccepted: () => { location.reload() },\n })\n }\n\n if (currentRelease !== release && !recentlyNotified()) {\n showReloadNotification()\n lastNotified = time\n }\n\n})\n", "up.compiler('[code-search]', (element) => {\n\n const button = element.querySelector('button')\n const input = element.querySelector('input[type=\"text\"]')\n\n input.addEventListener('input', onInput)\n element.addEventListener('submit', onSubmit)\n\n function onInput() {\n enableOrDisable()\n }\n\n function onSubmit(event) {\n event.preventDefault()\n const value = getValue()\n\n if (value) {\n up.request(`/c/${getValue()}.json`).then(onSuccess).catch(onError)\n } else {\n input.focus()\n }\n }\n\n function onSuccess(response) {\n up.visit(response.json.url)\n input.value = ''\n }\n\n function onError(response) {\n alert(response.json.error || 'Hoppla, das hat nicht geklappt! Bitte versuche es sp\u00E4ter nochmal.')\n input.focus()\n }\n\n function enableOrDisable() {\n // If no value is entered, the submit button should appear disabled, but still be clickable.\n // When users click the \"disabled\" button, we focus the input instead.\n const disabled = !getValue()\n button.classList.toggle('disabled', disabled)\n button.classList.toggle('pe-auto', disabled)\n }\n\n function getValue() {\n return input.value.trim()\n }\n\n enableOrDisable()\n\n})\n", "up.compiler('[content-code-search]', (element) => {\n document.body.classList.add('-search-shown')\n\n return () => {\n document.body.classList.remove('-search-shown')\n }\n})\n", "up.compiler('.full-avatar', (element) => {\n\n const image = element.querySelector('img')\n let animating = false\n\n async function onClick() {\n if (animating) return\n\n animating = true\n const animations = [bounce, flip, wheelie]\n const animation = animations[Math.floor(Math.random() * animations.length)]\n\n await animation()\n image.style.removeProperty('transform')\n image.style.removeProperty('transform-origin')\n animating = false\n }\n\n async function bounce() {\n async function bounceBy(offset, duration) {\n if (!image.isConnected) return Promise.resolve()\n\n await up.animate(image, { transform: `translateY(-${offset}px)` }, { duration: duration / 2 })\n return up.animate(image, { transform: 'translateY(0)' }, { duration: duration / 2 })\n }\n\n await bounceBy(100, 240)\n await bounceBy(60, 120)\n await bounceBy(30, 60)\n return bounceBy(15, 30)\n }\n\n async function flip() {\n return up.animate(image, { transform: 'rotateY(-720deg)' }, { duration: 1080 })\n }\n\n async function wheelie() {\n async function turnBy(degrees, duration) {\n if (!image.isConnected) return Promise.resolve()\n\n await up.animate(image, { transform: `rotate(-${degrees}deg)` }, { duration: duration * 2 / 3 })\n return up.animate(image, { transform: 'rotate(0)' }, { duration: duration * 1 / 3 })\n }\n\n image.style.setProperty('transform-origin', 'left bottom')\n await turnBy(25, 360)\n return turnBy(5, 60)\n }\n\n element.addEventListener('click', onClick)\n\n})\n", "up.compiler('[full-screen-toggle]', (elem) => {\n function toggleFullscreen(evt) {\n const container = evt.target.closest('main.container')\n\n if (container.classList.contains('-fullscreen')) {\n exitFullScreen()\n container.classList.remove('-fullscreen')\n } else {\n enterFullScreen(container)\n container.classList.add('-fullscreen')\n }\n }\n\n up.on(elem, 'click', toggleFullscreen)\n up.on('fullscreenchange', closeFullscreenOnKeyEvent)\n up.on('webkitfullscreenchange', closeFullscreenOnKeyEvent)\n up.on('mozfullscreenchange', closeFullscreenOnKeyEvent)\n up.on('MSFullscreenChange', closeFullscreenOnKeyEvent)\n\n function closeFullscreenOnKeyEvent(evt) {\n if (!document.fullscreenElement && !document.webkitIsFullScreen && !document.mozFullScreen && !document.msFullscreenElement) {\n exitFullScreen()\n const container = evt.target.closest('main.container')\n container.classList.remove('-fullscreen')\n }\n }\n\n function exitFullScreen() {\n if (document.exitFullscreen) {\n document.exitFullscreen()\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen()\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n }\n\n function enterFullScreen(elem) {\n if (elem.requestFullscreen) {\n elem.requestFullscreen()\n } else if (elem.mozRequestFullScreen) {\n elem.mozRequestFullScreen()\n } else if (elem.webkitRequestFullscreen) {\n elem.webkitRequestFullscreen()\n } else if (elem.msRequestFullscreen) {\n elem.msRequestFullscreen()\n }\n }\n})\n", "up.compiler('[go-back]', (element) => {\n element.addEventListener('click', () => history.back())\n})\n", "up.compiler('[image-in-lightbox]', (element, { url, showButton = true }) => {\n\n if (element.closest('.-draggable')) return\n\n let lightbox\n\n const container = up.element.affix(element.parentElement, '.lightbox-image-container')\n container.appendChild(element)\n\n if (showButton) {\n const button = up.element.createFromHTML(`\n \n `)\n container.appendChild(button)\n }\n\n function openLightbox() {\n lightbox ??= buildLightbox()\n up.element.setAttrs(lightbox, { open: true })\n }\n\n function closeLightbox() {\n up.element.setAttrs(lightbox, { open: false })\n }\n\n function destroyLightbox() {\n lightbox?.remove()\n }\n\n function buildLightbox() {\n lightbox = up.element.createFromHTML(`\n
\n
\n \n
\n
\n `)\n document.body.appendChild(lightbox)\n lightbox.addEventListener('click', closeLightbox)\n return lightbox\n }\n\n container.addEventListener('click', openLightbox)\n\n return destroyLightbox\n\n})\n", "// we allowlist some javascript: links and eval them ourselves, otherwise CSP will block execution\n\nup.compiler('a[href^=\"javascript:\"]', (element) => {\n element.addEventListener('click', (event) => {\n event.preventDefault()\n const javascriptCode = element.href.split(':')[1].trim()\n switch (javascriptCode) {\n case 'gaOptout()': {\n // Method is provided through Google Tag Manager\n window.gaOptout()\n break\n }\n }\n })\n})\n", "export class BitMatrix {\n public static createEmpty(width: number, height: number) {\n return new BitMatrix(new Uint8ClampedArray(width * height), width);\n }\n\n public width: number;\n public height: number;\n private data: Uint8ClampedArray;\n\n constructor(data: Uint8ClampedArray, width: number) {\n this.width = width;\n this.height = data.length / width;\n this.data = data;\n }\n\n public get(x: number, y: number): boolean {\n if (x < 0 || x >= this.width || y < 0 || y >= this.height) {\n return false;\n }\n return !!this.data[y * this.width + x];\n }\n\n public set(x: number, y: number, v: boolean) {\n this.data[y * this.width + x] = v ? 1 : 0;\n }\n\n public setRegion(left: number, top: number, width: number, height: number, v: boolean) {\n for (let y = top; y < top + height; y++) {\n for (let x = left; x < left + width; x++) {\n this.set(x, y, !!v);\n }\n }\n }\n}\n", "import {BitMatrix} from \"../BitMatrix\";\nimport {GreyscaleWeights} from \"../index\";\n\nconst REGION_SIZE = 8;\nconst MIN_DYNAMIC_RANGE = 24;\n\nfunction numBetween(value: number, min: number, max: number): number {\n return value < min ? min : value > max ? max : value;\n}\n\n// Like BitMatrix but accepts arbitry Uint8 values\nclass Matrix {\n private data: Uint8ClampedArray;\n private width: number;\n constructor(width: number, height: number, buffer?: Uint8ClampedArray) {\n this.width = width;\n const bufferSize = width * height;\n if (buffer && buffer.length !== bufferSize) {\n throw new Error(\"Wrong buffer size\");\n }\n this.data = buffer || new Uint8ClampedArray(bufferSize);\n }\n public get(x: number, y: number) {\n return this.data[y * this.width + x];\n }\n public set(x: number, y: number, value: number) {\n this.data[y * this.width + x] = value;\n }\n}\n\nexport function binarize(data: Uint8ClampedArray, width: number, height: number, returnInverted: boolean,\n greyscaleWeights: GreyscaleWeights, canOverwriteImage: boolean) {\n const pixelCount = width * height;\n if (data.length !== pixelCount * 4) {\n throw new Error(\"Malformed data passed to binarizer.\");\n }\n // assign the greyscale and binary image within the rgba buffer as the rgba image will not be needed after conversion\n let bufferOffset = 0;\n // Convert image to greyscale\n let greyscaleBuffer: Uint8ClampedArray;\n if (canOverwriteImage) {\n greyscaleBuffer = new Uint8ClampedArray(data.buffer, bufferOffset, pixelCount);\n bufferOffset += pixelCount;\n }\n const greyscalePixels = new Matrix(width, height, greyscaleBuffer);\n if (greyscaleWeights.useIntegerApproximation) {\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const pixelPosition = (y * width + x) * 4;\n const r = data[pixelPosition];\n const g = data[pixelPosition + 1];\n const b = data[pixelPosition + 2];\n greyscalePixels.set(x, y,\n // tslint:disable-next-line no-bitwise\n (greyscaleWeights.red * r + greyscaleWeights.green * g + greyscaleWeights.blue * b + 128) >> 8);\n }\n }\n } else {\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const pixelPosition = (y * width + x) * 4;\n const r = data[pixelPosition];\n const g = data[pixelPosition + 1];\n const b = data[pixelPosition + 2];\n greyscalePixels.set(x, y,\n greyscaleWeights.red * r + greyscaleWeights.green * g + greyscaleWeights.blue * b);\n }\n }\n }\n const horizontalRegionCount = Math.ceil(width / REGION_SIZE);\n const verticalRegionCount = Math.ceil(height / REGION_SIZE);\n const blackPointsCount = horizontalRegionCount * verticalRegionCount;\n\n let blackPointsBuffer: Uint8ClampedArray;\n if (canOverwriteImage) {\n blackPointsBuffer = new Uint8ClampedArray(data.buffer, bufferOffset, blackPointsCount);\n bufferOffset += blackPointsCount;\n }\n const blackPoints = new Matrix(horizontalRegionCount, verticalRegionCount, blackPointsBuffer);\n for (let verticalRegion = 0; verticalRegion < verticalRegionCount; verticalRegion++) {\n for (let hortizontalRegion = 0; hortizontalRegion < horizontalRegionCount; hortizontalRegion++) {\n let min = Infinity;\n let max = 0;\n for (let y = 0; y < REGION_SIZE; y++) {\n for (let x = 0; x < REGION_SIZE; x++) {\n const pixelLumosity =\n greyscalePixels.get(hortizontalRegion * REGION_SIZE + x, verticalRegion * REGION_SIZE + y);\n min = Math.min(min, pixelLumosity);\n max = Math.max(max, pixelLumosity);\n }\n }\n // We could also compute the real average of all pixels but following the assumption that the qr code consists\n // of bright and dark pixels and essentially not much in between, by (min + max)/2 we make the cut really between\n // those two classes. If using the average over all pixel in a block of mostly bright pixels and few dark pixels,\n // the avg would tend to the bright side and darker bright pixels could be interpreted as dark.\n let average = (min + max) / 2;\n // Small bias towards black by moving the threshold up. We do this, as in the finder patterns white holes tend\n // to appear which makes them undetectable.\n const blackBias = 1.11;\n average = Math.min(255, average * blackBias);\n if (max - min <= MIN_DYNAMIC_RANGE) {\n // If variation within the block is low, assume this is a block with only light or only\n // dark pixels. In that case we do not want to use the average, as it would divide this\n // low contrast area into black and white pixels, essentially creating data out of noise.\n //\n // Default the blackpoint for these blocks to be half the min - effectively white them out\n average = min / 2;\n\n if (verticalRegion > 0 && hortizontalRegion > 0) {\n // Correct the \"white background\" assumption for blocks that have neighbors by comparing\n // the pixels in this block to the previously calculated black points. This is based on\n // the fact that dark barcode symbology is always surrounded by some amount of light\n // background for which reasonable black point estimates were made. The bp estimated at\n // the boundaries is used for the interior.\n\n // The (min < bp) is arbitrary but works better than other heuristics that were tried.\n const averageNeighborBlackPoint = (\n blackPoints.get(hortizontalRegion, verticalRegion - 1) +\n (2 * blackPoints.get(hortizontalRegion - 1, verticalRegion)) +\n blackPoints.get(hortizontalRegion - 1, verticalRegion - 1)\n ) / 4;\n if (min < averageNeighborBlackPoint) {\n average = averageNeighborBlackPoint; // no need to apply black bias as already applied to neighbors\n }\n }\n }\n blackPoints.set(hortizontalRegion, verticalRegion, average);\n }\n }\n\n let binarized: BitMatrix;\n if (canOverwriteImage) {\n const binarizedBuffer = new Uint8ClampedArray(data.buffer, bufferOffset, pixelCount);\n bufferOffset += pixelCount;\n binarized = new BitMatrix(binarizedBuffer, width);\n } else {\n binarized = BitMatrix.createEmpty(width, height);\n }\n\n let inverted: BitMatrix = null;\n if (returnInverted) {\n if (canOverwriteImage) {\n const invertedBuffer = new Uint8ClampedArray(data.buffer, bufferOffset, pixelCount);\n inverted = new BitMatrix(invertedBuffer, width);\n } else {\n inverted = BitMatrix.createEmpty(width, height);\n }\n }\n\n for (let verticalRegion = 0; verticalRegion < verticalRegionCount; verticalRegion++) {\n for (let hortizontalRegion = 0; hortizontalRegion < horizontalRegionCount; hortizontalRegion++) {\n const left = numBetween(hortizontalRegion, 2, horizontalRegionCount - 3);\n const top = numBetween(verticalRegion, 2, verticalRegionCount - 3);\n let sum = 0;\n for (let xRegion = -2; xRegion <= 2; xRegion++) {\n for (let yRegion = -2; yRegion <= 2; yRegion++) {\n sum += blackPoints.get(left + xRegion, top + yRegion);\n }\n }\n const threshold = sum / 25;\n for (let xRegion = 0; xRegion < REGION_SIZE; xRegion++) {\n for (let yRegion = 0; yRegion < REGION_SIZE; yRegion++) {\n const x = hortizontalRegion * REGION_SIZE + xRegion;\n const y = verticalRegion * REGION_SIZE + yRegion;\n const lum = greyscalePixels.get(x, y);\n binarized.set(x, y, lum <= threshold);\n if (returnInverted) {\n inverted.set(x, y, !(lum <= threshold));\n }\n }\n }\n }\n }\n if (returnInverted) {\n return { binarized, inverted };\n }\n return { binarized };\n}\n", "// tslint:disable:no-bitwise\n\nexport class BitStream {\n private bytes: Uint8ClampedArray;\n private byteOffset: number = 0;\n private bitOffset: number = 0;\n\n constructor(bytes: Uint8ClampedArray) {\n this.bytes = bytes;\n }\n\n public readBits(numBits: number): number {\n if (numBits < 1 || numBits > 32 || numBits > this.available()) {\n throw new Error(\"Cannot read \" + numBits.toString() + \" bits\");\n }\n\n let result = 0;\n // First, read remainder from current byte\n if (this.bitOffset > 0) {\n const bitsLeft = 8 - this.bitOffset;\n const toRead = numBits < bitsLeft ? numBits : bitsLeft;\n const bitsToNotRead = bitsLeft - toRead;\n const mask = (0xFF >> (8 - toRead)) << bitsToNotRead;\n result = (this.bytes[this.byteOffset] & mask) >> bitsToNotRead;\n numBits -= toRead;\n this.bitOffset += toRead;\n if (this.bitOffset === 8) {\n this.bitOffset = 0;\n this.byteOffset++;\n }\n }\n\n // Next read whole bytes\n if (numBits > 0) {\n while (numBits >= 8) {\n result = (result << 8) | (this.bytes[this.byteOffset] & 0xFF);\n this.byteOffset++;\n numBits -= 8;\n }\n\n // Finally read a partial byte\n if (numBits > 0) {\n const bitsToNotRead = 8 - numBits;\n const mask = (0xFF >> bitsToNotRead) << bitsToNotRead;\n result = (result << numBits) | ((this.bytes[this.byteOffset] & mask) >> bitsToNotRead);\n this.bitOffset += numBits;\n }\n }\n return result;\n }\n\n public available(): number {\n return 8 * (this.bytes.length - this.byteOffset) - this.bitOffset;\n }\n}\n", "// tslint:disable:no-bitwise\nimport { BitStream } from \"./BitStream\";\n\nexport interface Chunk {\n type: Mode;\n text: string;\n}\n\nexport interface ByteChunk {\n type: Mode.Byte | Mode.Kanji;\n bytes: number[];\n}\n\nexport interface ECIChunk {\n type: Mode.ECI;\n assignmentNumber: number;\n}\n\nexport interface StructuredAppend {\n type: Mode.StructuredAppend;\n currentSequence: number;\n totalSequence: number;\n parity: number;\n}\n\nexport type Chunks = Array;\n\nexport interface DecodedQR {\n text: string;\n bytes: number[];\n chunks: Chunks;\n version: number;\n}\n\nexport enum Mode {\n Numeric = \"numeric\",\n Alphanumeric = \"alphanumeric\",\n Byte = \"byte\",\n Kanji = \"kanji\",\n ECI = \"eci\",\n StructuredAppend = \"structuredappend\",\n}\n\nenum ModeByte {\n Terminator = 0x0,\n Numeric = 0x1,\n Alphanumeric = 0x2,\n Byte = 0x4,\n Kanji = 0x8,\n ECI = 0x7,\n StructuredAppend = 0x3,\n // FNC1FirstPosition = 0x5,\n // FNC1SecondPosition = 0x9,\n}\n\nfunction decodeNumeric(stream: BitStream, size: number) {\n const bytes: number[] = [];\n let text = \"\";\n\n const characterCountSize = [10, 12, 14][size];\n let length = stream.readBits(characterCountSize);\n // Read digits in groups of 3\n while (length >= 3) {\n const num = stream.readBits(10);\n if (num >= 1000) {\n throw new Error(\"Invalid numeric value above 999\");\n }\n\n const a = Math.floor(num / 100);\n const b = Math.floor(num / 10) % 10;\n const c = num % 10;\n\n bytes.push(48 + a, 48 + b, 48 + c);\n text += a.toString() + b.toString() + c.toString();\n length -= 3;\n }\n\n // If the number of digits aren't a multiple of 3, the remaining digits are special cased.\n if (length === 2) {\n const num = stream.readBits(7);\n if (num >= 100) {\n throw new Error(\"Invalid numeric value above 99\");\n }\n\n const a = Math.floor(num / 10);\n const b = num % 10;\n\n bytes.push(48 + a, 48 + b);\n text += a.toString() + b.toString();\n } else if (length === 1) {\n const num = stream.readBits(4);\n if (num >= 10) {\n throw new Error(\"Invalid numeric value above 9\");\n }\n\n bytes.push(48 + num);\n text += num.toString();\n }\n\n return { bytes, text };\n}\n\nconst AlphanumericCharacterCodes = [\n \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\",\n \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\",\n \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\",\n \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\",\n \" \", \"$\", \"%\", \"*\", \"+\", \"-\", \".\", \"/\", \":\",\n];\n\nfunction decodeAlphanumeric(stream: BitStream, size: number) {\n const bytes: number[] = [];\n let text = \"\";\n\n const characterCountSize = [9, 11, 13][size];\n let length = stream.readBits(characterCountSize);\n while (length >= 2) {\n const v = stream.readBits(11);\n\n const a = Math.floor(v / 45);\n const b = v % 45;\n\n bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0), AlphanumericCharacterCodes[b].charCodeAt(0));\n text += AlphanumericCharacterCodes[a] + AlphanumericCharacterCodes[b];\n length -= 2;\n }\n\n if (length === 1) {\n const a = stream.readBits(6);\n bytes.push(AlphanumericCharacterCodes[a].charCodeAt(0));\n text += AlphanumericCharacterCodes[a];\n }\n\n return { bytes, text };\n}\n\nfunction decodeByte(stream: BitStream, size: number) {\n const bytes: number[] = [];\n let text = \"\";\n\n const characterCountSize = [8, 16, 16][size];\n const length = stream.readBits(characterCountSize);\n for (let i = 0; i < length; i++) {\n const b = stream.readBits(8);\n bytes.push(b);\n }\n try {\n text += decodeURIComponent(bytes.map(b => `%${(\"0\" + b.toString(16)).substr(-2)}`).join(\"\"));\n } catch {\n // failed to decode\n }\n\n return { bytes, text };\n}\n\nfunction decodeKanji(stream: BitStream, size: number) {\n const bytes: number[] = [];\n\n const characterCountSize = [8, 10, 12][size];\n const length = stream.readBits(characterCountSize);\n for (let i = 0; i < length; i++) {\n const k = stream.readBits(13);\n\n let c = (Math.floor(k / 0xC0) << 8) | (k % 0xC0);\n if (c < 0x1F00) {\n c += 0x8140;\n } else {\n c += 0xC140;\n }\n\n bytes.push(c >> 8, c & 0xFF);\n }\n\n const text = new TextDecoder(\"shift-jis\").decode(Uint8Array.from(bytes));\n return { bytes, text };\n}\n\nexport function decode(data: Uint8ClampedArray, version: number): DecodedQR {\n const stream = new BitStream(data);\n\n // There are 3 'sizes' based on the version. 1-9 is small (0), 10-26 is medium (1) and 27-40 is large (2).\n const size = version <= 9 ? 0 : version <= 26 ? 1 : 2;\n\n const result: DecodedQR = {\n text: \"\",\n bytes: [],\n chunks: [],\n version,\n };\n\n while (stream.available() >= 4) {\n const mode = stream.readBits(4);\n if (mode === ModeByte.Terminator) {\n return result;\n } else if (mode === ModeByte.ECI) {\n if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(7),\n });\n } else if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(14),\n });\n } else if (stream.readBits(1) === 0) {\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: stream.readBits(21),\n });\n } else {\n // ECI data seems corrupted\n result.chunks.push({\n type: Mode.ECI,\n assignmentNumber: -1,\n });\n }\n } else if (mode === ModeByte.Numeric) {\n const numericResult = decodeNumeric(stream, size);\n result.text += numericResult.text;\n result.bytes.push(...numericResult.bytes);\n result.chunks.push({\n type: Mode.Numeric,\n text: numericResult.text,\n });\n } else if (mode === ModeByte.Alphanumeric) {\n const alphanumericResult = decodeAlphanumeric(stream, size);\n result.text += alphanumericResult.text;\n result.bytes.push(...alphanumericResult.bytes);\n result.chunks.push({\n type: Mode.Alphanumeric,\n text: alphanumericResult.text,\n });\n } else if (mode === ModeByte.Byte) {\n const byteResult = decodeByte(stream, size);\n result.text += byteResult.text;\n result.bytes.push(...byteResult.bytes);\n result.chunks.push({\n type: Mode.Byte,\n bytes: byteResult.bytes,\n text: byteResult.text,\n });\n } else if (mode === ModeByte.Kanji) {\n const kanjiResult = decodeKanji(stream, size);\n result.text += kanjiResult.text;\n result.bytes.push(...kanjiResult.bytes);\n result.chunks.push({\n type: Mode.Kanji,\n bytes: kanjiResult.bytes,\n text: kanjiResult.text,\n });\n } else if (mode === ModeByte.StructuredAppend) {\n result.chunks.push({\n type: Mode.StructuredAppend,\n currentSequence: stream.readBits(4),\n totalSequence: stream.readBits(4),\n parity: stream.readBits(8),\n });\n }\n }\n\n // If there is no data left, or the remaining bits are all 0, then that counts as a termination marker\n if (stream.available() === 0 || stream.readBits(stream.available()) === 0) {\n return result;\n }\n}\n", "import GenericGF, { addOrSubtractGF } from \"./GenericGF\";\n\nexport default class GenericGFPoly {\n private field: GenericGF;\n private coefficients: Uint8ClampedArray;\n\n constructor(field: GenericGF, coefficients: Uint8ClampedArray) {\n if (coefficients.length === 0) {\n throw new Error(\"No coefficients.\");\n }\n this.field = field;\n const coefficientsLength = coefficients.length;\n if (coefficientsLength > 1 && coefficients[0] === 0) {\n // Leading term must be non-zero for anything except the constant polynomial \"0\"\n let firstNonZero = 1;\n while (firstNonZero < coefficientsLength && coefficients[firstNonZero] === 0) {\n firstNonZero++;\n }\n if (firstNonZero === coefficientsLength) {\n this.coefficients = field.zero.coefficients;\n } else {\n this.coefficients = new Uint8ClampedArray(coefficientsLength - firstNonZero);\n for (let i = 0; i < this.coefficients.length; i++) {\n this.coefficients[i] = coefficients[firstNonZero + i];\n }\n }\n } else {\n this.coefficients = coefficients;\n }\n }\n\n public degree() {\n return this.coefficients.length - 1;\n }\n\n public isZero() {\n return this.coefficients[0] === 0;\n }\n\n public getCoefficient(degree: number) {\n return this.coefficients[this.coefficients.length - 1 - degree];\n }\n\n public addOrSubtract(other: GenericGFPoly) {\n if (this.isZero()) {\n return other;\n }\n if (other.isZero()) {\n return this;\n }\n\n let smallerCoefficients = this.coefficients;\n let largerCoefficients = other.coefficients;\n if (smallerCoefficients.length > largerCoefficients.length) {\n [smallerCoefficients, largerCoefficients] = [largerCoefficients, smallerCoefficients];\n }\n const sumDiff = new Uint8ClampedArray(largerCoefficients.length);\n const lengthDiff = largerCoefficients.length - smallerCoefficients.length;\n for (let i = 0; i < lengthDiff; i++) {\n sumDiff[i] = largerCoefficients[i];\n }\n\n for (let i = lengthDiff; i < largerCoefficients.length; i++) {\n sumDiff[i] = addOrSubtractGF(smallerCoefficients[i - lengthDiff], largerCoefficients[i]);\n }\n\n return new GenericGFPoly(this.field, sumDiff);\n }\n\n public multiply(scalar: number) {\n if (scalar === 0) {\n return this.field.zero;\n }\n if (scalar === 1) {\n return this;\n }\n const size = this.coefficients.length;\n const product = new Uint8ClampedArray(size);\n for (let i = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], scalar);\n }\n\n return new GenericGFPoly(this.field, product);\n }\n\n public multiplyPoly(other: GenericGFPoly): GenericGFPoly {\n if (this.isZero() || other.isZero()) {\n return this.field.zero;\n }\n const aCoefficients = this.coefficients;\n const aLength = aCoefficients.length;\n const bCoefficients = other.coefficients;\n const bLength = bCoefficients.length;\n const product = new Uint8ClampedArray(aLength + bLength - 1);\n for (let i = 0; i < aLength; i++) {\n const aCoeff = aCoefficients[i];\n for (let j = 0; j < bLength; j++) {\n product[i + j] = addOrSubtractGF(product[i + j],\n this.field.multiply(aCoeff, bCoefficients[j]));\n }\n }\n return new GenericGFPoly(this.field, product);\n }\n\n public multiplyByMonomial(degree: number, coefficient: number) {\n if (degree < 0) {\n throw new Error(\"Invalid degree less than 0\");\n }\n if (coefficient === 0) {\n return this.field.zero;\n }\n const size = this.coefficients.length;\n const product = new Uint8ClampedArray(size + degree);\n for (let i = 0; i < size; i++) {\n product[i] = this.field.multiply(this.coefficients[i], coefficient);\n }\n return new GenericGFPoly(this.field, product);\n }\n\n public evaluateAt(a: number) {\n let result = 0;\n if (a === 0) {\n // Just return the x^0 coefficient\n return this.getCoefficient(0);\n }\n const size = this.coefficients.length;\n if (a === 1) {\n // Just the sum of the coefficients\n this.coefficients.forEach((coefficient) => {\n result = addOrSubtractGF(result, coefficient);\n });\n return result;\n }\n result = this.coefficients[0];\n for (let i = 1; i < size; i++) {\n result = addOrSubtractGF(this.field.multiply(a, result), this.coefficients[i]);\n }\n return result;\n }\n}\n", "import GenericGFPoly from \"./GenericGFPoly\";\n\nexport function addOrSubtractGF(a: number, b: number) {\n return a ^ b; // tslint:disable-line:no-bitwise\n}\n\nexport default class GenericGF {\n public primitive: number;\n public size: number;\n public generatorBase: number;\n public zero: GenericGFPoly;\n public one: GenericGFPoly;\n\n private expTable: number[];\n private logTable: number[];\n\n constructor(primitive: number, size: number, genBase: number) {\n this.primitive = primitive;\n this.size = size;\n this.generatorBase = genBase;\n this.expTable = new Array(this.size);\n this.logTable = new Array(this.size);\n\n let x = 1;\n for (let i = 0; i < this.size; i++) {\n this.expTable[i] = x;\n x = x * 2;\n if (x >= this.size) {\n x = (x ^ this.primitive) & (this.size - 1); // tslint:disable-line:no-bitwise\n }\n }\n\n for (let i = 0; i < this.size - 1; i++) {\n this.logTable[this.expTable[i]] = i;\n }\n this.zero = new GenericGFPoly(this, Uint8ClampedArray.from([0]));\n this.one = new GenericGFPoly(this, Uint8ClampedArray.from([1]));\n }\n\n public multiply(a: number, b: number) {\n if (a === 0 || b === 0) {\n return 0;\n }\n return this.expTable[(this.logTable[a] + this.logTable[b]) % (this.size - 1)];\n }\n\n public inverse(a: number) {\n if (a === 0) {\n throw new Error(\"Can't invert 0\");\n }\n return this.expTable[this.size - this.logTable[a] - 1];\n }\n\n public buildMonomial(degree: number, coefficient: number): GenericGFPoly {\n if (degree < 0) {\n throw new Error(\"Invalid monomial degree less than 0\");\n }\n if (coefficient === 0) {\n return this.zero;\n }\n const coefficients = new Uint8ClampedArray(degree + 1);\n coefficients[0] = coefficient;\n return new GenericGFPoly(this, coefficients);\n }\n\n public log(a: number) {\n if (a === 0) {\n throw new Error(\"Can't take log(0)\");\n }\n return this.logTable[a];\n }\n\n public exp(a: number) {\n return this.expTable[a];\n }\n}\n", "import GenericGF, { addOrSubtractGF } from \"./GenericGF\";\nimport GenericGFPoly from \"./GenericGFPoly\";\n\nfunction runEuclideanAlgorithm(field: GenericGF, a: GenericGFPoly, b: GenericGFPoly, R: number): GenericGFPoly[] {\n // Assume a's degree is >= b's\n if (a.degree() < b.degree()) {\n [a, b] = [b, a];\n }\n\n let rLast = a;\n let r = b;\n let tLast = field.zero;\n let t = field.one;\n\n // Run Euclidean algorithm until r's degree is less than R/2\n while (r.degree() >= R / 2) {\n const rLastLast = rLast;\n const tLastLast = tLast;\n rLast = r;\n tLast = t;\n\n // Divide rLastLast by rLast, with quotient in q and remainder in r\n if (rLast.isZero()) {\n // Euclidean algorithm already terminated?\n return null;\n }\n r = rLastLast;\n let q = field.zero;\n const denominatorLeadingTerm = rLast.getCoefficient(rLast.degree());\n const dltInverse = field.inverse(denominatorLeadingTerm);\n while (r.degree() >= rLast.degree() && !r.isZero()) {\n const degreeDiff = r.degree() - rLast.degree();\n const scale = field.multiply(r.getCoefficient(r.degree()), dltInverse);\n q = q.addOrSubtract(field.buildMonomial(degreeDiff, scale));\n r = r.addOrSubtract(rLast.multiplyByMonomial(degreeDiff, scale));\n }\n\n t = q.multiplyPoly(tLast).addOrSubtract(tLastLast);\n\n if (r.degree() >= rLast.degree()) {\n return null;\n }\n }\n\n const sigmaTildeAtZero = t.getCoefficient(0);\n if (sigmaTildeAtZero === 0) {\n return null;\n }\n\n const inverse = field.inverse(sigmaTildeAtZero);\n return [t.multiply(inverse), r.multiply(inverse)];\n}\n\nfunction findErrorLocations(field: GenericGF, errorLocator: GenericGFPoly): number[] {\n // This is a direct application of Chien's search\n const numErrors = errorLocator.degree();\n if (numErrors === 1) {\n return [errorLocator.getCoefficient(1)];\n }\n const result: number[] = new Array(numErrors);\n let errorCount = 0;\n for (let i = 1; i < field.size && errorCount < numErrors; i++) {\n if (errorLocator.evaluateAt(i) === 0) {\n result[errorCount] = field.inverse(i);\n errorCount++;\n }\n }\n if (errorCount !== numErrors) {\n return null;\n }\n return result;\n}\n\nfunction findErrorMagnitudes(field: GenericGF, errorEvaluator: GenericGFPoly, errorLocations: number[]): number[] {\n // This is directly applying Forney's Formula\n const s = errorLocations.length;\n const result: number[] = new Array(s);\n for (let i = 0; i < s; i++) {\n const xiInverse = field.inverse(errorLocations[i]);\n let denominator = 1;\n for (let j = 0; j < s; j++) {\n if (i !== j) {\n denominator = field.multiply(denominator, addOrSubtractGF(1, field.multiply(errorLocations[j], xiInverse)));\n }\n }\n result[i] = field.multiply(errorEvaluator.evaluateAt(xiInverse), field.inverse(denominator));\n if (field.generatorBase !== 0) {\n result[i] = field.multiply(result[i], xiInverse);\n }\n }\n return result;\n}\n\nexport function decode(bytes: number[], twoS: number) {\n const outputBytes = new Uint8ClampedArray(bytes.length);\n outputBytes.set(bytes);\n\n const field = new GenericGF(0x011D, 256, 0); // x^8 + x^4 + x^3 + x^2 + 1\n const poly = new GenericGFPoly(field, outputBytes);\n\n const syndromeCoefficients = new Uint8ClampedArray(twoS);\n let error = false;\n for (let s = 0; s < twoS; s++) {\n const evaluation = poly.evaluateAt(field.exp(s + field.generatorBase));\n syndromeCoefficients[syndromeCoefficients.length - 1 - s] = evaluation;\n if (evaluation !== 0) {\n error = true;\n }\n }\n if (!error) {\n return outputBytes;\n }\n\n const syndrome = new GenericGFPoly(field, syndromeCoefficients);\n\n const sigmaOmega = runEuclideanAlgorithm(field, field.buildMonomial(twoS, 1), syndrome, twoS);\n if (sigmaOmega === null) {\n return null;\n }\n\n const errorLocations = findErrorLocations(field, sigmaOmega[0]);\n if (errorLocations == null) {\n return null;\n }\n\n const errorMagnitudes = findErrorMagnitudes(field, sigmaOmega[1], errorLocations);\n for (let i = 0; i < errorLocations.length; i++) {\n const position = outputBytes.length - 1 - field.log(errorLocations[i]);\n if (position < 0) {\n return null;\n }\n outputBytes[position] = addOrSubtractGF(outputBytes[position], errorMagnitudes[i]);\n }\n\n return outputBytes;\n}\n", "export interface Version {\n infoBits: number;\n versionNumber: number;\n alignmentPatternCenters: number[];\n errorCorrectionLevels: Array<{\n ecCodewordsPerBlock: number;\n ecBlocks: Array<{\n numBlocks: number;\n dataCodewordsPerBlock: number;\n }>\n }>;\n}\n\nexport const VERSIONS: Version[] = [\n {\n infoBits: null,\n versionNumber: 1,\n alignmentPatternCenters: [],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 7,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 19 }],\n },\n {\n ecCodewordsPerBlock: 10,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],\n },\n {\n ecCodewordsPerBlock: 13,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 13 }],\n },\n {\n ecCodewordsPerBlock: 17,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 9 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 2,\n alignmentPatternCenters: [6, 18],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 10,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 34 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 28 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 22 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 16 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 3,\n alignmentPatternCenters: [6, 22],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 15,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 55 }],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 44 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 17 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 13 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 4,\n alignmentPatternCenters: [6, 26],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 80 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 32 }],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 24 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 9 }],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 5,\n alignmentPatternCenters: [6, 30],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 1, dataCodewordsPerBlock: 108 }],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 43 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n { numBlocks: 2, dataCodewordsPerBlock: 16 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 11 },\n { numBlocks: 2, dataCodewordsPerBlock: 12 },\n ],\n },\n ],\n },\n {\n infoBits: null,\n versionNumber: 6,\n alignmentPatternCenters: [6, 34],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 68 }],\n },\n {\n ecCodewordsPerBlock: 16,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 27 }],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 19 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 15 }],\n },\n ],\n },\n {\n infoBits: 0x07C94,\n versionNumber: 7,\n alignmentPatternCenters: [6, 22, 38],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 78 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 31 }],\n },\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 4, dataCodewordsPerBlock: 15 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 13 },\n { numBlocks: 1, dataCodewordsPerBlock: 14 },\n ],\n },\n ],\n },\n {\n infoBits: 0x085BC,\n versionNumber: 8,\n alignmentPatternCenters: [6, 24, 42],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 97 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 38 },\n { numBlocks: 2, dataCodewordsPerBlock: 39 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 18 },\n { numBlocks: 2, dataCodewordsPerBlock: 19 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 14 },\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x09A99,\n versionNumber: 9,\n alignmentPatternCenters: [6, 26, 46],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [{ numBlocks: 2, dataCodewordsPerBlock: 116 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 36 },\n { numBlocks: 2, dataCodewordsPerBlock: 37 },\n ],\n },\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 16 },\n { numBlocks: 4, dataCodewordsPerBlock: 17 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 12 },\n { numBlocks: 4, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0A4D3,\n versionNumber: 10,\n alignmentPatternCenters: [6, 28, 50],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 18,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 68 },\n { numBlocks: 2, dataCodewordsPerBlock: 69 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 43 },\n { numBlocks: 1, dataCodewordsPerBlock: 44 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 19 },\n { numBlocks: 2, dataCodewordsPerBlock: 20 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 15 },\n { numBlocks: 2, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0BBF6,\n versionNumber: 11,\n alignmentPatternCenters: [6, 30, 54],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 81 }],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 50 },\n { numBlocks: 4, dataCodewordsPerBlock: 51 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 22 },\n { numBlocks: 4, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 12 },\n { numBlocks: 8, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0C762,\n versionNumber: 12,\n alignmentPatternCenters: [6, 32, 58],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 92 },\n { numBlocks: 2, dataCodewordsPerBlock: 93 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 36 },\n { numBlocks: 2, dataCodewordsPerBlock: 37 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 20 },\n { numBlocks: 6, dataCodewordsPerBlock: 21 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 14 },\n { numBlocks: 4, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0D847,\n versionNumber: 13,\n alignmentPatternCenters: [6, 34, 62],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 4, dataCodewordsPerBlock: 107 }],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 37 },\n { numBlocks: 1, dataCodewordsPerBlock: 38 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 20 },\n { numBlocks: 4, dataCodewordsPerBlock: 21 },\n ],\n },\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 11 },\n { numBlocks: 4, dataCodewordsPerBlock: 12 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0E60D,\n versionNumber: 14,\n alignmentPatternCenters: [6, 26, 46, 66],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 115 },\n { numBlocks: 1, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 40 },\n { numBlocks: 5, dataCodewordsPerBlock: 41 },\n ],\n },\n {\n ecCodewordsPerBlock: 20,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 16 },\n { numBlocks: 5, dataCodewordsPerBlock: 17 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 12 },\n { numBlocks: 5, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x0F928,\n versionNumber: 15,\n alignmentPatternCenters: [6, 26, 48, 70],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 22,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 87 },\n { numBlocks: 1, dataCodewordsPerBlock: 88 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 41 },\n { numBlocks: 5, dataCodewordsPerBlock: 42 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 24 },\n { numBlocks: 7, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 12 },\n { numBlocks: 7, dataCodewordsPerBlock: 13 },\n ],\n },\n ],\n },\n {\n infoBits: 0x10B78,\n versionNumber: 16,\n alignmentPatternCenters: [6, 26, 50, 74],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 98 },\n { numBlocks: 1, dataCodewordsPerBlock: 99 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 45 },\n { numBlocks: 3, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 19 },\n { numBlocks: 2, dataCodewordsPerBlock: 20 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 15 },\n { numBlocks: 13, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1145D,\n versionNumber: 17,\n alignmentPatternCenters: [6, 30, 54, 78],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 107 },\n { numBlocks: 5, dataCodewordsPerBlock: 108 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 46 },\n { numBlocks: 1, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 22 },\n { numBlocks: 15, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 17, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x12A17,\n versionNumber: 18,\n alignmentPatternCenters: [6, 30, 56, 82],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 120 },\n { numBlocks: 1, dataCodewordsPerBlock: 121 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 9, dataCodewordsPerBlock: 43 },\n { numBlocks: 4, dataCodewordsPerBlock: 44 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 22 },\n { numBlocks: 1, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 14 },\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n ],\n },\n ],\n },\n {\n infoBits: 0x13532,\n versionNumber: 19,\n alignmentPatternCenters: [6, 30, 58, 86],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 113 },\n { numBlocks: 4, dataCodewordsPerBlock: 114 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 44 },\n { numBlocks: 11, dataCodewordsPerBlock: 45 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 21 },\n { numBlocks: 4, dataCodewordsPerBlock: 22 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 9, dataCodewordsPerBlock: 13 },\n { numBlocks: 16, dataCodewordsPerBlock: 14 },\n ],\n },\n ],\n },\n {\n infoBits: 0x149A6,\n versionNumber: 20,\n alignmentPatternCenters: [6, 34, 62, 90],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 107 },\n { numBlocks: 5, dataCodewordsPerBlock: 108 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 41 },\n { numBlocks: 13, dataCodewordsPerBlock: 42 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 24 },\n { numBlocks: 5, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 15 },\n { numBlocks: 10, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x15683,\n versionNumber: 21,\n alignmentPatternCenters: [6, 28, 50, 72, 94],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 116 },\n { numBlocks: 4, dataCodewordsPerBlock: 117 },\n ],\n },\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 42 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 22 },\n { numBlocks: 6, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 16 },\n { numBlocks: 6, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x168C9,\n versionNumber: 22,\n alignmentPatternCenters: [6, 26, 50, 74, 98],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 111 },\n { numBlocks: 7, dataCodewordsPerBlock: 112 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 46 }],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 24 },\n { numBlocks: 16, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 24,\n ecBlocks: [{ numBlocks: 34, dataCodewordsPerBlock: 13 }],\n },\n ],\n },\n {\n infoBits: 0x177EC,\n versionNumber: 23,\n alignmentPatternCenters: [6, 30, 54, 74, 102],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 121 },\n { numBlocks: 5, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 47 },\n { numBlocks: 14, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 16, dataCodewordsPerBlock: 15 },\n { numBlocks: 14, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x18EC4,\n versionNumber: 24,\n alignmentPatternCenters: [6, 28, 54, 80, 106],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 117 },\n { numBlocks: 4, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 45 },\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 24 },\n { numBlocks: 16, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 30, dataCodewordsPerBlock: 16 },\n { numBlocks: 2, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x191E1,\n versionNumber: 25,\n alignmentPatternCenters: [6, 32, 58, 84, 110],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 26,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 106 },\n { numBlocks: 4, dataCodewordsPerBlock: 107 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 47 },\n { numBlocks: 13, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 24 },\n { numBlocks: 22, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 15 },\n { numBlocks: 13, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1AFAB,\n versionNumber: 26,\n alignmentPatternCenters: [6, 30, 58, 86, 114],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 114 },\n { numBlocks: 2, dataCodewordsPerBlock: 115 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 46 },\n { numBlocks: 4, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 28, dataCodewordsPerBlock: 22 },\n { numBlocks: 6, dataCodewordsPerBlock: 23 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 33, dataCodewordsPerBlock: 16 },\n { numBlocks: 4, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1B08E,\n versionNumber: 27,\n alignmentPatternCenters: [6, 34, 62, 90, 118],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 122 },\n { numBlocks: 4, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 45 },\n { numBlocks: 3, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 8, dataCodewordsPerBlock: 23 },\n { numBlocks: 26, dataCodewordsPerBlock: 24 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 15 },\n { numBlocks: 28, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1CC1A,\n versionNumber: 28,\n alignmentPatternCenters: [6, 26, 50, 74, 98, 122],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 117 },\n { numBlocks: 10, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 3, dataCodewordsPerBlock: 45 },\n { numBlocks: 23, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 24 },\n { numBlocks: 31, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 15 },\n { numBlocks: 31, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1D33F,\n versionNumber: 29,\n alignmentPatternCenters: [6, 30, 54, 78, 102, 126],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 7, dataCodewordsPerBlock: 116 },\n { numBlocks: 7, dataCodewordsPerBlock: 117 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 21, dataCodewordsPerBlock: 45 },\n { numBlocks: 7, dataCodewordsPerBlock: 46 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 1, dataCodewordsPerBlock: 23 },\n { numBlocks: 37, dataCodewordsPerBlock: 24 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n { numBlocks: 26, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1ED75,\n versionNumber: 30,\n alignmentPatternCenters: [6, 26, 52, 78, 104, 130],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 5, dataCodewordsPerBlock: 115 },\n { numBlocks: 10, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 47 },\n { numBlocks: 10, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 15, dataCodewordsPerBlock: 24 },\n { numBlocks: 25, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 23, dataCodewordsPerBlock: 15 },\n { numBlocks: 25, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x1F250,\n versionNumber: 31,\n alignmentPatternCenters: [6, 30, 56, 82, 108, 134],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 115 },\n { numBlocks: 3, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 46 },\n { numBlocks: 29, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 42, dataCodewordsPerBlock: 24 },\n { numBlocks: 1, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 23, dataCodewordsPerBlock: 15 },\n { numBlocks: 28, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x209D5,\n versionNumber: 32,\n alignmentPatternCenters: [6, 34, 60, 86, 112, 138],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [{ numBlocks: 17, dataCodewordsPerBlock: 115 }],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 46 },\n { numBlocks: 23, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 24 },\n { numBlocks: 35, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 15 },\n { numBlocks: 35, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x216F0,\n versionNumber: 33,\n alignmentPatternCenters: [6, 30, 58, 86, 114, 142],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 115 },\n { numBlocks: 1, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n { numBlocks: 21, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 29, dataCodewordsPerBlock: 24 },\n { numBlocks: 19, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 11, dataCodewordsPerBlock: 15 },\n { numBlocks: 46, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x228BA,\n versionNumber: 34,\n alignmentPatternCenters: [6, 34, 62, 90, 118, 146],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 115 },\n { numBlocks: 6, dataCodewordsPerBlock: 116 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 14, dataCodewordsPerBlock: 46 },\n { numBlocks: 23, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 44, dataCodewordsPerBlock: 24 },\n { numBlocks: 7, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 59, dataCodewordsPerBlock: 16 },\n { numBlocks: 1, dataCodewordsPerBlock: 17 },\n ],\n },\n ],\n },\n {\n infoBits: 0x2379F,\n versionNumber: 35,\n alignmentPatternCenters: [6, 30, 54, 78, 102, 126, 150],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 121 },\n { numBlocks: 7, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 12, dataCodewordsPerBlock: 47 },\n { numBlocks: 26, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 39, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 22, dataCodewordsPerBlock: 15 },\n { numBlocks: 41, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x24B0B,\n versionNumber: 36,\n alignmentPatternCenters: [ 6, 24, 50, 76, 102, 128, 154 ],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 121 },\n { numBlocks: 14, dataCodewordsPerBlock: 122 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 6, dataCodewordsPerBlock: 47 },\n { numBlocks: 34, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 46, dataCodewordsPerBlock: 24 },\n { numBlocks: 10, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 2, dataCodewordsPerBlock: 15 },\n { numBlocks: 64, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x2542E,\n versionNumber: 37,\n alignmentPatternCenters: [ 6, 28, 54, 80, 106, 132, 158 ],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 17, dataCodewordsPerBlock: 122 },\n { numBlocks: 4, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 29, dataCodewordsPerBlock: 46 },\n { numBlocks: 14, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 49, dataCodewordsPerBlock: 24 },\n { numBlocks: 10, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 24, dataCodewordsPerBlock: 15 },\n { numBlocks: 46, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x26A64,\n versionNumber: 38,\n alignmentPatternCenters: [ 6, 32, 58, 84, 110, 136, 162 ],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 4, dataCodewordsPerBlock: 122 },\n { numBlocks: 18, dataCodewordsPerBlock: 123 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 13, dataCodewordsPerBlock: 46 },\n { numBlocks: 32, dataCodewordsPerBlock: 47 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 48, dataCodewordsPerBlock: 24 },\n { numBlocks: 14, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 42, dataCodewordsPerBlock: 15 },\n { numBlocks: 32, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x27541,\n versionNumber: 39,\n alignmentPatternCenters: [ 6, 26, 54, 82, 110, 138, 166 ],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 20, dataCodewordsPerBlock: 117 },\n { numBlocks: 4, dataCodewordsPerBlock: 118 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 40, dataCodewordsPerBlock: 47 },\n { numBlocks: 7, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 43, dataCodewordsPerBlock: 24 },\n { numBlocks: 22, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 10, dataCodewordsPerBlock: 15 },\n { numBlocks: 67, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n {\n infoBits: 0x28C69,\n versionNumber: 40,\n alignmentPatternCenters: [ 6, 30, 58, 86, 114, 142, 170 ],\n errorCorrectionLevels: [\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 19, dataCodewordsPerBlock: 118 },\n { numBlocks: 6, dataCodewordsPerBlock: 119 },\n ],\n },\n {\n ecCodewordsPerBlock: 28,\n ecBlocks: [\n { numBlocks: 18, dataCodewordsPerBlock: 47 },\n { numBlocks: 31, dataCodewordsPerBlock: 48 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 34, dataCodewordsPerBlock: 24 },\n { numBlocks: 34, dataCodewordsPerBlock: 25 },\n ],\n },\n {\n ecCodewordsPerBlock: 30,\n ecBlocks: [\n { numBlocks: 20, dataCodewordsPerBlock: 15 },\n { numBlocks: 61, dataCodewordsPerBlock: 16 },\n ],\n },\n ],\n },\n];\n", "import { BitMatrix } from \"../BitMatrix\";\nimport { Point } from \"../Point\";\nimport { decode as decodeData, DecodedQR } from \"./decodeData\";\nimport { decode as rsDecode } from \"./reedsolomon\";\nimport { Version, VERSIONS } from \"./version\";\n\n// tslint:disable:no-bitwise\nfunction numBitsDiffering(x: number, y: number) {\n let z = x ^ y;\n let bitCount = 0;\n while (z) {\n bitCount++;\n z &= z - 1;\n }\n return bitCount;\n}\n\nfunction pushBit(bit: any, byte: number) {\n return (byte << 1) | bit;\n}\n// tslint:enable:no-bitwise\n\nconst FORMAT_INFO_TABLE = [\n { bits: 0x5412, formatInfo: { errorCorrectionLevel: 1, dataMask: 0 } },\n { bits: 0x5125, formatInfo: { errorCorrectionLevel: 1, dataMask: 1 } },\n { bits: 0x5E7C, formatInfo: { errorCorrectionLevel: 1, dataMask: 2 } },\n { bits: 0x5B4B, formatInfo: { errorCorrectionLevel: 1, dataMask: 3 } },\n { bits: 0x45F9, formatInfo: { errorCorrectionLevel: 1, dataMask: 4 } },\n { bits: 0x40CE, formatInfo: { errorCorrectionLevel: 1, dataMask: 5 } },\n { bits: 0x4F97, formatInfo: { errorCorrectionLevel: 1, dataMask: 6 } },\n { bits: 0x4AA0, formatInfo: { errorCorrectionLevel: 1, dataMask: 7 } },\n { bits: 0x77C4, formatInfo: { errorCorrectionLevel: 0, dataMask: 0 } },\n { bits: 0x72F3, formatInfo: { errorCorrectionLevel: 0, dataMask: 1 } },\n { bits: 0x7DAA, formatInfo: { errorCorrectionLevel: 0, dataMask: 2 } },\n { bits: 0x789D, formatInfo: { errorCorrectionLevel: 0, dataMask: 3 } },\n { bits: 0x662F, formatInfo: { errorCorrectionLevel: 0, dataMask: 4 } },\n { bits: 0x6318, formatInfo: { errorCorrectionLevel: 0, dataMask: 5 } },\n { bits: 0x6C41, formatInfo: { errorCorrectionLevel: 0, dataMask: 6 } },\n { bits: 0x6976, formatInfo: { errorCorrectionLevel: 0, dataMask: 7 } },\n { bits: 0x1689, formatInfo: { errorCorrectionLevel: 3, dataMask: 0 } },\n { bits: 0x13BE, formatInfo: { errorCorrectionLevel: 3, dataMask: 1 } },\n { bits: 0x1CE7, formatInfo: { errorCorrectionLevel: 3, dataMask: 2 } },\n { bits: 0x19D0, formatInfo: { errorCorrectionLevel: 3, dataMask: 3 } },\n { bits: 0x0762, formatInfo: { errorCorrectionLevel: 3, dataMask: 4 } },\n { bits: 0x0255, formatInfo: { errorCorrectionLevel: 3, dataMask: 5 } },\n { bits: 0x0D0C, formatInfo: { errorCorrectionLevel: 3, dataMask: 6 } },\n { bits: 0x083B, formatInfo: { errorCorrectionLevel: 3, dataMask: 7 } },\n { bits: 0x355F, formatInfo: { errorCorrectionLevel: 2, dataMask: 0 } },\n { bits: 0x3068, formatInfo: { errorCorrectionLevel: 2, dataMask: 1 } },\n { bits: 0x3F31, formatInfo: { errorCorrectionLevel: 2, dataMask: 2 } },\n { bits: 0x3A06, formatInfo: { errorCorrectionLevel: 2, dataMask: 3 } },\n { bits: 0x24B4, formatInfo: { errorCorrectionLevel: 2, dataMask: 4 } },\n { bits: 0x2183, formatInfo: { errorCorrectionLevel: 2, dataMask: 5 } },\n { bits: 0x2EDA, formatInfo: { errorCorrectionLevel: 2, dataMask: 6 } },\n { bits: 0x2BED, formatInfo: { errorCorrectionLevel: 2, dataMask: 7 } },\n];\n\nconst DATA_MASKS = [\n (p: Point) => ((p.y + p.x) % 2) === 0,\n (p: Point) => (p.y % 2) === 0,\n (p: Point) => p.x % 3 === 0,\n (p: Point) => (p.y + p.x) % 3 === 0,\n (p: Point) => (Math.floor(p.y / 2) + Math.floor(p.x / 3)) % 2 === 0,\n (p: Point) => ((p.x * p.y) % 2) + ((p.x * p.y) % 3) === 0,\n (p: Point) => ((((p.y * p.x) % 2) + (p.y * p.x) % 3) % 2) === 0,\n (p: Point) => ((((p.y + p.x) % 2) + (p.y * p.x) % 3) % 2) === 0,\n];\n\ninterface FormatInformation {\n errorCorrectionLevel: number;\n dataMask: number;\n}\n\nfunction buildFunctionPatternMask(version: Version): BitMatrix {\n const dimension = 17 + 4 * version.versionNumber;\n const matrix = BitMatrix.createEmpty(dimension, dimension);\n\n matrix.setRegion(0, 0, 9, 9, true); // Top left finder pattern + separator + format\n matrix.setRegion(dimension - 8, 0, 8, 9, true); // Top right finder pattern + separator + format\n matrix.setRegion(0, dimension - 8, 9, 8, true); // Bottom left finder pattern + separator + format\n\n // Alignment patterns\n for (const x of version.alignmentPatternCenters) {\n for (const y of version.alignmentPatternCenters) {\n if (!(x === 6 && y === 6 || x === 6 && y === dimension - 7 || x === dimension - 7 && y === 6)) {\n matrix.setRegion(x - 2, y - 2, 5, 5, true);\n }\n }\n }\n\n matrix.setRegion(6, 9, 1, dimension - 17, true); // Vertical timing pattern\n matrix.setRegion(9, 6, dimension - 17, 1, true); // Horizontal timing pattern\n\n if (version.versionNumber > 6) {\n matrix.setRegion(dimension - 11, 0, 3, 6, true); // Version info, top right\n matrix.setRegion(0, dimension - 11, 6, 3, true); // Version info, bottom left\n }\n\n return matrix;\n}\n\nfunction readCodewords(matrix: BitMatrix, version: Version, formatInfo: FormatInformation) {\n const dataMask = DATA_MASKS[formatInfo.dataMask];\n const dimension = matrix.height;\n\n const functionPatternMask = buildFunctionPatternMask(version);\n\n const codewords: number[] = [];\n let currentByte = 0;\n let bitsRead = 0;\n\n // Read columns in pairs, from right to left\n let readingUp = true;\n for (let columnIndex = dimension - 1; columnIndex > 0; columnIndex -= 2) {\n if (columnIndex === 6) { // Skip whole column with vertical alignment pattern;\n columnIndex--;\n }\n for (let i = 0; i < dimension; i++) {\n const y = readingUp ? dimension - 1 - i : i;\n for (let columnOffset = 0; columnOffset < 2; columnOffset++) {\n const x = columnIndex - columnOffset;\n if (!functionPatternMask.get(x, y)) {\n bitsRead++;\n let bit = matrix.get(x, y);\n if (dataMask({y, x})) {\n bit = !bit;\n }\n currentByte = pushBit(bit, currentByte);\n if (bitsRead === 8) { // Whole bytes\n codewords.push(currentByte);\n bitsRead = 0;\n currentByte = 0;\n }\n }\n }\n }\n readingUp = !readingUp;\n }\n return codewords;\n}\n\nfunction readVersion(matrix: BitMatrix): Version {\n const dimension = matrix.height;\n\n const provisionalVersion = Math.floor((dimension - 17) / 4);\n if (provisionalVersion <= 6) { // 6 and under dont have version info in the QR code\n return VERSIONS[provisionalVersion - 1];\n }\n\n let topRightVersionBits = 0;\n for (let y = 5; y >= 0; y--) {\n for (let x = dimension - 9; x >= dimension - 11; x--) {\n topRightVersionBits = pushBit(matrix.get(x, y), topRightVersionBits);\n }\n }\n\n let bottomLeftVersionBits = 0;\n for (let x = 5; x >= 0; x--) {\n for (let y = dimension - 9; y >= dimension - 11; y--) {\n bottomLeftVersionBits = pushBit(matrix.get(x, y), bottomLeftVersionBits);\n }\n }\n\n let bestDifference = Infinity;\n let bestVersion: Version;\n for (const version of VERSIONS) {\n if (version.infoBits === topRightVersionBits || version.infoBits === bottomLeftVersionBits) {\n return version;\n }\n\n let difference = numBitsDiffering(topRightVersionBits, version.infoBits);\n if (difference < bestDifference) {\n bestVersion = version;\n bestDifference = difference;\n }\n\n difference = numBitsDiffering(bottomLeftVersionBits, version.infoBits);\n if (difference < bestDifference) {\n bestVersion = version;\n bestDifference = difference;\n }\n }\n // We can tolerate up to 3 bits of error since no two version info codewords will\n // differ in less than 8 bits.\n if (bestDifference <= 3) {\n return bestVersion;\n }\n}\n\nfunction readFormatInformation(matrix: BitMatrix) {\n let topLeftFormatInfoBits = 0;\n for (let x = 0; x <= 8; x++) {\n if (x !== 6) { // Skip timing pattern bit\n topLeftFormatInfoBits = pushBit(matrix.get(x, 8), topLeftFormatInfoBits);\n }\n }\n for (let y = 7; y >= 0; y--) {\n if (y !== 6) { // Skip timing pattern bit\n topLeftFormatInfoBits = pushBit(matrix.get(8, y), topLeftFormatInfoBits);\n }\n }\n\n const dimension = matrix.height;\n let topRightBottomRightFormatInfoBits = 0;\n for (let y = dimension - 1; y >= dimension - 7; y--) { // bottom left\n topRightBottomRightFormatInfoBits = pushBit(matrix.get(8, y), topRightBottomRightFormatInfoBits);\n }\n for (let x = dimension - 8; x < dimension; x++) { // top right\n topRightBottomRightFormatInfoBits = pushBit(matrix.get(x, 8), topRightBottomRightFormatInfoBits);\n }\n\n let bestDifference = Infinity;\n let bestFormatInfo = null;\n for (const {bits, formatInfo} of FORMAT_INFO_TABLE) {\n if (bits === topLeftFormatInfoBits || bits === topRightBottomRightFormatInfoBits) {\n return formatInfo;\n }\n let difference = numBitsDiffering(topLeftFormatInfoBits, bits);\n if (difference < bestDifference) {\n bestFormatInfo = formatInfo;\n bestDifference = difference;\n }\n if (topLeftFormatInfoBits !== topRightBottomRightFormatInfoBits) { // also try the other option\n difference = numBitsDiffering(topRightBottomRightFormatInfoBits, bits);\n if (difference < bestDifference) {\n bestFormatInfo = formatInfo;\n bestDifference = difference;\n }\n }\n }\n // Hamming distance of the 32 masked codes is 7, by construction, so <= 3 bits differing means we found a match\n if (bestDifference <= 3) {\n return bestFormatInfo;\n }\n return null;\n}\n\nfunction getDataBlocks(codewords: number[], version: Version, ecLevel: number) {\n const ecInfo = version.errorCorrectionLevels[ecLevel];\n const dataBlocks: Array<{\n numDataCodewords: number;\n codewords: number[];\n }> = [];\n\n let totalCodewords = 0;\n ecInfo.ecBlocks.forEach(block => {\n for (let i = 0; i < block.numBlocks; i++) {\n dataBlocks.push({ numDataCodewords: block.dataCodewordsPerBlock, codewords: [] });\n totalCodewords += block.dataCodewordsPerBlock + ecInfo.ecCodewordsPerBlock;\n }\n });\n\n // In some cases the QR code will be malformed enough that we pull off more or less than we should.\n // If we pull off less there's nothing we can do.\n // If we pull off more we can safely truncate\n if (codewords.length < totalCodewords) {\n return null;\n }\n codewords = codewords.slice(0, totalCodewords);\n\n const shortBlockSize = ecInfo.ecBlocks[0].dataCodewordsPerBlock;\n // Pull codewords to fill the blocks up to the minimum size\n for (let i = 0; i < shortBlockSize; i++) {\n for (const dataBlock of dataBlocks) {\n dataBlock.codewords.push(codewords.shift());\n }\n }\n\n // If there are any large blocks, pull codewords to fill the last element of those\n if (ecInfo.ecBlocks.length > 1) {\n const smallBlockCount = ecInfo.ecBlocks[0].numBlocks;\n const largeBlockCount = ecInfo.ecBlocks[1].numBlocks;\n for (let i = 0; i < largeBlockCount; i++) {\n dataBlocks[smallBlockCount + i].codewords.push(codewords.shift());\n }\n }\n\n // Add the rest of the codewords to the blocks. These are the error correction codewords.\n while (codewords.length > 0) {\n for (const dataBlock of dataBlocks) {\n dataBlock.codewords.push(codewords.shift());\n }\n }\n\n return dataBlocks;\n}\n\nfunction decodeMatrix(matrix: BitMatrix) {\n const version = readVersion(matrix);\n if (!version) {\n return null;\n }\n\n const formatInfo = readFormatInformation(matrix);\n if (!formatInfo) {\n return null;\n }\n\n const codewords = readCodewords(matrix, version, formatInfo);\n const dataBlocks = getDataBlocks(codewords, version, formatInfo.errorCorrectionLevel);\n if (!dataBlocks) {\n return null;\n }\n\n // Count total number of data bytes\n const totalBytes = dataBlocks.reduce((a, b) => a + b.numDataCodewords, 0);\n const resultBytes = new Uint8ClampedArray(totalBytes);\n\n let resultIndex = 0;\n for (const dataBlock of dataBlocks) {\n const correctedBytes = rsDecode(dataBlock.codewords, dataBlock.codewords.length - dataBlock.numDataCodewords);\n if (!correctedBytes) {\n return null;\n }\n for (let i = 0; i < dataBlock.numDataCodewords; i++) {\n resultBytes[resultIndex++] = correctedBytes[i];\n }\n }\n\n try {\n return decodeData(resultBytes, version.versionNumber);\n } catch {\n return null;\n }\n}\n\nexport function decode(matrix: BitMatrix): DecodedQR {\n if (matrix == null) {\n return null;\n }\n const result = decodeMatrix(matrix);\n if (result) {\n return result;\n }\n // Decoding didn't work, try mirroring the QR across the topLeft -> bottomRight line.\n for (let x = 0; x < matrix.width; x++) {\n for (let y = x + 1; y < matrix.height; y++) {\n if (matrix.get(x, y) !== matrix.get(y, x)) {\n matrix.set(x, y, !matrix.get(x, y));\n matrix.set(y, x, !matrix.get(y, x));\n }\n }\n }\n return decodeMatrix(matrix);\n}\n", "import {BitMatrix} from \"../BitMatrix\";\nimport {Point, QRLocation} from \"../locator\";\n\ninterface PerspectiveTransform {\n a11: number;\n a21: number;\n a31: number;\n a12: number;\n a22: number;\n a32: number;\n a13: number;\n a23: number;\n a33: number;\n}\n\nfunction squareToQuadrilateral(p1: Point, p2: Point, p3: Point, p4: Point): PerspectiveTransform {\n const dx3 = p1.x - p2.x + p3.x - p4.x;\n const dy3 = p1.y - p2.y + p3.y - p4.y;\n if (dx3 === 0 && dy3 === 0) { // Affine\n return {\n a11: p2.x - p1.x,\n a12: p2.y - p1.y,\n a13: 0,\n a21: p3.x - p2.x,\n a22: p3.y - p2.y,\n a23: 0,\n a31: p1.x,\n a32: p1.y,\n a33: 1,\n };\n } else {\n const dx1 = p2.x - p3.x;\n const dx2 = p4.x - p3.x;\n const dy1 = p2.y - p3.y;\n const dy2 = p4.y - p3.y;\n const denominator = dx1 * dy2 - dx2 * dy1;\n const a13 = (dx3 * dy2 - dx2 * dy3) / denominator;\n const a23 = (dx1 * dy3 - dx3 * dy1) / denominator;\n return {\n a11: p2.x - p1.x + a13 * p2.x,\n a12: p2.y - p1.y + a13 * p2.y,\n a13,\n a21: p4.x - p1.x + a23 * p4.x,\n a22: p4.y - p1.y + a23 * p4.y,\n a23,\n a31: p1.x,\n a32: p1.y,\n a33: 1,\n };\n }\n}\n\nfunction quadrilateralToSquare(p1: Point, p2: Point, p3: Point, p4: Point): PerspectiveTransform {\n // Here, the adjoint serves as the inverse:\n const sToQ = squareToQuadrilateral(p1, p2, p3, p4);\n return {\n a11: sToQ.a22 * sToQ.a33 - sToQ.a23 * sToQ.a32,\n a12: sToQ.a13 * sToQ.a32 - sToQ.a12 * sToQ.a33,\n a13: sToQ.a12 * sToQ.a23 - sToQ.a13 * sToQ.a22,\n a21: sToQ.a23 * sToQ.a31 - sToQ.a21 * sToQ.a33,\n a22: sToQ.a11 * sToQ.a33 - sToQ.a13 * sToQ.a31,\n a23: sToQ.a13 * sToQ.a21 - sToQ.a11 * sToQ.a23,\n a31: sToQ.a21 * sToQ.a32 - sToQ.a22 * sToQ.a31,\n a32: sToQ.a12 * sToQ.a31 - sToQ.a11 * sToQ.a32,\n a33: sToQ.a11 * sToQ.a22 - sToQ.a12 * sToQ.a21,\n };\n}\n\nfunction times(a: PerspectiveTransform, b: PerspectiveTransform): PerspectiveTransform {\n return {\n a11: a.a11 * b.a11 + a.a21 * b.a12 + a.a31 * b.a13,\n a12: a.a12 * b.a11 + a.a22 * b.a12 + a.a32 * b.a13,\n a13: a.a13 * b.a11 + a.a23 * b.a12 + a.a33 * b.a13,\n a21: a.a11 * b.a21 + a.a21 * b.a22 + a.a31 * b.a23,\n a22: a.a12 * b.a21 + a.a22 * b.a22 + a.a32 * b.a23,\n a23: a.a13 * b.a21 + a.a23 * b.a22 + a.a33 * b.a23,\n a31: a.a11 * b.a31 + a.a21 * b.a32 + a.a31 * b.a33,\n a32: a.a12 * b.a31 + a.a22 * b.a32 + a.a32 * b.a33,\n a33: a.a13 * b.a31 + a.a23 * b.a32 + a.a33 * b.a33,\n };\n}\n\nexport function extract(image: BitMatrix, location: QRLocation) {\n const qToS = quadrilateralToSquare(\n {x: 3.5, y: 3.5},\n {x: location.dimension - 3.5, y: 3.5},\n {x: location.dimension - 6.5, y: location.dimension - 6.5},\n {x: 3.5, y: location.dimension - 3.5},\n );\n const sToQ = squareToQuadrilateral(location.topLeft, location.topRight, location.alignmentPattern, location.bottomLeft);\n const transform = times(sToQ, qToS);\n\n const matrix = BitMatrix.createEmpty(location.dimension, location.dimension);\n const mappingFunction = (x: number, y: number) => {\n const denominator = transform.a13 * x + transform.a23 * y + transform.a33;\n return {\n x: (transform.a11 * x + transform.a21 * y + transform.a31) / denominator,\n y: (transform.a12 * x + transform.a22 * y + transform.a32) / denominator,\n };\n };\n\n for (let y = 0; y < location.dimension; y++) {\n for (let x = 0; x < location.dimension; x++) {\n const xValue = x + 0.5;\n const yValue = y + 0.5;\n const sourcePixel = mappingFunction(xValue, yValue);\n matrix.set(x, y, image.get(Math.floor(sourcePixel.x), Math.floor(sourcePixel.y)));\n }\n }\n\n return {\n matrix,\n mappingFunction,\n };\n}\n", "import { BitMatrix } from \"../BitMatrix\";\n\nconst MAX_FINDERPATTERNS_TO_SEARCH = 5;\nconst MIN_QUAD_RATIO = 0.5;\nconst MAX_QUAD_RATIO = 1.5;\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface QRLocation {\n topRight: Point;\n bottomLeft: Point;\n topLeft: Point;\n alignmentPattern: Point;\n dimension: number;\n}\n\nconst distance = (a: Point, b: Point) => Math.sqrt((b.x - a.x) ** 2 + (b.y - a.y) ** 2);\n\nfunction sum(values: number[]) {\n return values.reduce((a, b) => a + b);\n}\n\n// Takes three finder patterns and organizes them into topLeft, topRight, etc\nfunction reorderFinderPatterns(pattern1: Point, pattern2: Point, pattern3: Point) {\n // Find distances between pattern centers\n const oneTwoDistance = distance(pattern1, pattern2);\n const twoThreeDistance = distance(pattern2, pattern3);\n const oneThreeDistance = distance(pattern1, pattern3);\n\n let bottomLeft: Point;\n let topLeft: Point;\n let topRight: Point;\n\n // Assume one closest to other two is B; A and C will just be guesses at first\n if (twoThreeDistance >= oneTwoDistance && twoThreeDistance >= oneThreeDistance) {\n [bottomLeft, topLeft, topRight] = [pattern2, pattern1, pattern3];\n } else if (oneThreeDistance >= twoThreeDistance && oneThreeDistance >= oneTwoDistance) {\n [bottomLeft, topLeft, topRight] = [pattern1, pattern2, pattern3];\n } else {\n [bottomLeft, topLeft, topRight] = [pattern1, pattern3, pattern2];\n }\n\n // Use cross product to figure out whether bottomLeft (A) and topRight (C) are correct or flipped in relation to topLeft (B)\n // This asks whether BC x BA has a positive z component, which is the arrangement we want. If it's negative, then\n // we've got it flipped around and should swap topRight and bottomLeft.\n if (((topRight.x - topLeft.x) * (bottomLeft.y - topLeft.y)) - ((topRight.y - topLeft.y) * (bottomLeft.x - topLeft.x)) < 0) {\n [bottomLeft, topRight] = [topRight, bottomLeft];\n }\n\n return { bottomLeft, topLeft, topRight };\n}\n\n// Computes the dimension (number of modules on a side) of the QR Code based on the position of the finder patterns\nfunction computeDimension(topLeft: Point, topRight: Point, bottomLeft: Point, matrix: BitMatrix) {\n const moduleSize = (\n sum(countBlackWhiteRun(topLeft, bottomLeft, matrix, 5)) / 7 + // Divide by 7 since the ratio is 1:1:3:1:1\n sum(countBlackWhiteRun(topLeft, topRight, matrix, 5)) / 7 +\n sum(countBlackWhiteRun(bottomLeft, topLeft, matrix, 5)) / 7 +\n sum(countBlackWhiteRun(topRight, topLeft, matrix, 5)) / 7\n ) / 4;\n\n if (moduleSize < 1) {\n throw new Error(\"Invalid module size\");\n }\n\n const topDimension = Math.round(distance(topLeft, topRight) / moduleSize);\n const sideDimension = Math.round(distance(topLeft, bottomLeft) / moduleSize);\n let dimension = Math.floor((topDimension + sideDimension) / 2) + 7;\n switch (dimension % 4) {\n case 0:\n dimension++;\n break;\n case 2:\n dimension--;\n break;\n }\n return { dimension, moduleSize };\n}\n\n// Takes an origin point and an end point and counts the sizes of the black white run from the origin towards the end point.\n// Returns an array of elements, representing the pixel size of the black white run.\n// Uses a variant of http://en.wikipedia.org/wiki/Bresenham's_line_algorithm\nfunction countBlackWhiteRunTowardsPoint(origin: Point, end: Point, matrix: BitMatrix, length: number) {\n const switchPoints: Point[] = [{x: Math.floor(origin.x), y: Math.floor(origin.y)}];\n const steep = Math.abs(end.y - origin.y) > Math.abs(end.x - origin.x);\n\n let fromX: number;\n let fromY: number;\n let toX: number;\n let toY: number;\n if (steep) {\n fromX = Math.floor(origin.y);\n fromY = Math.floor(origin.x);\n toX = Math.floor(end.y);\n toY = Math.floor(end.x);\n } else {\n fromX = Math.floor(origin.x);\n fromY = Math.floor(origin.y);\n toX = Math.floor(end.x);\n toY = Math.floor(end.y);\n }\n\n const dx = Math.abs(toX - fromX);\n const dy = Math.abs(toY - fromY);\n let error = Math.floor(-dx / 2);\n const xStep = fromX < toX ? 1 : -1;\n const yStep = fromY < toY ? 1 : -1;\n\n let currentPixel = true;\n // Loop up until x == toX, but not beyond\n for (let x = fromX, y = fromY; x !== toX + xStep; x += xStep) {\n // Does current pixel mean we have moved white to black or vice versa?\n // Scanning black in state 0,2 and white in state 1, so if we find the wrong\n // color, advance to next state or end if we are in state 2 already\n const realX = steep ? y : x;\n const realY = steep ? x : y;\n if (matrix.get(realX, realY) !== currentPixel) {\n currentPixel = !currentPixel;\n switchPoints.push({x: realX, y: realY});\n if (switchPoints.length === length + 1) {\n break;\n }\n }\n error += dy;\n if (error > 0) {\n if (y === toY) {\n break;\n }\n y += yStep;\n error -= dx;\n }\n }\n const distances: number[] = [];\n for (let i = 0; i < length; i++) {\n if (switchPoints[i] && switchPoints[i + 1]) {\n distances.push(distance(switchPoints[i], switchPoints[i + 1]));\n } else {\n distances.push(0);\n }\n }\n return distances;\n}\n\n// Takes an origin point and an end point and counts the sizes of the black white run in the origin point\n// along the line that intersects with the end point. Returns an array of elements, representing the pixel sizes\n// of the black white run. Takes a length which represents the number of switches from black to white to look for.\nfunction countBlackWhiteRun(origin: Point, end: Point, matrix: BitMatrix, length: number) {\n const rise = end.y - origin.y;\n const run = end.x - origin.x;\n\n const towardsEnd = countBlackWhiteRunTowardsPoint(origin, end, matrix, Math.ceil(length / 2));\n const awayFromEnd = countBlackWhiteRunTowardsPoint(origin, {x: origin.x - run, y: origin.y - rise}, matrix, Math.ceil(length / 2));\n\n const middleValue = towardsEnd.shift() + awayFromEnd.shift() - 1; // Substract one so we don't double count a pixel\n return awayFromEnd.concat(middleValue).concat(...towardsEnd);\n}\n\n// Takes in a black white run and an array of expected ratios. Returns the average size of the run as well as the \"error\" -\n// that is the amount the run diverges from the expected ratio\nfunction scoreBlackWhiteRun(sequence: number[], ratios: number[]) {\n const averageSize = sum(sequence) / sum(ratios);\n let error = 0;\n ratios.forEach((ratio, i) => {\n error += (sequence[i] - ratio * averageSize) ** 2;\n });\n\n return { averageSize, error };\n}\n\n// Takes an X,Y point and an array of sizes and scores the point against those ratios.\n// For example for a finder pattern takes the ratio list of 1:1:3:1:1 and checks horizontal, vertical and diagonal ratios\n// against that.\nfunction scorePattern(point: Point, ratios: number[], matrix: BitMatrix) {\n try {\n const horizontalRun = countBlackWhiteRun(point, {x: -1, y: point.y}, matrix, ratios.length);\n const verticalRun = countBlackWhiteRun(point, {x: point.x, y: -1}, matrix, ratios.length);\n\n const topLeftPoint = {\n x: Math.max(0, point.x - point.y) - 1,\n y: Math.max(0, point.y - point.x) - 1,\n };\n const topLeftBottomRightRun = countBlackWhiteRun(point, topLeftPoint, matrix, ratios.length);\n\n const bottomLeftPoint = {\n x: Math.min(matrix.width, point.x + point.y) + 1,\n y: Math.min(matrix.height, point.y + point.x) + 1,\n };\n const bottomLeftTopRightRun = countBlackWhiteRun(point, bottomLeftPoint, matrix, ratios.length);\n\n const horzError = scoreBlackWhiteRun(horizontalRun, ratios);\n const vertError = scoreBlackWhiteRun(verticalRun, ratios);\n const diagDownError = scoreBlackWhiteRun(topLeftBottomRightRun, ratios);\n const diagUpError = scoreBlackWhiteRun(bottomLeftTopRightRun, ratios);\n\n const ratioError = Math.sqrt(horzError.error * horzError.error +\n vertError.error * vertError.error +\n diagDownError.error * diagDownError.error +\n diagUpError.error * diagUpError.error);\n\n const avgSize = (horzError.averageSize + vertError.averageSize + diagDownError.averageSize + diagUpError.averageSize) / 4;\n\n const sizeError = ((horzError.averageSize - avgSize) ** 2 +\n (vertError.averageSize - avgSize) ** 2 +\n (diagDownError.averageSize - avgSize) ** 2 +\n (diagUpError.averageSize - avgSize) ** 2) / avgSize;\n return ratioError + sizeError;\n } catch {\n return Infinity;\n }\n}\n\nfunction recenterLocation(matrix: BitMatrix, p: Point): Point {\n let leftX = Math.round(p.x);\n while (matrix.get(leftX, Math.round(p.y))) {\n leftX--;\n }\n let rightX = Math.round(p.x);\n while (matrix.get(rightX, Math.round(p.y))) {\n rightX++;\n }\n const x = (leftX + rightX) / 2;\n\n let topY = Math.round(p.y);\n while (matrix.get(Math.round(x), topY)) {\n topY--;\n }\n let bottomY = Math.round(p.y);\n while (matrix.get(Math.round(x), bottomY)) {\n bottomY++;\n }\n const y = (topY + bottomY) / 2;\n\n return { x, y };\n}\n\ninterface Quad {\n top: {\n startX: number;\n endX: number;\n y: number;\n };\n bottom: {\n startX: number;\n endX: number;\n y: number;\n };\n}\n\nexport function locate(matrix: BitMatrix): QRLocation[] {\n const finderPatternQuads: Quad[] = [];\n let activeFinderPatternQuads: Quad[] = [];\n const alignmentPatternQuads: Quad[] = [];\n let activeAlignmentPatternQuads: Quad[] = [];\n\n for (let y = 0; y <= matrix.height; y++) {\n let length = 0;\n let lastBit = false;\n let scans = [0, 0, 0, 0, 0];\n\n for (let x = -1; x <= matrix.width; x++) {\n const v = matrix.get(x, y);\n if (v === lastBit) {\n length++;\n } else {\n scans = [scans[1], scans[2], scans[3], scans[4], length];\n length = 1;\n lastBit = v;\n\n // Do the last 5 color changes ~ match the expected ratio for a finder pattern? 1:1:3:1:1 of b:w:b:w:b\n const averageFinderPatternBlocksize = sum(scans) / 7;\n const validFinderPattern =\n Math.abs(scans[0] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[1] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[2] - 3 * averageFinderPatternBlocksize) < 3 * averageFinderPatternBlocksize &&\n Math.abs(scans[3] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n Math.abs(scans[4] - averageFinderPatternBlocksize) < averageFinderPatternBlocksize &&\n !v; // And make sure the current pixel is white since finder patterns are bordered in white\n\n // Do the last 3 color changes ~ match the expected ratio for an alignment pattern? 1:1:1 of w:b:w\n const averageAlignmentPatternBlocksize = sum(scans.slice(-3)) / 3;\n const validAlignmentPattern =\n Math.abs(scans[2] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n Math.abs(scans[3] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n Math.abs(scans[4] - averageAlignmentPatternBlocksize) < averageAlignmentPatternBlocksize &&\n v; // Is the current pixel black since alignment patterns are bordered in black\n\n if (validFinderPattern) {\n // Compute the start and end x values of the large center black square\n const endX = x - scans[3] - scans[4];\n const startX = endX - scans[2];\n\n const line = { startX, endX, y };\n // Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with\n // that line as the starting point.\n const matchingQuads = activeFinderPatternQuads.filter(q =>\n (startX >= q.bottom.startX && startX <= q.bottom.endX) ||\n (endX >= q.bottom.startX && startX <= q.bottom.endX) ||\n (startX <= q.bottom.startX && endX >= q.bottom.endX && (\n (scans[2] / (q.bottom.endX - q.bottom.startX)) < MAX_QUAD_RATIO &&\n (scans[2] / (q.bottom.endX - q.bottom.startX)) > MIN_QUAD_RATIO\n )),\n );\n if (matchingQuads.length > 0) {\n matchingQuads[0].bottom = line;\n } else {\n activeFinderPatternQuads.push({ top: line, bottom: line });\n }\n }\n if (validAlignmentPattern) {\n // Compute the start and end x values of the center black square\n const endX = x - scans[4];\n const startX = endX - scans[3];\n\n const line = { startX, y, endX };\n // Is there a quad directly above the current spot? If so, extend it with the new line. Otherwise, create a new quad with\n // that line as the starting point.\n const matchingQuads = activeAlignmentPatternQuads.filter(q =>\n (startX >= q.bottom.startX && startX <= q.bottom.endX) ||\n (endX >= q.bottom.startX && startX <= q.bottom.endX) ||\n (startX <= q.bottom.startX && endX >= q.bottom.endX && (\n (scans[2] / (q.bottom.endX - q.bottom.startX)) < MAX_QUAD_RATIO &&\n (scans[2] / (q.bottom.endX - q.bottom.startX)) > MIN_QUAD_RATIO\n )),\n );\n if (matchingQuads.length > 0) {\n matchingQuads[0].bottom = line;\n } else {\n activeAlignmentPatternQuads.push({ top: line, bottom: line });\n }\n }\n }\n }\n finderPatternQuads.push(...activeFinderPatternQuads.filter(q => q.bottom.y !== y && q.bottom.y - q.top.y >= 2));\n activeFinderPatternQuads = activeFinderPatternQuads.filter(q => q.bottom.y === y);\n\n alignmentPatternQuads.push(...activeAlignmentPatternQuads.filter(q => q.bottom.y !== y));\n activeAlignmentPatternQuads = activeAlignmentPatternQuads.filter(q => q.bottom.y === y);\n\n }\n\n finderPatternQuads.push(...activeFinderPatternQuads.filter(q => q.bottom.y - q.top.y >= 2));\n alignmentPatternQuads.push(...activeAlignmentPatternQuads);\n\n // Refactored from cozmo/jsQR to (hopefully) circumvent an issue in Safari 13+ on both Mac and iOS (also including\n // iOS Chrome and other Safari iOS derivatives). Safari was very occasionally and apparently not deterministically\n // throwing a \"RangeError: Array size is not a small enough positive integer.\" exception seemingly within the second\n // .map of the original code (here the second for-loop). This second .map contained a nested .map call over the same\n // array instance which was the chained result from previous calls to .map, .filter and .sort which potentially caused\n // this bug in Safari?\n // Also see https://github.com/cozmo/jsQR/issues/157 and https://bugs.webkit.org/show_bug.cgi?id=211619#c3\n const scoredFinderPatternPositions: Array = [];\n for (const quad of finderPatternQuads) {\n if (quad.bottom.y - quad.top.y < 2) {\n // All quads must be at least 2px tall since the center square is larger than a block\n continue;\n }\n\n // calculate quad center\n const x = (quad.top.startX + quad.top.endX + quad.bottom.startX + quad.bottom.endX) / 4;\n const y = (quad.top.y + quad.bottom.y + 1) / 2;\n if (!matrix.get(Math.round(x), Math.round(y))) {\n continue;\n }\n\n const lengths = [quad.top.endX - quad.top.startX, quad.bottom.endX - quad.bottom.startX, quad.bottom.y - quad.top.y + 1];\n const size = sum(lengths) / lengths.length;\n // Initial scoring of finder pattern quads by looking at their ratios, not taking into account position\n const score = scorePattern({x: Math.round(x), y: Math.round(y)}, [1, 1, 3, 1, 1], matrix);\n scoredFinderPatternPositions.push({ score, x, y, size });\n }\n if (scoredFinderPatternPositions.length < 3) {\n // A QR code has 3 finder patterns, therefore we need at least 3 candidates.\n return null;\n }\n scoredFinderPatternPositions.sort((a, b) => a.score - b.score);\n\n // Now take the top finder pattern options and try to find 2 other options with a similar size.\n const finderPatternGroups: Array<{ points: [Point, Point, Point], score: number }> = [];\n for (let i = 0; i < Math.min(scoredFinderPatternPositions.length, MAX_FINDERPATTERNS_TO_SEARCH); ++i) {\n const point = scoredFinderPatternPositions[i];\n const otherPoints: typeof scoredFinderPatternPositions = [];\n\n for (const otherPoint of scoredFinderPatternPositions) {\n if (otherPoint === point) {\n continue;\n }\n otherPoints.push({\n ...otherPoint,\n score: otherPoint.score + ((otherPoint.size - point.size) ** 2) / point.size, // score similarity of sizes\n });\n }\n otherPoints.sort((a, b) => a.score - b.score);\n\n finderPatternGroups.push({\n points: [point, otherPoints[0], otherPoints[1]], // note that otherPoints.length >= 2 as scoredFinderPatternPositions.length >= 3\n score: point.score + otherPoints[0].score + otherPoints[1].score, // total combined score of the three points in the group\n });\n }\n finderPatternGroups.sort((a, b) => a.score - b.score);\n const bestFinderPatternGroup = finderPatternGroups[0];\n\n const { topRight, topLeft, bottomLeft } = reorderFinderPatterns(...bestFinderPatternGroup.points);\n const alignment = findAlignmentPattern(matrix, alignmentPatternQuads, topRight, topLeft, bottomLeft);\n const result: QRLocation[] = [];\n if (alignment) {\n result.push({\n alignmentPattern: { x: alignment.alignmentPattern.x, y: alignment.alignmentPattern.y },\n bottomLeft: {x: bottomLeft.x, y: bottomLeft.y },\n dimension: alignment.dimension,\n topLeft: {x: topLeft.x, y: topLeft.y },\n topRight: {x: topRight.x, y: topRight.y },\n });\n }\n\n // We normally use the center of the quads as the location of the tracking points, which is optimal for most cases and will account\n // for a skew in the image. However, In some cases, a slight skew might not be real and instead be caused by image compression\n // errors and/or low resolution. For those cases, we'd be better off centering the point exactly in the middle of the black area. We\n // compute and return the location data for the naively centered points as it is little additional work and allows for multiple\n // attempts at decoding harder images.\n const midTopRight = recenterLocation(matrix, topRight);\n const midTopLeft = recenterLocation(matrix, topLeft);\n const midBottomLeft = recenterLocation(matrix, bottomLeft);\n const centeredAlignment = findAlignmentPattern(matrix, alignmentPatternQuads, midTopRight, midTopLeft, midBottomLeft);\n if (centeredAlignment) {\n result.push({\n alignmentPattern: { x: centeredAlignment.alignmentPattern.x, y: centeredAlignment.alignmentPattern.y },\n bottomLeft: { x: midBottomLeft.x, y: midBottomLeft. y },\n topLeft: { x: midTopLeft.x, y: midTopLeft. y },\n topRight: { x: midTopRight.x, y: midTopRight. y },\n dimension: centeredAlignment.dimension,\n });\n }\n\n if (result.length === 0) {\n return null;\n }\n\n return result;\n}\n\nfunction findAlignmentPattern(matrix: BitMatrix, alignmentPatternQuads: Quad[], topRight: Point, topLeft: Point, bottomLeft: Point) {\n // Now that we've found the three finder patterns we can determine the blockSize and the size of the QR code.\n // We'll use these to help find the alignment pattern but also later when we do the extraction.\n let dimension: number;\n let moduleSize: number;\n try {\n ({ dimension, moduleSize } = computeDimension(topLeft, topRight, bottomLeft, matrix));\n } catch (e) {\n return null;\n }\n\n // Now find the alignment pattern\n const bottomRightFinderPattern = { // Best guess at where a bottomRight finder pattern would be\n x: topRight.x - topLeft.x + bottomLeft.x,\n y: topRight.y - topLeft.y + bottomLeft.y,\n };\n const modulesBetweenFinderPatterns = ((distance(topLeft, bottomLeft) + distance(topLeft, topRight)) / 2 / moduleSize);\n const correctionToTopLeft = 1 - (3 / modulesBetweenFinderPatterns);\n const expectedAlignmentPattern = {\n x: topLeft.x + correctionToTopLeft * (bottomRightFinderPattern.x - topLeft.x),\n y: topLeft.y + correctionToTopLeft * (bottomRightFinderPattern.y - topLeft.y),\n };\n\n const alignmentPatterns = alignmentPatternQuads\n .map(q => {\n const x = (q.top.startX + q.top.endX + q.bottom.startX + q.bottom.endX) / 4;\n const y = (q.top.y + q.bottom.y + 1) / 2;\n if (!matrix.get(Math.floor(x), Math.floor(y))) {\n return;\n }\n\n const sizeScore = scorePattern({x: Math.floor(x), y: Math.floor(y)}, [1, 1, 1], matrix);\n const score = sizeScore + distance({x, y}, expectedAlignmentPattern);\n return { x, y, score };\n })\n .filter(v => !!v)\n .sort((a, b) => a.score - b.score);\n\n // If there are less than 15 modules between finder patterns it's a version 1 QR code and as such has no alignmemnt pattern\n // so we can only use our best guess.\n const alignmentPattern = modulesBetweenFinderPatterns >= 15 && alignmentPatterns.length ? alignmentPatterns[0] : expectedAlignmentPattern;\n\n return { alignmentPattern, dimension };\n}\n", "import {binarize} from \"./binarizer\";\nimport {BitMatrix} from \"./BitMatrix\";\nimport {Chunks} from \"./decoder/decodeData\";\nimport {decode} from \"./decoder/decoder\";\nimport { Version } from \"./decoder/version\";\nimport {extract} from \"./extractor\";\nimport {locate, Point} from \"./locator\";\n\nexport interface QRCode {\n binaryData: number[];\n data: string;\n chunks: Chunks;\n version: number;\n location: {\n topRightCorner: Point;\n topLeftCorner: Point;\n bottomRightCorner: Point;\n bottomLeftCorner: Point;\n\n topRightFinderPattern: Point;\n topLeftFinderPattern: Point;\n bottomLeftFinderPattern: Point;\n\n bottomRightAlignmentPattern?: Point;\n };\n matrix: BitMatrix;\n}\n\nfunction scan(matrix: BitMatrix): QRCode | null {\n const locations = locate(matrix);\n if (!locations) {\n return null;\n }\n\n for (const location of locations) {\n const extracted = extract(matrix, location);\n const decoded = decode(extracted.matrix);\n if (decoded) {\n return {\n binaryData: decoded.bytes,\n data: decoded.text,\n chunks: decoded.chunks,\n version: decoded.version,\n location: {\n topRightCorner: extracted.mappingFunction(location.dimension, 0),\n topLeftCorner: extracted.mappingFunction(0, 0),\n bottomRightCorner: extracted.mappingFunction(location.dimension, location.dimension),\n bottomLeftCorner: extracted.mappingFunction(0, location.dimension),\n\n topRightFinderPattern: location.topRight,\n topLeftFinderPattern: location.topLeft,\n bottomLeftFinderPattern: location.bottomLeft,\n\n bottomRightAlignmentPattern: location.alignmentPattern,\n },\n matrix: extracted.matrix,\n };\n }\n }\n return null;\n}\n\nexport interface Options {\n inversionAttempts?: \"dontInvert\" | \"onlyInvert\" | \"attemptBoth\" | \"invertFirst\";\n greyScaleWeights?: GreyscaleWeights;\n canOverwriteImage?: boolean;\n}\n\nexport interface GreyscaleWeights {\n red: number;\n green: number;\n blue: number;\n useIntegerApproximation?: boolean;\n}\n\nconst defaultOptions: Options = {\n inversionAttempts: \"attemptBoth\",\n greyScaleWeights: {\n red: 0.2126,\n green: 0.7152,\n blue: 0.0722,\n useIntegerApproximation: false,\n },\n canOverwriteImage: true,\n};\n\nfunction mergeObject(target: any, src: any) {\n Object.keys(src).forEach(opt => { // Sad implementation of Object.assign since we target es5 not es6\n target[opt] = src[opt];\n });\n}\n\nfunction jsQR(data: Uint8ClampedArray, width: number, height: number, providedOptions: Options = {}): QRCode | null {\n const options = Object.create(null);\n mergeObject(options, defaultOptions);\n mergeObject(options, providedOptions);\n\n const tryInvertedFirst = options.inversionAttempts === \"onlyInvert\" || options.inversionAttempts === \"invertFirst\";\n const shouldInvert = options.inversionAttempts === \"attemptBoth\" || tryInvertedFirst;\n const {binarized, inverted} = binarize(data, width, height, shouldInvert, options.greyScaleWeights,\n options.canOverwriteImage);\n let result = scan(tryInvertedFirst ? inverted : binarized);\n if (!result && (options.inversionAttempts === \"attemptBoth\" || options.inversionAttempts === \"invertFirst\")) {\n result = scan(tryInvertedFirst ? binarized : inverted);\n }\n return result;\n}\n\n(jsQR as any).default = jsQR;\nexport default jsQR;\n", "// @ts-ignore jsqr-es6 does not provide types currently\nimport jsQR from '../node_modules/jsqr-es6/dist/jsQR.js';\n\ntype GrayscaleWeights = {\n red: number,\n green: number,\n blue: number,\n useIntegerApproximation: boolean,\n};\n\nlet inversionAttempts: 'dontInvert' | 'onlyInvert' | 'attemptBoth' = 'dontInvert';\nlet grayscaleWeights: GrayscaleWeights = {\n // weights for quick luma integer approximation (https://en.wikipedia.org/wiki/YUV#Full_swing_for_BT.601)\n red: 77,\n green: 150,\n blue: 29,\n useIntegerApproximation: true,\n};\n\nself.onmessage = event => {\n const id = event['data']['id'];\n const type = event['data']['type'];\n const data = event['data']['data'];\n\n switch (type) {\n case 'decode':\n decode(data, id);\n break;\n case 'grayscaleWeights':\n setGrayscaleWeights(data);\n break;\n case 'inversionMode':\n setInversionMode(data);\n break;\n case 'close':\n // close after earlier messages in the event loop finished processing\n self.close();\n break;\n }\n};\n\nfunction decode(data: { data: Uint8ClampedArray, width: number, height: number }, requestId: number): void {\n const rgbaData = data['data'];\n const width = data['width'];\n const height = data['height'];\n const result = jsQR(rgbaData, width, height, {\n inversionAttempts: inversionAttempts,\n greyScaleWeights: grayscaleWeights,\n });\n if (!result) {\n (self as unknown as Worker).postMessage({\n id: requestId,\n type: 'qrResult',\n data: null,\n });\n return;\n }\n\n (self as unknown as Worker).postMessage({\n id: requestId,\n type: 'qrResult',\n data: result.data,\n // equivalent to cornerPoints of native BarcodeDetector\n cornerPoints: [\n result.location.topLeftCorner,\n result.location.topRightCorner,\n result.location.bottomRightCorner,\n result.location.bottomLeftCorner,\n ],\n });\n}\n\nfunction setGrayscaleWeights(data: GrayscaleWeights) {\n // update grayscaleWeights in a closure compiler compatible fashion\n grayscaleWeights.red = data['red'];\n grayscaleWeights.green = data['green'];\n grayscaleWeights.blue = data['blue'];\n grayscaleWeights.useIntegerApproximation = data['useIntegerApproximation'];\n}\n\nfunction setInversionMode(inversionMode: 'original' | 'invert' | 'both') {\n switch (inversionMode) {\n case 'original':\n inversionAttempts = 'dontInvert';\n break;\n case 'invert':\n inversionAttempts = 'onlyInvert';\n break;\n case 'both':\n inversionAttempts = 'attemptBoth';\n break;\n default:\n throw new Error('Invalid inversion mode');\n }\n}\n", "up.compiler('[readonly-checkboxes]', (element) => {\n up.on(element, 'change', 'input[type=\"checkbox\"]', (event) => {\n event.target.checked = !event.target.checked\n })\n})\n", "up.compiler('[scale-to-fill-container]', (element) => {\n function isOverflown(parent) {\n const overflowWidth = element.clientWidth > parent.clientWidth\n const overflowHeight = element.clientHeight > parent.clientHeight\n return overflowHeight || overflowWidth\n }\n\n function resizeText() {\n const parent = element.parentElement\n const step = 1\n let i = 5\n\n while (i < 50) {\n setFontSize(i)\n if (isOverflown(parent)) {\n i -= step // revert to last state where no overflow happened\n break\n }\n\n i += step\n }\n\n setFontSize(i)\n }\n\n function setFontSize(fontSize) {\n element.style.fontSize = `${fontSize}px`\n }\n\n resizeText()\n\n element.addEventListener('text:resizeThis', resizeText)\n\n return up.on(window, 'resize', resizeText)\n})\n\nup.on('text:resize', ({ target }) => {\n const scalableElement = target.querySelector('[scale-to-fill-container]')\n if (scalableElement) {\n up.emit(scalableElement, 'text:resizeThis')\n }\n})\n", "up.compiler('[scrollable-pagination]', (element) => {\n const focusedButton = element.querySelector('[scrollable-pagination--focused = true]')\n const xOffset = focusedButton.getBoundingClientRect().left\n const paginationWidth = element.offsetWidth\n\n element.scroll(xOffset - (paginationWidth / 2), 0)\n})\n", "if ('serviceWorker' in navigator) {\n navigator.serviceWorker.register('/service-worker.js', { scope: '/' })\n}\n", "up.on('up:form:submit', '.slide-form', ({ renderOptions }) => {\n renderOptions.onLoaded = function({ response }) {\n if (response.header('X-Course-Completed')) {\n renderOptions.transition = 'none'\n }\n }\n})\n", "/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ (() => {\n\nwindow.up = {\n version: '3.7.3'\n};\n\n\n/***/ }),\n/* 2 */\n/***/ (() => {\n\nup.mockable = function (originalFn) {\n if (window.jasmine) {\n let name = originalFn.name;\n let obj = { [name]: originalFn };\n let mockableFn = function () {\n return obj[name].apply(this, arguments);\n };\n mockableFn.mock = () => spyOn(obj, name);\n return mockableFn;\n }\n else {\n return originalFn;\n }\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (() => {\n\nup.util = (function () {\n function noop() {\n }\n function asyncNoop() {\n return Promise.resolve();\n }\n function memoize(func) {\n let cachedValue, cached;\n return function (...args) {\n if (cached) {\n return cachedValue;\n }\n else {\n cached = true;\n return cachedValue = func.apply(this, args);\n }\n };\n }\n const NORMALIZE_URL_DEFAULTS = {\n host: 'cross-domain',\n };\n function normalizeURL(url, options) {\n options = newOptions(options, NORMALIZE_URL_DEFAULTS);\n const parts = parseURL(url);\n let normalized = '';\n if (options.host === 'cross-domain') {\n options.host = isCrossOrigin(parts);\n }\n if (options.host) {\n normalized += parts.protocol + \"//\" + parts.host;\n }\n let { pathname } = parts;\n if (options.trailingSlash === false && pathname !== '/') {\n pathname = pathname.replace(/\\/$/, '');\n }\n normalized += pathname;\n if (options.search !== false) {\n normalized += parts.search;\n }\n if (options.hash !== false) {\n normalized += parts.hash;\n }\n return normalized;\n }\n function matchURLs(leftURL, rightURL) {\n return normalizeURL(leftURL) === normalizeURL(rightURL);\n }\n const APP_PROTOCOL = location.protocol;\n const APP_HOSTNAME = location.hostname;\n function isCrossOrigin(urlOrAnchor) {\n if (isString(urlOrAnchor) && (urlOrAnchor.indexOf('//') === -1)) {\n return false;\n }\n const parts = parseURL(urlOrAnchor);\n return (APP_HOSTNAME !== parts.hostname) || (APP_PROTOCOL !== parts.protocol);\n }\n function parseURL(url) {\n if (url.pathname) {\n return url;\n }\n let link = document.createElement('a');\n link.href = url;\n return link;\n }\n function normalizeMethod(method) {\n return method ? method.toUpperCase() : 'GET';\n }\n function methodAllowsPayload(method) {\n return (method !== 'GET') && (method !== 'HEAD');\n }\n function iteratee(block) {\n if (isString(block)) {\n return item => item[block];\n }\n else {\n return block;\n }\n }\n function map(list, block) {\n if (list.length === 0) {\n return [];\n }\n block = iteratee(block);\n let mapped = [];\n let i = 0;\n for (let item of list) {\n mapped.push(block(item, i++));\n }\n return mapped;\n }\n function mapObject(array, pairer) {\n const merger = function (object, pair) {\n object[pair[0]] = pair[1];\n return object;\n };\n return map(array, pairer).reduce(merger, {});\n }\n function each(array, block) {\n let i = 0;\n for (let item of array) {\n block(item, i++);\n }\n }\n function isNull(object) {\n return object === null;\n }\n function isUndefined(object) {\n return object === undefined;\n }\n const isDefined = negate(isUndefined);\n function isMissing(object) {\n return isUndefined(object) || isNull(object);\n }\n const isGiven = negate(isMissing);\n function isBlank(value) {\n if (isMissing(value)) {\n return true;\n }\n if (isObject(value) && value[isBlank.key]) {\n return value[isBlank.key]();\n }\n if (isString(value) || isList(value)) {\n return value.length === 0;\n }\n if (isOptions(value)) {\n return Object.keys(value).length === 0;\n }\n return false;\n }\n isBlank.key = 'up.util.isBlank';\n function presence(value, tester = isPresent) {\n if (tester(value)) {\n return value;\n }\n }\n const isPresent = negate(isBlank);\n function isFunction(object) {\n return typeof (object) === 'function';\n }\n function isString(object) {\n return (typeof (object) === 'string') || object instanceof String;\n }\n function isBoolean(object) {\n return (typeof (object) === 'boolean') || object instanceof Boolean;\n }\n function isNumber(object) {\n return (typeof (object) === 'number') || object instanceof Number;\n }\n function isOptions(object) {\n return (typeof (object) === 'object') && !isNull(object) && (isUndefined(object.constructor) || (object.constructor === Object));\n }\n function isObject(object) {\n const typeOfResult = typeof (object);\n return ((typeOfResult === 'object') && !isNull(object)) || (typeOfResult === 'function');\n }\n function isElement(object) {\n return object instanceof Element;\n }\n function isRegExp(object) {\n return object instanceof RegExp;\n }\n function isError(object) {\n return object instanceof Error;\n }\n function isJQuery(object) {\n return up.browser.canJQuery() && object instanceof jQuery;\n }\n function isElementish(object) {\n return !!(object && (object.addEventListener || object[0]?.addEventListener));\n }\n function isPromise(object) {\n return isObject(object) && isFunction(object.then);\n }\n const { isArray } = Array;\n function isFormData(object) {\n return object instanceof FormData;\n }\n function toArray(value) {\n return isArray(value) ? value : copyArrayLike(value);\n }\n function isList(value) {\n return isArray(value) ||\n isNodeList(value) ||\n isArguments(value) ||\n isJQuery(value) ||\n isHTMLCollection(value);\n }\n function isNodeList(value) {\n return value instanceof NodeList;\n }\n function isHTMLCollection(value) {\n return value instanceof HTMLCollection;\n }\n function isArguments(value) {\n return Object.prototype.toString.call(value) === '[object Arguments]';\n }\n function nullToUndefined(value) {\n if (!isNull(value)) {\n return value;\n }\n }\n function wrapList(value) {\n if (isList(value)) {\n return value;\n }\n else if (isMissing(value)) {\n return [];\n }\n else {\n return [value];\n }\n }\n function copy(value) {\n if (isObject(value) && value[copy.key]) {\n value = value[copy.key]();\n }\n else if (isList(value)) {\n value = copyArrayLike(value);\n }\n else if (isOptions(value)) {\n value = Object.assign({}, value);\n }\n return value;\n }\n function copyArrayLike(arrayLike) {\n return Array.prototype.slice.call(arrayLike);\n }\n copy.key = 'up.util.copy';\n Date.prototype[copy.key] = function () { return new Date(+this); };\n function merge(...sources) {\n return Object.assign({}, ...sources);\n }\n function mergeDefined(...sources) {\n const result = {};\n for (let source of sources) {\n if (source) {\n for (let key in source) {\n const value = source[key];\n if (isDefined(value)) {\n result[key] = value;\n }\n }\n }\n }\n return result;\n }\n function newOptions(object, defaults) {\n if (defaults) {\n return merge(defaults, object);\n }\n else if (object) {\n return copy(object);\n }\n else {\n return {};\n }\n }\n function parseArgIntoOptions(args, argKey) {\n let options = extractOptions(args);\n if (isDefined(args[0])) {\n options = copy(options);\n options[argKey] = args[0];\n }\n return options;\n }\n function findInList(list, tester) {\n tester = iteratee(tester);\n let match;\n for (let element of list) {\n if (tester(element)) {\n match = element;\n break;\n }\n }\n return match;\n }\n function some(list, tester) {\n return !!findResult(list, tester);\n }\n function findResult(list, tester) {\n tester = iteratee(tester);\n let i = 0;\n for (let item of list) {\n const result = tester(item, i++);\n if (result) {\n return result;\n }\n }\n }\n function every(list, tester) {\n tester = iteratee(tester);\n let match = true;\n let i = 0;\n for (let item of list) {\n if (!tester(item, i++)) {\n match = false;\n break;\n }\n }\n return match;\n }\n function compact(array) {\n return filterList(array, isGiven);\n }\n function filterMap(list, mapping) {\n return filterList(map(list, mapping), isDefined);\n }\n function compactObject(object) {\n return pickBy(object, isGiven);\n }\n function uniq(array) {\n if (array.length < 2) {\n return array;\n }\n return Array.from(new Set(array));\n }\n function uniqBy(array, mapper) {\n if (array.length < 2) {\n return array;\n }\n mapper = iteratee(mapper);\n const seenElements = new Set();\n return filterList(array, function (elem, index) {\n const mapped = mapper(elem, index);\n if (seenElements.has(mapped)) {\n return false;\n }\n else {\n seenElements.add(mapped);\n return true;\n }\n });\n }\n function filterList(list, tester) {\n tester = iteratee(tester);\n const matches = [];\n each(list, function (element, index) {\n if (tester(element, index)) {\n return matches.push(element);\n }\n });\n return matches;\n }\n function reject(list, tester) {\n tester = negate(iteratee(tester));\n return filterList(list, tester);\n }\n function intersect(array1, array2) {\n return filterList(array1, element => contains(array2, element));\n }\n function scheduleTimer(millis, callback) {\n return setTimeout(callback, millis);\n }\n function queueTask(task) {\n return setTimeout(task);\n }\n function queueMicrotask(task) {\n return Promise.resolve().then(task);\n }\n function last(value) {\n return value[value.length - 1];\n }\n function contains(value, subValue) {\n let indexOf = value.indexOf || Array.prototype.indexOf;\n return indexOf.call(value, subValue) >= 0;\n }\n function objectContains(object, subObject) {\n const reducedValue = pick(object, Object.keys(subObject));\n return isEqual(subObject, reducedValue);\n }\n function pick(object, keys) {\n const filtered = {};\n for (let key of keys) {\n if (key in object) {\n filtered[key] = object[key];\n }\n }\n return filtered;\n }\n function pickBy(object, tester) {\n tester = iteratee(tester);\n const filtered = {};\n for (let key in object) {\n const value = object[key];\n if (tester(value, key, object)) {\n filtered[key] = object[key];\n }\n }\n return filtered;\n }\n function omit(object, keys) {\n return pickBy(object, (_value, key) => !contains(keys, key));\n }\n function unresolvablePromise() {\n return new Promise(noop);\n }\n function remove(array, element) {\n const index = array.indexOf(element);\n if (index >= 0) {\n array.splice(index, 1);\n return element;\n }\n }\n function evalOption(value, ...args) {\n return isFunction(value) ? value(...args) : value;\n }\n function evalAutoOption(value, autoMeans, ...args) {\n value = evalOption(value, ...args);\n if (value === 'auto') {\n value = evalOption(autoMeans, ...args);\n }\n return value;\n }\n const ESCAPE_HTML_ENTITY_MAP = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': '"',\n \"'\": '''\n };\n function escapeHTML(string) {\n return string.replace(/[&<>\"']/g, char => ESCAPE_HTML_ENTITY_MAP[char]);\n }\n function escapeRegExp(string) {\n return string.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n function pluckKey(object, key) {\n const value = object[key];\n delete object[key];\n return value;\n }\n function renameKey(object, oldKey, newKey) {\n return object[newKey] = pluckKey(object, oldKey);\n }\n function extractLastArg(args, tester) {\n if (tester(last(args))) {\n return args.pop();\n }\n }\n function extractCallback(args) {\n return extractLastArg(args, isFunction);\n }\n function extractOptions(args) {\n return extractLastArg(args, isOptions) || {};\n }\n function identity(arg) {\n return arg;\n }\n function sequence(functions) {\n functions = compact(functions);\n return (...args) => map(functions, fn => fn(...args));\n }\n function flatten(array) {\n const flattened = [];\n for (let object of array) {\n if (isList(object)) {\n flattened.push(...object);\n }\n else {\n flattened.push(object);\n }\n }\n return flattened;\n }\n function flatMap(array, block) {\n return flatten(map(array, block));\n }\n function always(promise, callback = identity) {\n return promise.then(callback, callback);\n }\n function newDeferred() {\n let resolveFn;\n let rejectFn;\n const nativePromise = new Promise(function (givenResolve, givenReject) {\n resolveFn = givenResolve;\n rejectFn = givenReject;\n });\n nativePromise.resolve = resolveFn;\n nativePromise.reject = rejectFn;\n return nativePromise;\n }\n function isBasicObjectProperty(k) {\n return Object.prototype.hasOwnProperty(k);\n }\n function isEqual(a, b) {\n if (a?.valueOf) {\n a = a.valueOf();\n }\n if (b?.valueOf) {\n b = b.valueOf();\n }\n if (typeof (a) !== typeof (b)) {\n return false;\n }\n else if (isList(a) && isList(b)) {\n return isEqualList(a, b);\n }\n else if (isObject(a) && a[isEqual.key]) {\n return a[isEqual.key](b);\n }\n else if (isOptions(a) && isOptions(b)) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (isEqualList(aKeys, bKeys)) {\n return every(aKeys, aKey => isEqual(a[aKey], b[aKey]));\n }\n else {\n return false;\n }\n }\n else {\n return a === b;\n }\n }\n isEqual.key = 'up.util.isEqual';\n function isEqualList(a, b) {\n return (a.length === b.length) && every(a, (elem, index) => isEqual(elem, b[index]));\n }\n const PARSE_TOKEN_PATTERNS = {\n 'space/or': /\\s+(?:or\\s+)?/,\n 'or': /\\s+or\\s+/,\n 'comma': /\\s*,\\s*/\n };\n function parseTokens(value, options = {}) {\n if (isString(value)) {\n value = value.trim();\n if (options.json && /^\\[.*]$/.test(value)) {\n return JSON.parse(value);\n }\n else {\n let separator = options.separator || 'space/or';\n let pattern = PARSE_TOKEN_PATTERNS[separator];\n return value.split(pattern);\n }\n }\n else {\n return wrapList(value);\n }\n }\n function wrapValue(constructor, ...args) {\n return (args[0] instanceof constructor) ? args[0] : new constructor(...args);\n }\n let nextUid = 0;\n function uid() {\n return nextUid++;\n }\n function reverse(list) {\n return copy(list).reverse();\n }\n function renameKeys(object, renameKeyFn) {\n const renamed = {};\n for (let key in object) {\n renamed[renameKeyFn(key)] = object[key];\n }\n return renamed;\n }\n function camelToKebabCase(str) {\n return str.replace(/[A-Z]/g, char => '-' + char.toLowerCase());\n }\n function lowerCaseFirst(str) {\n return str[0].toLowerCase() + str.slice(1);\n }\n function upperCaseFirst(str) {\n return str[0].toUpperCase() + str.slice(1);\n }\n function defineDelegates(object, props, targetProvider) {\n for (let prop of props) {\n Object.defineProperty(object, prop, {\n get() {\n const target = targetProvider.call(this);\n let value = target[prop];\n if (isFunction(value)) {\n value = value.bind(target);\n }\n return value;\n },\n set(newValue) {\n const target = targetProvider.call(this);\n target[prop] = newValue;\n }\n });\n }\n }\n function stringifyArg(arg, placeholder = '%o') {\n let string;\n const maxLength = 200;\n if (placeholder === '%c') {\n return '';\n }\n if (placeholder === '%s' && isGiven(arg)) {\n arg = arg.toString();\n }\n if (isString(arg)) {\n string = arg.trim().replace(/[\\n\\r\\t ]+/g, ' ');\n if (placeholder === '%o') {\n string = JSON.stringify(string);\n }\n }\n else if (isUndefined(arg)) {\n string = 'undefined';\n }\n else if (isNumber(arg) || isFunction(arg)) {\n string = arg.toString();\n }\n else if (isArray(arg)) {\n string = `[${map(arg, stringifyArg).join(', ')}]`;\n }\n else if (isJQuery(arg)) {\n string = `$(${map(arg, stringifyArg).join(', ')})`;\n }\n else if (isElement(arg)) {\n string = `<${arg.tagName.toLowerCase()}`;\n for (let attr of ['id', 'up-id', 'name', 'class']) {\n let value = arg.getAttribute(attr);\n if (value) {\n string += ` ${attr}=\"${value}\"`;\n }\n }\n string += \">\";\n }\n else if (isRegExp(arg) || isError(arg)) {\n string = arg.toString();\n }\n else {\n try {\n string = JSON.stringify(arg);\n }\n catch (error) {\n if (error.name === 'TypeError') {\n string = '(circular structure)';\n }\n else {\n throw error;\n }\n }\n }\n if (string.length > maxLength) {\n string = `${string.substr(0, maxLength)}\u2026${last(string)}`;\n }\n return string;\n }\n const SPRINTF_PLACEHOLDERS = /%[oOdisfc]/g;\n function sprintf(message, ...args) {\n return message.replace(SPRINTF_PLACEHOLDERS, (placeholder) => stringifyArg(args.shift(), placeholder));\n }\n function negate(fn) {\n return function (...args) {\n return !fn(...args);\n };\n }\n function useMemoizeCacheEntry(cacheEntry) {\n if (cacheEntry.error) {\n throw cacheEntry.error;\n }\n else {\n return cacheEntry.value;\n }\n }\n function buildMemoizeCacheEntry(oldImpl, self, args) {\n try {\n return { value: oldImpl.apply(self, args) };\n }\n catch (e) {\n return { error: e };\n }\n }\n function memoizeMethod(object, propLiteral) {\n for (let prop in propLiteral) {\n let originalDescriptor = Object.getOwnPropertyDescriptor(object, prop);\n let oldImpl = originalDescriptor.value;\n let cachingImpl = function (...args) {\n let cache = this[`__${prop}MemoizeCache`] ||= {};\n let cacheKey = JSON.stringify(args);\n cache[cacheKey] ||= buildMemoizeCacheEntry(oldImpl, this, args);\n return useMemoizeCacheEntry(cache[cacheKey]);\n };\n object[prop] = cachingImpl;\n }\n }\n function safeStringifyJSON(value) {\n let json = JSON.stringify(value);\n return escapeHighASCII(json);\n }\n function escapeHighASCII(string) {\n let unicodeEscape = (char) => \"\\\\u\" + char.charCodeAt(0).toString(16).padStart(4, '0');\n return string.replace(/[^\\x00-\\x7F]/g, unicodeEscape);\n }\n function variant(source, changes = {}) {\n let variant = Object.create(source);\n Object.assign(variant, changes);\n return variant;\n }\n return {\n parseURL,\n normalizeURL,\n matchURLs,\n normalizeMethod,\n methodAllowsPayload,\n copy,\n copyArrayLike,\n merge,\n mergeDefined,\n options: newOptions,\n parseArgIntoOptions,\n each,\n map,\n flatMap,\n mapObject,\n findResult,\n some,\n every,\n find: findInList,\n filter: filterList,\n filterMap: filterMap,\n reject,\n intersect,\n compact,\n compactObject,\n uniq,\n uniqBy,\n last,\n isNull,\n isDefined,\n isUndefined,\n isGiven,\n isMissing,\n isPresent,\n isBlank,\n presence,\n isObject,\n isFunction,\n isString,\n isBoolean,\n isNumber,\n isElement,\n isJQuery,\n isElementish,\n isPromise,\n isOptions,\n isArray,\n isFormData,\n isList,\n isRegExp,\n timer: scheduleTimer,\n contains,\n objectContains,\n toArray,\n pick,\n pickBy,\n omit,\n unresolvablePromise,\n remove,\n memoize,\n pluckKey,\n renameKey,\n extractOptions,\n extractCallback,\n noop,\n asyncNoop,\n identity,\n escapeHTML,\n escapeRegExp,\n sequence,\n evalOption,\n evalAutoOption,\n flatten,\n newDeferred,\n always,\n isBasicObjectProperty,\n isCrossOrigin,\n task: queueTask,\n microtask: queueMicrotask,\n isEqual,\n parseTokens,\n wrapList,\n wrapValue,\n uid,\n upperCaseFirst,\n lowerCaseFirst,\n delegate: defineDelegates,\n reverse,\n camelToKebabCase,\n nullToUndefined,\n sprintf,\n renameKeys,\n negate,\n memoizeMethod,\n safeStringifyJSON,\n variant,\n };\n})();\n\n\n/***/ }),\n/* 4 */\n/***/ (() => {\n\nup.error = (function () {\n function fail(...args) {\n throw new up.Error(args);\n }\n function isCritical(error) {\n return (typeof error !== 'object') || ((error.name !== 'AbortError') && !(error instanceof up.RenderResult) && !(error instanceof up.Response));\n }\n function muteUncriticalRejection(promise) {\n return promise.catch(throwCritical);\n }\n function muteUncriticalSync(block) {\n try {\n return block();\n }\n catch (e) {\n throwCritical(e);\n }\n }\n function throwCritical(value) {\n if (isCritical(value)) {\n throw value;\n }\n }\n function report(error) {\n console.error('Uncaught %o', error);\n let event = new ErrorEvent('error', { error, message: 'Uncaught ' + error });\n window.dispatchEvent(event);\n }\n function guard(fn) {\n try {\n return fn();\n }\n catch (error) {\n report(error);\n }\n }\n function guardFn(fn) {\n return (...args) => guard(() => fn(...args));\n }\n return {\n fail,\n throwCritical,\n muteUncriticalRejection,\n muteUncriticalSync,\n guard,\n guardFn,\n };\n})();\nup.fail = up.error.fail;\n\n\n/***/ }),\n/* 5 */\n/***/ (() => {\n\nup.migrate = { config: {} };\n\n\n/***/ }),\n/* 6 */\n/***/ (() => {\n\nup.browser = (function () {\n const u = up.util;\n function submitForm(form) {\n form.submit();\n }\n function canPushState() {\n return up.protocol.initialRequestMethod() === 'GET';\n }\n function canJQuery() {\n return !!window.jQuery;\n }\n const canHasSelector = u.memoize(() => CSS.supports('selector(:has(*))'));\n function popCookie(name) {\n let value = document.cookie.match(new RegExp(name + \"=(\\\\w+)\"))?.[1];\n if (value) {\n document.cookie = name + '=;Max-Age=0;Path=/';\n return value;\n }\n }\n function assertConfirmed(options) {\n const confirmed = !options.confirm || window.confirm(options.confirm);\n if (!confirmed) {\n throw new up.Aborted('User canceled action');\n }\n return true;\n }\n return {\n submitForm,\n canPushState,\n canJQuery,\n assertConfirmed,\n popCookie,\n canHasSelector,\n };\n})();\n\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(8);\nup.element = (function () {\n const u = up.util;\n function first(...args) {\n const selector = args.pop();\n const root = args[0] || document;\n return root.querySelector(selector);\n }\n function subtree(root, selector) {\n const results = [];\n if (root.matches(selector)) {\n results.push(root);\n }\n results.push(...root.querySelectorAll(selector));\n return results;\n }\n function contains(root, selectorOrElement) {\n const element = getOne(selectorOrElement);\n return Node.prototype.contains.call(root, element);\n }\n function ancestor(element, selector) {\n return element.parentNode?.closest(selector);\n }\n function around(element, selector) {\n return getList(element.closest(selector), subtree(element, selector));\n }\n function getOne(...args) {\n const value = args.pop();\n if (u.isElement(value)) {\n return value;\n }\n else if (u.isString(value)) {\n return first(...args, value);\n }\n else if (u.isList(value)) {\n if (value.length > 1) {\n up.fail('up.element.get(): Cannot cast multiple elements (%o) to a single element', value);\n }\n return value[0];\n }\n else {\n return value;\n }\n }\n function getList(...args) {\n return u.flatMap(args, valueToList);\n }\n function valueToList(value) {\n if (u.isString(value)) {\n return document.querySelectorAll(value);\n }\n else {\n return u.wrapList(value);\n }\n }\n function hide(element) {\n element.setAttribute('hidden', '');\n }\n function show(element) {\n element.removeAttribute('hidden');\n if (element.style.display === 'none') {\n element.style.display = '';\n }\n }\n function toggle(element, newVisible) {\n if (newVisible == null) {\n newVisible = !isVisible(element);\n }\n (newVisible ? show : hide)(element);\n }\n function toggleAttr(element, attr, value, newPresent) {\n if (newPresent == null) {\n newPresent = !element.hasAttribute(attr);\n }\n if (newPresent) {\n return element.setAttribute(attr, value);\n }\n else {\n return element.removeAttribute(attr);\n }\n }\n function setAttrs(element, attrs) {\n for (let key in attrs) {\n const value = attrs[key];\n if (u.isGiven(value)) {\n element.setAttribute(key, value);\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n function setTemporaryAttrs(element, attrs) {\n const oldAttrs = {};\n for (let key of Object.keys(attrs)) {\n oldAttrs[key] = element.getAttribute(key);\n }\n setAttrs(element, attrs);\n return () => setAttrs(element, oldAttrs);\n }\n function metaContent(name) {\n const selector = \"meta\" + attrSelector('name', name);\n return first(selector)?.getAttribute('content');\n }\n function insertBefore(existingElement, newElement) {\n existingElement.insertAdjacentElement('beforebegin', newElement);\n }\n function createFromSelector(selector, attrs = {}) {\n let { includePath } = parseSelector(selector);\n let rootElement;\n let depthElement;\n let previousElement;\n for (let includeSegment of includePath) {\n let { tagName, id, classNames, attributes } = includeSegment;\n if (!tagName || tagName === '*') {\n tagName = 'div';\n }\n depthElement = document.createElement(tagName);\n if (!rootElement) {\n rootElement = depthElement;\n }\n if (id) {\n depthElement.id = id;\n }\n for (let className of classNames) {\n depthElement.classList.add(className);\n }\n for (let attributeName in attributes) {\n let attributeValue = attributes[attributeName];\n depthElement.setAttribute(attributeName, attributeValue || '');\n }\n previousElement?.appendChild(depthElement);\n previousElement = depthElement;\n }\n for (let key in attrs) {\n let value = attrs[key];\n if (key === 'class') {\n for (let klass of u.wrapList(value)) {\n rootElement.classList.add(klass);\n }\n }\n else if (key === 'style') {\n setInlineStyle(rootElement, value);\n }\n else if (key === 'text') {\n rootElement.textContent = value;\n }\n else if (key === 'content') {\n rootElement.innerHTML = value;\n }\n else {\n rootElement.setAttribute(key, value);\n }\n }\n return rootElement;\n }\n function parseSelector(selector) {\n let excludeRaw;\n const includeRaw = selector.replace(/:not\\([^)]+\\)/, function (match) {\n excludeRaw = match;\n return '';\n });\n const [includeSelectorWithoutAttrValues, attrValues] = removeAttrSelectorValues(includeRaw);\n const includeSegments = includeSelectorWithoutAttrValues.split(/[ >]+/);\n let includePath = includeSegments.map(function (depthSelector) {\n let parsed = {\n tagName: null,\n classNames: [],\n id: null,\n attributes: {}\n };\n depthSelector = depthSelector.replace(/^[\\w-*]+/, function (match) {\n parsed.tagName = match;\n return '';\n });\n depthSelector = depthSelector.replace(/#([\\w-]+)/, function (_match, id) {\n parsed.id = id;\n return '';\n });\n depthSelector = depthSelector.replace(/\\.([\\w-]+)/g, function (_match, className) {\n parsed.classNames.push(className);\n return '';\n });\n if (attrValues.length) {\n depthSelector = replaceAttrSelectors(depthSelector, function ({ name }) {\n parsed.attributes[name] = attrValues.shift();\n return '';\n });\n }\n if (depthSelector) {\n up.fail('Cannot parse selector: ' + selector);\n }\n return parsed;\n });\n return {\n includePath,\n includeRaw,\n excludeRaw,\n };\n }\n const ATTR_SELECTOR_PATTERN = /\\[([\\w-]+)(?:([~|^$*]?=)([\"'])?([^\\3\\]]*?)\\3)?]/g;\n function replaceAttrSelectors(string, replacement) {\n return string.replace(ATTR_SELECTOR_PATTERN, function (_match, name, operator, quote, value) {\n if (value) {\n value = value.replace(/\\\\([\\\\\"'])/, '$1');\n }\n return replacement({ name, operator, quote, value });\n });\n }\n function removeAttrSelectorValues(selector) {\n let values = [];\n selector = replaceAttrSelectors(selector, function ({ name, value }) {\n values.push(value);\n return `[${name}]`;\n });\n return [selector, values];\n }\n function affix(parent, ...args) {\n let position, selector;\n const attributes = u.extractOptions(args);\n if (args.length === 2) {\n [position, selector] = args;\n }\n else {\n position = 'beforeend';\n selector = args[0];\n }\n const element = createFromSelector(selector, attributes);\n parent.insertAdjacentElement(position, element);\n return element;\n }\n const SINGLETON_TAG_NAMES = ['HTML', 'BODY', 'HEAD', 'TITLE'];\n const isSingleton = up.mockable(element => element.matches(SINGLETON_TAG_NAMES.join()));\n function elementTagName(element) {\n return element.tagName.toLowerCase();\n }\n function attrSelector(attribute, value) {\n if (u.isGiven(value)) {\n value = value.replace(/\"/g, '\\\\\"');\n return `[${attribute}=\"${value}\"]`;\n }\n else {\n return `[${attribute}]`;\n }\n }\n function idSelector(id) {\n if (id.match(/^[a-z0-9\\-_]+$/i)) {\n return `#${id}`;\n }\n else {\n return attrSelector('id', id);\n }\n }\n function classSelector(klass) {\n klass = klass.replace(/[^\\w-]/g, '\\\\$&');\n return `.${klass}`;\n }\n function createBrokenDocumentFromHTML(html) {\n return new DOMParser().parseFromString(html, 'text/html');\n }\n function fixParserDamage(scriptish) {\n let clone = createFromHTML(scriptish.outerHTML);\n scriptish.replaceWith(clone);\n }\n function createFromHTML(html) {\n const range = document.createRange();\n range.setStart(document.body, 0);\n const fragment = range.createContextualFragment(html.trim());\n let elements = fragment.childNodes;\n if (elements.length !== 1) {\n throw new Error('HTML must have a single root element');\n }\n return elements[0];\n }\n function getRoot() {\n return document.documentElement;\n }\n function paint(element) {\n element.offsetHeight;\n }\n function concludeCSSTransition(element) {\n const undo = setTemporaryStyle(element, { transition: 'none' });\n paint(element);\n return undo;\n }\n function hasCSSTransition(elementOrStyleHash) {\n let styleHash;\n if (u.isOptions(elementOrStyleHash)) {\n styleHash = elementOrStyleHash;\n }\n else {\n styleHash = computedStyle(elementOrStyleHash);\n }\n const prop = styleHash.transitionProperty;\n const duration = styleHash.transitionDuration;\n const noTransition = ((prop === 'none') || ((prop === 'all') && (duration === 0)));\n return !noTransition;\n }\n function fixedToAbsolute(element) {\n const elementRectAsFixed = element.getBoundingClientRect();\n element.style.position = 'absolute';\n const offsetParentRect = element.offsetParent.getBoundingClientRect();\n setInlineStyle(element, {\n left: elementRectAsFixed.left - computedStyleNumber(element, 'margin-left') - offsetParentRect.left,\n top: elementRectAsFixed.top - computedStyleNumber(element, 'margin-top') - offsetParentRect.top,\n right: '',\n bottom: ''\n });\n }\n function setMissingAttrs(element, attrs) {\n for (let key in attrs) {\n setMissingAttr(element, key, attrs[key]);\n }\n }\n function setMissingAttr(element, key, value) {\n if (u.isMissing(element.getAttribute(key))) {\n element.setAttribute(key, value);\n }\n }\n function unwrap(wrapper) {\n preservingFocus(function () {\n const parent = wrapper.parentNode;\n const wrappedNodes = u.toArray(wrapper.childNodes);\n u.each(wrappedNodes, wrappedNode => parent.insertBefore(wrappedNode, wrapper));\n parent.removeChild(wrapper);\n });\n }\n function wrapChildren(element) {\n let childNode;\n const wrapper = document.createElement('up-wrapper');\n while ((childNode = element.firstChild)) {\n wrapper.appendChild(childNode);\n }\n element.appendChild(wrapper);\n return wrapper;\n }\n function isWrapper(element) {\n return element.matches('up-wrapper');\n }\n function preservingFocus(fn) {\n const oldFocusElement = document.activeElement;\n try {\n return fn();\n }\n finally {\n if (oldFocusElement && oldFocusElement !== document.activeElement) {\n oldFocusElement.focus({ preventScroll: true });\n }\n }\n }\n function stringAttr(element, attribute) {\n return u.nullToUndefined(element.getAttribute(attribute));\n }\n function booleanAttr(element, attribute, pass) {\n if (!element.hasAttribute(attribute))\n return;\n const value = stringAttr(element, attribute);\n switch (value) {\n case 'false': {\n return false;\n }\n case 'true':\n case '':\n case attribute: {\n return true;\n }\n default: {\n if (pass) {\n return value;\n }\n else {\n return true;\n }\n }\n }\n }\n function booleanOrStringAttr(element, attribute) {\n return booleanAttr(element, attribute, true);\n }\n function numberAttr(element, attribute) {\n let value = element.getAttribute(attribute);\n if (value) {\n value = value.replace(/_/g, '');\n if (value.match(/^[\\d.]+$/)) {\n return parseFloat(value);\n }\n }\n }\n function jsonAttr(element, attribute) {\n let json = element.getAttribute?.(attribute)?.trim();\n if (json) {\n return JSON.parse(json);\n }\n }\n function callbackAttr(link, attr, { exposedKeys = [], mainKey = 'event' } = {}) {\n let code = link.getAttribute(attr);\n if (code) {\n const callback = up.NonceableCallback.fromString(code).toFunction(mainKey, ...exposedKeys);\n return function (event) {\n const exposedValues = Object.values(u.pick(event, exposedKeys));\n return callback.call(link, event, ...exposedValues);\n };\n }\n }\n function closestAttr(element, attr, parseFn = stringAttr) {\n let match = element.closest('[' + attr + ']');\n if (match) {\n return parseFn(match, attr);\n }\n }\n function setTemporaryStyle(element, newStyles) {\n const oldStyles = inlineStyle(element, Object.keys(newStyles));\n setInlineStyle(element, newStyles);\n return () => setInlineStyle(element, oldStyles);\n }\n function addTemporaryClass(element, klass) {\n element.classList.add(klass);\n return () => element.classList.remove(klass);\n }\n function setTemporaryAttr(element, attr, value) {\n element.setAttribute(attr, value);\n return () => element.removeAttribute(element, attr);\n }\n function computedStyle(element, props) {\n const style = window.getComputedStyle(element);\n return extractFromStyleObject(style, props);\n }\n function computedStyleNumber(element, prop) {\n const rawValue = computedStyle(element, prop);\n if (u.isGiven(rawValue)) {\n return parseFloat(rawValue);\n }\n }\n function inlineStyle(element, props) {\n const { style } = element;\n return extractFromStyleObject(style, props);\n }\n function extractFromStyleObject(style, keyOrKeys) {\n if (u.isString(keyOrKeys)) {\n return style[keyOrKeys];\n }\n else {\n return u.pick(style, keyOrKeys);\n }\n }\n function setInlineStyle(element, props) {\n if (u.isString(props)) {\n element.setAttribute('style', props);\n }\n else {\n const { style } = element;\n for (let key in props) {\n let value = props[key];\n value = normalizeStyleValueForWrite(key, value);\n style[key] = value;\n }\n }\n }\n function normalizeStyleValueForWrite(key, value) {\n if (u.isMissing(value)) {\n value = '';\n }\n else if (CSS_LENGTH_PROPS.has(key.toLowerCase().replace(/-/, ''))) {\n value = cssLength(value);\n }\n return value;\n }\n const CSS_LENGTH_PROPS = new Set([\n 'top', 'right', 'bottom', 'left',\n 'padding', 'paddingtop', 'paddingright', 'paddingbottom', 'paddingleft',\n 'margin', 'margintop', 'marginright', 'marginbottom', 'marginleft',\n 'borderwidth', 'bordertopwidth', 'borderrightwidth', 'borderbottomwidth', 'borderleftwidth',\n 'width', 'height',\n 'maxwidth', 'maxheight',\n 'minwidth', 'minheight',\n ]);\n function cssLength(obj) {\n if (u.isNumber(obj) || (u.isString(obj) && /^\\d+$/.test(obj))) {\n return obj.toString() + \"px\";\n }\n else {\n return obj;\n }\n }\n function isVisible(element) {\n return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length);\n }\n function isUpPrefixed(string) {\n return /^up-/.test(string);\n }\n function upAttrs(element) {\n let attrNames = u.filter(element.getAttributeNames(), isUpPrefixed);\n return u.mapObject(attrNames, (name) => [name, element.getAttribute(name)]);\n }\n function upClasses(element) {\n return u.filter(element.classList.values(), isUpPrefixed);\n }\n function cleanJQuery(element) {\n if (up.browser.canJQuery()) {\n jQuery(element).remove();\n }\n }\n function isEmpty(element) {\n return !element.children.length > 0 && !element.innerText.trim();\n }\n function crossOriginSelector(attr) {\n return `[${attr}*=\"//\"]:not([${attr}*=\"//${location.host}/\"])`;\n }\n return {\n subtree,\n contains,\n closestAttr,\n ancestor,\n around,\n get: getOne,\n list: getList,\n toggle,\n hide,\n show,\n metaContent,\n insertBefore,\n createFromSelector,\n setAttrs,\n setTemporaryAttrs,\n affix,\n idSelector,\n classSelector,\n isSingleton,\n attrSelector,\n tagName: elementTagName,\n createBrokenDocumentFromHTML,\n fixParserDamage,\n createFromHTML,\n get root() { return getRoot(); },\n paint,\n concludeCSSTransition,\n hasCSSTransition,\n fixedToAbsolute,\n setMissingAttrs,\n setMissingAttr,\n unwrap,\n wrapChildren,\n isWrapper,\n attr: stringAttr,\n booleanAttr,\n numberAttr,\n jsonAttr,\n callbackAttr,\n booleanOrStringAttr,\n setTemporaryStyle,\n style: computedStyle,\n styleNumber: computedStyleNumber,\n inlineStyle,\n setStyle: setInlineStyle,\n isVisible,\n upAttrs,\n upClasses,\n toggleAttr,\n addTemporaryClass,\n setTemporaryAttr,\n cleanJQuery,\n parseSelector,\n isEmpty,\n crossOriginSelector,\n };\n})();\n\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 9 */\n/***/ (() => {\n\nup.Error = class Error extends window.Error {\n constructor(message, props = {}) {\n if (Array.isArray(message)) {\n message = up.util.sprintf(...message);\n }\n super(message);\n let name = 'up.' + this.constructor.name;\n Object.assign(this, { name }, props);\n }\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (() => {\n\nup.NotImplemented = class NotImplemented extends up.Error {\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (() => {\n\nup.Aborted = class Aborted extends up.Error {\n constructor(message) {\n super(message, { name: 'AbortError' });\n }\n};\n\n\n/***/ }),\n/* 12 */\n/***/ (() => {\n\nup.CannotMatch = class CannotMatch extends up.Error {\n};\n\n\n/***/ }),\n/* 13 */\n/***/ (() => {\n\nup.CannotParse = class CannotParse extends up.Error {\n};\n\n\n/***/ }),\n/* 14 */\n/***/ (() => {\n\nup.CannotTarget = class CannotTarget extends up.Error {\n};\n\n\n/***/ }),\n/* 15 */\n/***/ (() => {\n\nup.Offline = class Offline extends up.Error {\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (() => {\n\nconst u = up.util;\nup.Record = class Record {\n keys() {\n throw 'Return an array of keys';\n }\n defaults(_options) {\n return {};\n }\n constructor(options) {\n Object.assign(this, this.defaults(options), this.attributes(options));\n }\n attributes(source = this) {\n return u.pick(source, this.keys());\n }\n [u.copy.key]() {\n return u.variant(this);\n }\n [u.isEqual.key](other) {\n return (this.constructor === other.constructor) && u.isEqual(this.attributes(), other.attributes());\n }\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (() => {\n\nconst u = up.util;\nup.Config = class Config {\n constructor(blueprintFn = (() => ({}))) {\n this._blueprintFn = blueprintFn;\n this.reset();\n document.addEventListener('up:framework:reset', () => this.reset());\n }\n reset() {\n Object.assign(this, this._blueprintFn());\n }\n matches(element, prop) {\n return element.matches(this.selector(prop));\n }\n selector(prop) {\n let includes = this[prop];\n let excludes = this['no' + u.upperCaseFirst(prop)];\n let selector = `:is(${includes.join()})`;\n if (u.isPresent(excludes))\n selector += `:not(${excludes.join()})`;\n return selector;\n }\n selectorFn(prop) {\n return () => this.selector(prop);\n }\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (() => {\n\nlet enabledKey = 'up.log.enabled';\nlet enabled = false;\ntry {\n enabled = !!sessionStorage?.getItem(enabledKey);\n}\ncatch {\n}\nup.LogConfig = class LogConfig extends up.Config {\n constructor() {\n super(() => ({\n banner: true,\n format: true,\n }));\n }\n get enabled() {\n return enabled;\n }\n set enabled(newEnabled) {\n enabled = newEnabled;\n try {\n sessionStorage?.setItem(enabledKey, newEnabled ? '1' : '');\n }\n catch {\n }\n }\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.OptionsParser = class OptionsParser {\n constructor(element, options, parserOptions = {}) {\n this._options = options;\n this._element = element;\n this._parserOptions = parserOptions;\n this._fail = parserOptions.fail;\n this._closest = parserOptions.closest;\n this._attrPrefix = parserOptions.attrPrefix || 'up-';\n this._defaults = parserOptions.defaults || {};\n }\n string(key, keyOptions) {\n this.parse(e.attr, key, keyOptions);\n }\n boolean(key, keyOptions) {\n this.parse(e.booleanAttr, key, keyOptions);\n }\n number(key, keyOptions) {\n this.parse(e.numberAttr, key, keyOptions);\n }\n booleanOrString(key, keyOptions) {\n this.parse(e.booleanOrStringAttr, key, keyOptions);\n }\n json(key, keyOptions) {\n this.parse(e.jsonAttr, key, keyOptions);\n }\n callback(key, keyOptions = {}) {\n let parser = (link, attr) => e.callbackAttr(link, attr, keyOptions);\n this.parse(parser, key, keyOptions);\n }\n parse(attrValueFn, key, keyOptions = {}) {\n const attrNames = u.wrapList(keyOptions.attr ?? this._attrNameForKey(key));\n let value = this._options[key];\n for (let attrName of attrNames) {\n value ??= this._parseFromAttr(attrValueFn, this._element, attrName);\n }\n value ??= keyOptions.default ?? this._defaults[key];\n let normalizeFn = keyOptions.normalize;\n if (normalizeFn) {\n value = normalizeFn(value);\n }\n if (u.isDefined(value)) {\n this._options[key] = value;\n }\n let failKey;\n if (this._fail && (failKey = up.fragment.failKey(key))) {\n const failAttrNames = u.compact(u.map(attrNames, (attrName) => this._deriveFailAttrName(attrName)));\n this.parse(attrValueFn, failKey, { ...keyOptions, attr: failAttrNames });\n }\n }\n include(optionsFn) {\n let fnResult = optionsFn(this._element, this._options, this._parserOptions);\n Object.assign(this._options, fnResult);\n }\n _parseFromAttr(attrValueFn, element, attrName) {\n if (this._closest) {\n return e.closestAttr(element, attrName, attrValueFn);\n }\n else {\n return attrValueFn(element, attrName);\n }\n }\n _deriveFailAttrName(attr) {\n return this._deriveFailAttrNameForPrefix(attr, this._attrPrefix + 'on-') ||\n this._deriveFailAttrNameForPrefix(attr, this._attrPrefix);\n }\n _deriveFailAttrNameForPrefix(attr, prefix) {\n if (attr.startsWith(prefix)) {\n return `${prefix}fail-${attr.substring(prefix.length)}`;\n }\n }\n _attrNameForKey(option) {\n return `${this._attrPrefix}${u.camelToKebabCase(option)}`;\n }\n};\n\n\n/***/ }),\n/* 20 */\n/***/ (() => {\n\nconst u = up.util;\nup.FIFOCache = class FIFOCache {\n constructor({ capacity = 10, normalizeKey = u.identity } = {}) {\n this._map = new Map();\n this._capacity = capacity;\n this._normalizeKey = normalizeKey;\n }\n get(key) {\n key = this._normalizeKey(key);\n return this._map.get(key);\n }\n set(key, value) {\n if (this._map.size === this._capacity) {\n let oldestKey = this._map.keys().next().value;\n this._map.delete(oldestKey);\n }\n key = this._normalizeKey(key);\n this._map.set(key, value);\n }\n clear() {\n this._map.clear();\n }\n};\n\n\n/***/ }),\n/* 21 */\n/***/ (() => {\n\nup.Rect = class Rect extends up.Record {\n keys() {\n return [\n 'left',\n 'top',\n 'width',\n 'height'\n ];\n }\n get bottom() {\n return this.top + this.height;\n }\n get right() {\n return this.left + this.width;\n }\n static fromElement(element) {\n return new (this)(element.getBoundingClientRect());\n }\n};\n\n\n/***/ }),\n/* 22 */\n/***/ (() => {\n\nconst e = up.element;\nup.BodyShifter = class BodyShifter {\n constructor() {\n this._unshiftFns = [];\n this._anchoredElements = new Set();\n this._stack = 0;\n }\n lowerStack() {\n this._stack--;\n if (this._stack === 0) {\n this._unshiftNow();\n }\n }\n raiseStack() {\n this._stack++;\n if (this._stack === 1) {\n this._shiftNow();\n }\n }\n onAnchoredElementInserted(element) {\n this._anchoredElements.add(element);\n if (this._isShifted()) {\n this._shiftAnchoredElement(element);\n }\n return () => this._anchoredElements.delete(element);\n }\n _isShifted() {\n return this._scrollbarTookSpace && this._stack > 0;\n }\n _shiftNow() {\n this._scrollbarWidth = up.viewport.scrollbarWidth();\n this._scrollbarTookSpace = up.viewport.rootHasReducedWidthFromScrollbar();\n if (!this._scrollbarTookSpace)\n return;\n this._shiftBody();\n for (let element of this._anchoredElements) {\n this._shiftAnchoredElement(element);\n }\n }\n _shiftBody() {\n const overflowElement = up.viewport.rootOverflowElement();\n this._changeStyle(overflowElement, { overflowY: 'hidden' });\n const { body } = document;\n const bodyRightPadding = e.styleNumber(body, 'paddingRight');\n const bodyRightShift = this._scrollbarWidth + bodyRightPadding;\n this._changeStyle(body, { paddingRight: bodyRightShift });\n }\n _shiftAnchoredElement(element) {\n const elementRight = e.styleNumber(element, 'right');\n const elementRightShift = this._scrollbarWidth + elementRight;\n this._changeStyle(element, { right: elementRightShift });\n }\n _changeStyle(element, styles) {\n this._unshiftFns.push(e.setTemporaryStyle(element, styles));\n }\n _unshiftNow() {\n let unshiftFn;\n while (unshiftFn = this._unshiftFns.pop()) {\n unshiftFn();\n }\n }\n};\n\n\n/***/ }),\n/* 23 */\n/***/ (() => {\n\nconst u = up.util;\nup.Change = class Change {\n constructor(options) {\n this.options = options;\n }\n execute() {\n throw new up.NotImplemented();\n }\n onFinished(renderResult) {\n return this.options.onFinished?.(renderResult);\n }\n improveHistoryValue(existingValue, newValue) {\n if ((existingValue === false) || u.isString(existingValue)) {\n return existingValue;\n }\n else {\n return newValue;\n }\n }\n deriveFailOptions() {\n return up.RenderOptions.deriveFailOptions(this.options);\n }\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Change.Addition = class Addition extends up.Change {\n constructor(options) {\n super(options);\n this._acceptLayer = options.acceptLayer;\n this._dismissLayer = options.dismissLayer;\n this._eventPlans = options.eventPlans || [];\n this._response = options.response;\n }\n handleLayerChangeRequests() {\n if (this.layer.isOverlay()) {\n this.tryAcceptLayerFromServer();\n this.abortWhenLayerClosed();\n this.layer.tryAcceptForLocation(this.responseOption());\n this.abortWhenLayerClosed();\n this.tryDismissLayerFromServer();\n this.abortWhenLayerClosed();\n this.layer.tryDismissForLocation(this.responseOption());\n this.abortWhenLayerClosed();\n }\n this.layer.asCurrent(() => {\n for (let eventPlan of this._eventPlans) {\n up.emit({ ...eventPlan, ...this.responseOption() });\n this.abortWhenLayerClosed();\n }\n });\n }\n tryAcceptLayerFromServer() {\n if (u.isDefined(this._acceptLayer) && this.layer.isOverlay()) {\n this.layer.accept(this._acceptLayer, this.responseOption());\n }\n }\n tryDismissLayerFromServer() {\n if (u.isDefined(this._dismissLayer) && this.layer.isOverlay()) {\n this.layer.dismiss(this._dismissLayer, this.responseOption());\n }\n }\n abortWhenLayerClosed(layer = this.layer) {\n if (layer.isClosed()) {\n throw new up.Aborted('Layer was closed');\n }\n }\n setSource({ oldElement, newElement, source }) {\n if (source === 'keep') {\n source = (oldElement && up.fragment.source(oldElement));\n }\n if (source) {\n e.setMissingAttr(newElement, 'up-source', u.normalizeURL(source, { hash: false }));\n }\n }\n setTime({ newElement, time }) {\n e.setMissingAttr(newElement, 'up-time', time ? time.toUTCString() : false);\n }\n setETag({ newElement, etag }) {\n e.setMissingAttr(newElement, 'up-etag', etag || false);\n }\n setReloadAttrs(options) {\n this.setSource(options);\n this.setTime(options);\n this.setETag(options);\n }\n responseOption() {\n return { response: this._response };\n }\n executeSteps(steps, responseDoc, noneOptions) {\n return new up.Change.UpdateSteps({ steps, noneOptions }).execute(responseDoc);\n }\n};\n\n\n/***/ }),\n/* 25 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.RenderJob = (_a = class RenderJob {\n constructor(options) {\n this.options = up.RenderOptions.preprocess(options);\n }\n execute() {\n this._rendered = this._executePromise();\n return this;\n }\n async _executePromise() {\n try {\n this._guardRender();\n let result = await this._getChange().execute();\n this._handleResult(result);\n return result;\n }\n catch (resultOrError) {\n this._handleResult(resultOrError) || this._handleError(resultOrError);\n throw resultOrError;\n }\n }\n _handleResult(result) {\n if (result instanceof up.RenderResult) {\n let { onRendered, onFinished } = result.options;\n if (!result.none)\n up.error.guard(() => onRendered?.(result));\n let guardedOnFinished = function (result) {\n up.error.guard(() => onFinished?.(result));\n };\n this.finished.then(guardedOnFinished, u.noop);\n return true;\n }\n }\n _handleError(error) {\n let prefix = error instanceof up.Aborted ? 'Rendering was aborted' : 'Error while rendering';\n up.puts('up.render()', `${prefix}: ${error.name}: ${error.message}`);\n up.error.guard(() => this.options.onError?.(error));\n }\n get finished() {\n return this._awaitFinished();\n }\n async _awaitFinished() {\n try {\n let result = await this._rendered;\n return await result.finished;\n }\n catch (error) {\n if (error instanceof up.RenderResult) {\n throw await error.finished;\n }\n else {\n throw error;\n }\n }\n }\n _getChange() {\n if (this.options.url) {\n let onRequest = (request) => this._handleAbortOption(request);\n return new up.Change.FromURL({ ...this.options, onRequest });\n }\n else if (this.options.response) {\n let onRender = () => this._handleAbortOption(null);\n return new up.Change.FromResponse({ ...this.options, onRender });\n }\n else {\n let onRender = () => this._handleAbortOption(null);\n return new up.Change.FromContent({ ...this.options, onRender });\n }\n }\n _guardRender() {\n up.browser.assertConfirmed(this.options);\n let guardEvent = u.pluckKey(this.options, 'guardEvent');\n if (guardEvent) {\n guardEvent.renderOptions = this.options;\n if (up.emit(guardEvent, { target: this.options.origin }).defaultPrevented) {\n throw new up.Aborted(`Rendering was prevented by ${guardEvent.type} listener`);\n }\n }\n up.RenderOptions.assertContentGiven(this.options);\n }\n _handleAbortOption(request) {\n let { abort } = this.options;\n if (!abort || !up.network.isBusy())\n return;\n let { fragments, layer, origin, newLayer } = this._getChange().getPreflightProps();\n let abortOptions = {\n except: request,\n logOnce: ['up.render()', 'Change with { abort } option will abort other requests'],\n newLayer,\n origin,\n };\n if (abort === 'target') {\n up.fragment.abort(fragments, abortOptions);\n }\n else if (abort === 'layer') {\n up.fragment.abort({ ...abortOptions, layer });\n }\n else if (abort === 'all' || abort === true) {\n up.fragment.abort({ ...abortOptions, layer: 'any' });\n }\n else if (u.isFunction(abort)) {\n abort(abortOptions);\n }\n else {\n up.fragment.abort(abort, { ...abortOptions, layer });\n }\n }\n },\n (() => {\n u.delegate(_a.prototype, ['then', 'catch', 'finally'], function () { return this._rendered; });\n u.memoizeMethod(_a.prototype, {\n _awaitFinished: true,\n _getChange: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 26 */\n/***/ (() => {\n\nup.Change.Removal = class Removal extends up.Change {\n};\n\n\n/***/ }),\n/* 27 */\n/***/ (() => {\n\nup.Change.DestroyFragment = class DestroyFragment extends up.Change.Removal {\n constructor(options) {\n super(options);\n this._layer = up.layer.get(options) || up.layer.current;\n this._element = this.options.element;\n this._animation = this.options.animation;\n this._log = this.options.log;\n }\n execute() {\n this._parent = this._element.parentNode;\n up.fragment.markAsDestroying(this._element);\n if (up.motion.willAnimate(this._element, this._animation, this.options)) {\n this._destroyAfterAnimation();\n }\n else {\n this._destroyNow();\n }\n }\n async _destroyAfterAnimation() {\n this._emitDestroyed();\n await this._animate();\n this._wipe();\n this.onFinished();\n }\n _destroyNow() {\n this._wipe();\n this._emitDestroyed();\n this.onFinished();\n }\n _animate() {\n return up.motion.animate(this._element, this._animation, this.options);\n }\n _wipe() {\n this._layer.asCurrent(() => {\n up.fragment.abort(this._element);\n up.script.clean(this._element, { layer: this._layer });\n up.element.cleanJQuery(this._element);\n this._element.remove();\n });\n }\n _emitDestroyed() {\n up.fragment.emitDestroyed(this._element, { parent: this._parent, log: this._log });\n }\n};\n\n\n/***/ }),\n/* 28 */\n/***/ (() => {\n\nlet u = up.util;\nup.Change.OpenLayer = class OpenLayer extends up.Change.Addition {\n constructor(options) {\n super(options);\n this.target = options.target;\n this._origin = options.origin;\n this._baseLayer = options.baseLayer;\n }\n getPreflightProps() {\n return {\n mode: this.options.mode,\n context: this._buildLayer().context,\n origin: this.options.origin,\n target: this.target,\n layer: this._baseLayer,\n fragments: u.compact([up.fragment.get(':main', { layer: this._baseLayer })]),\n newLayer: true,\n };\n }\n execute(responseDoc, onApplicable) {\n this.responseDoc = responseDoc;\n this._matchPostflight();\n onApplicable();\n this._createOverlay();\n let unbindClosing = this.layer.on('up:layer:accepting up:layer:dimissing', this._renderOtherLayers.bind(this));\n try {\n this._renderOverlayContent();\n this._renderOtherLayers();\n return up.RenderResult.both(this._newOverlayResult, this._otherLayersResult);\n }\n finally {\n unbindClosing();\n }\n }\n _matchPostflight() {\n if (this.target === ':none') {\n this._content = document.createElement('up-none');\n }\n else {\n this._content = this.responseDoc.select(this.target);\n }\n if (!this._content || this._baseLayer.isClosed()) {\n throw new up.CannotMatch();\n }\n }\n _createOverlay() {\n up.puts('up.render()', `Opening element \"${this.target}\" in new overlay`);\n this._assertOpenEventEmitted();\n this.layer = this._buildLayer();\n this._baseLayer.peel({ history: !this.layer.history });\n up.layer.stack.push(this.layer);\n this.layer.createElements();\n this.layer.setupHandlers();\n }\n _renderOverlayContent() {\n this._handleHistory();\n this.handleLayerChangeRequests();\n this.responseDoc.commitElement(this._content);\n this.layer.setContent(this._content);\n this.setReloadAttrs({ newElement: this._content, source: this.options.source });\n this.responseDoc.finalizeElement(this._content);\n this._newOverlayResult = new up.RenderResult({\n layer: this.layer,\n fragments: [this._content],\n target: this.target,\n });\n up.hello(this.layer.element, { ...this.options, layer: this.layer });\n this._handleScroll();\n this._newOverlayResult.finished = this._finish();\n this.layer.opening = false;\n this._emitOpenedEvent();\n this.abortWhenLayerClosed();\n }\n _renderOtherLayers() {\n if (this._otherLayersResult)\n return;\n let otherLayerSteps = this._getHungrySteps().other;\n this._otherLayersResult = this.executeSteps(otherLayerSteps, this.responseDoc);\n }\n async _finish() {\n await this.layer.startOpenAnimation();\n this.abortWhenLayerClosed();\n this._handleFocus();\n return this._newOverlayResult;\n }\n _buildLayer() {\n const buildOptions = { ...this.options, opening: true };\n const beforeNew = optionsWithLayerDefaults => {\n return this.options = up.RenderOptions.finalize(optionsWithLayerDefaults);\n };\n return up.layer.build(buildOptions, beforeNew);\n }\n _handleHistory() {\n if (this.layer.history === 'auto') {\n this.layer.history = up.fragment.hasAutoHistory([this._content], this.layer);\n }\n let { parent } = this.layer;\n this.layer.history &&= parent.history;\n parent.saveHistory();\n this.layer.updateHistory(this.options);\n }\n _handleFocus() {\n this._baseLayer.overlayFocus?.moveToBack();\n this.layer.overlayFocus.moveToFront();\n const fragmentFocus = new up.FragmentFocus({\n fragment: this._content,\n layer: this.layer,\n autoMeans: ['autofocus', 'layer'],\n inputDevice: this.options.inputDevice,\n });\n fragmentFocus.process(this.options.focus);\n }\n _handleScroll() {\n const scrollingOptions = {\n ...this.options,\n fragment: this._content,\n layer: this.layer,\n autoMeans: ['hash', 'layer']\n };\n const scrolling = new up.FragmentScrolling(scrollingOptions);\n scrolling.process(this.options.scroll);\n }\n _assertOpenEventEmitted() {\n up.event.assertEmitted('up:layer:open', {\n origin: this._origin,\n baseLayer: this._baseLayer,\n layerOptions: this.options,\n log: \"Opening new overlay\"\n });\n }\n _emitOpenedEvent() {\n this.layer.emit('up:layer:opened', {\n origin: this._origin,\n callback: this.layer.callback('onOpened'),\n log: `Opened new ${this.layer}`\n });\n }\n _getHungrySteps() {\n return up.radio.hungrySteps(this._getEffectiveRenderOptions());\n }\n _getEffectiveRenderOptions() {\n return {\n ...this.options,\n layer: this.layer,\n history: this.layer.history,\n };\n }\n};\n\n\n/***/ }),\n/* 29 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.UpdateLayer = (_a = class UpdateLayer extends up.Change.Addition {\n constructor(options) {\n options = up.RenderOptions.finalize(options);\n super(options);\n this.layer = options.layer;\n this.target = options.target;\n this._context = options.context;\n this._steps = up.fragment.parseTargetSteps(this.target, this.options);\n }\n getPreflightProps() {\n this._matchPreflight();\n return {\n layer: this.layer,\n mode: this.layer.mode,\n context: u.merge(this.layer.context, this._context),\n origin: this.options.origin,\n target: this._bestPreflightSelector(),\n fragments: this._getFragments(),\n newLayer: false,\n };\n }\n _bestPreflightSelector() {\n this._matchPreflight();\n return up.fragment.targetForSteps(this._steps);\n }\n _getFragments() {\n this._matchPreflight();\n return u.map(this._steps, 'oldElement');\n }\n execute(responseDoc, onApplicable) {\n this.responseDoc = responseDoc;\n this._matchPostflight();\n onApplicable();\n let unbindClosing = this.layer.on('up:layer:accepting up:layer:dimissing', this._renderOtherLayers.bind(this));\n try {\n this._renderCurrentLayer();\n this._renderOtherLayers();\n return up.RenderResult.both(this._currentLayerResult, this._otherLayersResult);\n }\n finally {\n unbindClosing();\n }\n }\n _renderCurrentLayer() {\n if (this._steps.length) {\n up.puts('up.render()', `Updating \"${this._bestPreflightSelector()}\" in ${this.layer}`);\n }\n this._setScrollAndFocusOptions();\n if (this.options.saveScroll) {\n up.viewport.saveScroll({ layer: this.layer });\n }\n if (this.options.saveFocus) {\n up.viewport.saveFocus({ layer: this.layer });\n }\n if (this.options.peel) {\n this.layer.peel({ history: !this._hasHistory() });\n }\n if (this.options.abort !== false) {\n up.fragment.abort(this._getFragments(), { reason: 'Fragment is being replaced' });\n }\n Object.assign(this.layer.context, this._context);\n if (this._hasHistory()) {\n this.layer.updateHistory(this.options);\n }\n this.handleLayerChangeRequests();\n this._currentLayerResult = this.executeSteps(this._steps, this.responseDoc, this.options);\n }\n _renderOtherLayers() {\n if (this._otherLayersResult)\n return;\n let otherLayerSteps = this._getHungrySteps().other;\n this._otherLayersResult = this.executeSteps(otherLayerSteps, this.responseDoc);\n }\n _matchPreflight() {\n this._matchOldElements();\n this._compressNestedSteps();\n }\n _matchPostflight() {\n this._matchOldElements();\n this._addHungryStepsOnCurrentLayer();\n this._compressNestedSteps();\n this._matchNewElements();\n }\n _addHungryStepsOnCurrentLayer() {\n this._steps.push(...this._getHungrySteps().current);\n }\n _matchOldElements() {\n this._steps = this._steps.filter((step) => {\n const finder = new up.FragmentFinder(u.pick(step, ['selector', 'origin', 'layer', 'match', 'preferOldElements']));\n step.oldElement ||= finder.find();\n if (step.oldElement) {\n return true;\n }\n else if (!step.maybe) {\n throw new up.CannotMatch();\n }\n });\n }\n _matchNewElements() {\n this._steps = this.responseDoc.selectSteps(this._steps);\n }\n _compressNestedSteps() {\n this._steps = up.fragment.compressNestedSteps(this._steps);\n }\n _getHungrySteps() {\n return up.radio.hungrySteps(this._getEffectiveRenderOptions());\n }\n _setScrollAndFocusOptions() {\n let focusCapsule = up.FocusCapsule.preserve(this.layer);\n this._steps.forEach((step, i) => {\n step.focusCapsule = focusCapsule;\n if (i > 0) {\n step.scroll = false;\n step.focus = false;\n }\n if ((step.placement === 'swap') || (step.placement === 'content')) {\n step.scrollBehavior = 'instant';\n }\n });\n }\n _hasHistory() {\n return u.evalAutoOption(this.options.history, this._hasAutoHistory.bind(this));\n }\n _hasAutoHistory() {\n const oldFragments = u.map(this._steps, 'oldElement');\n return up.fragment.hasAutoHistory(oldFragments, this.layer);\n }\n _getEffectiveRenderOptions() {\n return {\n ...this.options,\n layer: this.layer,\n history: this._hasHistory(),\n };\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _matchPreflight: true,\n _matchOldElements: true,\n _hasHistory: true,\n _getHungrySteps: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 30 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Change.UpdateSteps = class UpdateSteps extends up.Change.Addition {\n constructor(options) {\n super(options);\n this._noneOptions = options.noneOptions || {};\n this._steps = u.copy(options.steps);\n }\n execute(responseDoc) {\n this.responseDoc = responseDoc;\n this._steps = responseDoc.selectSteps(this._steps);\n this._steps = responseDoc.commitSteps(this._steps);\n if (!this._steps.length) {\n return this._executeNone();\n }\n this.renderResult = new up.RenderResult({\n layer: this._steps[0]?.layer,\n target: up.fragment.targetForSteps(this._steps),\n });\n this._steps.reverse();\n const motionEndPromises = this._steps.map(step => this._executeStep(step));\n this.renderResult.finished = this._finish(motionEndPromises);\n return this.renderResult;\n }\n _executeNone() {\n this._handleFocus(null, this._noneOptions);\n this._handleScroll(null, this._noneOptions);\n return up.RenderResult.buildNone();\n }\n async _finish(motionEndPromises) {\n await Promise.all(motionEndPromises);\n for (let step of this._steps) {\n this.abortWhenLayerClosed(step.layer);\n }\n return this.renderResult;\n }\n _addToResult(fragment) {\n let newFragments = fragment.matches('up-wrapper') ? fragment.children : [fragment];\n this.renderResult.fragments.unshift(...newFragments);\n }\n _executeStep(step) {\n this.setReloadAttrs(step);\n switch (step.placement) {\n case 'swap': {\n let keepPlan = this._findKeepPlan(step);\n if (keepPlan) {\n this._handleFocus(step.oldElement, step);\n this._handleScroll(step.oldElement, step);\n return Promise.resolve();\n }\n else {\n this._preserveKeepables(step);\n const parent = step.oldElement.parentNode;\n const morphOptions = {\n ...step,\n beforeStart() {\n up.fragment.markAsDestroying(step.oldElement);\n },\n afterInsert: () => {\n this._restoreKeepables(step);\n this.responseDoc.finalizeElement(step.newElement);\n this._unmarkKeepables(step);\n up.hello(step.newElement, step);\n this._addToResult(step.newElement);\n },\n beforeDetach: () => {\n up.script.clean(step.oldElement, { layer: step.layer });\n },\n afterDetach() {\n up.element.cleanJQuery();\n up.fragment.emitDestroyed(step.oldElement, { parent, log: false });\n },\n scrollNew: () => {\n this._handleFocus(step.newElement, step);\n this._handleScroll(step.newElement, step);\n }\n };\n return up.morph(step.oldElement, step.newElement, step.transition, morphOptions);\n }\n }\n case 'content': {\n let oldWrapper = e.wrapChildren(step.oldElement);\n let newWrapper = e.wrapChildren(step.newElement);\n let wrapperStep = {\n ...step,\n placement: 'swap',\n oldElement: oldWrapper,\n newElement: newWrapper,\n focus: false\n };\n return this._executeStep(wrapperStep).then(() => {\n e.unwrap(newWrapper);\n this._handleFocus(step.oldElement, step);\n });\n }\n case 'before':\n case 'after': {\n let wrapper = e.wrapChildren(step.newElement);\n let position = step.placement === 'before' ? 'afterbegin' : 'beforeend';\n step.oldElement.insertAdjacentElement(position, wrapper);\n this.responseDoc.finalizeElement(wrapper);\n up.hello(wrapper, step);\n this._addToResult(wrapper);\n this._handleFocus(wrapper, step);\n this._handleScroll(wrapper, step);\n return up.animate(wrapper, step.transition, step).then(() => e.unwrap(wrapper));\n }\n default: {\n up.fail('Unknown placement: %o', step.placement);\n }\n }\n }\n _findKeepPlan(options) {\n if (!options.useKeep) {\n return;\n }\n const { oldElement, newElement } = options;\n let doKeep = e.booleanAttr(oldElement, 'up-keep');\n if (!doKeep) {\n return;\n }\n let partner;\n let partnerSelector = up.fragment.toTarget(oldElement);\n const lookupOpts = { layer: options.layer };\n if (options.descendantsOnly) {\n partner = up.fragment.get(newElement, partnerSelector, lookupOpts);\n }\n else {\n partner = up.fragment.subtree(newElement, partnerSelector, lookupOpts)[0];\n }\n if (partner && e.booleanAttr(partner, 'up-keep') !== false) {\n const plan = {\n oldElement,\n newElement: partner,\n newData: up.script.data(partner),\n renderOptions: options,\n };\n if (!up.fragment.emitKeep(plan).defaultPrevented) {\n return plan;\n }\n }\n }\n _preserveKeepables(step) {\n const keepPlans = [];\n if (step.useKeep) {\n for (let keepable of step.oldElement.querySelectorAll('[up-keep]')) {\n let keepPlan = this._findKeepPlan({ ...step, oldElement: keepable, descendantsOnly: true });\n if (keepPlan) {\n const keepableClone = keepable.cloneNode(true);\n keepable.insertAdjacentElement('beforebegin', keepableClone);\n keepable.classList.add('up-keeping');\n up.script.disableSubtree(keepPlan.newElement);\n let viewports = up.viewport.subtree(keepPlan.oldElement);\n keepPlan.revivers = viewports.map(function (viewport) {\n let cursorProps = up.viewport.copyCursorProps(viewport);\n return () => up.viewport.copyCursorProps(cursorProps, viewport);\n });\n if (this._willChangeElement(document.body)) {\n keepPlan.newElement.replaceWith(keepable);\n }\n else {\n document.body.append(keepable);\n }\n keepPlans.push(keepPlan);\n }\n }\n }\n step.keepPlans = keepPlans;\n }\n _restoreKeepables(step) {\n for (let keepPlan of step.keepPlans) {\n keepPlan.newElement.replaceWith(keepPlan.oldElement);\n for (let reviver of keepPlan.revivers) {\n reviver();\n }\n }\n }\n _unmarkKeepables(step) {\n for (let keepPlan of step.keepPlans) {\n keepPlan.oldElement.classList.remove('up-keeping');\n }\n }\n _willChangeElement(element) {\n return u.some(this._steps, (step) => step.oldElement.contains(element));\n }\n _handleFocus(fragment, options) {\n const fragmentFocus = new up.FragmentFocus({\n ...options,\n fragment,\n autoMeans: up.fragment.config.autoFocus,\n });\n return fragmentFocus.process(options.focus);\n }\n _handleScroll(fragment, options) {\n const scrolling = new up.FragmentScrolling({\n ...options,\n fragment,\n autoMeans: up.fragment.config.autoScroll\n });\n return scrolling.process(options.scroll);\n }\n};\n\n\n/***/ }),\n/* 31 */\n/***/ (() => {\n\nconst u = up.util;\nup.Change.CloseLayer = class CloseLayer extends up.Change.Removal {\n constructor(options) {\n super(options);\n this._verb = options.verb;\n this._layer = up.layer.get(options);\n this._origin = options.origin;\n this._value = options.value;\n this._preventable = options.preventable ?? true;\n this._response = options.response;\n this._history = options.history ?? true;\n }\n execute() {\n if (!this._layer.isOpen()) {\n return Promise.resolve();\n }\n up.browser.assertConfirmed(this.options);\n if (this._emitCloseEvent().defaultPrevented && this._preventable) {\n throw new up.Aborted('Close event was prevented');\n }\n this._emitClosingEvent();\n up.fragment.abort({ reason: 'Layer is closing', layer: this._layer });\n const { parent } = this._layer;\n this._layer.peel();\n this._layer.stack.remove(this._layer);\n if (this._history) {\n parent.restoreHistory();\n }\n this._handleFocus(parent);\n this._layer.teardownHandlers();\n this._layer.destroyElements(this.options);\n this._emitClosedEvent(parent);\n }\n _emitCloseEvent() {\n let event = this._layer.emit(this._buildEvent(`up:layer:${this._verb}`), {\n callback: this._layer.callback(`on${u.upperCaseFirst(this._verb)}`),\n log: [`Will ${this._verb} ${this._layer} with value %o`, this._value]\n });\n this._value = event.value;\n return event;\n }\n _emitClosingEvent() {\n let event = this._buildEvent(`up:layer:${this._verb}ing`);\n this._layer.emit(event, { log: false });\n }\n _emitClosedEvent(formerParent) {\n const verbPast = `${this._verb}ed`;\n const verbPastUpperCaseFirst = u.upperCaseFirst(verbPast);\n return this._layer.emit(this._buildEvent(`up:layer:${verbPast}`), {\n baseLayer: formerParent,\n callback: this._layer.callback(`on${verbPastUpperCaseFirst}`),\n ensureBubbles: true,\n log: [`${verbPastUpperCaseFirst} ${this._layer} with value %o`, this._value]\n });\n }\n _buildEvent(name) {\n return up.event.build(name, {\n layer: this._layer,\n value: this._value,\n origin: this._origin,\n response: this._response,\n });\n }\n _handleFocus(formerParent) {\n this._layer.overlayFocus.teardown();\n formerParent.overlayFocus?.moveToFront();\n let newFocusElement = this._layer.origin || formerParent.element;\n up.focus(newFocusElement, { preventScroll: true });\n }\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.FromURL = (_a = class FromURL extends up.Change {\n constructor(options) {\n super(options);\n this.options.layer = up.layer.getAll(this.options);\n this.options.normalizeLayerOptions = false;\n }\n execute() {\n let _newPageReason = this._newPageReason();\n if (_newPageReason) {\n up.puts('up.render()', _newPageReason);\n up.network.loadPage(this.options);\n return u.unresolvablePromise();\n }\n this.request = up.request(this._getRequestAttrs());\n this.options.onRequest?.(this.request);\n up.feedback.showAroundRequest(this.request, this.options);\n up.form.disableWhile(this.request, this.options);\n if (this.options.preload) {\n return this.request;\n }\n return u.always(this.request, responseOrError => this._onRequestSettled(responseOrError));\n }\n _newPageReason() {\n if (u.isCrossOrigin(this.options.url)) {\n return 'Loading cross-origin content in new page';\n }\n if (this.options.history && !up.browser.canPushState()) {\n return 'Loading content in new page to restore history support';\n }\n }\n _getRequestAttrs() {\n const successAttrs = this._preflightPropsForRenderOptions(this.options);\n const failAttrs = this._preflightPropsForRenderOptions(this.deriveFailOptions(), { optional: true });\n return {\n ...this.options,\n ...successAttrs,\n ...u.renameKeys(failAttrs, up.fragment.failKey)\n };\n }\n getPreflightProps() {\n return this._getRequestAttrs();\n }\n _preflightPropsForRenderOptions(renderOptions, requestAttributesOptions) {\n const preview = new up.Change.FromContent({ ...renderOptions, preview: true });\n return preview.getPreflightProps(requestAttributesOptions);\n }\n _onRequestSettled(response) {\n if (response instanceof up.Response) {\n return this._onRequestSettledWithResponse(response);\n }\n else {\n return this._onRequestSettledWithError(response);\n }\n }\n _onRequestSettledWithResponse(response) {\n return new up.Change.FromResponse({ ...this.options, response }).execute();\n }\n _onRequestSettledWithError(error) {\n if (error instanceof up.Offline) {\n this.request.emit('up:fragment:offline', {\n callback: this.options.onOffline,\n renderOptions: this.options,\n retry: (retryOptions) => up.render({ ...this.options, ...retryOptions }),\n log: ['Cannot load fragment from %s: %s', this.request.description, error.reason],\n });\n }\n throw error;\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getRequestAttrs: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 33 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.FromResponse = (_a = class FromResponse extends up.Change {\n constructor(options) {\n super(options);\n this._response = options.response;\n this._request = this._response.request;\n }\n execute() {\n if (up.fragment.config.skipResponse(this._loadedEventProps())) {\n this._skip();\n }\n else {\n this._request.assertEmitted('up:fragment:loaded', {\n ...this._loadedEventProps(),\n callback: this.options.onLoaded,\n log: ['Loaded fragment from %s', this._response.description],\n skip: () => this._skip()\n });\n }\n let fail = u.evalOption(this.options.fail, this._response) ?? !this._response.ok;\n if (fail) {\n throw this._updateContentFromResponse(this.deriveFailOptions());\n }\n return this._updateContentFromResponse(this.options);\n }\n _skip() {\n up.puts('up.render()', 'Skipping ' + this._response.description);\n this.options.target = ':none';\n this.options.failTarget = ':none';\n }\n _updateContentFromResponse(finalRenderOptions) {\n if (finalRenderOptions.failPrefixForced) {\n up.puts('up.render()', 'Rendering failed response using fail-prefixed options (https://unpoly.com/failed-responses)');\n }\n this._augmentOptionsFromResponse(finalRenderOptions);\n finalRenderOptions.meta = this._compilerPassMeta();\n let result = new up.Change.FromContent(finalRenderOptions).execute();\n result.finished = this.finish(result, finalRenderOptions);\n return result;\n }\n async finish(renderResult, originalRenderOptions) {\n renderResult = await renderResult.finished;\n if (up.fragment.shouldRevalidate(this._request, this._response, originalRenderOptions)) {\n renderResult = await this._revalidate(renderResult, originalRenderOptions);\n }\n return renderResult;\n }\n async _revalidate(renderResult, originalRenderOptions) {\n let inputTarget = originalRenderOptions.target;\n let effectiveTarget = renderResult.target;\n if (/:(before|after)/.test(inputTarget)) {\n up.warn('up.render()', 'Cannot revalidate cache when prepending/appending (target %s)', inputTarget);\n }\n else {\n up.puts('up.render()', 'Revalidating cached response for target \"%s\"', effectiveTarget);\n let verifyResult = await up.reload(effectiveTarget, {\n ...originalRenderOptions,\n preferOldElements: renderResult.fragments,\n layer: renderResult.layer,\n onFinished: null,\n scroll: false,\n focus: 'keep',\n transition: false,\n cache: false,\n confirm: false,\n feedback: false,\n abort: false,\n expiredResponse: this._response,\n });\n if (!verifyResult.none) {\n renderResult = verifyResult;\n }\n }\n return renderResult;\n }\n _loadedEventProps() {\n const { expiredResponse } = this.options;\n return {\n request: this._request,\n response: this._response,\n renderOptions: this.options,\n revalidating: !!expiredResponse,\n expiredResponse,\n };\n }\n _compilerPassMeta() {\n let meta = { revalidating: !!this.options.expiredResponse };\n up.migrate.processCompilerPassMeta?.(meta, this._response);\n return meta;\n }\n _augmentOptionsFromResponse(renderOptions) {\n const responseURL = this._response.url;\n let serverLocation = responseURL;\n let hash = this._request.hash;\n if (hash) {\n renderOptions.hash = hash;\n serverLocation += hash;\n }\n const isReloadable = (this._response.method === 'GET');\n if (isReloadable) {\n renderOptions.source = this.improveHistoryValue(renderOptions.source, responseURL);\n }\n else {\n renderOptions.source = this.improveHistoryValue(renderOptions.source, 'keep');\n renderOptions.history = !!renderOptions.location;\n }\n renderOptions.location = this.improveHistoryValue(renderOptions.location, serverLocation);\n renderOptions.title = this.improveHistoryValue(renderOptions.title, this._response.title);\n renderOptions.eventPlans = this._response.eventPlans;\n let serverTarget = this._response.target;\n if (serverTarget) {\n renderOptions.target = serverTarget;\n }\n renderOptions.acceptLayer = this._response.acceptLayer;\n renderOptions.dismissLayer = this._response.dismissLayer;\n renderOptions.document = this._response.text;\n if (this._response.none) {\n renderOptions.target = ':none';\n }\n renderOptions.context = u.merge(renderOptions.context, this._response.context);\n renderOptions.cspNonces = this._response.cspNonces;\n renderOptions.time ??= this._response.lastModified;\n renderOptions.etag ??= this._response.etag;\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _loadedEventProps: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 34 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Change.FromContent = (_a = class FromContent extends up.Change {\n constructor(options) {\n super(options);\n this._origin = this.options.origin;\n this._preview = this.options.preview;\n }\n _getPlans() {\n let plans = [];\n this._lookupLayers();\n this._improveOptionsFromResponseDoc();\n this._expandIntoPlans(plans, this._layers, this.options.target);\n this._expandIntoPlans(plans, this._layers, this.options.fallback);\n return plans;\n }\n _isRenderableLayer(layer) {\n return (layer === 'new') || layer.isOpen();\n }\n _lookupLayers() {\n this._allLayers = up.layer.getAll(this.options);\n this._layers = u.filter(this._allLayers, this._isRenderableLayer);\n }\n _expandIntoPlans(plans, layers, targets) {\n for (let layer of layers) {\n for (let target of this._expandTargets(targets, layer)) {\n const props = { ...this.options, target, layer, defaultPlacement: this._defaultPlacement() };\n const change = layer === 'new' ? new up.Change.OpenLayer(props) : new up.Change.UpdateLayer(props);\n plans.push(change);\n }\n }\n }\n _expandTargets(targets, layer) {\n return up.fragment.expandTargets(targets, { layer, mode: this.options.mode, origin: this._origin });\n }\n execute() {\n if (this.options.preload) {\n return Promise.resolve();\n }\n return this._seekPlan(this._executePlan.bind(this)) || this._cannotMatchPostflightTarget();\n }\n _executePlan(matchedPlan) {\n let result = matchedPlan.execute(this._getResponseDoc(), this._onPlanApplicable.bind(this, matchedPlan));\n result.options = this.options;\n return result;\n }\n _isApplicablePlanError(error) {\n return !(error instanceof up.CannotMatch);\n }\n _onPlanApplicable(plan) {\n let primaryPlan = this._getPlans()[0];\n if (plan !== primaryPlan) {\n up.puts('up.render()', 'Could not match primary target \"%s\". Updating a fallback target \"%s\".', primaryPlan.target, plan.target);\n }\n let { assets } = this._getResponseDoc();\n if (assets) {\n up.script.assertAssetsOK(assets, plan.options);\n }\n this.options.onRender?.();\n }\n _getResponseDoc() {\n if (this._preview)\n return;\n const docOptions = u.pick(this.options, [\n 'target',\n 'content',\n 'fragment',\n 'document',\n 'html',\n 'cspNonces',\n 'origin',\n ]);\n up.migrate.handleResponseDocOptions?.(docOptions);\n if (this._defaultPlacement() === 'content') {\n docOptions.target = this._firstExpandedTarget(docOptions.target);\n }\n return new up.ResponseDoc(docOptions);\n }\n _improveOptionsFromResponseDoc() {\n if (this._preview)\n return;\n let responseDoc = this._getResponseDoc();\n if (this.options.fragment) {\n this.options.target ||= responseDoc.rootSelector();\n }\n this.options.title = this.improveHistoryValue(this.options.title, responseDoc.title);\n this.options.metaTags = this.improveHistoryValue(this.options.metaTags, responseDoc.metaTags);\n }\n _defaultPlacement() {\n if (!this.options.document && !this.options.fragment) {\n return 'content';\n }\n }\n _firstExpandedTarget(target) {\n let layer = this._layers[0] || up.layer.root;\n return this._expandTargets(target || ':main', layer)[0];\n }\n getPreflightProps(opts = {}) {\n const getPlanProps = plan => plan.getPreflightProps();\n return this._seekPlan(getPlanProps) || opts.optional || this._cannotMatchPreflightTarget();\n }\n _cannotMatchPreflightTarget() {\n this._cannotMatchTarget('Could not find target in current page');\n }\n _cannotMatchPostflightTarget() {\n this._cannotMatchTarget('Could not find common target in current page and response');\n }\n _cannotMatchTarget(reason) {\n if (this._getPlans().length) {\n const planTargets = u.uniq(u.map(this._getPlans(), 'target'));\n const humanizedLayerOption = up.layer.optionToString(this.options.layer);\n throw new up.CannotMatch([reason + \" (tried selectors %o in %s)\", planTargets, humanizedLayerOption]);\n }\n else if (this._layers.length === 0) {\n this._cannotMatchLayer();\n }\n else if (this.options.failPrefixForced) {\n throw new up.CannotMatch('No target selector given for failed responses (https://unpoly.com/failed-responses)');\n }\n else {\n throw new up.CannotMatch('No target selector given');\n }\n }\n _cannotMatchLayer() {\n throw new up.CannotMatch('Could not find a layer to render in. You may have passed an unmatchable layer reference, or a detached element.');\n }\n _seekPlan(fn) {\n for (let plan of this._getPlans()) {\n try {\n return fn(plan);\n }\n catch (error) {\n if (this._isApplicablePlanError(error)) {\n throw error;\n }\n }\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getPlans: true,\n _getResponseDoc: true,\n getPreflightProps: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 35 */\n/***/ (() => {\n\nconst u = up.util;\nup.CompilerPass = class CompilerPass {\n constructor(root, compilers, { layer, data, dataMap, meta }) {\n layer ||= up.layer.get(root) || up.layer.current;\n this._root = root;\n this._compilers = compilers;\n this._layer = layer;\n this._data = data;\n this._dataMap = dataMap;\n meta ||= {};\n meta.layer = layer;\n this._meta = meta;\n }\n run() {\n this._layer.asCurrent(() => {\n this.setCompileData();\n for (let compiler of this._compilers) {\n this._runCompiler(compiler);\n }\n });\n }\n setCompileData() {\n if (this._data) {\n this._root.upCompileData = this._data;\n }\n if (this._dataMap) {\n for (let selector in this._dataMap) {\n for (let match of this._select(selector)) {\n match.upCompileData = this._dataMap[selector];\n }\n }\n }\n }\n _runCompiler(compiler) {\n const matches = this._selectOnce(compiler);\n if (!matches.length) {\n return;\n }\n if (!compiler.isDefault) {\n up.puts('up.hello()', 'Compiling %d\u00D7 \"%s\" on %s', matches.length, compiler.selector, this._layer);\n }\n if (compiler.batch) {\n this._compileBatch(compiler, matches);\n }\n else {\n for (let match of matches) {\n this._compileOneElement(compiler, match);\n }\n }\n return up.migrate.postCompile?.(matches, compiler);\n }\n _compileOneElement(compiler, element) {\n const compileArgs = [element];\n if (compiler.length !== 1) {\n const data = up.script.data(element);\n compileArgs.push(data, this._meta);\n }\n const result = this._applyCompilerFunction(compiler, element, compileArgs);\n let destructorOrDestructors = this._destructorPresence(result);\n if (destructorOrDestructors) {\n up.destructor(element, destructorOrDestructors);\n }\n }\n _compileBatch(compiler, elements) {\n const compileArgs = [elements];\n if (compiler.length !== 1) {\n const dataList = u.map(elements, up.script.data);\n compileArgs.push(dataList, this._meta);\n }\n const result = this._applyCompilerFunction(compiler, elements, compileArgs);\n if (this._destructorPresence(result)) {\n up.fail('Compilers with { batch: true } cannot return destructors');\n }\n }\n _applyCompilerFunction(compiler, elementOrElements, compileArgs) {\n return up.error.guard(() => compiler.apply(elementOrElements, compileArgs));\n }\n _destructorPresence(result) {\n if (u.isFunction(result) || (u.isArray(result) && (u.every(result, u.isFunction)))) {\n return result;\n }\n }\n _select(selector) {\n return up.fragment.subtree(this._root, u.evalOption(selector), { layer: this._layer });\n }\n _selectOnce(compiler) {\n let matches = this._select(compiler.selector);\n return u.filter(matches, (element) => {\n let appliedCompilers = (element.upAppliedCompilers ||= new Set());\n if (!appliedCompilers.has(compiler)) {\n appliedCompilers.add(compiler);\n return true;\n }\n });\n }\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.CSSTransition = class CSSTransition {\n constructor(element, lastFrameKebab, options) {\n this._element = element;\n this._lastFrameKebab = lastFrameKebab;\n this._lastFrameKeysKebab = Object.keys(this._lastFrameKebab);\n if (u.some(this._lastFrameKeysKebab, key => key.match(/A-Z/))) {\n up.fail('Animation keys must be kebab-case');\n }\n this._finishEvent = options.finishEvent;\n this._duration = options.duration;\n this._easing = options.easing;\n this._finished = false;\n }\n start() {\n if (this._lastFrameKeysKebab.length === 0) {\n this._finished = true;\n return Promise.resolve();\n }\n this._deferred = u.newDeferred();\n this._pauseOldTransition();\n this._startTime = new Date();\n this._startFallbackTimer();\n this._listenToFinishEvent();\n this._listenToTransitionEnd();\n this._startMotion();\n return this._deferred;\n }\n _listenToFinishEvent() {\n if (this._finishEvent) {\n this._stopListenToFinishEvent = up.on(this._element, this._finishEvent, this._onFinishEvent.bind(this));\n }\n }\n _onFinishEvent(event) {\n event.stopPropagation();\n this._finish();\n }\n _startFallbackTimer() {\n const timingTolerance = 100;\n this._fallbackTimer = u.timer((this._duration + timingTolerance), () => {\n this._finish();\n });\n }\n _stopFallbackTimer() {\n clearTimeout(this._fallbackTimer);\n }\n _listenToTransitionEnd() {\n this._stopListenToTransitionEnd = up.on(this._element, 'transitionend', this._onTransitionEnd.bind(this));\n }\n _onTransitionEnd(event) {\n if (event.target !== this._element) {\n return;\n }\n const elapsed = new Date() - this._startTime;\n if (elapsed <= (0.25 * this._duration)) {\n return;\n }\n const completedPropertyKebab = event.propertyName;\n if (!u.contains(this._lastFrameKeysKebab, completedPropertyKebab)) {\n return;\n }\n this._finish();\n }\n _finish() {\n if (this._finished) {\n return;\n }\n this._finished = true;\n this._stopFallbackTimer();\n this._stopListenToFinishEvent?.();\n this._stopListenToTransitionEnd?.();\n e.concludeCSSTransition(this._element);\n this._resumeOldTransition();\n this._deferred.resolve();\n }\n _pauseOldTransition() {\n const oldTransition = e.style(this._element, [\n 'transitionProperty',\n 'transitionDuration',\n 'transitionDelay',\n 'transitionTimingFunction'\n ]);\n if (e.hasCSSTransition(oldTransition)) {\n if (oldTransition.transitionProperty !== 'all') {\n const oldTransitionProperties = oldTransition.transitionProperty.split(/\\s*,\\s*/);\n const oldTransitionFrameKebab = e.style(this._element, oldTransitionProperties);\n this._setOldTransitionTargetFrame = e.setTemporaryStyle(this._element, oldTransitionFrameKebab);\n }\n this._setOldTransition = e.concludeCSSTransition(this._element);\n }\n }\n _resumeOldTransition() {\n this._setOldTransitionTargetFrame?.();\n this._setOldTransition?.();\n }\n _startMotion() {\n e.setStyle(this._element, {\n transitionProperty: Object.keys(this._lastFrameKebab).join(', '),\n transitionDuration: `${this._duration}ms`,\n transitionTimingFunction: this._easing\n });\n e.setStyle(this._element, this._lastFrameKebab);\n }\n};\n\n\n/***/ }),\n/* 37 */\n/***/ (() => {\n\nconst u = up.util;\nup.DestructorPass = class DestructorPass {\n constructor(fragment, options) {\n this._fragment = fragment;\n this._options = options;\n }\n run() {\n for (let cleanable of this._selectCleanables()) {\n let destructors = u.pluckKey(cleanable, 'upDestructors');\n if (destructors) {\n for (let destructor of destructors) {\n this._applyDestructorFunction(destructor, cleanable);\n }\n }\n cleanable.classList.remove('up-can-clean');\n }\n }\n _selectCleanables() {\n const selectOptions = { ...this._options, destroying: true };\n return up.fragment.subtree(this._fragment, '.up-can-clean', selectOptions);\n }\n _applyDestructorFunction(destructor, element) {\n up.error.guard(() => destructor(element));\n }\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.EventEmitter = class EventEmitter extends up.Record {\n keys() {\n return [\n 'target',\n 'event',\n 'baseLayer',\n 'callback',\n 'log',\n 'ensureBubbles',\n ];\n }\n emit() {\n this._logEmission();\n if (this.baseLayer) {\n this.baseLayer.asCurrent(() => this._dispatchEvent());\n }\n else {\n this._dispatchEvent();\n }\n return this.event;\n }\n _dispatchEvent() {\n this.target.dispatchEvent(this.event);\n if (this.ensureBubbles && !this.target.isConnected) {\n document.dispatchEvent(this.event);\n }\n up.error.guard(() => this.callback?.(this.event));\n }\n assertEmitted() {\n const event = this.emit();\n if (event.defaultPrevented) {\n throw new up.Aborted(`Event ${event.type} was prevented`);\n }\n }\n _logEmission() {\n if (!up.log.config.enabled) {\n return;\n }\n let message = this.log;\n let messageArgs;\n if (u.isArray(message)) {\n [message, ...messageArgs] = message;\n }\n else {\n messageArgs = [];\n }\n const { type } = this.event;\n if (u.isString(message)) {\n up.puts(type, message, ...messageArgs);\n }\n else if (message !== false) {\n up.puts(type, `Event ${type}`);\n }\n }\n static fromEmitArgs(args, defaults = {}) {\n let options = u.extractOptions(args);\n options = u.merge(defaults, options);\n if (u.isElementish(args[0])) {\n options.target = e.get(args.shift());\n }\n else if (args[0] instanceof up.Layer) {\n options.layer = args.shift();\n }\n let layer;\n if (u.isGiven(options.layer)) {\n layer = up.layer.get(options.layer);\n options.target ||= layer.element;\n options.baseLayer ||= layer;\n }\n if (options.baseLayer) {\n options.baseLayer = up.layer.get(options.baseLayer);\n }\n if (u.isString(options.target)) {\n options.target = up.fragment.get(options.target, { layer: options.layer });\n }\n else if (!options.target) {\n options.target = document;\n }\n if (args[0]?.preventDefault) {\n options.event = args[0];\n options.log ??= args[0].log;\n }\n else if (u.isString(args[0])) {\n options.event = up.event.build(args[0], options);\n }\n else {\n options.event = up.event.build(options);\n }\n return new (this)(options);\n }\n};\n\n\n/***/ }),\n/* 39 */\n/***/ (() => {\n\nconst u = up.util;\nup.EventListener = class EventListener extends up.Record {\n keys() {\n return [\n 'element',\n 'eventType',\n 'selector',\n 'callback',\n 'guard',\n 'baseLayer',\n 'passive',\n 'once',\n 'capture',\n 'beforeBoot',\n ];\n }\n constructor(attributes) {\n super(attributes);\n this._key = this.constructor._buildKey(attributes);\n this.isDefault = up.framework.evaling;\n this.beforeBoot ??= (this.eventType.indexOf('up:framework:') === 0);\n this.nativeCallback = this.nativeCallback.bind(this);\n }\n bind() {\n const map = (this.element.upEventListeners ||= {});\n if (map[this._key]) {\n up.fail('up.on(): The %o callback %o cannot be registered more than once', this.eventType, this.callback);\n }\n map[this._key] = this;\n this.element.addEventListener(...this._addListenerArg());\n }\n _addListenerArg() {\n let options = u.compactObject(u.pick(this, ['once', 'passive', 'capture']));\n return [this.eventType, this.nativeCallback, options];\n }\n unbind() {\n let map = this.element.upEventListeners;\n if (map) {\n delete map[this._key];\n }\n this.element.removeEventListener(...this._addListenerArg());\n }\n nativeCallback(event) {\n if (up.framework.beforeBoot && !this.beforeBoot) {\n return;\n }\n let element = event.target;\n if (this.selector) {\n element = element.closest(u.evalOption(this.selector));\n }\n if (this.guard && !this.guard(event)) {\n return;\n }\n if (element) {\n const args = [event, element];\n const expectedArgCount = this.callback.length;\n if (expectedArgCount !== 1 && expectedArgCount !== 2) {\n const data = up.script.data(element);\n args.push(data);\n }\n if (this.eventType === 'click' && element.disabled) {\n return;\n }\n const applyCallback = this.callback.bind(element, ...args);\n if (this.baseLayer) {\n this.baseLayer.asCurrent(applyCallback);\n }\n else {\n applyCallback();\n }\n }\n }\n static fromElement(attributes) {\n let map = attributes.element.upEventListeners;\n if (map) {\n const key = this._buildKey(attributes);\n return map[key];\n }\n }\n static _buildKey(attributes) {\n attributes.callback.upUid ||= u.uid();\n return [\n attributes.eventType,\n attributes.selector,\n attributes.callback.upUid\n ].join('|');\n }\n static allNonDefault(element) {\n let map = element.upEventListeners;\n if (map) {\n const listeners = Object.values(map);\n return u.reject(listeners, 'isDefault');\n }\n else {\n return [];\n }\n }\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (() => {\n\nconst u = up.util;\nup.EventListenerGroup = class EventListenerGroup extends up.Record {\n keys() {\n return [\n 'elements',\n 'eventTypes',\n 'selector',\n 'callback',\n 'guard',\n 'baseLayer',\n 'passive',\n 'once',\n 'capture',\n 'beforeBoot',\n ];\n }\n bind() {\n const unbindFns = [];\n this._eachListenerAttributes(function (attrs) {\n const listener = new up.EventListener(attrs);\n listener.bind();\n return unbindFns.push(listener.unbind.bind(listener));\n });\n return u.sequence(unbindFns);\n }\n _eachListenerAttributes(fn) {\n for (let element of this.elements) {\n for (let eventType of this.eventTypes) {\n fn(this._listenerAttributes(element, eventType));\n }\n }\n }\n _listenerAttributes(element, eventType) {\n return { ...this.attributes(), element, eventType };\n }\n unbind() {\n this._eachListenerAttributes(function (attrs) {\n let listener = up.EventListener.fromElement(attrs);\n if (listener) {\n listener.unbind();\n }\n });\n }\n static fromBindArgs(args, defaults) {\n args = u.copy(args);\n const callback = args.pop();\n let elements;\n if (args[0].addEventListener) {\n elements = [args.shift()];\n }\n else if (u.isJQuery(args[0]) || (u.isList(args[0]) && args[0][0].addEventListener)) {\n elements = args.shift();\n }\n else {\n elements = [document];\n }\n let eventTypes = u.parseTokens(args.shift());\n let fixTypes = up.migrate.fixEventTypes;\n if (fixTypes) {\n eventTypes = fixTypes(eventTypes);\n }\n const options = u.extractOptions(args);\n const selector = args[0];\n const attributes = { elements, eventTypes, selector, callback, ...options, ...defaults };\n return new (this)(attributes);\n }\n};\n\n\n/***/ }),\n/* 41 */\n/***/ (() => {\n\nconst u = up.util;\nup.FieldWatcher = class FieldWatcher {\n constructor(root, options, callback) {\n this._options = options;\n this._root = root;\n this._scope = up.form.getScope(root);\n this._callback = callback;\n this._batch = options.batch;\n this._abortable = options.abortable;\n }\n start() {\n this._scheduledValues = null;\n this._processedValues = this._readFieldValues();\n this._currentTimer = null;\n this._callbackRunning = false;\n this._unbindFns = [];\n this._watchFieldsWithin(this._root);\n this._root.addEventListener('up:fragment:inserted', ({ target }) => {\n if (target !== this._root)\n this._watchFieldsWithin(target);\n });\n this._unbindFns.push(up.fragment.onAborted(this._scope, () => this._abort()));\n this._unbindFns.push(up.on(this._scope, 'reset', () => this._onFormReset()));\n }\n stop() {\n this._abort();\n for (let unbindFn of this._unbindFns)\n unbindFn();\n }\n _fieldOptions(field) {\n let rootOptions = u.copy(this._options);\n return up.form.watchOptions(field, rootOptions, { defaults: { event: 'input' } });\n }\n _watchFieldsWithin(container) {\n for (let field of up.form.fields(container)) {\n this._watchField(field);\n }\n }\n _watchField(field) {\n let fieldOptions = this._fieldOptions(field);\n this._unbindFns.push(up.on(field, fieldOptions.event, () => this._check(fieldOptions)));\n }\n _abort() {\n this._scheduledValues = null;\n }\n _scheduleValues(values, fieldOptions) {\n this._scheduledValues = values;\n this._scheduledFieldOptions = fieldOptions;\n let delay = fieldOptions.delay || 0;\n clearTimeout(this._currentTimer);\n this._currentTimer = u.timer(delay, () => {\n this._currentTimer = null;\n this._requestCallback();\n });\n }\n _isNewValues(values) {\n return !u.isEqual(values, this._processedValues) && !u.isEqual(this._scheduledValues, values);\n }\n async _requestCallback() {\n if (!this._scheduledValues)\n return;\n if (this._callbackRunning)\n return;\n if (this._currentTimer)\n return;\n if (!this._scope.isConnected)\n return;\n let fieldOptions = this._scheduledFieldOptions;\n const diff = this._changedValues(this._processedValues, this._scheduledValues);\n this._processedValues = this._scheduledValues;\n this._scheduledValues = null;\n this._callbackRunning = true;\n this._scheduledFieldOptions = null;\n let callbackOptions = { ...fieldOptions, disable: false };\n const callbackReturnValues = [];\n if (this._batch) {\n callbackReturnValues.push(this._runCallback(diff, callbackOptions));\n }\n else {\n for (let name in diff) {\n const value = diff[name];\n callbackReturnValues.push(this._runCallback(value, name, callbackOptions));\n }\n }\n if (u.some(callbackReturnValues, u.isPromise)) {\n let callbackDone = Promise.allSettled(callbackReturnValues);\n up.form.disableWhile(callbackDone, fieldOptions);\n await callbackDone;\n }\n this._callbackRunning = false;\n this._requestCallback();\n }\n _runCallback(...args) {\n return up.error.guard(() => this._callback(...args));\n }\n _changedValues(previous, next) {\n const changes = {};\n let keys = Object.keys(previous);\n keys = keys.concat(Object.keys(next));\n keys = u.uniq(keys);\n for (let key of keys) {\n const previousValue = previous[key];\n const nextValue = next[key];\n if (!u.isEqual(previousValue, nextValue)) {\n changes[key] = nextValue;\n }\n }\n return changes;\n }\n _readFieldValues() {\n return up.Params.fromContainer(this._root).toObject();\n }\n _check(fieldOptions = {}) {\n const values = this._readFieldValues();\n if (this._isNewValues(values)) {\n this._scheduleValues(values, fieldOptions);\n }\n }\n _onFormReset() {\n u.task(() => this._check());\n }\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (() => {\n\nconst u = up.util;\nup.FormValidator = class FormValidator {\n constructor(form) {\n this._form = form;\n this._dirtySolutions = [];\n this._nextRenderTimer = null;\n this._rendering = false;\n this._resetNextRenderPromise();\n this._honorAbort();\n }\n _honorAbort() {\n up.fragment.onAborted(this._form, (event) => this._onAborted(event));\n }\n _onAborted(event) {\n if (this._dirtySolutions.length) {\n this._dirtySolutions = [];\n this._nextRenderPromise.reject(new up.Aborted(event.reason));\n this._resetNextRenderPromise();\n }\n }\n _resetNextRenderPromise() {\n this._nextRenderPromise = u.newDeferred();\n }\n watchContainer(fieldOrForm) {\n let { event } = this._originOptions(fieldOrForm);\n let guard = () => up.fragment.isAlive(fieldOrForm);\n let callback = () => up.error.muteUncriticalRejection(this.validate({ origin: fieldOrForm }));\n up.on(fieldOrForm, event, { guard }, callback);\n }\n validate(options = {}) {\n let solutions = this._getSolutions(options);\n this._dirtySolutions.push(...solutions);\n this._scheduleNextRender();\n return this._nextRenderPromise;\n }\n _getSolutions(options) {\n let solutions = this._getTargetSelectorSolutions(options)\n || this._getFieldSolutions(options)\n || this._getElementSolutions(options.origin);\n for (let solution of solutions) {\n solution.renderOptions = this._originOptions(solution.origin, options);\n solution.target = up.fragment.resolveOrigin(solution.target, solution);\n }\n return solutions;\n }\n _getFieldSolutions({ origin, ...options }) {\n if (up.form.isField(origin)) {\n return this._getValidateAttrSolutions(origin) || this._getFormGroupSolutions(origin, options);\n }\n }\n _getFormGroupSolutions(field, { formGroup = true }) {\n if (!formGroup)\n return;\n let solution = up.form.groupSolution(field);\n if (solution) {\n up.puts('up.validate()', 'Validating form group of field %o', field);\n return [solution];\n }\n }\n _getTargetSelectorSolutions({ target, origin }) {\n if (u.isString(target) && target) {\n up.puts('up.validate()', 'Validating target \"%s\"', target);\n let simpleSelectors = up.fragment.splitTarget(target);\n return u.compact(simpleSelectors.map(function (simpleSelector) {\n let element = up.fragment.get(simpleSelector, { origin });\n if (element) {\n return {\n element,\n target: simpleSelector,\n origin\n };\n }\n else {\n up.fail('Validation target \"%s\" does not match an element', simpleSelector);\n }\n }));\n }\n }\n _getElementSolutions(element) {\n up.puts('up.validate()', 'Validating element %o', element);\n return [{\n element,\n target: up.fragment.toTarget(element),\n origin: element\n }];\n }\n _getValidateAttrSolutions(field) {\n let containerWithAttr = field.closest('[up-validate]');\n if (containerWithAttr) {\n let target = containerWithAttr.getAttribute('up-validate');\n return this._getTargetSelectorSolutions({ target, origin: field });\n }\n }\n _originOptions(element, overrideOptions) {\n return up.form.watchOptions(element, overrideOptions, { defaults: { event: 'change' } });\n }\n _scheduleNextRender() {\n let solutionDelays = this._dirtySolutions.map((solution) => solution.renderOptions.delay);\n let shortestDelay = Math.min(...solutionDelays) || 0;\n clearTimeout(this._nextRenderTimer);\n this._nextRenderTimer = u.timer(shortestDelay, () => {\n this._nextRenderTimer = null;\n this._renderDirtySolutions();\n });\n }\n _renderDirtySolutions() {\n up.error.muteUncriticalRejection(this._doRenderDirtySolutions());\n }\n async _doRenderDirtySolutions() {\n if (!this._dirtySolutions.length)\n return;\n if (this._rendering)\n return;\n if (this._nextRenderTimer)\n return;\n let dirtySolutions = this._dirtySolutions;\n this._dirtySolutions = [];\n let dirtyOrigins = u.map(dirtySolutions, 'origin');\n let dirtyFields = u.flatMap(dirtyOrigins, up.form.fields);\n let dirtyNames = u.uniq(u.map(dirtyFields, 'name'));\n let dataMap = this._buildDataMap(dirtySolutions);\n let dirtyRenderOptionsList = u.map(dirtySolutions, 'renderOptions');\n let options = u.mergeDefined(...dirtyRenderOptionsList, { dataMap }, up.form.destinationOptions(this._form));\n options.target = u.map(dirtySolutions, 'target').join(', ');\n options.feedback = u.some(dirtyRenderOptionsList, 'feedback');\n options.origin = this._form;\n options.focus ??= 'keep';\n options.failOptions = false;\n options.defaultMaybe = true;\n options.params = up.Params.merge(options.params, ...u.map(dirtyRenderOptionsList, 'params'));\n options.headers = u.merge(...u.map(dirtyRenderOptionsList, 'headers'));\n this._addValidateHeader(options.headers, dirtyNames);\n options.guardEvent = up.event.build('up:form:validate', {\n fields: dirtyFields,\n log: 'Validating form',\n params: options.params\n });\n this._rendering = true;\n let renderingPromise = this._nextRenderPromise;\n this._resetNextRenderPromise();\n options.disable = false;\n for (let solution of dirtySolutions) {\n up.form.disableWhile(renderingPromise, {\n disable: solution.renderOptions.disable,\n origin: solution.origin,\n });\n }\n try {\n renderingPromise.resolve(up.render(options));\n await renderingPromise;\n }\n finally {\n this._rendering = false;\n this._renderDirtySolutions();\n }\n }\n _addValidateHeader(headers, names) {\n let key = up.protocol.headerize('validate');\n let value = names.join(' ');\n if (!value || value.length > up.protocol.config.maxHeaderSize)\n value = ':unknown';\n headers[key] = value;\n }\n _buildDataMap(solutions) {\n let dataMap = {};\n for (let solution of solutions) {\n let data = u.pluckKey(solution.renderOptions, 'data');\n let keepData = u.pluckKey(solution.renderOptions, 'keepData');\n if (keepData) {\n data = up.data(solution.element);\n }\n if (data) {\n dataMap[solution.target] = data;\n }\n }\n return dataMap;\n }\n static forElement(element) {\n let form = up.form.get(element);\n return form.upFormValidator ||= new this(form);\n }\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (() => {\n\nup.FocusCapsule = class FocusCapsule {\n constructor(target, cursorProps) {\n this._target = target;\n this._cursorProps = cursorProps;\n }\n restore(layer, options) {\n let rediscoveredElement = up.fragment.get(this._target, { layer });\n if (rediscoveredElement) {\n up.viewport.copyCursorProps(this._cursorProps, rediscoveredElement);\n up.focus(rediscoveredElement, options);\n return true;\n }\n }\n static preserve(layer) {\n let focusedElement = up.viewport.focusedElementWithin(layer.element);\n if (!focusedElement)\n return;\n let target = up.fragment.tryToTarget(focusedElement);\n if (!target)\n return;\n const cursorProps = up.viewport.copyCursorProps(focusedElement);\n return new this(target, cursorProps);\n }\n};\n\n\n/***/ }),\n/* 44 */\n/***/ (() => {\n\nconst u = up.util;\nup.FragmentProcessor = class FragmentProcessor extends up.Record {\n keys() {\n return [\n 'fragment',\n 'autoMeans',\n 'origin',\n 'layer'\n ];\n }\n process(opt) {\n let preprocessed = this.preprocess(opt);\n return this.tryProcess(preprocessed);\n }\n preprocess(opt) {\n return u.parseTokens(opt, { separator: 'or' });\n }\n tryProcess(opt) {\n if (u.isArray(opt)) {\n return this.processArray(opt);\n }\n if (u.isFunction(opt)) {\n let result = up.error.guard(() => opt(this.fragment, this.attributes()));\n return this.tryProcess(result);\n }\n if (u.isElement(opt)) {\n return this.processElement(opt);\n }\n if (u.isString(opt)) {\n if (opt === 'auto') {\n return this.tryProcess(this.autoMeans);\n }\n let match = opt.match(/^(.+?)-if-(.+?)$/);\n if (match) {\n return this.resolveCondition(match[2]) && this.process(match[1]);\n }\n }\n return this.processPrimitive(opt);\n }\n processArray(array) {\n return u.find(array, opt => this.tryProcess(opt));\n }\n resolveCondition(condition) {\n if (condition === 'main') {\n return this.fragment && up.fragment.contains(this.fragment, ':main');\n }\n }\n findSelector(selector) {\n const lookupOpts = { layer: this.layer, origin: this.origin };\n let matchWithinFragment = this.fragment && up.fragment.get(this.fragment, selector, lookupOpts);\n let match = matchWithinFragment || up.fragment.get(selector, lookupOpts);\n if (match) {\n return match;\n }\n else {\n up.warn('up.render()', 'Could not find an element matching \"%s\"', selector);\n }\n }\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (() => {\n\nconst u = up.util;\nconst DESCENDANT_SELECTOR = /^([^ >+(]+) (.+)$/;\nup.FragmentFinder = class FragmentFinder {\n constructor(options) {\n this._options = options;\n this._origin = options.origin;\n this._selector = options.selector;\n this._document = options.document || window.document;\n this._match = options.match ?? up.fragment.config.match;\n this._preferOldElements = options.preferOldElements;\n }\n find() {\n return this._findInPreferredElements() || this._findInRegion() || this._findFirst();\n }\n _findInPreferredElements() {\n if (this._preferOldElements) {\n return this._preferOldElements.find((preferOldElement) => this._document.contains(preferOldElement) && up.fragment.matches(preferOldElement, this._selector));\n }\n }\n _findInRegion() {\n if (this._match === 'region' && !up.fragment.containsMainPseudo(this._selector) && this._origin?.isConnected) {\n return this._findClosest() || this._findDescendantInRegion();\n }\n }\n _findClosest() {\n return up.fragment.closest(this._origin, this._selector, this._options);\n }\n _findDescendantInRegion() {\n let simpleSelectors = up.fragment.splitTarget(this._selector);\n return u.findResult(simpleSelectors, (simpleSelector) => {\n let parts = simpleSelector.match(DESCENDANT_SELECTOR);\n if (parts) {\n let parent = up.fragment.closest(this._origin, parts[1], this._options);\n if (parent) {\n return up.fragment.getDumb(parent, parts[2]);\n }\n }\n });\n }\n _findFirst() {\n return up.fragment.getDumb(this._document, this._selector, this._options);\n }\n};\n\n\n/***/ }),\n/* 46 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nconst PREVENT_SCROLL_OPTIONS = { preventScroll: true };\nup.FragmentFocus = class FragmentFocus extends up.FragmentProcessor {\n keys() {\n return super.keys().concat([\n 'hash',\n 'focusCapsule',\n 'inputDevice',\n ]);\n }\n processPrimitive(opt) {\n switch (opt) {\n case 'keep':\n return this._restoreLostFocus();\n case 'restore':\n return this._restorePreviousFocusForLocation();\n case 'target':\n case true:\n return this._focusElement(this.fragment);\n case 'layer':\n return this._focusElement(this.layer.getFocusElement());\n case 'main':\n return this._focusSelector(':main');\n case 'hash':\n return this._focusHash();\n case 'autofocus':\n return this._autofocus();\n default:\n if (u.isString(opt)) {\n return this._focusSelector(opt);\n }\n }\n }\n processElement(element) {\n return this._focusElement(element);\n }\n resolveCondition(condition) {\n if (condition === 'lost') {\n return this._wasFocusLost();\n }\n else {\n return super.resolveCondition(condition);\n }\n }\n _focusSelector(selector) {\n let match = this.findSelector(selector);\n return this._focusElement(match);\n }\n _restoreLostFocus() {\n if (this._wasFocusLost()) {\n return this.focusCapsule?.restore(this.layer, PREVENT_SCROLL_OPTIONS);\n }\n }\n _restorePreviousFocusForLocation() {\n return up.viewport.restoreFocus({ layer: this.layer });\n }\n _autofocus() {\n let autofocusElement = this.fragment && e.subtree(this.fragment, '[autofocus]')[0];\n if (autofocusElement) {\n return this._focusElement(autofocusElement);\n }\n }\n _focusElement(element) {\n if (element) {\n up.focus(element, { force: true, ...PREVENT_SCROLL_OPTIONS, inputDevice: this.inputDevice });\n return true;\n }\n }\n _focusHash() {\n let hashTarget = up.viewport.firstHashTarget(this.hash, { layer: this.layer });\n if (hashTarget) {\n return this._focusElement(hashTarget);\n }\n }\n _wasFocusLost() {\n return !this.layer.hasFocus();\n }\n};\n\n\n/***/ }),\n/* 47 */\n/***/ (() => {\n\nconst e = up.element;\nup.FragmentPolling = class FragmentPolling {\n constructor(fragment) {\n this._options = up.radio.pollOptions(fragment);\n this._fragment = fragment;\n up.destructor(fragment, this._onFragmentDestroyed.bind(this));\n up.fragment.onAborted(fragment, this._onFragmentAborted.bind(this));\n this._state = 'initialized';\n this._abortable = true;\n this._loading = false;\n this._satisfyInterval();\n }\n static forFragment(fragment) {\n return fragment.upPolling ||= new this(fragment);\n }\n onPollAttributeObserved() {\n this._start();\n }\n _onFragmentDestroyed() {\n this._stop();\n }\n _start(options) {\n Object.assign(this._options, options);\n if (this._state !== 'started') {\n if (!up.fragment.isTargetable(this._fragment)) {\n up.warn('[up-poll]', 'Cannot poll untargetable fragment %o', this._fragment);\n return;\n }\n this._state = 'started';\n this._ensureEventsBound();\n this._scheduleRemainingTime();\n }\n }\n _stop() {\n if (this._state === 'started') {\n this._clearReloadTimer();\n this._state = 'stopped';\n this.unbindEvents?.();\n }\n }\n forceStart(options) {\n Object.assign(this._options, options);\n this.forceStarted = true;\n this._start();\n }\n forceStop() {\n this._stop();\n this.forceStarted = false;\n }\n _ensureEventsBound() {\n if (!this.unbindEvents) {\n this.unbindEvents = up.on('visibilitychange up:layer:opened up:layer:dismissed up:layer:accepted', this._onVisibilityChange.bind(this));\n }\n }\n _onVisibilityChange() {\n if (this._isFragmentVisible()) {\n this._scheduleRemainingTime();\n }\n else {\n }\n }\n _isFragmentVisible() {\n return (!document.hidden) &&\n (this._options.ifLayer === 'any' || this._isOnFrontLayer());\n }\n _clearReloadTimer() {\n clearTimeout(this.reloadTimer);\n this.reloadTimer = null;\n }\n _scheduleRemainingTime() {\n if (!this.reloadTimer && !this._loading) {\n this._clearReloadTimer();\n this.reloadTimer = setTimeout(this._onTimerReached.bind(this), this._getRemainingDelay());\n }\n }\n _onTimerReached() {\n this.reloadTimer = null;\n this._tryReload();\n }\n _tryReload() {\n if (this._state !== 'started') {\n return;\n }\n if (!this._isFragmentVisible()) {\n up.puts('[up-poll]', 'Will not poll hidden fragment');\n return;\n }\n if (up.emit(this._fragment, 'up:fragment:poll', { log: ['Polling fragment', this._fragment] }).defaultPrevented) {\n up.puts('[up-poll]', 'User prevented up:fragment:poll event');\n this._satisfyInterval();\n this._scheduleRemainingTime();\n return;\n }\n this._reloadNow();\n }\n _getFullDelay() {\n return this._options.interval ?? e.numberAttr(this._fragment, 'up-interval') ?? up.radio.config.pollInterval;\n }\n _getRemainingDelay() {\n return Math.max(this._getFullDelay() - this._getFragmentAge(), 0);\n }\n _getFragmentAge() {\n return new Date() - this._lastAttempt;\n }\n _isOnFrontLayer() {\n this.layer ||= up.layer.get(this._fragment);\n return this.layer?.isFront?.();\n }\n _reloadNow() {\n this._clearReloadTimer();\n let reloadOptions = {\n url: this._options.url,\n fail: false,\n background: true,\n };\n let oldAbortable = this._abortable;\n try {\n this._abortable = false;\n this._loading = true;\n up.reload(this._fragment, reloadOptions).then(this._onReloadSuccess.bind(this), this._onReloadFailure.bind(this));\n }\n finally {\n this._abortable = oldAbortable;\n }\n }\n _onFragmentAborted({ newLayer }) {\n if (this._abortable && !newLayer) {\n this._stop();\n }\n }\n _onReloadSuccess({ fragment }) {\n this._loading = false;\n this._satisfyInterval();\n if (fragment) {\n this._onFragmentSwapped(fragment);\n }\n else {\n this._scheduleRemainingTime();\n }\n }\n _onFragmentSwapped(newFragment) {\n this._stop();\n if (this.forceStarted && up.fragment.matches(this._fragment, newFragment)) {\n this.constructor.forFragment(newFragment).forceStart(this._options);\n }\n }\n _onReloadFailure(reason) {\n this._loading = false;\n this._satisfyInterval();\n this._scheduleRemainingTime();\n up.error.throwCritical(reason);\n }\n _satisfyInterval() {\n this._lastAttempt = new Date();\n }\n};\n\n\n/***/ }),\n/* 48 */\n/***/ (() => {\n\nconst u = up.util;\nup.FragmentScrolling = class FragmentScrolling extends up.FragmentProcessor {\n keys() {\n return super.keys().concat([\n 'hash',\n 'mode',\n 'revealTop',\n 'revealMax',\n 'revealSnap',\n 'scrollBehavior',\n ]);\n }\n processPrimitive(opt) {\n switch (opt) {\n case 'reset':\n return this._reset();\n case 'layer':\n return this._revealLayer();\n case 'main':\n return this._revealSelector(':main');\n case 'restore':\n return this._restore();\n case 'hash':\n return this.hash && up.viewport.revealHash(this.hash, this.attributes());\n case 'target':\n case 'reveal':\n case true:\n return this._revealElement(this.fragment);\n default:\n if (u.isString(opt)) {\n return this._revealSelector(opt);\n }\n }\n }\n processElement(element) {\n return this._revealElement(element);\n }\n _revealElement(element) {\n if (element) {\n up.reveal(element, this.attributes());\n return true;\n }\n }\n _revealSelector(selector) {\n let match = this.findSelector(selector);\n return this._revealElement(match);\n }\n _revealLayer() {\n return this._revealElement(this.layer.getBoxElement());\n }\n _reset() {\n up.viewport.resetScroll({ ...this.attributes(), around: this.fragment });\n return true;\n }\n _restore() {\n return up.viewport.restoreScroll({ ...this.attributes(), around: this.fragment });\n }\n};\n\n\n/***/ }),\n/* 49 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.Layer = class Layer extends up.Record {\n keys() {\n return [\n 'element',\n 'stack',\n 'history',\n 'mode',\n 'context',\n 'lastScrollTops',\n 'lastFocusCapsules',\n ];\n }\n defaults() {\n return {\n context: {},\n lastScrollTops: up.viewport.newStateCache(),\n lastFocusCapsules: up.viewport.newStateCache()\n };\n }\n constructor(options = {}) {\n super(options);\n if (!this.mode) {\n throw \"missing { mode } option\";\n }\n }\n setupHandlers() {\n up.link.convertClicks(this);\n }\n teardownHandlers() { }\n mainTargets() {\n return up.layer.mainTargets(this.mode);\n }\n sync() {\n }\n accept() {\n throw new up.NotImplemented();\n }\n dismiss() {\n throw new up.NotImplemented();\n }\n peel(options) {\n this.stack.peel(this, options);\n }\n evalOption(option) {\n return u.evalOption(option, this);\n }\n isCurrent() {\n return this.stack.isCurrent(this);\n }\n isFront() {\n return this.stack.isFront(this);\n }\n isRoot() {\n return this.stack.isRoot(this);\n }\n isOverlay() {\n return this.stack.isOverlay(this);\n }\n isOpen() {\n return this.stack.isOpen(this);\n }\n isClosed() {\n return this.stack.isClosed(this);\n }\n get parent() {\n return this.stack.parentOf(this);\n }\n get child() {\n return this.stack.childOf(this);\n }\n get ancestors() {\n return this.stack.ancestorsOf(this);\n }\n get descendants() {\n return this.stack.descendantsOf(this);\n }\n get subtree() {\n return [this, ...this.descendants];\n }\n get index() {\n return this._index ??= this.stack.indexOf(this);\n }\n getContentElement() {\n return this.contentElement || this.element;\n }\n getBoxElement() {\n return this.boxElement || this.element;\n }\n getFocusElement() {\n return this.getBoxElement();\n }\n getFirstSwappableElement() {\n throw new up.NotImplemented();\n }\n contains(element) {\n return element.closest(up.layer.anySelector()) === this.element;\n }\n on(...args) {\n return this._buildEventListenerGroup(args).bind();\n }\n off(...args) {\n return this._buildEventListenerGroup(args).unbind();\n }\n _buildEventListenerGroup(args) {\n return up.EventListenerGroup.fromBindArgs(args, {\n guard: (event) => this._containsEventTarget(event),\n elements: [this.element],\n baseLayer: this\n });\n }\n _containsEventTarget(event) {\n return this.contains(event.target);\n }\n wasHitByMouseEvent(event) {\n const hittableElement = document.elementFromPoint(event.clientX, event.clientY);\n return !hittableElement || this.contains(hittableElement);\n }\n _buildEventEmitter(args) {\n return up.EventEmitter.fromEmitArgs(args, { layer: this });\n }\n emit(...args) {\n return this._buildEventEmitter(args).emit();\n }\n isDetached() {\n return !this.element.isConnected;\n }\n saveHistory() {\n if (this.history) {\n this.savedTitle = document.title;\n this.savedMetaTags = up.history.findMetaTags();\n this.savedLocation = up.history.location;\n }\n }\n restoreHistory() {\n if (!this.showsLiveHistory()) {\n return;\n }\n if (this.savedLocation) {\n up.history.push(this.savedLocation);\n }\n if (this.savedTitle) {\n document.title = this.savedTitle;\n }\n if (this.savedMetaTags) {\n up.history.updateMetaTags(this.savedMetaTags);\n }\n }\n asCurrent(fn) {\n return this.stack.asCurrent(this, fn);\n }\n updateHistory(options) {\n if (u.isString(options.location)) {\n this.location = options.location;\n }\n if (up.history.config.updateMetaTags && u.isList(options.metaTags)) {\n up.migrate?.warnOfHungryMetaTags?.(options.metaTags);\n this.metaTags = options.metaTags;\n }\n if (u.isString(options.title)) {\n this.title = options.title;\n }\n }\n showsLiveHistory() {\n return this.history && this.isFront();\n }\n get title() {\n if (this.showsLiveHistory()) {\n return document.title;\n }\n else {\n return this.savedTitle;\n }\n }\n set title(title) {\n this.savedTitle = title;\n if (this.showsLiveHistory()) {\n document.title = title;\n }\n }\n get metaTags() {\n if (this.showsLiveHistory()) {\n return up.history.findMetaTags();\n }\n else {\n return this.savedMetaTags;\n }\n }\n set metaTags(metaTags) {\n this.savedMetaTags = metaTags;\n if (this.showsLiveHistory()) {\n up.history.updateMetaTags(metaTags);\n }\n }\n get location() {\n if (this.showsLiveHistory()) {\n return up.history.location;\n }\n else {\n return this.savedLocation;\n }\n }\n set location(location) {\n const previousLocation = this.location;\n location = up.history.normalizeURL(location);\n if (previousLocation !== location || this.opening) {\n this.savedLocation = location;\n if (this.showsLiveHistory()) {\n up.history.push(location);\n }\n if (!this.opening) {\n this.emit('up:layer:location:changed', { location });\n }\n }\n }\n selector(part) {\n return this.constructor.selector(part);\n }\n static selector(_part) {\n throw new up.NotImplemented();\n }\n toString() {\n throw new up.NotImplemented();\n }\n affix(...args) {\n return e.affix(this.getFirstSwappableElement(), ...args);\n }\n [u.isEqual.key](other) {\n return (this.constructor === other.constructor) && (this.element === other.element);\n }\n hasFocus() {\n let focusedElement = document.activeElement;\n return focusedElement !== document.body && this.element.contains(focusedElement);\n }\n reset() {\n Object.assign(this, this.defaults());\n }\n};\n\n\n/***/ }),\n/* 50 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.Layer.Overlay = class Overlay extends up.Layer {\n keys() {\n return super.keys().concat([\n 'position',\n 'align',\n 'size',\n 'origin',\n 'class',\n 'backdrop',\n 'openAnimation',\n 'closeAnimation',\n 'openDuration',\n 'closeDuration',\n 'openEasing',\n 'closeEasing',\n 'backdropOpenAnimation',\n 'backdropCloseAnimation',\n 'dismissable',\n 'dismissLabel',\n 'dismissAriaLabel',\n 'onOpened',\n 'onAccept',\n 'onAccepted',\n 'onDismiss',\n 'onDismissed',\n 'acceptEvent',\n 'dismissEvent',\n 'acceptLocation',\n 'dismissLocation',\n 'opening'\n ]);\n }\n constructor(options) {\n super(options);\n if (this.dismissable === true) {\n this.dismissable = ['button', 'key', 'outside'];\n }\n else if (this.dismissable === false) {\n this.dismissable = [];\n }\n else {\n this.dismissable = u.parseTokens(this.dismissable);\n }\n if (this.acceptLocation) {\n this.acceptLocation = new up.URLPattern(this.acceptLocation);\n }\n if (this.dismissLocation) {\n this.dismissLocation = new up.URLPattern(this.dismissLocation);\n }\n }\n callback(name) {\n let fn = this[name];\n if (fn) {\n return fn.bind(this);\n }\n }\n createElement(parentElement) {\n this.nesting ||= this._suggestVisualNesting();\n const elementAttrs = u.compactObject(u.pick(this, ['align', 'position', 'size', 'class', 'nesting']));\n this.element = this.affixPart(parentElement, null, elementAttrs);\n }\n createBackdropElement(parentElement) {\n this.backdropElement = this.affixPart(parentElement, 'backdrop');\n }\n createViewportElement(parentElement) {\n this.viewportElement = this.affixPart(parentElement, 'viewport', { 'up-viewport': '' });\n }\n createBoxElement(parentElement) {\n this.boxElement = this.affixPart(parentElement, 'box');\n }\n createContentElement(parentElement) {\n this.contentElement = this.affixPart(parentElement, 'content');\n }\n setContent(content) {\n this.contentElement.append(content);\n this.onContentSet();\n }\n onContentSet() {\n }\n createDismissElement(parentElement) {\n this.dismissElement = this.affixPart(parentElement, 'dismiss', {\n 'up-dismiss': '\":button\"',\n 'aria-label': this.dismissAriaLabel\n });\n return e.affix(this.dismissElement, 'span[aria-hidden=\"true\"]', { text: this.dismissLabel });\n }\n affixPart(parentElement, part, options = {}) {\n return e.affix(parentElement, this.selector(part), options);\n }\n static selector(part) {\n return u.compact(['up', this.mode, part]).join('-');\n }\n _suggestVisualNesting() {\n const { parent } = this;\n if (this.mode === parent.mode) {\n return 1 + parent._suggestVisualNesting();\n }\n else {\n return 0;\n }\n }\n setupHandlers() {\n super.setupHandlers();\n this.overlayFocus = new up.OverlayFocus(this);\n if (this._supportsDismissMethod('button')) {\n this.createDismissElement(this.getBoxElement());\n }\n if (this._supportsDismissMethod('outside')) {\n if (this.viewportElement) {\n up.on(this.viewportElement, 'up:click', event => {\n if (event.target === this.viewportElement) {\n this._onOutsideClicked(event, true);\n }\n });\n }\n else {\n this.unbindParentClicked = this.parent.on('up:click', (event, element) => {\n if (!up.layer.isWithinForeignOverlay(element)) {\n const originClicked = this.origin && this.origin.contains(element);\n this._onOutsideClicked(event, originClicked);\n }\n });\n }\n }\n if (this._supportsDismissMethod('key')) {\n this.unbindEscapePressed = up.event.onEscape(event => this.onEscapePressed(event));\n }\n this.registerClickCloser('up-accept', (value, closeOptions) => {\n this.accept(value, closeOptions);\n });\n this.registerClickCloser('up-dismiss', (value, closeOptions) => {\n this.dismiss(value, closeOptions);\n });\n up.migrate.registerLayerCloser?.(this);\n this._registerEventCloser(this.acceptEvent, this.accept);\n this._registerEventCloser(this.dismissEvent, this.dismiss);\n this.on('up:click', 'label[for]', (event, label) => this._onLabelClicked(event, label));\n }\n _onLabelClicked(event, label) {\n let id = label.getAttribute('for');\n let fieldSelector = up.form.fieldSelector(e.idSelector(id));\n let fieldsAnywhere = up.fragment.all(fieldSelector, { layer: 'any' });\n let fieldsInLayer = up.fragment.all(fieldSelector, { layer: this });\n if (fieldsAnywhere.length > 1 && fieldsInLayer[0] !== fieldsAnywhere[0]) {\n event.preventDefault();\n const field = fieldsInLayer[0];\n field.focus();\n if (field.matches('input[type=checkbox], input[type=radio]')) {\n field.click();\n }\n }\n }\n _onOutsideClicked(event, halt) {\n up.log.putsEvent(event);\n if (halt)\n up.event.halt(event);\n this.dismiss(':outside', { origin: event.target });\n }\n onEscapePressed(event) {\n if (this.isFront()) {\n let field = up.form.focusedField();\n if (field) {\n field.blur();\n }\n else if (this._supportsDismissMethod('key')) {\n up.event.halt(event, { log: true });\n this.dismiss(':key');\n }\n }\n }\n registerClickCloser(attribute, closeFn) {\n let selector = `[${attribute}]`;\n this.on('up:click', selector, function (event) {\n up.event.halt(event, { log: true });\n const origin = event.target.closest(selector);\n const value = e.jsonAttr(origin, attribute);\n const closeOptions = { origin };\n const parser = new up.OptionsParser(origin, closeOptions);\n parser.booleanOrString('animation');\n parser.string('easing');\n parser.number('duration');\n parser.string('confirm');\n up.error.muteUncriticalSync(() => closeFn(value, closeOptions));\n });\n }\n _registerEventCloser(eventTypes, closeFn) {\n if (!eventTypes) {\n return;\n }\n return this.on(eventTypes, event => {\n event.preventDefault();\n closeFn.call(this, event, { response: event.response });\n });\n }\n tryAcceptForLocation(options) {\n this._tryCloseForLocation(this.acceptLocation, this.accept, options);\n }\n tryDismissForLocation(options) {\n this._tryCloseForLocation(this.dismissLocation, this.dismiss, options);\n }\n _tryCloseForLocation(urlPattern, closeFn, options) {\n let location, resolution;\n if (urlPattern && (location = this.location) && (resolution = urlPattern.recognize(location))) {\n const closeValue = { ...resolution, location };\n closeFn.call(this, closeValue, options);\n }\n }\n teardownHandlers() {\n super.teardownHandlers();\n this.unbindParentClicked?.();\n this.unbindEscapePressed?.();\n this.overlayFocus.teardown();\n }\n destroyElements(options) {\n const animation = () => this.startCloseAnimation(options);\n const onFinished = () => {\n this.onElementsRemoved();\n options.onFinished?.();\n };\n const destroyOptions = { ...options, animation, onFinished, log: false };\n up.destroy(this.element, destroyOptions);\n }\n onElementsRemoved() {\n }\n _startAnimation(options = {}) {\n const boxDone = up.animate(this.getBoxElement(), options.boxAnimation, options);\n let backdropDone;\n if (this.backdrop && !up.motion.isNone(options.boxAnimation)) {\n backdropDone = up.animate(this.backdropElement, options.backdropAnimation, options);\n }\n return Promise.all([boxDone, backdropDone]);\n }\n async startOpenAnimation(options = {}) {\n await this._startAnimation({\n boxAnimation: options.animation ?? this.evalOption(this.openAnimation),\n backdropAnimation: 'fade-in',\n easing: options.easing || this.openEasing,\n duration: options.duration || this.openDuration\n });\n this.wasEverVisible = true;\n }\n startCloseAnimation(options = {}) {\n return this._startAnimation({\n boxAnimation: this.wasEverVisible && (options.animation ?? this.evalOption(this.closeAnimation)),\n backdropAnimation: this.wasEverVisible && 'fade-out',\n easing: options.easing || this.closeEasing,\n duration: options.duration || this.closeDuration\n });\n }\n accept(value = null, options = {}) {\n return this._executeCloseChange('accept', value, options);\n }\n dismiss(value = null, options = {}) {\n return this._executeCloseChange('dismiss', value, options);\n }\n _supportsDismissMethod(method) {\n return u.contains(this.dismissable, method);\n }\n _executeCloseChange(verb, value, options) {\n options = { ...options, verb, value, layer: this };\n return new up.Change.CloseLayer(options).execute();\n }\n getFirstSwappableElement() {\n return this.getContentElement().children[0];\n }\n toString() {\n return `${this.mode} overlay`;\n }\n};\n\n\n/***/ }),\n/* 51 */\n/***/ (() => {\n\nup.Layer.OverlayWithTether = class OverlayWithTether extends up.Layer.Overlay {\n createElements() {\n if (!this.origin) {\n up.fail('Missing { origin } option');\n }\n this._tether = new up.Tether({\n anchor: this.origin,\n align: this.align,\n position: this.position\n });\n this.createElement(this._tether.parent);\n this.createContentElement(this.element);\n }\n onContentSet() {\n this._tether.start(this.element);\n }\n onElementsRemoved() {\n this._tether.stop();\n }\n sync() {\n if (this.isOpen()) {\n if (this.isDetached() || this._tether.isDetached()) {\n this.dismiss(':detached', {\n animation: false,\n preventable: false\n });\n }\n else {\n this._tether.sync();\n }\n }\n }\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (() => {\n\nup.Layer.OverlayWithViewport = class OverlayWithViewport extends up.Layer.Overlay {\n static getParentElement() {\n return document.body;\n }\n createElements() {\n up.viewport.bodyShifter.raiseStack();\n this.createElement(this.constructor.getParentElement());\n if (this.backdrop) {\n this.createBackdropElement(this.element);\n }\n this.createViewportElement(this.element);\n this.createBoxElement(this.viewportElement);\n this.createContentElement(this.boxElement);\n }\n onElementsRemoved() {\n up.viewport.bodyShifter.lowerStack();\n }\n sync() {\n if (this.isDetached() && this.isOpen()) {\n this.constructor.getParentElement().appendChild(this.element);\n }\n }\n};\n\n\n/***/ }),\n/* 53 */\n/***/ (() => {\n\nvar _a;\nconst e = up.element;\nup.Layer.Root = (_a = class Root extends up.Layer {\n get element() {\n return e.root;\n }\n constructor(options) {\n super(options);\n this.setupHandlers();\n }\n getFirstSwappableElement() {\n return document.body;\n }\n static selector() {\n return 'html';\n }\n setupHandlers() {\n if (!this.element.upHandlersApplied) {\n this.element.upHandlersApplied = true;\n super.setupHandlers();\n }\n }\n sync() {\n this.setupHandlers();\n }\n accept() {\n this._cannotCloseRoot();\n }\n dismiss() {\n this._cannotCloseRoot();\n }\n _cannotCloseRoot() {\n up.fail('Cannot close the root layer');\n }\n toString() {\n return \"root layer\";\n }\n },\n _a.mode = 'root',\n _a);\n\n\n/***/ }),\n/* 54 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Modal = (_a = class Modal extends up.Layer.OverlayWithViewport {\n },\n _a.mode = 'modal',\n _a);\n\n\n/***/ }),\n/* 55 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Popup = (_a = class Popup extends up.Layer.OverlayWithTether {\n },\n _a.mode = 'popup',\n _a);\n\n\n/***/ }),\n/* 56 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Drawer = (_a = class Drawer extends up.Layer.OverlayWithViewport {\n },\n _a.mode = 'drawer',\n _a);\n\n\n/***/ }),\n/* 57 */\n/***/ (() => {\n\nvar _a;\nup.Layer.Cover = (_a = class Cover extends up.Layer.OverlayWithViewport {\n },\n _a.mode = 'cover',\n _a);\n\n\n/***/ }),\n/* 58 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.LayerLookup = class LayerLookup {\n constructor(stack, ...args) {\n this._stack = stack;\n const options = u.parseArgIntoOptions(args, 'layer');\n if (options.normalizeLayerOptions !== false) {\n up.layer.normalizeOptions(options);\n }\n this._values = u.parseTokens(options.layer);\n this._origin = options.origin;\n this._baseLayer = options.baseLayer || this._originLayer() || this._stack.current;\n if (u.isString(this._baseLayer)) {\n const recursiveOptions = { ...options, baseLayer: this._stack.current, normalizeLayerOptions: false };\n this._baseLayer = new this.constructor(this._stack, this._baseLayer, recursiveOptions).first();\n }\n }\n _originLayer() {\n if (this._origin) {\n return this._forElement(this._origin);\n }\n }\n first() {\n return this.all()[0];\n }\n all() {\n let results = u.flatMap(this._values, value => this._resolveValue(value));\n results = u.compact(results);\n results = u.uniq(results);\n return results;\n }\n _forElement(element) {\n element = e.get(element);\n return u.find(this._stack.reversed(), layer => layer.contains(element));\n }\n _forIndex(value) {\n return this._stack.at(value);\n }\n _resolveValue(value) {\n if (value instanceof up.Layer) {\n return value;\n }\n if (u.isNumber(value)) {\n return this._forIndex(value);\n }\n if (/^\\d+$/.test(value)) {\n return this._forIndex(Number(value));\n }\n if (u.isElementish(value)) {\n return this._forElement(value);\n }\n switch (value) {\n case 'any':\n return [this._baseLayer, ...this._stack.reversed()];\n case 'current':\n return this._baseLayer;\n case 'closest':\n return this._stack.selfAndAncestorsOf(this._baseLayer);\n case 'parent':\n return this._baseLayer.parent;\n case 'ancestor':\n case 'ancestors':\n return this._baseLayer.ancestors;\n case 'child':\n return this._baseLayer.child;\n case 'descendant':\n case 'descendants':\n return this._baseLayer.descendants;\n case 'subtree':\n return this._baseLayer.subtree;\n case 'new':\n return 'new';\n case 'root':\n return this._stack.root;\n case 'overlay':\n case 'overlays':\n return u.reverse(this._stack.overlays);\n case 'front':\n return this._stack.front;\n case 'origin':\n return this._originLayer();\n default:\n return up.fail(\"Unknown { layer } option: %o\", value);\n }\n }\n};\n\n\n/***/ }),\n/* 59 */\n/***/ (() => {\n\nconst u = up.util;\nup.LayerStack = class LayerStack {\n constructor() {\n this._currentOverrides = [];\n this.layers = [this._buildRoot()];\n }\n _buildRoot() {\n return up.layer.build({ mode: 'root', stack: this });\n }\n remove(layer) {\n u.remove(this.layers, layer);\n }\n peel(layer, options) {\n const descendants = u.reverse(layer.descendants);\n const dismissOptions = { ...options, preventable: false };\n for (let descendant of descendants) {\n descendant.dismiss(':peel', dismissOptions);\n }\n }\n reset() {\n this.peel(this.root, { animation: false });\n this._currentOverrides = [];\n this.root.reset();\n }\n isOpen(layer) {\n return u.contains(this.layers, layer);\n }\n isClosed(layer) {\n return !this.isOpen(layer);\n }\n parentOf(layer) {\n return this.layers[layer.index - 1];\n }\n childOf(layer) {\n return this.layers[layer.index + 1];\n }\n ancestorsOf(layer) {\n return u.reverse(this.layers.slice(0, layer.index));\n }\n selfAndAncestorsOf(layer) {\n return [layer, ...layer.ancestors];\n }\n descendantsOf(layer) {\n return this.layers.slice(layer.index + 1);\n }\n isRoot(layer) {\n return this.root === layer;\n }\n isOverlay(layer) {\n return this.root !== layer;\n }\n isCurrent(layer) {\n return this.current === layer;\n }\n isFront(layer) {\n return this.front === layer;\n }\n get(...args) {\n return this.getAll(...args)[0];\n }\n getAll(...args) {\n return new up.LayerLookup(this, ...args).all();\n }\n sync() {\n for (let layer of this.layers) {\n layer.sync();\n }\n }\n asCurrent(layer, fn) {\n try {\n this._currentOverrides.push(layer);\n return fn();\n }\n finally {\n this._currentOverrides.pop();\n }\n }\n reversed() {\n return u.reverse(this.layers);\n }\n dismissOverlays(value = null, options = {}) {\n options.dismissable = false;\n for (let overlay of u.reverse(this.overlays)) {\n overlay.dismiss(value, options);\n }\n }\n at(index) {\n return this.layers[index];\n }\n indexOf(layer) {\n return this.layers.indexOf(layer);\n }\n get count() {\n return this.layers.length;\n }\n get root() {\n return this.layers[0];\n }\n get overlays() {\n return this.root.descendants;\n }\n get current() {\n return u.last(this._currentOverrides) || this.front;\n }\n get front() {\n return u.last(this.layers);\n }\n};\n\n\n/***/ }),\n/* 60 */\n/***/ (() => {\n\nup.LinkFeedbackURLs = class LinkFeedbackURLs {\n constructor(link) {\n const normalize = up.feedback.normalizeURL;\n this._isSafe = up.link.isSafe(link);\n if (this._isSafe) {\n const href = link.getAttribute('href');\n if (href && (href !== '#')) {\n this.href = normalize(href);\n }\n const upHREF = link.getAttribute('up-href');\n if (upHREF) {\n this._upHREF = normalize(upHREF);\n }\n const alias = link.getAttribute('up-alias');\n if (alias) {\n this._aliasPattern = new up.URLPattern(alias, normalize);\n }\n }\n }\n isCurrent(normalizedLocation) {\n return this._isSafe && !!(this.href === normalizedLocation ||\n this._upHREF === normalizedLocation ||\n this._aliasPattern?.test?.(normalizedLocation, false));\n }\n};\n\n\n/***/ }),\n/* 61 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.LinkPreloader = class LinkPreloader {\n watchLink(link) {\n if (!up.link.preloadIssue(link)) {\n this._on(link, 'mouseenter', (event) => this._considerPreload(event, true));\n this._on(link, 'mousedown touchstart', (event) => this._considerPreload(event));\n this._on(link, 'mouseleave', (event) => this._stopPreload(event));\n }\n }\n _on(link, eventTypes, callback) {\n up.on(link, eventTypes, { passive: true }, callback);\n }\n _considerPreload(event, applyDelay) {\n const link = event.target;\n if (link !== this._currentLink) {\n this.reset();\n this._currentLink = link;\n if (up.link.shouldFollowEvent(event, link)) {\n if (applyDelay) {\n this._preloadAfterDelay(event, link);\n }\n else {\n this._preloadNow(event, link);\n }\n }\n }\n }\n _stopPreload(event) {\n if (event.target === this._currentLink) {\n return this.reset();\n }\n }\n reset() {\n if (!this._currentLink) {\n return;\n }\n clearTimeout(this._timer);\n if (this._currentRequest?.background) {\n this._currentRequest.abort();\n }\n this._currentLink = undefined;\n this._currentRequest = undefined;\n }\n _preloadAfterDelay(event, link) {\n const delay = e.numberAttr(link, 'up-preload-delay') ?? up.link.config.preloadDelay;\n this._timer = u.timer(delay, () => this._preloadNow(event, link));\n }\n _preloadNow(event, link) {\n if (!link.isConnected) {\n this.reset();\n return;\n }\n const onQueued = request => { return this._currentRequest = request; };\n up.log.putsEvent(event);\n up.error.muteUncriticalRejection(up.link.preload(link, { onQueued }));\n }\n};\n\n\n/***/ }),\n/* 62 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.MotionController = class MotionController {\n constructor(name) {\n this._activeClass = `up-${name}`;\n this._selector = `.${this._activeClass}`;\n this.finishEvent = `up:${name}:finish`;\n this.finishCount = 0;\n this._clusterCount = 0;\n }\n startFunction(cluster, startMotion, memory = {}) {\n cluster = e.list(cluster);\n const mutedAnimator = () => up.error.muteUncriticalRejection(startMotion());\n memory.trackMotion = memory.trackMotion ?? up.motion.isEnabled();\n if (memory.trackMotion === false) {\n return mutedAnimator();\n }\n else {\n memory.trackMotion = false;\n this.finish(cluster);\n this._markCluster(cluster);\n let promise = this._whileForwardingFinishEvent(cluster, mutedAnimator);\n promise = promise.then(() => this._unmarkCluster(cluster));\n return promise;\n }\n }\n finish(elements) {\n this.finishCount++;\n if ((this._clusterCount === 0) || !up.motion.isEnabled()) {\n return;\n }\n elements = this._expandFinishRequest(elements);\n for (let element of elements) {\n this._finishOneElement(element);\n }\n return up.migrate.formerlyAsync?.('up.motion.finish()');\n }\n _expandFinishRequest(elements) {\n if (elements) {\n return u.flatMap(elements, el => e.list(el.closest(this._selector), el.querySelectorAll(this._selector)));\n }\n else {\n return document.querySelectorAll(this._selector);\n }\n }\n isActive(element) {\n return element.classList.contains(this._activeClass);\n }\n _finishOneElement(element) {\n this._emitFinishEvent(element);\n }\n _emitFinishEvent(element, eventAttrs = {}) {\n eventAttrs = { target: element, log: false, ...eventAttrs };\n return up.emit(this.finishEvent, eventAttrs);\n }\n _markCluster(cluster) {\n this._clusterCount++;\n this._toggleActive(cluster, true);\n }\n _unmarkCluster(cluster) {\n this._clusterCount--;\n this._toggleActive(cluster, false);\n }\n _toggleActive(cluster, isActive) {\n for (let element of cluster) {\n element.classList.toggle(this._activeClass, isActive);\n }\n }\n _whileForwardingFinishEvent(cluster, fn) {\n if (cluster.length < 2) {\n return fn();\n }\n const doForward = (event) => {\n if (!event.forwarded) {\n for (let element of cluster) {\n if (element !== event.target && this.isActive(element)) {\n this._emitFinishEvent(element, { forwarded: true });\n }\n }\n }\n };\n const unbindFinish = up.on(cluster, this.finishEvent, doForward);\n return fn().then(unbindFinish);\n }\n async reset() {\n await this.finish();\n this.finishCount = 0;\n this._clusterCount = 0;\n }\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.NonceableCallback = class NonceableCallback {\n constructor(script, nonce) {\n this.script = script;\n this.nonce = nonce;\n }\n static fromString(string) {\n let match = string.match(/^(nonce-([^\\s]+)\\s)?(.*)$/);\n return new this(match[3], match[2]);\n }\n toFunction(...argNames) {\n if (this.nonce) {\n let callbackThis = this;\n return function (...args) {\n return callbackThis._runAsNoncedFunction(this, argNames, args);\n };\n }\n else {\n return new Function(...argNames, this.script);\n }\n }\n toString() {\n return `nonce-${this.nonce} ${this.script}`;\n }\n _runAsNoncedFunction(thisArg, argNames, args) {\n let wrappedScript = `\n try {\n up.noncedEval.value = (function(${argNames.join()}) {\n ${this.script}\n }).apply(up.noncedEval.thisArg, up.noncedEval.args)\n } catch (error) {\n up.noncedEval.error = error\n }\n `;\n let script;\n try {\n up.noncedEval = { args, thisArg: thisArg };\n script = up.element.affix(document.body, 'script', { nonce: this.nonce, text: wrappedScript });\n if (up.noncedEval.error) {\n throw up.noncedEval.error;\n }\n else {\n return up.noncedEval.value;\n }\n }\n finally {\n up.noncedEval = undefined;\n if (script) {\n script.remove();\n }\n }\n }\n _allowedBy(allowedNonces) {\n return this.nonce && u.contains(allowedNonces, this.nonce);\n }\n static adoptNonces(element, allowedNonces) {\n if (!allowedNonces?.length) {\n return;\n }\n const getPageNonce = u.memoize(up.protocol.cspNonce);\n u.each(up.script.config.nonceableAttributes, (attribute) => {\n let matches = e.subtree(element, `[${attribute}^=\"nonce-\"]`);\n u.each(matches, (match) => {\n let attributeValue = match.getAttribute(attribute);\n let callback = this.fromString(attributeValue);\n let warn = (message, ...args) => up.log.warn('up.render()', `Cannot use callback [${attribute}=\"${attributeValue}\"]: ${message}`, ...args);\n if (!callback._allowedBy(allowedNonces)) {\n return warn(\"Callback's CSP nonce (%o) does not match response header (%o)\", callback.nonce, allowedNonces);\n }\n let pageNonce = getPageNonce();\n if (!pageNonce) {\n return warn(\"Current page's CSP nonce is unknown\");\n }\n callback.nonce = pageNonce;\n match.setAttribute(attribute, callback.toString());\n });\n });\n }\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.OverlayFocus = class OverlayFocus {\n constructor(layer) {\n this._layer = layer;\n this._focusElement = this._layer.getFocusElement();\n }\n moveToFront() {\n if (this._enabled) {\n return;\n }\n this._enabled = true;\n this._untrapFocus = up.on('focusin', event => this._onFocus(event));\n this._unsetAttrs = e.setTemporaryAttrs(this._focusElement, {\n 'tabindex': '0',\n 'role': 'dialog',\n 'aria-modal': 'true'\n });\n this._focusTrapBefore = e.affix(this._focusElement, 'beforebegin', 'up-focus-trap[tabindex=0]');\n this._focusTrapAfter = e.affix(this._focusElement, 'afterend', 'up-focus-trap[tabindex=0]');\n }\n moveToBack() {\n this.teardown();\n }\n teardown() {\n if (!this._enabled) {\n return;\n }\n this._enabled = false;\n this._untrapFocus();\n this._unsetAttrs();\n this._focusTrapBefore.remove();\n this._focusTrapAfter.remove();\n }\n _onFocus(event) {\n const { target } = event;\n if (this._processingFocusEvent || up.layer.isWithinForeignOverlay(target)) {\n return;\n }\n this._processingFocusEvent = true;\n if (target === this._focusTrapBefore) {\n this._focusEnd();\n }\n else if ((target === this._focusTrapAfter) || !this._layer.contains(target)) {\n this._focusStart();\n }\n this._processingFocusEvent = false;\n }\n _focusStart(focusOptions) {\n up.focus(this._focusElement, focusOptions);\n }\n _focusEnd() {\n this._focusLastDescendant(this._layer.getBoxElement()) || this._focusStart();\n }\n _focusLastDescendant(element) {\n for (let child of u.reverse(element.children)) {\n if (up.viewport.tryFocus(child) || this._focusLastDescendant(child)) {\n return true;\n }\n }\n }\n};\n\n\n/***/ }),\n/* 65 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Params = class Params {\n constructor(raw) {\n this.clear();\n this.addAll(raw);\n }\n clear() {\n this.entries = [];\n }\n [u.copy.key]() {\n return new up.Params(this);\n }\n toObject() {\n const obj = {};\n for (let entry of this.entries) {\n const { name, value } = entry;\n if (!u.isBasicObjectProperty(name)) {\n if (this._isArrayKey(name)) {\n obj[name] ||= [];\n obj[name].push(value);\n }\n else {\n obj[name] = value;\n }\n }\n }\n return obj;\n }\n toArray() {\n return this.entries;\n }\n toFormData() {\n const formData = new FormData();\n for (let entry of this.entries) {\n formData.append(entry.name, entry.value);\n }\n if (!formData.entries) {\n formData.originalArray = this.entries;\n }\n return formData;\n }\n toQuery() {\n let parts = u.map(this.entries, this._arrayEntryToQuery.bind(this));\n parts = u.compact(parts);\n return parts.join('&');\n }\n _arrayEntryToQuery(entry) {\n const { value } = entry;\n if (this._isBinaryValue(value)) {\n return;\n }\n let query = encodeURIComponent(entry.name);\n if (u.isGiven(value)) {\n query += \"=\";\n query += encodeURIComponent(value);\n }\n return query;\n }\n _isBinaryValue(value) {\n return value instanceof Blob;\n }\n hasBinaryValues() {\n const values = u.map(this.entries, 'value');\n return u.some(values, this._isBinaryValue);\n }\n toURL(base) {\n let parts = [base, this.toQuery()];\n parts = u.filter(parts, u.isPresent);\n const separator = u.contains(base, '?') ? '&' : '?';\n return parts.join(separator);\n }\n add(name, value) {\n this.entries.push({ name, value });\n }\n addAll(raw) {\n if (u.isMissing(raw)) {\n }\n else if (raw instanceof this.constructor) {\n this.entries.push(...raw.entries);\n }\n else if (u.isArray(raw)) {\n this.entries.push(...raw);\n }\n else if (u.isString(raw)) {\n this._addAllFromQuery(raw);\n }\n else if (u.isFormData(raw)) {\n this._addAllFromFormData(raw);\n }\n else if (u.isObject(raw)) {\n this._addAllFromObject(raw);\n }\n else {\n up.fail(\"Unsupport params type: %o\", raw);\n }\n }\n _addAllFromObject(object) {\n for (let key in object) {\n const value = object[key];\n const valueElements = u.isArray(value) ? value : [value];\n for (let valueElement of valueElements) {\n this.add(key, valueElement);\n }\n }\n }\n _addAllFromQuery(query) {\n for (let part of query.split('&')) {\n if (part) {\n let [name, value] = part.split('=');\n name = decodeURIComponent(name);\n if (u.isGiven(value)) {\n value = decodeURIComponent(value);\n }\n else {\n value = null;\n }\n this.add(name, value);\n }\n }\n }\n _addAllFromFormData(formData) {\n for (let value of formData.entries()) {\n this.add(...value);\n }\n }\n set(name, value) {\n this.delete(name);\n this.add(name, value);\n }\n delete(name) {\n this.entries = u.reject(this.entries, this._matchEntryFn(name));\n }\n _matchEntryFn(name) {\n return entry => entry.name === name;\n }\n get(name) {\n if (this._isArrayKey(name)) {\n return this.getAll(name);\n }\n else {\n return this.getFirst(name);\n }\n }\n getFirst(name) {\n const entry = u.find(this.entries, this._matchEntryFn(name));\n return entry?.value;\n }\n getAll(name) {\n if (this._isArrayKey(name)) {\n return this.getAll(name);\n }\n else {\n const entries = u.map(this.entries, this._matchEntryFn(name));\n return u.map(entries, 'value');\n }\n }\n _isArrayKey(key) {\n return key.endsWith('[]');\n }\n [u.isBlank.key]() {\n return this.entries.length === 0;\n }\n static fromForm(form) {\n return this.fromContainer(form);\n }\n static fromContainer(container) {\n let fields = up.form.fields(container);\n return this.fromFields(fields);\n }\n static fromFields(fields) {\n const params = new (this)();\n for (let field of u.wrapList(fields)) {\n params.addField(field);\n }\n return params;\n }\n addField(field) {\n field = e.get(field);\n let name = field.name;\n if (name && !field.disabled) {\n const { tagName } = field;\n const { type } = field;\n if (tagName === 'SELECT') {\n for (let option of field.querySelectorAll('option')) {\n if (option.selected) {\n this.add(name, option.value);\n }\n }\n }\n else if ((type === 'checkbox') || (type === 'radio')) {\n if (field.checked) {\n this.add(name, field.value);\n }\n }\n else if (type === 'file') {\n for (let file of field.files) {\n this.add(name, file);\n }\n }\n else {\n return this.add(name, field.value);\n }\n }\n }\n [u.isEqual.key](other) {\n return (this.constructor === other.constructor) && u.isEqual(this.entries, other.entries);\n }\n static fromURL(url) {\n const params = new (this)();\n const urlParts = u.parseURL(url);\n let query = urlParts.search;\n if (query) {\n query = query.replace(/^\\?/, '');\n params.addAll(query);\n }\n return params;\n }\n static stripURL(url) {\n return u.normalizeURL(url, { search: false });\n }\n static merge(...objects) {\n return objects.reduce(function (allParams, params) {\n allParams.addAll(params);\n return allParams;\n }, new up.Params());\n }\n};\n\n\n/***/ }),\n/* 66 */\n/***/ (() => {\n\nconst e = up.element;\nconst TRANSITION_DELAY = 300;\nup.ProgressBar = class ProgressBar {\n constructor() {\n this._step = 0;\n this._element = e.affix(document.body, 'up-progress-bar');\n this._element.style.transition = `width ${TRANSITION_DELAY}ms ease-out`;\n this._moveTo(0);\n up.element.paint(this._element);\n this._width = 31;\n this._nextStep();\n }\n _nextStep() {\n let diff;\n if (this._width < 80) {\n if (Math.random() < 0.15) {\n diff = 7 + (5 * Math.random());\n }\n else {\n diff = 1.5 + (0.5 * Math.random());\n }\n }\n else {\n diff = 0.13 * (100 - this._width) * Math.random();\n }\n this._moveTo(this._width + diff);\n this._step++;\n const nextStepDelay = TRANSITION_DELAY + (this._step * 40);\n this.timeout = setTimeout(this._nextStep.bind(this), nextStepDelay);\n }\n _moveTo(width) {\n this._width = width;\n this._element.style.width = `${width}vw`;\n }\n destroy() {\n clearTimeout(this.timeout);\n this._element.remove();\n }\n conclude() {\n clearTimeout(this.timeout);\n this._moveTo(100);\n setTimeout(this.destroy.bind(this), TRANSITION_DELAY);\n }\n};\n\n\n/***/ }),\n/* 67 */\n/***/ (() => {\n\nconst u = up.util;\nup.RenderOptions = (function () {\n const GLOBAL_DEFAULTS = {\n useHungry: true,\n useKeep: true,\n saveScroll: true,\n saveFocus: true,\n focus: 'keep',\n abort: 'target',\n failOptions: true,\n };\n const PRELOAD_OVERRIDES = {\n abort: false,\n confirm: false,\n feedback: false,\n cache: true,\n background: true,\n };\n const PREFLIGHT_KEYS = [\n 'url',\n 'method',\n 'origin',\n 'headers',\n 'params',\n 'cache',\n 'fallback',\n 'abort',\n 'abortable',\n 'confirm',\n 'feedback',\n 'origin',\n 'baseLayer',\n 'fail',\n 'onError',\n ];\n const SHARED_KEYS = PREFLIGHT_KEYS.concat([\n 'keep',\n 'hungry',\n 'history',\n 'source',\n 'saveScroll',\n 'navigate',\n ]);\n const CONTENT_KEYS = [\n 'url',\n 'response',\n 'content',\n 'fragment',\n 'document',\n ];\n const LATE_KEYS = [\n 'history',\n 'focus',\n 'scroll',\n ];\n function navigateDefaults(options) {\n if (options.navigate) {\n return up.fragment.config.navigateOptions;\n }\n }\n function preloadOverrides(options) {\n if (options.preload) {\n return PRELOAD_OVERRIDES;\n }\n }\n function preprocess(options) {\n up.migrate.preprocessRenderOptions?.(options);\n const defaults = u.merge(GLOBAL_DEFAULTS, navigateDefaults(options));\n return u.merge(u.omit(defaults, LATE_KEYS), { defaults }, { inputDevice: up.event.inputDevice }, options, preloadOverrides(options));\n }\n function finalize(preprocessedOptions, lateDefaults) {\n return u.merge(preprocessedOptions.defaults, lateDefaults, preprocessedOptions);\n }\n function assertContentGiven(options) {\n if (!u.some(CONTENT_KEYS, contentKey => u.isGiven(options[contentKey]))) {\n if (options.defaultToEmptyContent) {\n options.content = '';\n }\n else {\n up.fail('up.render() needs either { ' + CONTENT_KEYS.join(', ') + ' } option');\n }\n }\n }\n function failOverrides(options) {\n const overrides = {};\n for (let key in options) {\n const value = options[key];\n let unprefixed = up.fragment.successKey(key);\n if (unprefixed) {\n overrides[unprefixed] = value;\n }\n }\n return overrides;\n }\n function deriveFailOptions(preprocessedOptions) {\n if (preprocessedOptions.failOptions) {\n return {\n ...preprocessedOptions.defaults,\n ...u.pick(preprocessedOptions, SHARED_KEYS),\n ...failOverrides(preprocessedOptions),\n ...{ failPrefixForced: true }\n };\n }\n else {\n return {\n ...preprocessedOptions,\n ...failOverrides(preprocessedOptions),\n };\n }\n }\n return {\n preprocess,\n finalize,\n assertContentGiven,\n deriveFailOptions,\n };\n})();\n\n\n/***/ }),\n/* 68 */\n/***/ (() => {\n\nup.RenderResult = class RenderResult extends up.Record {\n keys() {\n return [\n 'fragments',\n 'layer',\n 'target',\n 'options',\n 'finished',\n ];\n }\n defaults() {\n return {\n fragments: [],\n };\n }\n get none() {\n return !this.fragments.length;\n }\n get fragment() {\n return this.fragments[0];\n }\n static both(main, extension, mergeFinished = true) {\n if (!extension)\n return main;\n return new this({\n target: main.target,\n layer: main.layer,\n options: main.options,\n fragments: main.fragments.concat(extension.fragments),\n finished: (mergeFinished && this.mergeFinished(main, extension))\n });\n }\n static async mergeFinished(main, extension) {\n return this.both(await main.finished, await extension.finished, false);\n }\n static buildNone() {\n return new this({\n target: ':none',\n finished: Promise.resolve(),\n });\n }\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nup.Request = (_a = class Request extends up.Record {\n keys() {\n return [\n 'method',\n 'url',\n 'hash',\n 'params',\n 'target',\n 'failTarget',\n 'headers',\n 'timeout',\n 'background',\n 'cache',\n 'expireCache',\n 'evictCache',\n 'layer',\n 'mode',\n 'context',\n 'failLayer',\n 'failMode',\n 'failContext',\n 'origin',\n 'fragments',\n 'builtAt',\n 'wrapMethod',\n 'contentType',\n 'payload',\n 'onQueued',\n 'onLoading',\n 'fail',\n 'abortable',\n 'badResponseTime',\n ];\n }\n defaults() {\n return {\n state: 'new',\n abortable: true,\n headers: {},\n timeout: up.network.config.timeout,\n builtAt: new Date(),\n };\n }\n constructor(options) {\n super(options);\n this.params = new up.Params(this.params);\n if (this.wrapMethod == null) {\n this.wrapMethod = up.network.config.wrapMethod;\n }\n this._normalize();\n if ((this.target || this.layer || this.origin) && !options.basic) {\n const layerLookupOptions = { origin: this.origin };\n this.layer = up.layer.get(this.layer, layerLookupOptions);\n this.failLayer = up.layer.get(this.failLayer, layerLookupOptions);\n this.context ||= this.layer.context || {};\n this.failContext ||= this.failLayer?.context || {};\n this.mode ||= this.layer.mode;\n this.failMode ||= this.failLayer?.mode;\n }\n this.deferred = u.newDeferred();\n this.badResponseTime ??= u.evalOption(up.network.config.badResponseTime, this);\n this._addAutoHeaders();\n }\n get xhr() {\n return this._xhr ??= new XMLHttpRequest();\n }\n get fragments() {\n if (this._fragments) {\n return this._fragments;\n }\n else if (this.target) {\n let steps = up.fragment.parseTargetSteps(this.target);\n let selectors = u.map(steps, 'selector');\n let lookupOpts = { origin: this.origin, layer: this.layer };\n return u.compact(u.map(selectors, (selector) => up.fragment.get(selector, lookupOpts)));\n }\n }\n set fragments(value) {\n this._fragments = value;\n }\n get fragment() {\n return this.fragments?.[0];\n }\n _normalize() {\n this.method = u.normalizeMethod(this.method);\n this._extractHashFromURL();\n this._transferParamsToURL();\n this.url = u.normalizeURL(this.url);\n }\n _evictExpensiveAttrs() {\n u.task(() => {\n this.layer = undefined;\n this.failLayer = undefined;\n this.origin = undefined;\n this.fragments = undefined;\n });\n }\n _extractHashFromURL() {\n let match = this.url?.match(/^([^#]*)(#.+)$/);\n if (match) {\n this.url = match[1];\n return this.hash = match[2];\n }\n }\n _transferParamsToURL() {\n if (!this.url || this.allowsPayload() || u.isBlank(this.params)) {\n return;\n }\n this.url = this.params.toURL(this.url);\n this.params.clear();\n }\n isSafe() {\n return up.network.isSafeMethod(this.method);\n }\n allowsPayload() {\n return u.methodAllowsPayload(this.method);\n }\n will302RedirectWithGET() {\n return this.isSafe() || (this.method === 'POST');\n }\n willCache() {\n return u.evalAutoOption(this.cache, up.network.config.autoCache, this);\n }\n runQueuedCallbacks() {\n u.always(this, () => this._evictExpensiveAttrs());\n this.onQueued?.(this);\n }\n load() {\n if (this.state !== 'new')\n return;\n if (this._emitLoad()) {\n this.state = 'loading';\n this._normalize();\n this.onLoading?.();\n this.expired = false;\n new up.Request.XHRRenderer(this).buildAndSend({\n onload: () => this._onXHRLoad(),\n onerror: () => this._onXHRError(),\n ontimeout: () => this._onXHRTimeout(),\n onabort: () => this._onXHRAbort()\n });\n return true;\n }\n else {\n this.abort({ reason: 'Prevented by event listener' });\n }\n }\n _emitLoad() {\n let event = this.emit('up:request:load', { log: ['Loading %s', this.description] });\n return !event.defaultPrevented;\n }\n loadPage() {\n up.network.abort();\n new up.Request.FormRenderer(this).buildAndSubmit();\n }\n _onXHRLoad() {\n const response = this._extractResponseFromXHR();\n const log = 'Loaded ' + response.description;\n this.emit('up:request:loaded', { request: response.request, response, log });\n this.respondWith(response);\n }\n _onXHRError() {\n this._setOfflineState('Network error');\n }\n _onXHRTimeout() {\n this._setOfflineState('Timeout');\n }\n _onXHRAbort() {\n this._setAbortedState();\n }\n abort({ reason } = {}) {\n if (this._setAbortedState(reason) && this._xhr) {\n this._xhr.abort();\n }\n }\n _setAbortedState(reason) {\n if (this._isSettled())\n return;\n let message = 'Aborted request to ' + this.description + (reason ? ': ' + reason : '');\n this.state = 'aborted';\n this.deferred.reject(new up.Aborted(message));\n this.emit('up:request:aborted', { log: message });\n return true;\n }\n _setOfflineState(reason) {\n if (this._isSettled())\n return;\n let message = 'Cannot load request to ' + this.description + (reason ? ': ' + reason : '');\n this.state = 'offline';\n this.emit('up:request:offline', { log: message });\n this.deferred.reject(new up.Offline(message));\n }\n respondWith(response) {\n this.response = response;\n if (this._isSettled())\n return;\n this.state = 'loaded';\n if (response.ok) {\n this.deferred.resolve(response);\n }\n else {\n this.deferred.reject(response);\n }\n }\n _isSettled() {\n return (this.state !== 'new') && (this.state !== 'loading') && (this.state !== 'tracking');\n }\n csrfHeader() {\n return up.protocol.csrfHeader();\n }\n csrfParam() {\n return up.protocol.csrfParam();\n }\n csrfToken() {\n if (!this.isSafe() && !this.isCrossOrigin()) {\n return up.protocol.csrfToken();\n }\n }\n isCrossOrigin() {\n return u.isCrossOrigin(this.url);\n }\n _extractResponseFromXHR() {\n const responseAttrs = {\n method: this.method,\n url: this.url,\n request: this,\n xhr: this.xhr,\n text: this.xhr.responseText,\n status: this.xhr.status,\n title: up.protocol.titleFromXHR(this.xhr),\n target: up.protocol.targetFromXHR(this.xhr),\n acceptLayer: up.protocol.acceptLayerFromXHR(this.xhr),\n dismissLayer: up.protocol.dismissLayerFromXHR(this.xhr),\n eventPlans: up.protocol.eventPlansFromXHR(this.xhr),\n context: up.protocol.contextFromXHR(this.xhr),\n expireCache: up.protocol.expireCacheFromXHR(this.xhr),\n evictCache: up.protocol.evictCacheFromXHR(this.xhr),\n fail: this.fail,\n };\n let methodFromResponse = up.protocol.methodFromXHR(this.xhr);\n let urlFromResponse = up.protocol.locationFromXHR(this.xhr);\n if (urlFromResponse) {\n if (!u.matchURLs(this.url, urlFromResponse)) {\n methodFromResponse ||= 'GET';\n }\n responseAttrs.url = urlFromResponse;\n }\n if (methodFromResponse) {\n responseAttrs.method = methodFromResponse;\n }\n return new up.Response(responseAttrs);\n }\n _buildEventEmitter(args) {\n return up.EventEmitter.fromEmitArgs(args, {\n layer: this.layer,\n request: this,\n origin: this.origin\n });\n }\n emit(...args) {\n return this._buildEventEmitter(args).emit();\n }\n assertEmitted(...args) {\n this._buildEventEmitter(args).assertEmitted();\n }\n get description() {\n return this.method + ' ' + this.url;\n }\n isPartOfSubtree(subtreeElements) {\n if (!this.fragments || !subtreeElements) {\n return false;\n }\n subtreeElements = u.wrapList(subtreeElements);\n return u.some(this.fragments, function (fragment) {\n return u.some(subtreeElements, (subtreeElement) => subtreeElement.contains(fragment));\n });\n }\n get age() {\n return new Date() - this.builtAt;\n }\n header(name) {\n return this.headers[name];\n }\n _addAutoHeaders() {\n for (let key of ['target', 'failTarget', 'mode', 'failMode', 'context', 'failContext']) {\n this._addAutoHeader(up.protocol.headerize(key), this[key]);\n }\n let csrfHeader, csrfToken;\n if ((csrfHeader = this.csrfHeader()) && (csrfToken = this.csrfToken())) {\n this._addAutoHeader(csrfHeader, csrfToken);\n }\n this._addAutoHeader(up.protocol.headerize('version'), up.version);\n }\n _addAutoHeader(name, value) {\n if (u.isMissing(value)) {\n return;\n }\n if (u.isOptions(value) || u.isArray(value)) {\n value = u.safeStringifyJSON(value);\n }\n this.headers[name] = value;\n }\n static tester(condition, { except } = {}) {\n let testFn;\n if (u.isFunction(condition)) {\n testFn = condition;\n }\n else if (condition instanceof this) {\n testFn = (request) => condition === request;\n }\n else if (u.isString(condition)) {\n let pattern = new up.URLPattern(condition);\n testFn = (request) => pattern.test(request.url);\n }\n else {\n testFn = (_request) => condition;\n }\n if (except) {\n return (request) => !up.cache.willHaveSameResponse(request, except) && testFn(request);\n }\n else {\n return testFn;\n }\n }\n },\n (() => {\n u.delegate(_a.prototype, ['then', 'catch', 'finally'], function () { return this.deferred; });\n })(),\n _a);\n\n\n/***/ }),\n/* 70 */\n/***/ (() => {\n\nconst u = up.util;\nup.Request.Cache = class Cache {\n constructor() {\n this.reset();\n }\n reset() {\n this._varyInfo = {};\n this._map = new Map();\n }\n _cacheKey(request) {\n let influencingHeaders = this._getPreviousInfluencingHeaders(request);\n let varyPart = u.flatMap(influencingHeaders, (headerName) => [headerName, request.header(headerName)]);\n return [request.description, ...varyPart].join(':');\n }\n _getPreviousInfluencingHeaders(request) {\n return (this._varyInfo[request.description] ||= new Set());\n }\n get(request) {\n request = this._wrap(request);\n let cacheKey = this._cacheKey(request);\n let cachedRequest = this._map.get(cacheKey);\n if (cachedRequest) {\n if (this._isUsable(cachedRequest)) {\n return cachedRequest;\n }\n else {\n this._map.delete(cacheKey);\n }\n }\n }\n get _capacity() {\n return up.network.config.cacheSize;\n }\n _isUsable(request) {\n return request.age < up.network.config.cacheEvictAge;\n }\n async put(request) {\n request = this._wrap(request);\n this._makeRoom();\n let cacheKey = this._updateCacheKey(request);\n this._map.set(cacheKey, request);\n }\n _updateCacheKey(request) {\n let oldCacheKey = this._cacheKey(request);\n let { response } = request;\n if (response) {\n this._mergePreviousHeaderNames(request, response);\n let newCacheKey = this._cacheKey(request);\n this._renameMapKey(oldCacheKey, newCacheKey);\n return newCacheKey;\n }\n else {\n return oldCacheKey;\n }\n }\n _renameMapKey(oldKey, newKey) {\n if (oldKey !== newKey && this._map.has(oldKey)) {\n this._map.set(newKey, this._map.get(oldKey));\n this._map.delete(oldKey);\n }\n }\n _mergePreviousHeaderNames(request, response) {\n let headersInfluencingResponse = response.ownInfluncingHeaders;\n if (headersInfluencingResponse.length) {\n let previousInfluencingHeaders = this._getPreviousInfluencingHeaders(request);\n for (let headerName of headersInfluencingResponse) {\n previousInfluencingHeaders.add(headerName);\n }\n }\n }\n alias(existingCachedRequest, newRequest) {\n existingCachedRequest = this.get(existingCachedRequest);\n if (!existingCachedRequest)\n return;\n newRequest = this._wrap(newRequest);\n this.track(existingCachedRequest, newRequest, { force: true });\n this.put(newRequest);\n return newRequest;\n }\n async track(existingRequest, newRequest, options = {}) {\n newRequest.trackedRequest = existingRequest;\n newRequest.state = 'tracking';\n let value = await u.always(existingRequest);\n if (value instanceof up.Response) {\n if (options.force || this._isCacheCompatible(existingRequest, newRequest)) {\n newRequest.fromCache = true;\n value = u.variant(value, { request: newRequest });\n newRequest.respondWith(value);\n u.delegate(newRequest, ['expired', 'state'], () => existingRequest);\n }\n else {\n delete newRequest.trackedRequest;\n newRequest.state = 'new';\n options.onIncompatible?.(newRequest);\n }\n }\n else {\n newRequest.state = existingRequest.state;\n newRequest.deferred.reject(value);\n }\n }\n willHaveSameResponse(existingRequest, newRequest) {\n return existingRequest === newRequest || existingRequest === newRequest.trackedRequest;\n }\n _delete(request) {\n request = this._wrap(request);\n let cacheKey = this._cacheKey(request);\n this._map.delete(cacheKey);\n }\n evict(condition = true, testerOptions) {\n this._eachMatch(condition, testerOptions, (request) => this._delete(request));\n }\n expire(condition = true, testerOptions) {\n this._eachMatch(condition, testerOptions, (request) => request.expired = true);\n }\n _makeRoom() {\n while (this._map.size >= this._capacity) {\n let oldestKey = this._map.keys().next().value;\n this._map.delete(oldestKey);\n }\n }\n _eachMatch(condition = true, testerOptions, fn) {\n let tester = up.Request.tester(condition, testerOptions);\n let results = u.filter(this._map.values(), tester);\n u.each(results, fn);\n }\n _isCacheCompatible(request1, request2) {\n return this._cacheKey(request1) === this._cacheKey(request2);\n }\n _wrap(requestOrOptions) {\n return u.wrapValue(up.Request, requestOrOptions);\n }\n};\n\n\n/***/ }),\n/* 71 */\n/***/ (() => {\n\nconst u = up.util;\nup.Request.Queue = class Queue {\n constructor() {\n this.reset();\n }\n reset() {\n this._queuedRequests = [];\n this._currentRequests = [];\n this._emittedLate = false;\n }\n get allRequests() {\n return this._currentRequests.concat(this._queuedRequests);\n }\n asap(request) {\n request.runQueuedCallbacks();\n u.always(request, responseOrError => this._onRequestSettled(request, responseOrError));\n this._scheduleSlowTimer(request);\n this._queueRequest(request);\n u.microtask(() => this._poke());\n }\n promoteToForeground(request) {\n if (request.background) {\n request.background = false;\n this._scheduleSlowTimer(request);\n }\n }\n _scheduleSlowTimer(request) {\n let timeUntilLate = Math.max(request.badResponseTime - request.age, 0);\n u.timer(timeUntilLate, () => this._checkLate());\n }\n _getMaxConcurrency() {\n return u.evalOption(up.network.config.concurrency);\n }\n _hasConcurrencyLeft() {\n const maxConcurrency = this._getMaxConcurrency();\n return (maxConcurrency === -1) || (this._currentRequests.length < maxConcurrency);\n }\n isBusy() {\n return this._currentRequests.length > 0 || this._queuedRequests.length > 0;\n }\n _queueRequest(request) {\n this._queuedRequests.push(request);\n }\n _pluckNextRequest() {\n let request = u.find(this._queuedRequests, request => !request.background);\n request ||= this._queuedRequests[0];\n return u.remove(this._queuedRequests, request);\n }\n _sendRequestNow(request) {\n if (request.load()) {\n this._currentRequests.push(request);\n }\n }\n _onRequestSettled(request, responseOrError) {\n u.remove(this._currentRequests, request) || u.remove(this._queuedRequests, request);\n if ((responseOrError instanceof up.Response) && responseOrError.ok) {\n up.network.registerAliasForRedirect(request, responseOrError);\n }\n this._checkLate();\n u.microtask(() => this._poke());\n }\n _poke() {\n let request;\n if (this._hasConcurrencyLeft() && (request = this._pluckNextRequest())) {\n return this._sendRequestNow(request);\n }\n }\n abort(...args) {\n let options = u.extractOptions(args);\n let { except, reason, logOnce } = options;\n let conditions = args[0] ?? true;\n let tester = up.Request.tester(conditions, { except });\n for (let list of [this._currentRequests, this._queuedRequests]) {\n const abortableRequests = u.filter(list, tester);\n for (let abortableRequest of abortableRequests) {\n if (logOnce) {\n up.puts(...logOnce);\n logOnce = null;\n }\n abortableRequest.abort({ reason });\n u.remove(list, abortableRequest);\n }\n }\n }\n _checkLate() {\n const currentLate = this._isLate();\n if (this._emittedLate !== currentLate) {\n this._emittedLate = currentLate;\n if (currentLate) {\n up.emit('up:network:late', { log: 'Server is slow to respond' });\n }\n else {\n up.emit('up:network:recover', { log: 'Slow requests were loaded' });\n }\n }\n }\n _isLate() {\n const allForegroundRequests = u.reject(this.allRequests, 'background');\n const timerTolerance = 1;\n return u.some(allForegroundRequests, (request) => request.age >= (request.badResponseTime - timerTolerance));\n }\n};\n\n\n/***/ }),\n/* 72 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nconst HTML_FORM_METHODS = ['GET', 'POST'];\nup.Request.FormRenderer = class FormRenderer {\n constructor(request) {\n this._request = request;\n }\n buildAndSubmit() {\n this.params = u.copy(this._request.params);\n let action = this._request.url;\n let { method } = this._request;\n const paramsFromQuery = up.Params.fromURL(action);\n this.params.addAll(paramsFromQuery);\n action = up.Params.stripURL(action);\n if (!u.contains(HTML_FORM_METHODS, method)) {\n method = up.protocol.wrapMethod(method, this.params);\n }\n this._form = e.affix(document.body, 'form.up-request-loader', { method, action });\n let contentType = this._request.contentType;\n if (contentType) {\n this._form.setAttribute('enctype', contentType);\n }\n let csrfParam, csrfToken;\n if ((csrfParam = this._request.csrfParam()) && (csrfToken = this._request.csrfToken())) {\n this.params.add(csrfParam, csrfToken);\n }\n u.each(this.params.toArray(), this._addField.bind(this));\n up.browser.submitForm(this._form);\n }\n _addField(attrs) {\n e.affix(this._form, 'input[type=hidden]', attrs);\n }\n};\n\n\n/***/ }),\n/* 73 */\n/***/ (() => {\n\nvar _a;\nconst CONTENT_TYPE_URL_ENCODED = 'application/x-www-form-urlencoded';\nconst CONTENT_TYPE_FORM_DATA = 'multipart/form-data';\nconst u = up.util;\nup.Request.XHRRenderer = (_a = class XHRRenderer {\n constructor(request) {\n this._request = request;\n }\n buildAndSend(handlers) {\n const xhr = this._request.xhr;\n this._params = u.copy(this._request.params);\n if (this._request.timeout) {\n xhr.timeout = this._request.timeout;\n }\n xhr.open(this._getMethod(), this._request.url);\n let contentType = this._getContentType();\n if (contentType) {\n xhr.setRequestHeader('Content-Type', contentType);\n }\n for (let headerName in this._request.headers) {\n let headerValue = this._request.headers[headerName];\n xhr.setRequestHeader(headerName, headerValue);\n }\n Object.assign(xhr, handlers);\n xhr.send(this._getPayload());\n }\n _getMethod() {\n let method = this._request.method;\n if (this._request.wrapMethod && !this._request.will302RedirectWithGET()) {\n method = up.protocol.wrapMethod(method, this._params);\n }\n return method;\n }\n _getContentType() {\n this._finalizePayload();\n return this._contentType;\n }\n _getPayload() {\n this._finalizePayload();\n return this._payload;\n }\n _finalizePayload() {\n this._payload = this._request.payload;\n this._contentType = this._request.contentType;\n if (!this._payload && this._request.allowsPayload()) {\n if (!this._contentType) {\n this._contentType = this._params.hasBinaryValues() ? CONTENT_TYPE_FORM_DATA : CONTENT_TYPE_URL_ENCODED;\n }\n if (this._contentType === CONTENT_TYPE_FORM_DATA) {\n this._contentType = null;\n this._payload = this._params.toFormData();\n }\n else {\n this._payload = this._params.toQuery().replace(/%20/g, '+');\n }\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _finalizePayload: true,\n _getMethod: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 74 */\n/***/ (() => {\n\nconst u = up.util;\nup.Response = class Response extends up.Record {\n keys() {\n return [\n 'method',\n 'url',\n 'text',\n 'status',\n 'request',\n 'xhr',\n 'target',\n 'title',\n 'acceptLayer',\n 'dismissLayer',\n 'eventPlans',\n 'context',\n 'expireCache',\n 'evictCache',\n 'headers',\n 'loadedAt',\n 'fail',\n ];\n }\n defaults() {\n return {\n headers: {},\n loadedAt: new Date()\n };\n }\n get ok() {\n return !u.evalOption(this.fail ?? up.network.config.fail, this);\n }\n get none() {\n return !this.text;\n }\n isCacheable() {\n return this.ok && !this.none;\n }\n header(name) {\n return this.headers[name] || this.xhr?.getResponseHeader(name);\n }\n get ownInfluncingHeaders() {\n let influencingHeaders = up.protocol.influencingHeadersFromResponse(this);\n return u.filter(influencingHeaders, (headerName) => this.request.header(headerName));\n }\n get contentType() {\n return this.header('Content-Type');\n }\n get cspNonces() {\n return up.protocol.cspNoncesFromHeader(this.header('Content-Security-Policy') || this.header('Content-Security-Policy-Report-Only'));\n }\n get lastModified() {\n let header = this.header('Last-Modified');\n if (header) {\n return new Date(header);\n }\n }\n get etag() {\n return this.header('ETag');\n }\n get json() {\n return this.parsedJSON ||= JSON.parse(this.text);\n }\n get age() {\n let now = new Date();\n return now - this.loadedAt;\n }\n get expired() {\n return this.age > up.network.config.cacheExpireAge ||\n this.request.expired;\n }\n get description() {\n return `HTTP ${this.status} response to ${this.request.description}`;\n }\n};\n\n\n/***/ }),\n/* 75 */\n/***/ (() => {\n\nvar _a;\nconst u = up.util;\nconst e = up.element;\nup.ResponseDoc = (_a = class ResponseDoc {\n constructor({ document, fragment, content, target, origin, cspNonces, match }) {\n if (document) {\n this._parseDocument(document);\n }\n else if (fragment) {\n this._parseFragment(fragment);\n }\n else {\n this._parseContent(content || '', target);\n }\n this._cspNonces = cspNonces;\n if (origin) {\n let originSelector = up.fragment.tryToTarget(origin);\n if (originSelector) {\n this._rediscoveredOrigin = this.select(originSelector);\n }\n }\n this._match = match;\n }\n _parseDocument(document) {\n document = this._parse(document, e.createBrokenDocumentFromHTML);\n this._isDocumentBroken = true;\n this._useParseResult(document);\n }\n _parseFragment(fragment) {\n fragment = this._parse(fragment, e.createFromHTML);\n this._useParseResult(fragment);\n }\n _parseContent(content, target) {\n if (!target)\n up.fail(\"must pass a { target } when passing { content }\");\n target = u.map(up.fragment.parseTargetSteps(target), 'selector').join();\n const matchingElement = e.createFromSelector(target);\n if (u.isString(content)) {\n matchingElement.innerHTML = content;\n }\n else {\n matchingElement.appendChild(content);\n }\n this._useParseResult(matchingElement);\n }\n _parse(value, parseFn) {\n if (u.isString(value)) {\n value = parseFn(value);\n }\n return value;\n }\n _useParseResult(node) {\n if (node instanceof Document) {\n this._document = node;\n }\n else {\n this._document = document.createElement('up-document');\n this._document.append(node);\n this._document.documentElement = node;\n }\n }\n rootSelector() {\n return up.fragment.toTarget(this._document.documentElement);\n }\n get title() {\n return this._fromHead(this._getTitleText);\n }\n _getHead() {\n let { head } = this._document;\n if (head && head.childNodes.length > 0) {\n return head;\n }\n }\n _fromHead(fn) {\n let head = this._getHead();\n return head && fn(head);\n }\n get metaTags() {\n return this._fromHead(up.history.findMetaTags);\n }\n get assets() {\n return this._fromHead(up.script.findAssets);\n }\n _getTitleText(head) {\n return head.querySelector('title')?.textContent;\n }\n select(selector) {\n let finder = new up.FragmentFinder({\n selector: selector,\n origin: this._rediscoveredOrigin,\n document: this._document,\n match: this._match,\n });\n return finder.find();\n }\n selectSteps(steps) {\n return steps.filter((step) => {\n return this._trySelectStep(step) || this._cannotMatchStep(step);\n });\n }\n commitSteps(steps) {\n return steps.filter((step) => this.commitElement(step.newElement));\n }\n _trySelectStep(step) {\n if (step.newElement) {\n return true;\n }\n let newElement = this.select(step.selector);\n if (!newElement) {\n return;\n }\n let { selectEvent } = step;\n if (selectEvent) {\n selectEvent.newFragment = newElement;\n selectEvent.renderOptions = step.originalRenderOptions;\n up.emit(step.oldElement, selectEvent, { callback: step.selectCallback });\n if (selectEvent.defaultPrevented) {\n return;\n }\n }\n step.newElement = newElement;\n return true;\n }\n _cannotMatchStep(step) {\n if (!step.maybe) {\n throw new up.CannotMatch();\n }\n }\n commitElement(element) {\n if (this._document.contains(element)) {\n if (!up.fragment.config.runScripts) {\n up.script.disableSubtree(element);\n }\n element.remove();\n return true;\n }\n }\n finalizeElement(element) {\n up.NonceableCallback.adoptNonces(element, this._cspNonces);\n if (this._isDocumentBroken) {\n let brokenElements = e.subtree(element, ':is(noscript,script,audio,video):not(.up-keeping, .up-keeping *)');\n u.each(brokenElements, e.fixParserDamage);\n }\n }\n },\n (() => {\n u.memoizeMethod(_a.prototype, {\n _getHead: true,\n });\n })(),\n _a);\n\n\n/***/ }),\n/* 76 */\n/***/ (() => {\n\nconst e = up.element;\nconst u = up.util;\nup.RevealMotion = class RevealMotion {\n constructor(element, options = {}) {\n this._element = element;\n this._viewport = e.get(options.viewport) || up.viewport.get(this._element);\n this._obstructionsLayer = up.layer.get(this._viewport);\n this._behavior = options.behavior ?? 'instant';\n const viewportConfig = up.viewport.config;\n this._snap = options.snap ?? options.revealSnap ?? viewportConfig.revealSnap;\n this._padding = options.padding ?? options.revealPadding ?? viewportConfig.revealPadding;\n this._top = options.top ?? options.revealTop ?? viewportConfig.revealTop;\n this._max = options.max ?? options.revealMax ?? viewportConfig.revealMax;\n this._topObstructionSelector = viewportConfig.selector('fixedTopSelectors');\n this._bottomObstructionSelector = viewportConfig.selector('fixedBottomSelectors');\n }\n start() {\n const viewportRect = this._getViewportRect(this._viewport);\n const elementRect = up.Rect.fromElement(this._element);\n if (this._max) {\n const maxPixels = u.evalOption(this._max, this._element);\n elementRect.height = Math.min(elementRect.height, maxPixels);\n }\n this._addPadding(elementRect);\n this._substractObstructions(viewportRect);\n if (viewportRect.height < 0) {\n up.fail('Viewport has no visible area');\n }\n const originalScrollTop = this._viewport.scrollTop;\n let newScrollTop = originalScrollTop;\n if (this._top || (elementRect.height > viewportRect.height)) {\n const diff = elementRect.top - viewportRect.top;\n newScrollTop += diff;\n }\n else if (elementRect.top < viewportRect.top) {\n newScrollTop -= (viewportRect.top - elementRect.top);\n }\n else if (elementRect.bottom > viewportRect.bottom) {\n newScrollTop += (elementRect.bottom - viewportRect.bottom);\n }\n else {\n }\n if (u.isNumber(this._snap) && (newScrollTop < this._snap) && (elementRect.top < (0.5 * viewportRect.height))) {\n newScrollTop = 0;\n }\n if (newScrollTop !== originalScrollTop) {\n this._viewport.scrollTo({ top: newScrollTop, behavior: this._behavior });\n }\n }\n _getViewportRect() {\n if (up.viewport.isRoot(this._viewport)) {\n return new up.Rect({\n left: 0,\n top: 0,\n width: up.viewport.rootWidth(),\n height: up.viewport.rootHeight()\n });\n }\n else {\n return up.Rect.fromElement(this._viewport);\n }\n }\n _addPadding(elementRect) {\n elementRect.top -= this._padding;\n elementRect.height += 2 * this._padding;\n }\n _selectObstructions(selector) {\n let elements = up.fragment.all(selector, { layer: this._obstructionsLayer });\n return u.filter(elements, e.isVisible);\n }\n _substractObstructions(viewportRect) {\n for (let obstruction of this._selectObstructions(this._topObstructionSelector)) {\n let obstructionRect = up.Rect.fromElement(obstruction);\n let diff = obstructionRect.bottom - viewportRect.top;\n if (diff > 0) {\n viewportRect.top += diff;\n viewportRect.height -= diff;\n }\n }\n for (let obstruction of this._selectObstructions(this._bottomObstructionSelector)) {\n let obstructionRect = up.Rect.fromElement(obstruction);\n let diff = viewportRect.bottom - obstructionRect.top;\n if (diff > 0) {\n viewportRect.height -= diff;\n }\n }\n }\n};\n\n\n/***/ }),\n/* 77 */\n/***/ (() => {\n\nconst u = up.util;\nconst CSS_HAS_SUFFIX_PATTERN = /:has\\(([^)]+)\\)$/;\nup.Selector = class Selector {\n constructor(selector, elementOrDocument, options = {}) {\n this._filters = [];\n if (!options.destroying) {\n this._filters.push(up.fragment.isNotDestroying);\n }\n let matchingInExternalDocument = elementOrDocument && !document.contains(elementOrDocument);\n let expandTargetLayer;\n if (matchingInExternalDocument || options.layer === 'any') {\n expandTargetLayer = up.layer.root;\n }\n else {\n options.layer ??= u.presence(elementOrDocument, u.isElement);\n this._layers = up.layer.getAll(options);\n if (!this._layers.length)\n throw new up.CannotMatch([\"Unknown layer: %o\", options.layer]);\n this._filters.push(match => u.some(this._layers, layer => layer.contains(match)));\n expandTargetLayer = this._layers[0];\n }\n let expandedTargets = up.fragment.expandTargets(selector, { ...options, layer: expandTargetLayer });\n this._selectors = expandedTargets.map((target) => {\n if (!up.browser.canHasSelector()) {\n target = target.replace(CSS_HAS_SUFFIX_PATTERN, (match, descendantSelector) => {\n this._filters.push(element => element.querySelector(descendantSelector));\n return '';\n });\n }\n return target || '*';\n });\n this._unionSelector = this._selectors.join() || 'match-none';\n }\n matches(element) {\n return element.matches(this._unionSelector) && this._passesFilter(element);\n }\n closest(element) {\n let parentElement;\n if (this.matches(element)) {\n return element;\n }\n else if (parentElement = element.parentElement) {\n return this.closest(parentElement);\n }\n }\n _passesFilter(element) {\n return u.every(this._filters, filter => filter(element));\n }\n descendants(root = document) {\n const results = u.flatMap(this._selectors, selector => root.querySelectorAll(selector));\n return u.filter(results, element => this._passesFilter(element));\n }\n subtree(root) {\n const results = [];\n if (!(root instanceof Document) && this.matches(root)) {\n results.push(root);\n }\n results.push(...this.descendants(root));\n return results;\n }\n};\n\n\n/***/ }),\n/* 78 */\n/***/ (() => {\n\nconst u = up.util;\nconst e = up.element;\nup.Tether = class Tether {\n constructor(options) {\n up.migrate.handleTetherOptions?.(options);\n this._anchor = options.anchor;\n this._align = options.align;\n this._position = options.position;\n this._alignAxis = (this._position === 'top') || (this._position === 'bottom') ? 'horizontal' : 'vertical';\n this._viewport = up.viewport.get(this._anchor);\n this.parent = this._viewport === e.root ? document.body : this._viewport;\n this._syncOnScroll = !this._viewport.contains(this._anchor.offsetParent);\n }\n start(element) {\n this._element = element;\n this._element.style.position = 'absolute';\n this._setOffset(0, 0);\n this.sync();\n this._changeEventSubscription('on');\n }\n stop() {\n this._changeEventSubscription('off');\n }\n _changeEventSubscription(fn) {\n let doScheduleSync = this._scheduleSync.bind(this);\n up[fn](window, 'resize', doScheduleSync);\n if (this._syncOnScroll) {\n up[fn](this._viewport, 'scroll', doScheduleSync);\n }\n }\n _scheduleSync() {\n clearTimeout(this.syncTimer);\n return this.syncTimer = u.task(this.sync.bind(this));\n }\n isDetached() {\n return !this.parent.isConnected || !this._anchor.isConnected;\n }\n sync() {\n const elementBox = this._element.getBoundingClientRect();\n const elementMargin = {\n top: e.styleNumber(this._element, 'marginTop'),\n right: e.styleNumber(this._element, 'marginRight'),\n bottom: e.styleNumber(this._element, 'marginBottom'),\n left: e.styleNumber(this._element, 'marginLeft')\n };\n const anchorBox = this._anchor.getBoundingClientRect();\n let left;\n let top;\n switch (this._alignAxis) {\n case 'horizontal': {\n switch (this._position) {\n case 'top':\n top = anchorBox.top - elementMargin.bottom - elementBox.height;\n break;\n case 'bottom':\n top = anchorBox.top + anchorBox.height + elementMargin.top;\n break;\n }\n switch (this._align) {\n case 'left':\n left = anchorBox.left + elementMargin.left;\n break;\n case 'center':\n left = anchorBox.left + (0.5 * (anchorBox.width - elementBox.width));\n break;\n case 'right':\n left = (anchorBox.left + anchorBox.width) - elementBox.width - elementMargin.right;\n break;\n }\n break;\n }\n case 'vertical': {\n switch (this._align) {\n case 'top':\n top = anchorBox.top + elementMargin.top;\n break;\n case 'center':\n top = anchorBox.top + (0.5 * (anchorBox.height - elementBox.height));\n break;\n case 'bottom':\n top = (anchorBox.top + anchorBox.height) - elementBox.height - elementMargin.bottom;\n break;\n }\n switch (this._position) {\n case 'left':\n left = anchorBox.left - elementMargin.right - elementBox.width;\n break;\n case 'right':\n left = anchorBox.left + anchorBox.width + elementMargin.left;\n break;\n }\n break;\n }\n }\n if (u.isDefined(left) || u.isDefined(top)) {\n this._moveTo(left, top);\n }\n else {\n up.fail('Invalid tether constraints: %o', this._describeConstraints());\n }\n }\n _describeConstraints() {\n return { position: this._position, align: this._align };\n }\n _moveTo(targetLeft, targetTop) {\n const elementBox = this._element.getBoundingClientRect();\n this._setOffset((targetLeft - elementBox.left) + this.offsetLeft, (targetTop - elementBox.top) + this.offsetTop);\n }\n _setOffset(left, top) {\n this.offsetLeft = left;\n this.offsetTop = top;\n e.setStyle(this._element, { left, top });\n }\n};\n\n\n/***/ }),\n/* 79 */\n/***/ (() => {\n\nconst u = up.util;\nup.URLPattern = class URLPattern {\n constructor(fullPattern, normalizeURL = u.normalizeURL) {\n this._normalizeURL = normalizeURL;\n this._groups = [];\n const positiveList = [];\n const negativeList = [];\n for (let pattern of u.parseTokens(fullPattern)) {\n if (pattern[0] === '-') {\n negativeList.push(pattern.substring(1));\n }\n else {\n positiveList.push(pattern);\n }\n }\n this._positiveRegexp = this._buildRegexp(positiveList, true);\n this._negativeRegexp = this._buildRegexp(negativeList, false);\n }\n _buildRegexp(list, capture) {\n if (!list.length) {\n return;\n }\n list = list.map((url) => {\n if (url[0] === '*') {\n url = '/' + url;\n }\n url = this._normalizeURL(url);\n url = u.escapeRegExp(url);\n return url;\n });\n let reCode = list.join('|');\n reCode = reCode.replace(/\\\\\\*/g, '.*?');\n reCode = reCode.replace(/(:|\\\\\\$)([a-z][\\w-]*)/ig, (match, type, name) => {\n if (type === '\\\\$') {\n if (capture) {\n this._groups.push({ name, cast: Number });\n }\n return '(\\\\d+)';\n }\n else {\n if (capture) {\n this._groups.push({ name, cast: String });\n }\n return '([^/?#]+)';\n }\n });\n return new RegExp('^(?:' + reCode + ')$');\n }\n test(url, doNormalize = true) {\n if (doNormalize) {\n url = this._normalizeURL(url);\n }\n return this._positiveRegexp.test(url) && !this._isExcluded(url);\n }\n recognize(url, doNormalize = true) {\n if (doNormalize) {\n url = this._normalizeURL(url);\n }\n let match = this._positiveRegexp.exec(url);\n if (match && !this._isExcluded(url)) {\n const resolution = {};\n this._groups.forEach((group, groupIndex) => {\n let value = match[groupIndex + 1];\n if (value) {\n return resolution[group.name] = group.cast(value);\n }\n });\n return resolution;\n }\n }\n _isExcluded(url) {\n return this._negativeRegexp?.test(url);\n }\n};\n\n\n/***/ }),\n/* 80 */\n/***/ (() => {\n\nup.framework = (function () {\n let readyState = 'evaling';\n function emitReset() {\n up.emit('up:framework:reset', { log: false });\n }\n function boot() {\n if (readyState !== 'configuring') {\n console.error('Unpoly has already booted');\n return;\n }\n let issue = supportIssue();\n if (!issue) {\n readyState = 'booting';\n up.emit('up:framework:boot', { log: false });\n readyState = 'booted';\n up.emit('up:framework:booted', { log: false });\n }\n else {\n console.error(\"Unpoly cannot boot: %s\", issue);\n }\n }\n function mustBootManually() {\n let unpolyScript = document.currentScript;\n if (unpolyScript?.async) {\n return true;\n }\n if (unpolyScript?.getAttribute('up-boot') === 'manual') {\n return true;\n }\n if (document.readyState === 'complete') {\n return true;\n }\n }\n function onEvaled() {\n up.emit('up:framework:evaled', { log: false });\n if (mustBootManually()) {\n console.debug('Call up.boot() after you have configured Unpoly');\n }\n else {\n document.addEventListener('DOMContentLoaded', boot);\n }\n readyState = 'configuring';\n }\n function startExtension() {\n if (readyState !== 'configuring') {\n throw new Error('Unpoly extensions must be loaded before booting');\n }\n readyState = 'evaling';\n }\n function stopExtension() {\n readyState = 'configuring';\n }\n function isSupported() {\n return !supportIssue();\n }\n function supportIssue() {\n for (let feature of ['URL', 'Proxy', 'Promise', 'DOMParser', 'FormData']) {\n if (!window[feature]) {\n return `Browser doesn't support the ${feature} API`;\n }\n }\n if (document.compatMode === 'BackCompat') {\n return 'Browser is in quirks mode (missing DOCTYPE?)';\n }\n }\n return {\n onEvaled,\n boot,\n startExtension,\n stopExtension,\n reset: emitReset,\n get evaling() { return readyState === 'evaling'; },\n get booted() { return readyState === 'booted'; },\n get beforeBoot() { return readyState !== 'booting' && readyState !== 'booted'; },\n isSupported,\n };\n})();\nup.boot = up.framework.boot;\n\n\n/***/ }),\n/* 81 */\n/***/ (() => {\n\nup.event = (function () {\n const u = up.util;\n const e = up.element;\n function reset() {\n for (let globalElement of [window, document, e.root, document.body]) {\n for (let listener of up.EventListener.allNonDefault(globalElement)) {\n listener.unbind();\n }\n }\n }\n function on(...args) {\n return buildListenerGroup(args).bind();\n }\n function off(...args) {\n return buildListenerGroup(args).unbind();\n }\n function buildListenerGroup(args, options) {\n return up.EventListenerGroup.fromBindArgs(args, options);\n }\n function buildEmitter(args) {\n return up.EventEmitter.fromEmitArgs(args);\n }\n function emit(...args) {\n return buildEmitter(args).emit();\n }\n function build(...args) {\n const props = u.extractOptions(args);\n const type = args[0] || props.type || up.fail('Expected event type to be passed as string argument or { type } property');\n const event = document.createEvent('Event');\n event.initEvent(type, true, true);\n Object.assign(event, u.omit(props, ['type', 'target']));\n return event;\n }\n function assertEmitted(...args) {\n return buildEmitter(args).assertEmitted();\n }\n function onEscape(listener) {\n return on('keydown', function (event) {\n if (event.key === 'Escape') {\n return listener(event);\n }\n });\n }\n function halt(event, options = {}) {\n if (options.log)\n up.log.putsEvent(event);\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n const keyModifiers = ['metaKey', 'shiftKey', 'ctrlKey', 'altKey'];\n function isUnmodified(event) {\n return (u.isUndefined(event.button) || (event.button === 0)) &&\n !u.some(keyModifiers, modifier => event[modifier]);\n }\n function fork(originalEvent, newType, copyKeys = []) {\n const newEvent = up.event.build(newType, u.pick(originalEvent, copyKeys));\n newEvent.originalEvent = originalEvent;\n ['stopPropagation', 'stopImmediatePropagation', 'preventDefault'].forEach(function (key) {\n const originalMethod = newEvent[key];\n return newEvent[key] = function () {\n originalEvent[key]();\n return originalMethod.call(newEvent);\n };\n });\n if (originalEvent.defaultPrevented) {\n newEvent.preventDefault();\n }\n return newEvent;\n }\n function executeEmitAttr(event, element) {\n if (!isUnmodified(event)) {\n return;\n }\n const eventType = e.attr(element, 'up-emit');\n const eventProps = e.jsonAttr(element, 'up-emit-props');\n const forkedEvent = fork(event, eventType);\n Object.assign(forkedEvent, eventProps);\n up.emit(element, forkedEvent);\n }\n on('up:click', 'a[up-emit]', executeEmitAttr);\n let inputDevices = ['unknown'];\n function getInputDevice() {\n return u.last(inputDevices);\n }\n function observeInputDevice(newModality) {\n inputDevices.push(newModality);\n setTimeout(() => inputDevices.pop());\n }\n on('keydown keyup', { capture: true }, () => observeInputDevice('key'));\n on('pointerdown pointerup', { capture: true }, () => observeInputDevice('pointer'));\n on('up:framework:reset', reset);\n return {\n on,\n off,\n build,\n emit,\n assertEmitted,\n onEscape,\n halt,\n isUnmodified,\n fork,\n keyModifiers,\n get inputDevice() { return getInputDevice(); }\n };\n})();\nup.on = up.event.on;\nup.off = up.event.off;\nup.emit = up.event.emit;\n\n\n/***/ }),\n/* 82 */\n/***/ (() => {\n\nup.protocol = (function () {\n const u = up.util;\n const e = up.element;\n const headerize = function (camel) {\n const header = camel.replace(/(^.|[A-Z])/g, char => '-' + char.toUpperCase());\n return 'X-Up' + header;\n };\n const extractHeader = function (xhr, shortHeader, parseFn = u.identity) {\n let value = xhr.getResponseHeader(headerize(shortHeader));\n if (value) {\n return parseFn(value);\n }\n };\n function targetFromXHR(xhr) {\n return extractHeader(xhr, 'target');\n }\n function parseModifyCacheValue(value) {\n if (value === 'false') {\n return false;\n }\n else {\n return value;\n }\n }\n function evictCacheFromXHR(xhr) {\n return extractHeader(xhr, 'evictCache', parseModifyCacheValue);\n }\n function expireCacheFromXHR(xhr) {\n return extractHeader(xhr, 'expireCache') || up.migrate.clearCacheFromXHR?.(xhr);\n }\n function contextFromXHR(xhr) {\n return extractHeader(xhr, 'context', JSON.parse);\n }\n function methodFromXHR(xhr) {\n return extractHeader(xhr, 'method', u.normalizeMethod);\n }\n function titleFromXHR(xhr) {\n return up.migrate.titleFromXHR?.(xhr) ?? extractHeader(xhr, 'title', JSON.parse);\n }\n function eventPlansFromXHR(xhr) {\n return extractHeader(xhr, 'events', JSON.parse);\n }\n function acceptLayerFromXHR(xhr) {\n return extractHeader(xhr, 'acceptLayer', JSON.parse);\n }\n function dismissLayerFromXHR(xhr) {\n return extractHeader(xhr, 'dismissLayer', JSON.parse);\n }\n const initialRequestMethod = u.memoize(function () {\n return u.normalizeMethod(up.browser.popCookie('_up_method'));\n });\n function locationFromXHR(xhr) {\n return extractHeader(xhr, 'location') || xhr.responseURL;\n }\n function influencingHeadersFromResponse(response) {\n let varyHeaderValue = response.header('Vary');\n return u.parseTokens(varyHeaderValue, { separator: 'comma' });\n }\n const config = new up.Config(() => ({\n methodParam: '_method',\n csrfParam() { return e.metaContent('csrf-param'); },\n csrfToken() { return e.metaContent('csrf-token'); },\n cspNonce() { return e.metaContent('csp-nonce'); },\n csrfHeader: 'X-CSRF-Token',\n maxHeaderSize: 2048,\n }));\n function csrfHeader() {\n return u.evalOption(config.csrfHeader);\n }\n function csrfParam() {\n return u.evalOption(config.csrfParam);\n }\n function csrfToken() {\n return u.evalOption(config.csrfToken);\n }\n function cspNonce() {\n return u.evalOption(config.cspNonce);\n }\n function cspNoncesFromHeader(cspHeader) {\n let nonces = [];\n if (cspHeader) {\n let parts = cspHeader.split(/\\s*;\\s*/);\n for (let part of parts) {\n if (part.indexOf('script-src') === 0) {\n let noncePattern = /'nonce-([^']+)'/g;\n let match;\n while (match = noncePattern.exec(part)) {\n nonces.push(match[1]);\n }\n }\n }\n }\n return nonces;\n }\n function wrapMethod(method, params) {\n params.add(config.methodParam, method);\n return 'POST';\n }\n return {\n config,\n locationFromXHR,\n titleFromXHR,\n targetFromXHR,\n methodFromXHR,\n acceptLayerFromXHR,\n contextFromXHR,\n dismissLayerFromXHR,\n eventPlansFromXHR,\n expireCacheFromXHR,\n evictCacheFromXHR,\n csrfHeader,\n csrfParam,\n csrfToken,\n cspNonce,\n initialRequestMethod,\n headerize,\n wrapMethod,\n cspNoncesFromHeader,\n influencingHeadersFromResponse,\n };\n})();\n\n\n/***/ }),\n/* 83 */\n/***/ (() => {\n\nup.log = (function () {\n const u = up.util;\n const config = new up.LogConfig();\n function printToStandard(...args) {\n if (config.enabled) {\n printToStream('log', ...args);\n }\n }\n const printToWarn = (...args) => printToStream('warn', ...args);\n const printToError = (...args) => printToStream('error', ...args);\n function printToStream(stream, trace, message, ...args) {\n printToStreamStyled(stream, trace, '', message, ...args);\n }\n function printToStreamStyled(stream, trace, customStyles, message, ...args) {\n if (message) {\n if (config.format) {\n console[stream](`%c${trace}%c ${message}`, 'color: #666666; padding: 1px 3px; border: 1px solid #bbbbbb; border-radius: 2px; font-size: 90%; display: inline-block;' + customStyles, '', ...args);\n }\n else {\n console[stream](`[${trace}] ${u.sprintf(message, ...args)}`);\n }\n }\n }\n function printUserEvent(event) {\n if (config.enabled) {\n event = event.originalEvent || event;\n let color = '#5566cc';\n printToStreamStyled('log', event.type, `color: white; border-color: ${color}; background-color: ${color}`, 'Interaction on %o', event.target);\n }\n }\n function printBanner() {\n if (!config.banner) {\n return;\n }\n const logo = \" __ _____ ___ ___ / /_ __\\n\" +\n `/ // / _ \\\\/ _ \\\\/ _ \\\\/ / // / ${up.version}\\n` +\n \"\\\\___/_//_/ .__/\\\\___/_/\\\\_. / \\n\" +\n \" / / / /\\n\\n\";\n let text = \"\";\n if (!up.migrate.loaded) {\n text += \"Load unpoly-migrate.js to polyfill deprecated APIs.\\n\\n\";\n }\n if (config.enabled) {\n text += \"Call `up.log.disable()` to disable logging for this session.\";\n }\n else {\n text += \"Call `up.log.enable()` to enable logging for this session.\";\n }\n const color = 'color: #777777';\n if (config.format) {\n console.log('%c' + logo + '%c' + text, 'font-family: monospace;' + color, color);\n }\n else {\n console.log(logo + text);\n }\n }\n up.on('up:framework:boot', printBanner);\n function enable() {\n config.enabled = true;\n }\n function disable() {\n config.enabled = false;\n }\n return {\n puts: printToStandard,\n putsEvent: printUserEvent,\n error: printToError,\n warn: printToWarn,\n config,\n enable,\n disable,\n };\n})();\nup.puts = up.log.puts;\nup.warn = up.log.warn;\n\n\n/***/ }),\n/* 84 */\n/***/ (() => {\n\nup.script = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n assetSelectors: [\n 'link[rel=stylesheet]',\n 'script[src]',\n '[up-asset]'\n ],\n noAssetSelectors: [\n '[up-asset=false]',\n ],\n nonceableAttributes: [\n 'up-watch',\n 'up-on-accepted',\n 'up-on-dismissed',\n 'up-on-loaded',\n 'up-on-rendered',\n 'up-on-finished',\n 'up-on-error',\n 'up-on-offline',\n ],\n scriptSelectors: [\n 'script'\n ],\n noScriptSelectors: [\n 'script[type=\"application/ld+json\"]'\n ]\n }));\n const SYSTEM_MACRO_PRIORITIES = {\n '[up-back]': -100,\n '[up-content]': -200,\n '[up-drawer]': -200,\n '[up-modal]': -200,\n '[up-cover]': -200,\n '[up-popup]': -200,\n '[up-tooltip]': -200,\n '[up-dash]': -200,\n '[up-flashes]': -200,\n '[up-expand]': -300,\n '[data-method]': -400,\n '[data-confirm]': -400,\n };\n let registeredCompilers = [];\n let registeredMacros = [];\n function registerCompiler(...args) {\n const compiler = buildCompiler(args);\n return insertCompiler(registeredCompilers, compiler);\n }\n function registerMacro(...args) {\n const macro = buildCompiler(args);\n if (up.framework.evaling) {\n macro.priority ||= detectSystemMacroPriority(macro.selector) ||\n up.fail('Unregistered priority for system macro %o', macro.selector);\n }\n return insertCompiler(registeredMacros, macro);\n }\n function detectSystemMacroPriority(macroSelector) {\n macroSelector = u.evalOption(macroSelector);\n for (let substr in SYSTEM_MACRO_PRIORITIES) {\n const priority = SYSTEM_MACRO_PRIORITIES[substr];\n if (macroSelector.indexOf(substr) >= 0) {\n return priority;\n }\n }\n }\n const parseCompilerArgs = function (args) {\n const defaults = u.extractOptions(args);\n const selector = args.shift();\n const callback = args.pop();\n const options = { ...defaults, ...u.extractOptions(args) };\n return [selector, options, callback];\n };\n function buildCompiler(args) {\n let [selector, options, callback] = parseCompilerArgs(args);\n options = u.options(options, {\n selector,\n isDefault: up.framework.evaling,\n priority: 0,\n batch: false,\n });\n return Object.assign(callback, options);\n }\n function insertCompiler(queue, newCompiler) {\n let existingCompiler;\n let index = 0;\n while ((existingCompiler = queue[index]) && (existingCompiler.priority >= newCompiler.priority)) {\n index += 1;\n }\n queue.splice(index, 0, newCompiler);\n if (up.framework.booted) {\n if (newCompiler.priority === 0) {\n for (let layer of up.layer.stack) {\n compile(layer.element, { layer, compilers: [newCompiler] });\n }\n }\n else {\n up.puts('up.compiler()', 'Compiler %s was registered after booting Unpoly. Compiler will run for future fragments only.', newCompiler.selector);\n }\n }\n return newCompiler;\n }\n function compile(fragment, options) {\n up.emit(fragment, 'up:fragment:compile', { log: false });\n let compilers = options.compilers || registeredMacros.concat(registeredCompilers);\n const pass = new up.CompilerPass(fragment, compilers, options);\n pass.run();\n }\n function registerDestructor(element, destructor) {\n let destructors = element.upDestructors;\n if (!destructors) {\n destructors = [];\n element.upDestructors = destructors;\n element.classList.add('up-can-clean');\n }\n if (u.isArray(destructor)) {\n destructors.push(...destructor);\n }\n else {\n destructors.push(destructor);\n }\n }\n function hello(element, options = {}) {\n element = up.fragment.get(element, options);\n up.puts('up.hello()', \"Compiling fragment %o\", element);\n compile(element, options);\n up.fragment.emitInserted(element);\n return element;\n }\n function clean(fragment, options = {}) {\n new up.DestructorPass(fragment, options).run();\n }\n function readData(element) {\n element = up.fragment.get(element);\n return element.upData ||= buildData(element);\n }\n function buildData(element) {\n if (!element.getAttribute) {\n return {};\n }\n let rawJSON = element.getAttribute('up-data');\n let parsedJSON;\n if (rawJSON) {\n parsedJSON = JSON.parse(rawJSON);\n if (!u.isOptions(parsedJSON)) {\n return parsedJSON;\n }\n }\n return {\n ...element.dataset,\n ...parsedJSON,\n ...element.upCompileData,\n };\n }\n function findAssets(head = document.head) {\n return head.querySelectorAll(config.selector('assetSelectors'));\n }\n function assertAssetsOK(newAssets, renderOptions) {\n let oldAssets = findAssets();\n let oldHTML = u.map(oldAssets, 'outerHTML').join();\n let newHTML = u.map(newAssets, 'outerHTML').join();\n if (oldHTML !== newHTML) {\n up.event.assertEmitted('up:assets:changed', { oldAssets, newAssets, renderOptions });\n }\n }\n function disableScript(scriptElement) {\n scriptElement.type = 'up-disabled-script';\n }\n function disableScriptsInSubtree(root) {\n let selector = config.selector('scriptSelectors');\n u.each(e.subtree(root, selector), disableScript);\n }\n function reset() {\n registeredCompilers = u.filter(registeredCompilers, 'isDefault');\n registeredMacros = u.filter(registeredMacros, 'isDefault');\n }\n up.on('up:framework:reset', reset);\n return {\n config,\n compiler: registerCompiler,\n macro: registerMacro,\n destructor: registerDestructor,\n hello,\n clean,\n data: readData,\n findAssets,\n assertAssetsOK,\n disableSubtree: disableScriptsInSubtree,\n };\n})();\nup.compiler = up.script.compiler;\nup.destructor = up.script.destructor;\nup.macro = up.script.macro;\nup.data = up.script.data;\nup.hello = up.script.hello;\n\n\n/***/ }),\n/* 85 */\n/***/ (() => {\n\nup.history = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n enabled: true,\n updateMetaTags: true,\n restoreTargets: ['body'],\n metaTagSelectors: [\n 'meta',\n 'link[rel=alternate]',\n 'link[rel=canonical]',\n 'link[rel=icon]',\n '[up-meta]',\n 'script[type=\"application/ld+json\"]',\n ],\n noMetaTagSelectors: [\n 'meta[http-equiv]',\n '[up-meta=false]',\n 'meta[name=csp-nonce]',\n ],\n }));\n let previousLocation;\n let nextPreviousLocation;\n function reset() {\n previousLocation = undefined;\n nextPreviousLocation = undefined;\n trackCurrentLocation();\n }\n const DEFAULT_NORMALIZE_OPTIONS = { hash: true };\n function normalizeURL(url, options) {\n options = u.merge(DEFAULT_NORMALIZE_OPTIONS, options);\n return u.normalizeURL(url, options);\n }\n function currentLocation(normalizeOptions) {\n return normalizeURL(location.href, normalizeOptions);\n }\n function trackCurrentLocation() {\n const url = currentLocation();\n if (nextPreviousLocation !== url) {\n previousLocation = nextPreviousLocation;\n nextPreviousLocation = url;\n }\n }\n trackCurrentLocation();\n const ADDITIONAL_NORMALIZE_OPTIONS_FOR_COMPARISON = { trailingSlash: false };\n function isLocation(url, options) {\n options = u.merge(ADDITIONAL_NORMALIZE_OPTIONS_FOR_COMPARISON, options);\n return normalizeURL(url, options) === currentLocation(options);\n }\n function replace(location, options = {}) {\n location = normalizeURL(location);\n if (manipulate('replaceState', location) && (options.event !== false)) {\n emitLocationChanged({ location, reason: 'replace', log: `Replaced state for ${location}` });\n }\n }\n function push(location) {\n location = normalizeURL(location);\n if (!isLocation(location) && manipulate('pushState', location)) {\n emitLocationChanged({ location, reason: 'push', log: `Advanced to location ${location}` });\n }\n }\n function emitLocationChanged(props) {\n let event = up.event.build('up:location:changed', props);\n up.migrate?.renamedProperty?.(event, 'url', 'location');\n up.emit(event);\n }\n function manipulate(method, url) {\n if (config.enabled) {\n const state = buildState();\n window.history[method](state, '', url);\n trackCurrentLocation();\n return true;\n }\n }\n function buildState() {\n return { up: {} };\n }\n function restoreStateOnPop(state) {\n if (!state?.up) {\n up.puts('popstate', 'Ignoring a history state not owned by Unpoly');\n return;\n }\n let location = currentLocation();\n if (up.emit('up:location:restore', { location, log: `Restoring location ${location}` }).defaultPrevented) {\n return;\n }\n up.render({\n url: location,\n target: config.restoreTargets,\n fail: false,\n history: true,\n location,\n peel: true,\n layer: 'root',\n cache: true,\n saveScroll: false,\n scroll: ['restore', 'auto'],\n saveFocus: false,\n focus: ['restore', 'auto'],\n });\n }\n function onPop(event) {\n trackCurrentLocation();\n let location = currentLocation();\n emitLocationChanged({ location, reason: 'pop', log: `Navigated to history entry ${location}` });\n up.viewport.saveFocus({ location: previousLocation });\n up.viewport.saveScroll({ location: previousLocation });\n restoreStateOnPop(event.state);\n }\n function register() {\n window.addEventListener('popstate', onPop);\n if (up.protocol.initialRequestMethod() === 'GET') {\n replace(currentLocation(), { event: false });\n }\n }\n up.on('up:framework:boot', function () {\n if ('jasmine' in window) {\n register();\n }\n else {\n setTimeout(register, 100);\n }\n });\n function findMetaTags(head = document.head) {\n return head.querySelectorAll(config.selector('metaTagSelectors'));\n }\n function updateMetaTags(newMetaTags) {\n let oldMetaTags = findMetaTags();\n for (let oldMetaTag of oldMetaTags) {\n oldMetaTag.remove();\n }\n for (let newMetaTag of newMetaTags) {\n document.head.append(newMetaTag);\n }\n }\n up.macro('a[up-back], [up-href][up-back]', function (link) {\n if (previousLocation) {\n e.setMissingAttrs(link, {\n 'up-href': previousLocation,\n 'up-scroll': 'restore'\n });\n link.removeAttribute('up-back');\n up.link.makeFollowable(link);\n }\n });\n up.on('up:framework:reset', reset);\n return {\n config,\n push,\n replace,\n get location() { return currentLocation(); },\n get previousLocation() { return previousLocation; },\n normalizeURL,\n isLocation,\n findMetaTags,\n updateMetaTags,\n };\n})();\n\n\n/***/ }),\n/* 86 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(87);\nconst u = up.util;\nconst e = up.element;\nup.fragment = (function () {\n function upTagName(element) {\n let tagName = e.tagName(element);\n if (tagName.startsWith('up-')) {\n return tagName;\n }\n }\n const config = new up.Config(() => ({\n badTargetClasses: [/^up-/],\n targetDerivers: [\n '[up-id]',\n '[id]',\n 'html',\n 'head',\n 'body',\n 'main',\n '[up-main]',\n upTagName,\n 'link[rel][type]',\n 'link[rel=preload][href]',\n 'link[rel=preconnect][href]',\n 'link[rel=prefetch][href]',\n 'link[rel]',\n 'meta[property]',\n '*[name]',\n 'form[action]',\n 'a[href]',\n '[class]',\n '[up-flashes]',\n 'form',\n ],\n verifyDerivedTarget: true,\n navigateOptions: {\n cache: 'auto',\n revalidate: 'auto',\n feedback: true,\n fallback: true,\n focus: 'auto',\n scroll: 'auto',\n history: 'auto',\n peel: true,\n },\n match: 'region',\n runScripts: true,\n autoHistoryTargets: [':main'],\n autoFocus: ['hash', 'autofocus', 'main-if-main', 'keep', 'target-if-lost'],\n autoScroll: ['hash', 'layer-if-main'],\n autoRevalidate: (response) => response.expired,\n skipResponse: defaultSkipResponse\n }));\n u.delegate(config, ['mainTargets'], () => up.layer.config.any);\n function defaultSkipResponse({ response, expiredResponse }) {\n return !response.text || response.text === expiredResponse?.text;\n }\n function sourceOf(element, options = {}) {\n element = getSmart(element, options);\n return e.closestAttr(element, 'up-source');\n }\n function timeOf(element) {\n let value = e.closestAttr(element, 'up-time');\n if (value && value !== 'false') {\n if (/^\\d+$/.test(value)) {\n value = Number(value) * 1000;\n }\n return new Date(value);\n }\n }\n function etagOf(element) {\n let value = e.closestAttr(element, 'up-etag');\n if (value && value !== 'false') {\n return value;\n }\n }\n const render = up.mockable((...args) => {\n let options = parseTargetAndOptions(args);\n return new up.RenderJob(options).execute();\n });\n const navigate = up.mockable((...args) => {\n const options = parseTargetAndOptions(args);\n return render({ ...options, navigate: true });\n });\n function emitFragmentInserted(element) {\n return up.emit(element, 'up:fragment:inserted', {\n log: ['Inserted fragment %o', element],\n });\n }\n function emitFragmentKeep(keepPlan) {\n let { oldElement, newElement: newFragment, newData, renderOptions } = keepPlan;\n const log = ['Keeping fragment %o', oldElement];\n const callback = e.callbackAttr(oldElement, 'up-on-keep', { exposedKeys: ['newFragment', 'newData'] });\n return up.emit(oldElement, 'up:fragment:keep', { newFragment, newData, renderOptions, log, callback });\n }\n function emitFragmentDestroyed(fragment, options) {\n const log = options.log ?? ['Destroyed fragment %o', fragment];\n const parent = options.parent || document;\n return up.emit(parent, 'up:fragment:destroyed', { fragment, parent, log });\n }\n function isNotDestroying(element) {\n return !element.closest('.up-destroying');\n }\n function isAlive(fragment) {\n return fragment.isConnected && isNotDestroying(fragment);\n }\n function getSmart(...args) {\n const options = u.extractOptions(args);\n const selector = args.pop();\n const root = args[0];\n if (u.isElementish(selector)) {\n return e.get(selector);\n }\n if (root) {\n return getDumb(root, selector, options);\n }\n return new up.FragmentFinder({\n selector,\n origin: options.origin,\n layer: options.layer,\n match: options.match,\n }).find();\n }\n function getDumb(...args) {\n return getAll(...args)[0];\n }\n function getAll(...args) {\n const options = u.extractOptions(args);\n let selectorString = args.pop();\n const root = args[0];\n if (u.isElement(selectorString)) {\n return [selectorString];\n }\n if (u.isList(selectorString)) {\n return selectorString;\n }\n let selector = new up.Selector(selectorString, root, options);\n return selector.descendants(root);\n }\n function getSubtree(element, selector, options = {}) {\n return new up.Selector(selector, element, options).subtree(element);\n }\n function contains(root, selectorOrElement) {\n if (u.isElement(selectorOrElement)) {\n return e.contains(root, selectorOrElement) && up.layer.get(root).contains(selectorOrElement);\n }\n else {\n return getSubtree(root, selectorOrElement).length > 0;\n }\n }\n function closest(element, selector, options) {\n return new up.Selector(selector, element, options).closest(element);\n }\n function destroy(...args) {\n const options = parseTargetAndOptions(args);\n if (options.element = getSmart(options.target, options)) {\n new up.Change.DestroyFragment(options).execute();\n }\n return up.migrate.formerlyAsync?.('up.destroy()');\n }\n function parseTargetAndOptions(args) {\n const options = u.parseArgIntoOptions(args, 'target');\n if (u.isElement(options.target)) {\n options.origin ||= options.target;\n }\n return options;\n }\n function markFragmentAsDestroying(element) {\n element.classList.add('up-destroying');\n element.setAttribute('aria-hidden', 'true');\n }\n function reload(...args) {\n const options = parseTargetAndOptions(args);\n options.target ||= ':main';\n const element = getSmart(options.target, options);\n options.url ||= sourceOf(element);\n options.headers = u.merge(options.headers, conditionalHeaders(element));\n if (options.keepData || e.booleanAttr(element, 'up-keep-data')) {\n options.data = up.data(element);\n }\n up.migrate.postprocessReloadOptions?.(options);\n return render(options);\n }\n function conditionalHeaders(element) {\n let headers = {};\n let time = timeOf(element);\n if (time) {\n headers['If-Modified-Since'] = time.toUTCString();\n }\n let etag = etagOf(element);\n if (etag) {\n headers['If-None-Match'] = etag;\n }\n return headers;\n }\n function visit(url, options) {\n return navigate({ ...options, url });\n }\n const KEY_PATTERN = /^(onFail|on|fail)?(.+)$/;\n function successKey(key) {\n let match = KEY_PATTERN.exec(key);\n if (match) {\n let [_, prefix, suffix] = match;\n switch (prefix) {\n case 'onFail':\n return 'on' + u.upperCaseFirst(suffix);\n case 'fail':\n return u.lowerCaseFirst(suffix);\n }\n }\n }\n function failKey(key) {\n let match = KEY_PATTERN.exec(key);\n if (match) {\n let [_, prefix, suffix] = match;\n switch (prefix) {\n case 'on':\n return 'onFail' + u.upperCaseFirst(suffix);\n case undefined:\n return 'fail' + u.upperCaseFirst(suffix);\n }\n }\n }\n function toTarget(element, options) {\n return u.presence(element, u.isString) || tryToTarget(element, options) || cannotTarget(element);\n }\n function isTargetable(element) {\n return !!tryToTarget(element);\n }\n function untargetableMessage(element) {\n return `Cannot derive good target selector from a <${e.tagName(element)}> element without identifying attributes. Try setting an [id] or configure up.fragment.config.targetDerivers.`;\n }\n function cannotTarget(element) {\n throw new up.CannotTarget(untargetableMessage(element));\n }\n function tryToTarget(element, options) {\n return u.findResult(config.targetDerivers, function (deriver) {\n let target = deriveTarget(element, deriver);\n if (target && isGoodTarget(target, element, options)) {\n return target;\n }\n });\n }\n function deriveTarget(element, deriver) {\n if (u.isFunction(deriver)) {\n return deriver(element);\n }\n else if (element.matches(deriver)) {\n try {\n return deriveTargetFromPattern(element, deriver);\n }\n catch (e) {\n if (e instanceof up.CannotParse) {\n return deriver;\n }\n else {\n throw e;\n }\n }\n }\n }\n function deriveTargetFromPattern(element, deriver) {\n let { includePath, excludeRaw } = up.element.parseSelector(deriver);\n if (includePath.length !== 1) {\n throw new up.CannotParse(deriver);\n }\n let { tagName, id, classNames, attributes } = includePath[0];\n let result = '';\n if (tagName === '*') {\n result += e.tagName(element);\n }\n else if (tagName) {\n result += tagName;\n }\n for (let className of classNames) {\n result += e.classSelector(className);\n }\n if (id) {\n result += e.idSelector(id);\n }\n for (let attributeName in attributes) {\n let attributeValue = attributes[attributeName] || element.getAttribute(attributeName);\n if (attributeName === 'id') {\n result += e.idSelector(attributeValue);\n }\n else if (attributeName === 'class') {\n for (let goodClass of goodClassesForTarget(element)) {\n result += e.classSelector(goodClass);\n }\n }\n else {\n result += e.attrSelector(attributeName, attributeValue);\n }\n }\n if (excludeRaw) {\n result += excludeRaw;\n }\n return result;\n }\n function isGoodTarget(target, element, options = {}) {\n return !isAlive(element) || !config.verifyDerivedTarget || up.fragment.get(target, { layer: element, ...options }) === element;\n }\n function matchesPattern(pattern, str) {\n if (u.isRegExp(pattern)) {\n return pattern.test(str);\n }\n else {\n return pattern === str;\n }\n }\n function goodClassesForTarget(element) {\n let isGood = (klass) => !u.some(config.badTargetClasses, (badTargetClass) => matchesPattern(badTargetClass, klass));\n return u.filter(element.classList, isGood);\n }\n const MAIN_PSEUDO = /:main\\b/;\n const LAYER_PSEUDO = /:layer\\b/;\n const ORIGIN_PSEUDO = /:origin\\b/;\n function containsMainPseudo(target) {\n return MAIN_PSEUDO.test(target);\n }\n function expandTargets(targets, options = {}) {\n const { layer } = options;\n if (layer !== 'new' && !(layer instanceof up.Layer)) {\n up.fail('Must pass an up.Layer as { layer } option, but got %o', layer);\n }\n targets = u.copy(u.wrapList(targets));\n const expanded = [];\n while (targets.length) {\n let target = targets.shift();\n if (target === true)\n target = ':main';\n if (containsMainPseudo(target)) {\n let mode = resolveMode(options);\n let replaced = up.layer.mainTargets(mode).map((mainTarget) => target.replace(MAIN_PSEUDO, mainTarget));\n targets.unshift(...replaced);\n }\n else if (LAYER_PSEUDO.test(target)) {\n if (layer === 'new' || layer.opening)\n continue;\n let firstSwappableTarget = toTarget(layer.getFirstSwappableElement(), options);\n targets.unshift(target.replace(LAYER_PSEUDO, firstSwappableTarget));\n }\n else if (u.isElementish(target)) {\n expanded.push(toTarget(target, options));\n }\n else if (u.isString(target)) {\n expanded.push(resolveOrigin(target, options));\n }\n }\n return u.uniq(expanded);\n }\n function resolveMode({ layer, mode }) {\n if (layer === 'new') {\n return mode || up.fail('Must pass a { mode } option together with { layer: \"new\" }');\n }\n else {\n return layer.mode;\n }\n }\n function modernResolveOrigin(target, { origin } = {}) {\n return target.replace(ORIGIN_PSEUDO, function (match) {\n if (origin) {\n return toTarget(origin);\n }\n else {\n up.fail('Missing { origin } element to resolve \"%s\" reference (found in %s)', match, target);\n }\n });\n }\n function resolveOrigin(...args) {\n return (up.migrate.resolveOrigin || modernResolveOrigin)(...args);\n }\n function splitTarget(target) {\n return u.parseTokens(target, { separator: 'comma' });\n }\n function parseTargetSteps(target, options = {}) {\n let defaultPlacement = options.defaultPlacement || 'swap';\n let defaultMaybe = options.defaultMaybe ?? false;\n let steps = [];\n let simpleSelectors = splitTarget(target);\n for (let selector of simpleSelectors) {\n if (selector === ':none')\n continue;\n let placement = defaultPlacement;\n let maybe = defaultMaybe;\n selector = selector.replace(/\\b::?(before|after)\\b/, (_match, customPlacement) => {\n placement = customPlacement;\n return '';\n });\n selector = selector.replace(/\\b:maybe\\b/, () => {\n maybe = true;\n return '';\n });\n const step = {\n ...options,\n selector,\n placement,\n maybe,\n originalRenderOptions: options,\n };\n steps.push(step);\n }\n return steps;\n }\n function hasAutoHistory(newFragments, layer) {\n let vanillaSelector = expandTargets(config.autoHistoryTargets, { layer }).join();\n for (let newFragment of newFragments) {\n if (e.subtree(newFragment, vanillaSelector).length) {\n return true;\n }\n }\n up.puts('up.render()', \"Will not auto-update history because fragment doesn't contain a selector from up.fragment.config.autoHistoryTargets\");\n return false;\n }\n function matches(element, selector, options = {}) {\n element = e.get(element);\n if (u.isElement(selector)) {\n let target = tryToTarget(selector);\n return target && element.matches(target);\n }\n else {\n return new up.Selector(selector, element, options).matches(element);\n }\n }\n function shouldRevalidate(request, response, options = {}) {\n return request.fromCache && u.evalAutoOption(options.revalidate, config.autoRevalidate, response);\n }\n function targetForSteps(steps) {\n let bestSteps = steps.filter((step) => !step.maybe || step.oldElement?.isConnected);\n let selectors = u.map(bestSteps, 'selector');\n return selectors.join(', ') || ':none';\n }\n function isContainedByRivalStep(steps, candidateStep) {\n return u.some(steps, function (rivalStep) {\n return (rivalStep !== candidateStep) &&\n ((rivalStep.placement === 'swap') || (rivalStep.placement === 'content')) &&\n rivalStep.oldElement.contains(candidateStep.oldElement);\n });\n }\n function compressNestedSteps(steps) {\n if (steps.length < 2)\n return steps;\n let compressed = u.uniqBy(steps, 'oldElement');\n compressed = u.reject(compressed, step => isContainedByRivalStep(compressed, step));\n return compressed;\n }\n function abort(...args) {\n let options = parseTargetAndOptions(args);\n let testFn;\n let { reason, newLayer } = options;\n let elements;\n if (options.target) {\n elements = getAll(options.target, options);\n testFn = (request) => request.isPartOfSubtree(elements);\n reason ||= 'Aborting requests within fragment';\n }\n else {\n let layers = up.layer.getAll(options);\n elements = u.map(layers, 'element');\n testFn = (request) => u.contains(layers, request.layer);\n reason ||= 'Aborting requests within ' + layers.join(', ');\n }\n let testFnWithAbortable = (request) => request.abortable && testFn(request);\n up.network.abort(testFnWithAbortable, { ...options, reason });\n for (let element of elements) {\n up.emit(element, 'up:fragment:aborted', { reason, newLayer, log: false });\n }\n }\n function onAborted(fragment, callback) {\n let guard = (event) => event.target.contains(fragment);\n let unsubscribe = up.on('up:fragment:aborted', { guard }, callback);\n up.destructor(fragment, unsubscribe);\n return unsubscribe;\n }\n up.on('up:framework:boot', function () {\n const { documentElement } = document;\n documentElement.setAttribute('up-source', u.normalizeURL(location.href, { hash: false }));\n up.hello(documentElement);\n if (!up.browser.canPushState()) {\n return up.warn('Cannot push history changes. Next fragment update will load in a new page.');\n }\n });\n return {\n config,\n reload,\n destroy,\n render,\n navigate,\n get: getSmart,\n getDumb,\n all: getAll,\n subtree: getSubtree,\n contains,\n closest,\n source: sourceOf,\n visit,\n markAsDestroying: markFragmentAsDestroying,\n emitInserted: emitFragmentInserted,\n emitDestroyed: emitFragmentDestroyed,\n emitKeep: emitFragmentKeep,\n successKey,\n failKey,\n expandTargets,\n resolveOrigin,\n toTarget,\n tryToTarget,\n isTargetable,\n matches,\n hasAutoHistory,\n time: timeOf,\n etag: etagOf,\n shouldRevalidate,\n abort,\n onAborted,\n splitTarget,\n parseTargetSteps,\n isAlive,\n isNotDestroying,\n targetForSteps,\n compressNestedSteps,\n containsMainPseudo,\n };\n})();\nup.reload = up.fragment.reload;\nup.destroy = up.fragment.destroy;\nup.render = up.fragment.render;\nup.navigate = up.fragment.navigate;\nup.visit = up.fragment.visit;\nu.delegate(up, ['context'], () => up.layer.current);\n\n\n/***/ }),\n/* 87 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 88 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(89);\nup.viewport = (function () {\n const u = up.util;\n const e = up.element;\n const f = up.fragment;\n const config = new up.Config(() => ({\n viewportSelectors: ['[up-viewport]', '[up-fixed]'],\n fixedTopSelectors: ['[up-fixed~=top]'],\n fixedBottomSelectors: ['[up-fixed~=bottom]'],\n anchoredRightSelectors: ['[up-anchored~=right]', '[up-fixed~=top]', '[up-fixed~=bottom]', '[up-fixed~=right]'],\n revealSnap: 200,\n revealPadding: 0,\n revealTop: false,\n revealMax() { return 0.5 * window.innerHeight; },\n autoFocusVisible({ element, inputDevice }) { return inputDevice === 'key' || up.form.isField(element); }\n }));\n const bodyShifter = new up.BodyShifter();\n up.compiler(config.selectorFn('anchoredRightSelectors'), function (element) {\n return bodyShifter.onAnchoredElementInserted(element);\n });\n function reveal(element, options) {\n options = u.options(options);\n element = f.get(element, options);\n if (!(options.layer = up.layer.get(element))) {\n up.fail('Cannot reveal a detached element');\n }\n if (options.peel) {\n options.layer.peel();\n }\n const motion = new up.RevealMotion(element, options);\n motion.start();\n return up.migrate.formerlyAsync?.('up.reveal()') || true;\n }\n function doFocus(element, { preventScroll, force, inputDevice, focusVisible } = {}) {\n if (force) {\n if (!element.hasAttribute('tabindex') && element.tabIndex === -1) {\n element.setAttribute('tabindex', '-1');\n }\n }\n inputDevice ??= up.event.inputDevice;\n focusVisible ??= 'auto';\n focusVisible = u.evalAutoOption(focusVisible, config.autoFocusVisible, { element, inputDevice });\n element.focus({\n preventScroll: true,\n focusVisible,\n });\n removeFocusClasses(element);\n element.classList.add(focusVisible ? 'up-focus-visible' : 'up-focus-hidden');\n if (!preventScroll) {\n return reveal(element);\n }\n }\n function removeFocusClasses(element) {\n element?.classList.remove('up-focus-hidden', 'up-focus-visible');\n }\n up.on('focusin', function ({ relatedTarget }) {\n removeFocusClasses(relatedTarget);\n });\n function tryFocus(element, options) {\n doFocus(element, options);\n return element === document.activeElement;\n }\n function revealHash(hash = location.hash, options) {\n let match = firstHashTarget(hash, options);\n if (match) {\n return up.reveal(match, { top: true });\n }\n }\n function allSelector() {\n return [rootSelector(), ...config.viewportSelectors].join();\n }\n function closest(target, options = {}) {\n const element = f.get(target, options);\n return element.closest(allSelector());\n }\n function getSubtree(element, options = {}) {\n element = f.get(element, options);\n return e.subtree(element, allSelector());\n }\n function getAround(element, options = {}) {\n element = f.get(element, options);\n return e.around(element, allSelector());\n }\n function getAll(options = {}) {\n return f.all(allSelector(), options);\n }\n function rootSelector() {\n return getRoot().tagName;\n }\n function getRoot() {\n return document.scrollingElement;\n }\n function rootWidth() {\n return e.root.clientWidth;\n }\n function rootHeight() {\n return e.root.clientHeight;\n }\n function isRoot(element) {\n return element === getRoot();\n }\n function rootHasReducedWidthFromScrollbar() {\n return window.innerWidth > document.documentElement.offsetWidth;\n }\n function rootOverflowElement() {\n const { body } = document;\n const html = document.documentElement;\n const element = u.find([html, body], wasChosenAsOverflowingElement);\n return element || getRoot();\n }\n function wasChosenAsOverflowingElement(element) {\n const overflowY = e.style(element, 'overflow-y');\n return overflowY === 'auto' || overflowY === 'scroll';\n }\n const scrollbarWidth = u.memoize(function () {\n const outerStyle = {\n position: 'absolute',\n top: '0',\n left: '0',\n width: '100px',\n height: '100px',\n overflowY: 'scroll'\n };\n const outer = up.element.affix(document.body, '[up-viewport]', { style: outerStyle });\n const width = outer.offsetWidth - outer.clientWidth;\n outer.remove();\n return width;\n });\n function scrollTopKey(viewport) {\n return up.fragment.tryToTarget(viewport);\n }\n function fixedElements(root = document) {\n const queryParts = ['[up-fixed]'].concat(config.fixedTopSelectors).concat(config.fixedBottomSelectors);\n return root.querySelectorAll(queryParts.join());\n }\n function saveScroll(...args) {\n const [viewports, options] = parseOptions(args);\n const location = options.location || options.layer.location;\n if (location) {\n const tops = getScrollTopsForSave(viewports);\n options.layer.lastScrollTops.set(location, tops);\n }\n }\n function getScrollTopsForSave(viewports) {\n let tops = {};\n for (let viewport of viewports) {\n let key = scrollTopKey(viewport);\n if (key) {\n tops[key] = viewport.scrollTop;\n }\n else {\n up.warn('up.viewport.saveScroll()', 'Cannot save scroll positions for untargetable viewport %o', viewport);\n }\n }\n return tops;\n }\n function restoreScroll(...args) {\n const [viewports, options] = parseOptions(args);\n const { location } = options.layer;\n const locationScrollTops = options.layer.lastScrollTops.get(location);\n if (locationScrollTops) {\n setScrollTops(viewports, locationScrollTops);\n up.puts('up.viewport.restoreScroll()', 'Restored scroll positions to %o', locationScrollTops);\n return true;\n }\n else {\n return false;\n }\n }\n function saveFocus(options = {}) {\n const layer = up.layer.get(options);\n const location = options.location || layer.location;\n if (location) {\n const focusCapsule = up.FocusCapsule.preserve(layer);\n layer.lastFocusCapsules.set(location, focusCapsule);\n }\n }\n function restoreFocus(options = {}) {\n const layer = up.layer.get(options);\n const location = options.location || layer.location;\n const locationCapsule = options.layer.lastFocusCapsules.get(location);\n if (locationCapsule && locationCapsule.restore(layer)) {\n up.puts('up.viewport.restoreFocus()', 'Restored focus to \"%s\"', locationCapsule.target);\n return true;\n }\n else {\n return false;\n }\n }\n function newStateCache() {\n return new up.FIFOCache({ capacity: 30, normalizeKey: up.history.normalizeURL });\n }\n function parseOptions(args) {\n const options = u.copy(u.extractOptions(args));\n options.layer = up.layer.get(options);\n let viewports;\n if (args[0]) {\n viewports = [closest(args[0], options)];\n }\n else if (options.around) {\n viewports = getAround(options.around, options);\n }\n else {\n viewports = getAll(options);\n }\n return [viewports, options];\n }\n function resetScroll(...args) {\n const [viewports, _options] = parseOptions(args);\n setScrollTops(viewports, {});\n }\n function setScrollTops(viewports, tops) {\n for (let viewport of viewports) {\n const key = scrollTopKey(viewport);\n viewport.scrollTop = tops[key] || 0;\n }\n }\n function absolutize(element, options = {}) {\n const viewport = closest(element);\n const viewportRect = viewport.getBoundingClientRect();\n const originalRect = element.getBoundingClientRect();\n const boundsRect = new up.Rect({\n left: originalRect.left - viewportRect.left,\n top: originalRect.top - viewportRect.top,\n width: originalRect.width,\n height: originalRect.height\n });\n options.afterMeasure?.();\n e.setStyle(element, {\n position: element.style.position === 'static' ? 'static' : 'relative',\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n width: '100%',\n height: '100%'\n });\n const bounds = e.createFromSelector('up-bounds');\n e.insertBefore(element, bounds);\n bounds.appendChild(element);\n const moveBounds = function (diffX, diffY) {\n boundsRect.left += diffX;\n boundsRect.top += diffY;\n return e.setStyle(bounds, boundsRect);\n };\n moveBounds(0, 0);\n const newElementRect = element.getBoundingClientRect();\n moveBounds(originalRect.left - newElementRect.left, originalRect.top - newElementRect.top);\n u.each(fixedElements(element), e.fixedToAbsolute);\n return {\n bounds,\n moveBounds\n };\n }\n function firstHashTarget(hash, options = {}) {\n if (hash = pureHash(hash)) {\n const selector = [\n e.attrSelector('id', hash),\n 'a' + e.attrSelector('name', hash)\n ].join();\n return f.get(selector, options);\n }\n }\n function pureHash(value) {\n return value?.replace(/^#/, '');\n }\n function focusedElementWithin(scopeElement) {\n const focusedElement = document.activeElement;\n if (up.fragment.contains(scopeElement, focusedElement)) {\n return focusedElement;\n }\n }\n const CURSOR_PROPS = ['selectionStart', 'selectionEnd', 'scrollLeft', 'scrollTop'];\n function copyCursorProps(from, to = {}) {\n for (let key of CURSOR_PROPS) {\n try {\n to[key] = from[key];\n }\n catch (error) {\n }\n }\n return to;\n }\n let userScrolled = false;\n up.on('scroll', { once: true, beforeBoot: true }, () => userScrolled = true);\n up.on('up:framework:boot', function () {\n u.task(function () {\n if (!userScrolled) {\n return revealHash();\n }\n });\n });\n up.on(window, 'hashchange', () => revealHash());\n return {\n reveal,\n revealHash,\n firstHashTarget,\n config,\n get: closest,\n subtree: getSubtree,\n around: getAround,\n get root() { return getRoot(); },\n rootWidth,\n rootHeight,\n rootHasReducedWidthFromScrollbar,\n rootOverflowElement,\n isRoot,\n scrollbarWidth,\n saveScroll,\n restoreScroll,\n resetScroll,\n saveFocus,\n restoreFocus,\n absolutize,\n focus: doFocus,\n tryFocus,\n newStateCache,\n focusedElementWithin,\n copyCursorProps,\n bodyShifter,\n };\n})();\nup.focus = up.viewport.focus;\nup.reveal = up.viewport.reveal;\n\n\n/***/ }),\n/* 89 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 90 */\n/***/ (() => {\n\nup.motion = (function () {\n const u = up.util;\n const e = up.element;\n let namedAnimations = {};\n let namedTransitions = {};\n const motionController = new up.MotionController('motion');\n const config = new up.Config(() => ({\n duration: 175,\n easing: 'ease',\n enabled: !matchMedia('(prefers-reduced-motion: reduce)').matches\n }));\n function pickDefault(registry) {\n return u.pickBy(registry, 'isDefault');\n }\n function reset() {\n motionController.reset();\n namedAnimations = pickDefault(namedAnimations);\n namedTransitions = pickDefault(namedTransitions);\n }\n function isEnabled() {\n return config.enabled;\n }\n function animate(element, animation, options) {\n element = up.fragment.get(element);\n options = u.options(options);\n let animationFn = findAnimationFn(animation);\n const willRun = willAnimate(element, animation, options);\n animationFn = up.error.guardFn(animationFn);\n if (willRun) {\n const runNow = () => animationFn(element, options);\n return motionController.startFunction(element, runNow, options);\n }\n else {\n return skipAnimate(element, animation);\n }\n }\n function willAnimate(element, animationOrTransition, options) {\n applyConfig(options);\n return isEnabled() && !isNone(animationOrTransition) && (options.duration > 0) && !e.isSingleton(element);\n }\n function skipAnimate(element, animation) {\n if (u.isOptions(animation)) {\n e.setStyle(element, animation);\n }\n return Promise.resolve();\n }\n function animateNow(element, lastFrame, options) {\n options = { ...options, finishEvent: motionController.finishEvent };\n const cssTransition = new up.CSSTransition(element, lastFrame, options);\n return cssTransition.start();\n }\n function applyConfig(options) {\n options.easing ||= config.easing;\n options.duration ||= config.duration;\n }\n function findNamedAnimation(name) {\n return namedAnimations[name] || up.fail(\"Unknown animation %o\", name);\n }\n function finish(element) {\n return motionController.finish(element);\n }\n function morph(oldElement, newElement, transitionObject, options) {\n options = u.options(options);\n applyConfig(options);\n oldElement = up.fragment.get(oldElement);\n newElement = up.fragment.get(newElement);\n let transitionFn = findTransitionFn(transitionObject);\n const willMorph = willAnimate(oldElement, transitionFn, options);\n transitionFn = up.error.guardFn(transitionFn);\n const beforeStart = u.pluckKey(options, 'beforeStart') || u.noop;\n const afterInsert = u.pluckKey(options, 'afterInsert') || u.noop;\n const beforeDetach = u.pluckKey(options, 'beforeDetach') || u.noop;\n const afterDetach = u.pluckKey(options, 'afterDetach') || u.noop;\n const scrollNew = u.pluckKey(options, 'scrollNew') || u.noop;\n beforeStart();\n if (willMorph) {\n if (motionController.isActive(oldElement) && (options.trackMotion === false)) {\n return transitionFn(oldElement, newElement, options);\n }\n up.puts('up.morph()', 'Morphing %o to %o with transition %O over %d ms', oldElement, newElement, transitionObject, options.duration);\n const viewport = up.viewport.get(oldElement);\n const scrollTopBeforeReveal = viewport.scrollTop;\n const oldRemote = up.viewport.absolutize(oldElement, {\n afterMeasure() {\n e.insertBefore(oldElement, newElement);\n afterInsert();\n }\n });\n const trackable = async function () {\n scrollNew();\n const scrollTopAfterReveal = viewport.scrollTop;\n oldRemote.moveBounds(0, scrollTopAfterReveal - scrollTopBeforeReveal);\n await transitionFn(oldElement, newElement, options);\n beforeDetach();\n oldRemote.bounds.remove();\n afterDetach();\n };\n return motionController.startFunction([oldElement, newElement], trackable, options);\n }\n else {\n beforeDetach();\n swapElementsDirectly(oldElement, newElement);\n afterInsert();\n afterDetach();\n scrollNew();\n return Promise.resolve();\n }\n }\n function findTransitionFn(object) {\n if (isNone(object)) {\n return undefined;\n }\n else if (u.isFunction(object)) {\n return object;\n }\n else if (u.isArray(object)) {\n return composeTransitionFn(...object);\n }\n else if (u.isString(object)) {\n let namedTransition;\n if (object.indexOf('/') >= 0) {\n return composeTransitionFn(...object.split('/'));\n }\n else if (namedTransition = namedTransitions[object]) {\n return findTransitionFn(namedTransition);\n }\n }\n else {\n up.fail(\"Unknown transition %o\", object);\n }\n }\n function composeTransitionFn(oldAnimation, newAnimation) {\n if (!isNone(oldAnimation) && !isNone(newAnimation)) {\n const oldAnimationFn = findAnimationFn(oldAnimation) || u.asyncNoop;\n const newAnimationFn = findAnimationFn(newAnimation) || u.asyncNoop;\n return (oldElement, newElement, options) => Promise.all([\n oldAnimationFn(oldElement, options),\n newAnimationFn(newElement, options)\n ]);\n }\n }\n function findAnimationFn(object) {\n if (isNone(object)) {\n return undefined;\n }\n else if (u.isFunction(object)) {\n return object;\n }\n else if (u.isString(object)) {\n return findNamedAnimation(object);\n }\n else if (u.isOptions(object)) {\n return (element, options) => animateNow(element, object, options);\n }\n else {\n up.fail('Unknown animation %o', object);\n }\n }\n const swapElementsDirectly = up.mockable(function (oldElement, newElement) {\n oldElement.replaceWith(newElement);\n });\n function motionOptions(element, options, parserOptions) {\n options = u.options(options);\n let parser = new up.OptionsParser(element, options, parserOptions);\n parser.booleanOrString('animation');\n parser.booleanOrString('transition');\n parser.string('easing');\n parser.number('duration');\n return options;\n }\n function registerTransition(name, transition) {\n const fn = findTransitionFn(transition);\n fn.isDefault = up.framework.evaling;\n namedTransitions[name] = fn;\n }\n function registerAnimation(name, animation) {\n const fn = findAnimationFn(animation);\n fn.isDefault = up.framework.evaling;\n namedAnimations[name] = fn;\n }\n up.on('up:framework:boot', function () {\n if (!isEnabled()) {\n up.puts('up.motion', 'Animations are disabled');\n }\n });\n function isNone(animationOrTransition) {\n return !animationOrTransition || animationOrTransition === 'none';\n }\n function registerOpacityAnimation(name, from, to) {\n registerAnimation(name, function (element, options) {\n element.style.opacity = 0;\n e.setStyle(element, { opacity: from });\n return animateNow(element, { opacity: to }, options);\n });\n }\n registerOpacityAnimation('fade-in', 0, 1);\n registerOpacityAnimation('fade-out', 1, 0);\n function translateCSS(dx, dy) {\n return { transform: `translate(${dx}px, ${dy}px)` };\n }\n function noTranslateCSS() {\n return { transform: null };\n }\n function untranslatedBox(element) {\n e.setStyle(element, noTranslateCSS());\n return element.getBoundingClientRect();\n }\n function registerMoveAnimations(direction, boxToTransform) {\n const animationToName = `move-to-${direction}`;\n const animationFromName = `move-from-${direction}`;\n registerAnimation(animationToName, function (element, options) {\n const box = untranslatedBox(element);\n const transform = boxToTransform(box);\n return animateNow(element, transform, options);\n });\n registerAnimation(animationFromName, function (element, options) {\n const box = untranslatedBox(element);\n const transform = boxToTransform(box);\n e.setStyle(element, transform);\n return animateNow(element, noTranslateCSS(), options);\n });\n }\n registerMoveAnimations('top', function (box) {\n const travelDistance = box.top + box.height;\n return translateCSS(0, -travelDistance);\n });\n registerMoveAnimations('bottom', function (box) {\n const travelDistance = up.viewport.rootHeight() - box.top;\n return translateCSS(0, travelDistance);\n });\n registerMoveAnimations('left', function (box) {\n const travelDistance = box.left + box.width;\n return translateCSS(-travelDistance, 0);\n });\n registerMoveAnimations('right', function (box) {\n const travelDistance = up.viewport.rootWidth() - box.left;\n return translateCSS(travelDistance, 0);\n });\n registerTransition('cross-fade', ['fade-out', 'fade-in']);\n registerTransition('move-left', ['move-to-left', 'move-from-right']);\n registerTransition('move-right', ['move-to-right', 'move-from-left']);\n registerTransition('move-up', ['move-to-top', 'move-from-bottom']);\n registerTransition('move-down', ['move-to-bottom', 'move-from-top']);\n up.on('up:framework:reset', reset);\n return {\n morph,\n animate,\n finish,\n finishCount() { return motionController.finishCount; },\n transition: registerTransition,\n animation: registerAnimation,\n config,\n isEnabled,\n isNone,\n willAnimate,\n swapElementsDirectly,\n motionOptions,\n };\n})();\nup.transition = up.motion.transition;\nup.animation = up.motion.animation;\nup.morph = up.motion.morph;\nup.animate = up.motion.animate;\n\n\n/***/ }),\n/* 91 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(92);\nconst u = up.util;\nup.network = (function () {\n const config = new up.Config(() => ({\n concurrency: 6,\n wrapMethod: true,\n cacheSize: 70,\n cacheExpireAge: 15 * 1000,\n cacheEvictAge: 90 * 60 * 1000,\n badResponseTime: 400,\n fail(response) { return (response.status < 200 || response.status > 299) && response.status !== 304; },\n autoCache(request) { return request.isSafe(); },\n expireCache(request, _response) { return !request.isSafe(); },\n evictCache: false,\n progressBar: true,\n timeout: 90000,\n }));\n const queue = new up.Request.Queue();\n const cache = new up.Request.Cache();\n let progressBar = null;\n function reset() {\n abortRequests();\n queue.reset();\n cache.reset();\n progressBar?.destroy();\n progressBar = null;\n }\n function makeRequest(...args) {\n const options = parseRequestOptions(args);\n const request = new up.Request(options);\n processRequest(request);\n return request;\n }\n function parseRequestOptions(args) {\n const options = u.extractOptions(args);\n if (!options.url) {\n options.url = args[0];\n }\n up.migrate.handleRequestOptions?.(options);\n return options;\n }\n function processRequest(request) {\n useCachedRequest(request) || queueRequest(request);\n }\n function useCachedRequest(newRequest) {\n let cachedRequest;\n if (newRequest.willCache() && (cachedRequest = cache.get(newRequest))) {\n up.puts('up.request()', 'Re-using previous request to %s', newRequest.description);\n if (!newRequest.background) {\n queue.promoteToForeground(cachedRequest);\n }\n cache.track(cachedRequest, newRequest, { onIncompatible: processRequest });\n return true;\n }\n }\n function queueRequest(request) {\n handleCaching(request);\n queue.asap(request);\n return true;\n }\n function handleCaching(request) {\n if (request.willCache()) {\n cache.put(request);\n request.onLoading = () => cache.put(request);\n }\n u.always(request, function (responseOrError) {\n let expireCache = responseOrError.expireCache ?? request.expireCache ?? u.evalOption(config.expireCache, request, responseOrError);\n if (expireCache) {\n cache.expire(expireCache, { except: request });\n }\n let evictCache = responseOrError.evictCache ?? request.evictCache ?? u.evalOption(config.evictCache, request, responseOrError);\n if (evictCache) {\n cache.evict(evictCache, { except: request });\n }\n if (cache.get(request)) {\n cache.put(request);\n }\n if (!responseOrError.isCacheable?.()) {\n cache.evict(request);\n }\n });\n }\n function isBusy() {\n return queue.isBusy();\n }\n function loadPage(requestsAttrs) {\n new up.Request(requestsAttrs).loadPage();\n }\n function abortRequests(...args) {\n up.migrate.preprocessAbortArgs?.(args);\n queue.abort(...args);\n }\n function registerAliasForRedirect(request, response) {\n if (request.cache && response.url && request.url !== response.url) {\n const newRequest = u.variant(request, {\n method: response.method,\n url: response.url\n });\n cache.alias(request, newRequest);\n }\n }\n function isSafeMethod(method) {\n return u.contains(['GET', 'OPTIONS', 'HEAD'], u.normalizeMethod(method));\n }\n function onLate() {\n if (u.evalOption(config.progressBar)) {\n progressBar = new up.ProgressBar();\n }\n }\n function onRecover() {\n progressBar?.conclude();\n }\n up.on('up:network:late', onLate);\n up.on('up:network:recover', onRecover);\n up.on('up:framework:reset', reset);\n return {\n request: makeRequest,\n cache,\n isBusy,\n isSafeMethod,\n config,\n abort: abortRequests,\n registerAliasForRedirect,\n queue,\n loadPage,\n };\n})();\nup.request = up.network.request;\nup.cache = up.network.cache;\n\n\n/***/ }),\n/* 92 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 93 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(94);\nconst u = up.util;\nconst e = up.element;\nup.layer = (function () {\n const LAYER_CLASSES = [\n up.Layer.Root,\n up.Layer.Modal,\n up.Layer.Popup,\n up.Layer.Drawer,\n up.Layer.Cover\n ];\n const config = new up.Config(function () {\n const newConfig = {\n mode: 'modal',\n any: {\n mainTargets: [\n \"[up-main='']\",\n 'main',\n ':layer'\n ]\n },\n root: {\n mainTargets: ['[up-main~=root]'],\n history: true\n },\n overlay: {\n mainTargets: ['[up-main~=overlay]'],\n openAnimation: 'fade-in',\n closeAnimation: 'fade-out',\n dismissLabel: '\u00D7',\n dismissAriaLabel: 'Dismiss dialog',\n dismissable: true,\n history: 'auto'\n },\n cover: {\n mainTargets: ['[up-main~=cover]']\n },\n drawer: {\n mainTargets: ['[up-main~=drawer]'],\n backdrop: true,\n position: 'left',\n size: 'medium',\n openAnimation(layer) {\n switch (layer.position) {\n case 'left': return 'move-from-left';\n case 'right': return 'move-from-right';\n }\n },\n closeAnimation(layer) {\n switch (layer.position) {\n case 'left': return 'move-to-left';\n case 'right': return 'move-to-right';\n }\n }\n },\n modal: {\n mainTargets: ['[up-main~=modal]'],\n backdrop: true,\n size: 'medium'\n },\n popup: {\n mainTargets: ['[up-main~=popup]'],\n position: 'bottom',\n size: 'medium',\n align: 'left',\n dismissable: 'outside key'\n },\n foreignOverlaySelectors: ['dialog']\n };\n for (let Class of LAYER_CLASSES) {\n newConfig[Class.mode].Class = Class;\n }\n return newConfig;\n });\n let stack = null;\n let handlers = [];\n function mainTargets(mode) {\n return u.flatMap(modeConfigs(mode), 'mainTargets');\n }\n function modeConfigs(mode) {\n if (mode === 'root') {\n return [config.root, config.any];\n }\n else {\n return [config[mode], config.overlay, config.any];\n }\n }\n function normalizeOptions(options) {\n up.migrate.handleLayerOptions?.(options);\n if (u.isGiven(options.layer)) {\n let match = String(options.layer).match(/^(new|shatter|swap)( (\\w+))?/);\n if (match) {\n options.layer = 'new';\n const openMethod = match[1];\n const shorthandMode = match[3];\n options.mode ||= shorthandMode || config.mode;\n if (openMethod === 'swap') {\n if (up.layer.isOverlay()) {\n options.baseLayer = 'parent';\n }\n }\n else if (openMethod === 'shatter') {\n options.baseLayer = 'root';\n }\n }\n }\n else {\n if (options.mode) {\n options.layer = 'new';\n }\n else if (u.isElementish(options.target)) {\n options.layer = stack.get(options.target, { normalizeLayerOptions: false });\n }\n else if (options.origin) {\n options.layer = 'origin';\n }\n else {\n options.layer = 'current';\n }\n }\n if (!options.context) {\n options.context = {};\n }\n options.baseLayer = stack.get('current', { ...options, normalizeLayerOptions: false });\n }\n function build(options, beforeNew) {\n const { mode } = options;\n const { Class } = config[mode];\n const configs = u.reverse(modeConfigs(mode));\n let handleDeprecatedConfig = up.migrate.handleLayerConfig;\n if (handleDeprecatedConfig) {\n configs.forEach(handleDeprecatedConfig);\n }\n options.openAnimation ??= u.pluckKey(options, 'animation');\n options = u.mergeDefined(...configs, { mode, stack }, options);\n if (beforeNew) {\n options = beforeNew(options);\n }\n return new Class(options);\n }\n function openCallbackAttr(link, attr) {\n return e.callbackAttr(link, attr, { exposedKeys: ['layer'] });\n }\n function closeCallbackAttr(link, attr) {\n return e.callbackAttr(link, attr, { exposedKeys: ['layer', 'value', 'response'] });\n }\n function reset() {\n stack.reset();\n handlers = u.filter(handlers, 'isDefault');\n }\n async function open(options) {\n options = u.options(options, {\n layer: 'new',\n defaultToEmptyContent: true,\n navigate: true\n });\n let result = await up.render(options);\n return result.layer;\n }\n function ask(options) {\n return new Promise(function (resolve, reject) {\n options = {\n ...options,\n onAccepted: (event) => resolve(event.value),\n onDismissed: (event) => reject(event.value)\n };\n open(options);\n });\n }\n function anySelector() {\n return u.map(LAYER_CLASSES, Class => Class.selector()).join();\n }\n function optionToString(option) {\n if (u.isString(option)) {\n return `layer \"${option}\"`;\n }\n else {\n return option.toString();\n }\n }\n function isWithinForeignOverlay(element) {\n let selector = config.selector('foreignOverlaySelectors');\n return !!(selector && element.closest(selector));\n }\n up.on('up:fragment:destroyed', function () {\n stack.sync();\n });\n up.on('up:framework:evaled', function () {\n stack = new up.LayerStack();\n });\n up.on('up:framework:reset', reset);\n const api = {\n config,\n mainTargets,\n open,\n build,\n ask,\n normalizeOptions,\n openCallbackAttr,\n closeCallbackAttr,\n anySelector,\n optionToString,\n get stack() { return stack.layers; },\n isWithinForeignOverlay\n };\n u.delegate(api, [\n 'get',\n 'getAll',\n 'root',\n 'overlays',\n 'current',\n 'front',\n 'sync',\n 'count',\n 'dismissOverlays'\n ], () => stack);\n u.delegate(api, [\n 'accept',\n 'dismiss',\n 'isRoot',\n 'isOverlay',\n 'isFront',\n 'on',\n 'off',\n 'emit',\n 'parent',\n 'history',\n 'location',\n 'mode',\n 'context',\n 'element',\n 'contains',\n 'size',\n 'affix'\n ], () => stack.current);\n return api;\n})();\n\n\n/***/ }),\n/* 94 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 95 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n\n__webpack_require__(96);\nup.link = (function () {\n const u = up.util;\n const e = up.element;\n const linkPreloader = new up.LinkPreloader();\n let lastMousedownTarget = null;\n const LINKS_WITH_LOCAL_HTML = ['a[up-content]', 'a[up-fragment]', 'a[up-document]'];\n const LINKS_WITH_REMOTE_HTML = ['a[href]', '[up-href]'];\n const ATTRIBUTES_SUGGESTING_FOLLOW = ['[up-follow]', '[up-target]', '[up-layer]', '[up-transition]', '[up-preload]', '[up-instant]', '[up-href]'];\n function combineFollowableSelectors(elementSelectors, attributeSelectors) {\n return u.flatMap(elementSelectors, elementSelector => attributeSelectors.map(attrSelector => elementSelector + attrSelector));\n }\n const config = new up.Config(() => ({\n followSelectors: combineFollowableSelectors(LINKS_WITH_REMOTE_HTML, ATTRIBUTES_SUGGESTING_FOLLOW).concat(LINKS_WITH_LOCAL_HTML),\n noFollowSelectors: ['[up-follow=false]', 'a[download]', 'a[target]', 'a[href^=\"#\"]:not([up-content]):not([up-fragment]):not([up-document])', 'a[href^=\"javascript:\"]', 'a[href^=\"mailto:\"]', e.crossOriginSelector('href'), e.crossOriginSelector('up-href')],\n instantSelectors: ['[up-instant]'],\n noInstantSelectors: ['[up-instant=false]', '[onclick]'],\n preloadSelectors: combineFollowableSelectors(LINKS_WITH_REMOTE_HTML, ['[up-preload]']),\n noPreloadSelectors: ['[up-preload=false]'],\n clickableSelectors: LINKS_WITH_LOCAL_HTML.concat(['[up-emit]', '[up-accept]', '[up-dismiss]', '[up-clickable]']),\n preloadDelay: 90,\n }));\n function isPreloadDisabled(link) {\n return !up.browser.canPushState() || !isFollowable(link) || !willCache(link);\n }\n function willCache(link) {\n const options = parseRequestOptions(link);\n if (options.url) {\n if (options.cache == null) {\n options.cache = 'auto';\n }\n options.basic = true;\n const request = new up.Request(options);\n return request.willCache();\n }\n }\n function reset() {\n lastMousedownTarget = null;\n linkPreloader.reset();\n }\n const follow = up.mockable(function (link, options) {\n return up.render(followOptions(link, options));\n });\n function parseRequestOptions(link, options, parserOptions) {\n options = u.options(options);\n const parser = new up.OptionsParser(link, options, { ...parserOptions, fail: false });\n options.url = followURL(link, options);\n options.method = followMethod(link, options);\n parser.json('headers');\n parser.json('params');\n parser.booleanOrString('cache');\n parser.booleanOrString('expireCache');\n parser.booleanOrString('evictCache');\n parser.booleanOrString('revalidate');\n parser.booleanOrString('abort');\n parser.boolean('abortable');\n parser.boolean('background');\n parser.string('contentType');\n parser.number('badResponseTime');\n parser.number('timeout');\n return options;\n }\n function followOptions(link, options, parserOptions) {\n link = up.fragment.get(link);\n options = u.options(options);\n const parser = new up.OptionsParser(link, options, { fail: true, ...parserOptions });\n parser.include(parseRequestOptions);\n parser.boolean('feedback');\n options.origin ||= link;\n parser.boolean('fail');\n parser.boolean('navigate', { default: true });\n parser.string('confirm', { attr: ['up-confirm', 'data-confirm'] });\n parser.string('target');\n parser.booleanOrString('fallback');\n parser.string('match');\n parser.string('content');\n parser.string('fragment');\n parser.string('document');\n parser.boolean('useKeep');\n parser.boolean('useHungry');\n parser.callback('onLoaded');\n parser.callback('onRendered', { mainKey: 'result' });\n parser.callback('onFinished', { mainKey: 'result' });\n parser.callback('onOffline', { mainKey: 'error' });\n parser.callback('onError', { mainKey: 'error' });\n parser.boolean('peel');\n parser.string('layer');\n parser.string('baseLayer');\n parser.json('context');\n parser.string('mode');\n parser.string('align');\n parser.string('position');\n parser.string('class');\n parser.string('size');\n parser.booleanOrString('dismissable');\n parser.parse(up.layer.openCallbackAttr, 'onOpened');\n parser.parse(up.layer.closeCallbackAttr, 'onAccepted');\n parser.parse(up.layer.closeCallbackAttr, 'onDismissed');\n parser.string('acceptEvent');\n parser.string('dismissEvent');\n parser.string('acceptLocation');\n parser.string('dismissLocation');\n parser.booleanOrString('history');\n parser.booleanOrString('focus');\n parser.boolean('saveScroll');\n parser.boolean('saveFocus');\n parser.booleanOrString('scroll');\n parser.boolean('revealTop');\n parser.number('revealMax');\n parser.number('revealPadding');\n parser.number('revealSnap');\n parser.string('scrollBehavior');\n parser.booleanOrString('history');\n parser.booleanOrString('location');\n parser.booleanOrString('title');\n parser.boolean('metaTags');\n parser.include(up.motion.motionOptions);\n if (!options.guardEvent) {\n options.guardEvent = up.event.build('up:link:follow', { log: 'Following link' });\n }\n return options;\n }\n function preload(link, options) {\n link = up.fragment.get(link);\n let issue = preloadIssue(link);\n if (issue) {\n return Promise.reject(new up.Error(issue));\n }\n const guardEvent = up.event.build('up:link:preload', { log: ['Preloading link %o', link] });\n return follow(link, {\n abortable: false,\n ...options,\n guardEvent,\n preload: true\n });\n }\n function preloadIssue(link) {\n if (!isSafe(link)) {\n return 'Will not preload an unsafe link';\n }\n }\n function followMethod(link, options = {}) {\n return u.normalizeMethod(options.method || link.getAttribute('up-method') || link.getAttribute('data-method'));\n }\n function followURL(link, options = {}) {\n const url = options.url || link.getAttribute('up-href') || link.getAttribute('href');\n if (url !== '#') {\n return url;\n }\n }\n function isFollowable(link) {\n link = up.fragment.get(link);\n return config.matches(link, 'followSelectors');\n }\n function makeFollowable(link) {\n if (!isFollowable(link)) {\n link.setAttribute('up-follow', '');\n }\n }\n function makeClickable(link) {\n if (link.matches('a[href], button')) {\n return;\n }\n e.setMissingAttrs(link, {\n tabindex: '0',\n role: 'link',\n 'up-clickable': ''\n });\n link.addEventListener('keydown', function (event) {\n if ((event.key === 'Enter') || (event.key === 'Space')) {\n return forkEventAsUpClick(event);\n }\n });\n }\n up.macro(config.selectorFn('clickableSelectors'), makeClickable);\n function shouldFollowEvent(event, link) {\n if (event.defaultPrevented) {\n return false;\n }\n const betterTargetSelector = `a, [up-href], ${up.form.fieldSelector()}`;\n const betterTarget = event.target.closest(betterTargetSelector);\n return !betterTarget || (betterTarget === link);\n }\n function isInstant(linkOrDescendant) {\n const element = linkOrDescendant.closest(config.selector('instantSelectors'));\n return element && !isInstantDisabled(element);\n }\n function isInstantDisabled(link) {\n return config.matches(link, 'noInstantSelectors') || config.matches(link, 'noFollowSelectors');\n }\n function convertClicks(layer) {\n layer.on('click', function (event, element) {\n if (!up.event.isUnmodified(event)) {\n return;\n }\n if (isInstant(element) && lastMousedownTarget) {\n up.event.halt(event);\n }\n else if (layer.wasHitByMouseEvent(event) && !didUserDragAway(event)) {\n forkEventAsUpClick(event);\n }\n return lastMousedownTarget = null;\n });\n layer.on('mousedown', function (event, element) {\n if (!up.event.isUnmodified(event)) {\n return;\n }\n lastMousedownTarget = event.target;\n if (isInstant(element)) {\n forkEventAsUpClick(event);\n }\n });\n }\n function didUserDragAway(clickEvent) {\n return lastMousedownTarget && (lastMousedownTarget !== clickEvent.target);\n }\n function forkEventAsUpClick(originalEvent) {\n let forwardedProps = ['clientX', 'clientY', 'button', ...up.event.keyModifiers];\n const newEvent = up.event.fork(originalEvent, 'up:click', forwardedProps);\n up.emit(originalEvent.target, newEvent, { log: false });\n }\n function isSafe(link) {\n const method = followMethod(link);\n return up.network.isSafeMethod(method);\n }\n up.on('up:click', config.selectorFn('followSelectors'), function (event, link) {\n if (shouldFollowEvent(event, link)) {\n up.event.halt(event, { log: true });\n up.focus(link, { preventScroll: true });\n up.error.muteUncriticalRejection(follow(link));\n }\n });\n up.macro('[up-expand]', function (area) {\n const selector = area.getAttribute('up-expand') || 'a, [up-href]';\n let childLink = e.get(area, selector);\n if (childLink) {\n const areaAttrs = e.upAttrs(childLink);\n areaAttrs['up-href'] ||= childLink.getAttribute('href');\n e.setMissingAttrs(area, areaAttrs);\n const areaClasses = e.upClasses(childLink);\n area.classList.add(...areaClasses);\n makeFollowable(area);\n }\n });\n up.compiler(config.selectorFn('preloadSelectors'), function (link) {\n if (!isPreloadDisabled(link)) {\n linkPreloader.watchLink(link);\n }\n });\n up.on('up:framework:reset', reset);\n return {\n follow,\n followOptions,\n preload,\n makeFollowable,\n makeClickable,\n isSafe,\n isFollowable,\n shouldFollowEvent,\n followMethod,\n convertClicks,\n config,\n combineFollowableSelectors,\n preloadIssue,\n };\n})();\nup.follow = up.link.follow;\n\n\n/***/ }),\n/* 96 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n/***/ }),\n/* 97 */\n/***/ (() => {\n\nup.form = (function () {\n const u = up.util;\n const e = up.element;\n const ATTRIBUTES_SUGGESTING_SUBMIT = ['[up-submit]', '[up-target]', '[up-layer]', '[up-transition]'];\n const config = new up.Config(() => ({\n groupSelectors: ['[up-form-group]', 'fieldset', 'label', 'form'],\n fieldSelectors: ['select', 'input:not([type=submit]):not([type=image])', 'button[type]:not([type=submit])', 'textarea'],\n submitSelectors: up.link.combineFollowableSelectors(['form'], ATTRIBUTES_SUGGESTING_SUBMIT),\n noSubmitSelectors: ['[up-submit=false]', '[target]', e.crossOriginSelector('action')],\n submitButtonSelectors: ['input[type=submit]', 'input[type=image]', 'button[type=submit]', 'button:not([type])'],\n watchInputEvents: ['input', 'change'],\n watchInputDelay: 0,\n watchChangeEvents: ['change'],\n }));\n function fieldSelector(suffix = '') {\n return config.fieldSelectors.map(field => field + suffix).join();\n }\n function isField(element) {\n return element.matches(fieldSelector());\n }\n function findFields(root) {\n root = e.get(root);\n let fields = e.subtree(root, fieldSelector());\n if (root.matches('form[id]')) {\n const outsideFieldSelector = fieldSelector(e.attrSelector('form', root.getAttribute('id')));\n const outsideFields = up.fragment.all(outsideFieldSelector, { layer: root });\n fields.push(...outsideFields);\n fields = u.uniq(fields);\n }\n return fields;\n }\n function findSubmitButtons(root) {\n return e.subtree(root, submitButtonSelector());\n }\n function submittingButton(form) {\n const selector = submitButtonSelector();\n const focusedElement = document.activeElement;\n if (focusedElement && focusedElement.form === form) {\n if (focusedElement.matches(selector)) {\n return focusedElement;\n }\n }\n return e.get(form, selector);\n }\n function submitButtonSelector() {\n return config.selector('submitButtonSelectors');\n }\n const submit = up.mockable((form, options) => {\n return up.render(submitOptions(form, options));\n });\n function submitOptions(form, options, parserOptions) {\n form = getForm(form);\n options = u.options(options);\n let parser = new up.OptionsParser(form, options, parserOptions);\n parser.include(destinationOptions);\n parser.string('failTarget', { default: up.fragment.tryToTarget(form) });\n parser.booleanOrString('disable');\n options.guardEvent ||= up.event.build('up:form:submit', {\n submitButton: options.submitButton,\n log: 'Submitting form',\n params: options.params\n });\n options.origin ||= up.viewport.focusedElementWithin(form) || options.submitButton || form;\n parser.include(up.link.followOptions);\n return options;\n }\n function watchOptions(field, options, parserOptions = {}) {\n options = u.options(options);\n let parser = new up.OptionsParser(field, options, { ...parserOptions, closest: true, attrPrefix: 'up-watch-' });\n parser.boolean('feedback');\n parser.booleanOrString('disable');\n parser.string('event');\n parser.number('delay');\n let config = up.form.config;\n if (options.event === 'input') {\n options.event = u.evalOption(config.watchInputEvents, field);\n options.delay ??= config.watchInputDelay;\n }\n else if (options.event === 'change') {\n options.event = u.evalOption(config.watchChangeEvents, field);\n }\n options.origin ||= field;\n return options;\n }\n function disableContainer(container) {\n let focusedElement = document.activeElement;\n let focusFallback;\n let controls = [...findFields(container), ...findSubmitButtons(container)];\n for (let control of controls) {\n if (control === focusedElement) {\n focusFallback = findGroup(focusedElement);\n }\n raiseDisableStack(control);\n }\n if (focusFallback) {\n up.focus(focusFallback, { force: true, preventScroll: true });\n }\n return function () {\n controls.forEach(lowerDisableStack);\n };\n }\n function raiseDisableStack(control) {\n if (!control.upDisableCount) {\n control.upDisableCount ||= 0;\n control.upOriginalDisabled = control.disabled;\n }\n control.upDisableCount++;\n control.disabled = true;\n }\n function lowerDisableStack(control) {\n if (control.upDisableCount) {\n if (!control.disabled) {\n control.upDisableCount = 0;\n }\n else {\n control.upDisableCount--;\n if (!control.upDisableCount) {\n control.disabled = control.upOriginalDisabled;\n }\n }\n }\n }\n function disableWhile(promise, options) {\n let undoDisable = handleDisableOption(options);\n u.always(promise, undoDisable);\n }\n function handleDisableOption({ disable, origin }) {\n if (!disable)\n return u.noop;\n let missingOption = (key) => { up.fail(\"Cannot process { disable: '%s' } option without { %s }\", disable, key); };\n let getOrigin = () => origin || missingOption('origin');\n let getOriginForm = () => getScope(getOrigin());\n let containers;\n if (disable === true) {\n containers = [getOriginForm()];\n }\n else if (u.isString(disable)) {\n containers = up.fragment.subtree(getOriginForm(), disable, { origin });\n }\n return u.sequence(containers.map(disableContainer));\n }\n function destinationOptions(form, options, parserOptions) {\n options = u.options(options);\n form = getForm(form);\n const parser = new up.OptionsParser(form, options, parserOptions);\n parser.string('contentType', { attr: 'enctype' });\n parser.json('headers');\n const params = up.Params.fromForm(form);\n const submitButton = submittingButton(form);\n if (submitButton) {\n options.submitButton = submitButton;\n params.addField(submitButton);\n options.method ||= submitButton.getAttribute('formmethod');\n options.url ||= submitButton.getAttribute('formaction');\n }\n params.addAll(options.params);\n options.params = params;\n parser.string('url', { attr: 'action', default: up.fragment.source(form) });\n parser.string('method', {\n attr: ['up-method', 'data-method', 'method'],\n default: 'GET',\n normalize: u.normalizeMethod\n });\n if (options.method === 'GET') {\n options.url = up.Params.stripURL(options.url);\n }\n return options;\n }\n up.on('up:click', submitButtonSelector, function (event, button) {\n const form = getForm(button);\n if (form && isSubmittable(form)) {\n button.focus();\n }\n });\n function watch(root, ...args) {\n root = up.element.get(root);\n const callback = u.extractCallback(args) || watchCallbackFromElement(root) || up.fail('No callback given for up.watch()');\n let options = u.extractOptions(args);\n const watcher = new up.FieldWatcher(root, options, callback);\n watcher.start();\n return () => watcher.stop();\n }\n function watchCallbackFromElement(element) {\n let rawCallback = element.getAttribute('up-watch');\n if (rawCallback) {\n return up.NonceableCallback.fromString(rawCallback).toFunction('value', 'name').bind(element);\n }\n }\n function autosubmit(target, options = {}) {\n const onChange = (_diff, renderOptions) => submit(target, renderOptions);\n return watch(target, { options, batch: true }, onChange);\n }\n function getGroupSelectors() {\n return up.migrate.migratedFormGroupSelectors?.() || config.groupSelectors;\n }\n function findGroup(field) {\n return findGroupSolution(field).element;\n }\n function findGroupSolution(field) {\n return u.findResult(getGroupSelectors(), function (groupSelector) {\n let group = field.closest(groupSelector);\n if (group) {\n let goodDerivedGroupTarget = up.fragment.tryToTarget(group);\n let goodDerivedFieldTarget = up.fragment.tryToTarget(field);\n let groupHasFieldTarget = goodDerivedFieldTarget && (group !== field) && `${groupSelector}:has(${goodDerivedFieldTarget})`;\n let target = goodDerivedGroupTarget || groupHasFieldTarget;\n if (target) {\n return {\n target,\n element: group,\n origin: field\n };\n }\n }\n });\n }\n function validate(...args) {\n let options = parseValidateArgs(...args);\n let validator = up.FormValidator.forElement(options.origin);\n return validator.validate(options);\n }\n function parseValidateArgs(originOrTarget, ...args) {\n const options = u.extractOptions(args);\n if (options.origin) {\n options.target ||= up.fragment.toTarget(originOrTarget);\n }\n else {\n options.origin ||= up.fragment.get(originOrTarget);\n }\n return options;\n }\n function switcherValues(field) {\n let value;\n let meta;\n if (field.matches('input[type=checkbox]')) {\n if (field.checked) {\n value = field.value;\n meta = ':checked';\n }\n else {\n meta = ':unchecked';\n }\n }\n else if (field.matches('input[type=radio]')) {\n const form = getScope(field);\n const groupName = field.getAttribute('name');\n const checkedButton = form.querySelector(`input[type=radio]${e.attrSelector('name', groupName)}:checked`);\n if (checkedButton) {\n meta = ':checked';\n value = checkedButton.value;\n }\n else {\n meta = ':unchecked';\n }\n }\n else {\n value = field.value;\n }\n const values = [];\n if (u.isPresent(value)) {\n values.push(value);\n values.push(':present');\n }\n else {\n values.push(':blank');\n }\n if (u.isPresent(meta)) {\n values.push(meta);\n }\n return values;\n }\n function switchTargets(switcher, options = {}) {\n const targetSelector = options.target || options.target || switcher.getAttribute('up-switch');\n const form = getScope(switcher);\n targetSelector || up.fail(\"No switch target given for %o\", switcher);\n const fieldValues = switcherValues(switcher);\n for (let target of up.fragment.all(form, targetSelector)) {\n switchTarget(target, fieldValues);\n }\n }\n const switchTarget = up.mockable(function (target, fieldValues) {\n let show;\n fieldValues ||= switcherValues(findSwitcherForTarget(target));\n let hideValues = target.getAttribute('up-hide-for');\n if (hideValues) {\n hideValues = parseSwitchTokens(hideValues);\n show = u.intersect(fieldValues, hideValues).length === 0;\n }\n else {\n let showValues = target.getAttribute('up-show-for');\n showValues = showValues ? parseSwitchTokens(showValues) : [':present', ':checked'];\n show = u.intersect(fieldValues, showValues).length > 0;\n }\n e.toggle(target, show);\n target.classList.add('up-switched');\n });\n function parseSwitchTokens(str) {\n return u.parseTokens(str, { json: true });\n }\n function findSwitcherForTarget(target) {\n const form = getScope(target);\n const switchers = form.querySelectorAll('[up-switch]');\n const switcher = u.find(switchers, function (switcher) {\n const targetSelector = switcher.getAttribute('up-switch');\n return target.matches(targetSelector);\n });\n return switcher || up.fail('Could not find [up-switch] field for %o', target);\n }\n function getForm(elementOrSelector, options = {}) {\n const element = up.fragment.get(elementOrSelector, options);\n return element.form || element.closest('form');\n }\n function getScope(element, options) {\n return getForm(element, options) || up.layer.get(element).element;\n }\n function focusedField() {\n return u.presence(document.activeElement, isField);\n }\n function isSubmittable(form) {\n form = up.fragment.get(form);\n return config.matches(form, 'submitSelectors');\n }\n up.on('submit', config.selectorFn('submitSelectors'), function (event, form) {\n if (event.defaultPrevented)\n return;\n up.event.halt(event, { log: true });\n up.error.muteUncriticalRejection(submit(form));\n });\n up.compiler(validatingFieldSelector, function (fieldOrForm) {\n let validator = up.FormValidator.forElement(fieldOrForm);\n validator.watchContainer(fieldOrForm);\n });\n function validatingFieldSelector() {\n return config.fieldSelectors.map((selector) => `${selector}[up-validate], [up-validate] ${selector}`).join(', ');\n }\n up.compiler('[up-switch]', (switcher) => {\n switchTargets(switcher);\n });\n up.on('change', '[up-switch]', (_event, switcher) => {\n switchTargets(switcher);\n });\n up.compiler('[up-show-for]:not(.up-switched), [up-hide-for]:not(.up-switched)', (element) => {\n switchTarget(element);\n });\n up.compiler('[up-watch]', (formOrField) => watch(formOrField));\n up.compiler('[up-autosubmit]', (formOrField) => autosubmit(formOrField));\n return {\n config,\n submit,\n submitOptions,\n destinationOptions,\n watchOptions,\n isSubmittable,\n watch,\n validate,\n autosubmit,\n fieldSelector,\n fields: findFields,\n isField,\n submitButtons: findSubmitButtons,\n focusedField,\n switchTarget,\n disableWhile,\n disable: disableContainer,\n group: findGroup,\n groupSolution: findGroupSolution,\n groupSelectors: getGroupSelectors,\n get: getForm,\n getScope,\n };\n})();\nup.submit = up.form.submit;\nup.watch = up.form.watch;\nup.autosubmit = up.form.autosubmit;\nup.validate = up.form.validate;\n\n\n/***/ }),\n/* 98 */\n/***/ (() => {\n\nup.feedback = (function () {\n const u = up.util;\n const e = up.element;\n const config = new up.Config(() => ({\n currentClasses: ['up-current'],\n navSelectors: ['[up-nav]', 'nav'],\n }));\n function reset() {\n up.layer.root.feedbackLocation = null;\n }\n const CLASS_ACTIVE = 'up-active';\n const CLASS_LOADING = 'up-loading';\n const SELECTOR_LINK = 'a, [up-href]';\n function navSelector() {\n return config.selector('navSelectors');\n }\n function normalizeURL(url) {\n if (url) {\n return u.normalizeURL(url, { trailingSlash: false, hash: false });\n }\n }\n function linkURLs(link) {\n return link.upFeedbackURLs ||= new up.LinkFeedbackURLs(link);\n }\n function updateFragment(fragment) {\n const layerOption = { layer: up.layer.get(fragment) };\n if (up.fragment.closest(fragment, navSelector(), layerOption)) {\n const links = up.fragment.subtree(fragment, SELECTOR_LINK, layerOption);\n updateLinks(links, layerOption);\n }\n else {\n updateLinksWithinNavs(fragment, layerOption);\n }\n }\n function updateLinksWithinNavs(fragment, options) {\n const navs = up.fragment.subtree(fragment, navSelector(), options);\n const links = u.flatMap(navs, nav => e.subtree(nav, SELECTOR_LINK));\n updateLinks(links, options);\n }\n function getNormalizedLayerLocation(layer) {\n return layer.feedbackLocation || normalizeURL(layer.location);\n }\n function updateLinks(links, options = {}) {\n if (!links.length) {\n return;\n }\n const layer = options.layer || up.layer.get(links[0]);\n let layerLocation = getNormalizedLayerLocation(layer);\n if (layerLocation) {\n for (let link of links) {\n const isCurrent = linkURLs(link).isCurrent(layerLocation);\n for (let currentClass of config.currentClasses) {\n link.classList.toggle(currentClass, isCurrent);\n }\n e.toggleAttr(link, 'aria-current', 'page', isCurrent);\n }\n }\n }\n function findActivatableArea(element) {\n return e.ancestor(element, SELECTOR_LINK) || element;\n }\n function showAroundRequest(request, options) {\n if (!options.feedback) {\n return;\n }\n let clean = (fn) => u.always(request, fn);\n let activeElement = getActiveElementFromRenderOptions(request);\n if (activeElement) {\n clean(e.addTemporaryClass(activeElement, CLASS_ACTIVE));\n }\n for (let fragment of request.fragments) {\n clean(e.addTemporaryClass(fragment, CLASS_LOADING));\n }\n }\n function getActiveElementFromRenderOptions(request) {\n let activeElement = request.origin;\n if (activeElement) {\n return findActivatableArea(activeElement);\n }\n }\n function updateLayerIfLocationChanged(layer) {\n const processedLocation = layer.feedbackLocation;\n const layerLocation = getNormalizedLayerLocation(layer.location);\n if (!processedLocation || (processedLocation !== layerLocation)) {\n layer.feedbackLocation = layerLocation;\n updateLinksWithinNavs(layer.element, { layer });\n }\n }\n function onBrowserLocationChanged() {\n const frontLayer = up.layer.front;\n if (frontLayer.showsLiveHistory()) {\n updateLayerIfLocationChanged(frontLayer);\n }\n }\n up.on('up:location:changed', (_event) => {\n onBrowserLocationChanged();\n });\n up.on('up:fragment:compile', (_event, newFragment) => {\n updateFragment(newFragment);\n });\n up.on('up:layer:location:changed', (event) => {\n updateLayerIfLocationChanged(event.layer);\n });\n up.on('up:framework:reset', reset);\n return {\n config,\n showAroundRequest,\n normalizeURL,\n };\n})();\n\n\n/***/ }),\n/* 99 */\n/***/ (() => {\n\nup.radio = (function () {\n const e = up.element;\n const config = new up.Config(() => ({\n hungrySelectors: ['[up-hungry]'],\n pollInterval: 30000,\n }));\n function hungrySteps(renderOptions) {\n let { useHungry, origin, layer: renderLayer } = renderOptions;\n let steps = { current: [], other: [] };\n if (!useHungry)\n return steps;\n let hungrySelector = config.selector('hungrySelectors');\n const layerPreference = [renderLayer, ...renderLayer.ancestors, ...renderLayer.descendants];\n for (let elementLayer of layerPreference) {\n let hungries = up.fragment.all(elementLayer.element, hungrySelector, { layer: elementLayer });\n for (let element of hungries) {\n let selector = up.fragment.tryToTarget(element, { origin });\n if (!selector) {\n up.warn('[up-hungry]', 'Ignoring untargetable fragment %o', element);\n continue;\n }\n let ifLayer = e.attr(element, 'up-if-layer');\n let applicableLayers = ifLayer ? up.layer.getAll(ifLayer, { baseLayer: elementLayer }) : [elementLayer];\n let motionOptions = up.motion.motionOptions(element);\n let selectEvent = up.event.build('up:fragment:hungry', { log: false });\n let selectCallback = e.callbackAttr(element, 'up-on-hungry', { exposedKeys: ['newFragment', 'renderOptions'] });\n let step = {\n selector,\n oldElement: element,\n layer: elementLayer,\n origin,\n ...motionOptions,\n placement: 'swap',\n useKeep: true,\n maybe: true,\n selectEvent,\n selectCallback,\n originalRenderOptions: renderOptions,\n };\n if (applicableLayers.includes(renderLayer)) {\n let list = renderLayer === elementLayer ? steps.current : steps.other;\n list.push(step);\n }\n }\n }\n steps.other = up.fragment.compressNestedSteps(steps.other);\n return steps;\n }\n function startPolling(fragment, options = {}) {\n up.FragmentPolling.forFragment(fragment).forceStart(options);\n }\n function stopPolling(element) {\n up.FragmentPolling.forFragment(element).forceStop();\n }\n function pollOptions(fragment, options = {}) {\n const parser = new up.OptionsParser(fragment, options);\n parser.number('interval', { default: config.pollInterval });\n parser.string('ifLayer', { default: 'front' });\n return options;\n }\n up.compiler('[up-poll]:not([up-poll=false])', function (fragment) {\n up.FragmentPolling.forFragment(fragment).onPollAttributeObserved();\n });\n up.macro('[up-flashes]', function (fragment) {\n e.setMissingAttrs(fragment, {\n 'up-hungry': '',\n 'up-if-layer': 'subtree',\n 'up-keep': '',\n 'role': 'alert',\n });\n fragment.addEventListener('up:fragment:keep', function (event) {\n if (!e.isEmpty(event.newFragment))\n event.preventDefault();\n });\n });\n return {\n config,\n hungrySteps,\n startPolling,\n stopPolling,\n pollOptions,\n };\n})();\n\n\n/***/ }),\n/* 100 */\n/***/ (() => {\n\n(function () {\n const e = up.element;\n function isRails() {\n return window.Rails ||\n window.jQuery?.rails;\n }\n for (let feature of ['method', 'confirm']) {\n const upAttribute = `up-${feature}`;\n const dataAttribute = `data-${feature}`;\n up.macro(`a[${dataAttribute}]`, function (link) {\n if (isRails() && up.link.isFollowable(link)) {\n e.setMissingAttr(link, upAttribute, link.getAttribute(dataAttribute));\n link.removeAttribute(dataAttribute);\n }\n });\n }\n})();\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n__webpack_require__(1);\n__webpack_require__(2);\n__webpack_require__(3);\n__webpack_require__(4);\n__webpack_require__(5);\n__webpack_require__(6);\n__webpack_require__(7);\n__webpack_require__(9);\n__webpack_require__(10);\n__webpack_require__(11);\n__webpack_require__(12);\n__webpack_require__(13);\n__webpack_require__(14);\n__webpack_require__(15);\n__webpack_require__(16);\n__webpack_require__(17);\n__webpack_require__(18);\n__webpack_require__(19);\n__webpack_require__(20);\n__webpack_require__(21);\n__webpack_require__(22);\n__webpack_require__(23);\n__webpack_require__(24);\n__webpack_require__(25);\n__webpack_require__(26);\n__webpack_require__(27);\n__webpack_require__(28);\n__webpack_require__(29);\n__webpack_require__(30);\n__webpack_require__(31);\n__webpack_require__(32);\n__webpack_require__(33);\n__webpack_require__(34);\n__webpack_require__(35);\n__webpack_require__(36);\n__webpack_require__(37);\n__webpack_require__(38);\n__webpack_require__(39);\n__webpack_require__(40);\n__webpack_require__(41);\n__webpack_require__(42);\n__webpack_require__(43);\n__webpack_require__(44);\n__webpack_require__(45);\n__webpack_require__(46);\n__webpack_require__(47);\n__webpack_require__(48);\n__webpack_require__(49);\n__webpack_require__(50);\n__webpack_require__(51);\n__webpack_require__(52);\n__webpack_require__(53);\n__webpack_require__(54);\n__webpack_require__(55);\n__webpack_require__(56);\n__webpack_require__(57);\n__webpack_require__(58);\n__webpack_require__(59);\n__webpack_require__(60);\n__webpack_require__(61);\n__webpack_require__(62);\n__webpack_require__(63);\n__webpack_require__(64);\n__webpack_require__(65);\n__webpack_require__(66);\n__webpack_require__(67);\n__webpack_require__(68);\n__webpack_require__(69);\n__webpack_require__(70);\n__webpack_require__(71);\n__webpack_require__(72);\n__webpack_require__(73);\n__webpack_require__(74);\n__webpack_require__(75);\n__webpack_require__(76);\n__webpack_require__(77);\n__webpack_require__(78);\n__webpack_require__(79);\n__webpack_require__(80);\n__webpack_require__(81);\n__webpack_require__(82);\n__webpack_require__(83);\n__webpack_require__(84);\n__webpack_require__(85);\n__webpack_require__(86);\n__webpack_require__(88);\n__webpack_require__(90);\n__webpack_require__(91);\n__webpack_require__(93);\n__webpack_require__(95);\n__webpack_require__(97);\n__webpack_require__(98);\n__webpack_require__(99);\n__webpack_require__(100);\nup.framework.onEvaled();\n\n})();\n\n/******/ })()\n;", "export default new class Environment {\n\n get toString() {\n return document.body.getAttribute('data-environment')\n }\n\n get isTest() {\n return this.toString === 'test'\n }\n\n get isDevelopment() {\n return this.toString === 'development'\n }\n\n get isFeatureSpec() {\n return this.isTest && typeof jasmine === 'undefined'\n }\n\n}()\n", "import environment from '../util/environment'\n\nup.layer.config.modal.dismissable = 'button key' // do not allow closing modals by clicking the backdrop\n\nup.link.config.followSelectors.push('a[href]')\nup.link.config.instantSelectors.push('a[href]')\nup.link.config.noInstantSelectors.push('.btn:not(.btn-link), [no-instant]')\n\nup.fragment.config.runScripts = false\n\nup.feedback.config.currentClasses.push('active')\n\nup.form.config.submitSelectors.push('form')\n\nup.history.config.updateMetaTags = true\n\nup.motion.config.enabled = !environment.isTest\n\nup.network.config.progressBar = true\n\nup.on('up:network:late', () => { document.body.classList.add('-loading') })\nup.on('up:network:recover', () => { document.body.classList.remove('-loading') })\n", "export function signedIn() {\n return !!document.querySelector('[data-authenticated]')\n}\n", "import '../../shared/config/unpoly.js'\nimport '../../shared/config/unpoly.sass'\nimport { signedIn } from '../util/current_user'\n\nup.link.config.preloadSelectors.push('a[href]')\n\nup.on('up:request:loaded', ({ response }) => {\n if (response.status === 401 && signedIn()) {\n // User was signed out from a previously active session.\n // The 401 response includes an error message that should be displayed.\n\n up.util.task(() => {\n // We delay render cycle so that up:fragment:loaded events (e.g. form submission)\n // don't have to render results on a DOM that does not match their expectations\n // which can result in errors.\n // This means that a form may render the 401 response considering its failTarget\n // for a single frame until we render the the error response as a \"full\" page.\n // This is usually not noticeable, and in any case only relevant for edge cases.\n up.render({\n // close any layers that might be open\n layer: 'root',\n peel: true,\n\n // discard the entire layout, as it might contain information from the user session (e.g. name in header)\n target: 'body',\n document: response.text,\n clearCache: true,\n\n // discard the current URL to avoid leaking personalized URLs\n location: '/',\n history: true,\n })\n })\n }\n})\n", "const scriptsLoaded = {}\n\nexport default function loadScript(url) {\n\n function createScriptTag(url) {\n const scriptTag = document.createElement('script')\n scriptTag.src = url\n return scriptTag\n }\n\n const cachedPromise = scriptsLoaded[url]\n if (cachedPromise) {\n return cachedPromise\n } else {\n const promise = new Promise((resolve, reject) => {\n const scriptTag = createScriptTag(url)\n scriptTag.addEventListener('load', resolve)\n scriptTag.addEventListener('error', reject)\n document.head.appendChild(scriptTag)\n })\n scriptsLoaded[url] = promise\n return promise\n }\n\n}\n", "// Animated icons are rendered using lottie-web's `lottie_light` player.\n// Other implementations, like the \"full\" player, or @dotlottie's player use eval which is forbidden by our CSP.\n//\n// By default, icons play only while hovering a surrounding or \n `,\n size: 'auto',\n })\n }\n\n trackEvent('read-aloud', 'readable-content-present')\n\n up.on(element, 'click', startButtonSelector, onClickButton)\n up.on(element, 'click', stopButtonSelector, onClickButton)\n\n audios.forEach((audio, index) => {\n audio.addEventListener('ended', () => {\n onAudioEnded(audio, index)\n })\n })\n\n updateVisibleButtonText()\n\n if (autoPlay) {\n try {\n await play({ throwError: true }).then(updateVisibleButtonText)\n trackEvent('read-aloud', 'auto-play')\n } catch {\n // Autoplay was prevented\n trackEvent('read-aloud', 'auto-play-prevented')\n }\n }\n\n})\n", "import { trackPageView } from '../util/analytics'\n\nup.compiler('[track-page-view]', (element, data) => {\n trackPageView(data)\n})\n", "export default class VideoPlayButton {\n\n constructor(video, button) {\n this.video = video\n this.button = button\n }\n\n connect() {\n this.button.addEventListener('click', this.playVideo.bind(this))\n this.video.addEventListener('play', this.toggleButton.bind(this))\n this.video.addEventListener('pause', this.toggleButton.bind(this))\n }\n\n disconnect() {\n this.button.removeEventListener('click', this.playVideo.bind(this))\n this.video.removeEventListener('play', this.toggleButton.bind(this))\n this.video.removeEventListener('pause', this.toggleButton.bind(this))\n }\n\n async playVideo() {\n if (typeof jasmine === 'undefined') {\n // somehow waiting for the promise breaks stubs from jasmine specs, so we don't reveal in Jasmine specs\n await up.reveal(this.video, { padding: 30 })\n }\n this.video.play()\n }\n\n toggleButton() {\n this.button.toggleAttribute('disabled', !this.video.paused)\n }\n\n}\n", "import Question from '../util/question'\nimport { gameState } from '../util/game_state'\nimport VideoPlayButton from '../util/video_play_button'\n\nup.compiler('[video-multiple-choice]', (element, { name, buttonMode, skipToSolution, completeSlideUrl }) => {\n const multipleChoice = new Question(element, name)\n const questionVideo = element.querySelector('[question--question-video]')\n const solutionVideo = element.querySelector('[question--solution-video]')\n const choices = element.querySelector('[question--choices]')\n const startButton = element.querySelector('[question--start-button]')\n const submitButton = element.querySelector('[question--submit-button]')\n const replayButton = element.querySelector('[question--replay-button]')\n const choiceButtons = element.querySelectorAll('[question--choice-button]')\n\n let submitted = false\n\n up.on(questionVideo, 'ended', showChoicesAndAdjustControls)\n up.on(submitButton, 'click', onClickSubmit)\n up.on(choiceButtons, 'click', onClickChoice)\n up.on(replayButton, 'click', replayVideo)\n gameState.submit.register(onClickSubmit)\n\n const videoPlayButton = new VideoPlayButton(questionVideo, startButton)\n videoPlayButton.connect()\n\n if (skipToSolution) {\n submit()\n showChoicesAndAdjustControls()\n multipleChoice.skipToSolution()\n showAndPlaySolutionVideo()\n }\n\n function showChoicesAndAdjustControls() {\n choices.removeAttribute('hidden')\n replayButton.removeAttribute('hidden')\n startButton.setAttribute('hidden', true)\n questionVideo.controls = false\n\n if (!buttonMode) {\n submitButton.removeAttribute('hidden')\n }\n }\n\n async function onClickChoice() {\n checkChoice(this.getAttribute('answer_id'))\n onClickSubmit()\n }\n\n function checkChoice(answerId) {\n const choiceCheckbox = choices.querySelector(`[id=\"${answerId}\"]`)\n choiceCheckbox.checked = true\n }\n\n async function onClickSubmit() {\n submit()\n if (completeSlideUrl) {\n await up.request(completeSlideUrl, { method: 'POST' })\n }\n multipleChoice.checkAnswers()\n showAndPlaySolutionVideo()\n }\n\n function submit() {\n submitButton.remove()\n gameState.stopGame()\n submitted = true\n }\n\n function showAndPlaySolutionVideo() {\n questionVideo.setAttribute('hidden', true)\n replayButton.setAttribute('hidden', true)\n solutionVideo.removeAttribute('hidden')\n\n solutionVideo.play().catch(() => {\n // User probably did not interact with the page yet. Browsers do not allow video playback in that case,\n // and there is nothing we can do except silencing the error.\n })\n }\n\n function replayVideo() {\n replayButton.setAttribute('hidden', true)\n questionVideo.controls = true\n questionVideo.play()\n }\n\n return function destroy() {\n gameState.submit.unregister(onClickSubmit)\n videoPlayButton.disconnect()\n if (!submitted) {\n gameState.stopGame()\n }\n }\n})\n", "import VideoPlayButton from '../util/video_play_button'\n\nup.compiler('[video-slide]', (element) => {\n\n const video = element.querySelector('video')\n const playButton = element.querySelector('[video-slide--play-button]')\n\n const videoPlayButton = new VideoPlayButton(video, playButton)\n videoPlayButton.connect()\n\n return () => {\n videoPlayButton.disconnect()\n }\n\n})\n"], "mappings": "4nBAAA,IAAAA,GAAAC,GAAA,QAAG,SAAS,6BAA+BC,GAAY,CAErD,IAAMC,EAAU,mFACVC,EAAgB,aAEtB,SAASC,EAAQC,EAAO,CACtB,IAAMC,EAAQ,OAAOJ,CAAO,EACtBK,GAAkBD,GAAS,IAAI,KAAK,EAAE,YAAY,EAClDE,EAAgBL,EAAc,KAAK,EAAE,YAAY,EAEnDG,IAAU,MACZ,MAAM,4DAAyD,EAC/DD,EAAM,eAAe,GACZE,IAAmBC,IAC5B,MAAM,2BAAsBD,uBAA0BC,gDAAoD,EAC1GH,EAAM,eAAe,EAIzB,CAEAJ,EAAQ,iBAAiB,QAASG,CAAO,CAE3C,CAAC,ICvBD,IAAAK,GAAAC,GAAA,QAAG,SAAS,iBAAmBC,GAAY,CAEzC,SAASC,EAAQC,EAAO,CACtB,IAAMC,EAAUH,EAAQ,aAAa,cAAc,EAC9C,QAAQG,CAAO,GAAG,GAAG,MAAM,KAAKD,CAAK,CAC5C,CAEAF,EAAQ,iBAAiB,QAASC,CAAO,CAC3C,CAAC,ICRD,IAAAG,GAAAC,GAAA,QAAG,SAAS,aAAeC,GAAY,CAErC,IAAMC,EAAmBD,EAAQ,iBAAiB,qBAAqB,EACjEE,EAAkBF,EAAQ,cAAc,qBAAqB,EAC7DG,EAAuBH,EAAQ,cAAc,2BAA2B,EACxEI,EAAwBJ,EAAQ,cAAc,4BAA4B,EAEhFC,EAAiB,QAASI,GAAY,CACpCA,EAAQ,iBAAiB,QAAS,IAAM,CACtC,GAAG,QAAQ,OAAOH,CAAe,EACjC,GAAG,QAAQ,OAAOC,CAAoB,EACtC,GAAG,QAAQ,OAAOC,CAAqB,EACnC,GAAG,QAAQ,UAAUF,CAAe,GACtC,GAAG,OAAOA,EAAiB,CAAE,QAAS,EAAG,CAAC,CAE9C,CAAC,CACH,CAAC,CAEH,CAAC,IClBD,IAAAI,GAAAC,GAAA,QAAG,SAAS,uBAAyBC,GAAY,CAI/CA,EAAQ,iBAAiB,UAAYC,GAAU,CAC7C,IAAMC,EAAMD,EAAM,KACdC,IAAQ,WAAaA,IAAQ,aAAgBA,EAAI,SAAW,GAAK,CAACD,EAAM,SAAW,CAACA,EAAM,QAAU,CAACC,EAAI,MAAM,YAAY,IAC7HD,EAAM,eAAe,CAEzB,CAAC,EAIDD,EAAQ,iBAAiB,QAAUC,GAAU,CACvCD,EAAQ,QAAQ,QAAQ,GAC1BC,EAAM,eAAe,CAEzB,CAAC,CAEH,CAAC,ICnBD,IAAAE,GAAAC,GAAA,SAAMC,GAAW,CAAC,QAAS,WAAY,QAAQ,EAC5C,IAAIC,GAAW,GAAGA,cAAoB,EACtC,KAAK,IAAI,EAEZ,GAAG,SAASD,GAAWE,GAAY,CAEjC,IAAMC,EAAaD,EAAQ,QAAQ,cAAc,EAC3CE,EAAYF,EAAQ,QAAQ,aAAa,EAE/C,SAASG,EAAqBC,EAAW,CAT3C,IAAAC,GAUIA,EAAAJ,GAAA,YAAAA,EAAY,YAAZ,MAAAI,EAAuB,OAAO,aAAcD,EAC9C,CAEA,SAASE,GAAmC,CAb9C,IAAAD,EAAAE,EAcQL,IACF,MAAM,KAAKA,EAAU,iBAAiB,aAAa,CAAC,EAAE,QAASF,GAAY,CACzEA,EAAQ,UAAU,OAAO,YAAY,CACvC,CAAC,GACDO,GAAAF,EAAAH,EAAU,cAAc,2BAA2B,IAAnD,YAAAG,EAAsD,YAAtD,MAAAE,EAAiE,OAAO,WAE5E,CAEA,SAASC,GAAe,CACtBR,EAAQ,UAAU,OAAO,YAAY,EACrCM,EAAiC,EACjCH,EAAqB,EAAK,CAC5B,CAEAA,EAAqB,EAAI,EACzBH,EAAQ,iBAAiB,QAASQ,EAAc,CAAE,KAAM,EAAK,CAAC,CAEhE,CAAC,IC/BD,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAASC,EAAQC,EAAS,CAC1B,IAAIC,EAAYD,EAAQD,EAAQA,EAAO,SAAU,IAAI,EACrDA,EAAO,UAAYE,EAChB,OAAOH,IAAU,UAAYA,GAAO,UACtCA,GAAO,QAAUG,EAEnB,GAAE,OAAO,OAAU,IACb,OAAS,CAAC,EAKhB,SAAWF,EAAQG,EAAUC,EAAM,CAClC,aAGA,IAAIC,EAIHC,EAuCD,GArCC,UAAU,CACV,IAAIC,EAEAC,EAAoB,CACvB,UAAW,WACX,YAAa,aACb,aAAc,cACd,aAAc,cACd,WAAY,YAEZ,eAAgB,gBAChB,gBAAiB,eACjB,eAAgB,EAChB,QAAS,WACT,WAAY,cACZ,UAAW,aAEX,QAAS,GACT,YAAa,CAAC,EACd,KAAM,GACN,UAAW,IACX,KAAM,GACN,SAAU,EACV,WAAY,GACZ,WAAY,EACZ,cAAe,GAChB,EAEAF,EAAeN,EAAO,iBAAmBA,EAAO,iBAAmB,CAAC,EAEpE,IAAIO,KAAQC,EACND,KAAQD,IACZA,EAAaC,CAAI,EAAIC,EAAkBD,CAAI,EAG9C,EAAG,EAEC,CAACJ,GAAY,CAACA,EAAS,uBAC1B,MAAO,CACN,KAAM,UAAY,CAAC,EAInB,IAAKG,EAIL,UAAW,EACZ,EAGD,IAAIG,EAAUN,EAAS,gBAEnBO,EAAiBV,EAAO,mBAExBW,EAAoB,mBAEpBC,EAAgB,eAMhBC,EAAmBb,EAAOW,CAAiB,EAAE,KAAKX,CAAM,EAExDc,EAAad,EAAO,WAEpBe,EAAwBf,EAAO,uBAAyBc,EAExDE,EAAsBhB,EAAO,oBAE7BiB,EAAa,aAEbC,EAAa,CAAC,OAAQ,QAAS,eAAgB,aAAa,EAE5DC,EAAgB,CAAC,EAEjBC,EAAU,MAAM,UAAU,QAM1BC,EAAW,SAASC,EAAKC,EAAK,CACjC,OAAIJ,EAAcI,CAAG,IACpBJ,EAAcI,CAAG,EAAI,IAAI,OAAO,UAAUA,EAAI,SAAS,GAEjDJ,EAAcI,CAAG,EAAE,KAAKD,EAAIV,CAAa,EAAE,OAAO,GAAK,EAAE,GAAKO,EAAcI,CAAG,CACvF,EAMIC,EAAW,SAASF,EAAKC,EAAK,CAC5BF,EAASC,EAAKC,CAAG,GACrBD,EAAI,aAAa,SAAUA,EAAIV,CAAa,EAAE,OAAO,GAAK,IAAI,KAAK,EAAI,IAAMW,CAAG,CAElF,EAMIE,EAAc,SAASH,EAAKC,EAAK,CACpC,IAAIG,GACCA,EAAML,EAASC,EAAIC,CAAG,IAC1BD,EAAI,aAAa,SAAUA,EAAIV,CAAa,EAAE,OAAO,GAAK,IAAI,QAAQc,EAAK,GAAG,CAAC,CAEjF,EAEIC,EAAsB,SAASC,EAAKC,EAAIC,EAAI,CAC/C,IAAIC,EAASD,EAAMnB,EAAoB,sBACpCmB,GACFH,EAAoBC,EAAKC,CAAE,EAE5BX,EAAW,QAAQ,SAASc,EAAI,CAC/BJ,EAAIG,CAAM,EAAEC,EAAKH,CAAE,CACpB,CAAC,CACF,EAUII,EAAe,SAASC,EAAMC,EAAMC,EAAQC,EAAWC,EAAa,CACvE,IAAIC,EAAQpC,EAAS,YAAY,OAAO,EAExC,OAAIiC,IACHA,EAAS,CAAC,GAGXA,EAAO,SAAW/B,EAElBkC,EAAM,UAAUJ,EAAM,CAACE,EAAW,CAACC,CAAY,EAE/CC,EAAM,OAASH,EAEfF,EAAK,cAAcK,CAAK,EACjBA,CACR,EAEIC,EAAiB,SAAUC,EAAIC,EAAK,CACvC,IAAIC,EACA,CAACjC,IAAoBiC,EAAY3C,EAAO,aAAeM,EAAa,KACpEoC,GAAQA,EAAK,KAAO,CAACD,EAAG7B,CAAa,EAAE,QAAQ,GACjD6B,EAAG,aAAa,SAAUC,EAAK,GAAG,EAEnCC,EAAS,CAAC,WAAY,GAAM,SAAU,CAACF,CAAE,CAAC,CAAC,GAClCC,GAAQA,EAAK,MACtBD,EAAG,IAAMC,EAAK,IAEhB,EAEIE,EAAS,SAAUV,EAAMW,EAAM,CAClC,OAAQ,iBAAiBX,EAAM,IAAI,GAAK,CAAC,GAAGW,CAAK,CAClD,EASIC,EAAW,SAASZ,EAAMa,EAAQC,EAAM,CAG3C,IAFAA,EAAQA,GAASd,EAAK,YAEhBc,EAAQ1C,EAAa,SAAWyC,GAAU,CAACb,EAAK,iBACrDc,EAASD,EAAO,YAChBA,EAASA,EAAO,WAGjB,OAAOC,CACR,EAEIC,EAAO,UAAU,CACpB,IAAIC,EAASC,EACTC,EAAW,CAAC,EACZC,EAAY,CAAC,EACbC,EAAMF,EAENG,EAAM,UAAU,CACnB,IAAIC,GAASF,EAOb,IALAA,EAAMF,EAAS,OAASC,EAAYD,EAEpCF,EAAU,GACVC,EAAU,GAEJK,GAAO,QACZA,GAAO,MAAM,EAAE,EAGhBN,EAAU,EACX,EAEIO,EAAW,SAAS5B,GAAI6B,EAAM,CAC9BR,GAAW,CAACQ,EACd7B,GAAG,MAAM,KAAM,SAAS,GAExByB,EAAI,KAAKzB,EAAE,EAEPsB,IACHA,EAAU,IACThD,EAAS,OAASW,EAAaC,GAAuBwC,CAAG,GAG7D,EAEA,OAAAE,EAAS,SAAWF,EAEbE,CACR,EAAG,EAECE,EAAQ,SAAS9B,EAAI+B,EAAO,CAC/B,OAAOA,EACN,UAAW,CACVX,EAAIpB,CAAE,CACP,EACA,UAAU,CACT,IAAIgC,EAAO,KACPC,EAAO,UACXb,EAAI,UAAU,CACbpB,EAAG,MAAMgC,EAAMC,CAAI,CACpB,CAAC,CACF,CAEF,EAEIC,EAAW,SAASlC,EAAG,CAC1B,IAAIqB,EACAc,EAAW,EACXC,EAAS3D,EAAa,cACtB4D,EAAa5D,EAAa,WAC1BiD,EAAM,UAAU,CACnBL,EAAU,GACVc,EAAW5D,EAAK,IAAI,EACpByB,EAAG,CACJ,EACIsC,EAAenD,GAAuBkD,EAAa,GACtD,UAAU,CACTlD,EAAoBuC,EAAK,CAAC,QAASW,CAAU,CAAC,EAE3CA,IAAe5D,EAAa,aAC9B4D,EAAa5D,EAAa,WAE5B,EACAqD,EAAM,UAAU,CACf7C,EAAWyC,CAAG,CACf,EAAG,EAAI,EAGR,OAAO,SAASa,GAAW,CAC1B,IAAIC,GAEAD,GAAaA,KAAe,MAC/BF,EAAa,IAGX,CAAAhB,IAIHA,EAAW,GAEXmB,EAAQJ,GAAU7D,EAAK,IAAI,EAAI4D,GAE5BK,EAAQ,IACVA,EAAQ,GAGND,IAAcC,EAAQ,EACxBF,EAAa,EAEbrD,EAAWqD,EAAcE,CAAK,EAEhC,CACD,EAGIC,EAAW,SAASC,EAAM,CAC7B,IAAIC,EAASC,EACTC,EAAO,GACPnB,EAAM,UAAU,CACnBiB,EAAU,KACVD,EAAK,CACN,EACII,EAAQ,UAAW,CACtB,IAAIC,EAAOxE,EAAK,IAAI,EAAIqE,EAEpBG,EAAOF,EACV5D,EAAW6D,EAAOD,EAAOE,CAAI,GAE5B5D,GAAuBuC,GAAKA,CAAG,CAElC,EAEA,OAAO,UAAW,CACjBkB,EAAYrE,EAAK,IAAI,EAEhBoE,IACJA,EAAU1D,EAAW6D,EAAOD,CAAI,EAElC,CACD,EAEIG,EAAU,UAAU,CACvB,IAAIC,EAAcC,EAAaC,EAAsBC,EAAUC,EAE3DC,EAAMC,EAAMC,GAAOC,EAAQC,EAASC,EAAUC,GAE9CC,GAAS,SACTC,GAAY,YAEZC,GAAiB,aAAc5F,GAAW,CAAE,eAAe,KAAK,UAAU,SAAS,EAEnF6F,GAAe,EACfC,EAAgB,EAEhBC,EAAY,EACZC,GAAU,GAEVC,GAAkB,SAASC,EAAE,CAChCH,KACG,CAACG,GAAKH,EAAY,GAAK,CAACG,EAAE,UAC5BH,EAAY,EAEd,EAEII,GAAY,SAAUjE,EAAM,CAC/B,OAAIuD,IAAgB,OACnBA,GAAe7C,EAAOzC,EAAS,KAAM,YAAY,GAAK,UAGhDsF,IAAgB,EAAE7C,EAAOV,EAAK,WAAY,YAAY,GAAK,UAAYU,EAAOV,EAAM,YAAY,GAAK,SAC7G,EAEIkE,GAAkB,SAASlE,EAAMmE,EAAW,CAC/C,IAAIC,GACAvD,GAASb,EACTqE,GAAUJ,GAAUjE,CAAI,EAO5B,IALAmD,IAASgB,EACTb,GAAYa,EACZf,GAAUe,EACVd,GAAWc,EAELE,KAAYxD,GAASA,GAAO,eAAiBA,IAAU5C,EAAS,MAAQ4C,IAAUtC,GACvF8F,IAAY3D,EAAOG,GAAQ,SAAS,GAAK,GAAK,EAE3CwD,IAAW3D,EAAOG,GAAQ,UAAU,GAAK,YAC3CuD,GAAYvD,GAAO,sBAAsB,EACzCwD,GAAUhB,EAAUe,GAAU,MAC7BhB,EAASgB,GAAU,OACnBd,EAAWc,GAAU,IAAM,GAC3BjB,GAAQiB,GAAU,OAAS,GAK9B,OAAOC,EACR,EAEIC,GAAgB,UAAW,CAC9B,IAAIC,EAAOC,EAAGC,GAAMC,GAAcC,GAAiBR,GAAYS,GAAoBC,GAClFC,EAAiBC,EAAeC,EAAeC,GAC5CC,GAAgB/G,EAAU,SAE9B,IAAI4E,EAAW3E,EAAa,WAAayF,EAAY,IAAMU,EAAQW,GAAc,QAAQ,CAMxF,IAJAV,EAAI,EAEJV,KAEMU,EAAID,EAAOC,IAEhB,GAAG,GAACU,GAAcV,CAAC,GAAKU,GAAcV,CAAC,EAAE,WAEzC,IAAG,CAACd,IAAkBvF,EAAU,iBAAmBA,EAAU,gBAAgB+G,GAAcV,CAAC,CAAC,EAAG,CAACW,GAAcD,GAAcV,CAAC,CAAC,EAAE,QAAS,CAoC1I,IAlCG,EAAEK,GAAgBK,GAAcV,CAAC,EAAE9F,CAAa,EAAE,aAAa,IAAM,EAAEyF,GAAaU,GAAgB,MACtGV,GAAaP,GAGTmB,IACJA,EAAiB,CAAC3G,EAAa,QAAUA,EAAa,OAAS,EAC9DG,EAAQ,aAAe,KAAOA,EAAQ,YAAc,IAAM,IAAM,IAChEH,EAAa,OAEdD,EAAU,OAAS4G,EAEnBC,EAAgBD,EAAgB3G,EAAa,UAC7C6G,GAAO7G,EAAa,KACpBmF,GAAe,KAEZK,EAAgBoB,GAAiBnB,EAAY,GAAKC,GAAU,GAAKf,EAAW,GAAK,CAAC9E,EAAS,QAC7F2F,EAAgBoB,EAChBlB,GAAU,GACDf,EAAW,GAAKe,GAAU,GAAKD,EAAY,EACpDD,EAAgBmB,EAEhBnB,EAAgBD,IAIfmB,IAAoBX,KACtBlB,EAAO,WAAckB,GAAac,GAClC/B,EAAO,YAAciB,GACrBS,GAAqBT,GAAa,GAClCW,EAAkBX,IAGnBM,GAAOS,GAAcV,CAAC,EAAE,sBAAsB,GAEzClB,EAAWmB,GAAK,SAAWG,KAC9BzB,GAAQsB,GAAK,MAAQvB,IACrBG,EAAUoB,GAAK,QAAUG,GAAqBK,KAC9C7B,EAASqB,GAAK,OAASxB,IACvBK,GAAYD,GAAWD,GAAUD,MACjC/E,EAAa,YAAc6F,GAAUiB,GAAcV,CAAC,CAAC,KACpD3B,GAAegB,EAAY,GAAK,CAACgB,KAAkB9B,EAAW,GAAKe,GAAU,IAAOI,GAAgBgB,GAAcV,CAAC,EAAGL,EAAU,IAGlI,GAFAgB,GAAcD,GAAcV,CAAC,CAAC,EAC9BG,GAAkB,GACfd,EAAY,EAAG,UACT,CAACc,IAAmB9B,GAAe,CAAC6B,IAC7Cb,EAAY,GAAKC,GAAU,GAAKf,EAAW,IAC1CH,EAAa,CAAC,GAAKxE,EAAa,oBAChCwE,EAAa,CAAC,GAAM,CAACiC,KAAmBvB,GAAYD,GAAWD,GAAUD,IAAU+B,GAAcV,CAAC,EAAE9F,CAAa,EAAEN,EAAa,SAAS,GAAK,WAC/IsG,GAAe9B,EAAa,CAAC,GAAKsC,GAAcV,CAAC,GAIhDE,IAAgB,CAACC,IACnBQ,GAAcT,EAAY,CAE5B,CACD,EAEIU,GAAyBvD,EAASyC,EAAa,EAE/Ce,GAAqB,SAASrB,EAAE,CACnC,IAAIhE,EAAOgE,EAAE,OAEb,GAAIhE,EAAK,WAAY,CACpB,OAAOA,EAAK,WACZ,MACD,CAEA+D,GAAgBC,CAAC,EACjB1E,EAASU,EAAM5B,EAAa,WAAW,EACvCmB,EAAYS,EAAM5B,EAAa,YAAY,EAC3CqB,EAAoBO,EAAMsF,EAAqB,EAC/CvF,EAAaC,EAAM,YAAY,CAChC,EACIuF,GAA0B9D,EAAM4D,EAAkB,EAClDC,GAAwB,SAAStB,EAAE,CACtCuB,GAAwB,CAAC,OAAQvB,EAAE,MAAM,CAAC,CAC3C,EAEIwB,GAAkB,SAASxF,EAAMyF,EAAI,CACxC,IAAI1C,GAAW/C,EAAK,aAAa,gBAAgB,GAAK5B,EAAa,eAG/D2E,IAAY,EACf/C,EAAK,cAAc,SAAS,QAAQyF,CAAG,EAC7B1C,IAAY,IACtB/C,EAAK,IAAMyF,EAEb,EAEIC,GAAgB,SAASC,EAAO,CACnC,IAAIC,EAEAC,GAAeF,EAAOjH,CAAa,EAAEN,EAAa,UAAU,GAE3DwH,EAAcxH,EAAa,YAAYuH,EAAOjH,CAAa,EAAE,YAAY,GAAKiH,EAAOjH,CAAa,EAAE,OAAO,CAAC,IAChHiH,EAAO,aAAa,QAASC,CAAW,EAGtCC,IACFF,EAAO,aAAa,SAAUE,EAAY,CAE5C,EAEIC,GAAarE,EAAM,SAAUzB,EAAME,EAAQ6F,GAAQC,GAAOC,GAAM,CACnE,IAAIR,GAAKS,GAAQrF,GAAQsF,EAAW9F,EAAO+F,GAEtC/F,EAAQN,EAAaC,EAAM,mBAAoBE,CAAM,GAAG,mBAEzD8F,KACCD,GACFzG,EAASU,EAAM5B,EAAa,cAAc,EAE1C4B,EAAK,aAAa,QAASgG,EAAK,GAIlCE,GAASlG,EAAKtB,CAAa,EAAEN,EAAa,UAAU,EACpDqH,GAAMzF,EAAKtB,CAAa,EAAEN,EAAa,OAAO,EAE3C6H,KACFpF,GAASb,EAAK,WACdmG,EAAYtF,IAAU9B,EAAW,KAAK8B,GAAO,UAAY,EAAE,GAG5DuF,EAAYlG,EAAO,WAAe,QAASF,IAAUkG,IAAUT,IAAOU,GAEtE9F,EAAQ,CAAC,OAAQL,CAAI,EAErBV,EAASU,EAAM5B,EAAa,YAAY,EAErCgI,IACF,aAAatD,CAAoB,EACjCA,EAAuBlE,EAAWmF,GAAiB,IAAI,EACvDtE,EAAoBO,EAAMsF,GAAuB,EAAI,GAGnDa,GACFjH,EAAQ,KAAK2B,GAAO,qBAAqB,QAAQ,EAAG6E,EAAa,EAG/DQ,GACFlG,EAAK,aAAa,SAAUkG,EAAM,EACzBT,IAAO,CAACU,IACd1C,GAAU,KAAKzD,EAAK,QAAQ,EAC9BwF,GAAgBxF,EAAMyF,EAAG,EAEzBzF,EAAK,IAAMyF,IAIVQ,KAAUC,IAAUC,IACtB7F,EAAeN,EAAM,CAAC,IAAKyF,EAAG,CAAC,GAI9BzF,EAAK,WACP,OAAOA,EAAK,UAEbT,EAAYS,EAAM5B,EAAa,SAAS,EAExC2C,EAAI,UAAU,CAEb,IAAIsF,GAAWrG,EAAK,UAAYA,EAAK,aAAe,GAEhD,CAACoG,GAAaC,MACbA,IACH/G,EAASU,EAAM5B,EAAa,eAAe,EAE5CiH,GAAmBhF,CAAK,EACxBL,EAAK,WAAa,GAClBpB,EAAW,UAAU,CAChB,eAAgBoB,GACnB,OAAOA,EAAK,UAEd,EAAG,CAAC,GAEDA,EAAK,SAAW,QACnB6D,GAEF,EAAG,EAAI,CACR,CAAC,EAMGsB,GAAgB,SAAUnF,EAAK,CAClC,GAAI,CAAAA,EAAK,UACT,KAAIE,EAEA+F,GAAQzC,GAAO,KAAKxD,EAAK,QAAQ,EAGjCgG,GAAQC,KAAUjG,EAAKtB,CAAa,EAAEN,EAAa,SAAS,GAAK4B,EAAKtB,CAAa,EAAE,OAAO,GAC5FqH,GAASC,IAAS,QAEjBD,IAAU,CAAClD,IAAgBoD,KAAUjG,EAAKtB,CAAa,EAAE,KAAK,GAAKsB,EAAK,SAAW,CAACA,EAAK,UAAY,CAACb,EAASa,EAAM5B,EAAa,UAAU,GAAKe,EAASa,EAAM5B,EAAa,SAAS,IAE3L8B,EAASH,EAAaC,EAAM,gBAAgB,EAAE,OAE3C+F,IACDO,GAAU,WAAWtG,EAAM,GAAMA,EAAK,WAAW,EAGnDA,EAAK,UAAY,GACjB6D,IAEAiC,GAAW9F,EAAME,EAAQ6F,GAAQC,GAAOC,EAAK,GAC9C,EAEIM,GAAcnE,EAAS,UAAU,CACpChE,EAAa,SAAW,EACxBgH,GAAuB,CACxB,CAAC,EAEGoB,EAA2B,UAAU,CACrCpI,EAAa,UAAY,IAC3BA,EAAa,SAAW,GAEzBmI,GAAY,CACb,EAEIE,EAAS,UAAU,CACtB,GAAG,CAAA5D,EACH,IAAG3E,EAAK,IAAI,EAAI8E,EAAU,IAAI,CAC7BpE,EAAW6H,EAAQ,GAAG,EACtB,MACD,CAGA5D,EAAc,GAEdzE,EAAa,SAAW,EAExBgH,GAAuB,EAEvBzG,EAAiB,SAAU6H,EAA0B,EAAI,EAC1D,EAEA,MAAO,CACN,EAAG,UAAU,CACZxD,EAAU9E,EAAK,IAAI,EAEnBC,EAAU,SAAWF,EAAS,uBAAuBG,EAAa,SAAS,EAC3EwE,EAAe3E,EAAS,uBAAuBG,EAAa,UAAY,IAAMA,EAAa,YAAY,EAEvGO,EAAiB,SAAUyG,GAAwB,EAAI,EAEvDzG,EAAiB,SAAUyG,GAAwB,EAAI,EAEvDzG,EAAiB,WAAY,SAAUqF,EAAG,CACzC,GAAIA,EAAE,UAAW,CAChB,IAAI0C,EAAkBzI,EAAS,iBAAiB,IAAMG,EAAa,YAAY,EAE3EsI,EAAgB,QAAUA,EAAgB,SAC7C7H,EAAsB,UAAY,CACjC6H,EAAgB,QAAS,SAAUC,GAAK,CACnCA,GAAI,UACPxB,GAAcwB,EAAG,CAEnB,CAAC,CACF,CAAC,CAEH,CACD,CAAC,EAEE7I,EAAO,iBACT,IAAI,iBAAkBsH,EAAuB,EAAE,QAAS7G,EAAS,CAAC,UAAW,GAAM,QAAS,GAAM,WAAY,EAAI,CAAE,GAEpHA,EAAQE,CAAiB,EAAE,kBAAmB2G,GAAwB,EAAI,EAC1E7G,EAAQE,CAAiB,EAAE,kBAAmB2G,GAAwB,EAAI,EAC1E,YAAYA,GAAwB,GAAG,GAGxCzG,EAAiB,aAAcyG,GAAwB,EAAI,EAG3D,CAAC,QAAS,YAAa,QAAS,OAAQ,gBAAiB,cAAc,EAAE,QAAQ,SAASnF,EAAK,CAC9FhC,EAASQ,CAAiB,EAAEwB,EAAMmF,GAAwB,EAAI,CAC/D,CAAC,EAEG,QAAQ,KAAKnH,EAAS,UAAU,EACnCwI,EAAO,GAEP9H,EAAiB,OAAQ8H,CAAM,EAC/BxI,EAASQ,CAAiB,EAAE,mBAAoB2G,EAAsB,EACtExG,EAAW6H,EAAQ,GAAK,GAGtBtI,EAAU,SAAS,QACrBmG,GAAc,EACdvD,EAAI,SAAS,GAEbqE,GAAuB,CAEzB,EACA,WAAYA,GACZ,OAAQD,GACR,MAAOqB,CACR,CACD,EAAG,EAGCF,GAAa,UAAU,CAC1B,IAAIM,EAEAC,EAAcpF,EAAM,SAASzB,EAAMa,EAAQR,GAAOS,EAAM,CAC3D,IAAIgG,EAAStC,EAAGuC,GAMhB,GALA/G,EAAK,gBAAkBc,EACvBA,GAAS,KAETd,EAAK,aAAa,QAASc,CAAK,EAE7B/B,EAAW,KAAK8B,EAAO,UAAY,EAAE,EAEvC,IADAiG,EAAUjG,EAAO,qBAAqB,QAAQ,EAC1C2D,EAAI,EAAGuC,GAAMD,EAAQ,OAAQtC,EAAIuC,GAAKvC,IACzCsC,EAAQtC,CAAC,EAAE,aAAa,QAAS1D,CAAK,EAIpCT,GAAM,OAAO,UAChBC,EAAeN,EAAMK,GAAM,MAAM,CAEnC,CAAC,EAOG2G,EAAiB,SAAUhH,EAAMiH,EAAUnG,GAAM,CACpD,IAAIT,EACAQ,EAASb,EAAK,WAEfa,IACFC,GAAQF,EAASZ,EAAMa,EAAQC,EAAK,EACpCT,EAAQN,EAAaC,EAAM,kBAAmB,CAAC,MAAOc,GAAO,SAAU,CAAC,CAACmG,CAAQ,CAAC,EAE9E5G,EAAM,mBACTS,GAAQT,EAAM,OAAO,MAElBS,IAASA,KAAUd,EAAK,iBAC1B6G,EAAY7G,EAAMa,EAAQR,EAAOS,EAAK,GAI1C,EAEIoG,EAAsB,UAAU,CACnC,IAAI1C,EACAuC,EAAMH,EAAe,OACzB,GAAGG,EAGF,IAFAvC,EAAI,EAEEA,EAAIuC,EAAKvC,IACdwC,EAAeJ,EAAepC,CAAC,CAAC,CAGnC,EAEI2C,EAA+B/E,EAAS8E,CAAmB,EAE/D,MAAO,CACN,EAAG,UAAU,CACZN,EAAiB3I,EAAS,uBAAuBG,EAAa,cAAc,EAC5EO,EAAiB,SAAUwI,CAA4B,CACxD,EACA,WAAYA,EACZ,WAAYH,CACb,CACD,EAAG,EAECI,GAAO,UAAU,CACjB,CAACA,GAAK,GAAKnJ,EAAS,yBACtBmJ,GAAK,EAAI,GACTd,GAAU,EAAE,EACZ3D,EAAO,EAAE,EAEX,EAEA,OAAA/D,EAAW,UAAU,CACjBR,EAAa,MACfgJ,GAAK,CAEP,CAAC,EAEDjJ,EAAY,CAIX,IAAKC,EACL,UAAWkI,GACX,OAAQ3D,EACR,KAAMyE,GACN,GAAI9G,EACJ,GAAIhB,EACJ,GAAIC,EACJ,GAAIJ,EACJ,KAAMY,EACN,GAAIa,EACJ,IAAKG,CACN,EAEO5C,CACR,CACA,IC7yBA,IAAAkJ,GAAAC,GAAA,QAAG,MAAM,cAAgBC,GAAY,CAEnCA,EAAQ,gBAAgB,SAAS,EACjC,GAAG,GAAGA,EAAS,QAAS,IAAM,CAAEA,EAAQ,OAAO,CAAE,CAAC,CAEpD,CAAC,ICLD,IAAAC,GAAAC,GAAA,QAAG,SAAS,QAAUC,GAAY,CAEhCA,EAAQ,iBAAiB,OAAQ,IAAM,CACrCA,EAAQ,YAAc,CACxB,EAAG,CAAE,KAAM,EAAK,CAAC,CAEnB,CAAC,ICND,IAAAC,GAAAC,GAAA,QAAG,SAAS,sBAAuB,SAASC,EAAS,CACnD,GAAG,GAAGA,EAAS,QAAUC,GAAQ,CAE/B,IAAMC,EAAaF,EAAQ,aAAa,OAAO,EAAE,WAAW,aAAc,EAAE,EAAE,WAAW,IAAK,GAAG,EACjG,SAAS,iBAAiB,IAAIE,GAAY,EAAE,QAASC,GAAY,CAC/DA,EAAQ,UAAU,OAAO,SAAS,CACpC,CAAC,EACDH,EAAQ,UAAU,IAAI,SAAS,CACjC,CAAC,CACH,CAAC,ICTD,IAAAI,GAAAC,GAAA,QAAG,SAAS,2BAA4B,CAACC,EAAS,CAAE,QAAAC,CAAQ,IAAM,CAChED,EAAQ,iBAAiB,QAAS,IAAM,CACtC,MAAMC,CAAO,CACf,CAAC,CACH,CAAC,ICJD,IAAAC,GAAAC,GAAA,SAAIC,GACAC,GAEEC,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqB1B,GAAG,SAAS,eAAgB,CAACC,EAAS,CAAE,QAAAC,EAAS,UAAAC,CAAU,IAAM,CAE/DL,IAAA,OAAAA,GAAmBI,GACnBC,GAAA,OAAAA,EAAc,KAEd,IAAMC,EAAO,IAAI,KAAK,EAAE,QAAQ,EAEhC,SAASC,GAAmB,CAC1B,OAAON,IAAiBK,EAAOL,GAAgBI,CACjD,CAEA,SAASG,GAAyB,CAChC,GAAG,MAAM,KAAK,CACZ,QAASN,GACT,KAAM,OACN,WAAY,IAAM,CAAE,SAAS,OAAO,CAAE,CACxC,CAAC,CACH,CAEIF,KAAmBI,GAAW,CAACG,EAAiB,IAClDC,EAAuB,EACvBP,GAAeK,EAGnB,CAAC,IChDD,IAAAG,GAAAC,GAAA,QAAG,SAAS,gBAAkBC,GAAY,CAExC,IAAMC,EAASD,EAAQ,cAAc,QAAQ,EACvCE,EAAQF,EAAQ,cAAc,oBAAoB,EAExDE,EAAM,iBAAiB,QAASC,CAAO,EACvCH,EAAQ,iBAAiB,SAAUI,CAAQ,EAE3C,SAASD,GAAU,CACjBE,EAAgB,CAClB,CAEA,SAASD,EAASE,EAAO,CACvBA,EAAM,eAAe,EACPC,EAAS,EAGrB,GAAG,QAAQ,MAAMA,EAAS,QAAQ,EAAE,KAAKC,CAAS,EAAE,MAAMC,CAAO,EAEjEP,EAAM,MAAM,CAEhB,CAEA,SAASM,EAAUE,EAAU,CAC3B,GAAG,MAAMA,EAAS,KAAK,GAAG,EAC1BR,EAAM,MAAQ,EAChB,CAEA,SAASO,EAAQC,EAAU,CACzB,MAAMA,EAAS,KAAK,OAAS,sEAAmE,EAChGR,EAAM,MAAM,CACd,CAEA,SAASG,GAAkB,CAGzB,IAAMM,EAAW,CAACJ,EAAS,EAC3BN,EAAO,UAAU,OAAO,WAAYU,CAAQ,EAC5CV,EAAO,UAAU,OAAO,UAAWU,CAAQ,CAC7C,CAEA,SAASJ,GAAW,CAClB,OAAOL,EAAM,MAAM,KAAK,CAC1B,CAEAG,EAAgB,CAElB,CAAC,IC/CD,IAAAO,GAAAC,GAAA,QAAG,SAAS,wBAA0BC,IACpC,SAAS,KAAK,UAAU,IAAI,eAAe,EAEpC,IAAM,CACX,SAAS,KAAK,UAAU,OAAO,eAAe,CAChD,EACD,ICND,IAAAC,GAAAC,GAAA,QAAG,SAAS,eAAiBC,GAAY,CAEvC,IAAMC,EAAQD,EAAQ,cAAc,KAAK,EACrCE,EAAY,GAEhB,eAAeC,GAAU,CACvB,GAAID,EAAW,OAEfA,EAAY,GACZ,IAAME,EAAa,CAACC,EAAQC,EAAMC,CAAO,EACnCC,EAAYJ,EAAW,KAAK,MAAM,KAAK,OAAO,EAAIA,EAAW,MAAM,CAAC,EAE1E,MAAMI,EAAU,EAChBP,EAAM,MAAM,eAAe,WAAW,EACtCA,EAAM,MAAM,eAAe,kBAAkB,EAC7CC,EAAY,EACd,CAEA,eAAeG,GAAS,CACtB,eAAeI,EAASC,EAAQC,EAAU,CACxC,OAAKV,EAAM,aAEX,MAAM,GAAG,QAAQA,EAAO,CAAE,UAAW,eAAeS,MAAY,EAAG,CAAE,SAAUC,EAAW,CAAE,CAAC,EACtF,GAAG,QAAQV,EAAO,CAAE,UAAW,eAAgB,EAAG,CAAE,SAAUU,EAAW,CAAE,CAAC,GAHpD,QAAQ,QAAQ,CAIjD,CAEA,aAAMF,EAAS,IAAK,GAAG,EACvB,MAAMA,EAAS,GAAI,GAAG,EACtB,MAAMA,EAAS,GAAI,EAAE,EACdA,EAAS,GAAI,EAAE,CACxB,CAEA,eAAeH,GAAO,CACpB,OAAO,GAAG,QAAQL,EAAO,CAAE,UAAW,kBAAmB,EAAG,CAAE,SAAU,IAAK,CAAC,CAChF,CAEA,eAAeM,GAAU,CACvB,eAAeK,EAAOC,EAASF,EAAU,CACvC,OAAKV,EAAM,aAEX,MAAM,GAAG,QAAQA,EAAO,CAAE,UAAW,WAAWY,OAAc,EAAG,CAAE,SAAUF,EAAW,EAAI,CAAE,CAAC,EACxF,GAAG,QAAQV,EAAO,CAAE,UAAW,WAAY,EAAG,CAAE,SAAUU,EAAW,EAAI,CAAE,CAAC,GAHpD,QAAQ,QAAQ,CAIjD,CAEA,OAAAV,EAAM,MAAM,YAAY,mBAAoB,aAAa,EACzD,MAAMW,EAAO,GAAI,GAAG,EACbA,EAAO,EAAG,EAAE,CACrB,CAEAZ,EAAQ,iBAAiB,QAASG,CAAO,CAE3C,CAAC,ICnDD,IAAAW,GAAAC,GAAA,QAAG,SAAS,uBAAyBC,GAAS,CAC5C,SAASC,EAAiBC,EAAK,CAC7B,IAAMC,EAAYD,EAAI,OAAO,QAAQ,gBAAgB,EAEjDC,EAAU,UAAU,SAAS,aAAa,GAC5CC,EAAe,EACfD,EAAU,UAAU,OAAO,aAAa,IAExCE,EAAgBF,CAAS,EACzBA,EAAU,UAAU,IAAI,aAAa,EAEzC,CAEA,GAAG,GAAGH,EAAM,QAASC,CAAgB,EACrC,GAAG,GAAG,mBAAoBK,CAAyB,EACnD,GAAG,GAAG,yBAA0BA,CAAyB,EACzD,GAAG,GAAG,sBAAuBA,CAAyB,EACtD,GAAG,GAAG,qBAAsBA,CAAyB,EAErD,SAASA,EAA0BJ,EAAK,CAClC,CAAC,SAAS,mBAAqB,CAAC,SAAS,oBAAsB,CAAC,SAAS,eAAiB,CAAC,SAAS,sBACtGE,EAAe,EACGF,EAAI,OAAO,QAAQ,gBAAgB,EAC3C,UAAU,OAAO,aAAa,EAE5C,CAEA,SAASE,GAAiB,CACpB,SAAS,eACX,SAAS,eAAe,EACf,SAAS,oBAClB,SAAS,oBAAoB,EACpB,SAAS,qBAClB,SAAS,qBAAqB,EACrB,SAAS,kBAClB,SAAS,iBAAiB,CAE9B,CAEA,SAASC,EAAgBL,EAAM,CACzBA,EAAK,kBACPA,EAAK,kBAAkB,EACdA,EAAK,qBACdA,EAAK,qBAAqB,EACjBA,EAAK,wBACdA,EAAK,wBAAwB,EACpBA,EAAK,qBACdA,EAAK,oBAAoB,CAE7B,CACF,CAAC,IClDD,IAAAO,GAAAC,GAAA,QAAG,SAAS,YAAcC,GAAY,CACpCA,EAAQ,iBAAiB,QAAS,IAAM,QAAQ,KAAK,CAAC,CACxD,CAAC,ICFD,IAAAC,GAAAC,GAAA,QAAG,SAAS,sBAAuB,CAACC,EAAS,CAAE,IAAAC,EAAK,WAAAC,EAAa,EAAK,IAAM,CAE1E,GAAIF,EAAQ,QAAQ,aAAa,EAAG,OAEpC,IAAIG,EAEEC,EAAY,GAAG,QAAQ,MAAMJ,EAAQ,cAAe,2BAA2B,EAGrF,GAFAI,EAAU,YAAYJ,CAAO,EAEzBE,EAAY,CACd,IAAMG,EAAS,GAAG,QAAQ,eAAe;AAAA;AAAA;AAAA;AAAA,KAIxC,EACDD,EAAU,YAAYC,CAAM,CAC9B,CAEA,SAASC,GAAe,CACtBH,GAAA,OAAAA,EAAaI,EAAc,GAC3B,GAAG,QAAQ,SAASJ,EAAU,CAAE,KAAM,EAAK,CAAC,CAC9C,CAEA,SAASK,GAAgB,CACvB,GAAG,QAAQ,SAASL,EAAU,CAAE,KAAM,EAAM,CAAC,CAC/C,CAEA,SAASM,GAAkB,CACzBN,GAAA,MAAAA,EAAU,QACZ,CAEA,SAASI,GAAgB,CACvB,OAAAJ,EAAW,GAAG,QAAQ,eAAe;AAAA;AAAA;AAAA,sBAGnBF,GAAOD,EAAQ;AAAA;AAAA;AAAA,KAGhC,EACD,SAAS,KAAK,YAAYG,CAAQ,EAClCA,EAAS,iBAAiB,QAASK,CAAa,EACzCL,CACT,CAEA,OAAAC,EAAU,iBAAiB,QAASE,CAAY,EAEzCG,CAET,CAAC,IChDD,IAAAC,GAAAC,GAAA,KAEA,GAAG,SAAS,yBAA2BC,GAAY,CACjDA,EAAQ,iBAAiB,QAAUC,GAAU,CAG3C,OAFAA,EAAM,eAAe,EACED,EAAQ,KAAK,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK,EAC/B,CACtB,IAAK,aAAc,CAEjB,OAAO,SAAS,EAChB,KACF,CACF,CACF,CAAC,CACH,CAAC,gECLCE,IAAAA,IAAYC,OACV,IAAKC,gBACAC,IAAcC,KAAAA,CAAnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCaXJ,IAAAC,GAAAC,GAAA,QAAG,SAAS,wBAA0BC,GAAY,CAChD,GAAG,GAAGA,EAAS,SAAU,yBAA2BC,GAAU,CAC5DA,EAAM,OAAO,QAAU,CAACA,EAAM,OAAO,OACvC,CAAC,CACH,CAAC,ICJD,IAAAC,GAAAC,GAAA,QAAG,SAAS,4BAA8BC,GAAY,CACpD,SAASC,EAAYC,EAAQ,CAC3B,IAAMC,EAAgBH,EAAQ,YAAcE,EAAO,YAEnD,OADuBF,EAAQ,aAAeE,EAAO,cAC5BC,CAC3B,CAEA,SAASC,GAAa,CACpB,IAAMF,EAASF,EAAQ,cACjBK,EAAO,EACTC,EAAI,EAER,KAAOA,EAAI,IAAI,CAEb,GADAC,EAAYD,CAAC,EACTL,EAAYC,CAAM,EAAG,CACvBI,GAAKD,EACL,KACF,CAEAC,GAAKD,CACP,CAEAE,EAAYD,CAAC,CACf,CAEA,SAASC,EAAYC,EAAU,CAC7BR,EAAQ,MAAM,SAAW,GAAGQ,KAC9B,CAEA,OAAAJ,EAAW,EAEXJ,EAAQ,iBAAiB,kBAAmBI,CAAU,EAE/C,GAAG,GAAG,OAAQ,SAAUA,CAAU,CAC3C,CAAC,EAED,GAAG,GAAG,cAAe,CAAC,CAAE,OAAAK,CAAO,IAAM,CACnC,IAAMC,EAAkBD,EAAO,cAAc,2BAA2B,EACpEC,GACF,GAAG,KAAKA,EAAiB,iBAAiB,CAE9C,CAAC,ICzCD,IAAAC,GAAAC,GAAA,QAAG,SAAS,0BAA4BC,GAAY,CAElD,IAAMC,EADgBD,EAAQ,cAAc,yCAAyC,EACvD,sBAAsB,EAAE,KAChDE,EAAkBF,EAAQ,YAEhCA,EAAQ,OAAOC,EAAWC,EAAkB,EAAI,CAAC,CACnD,CAAC,ICND,IAAAC,GAAAC,GAAA,KAAI,kBAAmB,WACrB,UAAU,cAAc,SAAS,qBAAsB,CAAE,MAAO,GAAI,CAAC,ICDvE,IAAAC,GAAAC,GAAA,QAAG,GAAG,iBAAkB,cAAe,CAAC,CAAE,cAAAC,CAAc,IAAM,CAC5DA,EAAc,SAAW,SAAS,CAAE,SAAAC,CAAS,EAAG,CAC1CA,EAAS,OAAO,oBAAoB,IACtCD,EAAc,WAAa,OAE/B,CACF,CAAC,KCNS,IAAM,CACN,IAAIE,EAAuB,CAC9B,CAEA,IAAM,CAEb,OAAO,GAAK,CACR,QAAS,OACb,CAGM,EAEC,IAAM,CAEb,GAAG,SAAW,SAAUC,EAAY,CAChC,GAAI,OAAO,QAAS,CAChB,IAAIC,EAAOD,EAAW,KAClBE,EAAM,CAAE,CAACD,CAAI,EAAGD,CAAW,EAC3BG,EAAa,UAAY,CACzB,OAAOD,EAAID,CAAI,EAAE,MAAM,KAAM,SAAS,CAC1C,EACA,OAAAE,EAAW,KAAO,IAAM,MAAMD,EAAKD,CAAI,EAChCE,CACX,KAEI,QAAOH,CAEf,CAGM,EAEC,IAAM,CAEb,GAAG,KAAQ,UAAY,CACnB,SAASI,GAAO,CAChB,CACA,SAASC,GAAY,CACjB,OAAO,QAAQ,QAAQ,CAC3B,CACA,SAASC,EAAQC,EAAM,CACnB,IAAIC,EAAaC,EACjB,OAAO,YAAaC,GAAM,CACtB,OAAID,EACOD,GAGPC,EAAS,GACFD,EAAcD,EAAK,MAAM,KAAMG,EAAI,EAElD,CACJ,CACA,IAAMC,EAAyB,CAC3B,KAAM,cACV,EACA,SAASC,EAAaC,EAAKC,EAAS,CAChCA,EAAUC,GAAWD,EAASH,CAAsB,EACpD,IAAMK,EAAQC,EAASJ,CAAG,EACtBK,GAAa,GACbJ,EAAQ,OAAS,iBACjBA,EAAQ,KAAOK,EAAcH,CAAK,GAElCF,EAAQ,OACRI,IAAcF,EAAM,SAAW,KAAOA,EAAM,MAEhD,GAAI,CAAE,SAAAI,EAAS,EAAIJ,EACnB,OAAIF,EAAQ,gBAAkB,IAASM,KAAa,MAChDA,GAAWA,GAAS,QAAQ,MAAO,EAAE,GAEzCF,IAAcE,GACVN,EAAQ,SAAW,KACnBI,IAAcF,EAAM,QAEpBF,EAAQ,OAAS,KACjBI,IAAcF,EAAM,MAEjBE,EACX,CACA,SAASG,EAAUC,EAASC,EAAU,CAClC,OAAOX,EAAaU,CAAO,IAAMV,EAAaW,CAAQ,CAC1D,CACA,IAAMC,EAAe,SAAS,SACxBC,EAAe,SAAS,SAC9B,SAASN,EAAcO,EAAa,CAChC,GAAIC,EAASD,CAAW,GAAMA,EAAY,QAAQ,IAAI,IAAM,GACxD,MAAO,GAEX,IAAMV,EAAQC,EAASS,CAAW,EAClC,OAAQD,IAAiBT,EAAM,UAAcQ,IAAiBR,EAAM,QACxE,CACA,SAASC,EAASJ,EAAK,CACnB,GAAIA,EAAI,SACJ,OAAOA,EAEX,IAAIe,EAAO,SAAS,cAAc,GAAG,EACrC,OAAAA,EAAK,KAAOf,EACLe,CACX,CACA,SAASC,EAAgBC,EAAQ,CAC7B,OAAOA,EAASA,EAAO,YAAY,EAAI,KAC3C,CACA,SAASC,EAAoBD,EAAQ,CACjC,OAAQA,IAAW,OAAWA,IAAW,MAC7C,CACA,SAASE,EAASC,EAAO,CACrB,OAAIN,EAASM,CAAK,EACPC,GAAQA,EAAKD,CAAK,EAGlBA,CAEf,CACA,SAASE,EAAIC,EAAMH,EAAO,CACtB,GAAIG,EAAK,SAAW,EAChB,MAAO,CAAC,EAEZH,EAAQD,EAASC,CAAK,EACtB,IAAII,EAAS,CAAC,EACVC,GAAI,EACR,QAASJ,MAAQE,EACbC,EAAO,KAAKJ,EAAMC,GAAMI,IAAG,CAAC,EAEhC,OAAOD,CACX,CACA,SAASE,EAAUC,EAAOC,EAAQ,CAC9B,IAAMC,EAAS,SAAUC,GAAQC,GAAM,CACnC,OAAAD,GAAOC,GAAK,CAAC,CAAC,EAAIA,GAAK,CAAC,EACjBD,EACX,EACA,OAAOR,EAAIK,EAAOC,CAAM,EAAE,OAAOC,EAAQ,CAAC,CAAC,CAC/C,CACA,SAASG,EAAKL,EAAOP,EAAO,CACxB,IAAIK,EAAI,EACR,QAASJ,MAAQM,EACbP,EAAMC,GAAMI,GAAG,CAEvB,CACA,SAASQ,EAAOH,EAAQ,CACpB,OAAOA,IAAW,IACtB,CACA,SAASI,EAAYJ,EAAQ,CACzB,OAAOA,IAAW,MACtB,CACA,IAAMK,EAAYC,GAAOF,CAAW,EACpC,SAASG,EAAUP,EAAQ,CACvB,OAAOI,EAAYJ,CAAM,GAAKG,EAAOH,CAAM,CAC/C,CACA,IAAMQ,EAAUF,GAAOC,CAAS,EAChC,SAASE,EAAQC,EAAO,CACpB,OAAIH,EAAUG,CAAK,EACR,GAEPC,EAASD,CAAK,GAAKA,EAAMD,EAAQ,GAAG,EAC7BC,EAAMD,EAAQ,GAAG,EAAE,EAE1BzB,EAAS0B,CAAK,GAAKE,EAAOF,CAAK,EACxBA,EAAM,SAAW,EAExBG,GAAUH,CAAK,EACR,OAAO,KAAKA,CAAK,EAAE,SAAW,EAElC,EACX,CACAD,EAAQ,IAAM,kBACd,SAASK,EAASJ,EAAOK,EAASC,EAAW,CACzC,GAAID,EAAOL,CAAK,EACZ,OAAOA,CAEf,CACA,IAAMM,EAAYV,GAAOG,CAAO,EAChC,SAASQ,EAAWjB,EAAQ,CACxB,OAAO,OAAQA,GAAY,UAC/B,CACA,SAAShB,EAASgB,EAAQ,CACtB,OAAQ,OAAQA,GAAY,UAAaA,aAAkB,MAC/D,CACA,SAASkB,EAAUlB,EAAQ,CACvB,OAAQ,OAAQA,GAAY,WAAcA,aAAkB,OAChE,CACA,SAASmB,GAASnB,EAAQ,CACtB,OAAQ,OAAQA,GAAY,UAAaA,aAAkB,MAC/D,CACA,SAASa,GAAUb,EAAQ,CACvB,OAAQ,OAAQA,GAAY,UAAa,CAACG,EAAOH,CAAM,IAAMI,EAAYJ,EAAO,WAAW,GAAMA,EAAO,cAAgB,OAC5H,CACA,SAASW,EAASX,EAAQ,CACtB,IAAMoB,EAAe,OAAQpB,EAC7B,OAASoB,IAAiB,UAAa,CAACjB,EAAOH,CAAM,GAAOoB,IAAiB,UACjF,CACA,SAASC,EAAUrB,EAAQ,CACvB,OAAOA,aAAkB,OAC7B,CACA,SAASsB,EAAStB,EAAQ,CACtB,OAAOA,aAAkB,MAC7B,CACA,SAASuB,EAAQvB,EAAQ,CACrB,OAAOA,aAAkB,KAC7B,CACA,SAASwB,EAASxB,EAAQ,CACtB,OAAO,GAAG,QAAQ,UAAU,GAAKA,aAAkB,MACvD,CACA,SAASyB,EAAazB,EAAQ,CA1MlC,IAAA0B,EA2MQ,MAAO,CAAC,EAAE1B,IAAWA,EAAO,mBAAoB0B,EAAA1B,EAAO,CAAC,IAAR,MAAA0B,EAAW,kBAC/D,CACA,SAASC,EAAU3B,EAAQ,CACvB,OAAOW,EAASX,CAAM,GAAKiB,EAAWjB,EAAO,IAAI,CACrD,CACA,GAAM,CAAE,QAAA4B,EAAQ,EAAI,MACpB,SAASC,EAAW7B,EAAQ,CACxB,OAAOA,aAAkB,QAC7B,CACA,SAAS8B,EAAQpB,EAAO,CACpB,OAAOkB,GAAQlB,CAAK,EAAIA,EAAQqB,EAAcrB,CAAK,CACvD,CACA,SAASE,EAAOF,EAAO,CACnB,OAAOkB,GAAQlB,CAAK,GAChBsB,GAAWtB,CAAK,GAChBuB,GAAYvB,CAAK,GACjBc,EAASd,CAAK,GACdwB,GAAiBxB,CAAK,CAC9B,CACA,SAASsB,GAAWtB,EAAO,CACvB,OAAOA,aAAiB,QAC5B,CACA,SAASwB,GAAiBxB,EAAO,CAC7B,OAAOA,aAAiB,cAC5B,CACA,SAASuB,GAAYvB,EAAO,CACxB,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAK,IAAM,oBACrD,CACA,SAASyB,GAAgBzB,EAAO,CAC5B,GAAI,CAACP,EAAOO,CAAK,EACb,OAAOA,CAEf,CACA,SAAS0B,GAAS1B,EAAO,CACrB,OAAIE,EAAOF,CAAK,EACLA,EAEFH,EAAUG,CAAK,EACb,CAAC,EAGD,CAACA,CAAK,CAErB,CACA,SAAS2B,EAAK3B,EAAO,CACjB,OAAIC,EAASD,CAAK,GAAKA,EAAM2B,EAAK,GAAG,EACjC3B,EAAQA,EAAM2B,EAAK,GAAG,EAAE,EAEnBzB,EAAOF,CAAK,EACjBA,EAAQqB,EAAcrB,CAAK,EAEtBG,GAAUH,CAAK,IACpBA,EAAQ,OAAO,OAAO,CAAC,EAAGA,CAAK,GAE5BA,CACX,CACA,SAASqB,EAAcO,EAAW,CAC9B,OAAO,MAAM,UAAU,MAAM,KAAKA,CAAS,CAC/C,CACAD,EAAK,IAAM,eACX,KAAK,UAAUA,EAAK,GAAG,EAAI,UAAY,CAAE,OAAO,IAAI,KAAK,CAAC,IAAI,CAAG,EACjE,SAASE,MAASC,EAAS,CACvB,OAAO,OAAO,OAAO,CAAC,EAAG,GAAGA,CAAO,CACvC,CACA,SAASC,MAAgBD,EAAS,CAC9B,IAAME,EAAS,CAAC,EAChB,QAASC,KAAUH,EACf,GAAIG,EACA,QAASC,MAAOD,EAAQ,CACpB,IAAMjC,GAAQiC,EAAOC,EAAG,EACpBvC,EAAUK,EAAK,IACfgC,EAAOE,EAAG,EAAIlC,GAEtB,CAGR,OAAOgC,CACX,CACA,SAAStE,GAAW4B,EAAQ6C,EAAU,CAClC,OAAIA,EACON,GAAMM,EAAU7C,CAAM,EAExBA,EACEqC,EAAKrC,CAAM,EAGX,CAAC,CAEhB,CACA,SAAS8C,GAAoB/E,EAAMgF,EAAQ,CACvC,IAAI5E,EAAU6E,GAAejF,CAAI,EACjC,OAAIsC,EAAUtC,EAAK,CAAC,CAAC,IACjBI,EAAUkE,EAAKlE,CAAO,EACtBA,EAAQ4E,CAAM,EAAIhF,EAAK,CAAC,GAErBI,CACX,CACA,SAAS8E,GAAWxD,EAAMsB,EAAQ,CAC9BA,EAAS1B,EAAS0B,CAAM,EACxB,IAAImC,EACJ,QAASC,MAAW1D,EAChB,GAAIsB,EAAOoC,EAAO,EAAG,CACjBD,EAAQC,GACR,KACJ,CAEJ,OAAOD,CACX,CACA,SAASE,GAAK3D,EAAMsB,EAAQ,CACxB,MAAO,CAAC,CAACsC,GAAW5D,EAAMsB,CAAM,CACpC,CACA,SAASsC,GAAW5D,EAAMsB,EAAQ,CAC9BA,EAAS1B,EAAS0B,CAAM,EACxB,IAAIpB,EAAI,EACR,QAASJ,MAAQE,EAAM,CACnB,IAAMiD,GAAS3B,EAAOxB,GAAMI,GAAG,EAC/B,GAAI+C,GACA,OAAOA,EAEf,CACJ,CACA,SAASY,GAAM7D,EAAMsB,EAAQ,CACzBA,EAAS1B,EAAS0B,CAAM,EACxB,IAAImC,EAAQ,GACRvD,GAAI,EACR,QAASJ,MAAQE,EACb,GAAI,CAACsB,EAAOxB,GAAMI,IAAG,EAAG,CACpBuD,EAAQ,GACR,KACJ,CAEJ,OAAOA,CACX,CACA,SAASK,GAAQ1D,EAAO,CACpB,OAAO2D,GAAW3D,EAAOW,CAAO,CACpC,CACA,SAASiD,GAAUhE,EAAMiE,EAAS,CAC9B,OAAOF,GAAWhE,EAAIC,EAAMiE,CAAO,EAAGrD,CAAS,CACnD,CACA,SAASsD,GAAc3D,EAAQ,CAC3B,OAAO4D,GAAO5D,EAAQQ,CAAO,CACjC,CACA,SAASqD,GAAKhE,EAAO,CACjB,OAAIA,EAAM,OAAS,EACRA,EAEJ,MAAM,KAAK,IAAI,IAAIA,CAAK,CAAC,CACpC,CACA,SAASiE,GAAOjE,EAAOkE,EAAQ,CAC3B,GAAIlE,EAAM,OAAS,EACf,OAAOA,EAEXkE,EAAS1E,EAAS0E,CAAM,EACxB,IAAMC,EAAe,IAAI,IACzB,OAAOR,GAAW3D,EAAO,SAAUoE,GAAMC,GAAO,CAC5C,IAAMxE,GAASqE,EAAOE,GAAMC,EAAK,EACjC,OAAIF,EAAa,IAAItE,EAAM,EAChB,IAGPsE,EAAa,IAAItE,EAAM,EAChB,GAEf,CAAC,CACL,CACA,SAAS8D,GAAW/D,EAAMsB,EAAQ,CAC9BA,EAAS1B,EAAS0B,CAAM,EACxB,IAAMoD,EAAU,CAAC,EACjB,OAAAjE,EAAKT,EAAM,SAAU0D,GAASe,GAAO,CACjC,GAAInD,EAAOoC,GAASe,EAAK,EACrB,OAAOC,EAAQ,KAAKhB,EAAO,CAEnC,CAAC,EACMgB,CACX,CACA,SAASC,EAAO3E,EAAMsB,EAAQ,CAC1B,OAAAA,EAAST,GAAOjB,EAAS0B,CAAM,CAAC,EACzByC,GAAW/D,EAAMsB,CAAM,CAClC,CACA,SAASsD,EAAUC,EAAQC,EAAQ,CAC/B,OAAOf,GAAWc,EAAQnB,GAAWqB,GAASD,EAAQpB,CAAO,CAAC,CAClE,CACA,SAASsB,EAAcC,EAAQC,EAAU,CACrC,OAAO,WAAWA,EAAUD,CAAM,CACtC,CACA,SAASE,EAAUC,EAAM,CACrB,OAAO,WAAWA,CAAI,CAC1B,CACA,SAASC,GAAeD,EAAM,CAC1B,OAAO,QAAQ,QAAQ,EAAE,KAAKA,CAAI,CACtC,CACA,SAASE,GAAKrE,EAAO,CACjB,OAAOA,EAAMA,EAAM,OAAS,CAAC,CACjC,CACA,SAAS8D,GAAS9D,EAAOsE,EAAU,CAE/B,OADctE,EAAM,SAAW,MAAM,UAAU,SAChC,KAAKA,EAAOsE,CAAQ,GAAK,CAC5C,CACA,SAASC,GAAejF,EAAQkF,EAAW,CACvC,IAAMC,EAAeC,GAAKpF,EAAQ,OAAO,KAAKkF,CAAS,CAAC,EACxD,OAAOG,GAAQH,EAAWC,CAAY,CAC1C,CACA,SAASC,GAAKpF,EAAQsF,EAAM,CACxB,IAAMC,EAAW,CAAC,EAClB,QAAS3C,MAAO0C,EACR1C,MAAO5C,IACPuF,EAAS3C,EAAG,EAAI5C,EAAO4C,EAAG,GAGlC,OAAO2C,CACX,CACA,SAAS3B,GAAO5D,EAAQe,EAAQ,CAC5BA,EAAS1B,EAAS0B,CAAM,EACxB,IAAMwE,EAAW,CAAC,EAClB,QAAS3C,MAAO5C,EAAQ,CACpB,IAAMU,GAAQV,EAAO4C,EAAG,EACpB7B,EAAOL,GAAOkC,GAAK5C,CAAM,IACzBuF,EAAS3C,EAAG,EAAI5C,EAAO4C,EAAG,EAElC,CACA,OAAO2C,CACX,CACA,SAASC,EAAKxF,EAAQsF,EAAM,CACxB,OAAO1B,GAAO5D,EAAQ,CAACyF,EAAQ7C,KAAQ,CAAC4B,GAASc,EAAM1C,EAAG,CAAC,CAC/D,CACA,SAAS8C,GAAsB,CAC3B,OAAO,IAAI,QAAQjI,CAAI,CAC3B,CACA,SAASkI,EAAO9F,EAAOsD,EAAS,CAC5B,IAAMe,EAAQrE,EAAM,QAAQsD,CAAO,EACnC,GAAIe,GAAS,EACT,OAAArE,EAAM,OAAOqE,EAAO,CAAC,EACdf,CAEf,CACA,SAASyC,GAAWlF,KAAU3C,EAAM,CAChC,OAAOkD,EAAWP,CAAK,EAAIA,EAAM,GAAG3C,CAAI,EAAI2C,CAChD,CACA,SAASmF,GAAenF,EAAOoF,KAAc/H,EAAM,CAC/C,OAAA2C,EAAQkF,GAAWlF,EAAO,GAAG3C,CAAI,EAC7B2C,IAAU,SACVA,EAAQkF,GAAWE,EAAW,GAAG/H,CAAI,GAElC2C,CACX,CACA,IAAMqF,GAAyB,CAC3B,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACT,EACA,SAASC,GAAWC,EAAQ,CACxB,OAAOA,EAAO,QAAQ,WAAYC,GAAQH,GAAuBG,CAAI,CAAC,CAC1E,CACA,SAASC,GAAaF,EAAQ,CAC1B,OAAOA,EAAO,QAAQ,sBAAuB,MAAM,CACvD,CACA,SAASG,GAASpG,EAAQ4C,EAAK,CAC3B,IAAMlC,EAAQV,EAAO4C,CAAG,EACxB,cAAO5C,EAAO4C,CAAG,EACVlC,CACX,CACA,SAAS2F,GAAUrG,EAAQsG,EAAQC,EAAQ,CACvC,OAAOvG,EAAOuG,CAAM,EAAIH,GAASpG,EAAQsG,CAAM,CACnD,CACA,SAASE,GAAezI,EAAMgD,EAAQ,CAClC,GAAIA,EAAOgE,GAAKhH,CAAI,CAAC,EACjB,OAAOA,EAAK,IAAI,CAExB,CACA,SAAS0I,GAAgB1I,EAAM,CAC3B,OAAOyI,GAAezI,EAAMkD,CAAU,CAC1C,CACA,SAAS+B,GAAejF,EAAM,CAC1B,OAAOyI,GAAezI,EAAM8C,EAAS,GAAK,CAAC,CAC/C,CACA,SAAS6F,GAASC,EAAK,CACnB,OAAOA,CACX,CACA,SAASC,GAASC,EAAW,CACzB,OAAAA,EAAYtD,GAAQsD,CAAS,EACtB,IAAI9I,IAASyB,EAAIqH,EAAWC,GAAMA,EAAG,GAAG/I,CAAI,CAAC,CACxD,CACA,SAASgJ,GAAQlH,EAAO,CACpB,IAAMmH,EAAY,CAAC,EACnB,QAAShH,KAAUH,EACXe,EAAOZ,CAAM,EACbgH,EAAU,KAAK,GAAGhH,CAAM,EAGxBgH,EAAU,KAAKhH,CAAM,EAG7B,OAAOgH,CACX,CACA,SAASC,GAAQpH,EAAOP,EAAO,CAC3B,OAAOyH,GAAQvH,EAAIK,EAAOP,CAAK,CAAC,CACpC,CACA,SAAS4H,GAAOC,EAASxC,EAAW+B,GAAU,CAC1C,OAAOS,EAAQ,KAAKxC,EAAUA,CAAQ,CAC1C,CACA,SAASyC,IAAc,CACnB,IAAIC,EACAC,EACEC,EAAgB,IAAI,QAAQ,SAAUC,GAAcC,GAAa,CACnEJ,EAAYG,GACZF,EAAWG,EACf,CAAC,EACD,OAAAF,EAAc,QAAUF,EACxBE,EAAc,OAASD,EAChBC,CACX,CACA,SAASG,GAAsBC,EAAG,CAC9B,OAAO,OAAO,UAAU,eAAeA,CAAC,CAC5C,CACA,SAAStC,GAAQuC,EAAGC,EAAG,CAOnB,GANID,GAAA,MAAAA,EAAG,UACHA,EAAIA,EAAE,QAAQ,GAEdC,GAAA,MAAAA,EAAG,UACHA,EAAIA,EAAE,QAAQ,GAEd,OAAQD,GAAO,OAAQC,EACvB,MAAO,GAEN,GAAIjH,EAAOgH,CAAC,GAAKhH,EAAOiH,CAAC,EAC1B,OAAOC,GAAYF,EAAGC,CAAC,EAEtB,GAAIlH,EAASiH,CAAC,GAAKA,EAAEvC,GAAQ,GAAG,EACjC,OAAOuC,EAAEvC,GAAQ,GAAG,EAAEwC,CAAC,EAEtB,GAAIhH,GAAU+G,CAAC,GAAK/G,GAAUgH,CAAC,EAAG,CACnC,IAAME,EAAQ,OAAO,KAAKH,CAAC,EACrBI,GAAQ,OAAO,KAAKH,CAAC,EAC3B,OAAIC,GAAYC,EAAOC,EAAK,EACjB1E,GAAMyE,EAAOE,IAAQ5C,GAAQuC,EAAEK,EAAI,EAAGJ,EAAEI,EAAI,CAAC,CAAC,EAG9C,EAEf,KAEI,QAAOL,IAAMC,CAErB,CACAxC,GAAQ,IAAM,kBACd,SAASyC,GAAYF,EAAGC,EAAG,CACvB,OAAQD,EAAE,SAAWC,EAAE,QAAWvE,GAAMsE,EAAG,CAAC3D,EAAMC,KAAUmB,GAAQpB,EAAM4D,EAAE3D,EAAK,CAAC,CAAC,CACvF,CACA,IAAMgE,GAAuB,CACzB,WAAY,gBACZ,GAAM,WACN,MAAS,SACb,EACA,SAASC,GAAYzH,EAAOvC,EAAU,CAAC,EAAG,CACtC,GAAIa,EAAS0B,CAAK,EAAG,CAEjB,GADAA,EAAQA,EAAM,KAAK,EACfvC,EAAQ,MAAQ,UAAU,KAAKuC,CAAK,EACpC,OAAO,KAAK,MAAMA,CAAK,EAEtB,CACD,IAAI0H,EAAYjK,EAAQ,WAAa,WACjCkK,GAAUH,GAAqBE,CAAS,EAC5C,OAAO1H,EAAM,MAAM2H,EAAO,CAC9B,CACJ,KAEI,QAAOjG,GAAS1B,CAAK,CAE7B,CACA,SAAS4H,GAAUC,KAAgBxK,EAAM,CACrC,OAAQA,EAAK,CAAC,YAAawK,EAAexK,EAAK,CAAC,EAAI,IAAIwK,EAAY,GAAGxK,CAAI,CAC/E,CACA,IAAIyK,GAAU,EACd,SAASC,IAAM,CACX,OAAOD,IACX,CACA,SAASE,GAAQjJ,EAAM,CACnB,OAAO4C,EAAK5C,CAAI,EAAE,QAAQ,CAC9B,CACA,SAASkJ,GAAW3I,EAAQ4I,EAAa,CACrC,IAAMC,EAAU,CAAC,EACjB,QAASjG,MAAO5C,EACZ6I,EAAQD,EAAYhG,EAAG,CAAC,EAAI5C,EAAO4C,EAAG,EAE1C,OAAOiG,CACX,CACA,SAASC,GAAiBC,EAAK,CAC3B,OAAOA,EAAI,QAAQ,SAAU7C,GAAQ,IAAMA,EAAK,YAAY,CAAC,CACjE,CACA,SAAS8C,GAAeD,EAAK,CACzB,OAAOA,EAAI,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,CAC7C,CACA,SAASE,GAAeF,EAAK,CACzB,OAAOA,EAAI,CAAC,EAAE,YAAY,EAAIA,EAAI,MAAM,CAAC,CAC7C,CACA,SAASG,GAAgBlJ,EAAQmJ,EAAOC,EAAgB,CACpD,QAASC,MAAQF,EACb,OAAO,eAAenJ,EAAQqJ,GAAM,CAChC,KAAM,CACF,IAAMC,GAASF,EAAe,KAAK,IAAI,EACnC1I,GAAQ4I,GAAOD,EAAI,EACvB,OAAIpI,EAAWP,EAAK,IAChBA,GAAQA,GAAM,KAAK4I,EAAM,GAEtB5I,EACX,EACA,IAAI6I,GAAU,CACV,IAAMD,GAASF,EAAe,KAAK,IAAI,EACvCE,GAAOD,EAAI,EAAIE,EACnB,CACJ,CAAC,CAET,CACA,SAASC,GAAa7C,EAAK8C,EAAc,KAAM,CAC3C,IAAIxD,EAEJ,GAAIwD,IAAgB,KAChB,MAAO,GAKX,GAHIA,IAAgB,MAAQjJ,EAAQmG,CAAG,IACnCA,EAAMA,EAAI,SAAS,GAEnB3H,EAAS2H,CAAG,EACZV,EAASU,EAAI,KAAK,EAAE,QAAQ,cAAe,GAAG,EAC1C8C,IAAgB,OAChBxD,EAAS,KAAK,UAAUA,CAAM,WAG7B7F,EAAYuG,CAAG,EACpBV,EAAS,oBAEJ9E,GAASwF,CAAG,GAAK1F,EAAW0F,CAAG,EACpCV,EAASU,EAAI,SAAS,UAEjB/E,GAAQ+E,CAAG,EAChBV,EAAS,IAAIzG,EAAImH,EAAK6C,EAAY,EAAE,KAAK,IAAI,aAExChI,EAASmF,CAAG,EACjBV,EAAS,KAAKzG,EAAImH,EAAK6C,EAAY,EAAE,KAAK,IAAI,aAEzCnI,EAAUsF,CAAG,EAAG,CACrBV,EAAS,IAAIU,EAAI,QAAQ,YAAY,IACrC,QAAS+C,KAAQ,CAAC,KAAM,QAAS,OAAQ,OAAO,EAAG,CAC/C,IAAIhJ,GAAQiG,EAAI,aAAa+C,EAAI,EAC7BhJ,KACAuF,GAAU,IAAIyD,OAAShJ,MAE/B,CACAuF,GAAU,GACd,SACS3E,EAASqF,CAAG,GAAKpF,EAAQoF,CAAG,EACjCV,EAASU,EAAI,SAAS,MAGtB,IAAI,CACAV,EAAS,KAAK,UAAUU,CAAG,CAC/B,OACOgD,GAAP,CACI,GAAIA,GAAM,OAAS,YACf1D,EAAS,2BAGT,OAAM0D,EAEd,CAEJ,OAAI1D,EAAO,OAAS,MAChBA,EAAS,GAAGA,EAAO,OAAO,EAAG,GAAS,UAAKlB,GAAKkB,CAAM,KAEnDA,CACX,CACA,IAAM2D,GAAuB,cAC7B,SAASC,GAAQC,KAAY/L,EAAM,CAC/B,OAAO+L,EAAQ,QAAQF,GAAuBH,GAAgBD,GAAazL,EAAK,MAAM,EAAG0L,CAAW,CAAC,CACzG,CACA,SAASnJ,GAAOwG,EAAI,CAChB,OAAO,YAAa/I,EAAM,CACtB,MAAO,CAAC+I,EAAG,GAAG/I,CAAI,CACtB,CACJ,CACA,SAASgM,GAAqBC,EAAY,CACtC,GAAIA,EAAW,MACX,MAAMA,EAAW,MAGjB,OAAOA,EAAW,KAE1B,CACA,SAASC,GAAuBC,EAASC,EAAMpM,EAAM,CACjD,GAAI,CACA,MAAO,CAAE,MAAOmM,EAAQ,MAAMC,EAAMpM,CAAI,CAAE,CAC9C,OACOqM,GAAP,CACI,MAAO,CAAE,MAAOA,EAAE,CACtB,CACJ,CACA,SAASC,GAAcrK,EAAQsK,EAAa,CACxC,QAASjB,KAAQiB,EAAa,CAE1B,IAAIJ,GADqB,OAAO,yBAAyBlK,EAAQqJ,CAAI,EACpC,MAC7BkB,GAAc,YAAaxM,GAAM,CAjsBjD,IAAA2D,GAksBgB,IAAI8I,GAAQ,KAAA9I,GAAK,KAAK2H,mBAAV,KAAA3H,IAAkC,CAAC,GAC3C+I,GAAW,KAAK,UAAU1M,EAAI,EAClC,OAAAyM,GAAAC,MAAAD,GAAAC,IAAoBR,GAAuBC,GAAS,KAAMnM,EAAI,GACvDgM,GAAqBS,GAAMC,EAAQ,CAAC,CAC/C,EACAzK,EAAOqJ,CAAI,EAAIkB,EACnB,CACJ,CACA,SAASG,GAAkBhK,EAAO,CAC9B,IAAIiK,EAAO,KAAK,UAAUjK,CAAK,EAC/B,OAAOkK,GAAgBD,CAAI,CAC/B,CACA,SAASC,GAAgB3E,EAAQ,CAC7B,IAAI4E,EAAiB3E,GAAS,MAAQA,EAAK,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,EACrF,OAAOD,EAAO,QAAQ,gBAAiB4E,CAAa,CACxD,CACA,SAASC,GAAQnI,EAAQoI,EAAU,CAAC,EAAG,CACnC,IAAID,EAAU,OAAO,OAAOnI,CAAM,EAClC,cAAO,OAAOmI,EAASC,CAAO,EACvBD,CACX,CACA,MAAO,CACH,SAAAxM,EACA,aAAAL,EACA,UAAAS,EACA,gBAAAQ,EACA,oBAAAE,EACA,KAAAiD,EACA,cAAAN,EACA,MAAAQ,GACA,aAAAE,GACA,QAASrE,GACT,oBAAA0E,GACA,KAAA5C,EACA,IAAAV,EACA,QAAAyH,GACA,UAAArH,EACA,WAAAyD,GACA,KAAAD,GACA,MAAAE,GACA,KAAML,GACN,OAAQO,GACR,UAAWC,GACX,OAAAW,EACA,UAAAC,EACA,QAAAd,GACA,cAAAI,GACA,KAAAE,GACA,OAAAC,GACA,KAAAiB,GACA,OAAA5E,EACA,UAAAE,EACA,YAAAD,EACA,QAAAI,EACA,UAAAD,EACA,UAAAS,EACA,QAAAP,EACA,SAAAK,EACA,SAAAH,EACA,WAAAM,EACA,SAAAjC,EACA,UAAAkC,EACA,SAAAC,GACA,UAAAE,EACA,SAAAG,EACA,aAAAC,EACA,UAAAE,EACA,UAAAd,GACA,QAAAe,GACA,WAAAC,EACA,OAAAjB,EACA,SAAAU,EACA,MAAOmD,EACP,SAAAD,GACA,eAAAS,GACA,QAAAnD,EACA,KAAAsD,GACA,OAAAxB,GACA,KAAA4B,EACA,oBAAAE,EACA,OAAAC,EACA,QAAAhI,EACA,SAAAyI,GACA,UAAAC,GACA,eAAArD,GACA,gBAAAyD,GACA,KAAAhJ,EACA,UAAAC,EACA,SAAAgJ,GACA,WAAAV,GACA,aAAAG,GACA,SAAAS,GACA,WAAAhB,GACA,eAAAC,GACA,QAAAkB,GACA,YAAAK,GACA,OAAAF,GACA,sBAAAQ,GACA,cAAAlJ,EACA,KAAMoG,EACN,UAAWE,GACX,QAAAO,GACA,YAAA8C,GACA,SAAA/F,GACA,UAAAkG,GACA,IAAAG,GACA,eAAAQ,GACA,eAAAD,GACA,SAAUE,GACV,QAAAR,GACA,iBAAAI,GACA,gBAAA3G,GACA,QAAA0H,GACA,WAAAlB,GACA,OAAArI,GACA,cAAA+J,GACA,kBAAAK,GACA,QAAAI,EACJ,CACJ,EAAG,CAGG,EAEC,IAAM,CAEb,GAAG,MAAS,UAAY,CACpB,SAASE,KAAQjN,EAAM,CACnB,MAAM,IAAI,GAAG,MAAMA,CAAI,CAC3B,CACA,SAASkN,EAAWtB,EAAO,CACvB,OAAQ,OAAOA,GAAU,UAAeA,EAAM,OAAS,cAAiB,EAAEA,aAAiB,GAAG,eAAiB,EAAEA,aAAiB,GAAG,SACzI,CACA,SAASuB,EAAwB/D,EAAS,CACtC,OAAOA,EAAQ,MAAMgE,CAAa,CACtC,CACA,SAASC,EAAmB9L,EAAO,CAC/B,GAAI,CACA,OAAOA,EAAM,CACjB,OACO8K,EAAP,CACIe,EAAcf,CAAC,CACnB,CACJ,CACA,SAASe,EAAczK,EAAO,CAC1B,GAAIuK,EAAWvK,CAAK,EAChB,MAAMA,CAEd,CACA,SAAS2K,EAAO1B,EAAO,CACnB,QAAQ,MAAM,cAAeA,CAAK,EAClC,IAAI2B,EAAQ,IAAI,WAAW,QAAS,CAAE,MAAA3B,EAAO,QAAS,YAAcA,CAAM,CAAC,EAC3E,OAAO,cAAc2B,CAAK,CAC9B,CACA,SAASC,EAAMzE,EAAI,CACf,GAAI,CACA,OAAOA,EAAG,CACd,OACO6C,EAAP,CACI0B,EAAO1B,CAAK,CAChB,CACJ,CACA,SAAS6B,EAAQ1E,EAAI,CACjB,MAAO,IAAI/I,IAASwN,EAAM,IAAMzE,EAAG,GAAG/I,CAAI,CAAC,CAC/C,CACA,MAAO,CACH,KAAAiN,EACA,cAAAG,EACA,wBAAAD,EACA,mBAAAE,EACA,MAAAG,EACA,QAAAC,CACJ,CACJ,EAAG,EACH,GAAG,KAAO,GAAG,MAAM,IAGb,EAEC,IAAM,CAEb,GAAG,QAAU,CAAE,OAAQ,CAAC,CAAE,CAGpB,EAEC,IAAM,CAEb,GAAG,QAAW,UAAY,CACtB,IAAMC,EAAI,GAAG,KACb,SAASC,EAAWC,EAAM,CACtBA,EAAK,OAAO,CAChB,CACA,SAASC,GAAe,CACpB,OAAO,GAAG,SAAS,qBAAqB,IAAM,KAClD,CACA,SAASC,GAAY,CACjB,MAAO,CAAC,CAAC,OAAO,MACpB,CACA,IAAMC,EAAiBL,EAAE,QAAQ,IAAM,IAAI,SAAS,mBAAmB,CAAC,EACxE,SAASM,EAAUzO,EAAM,CA14B7B,IAAAoE,EA24BQ,IAAIhB,GAAQgB,EAAA,SAAS,OAAO,MAAM,IAAI,OAAOpE,EAAO,SAAS,CAAC,IAAlD,YAAAoE,EAAsD,GAClE,GAAIhB,EACA,gBAAS,OAASpD,EAAO,qBAClBoD,CAEf,CACA,SAASsL,EAAgB7N,EAAS,CAE9B,GAAI,EADc,CAACA,EAAQ,SAAW,OAAO,QAAQA,EAAQ,OAAO,GAEhE,MAAM,IAAI,GAAG,QAAQ,sBAAsB,EAE/C,MAAO,EACX,CACA,MAAO,CACH,WAAAuN,EACA,aAAAE,EACA,UAAAC,EACA,gBAAAG,EACA,UAAAD,EACA,eAAAD,CACJ,CACJ,EAAG,CAGG,EAEC,CAACG,EAAyBC,EAA0BC,IAAwB,CAEnFA,EAAoB,CAAC,EACrB,GAAG,QAAW,UAAY,CACtB,IAAMV,EAAI,GAAG,KACb,SAASW,KAASrO,EAAM,CACpB,IAAMsO,EAAWtO,EAAK,IAAI,EAE1B,OADaA,EAAK,CAAC,GAAK,UACZ,cAAcsO,CAAQ,CACtC,CACA,SAASC,EAAQC,EAAMF,EAAU,CAC7B,IAAMG,EAAU,CAAC,EACjB,OAAID,EAAK,QAAQF,CAAQ,GACrBG,EAAQ,KAAKD,CAAI,EAErBC,EAAQ,KAAK,GAAGD,EAAK,iBAAiBF,CAAQ,CAAC,EACxCG,CACX,CACA,SAAShI,EAAS+H,EAAME,EAAmB,CACvC,IAAMtJ,EAAUuJ,EAAOD,CAAiB,EACxC,OAAO,KAAK,UAAU,SAAS,KAAKF,EAAMpJ,CAAO,CACrD,CACA,SAASwJ,EAASxJ,EAASkJ,EAAU,CA37BzC,IAAA3K,EA47BQ,OAAOA,EAAAyB,EAAQ,aAAR,YAAAzB,EAAoB,QAAQ2K,EACvC,CACA,SAASO,EAAOzJ,EAASkJ,EAAU,CAC/B,OAAOQ,EAAQ1J,EAAQ,QAAQkJ,CAAQ,EAAGC,EAAQnJ,EAASkJ,CAAQ,CAAC,CACxE,CACA,SAASK,KAAU3O,EAAM,CACrB,IAAM2C,EAAQ3C,EAAK,IAAI,EACvB,OAAI0N,EAAE,UAAU/K,CAAK,EACVA,EAEF+K,EAAE,SAAS/K,CAAK,EACd0L,EAAM,GAAGrO,EAAM2C,CAAK,EAEtB+K,EAAE,OAAO/K,CAAK,GACfA,EAAM,OAAS,GACf,GAAG,KAAK,2EAA4EA,CAAK,EAEtFA,EAAM,CAAC,GAGPA,CAEf,CACA,SAASmM,KAAW9O,EAAM,CACtB,OAAO0N,EAAE,QAAQ1N,EAAM+O,CAAW,CACtC,CACA,SAASA,EAAYpM,EAAO,CACxB,OAAI+K,EAAE,SAAS/K,CAAK,EACT,SAAS,iBAAiBA,CAAK,EAG/B+K,EAAE,SAAS/K,CAAK,CAE/B,CACA,SAASqM,EAAK5J,EAAS,CACnBA,EAAQ,aAAa,SAAU,EAAE,CACrC,CACA,SAAS6J,EAAK7J,EAAS,CACnBA,EAAQ,gBAAgB,QAAQ,EAC5BA,EAAQ,MAAM,UAAY,SAC1BA,EAAQ,MAAM,QAAU,GAEhC,CACA,SAAS8J,EAAO9J,EAAS+J,EAAY,CAC7BA,GAAc,OACdA,EAAa,CAACC,EAAUhK,CAAO,IAElC+J,EAAaF,EAAOD,GAAM5J,CAAO,CACtC,CACA,SAASiK,EAAWjK,EAASuG,EAAMhJ,EAAO2M,GAAY,CAIlD,OAHIA,IAAc,OACdA,GAAa,CAAClK,EAAQ,aAAauG,CAAI,GAEvC2D,GACOlK,EAAQ,aAAauG,EAAMhJ,CAAK,EAGhCyC,EAAQ,gBAAgBuG,CAAI,CAE3C,CACA,SAAS4D,EAASnK,EAASoK,EAAO,CAC9B,QAAS3K,KAAO2K,EAAO,CACnB,IAAM7M,GAAQ6M,EAAM3K,CAAG,EACnB6I,EAAE,QAAQ/K,EAAK,EACfyC,EAAQ,aAAaP,EAAKlC,EAAK,EAG/ByC,EAAQ,gBAAgBP,CAAG,CAEnC,CACJ,CACA,SAAS4K,EAAkBrK,EAASoK,EAAO,CACvC,IAAME,EAAW,CAAC,EAClB,QAAS7K,MAAO,OAAO,KAAK2K,CAAK,EAC7BE,EAAS7K,EAAG,EAAIO,EAAQ,aAAaP,EAAG,EAE5C,OAAA0K,EAASnK,EAASoK,CAAK,EAChB,IAAMD,EAASnK,EAASsK,CAAQ,CAC3C,CACA,SAASC,EAAYpQ,EAAM,CA3gC/B,IAAAoE,EA4gCQ,IAAM2K,EAAW,OAASsB,EAAa,OAAQrQ,CAAI,EACnD,OAAOoE,EAAA0K,EAAMC,CAAQ,IAAd,YAAA3K,EAAiB,aAAa,UACzC,CACA,SAASkM,EAAaC,EAAiBC,EAAY,CAC/CD,EAAgB,sBAAsB,cAAeC,CAAU,CACnE,CACA,SAASC,EAAmB1B,EAAUkB,EAAQ,CAAC,EAAG,CAC9C,GAAI,CAAE,YAAAS,CAAY,EAAIC,EAAc5B,CAAQ,EACxC6B,GACAC,GACAC,GACJ,QAASC,MAAkBL,EAAa,CACpC,GAAI,CAAE,QAAAM,GAAS,GAAAC,GAAI,WAAAC,GAAY,WAAAC,EAAW,EAAIJ,IAC1C,CAACC,IAAWA,KAAY,OACxBA,GAAU,OAEdH,GAAe,SAAS,cAAcG,EAAO,EACxCJ,KACDA,GAAcC,IAEdI,KACAJ,GAAa,GAAKI,IAEtB,QAASG,MAAaF,GAClBL,GAAa,UAAU,IAAIO,EAAS,EAExC,QAASC,MAAiBF,GAAY,CAClC,IAAIG,GAAiBH,GAAWE,EAAa,EAC7CR,GAAa,aAAaQ,GAAeC,IAAkB,EAAE,CACjE,CACAR,IAAA,MAAAA,GAAiB,YAAYD,IAC7BC,GAAkBD,EACtB,CACA,QAASvL,MAAO2K,EAAO,CACnB,IAAI7M,GAAQ6M,EAAM3K,EAAG,EACrB,GAAIA,KAAQ,QACR,QAASiM,MAASpD,EAAE,SAAS/K,EAAK,EAC9BwN,GAAY,UAAU,IAAIW,EAAK,OAG9BjM,KAAQ,QACbkM,GAAeZ,GAAaxN,EAAK,EAE5BkC,KAAQ,OACbsL,GAAY,YAAcxN,GAErBkC,KAAQ,UACbsL,GAAY,UAAYxN,GAGxBwN,GAAY,aAAatL,GAAKlC,EAAK,CAE3C,CACA,OAAOwN,EACX,CACA,SAASD,EAAc5B,EAAU,CAC7B,IAAI0C,EACEC,EAAa3C,EAAS,QAAQ,gBAAiB,SAAUnJ,GAAO,CAClE,OAAA6L,EAAa7L,GACN,EACX,CAAC,EACK,CAAC+L,GAAkCC,EAAU,EAAIC,EAAyBH,CAAU,EAgC1F,MAAO,CACH,YAhCoBC,GAAiC,MAAM,OAAO,EACpC,IAAI,SAAUG,GAAe,CAC3D,IAAIC,GAAS,CACT,QAAS,KACT,WAAY,CAAC,EACb,GAAI,KACJ,WAAY,CAAC,CACjB,EACA,OAAAD,GAAgBA,GAAc,QAAQ,WAAY,SAAUlM,GAAO,CAC/D,OAAAmM,GAAO,QAAUnM,GACV,EACX,CAAC,EACDkM,GAAgBA,GAAc,QAAQ,YAAa,SAAUE,GAAQf,GAAI,CACrE,OAAAc,GAAO,GAAKd,GACL,EACX,CAAC,EACDa,GAAgBA,GAAc,QAAQ,cAAe,SAAUE,GAAQZ,GAAW,CAC9E,OAAAW,GAAO,WAAW,KAAKX,EAAS,EACzB,EACX,CAAC,EACGQ,GAAW,SACXE,GAAgBG,EAAqBH,GAAe,SAAU,CAAE,KAAA9R,EAAK,EAAG,CACpE,OAAA+R,GAAO,WAAW/R,EAAI,EAAI4R,GAAW,MAAM,EACpC,EACX,CAAC,GAEDE,IACA,GAAG,KAAK,0BAA4B/C,CAAQ,EAEzCgD,EACX,CAAC,EAGG,WAAAL,EACA,WAAAD,CACJ,CACJ,CACA,IAAMS,EAAwB,mDAC9B,SAASD,EAAqBtJ,EAAQwJ,EAAa,CAC/C,OAAOxJ,EAAO,QAAQuJ,EAAuB,SAAUF,EAAQhS,GAAMoS,GAAUC,GAAOjP,GAAO,CACzF,OAAIA,KACAA,GAAQA,GAAM,QAAQ,aAAc,IAAI,GAErC+O,EAAY,CAAE,KAAAnS,GAAM,SAAAoS,GAAU,MAAAC,GAAO,MAAAjP,EAAM,CAAC,CACvD,CAAC,CACL,CACA,SAASyO,EAAyB9C,EAAU,CACxC,IAAIuD,EAAS,CAAC,EACd,OAAAvD,EAAWkD,EAAqBlD,EAAU,SAAU,CAAE,KAAA/O,EAAM,MAAAoD,EAAM,EAAG,CACjE,OAAAkP,EAAO,KAAKlP,EAAK,EACV,IAAIpD,IACf,CAAC,EACM,CAAC+O,EAAUuD,CAAM,CAC5B,CACA,SAASC,EAAMC,KAAW/R,EAAM,CAC5B,IAAIgS,EAAU1D,GACRoC,GAAahD,EAAE,eAAe1N,CAAI,EACpCA,EAAK,SAAW,EAChB,CAACgS,EAAU1D,EAAQ,EAAItO,GAGvBgS,EAAW,YACX1D,GAAWtO,EAAK,CAAC,GAErB,IAAMoF,GAAU4K,EAAmB1B,GAAUoC,EAAU,EACvD,OAAAqB,EAAO,sBAAsBC,EAAU5M,EAAO,EACvCA,EACX,CACA,IAAM6M,EAAsB,CAAC,OAAQ,OAAQ,OAAQ,OAAO,EACtDC,GAAc,GAAG,SAAS9M,GAAWA,EAAQ,QAAQ6M,EAAoB,KAAK,CAAC,CAAC,EACtF,SAASE,GAAe/M,EAAS,CAC7B,OAAOA,EAAQ,QAAQ,YAAY,CACvC,CACA,SAASwK,EAAawC,EAAWzP,EAAO,CACpC,OAAI+K,EAAE,QAAQ/K,CAAK,GACfA,EAAQA,EAAM,QAAQ,KAAM,KAAK,EAC1B,IAAIyP,MAAczP,OAGlB,IAAIyP,IAEnB,CACA,SAASC,EAAW7B,EAAI,CACpB,OAAIA,EAAG,MAAM,iBAAiB,EACnB,IAAIA,IAGJZ,EAAa,KAAMY,CAAE,CAEpC,CACA,SAAS8B,EAAcxB,EAAO,CAC1B,OAAAA,EAAQA,EAAM,QAAQ,UAAW,MAAM,EAChC,IAAIA,GACf,CACA,SAASyB,EAA6BC,EAAM,CACxC,OAAO,IAAI,UAAU,EAAE,gBAAgBA,EAAM,WAAW,CAC5D,CACA,SAASC,EAAgBC,EAAW,CAChC,IAAIC,EAAQC,EAAeF,EAAU,SAAS,EAC9CA,EAAU,YAAYC,CAAK,CAC/B,CACA,SAASC,EAAeJ,EAAM,CAC1B,IAAMK,EAAQ,SAAS,YAAY,EACnCA,EAAM,SAAS,SAAS,KAAM,CAAC,EAE/B,IAAIC,GADaD,EAAM,yBAAyBL,EAAK,KAAK,CAAC,EACnC,WACxB,GAAIM,GAAS,SAAW,EACpB,MAAM,IAAI,MAAM,sCAAsC,EAE1D,OAAOA,GAAS,CAAC,CACrB,CACA,SAASC,GAAU,CACf,OAAO,SAAS,eACpB,CACA,SAASC,GAAM5N,EAAS,CACpBA,EAAQ,YACZ,CACA,SAAS6N,EAAsB7N,EAAS,CACpC,IAAM8N,EAAOC,GAAkB/N,EAAS,CAAE,WAAY,MAAO,CAAC,EAC9D,OAAA4N,GAAM5N,CAAO,EACN8N,CACX,CACA,SAASE,EAAiBC,EAAoB,CAC1C,IAAIC,EACA5F,EAAE,UAAU2F,CAAkB,EAC9BC,EAAYD,EAGZC,EAAYC,GAAcF,CAAkB,EAEhD,IAAM/H,EAAOgI,EAAU,mBACjBE,GAAWF,EAAU,mBAE3B,MAAO,EADgBhI,IAAS,QAAaA,IAAS,OAAWkI,KAAa,EAElF,CACA,SAASC,EAAgBrO,EAAS,CAC9B,IAAMsO,EAAqBtO,EAAQ,sBAAsB,EACzDA,EAAQ,MAAM,SAAW,WACzB,IAAMuO,EAAmBvO,EAAQ,aAAa,sBAAsB,EACpE2L,GAAe3L,EAAS,CACpB,KAAMsO,EAAmB,KAAOE,GAAoBxO,EAAS,aAAa,EAAIuO,EAAiB,KAC/F,IAAKD,EAAmB,IAAME,GAAoBxO,EAAS,YAAY,EAAIuO,EAAiB,IAC5F,MAAO,GACP,OAAQ,EACZ,CAAC,CACL,CACA,SAASE,GAAgBzO,EAASoK,EAAO,CACrC,QAAS3K,KAAO2K,EACZsE,GAAe1O,EAASP,EAAK2K,EAAM3K,CAAG,CAAC,CAE/C,CACA,SAASiP,GAAe1O,EAASP,EAAKlC,EAAO,CACrC+K,EAAE,UAAUtI,EAAQ,aAAaP,CAAG,CAAC,GACrCO,EAAQ,aAAaP,EAAKlC,CAAK,CAEvC,CACA,SAASoR,GAAOC,EAAS,CACrBC,EAAgB,UAAY,CACxB,IAAMlC,EAASiC,EAAQ,WACjBE,EAAexG,EAAE,QAAQsG,EAAQ,UAAU,EACjDtG,EAAE,KAAKwG,EAAcC,IAAepC,EAAO,aAAaoC,GAAaH,CAAO,CAAC,EAC7EjC,EAAO,YAAYiC,CAAO,CAC9B,CAAC,CACL,CACA,SAASI,GAAahP,EAAS,CAC3B,IAAIiP,EACEL,EAAU,SAAS,cAAc,YAAY,EACnD,KAAQK,EAAYjP,EAAQ,YACxB4O,EAAQ,YAAYK,CAAS,EAEjC,OAAAjP,EAAQ,YAAY4O,CAAO,EACpBA,CACX,CACA,SAASM,GAAUlP,EAAS,CACxB,OAAOA,EAAQ,QAAQ,YAAY,CACvC,CACA,SAAS6O,EAAgBlL,EAAI,CACzB,IAAMwL,EAAkB,SAAS,cACjC,GAAI,CACA,OAAOxL,EAAG,CACd,QACA,CACQwL,GAAmBA,IAAoB,SAAS,eAChDA,EAAgB,MAAM,CAAE,cAAe,EAAK,CAAC,CAErD,CACJ,CACA,SAASC,EAAWpP,EAASgN,EAAW,CACpC,OAAO1E,EAAE,gBAAgBtI,EAAQ,aAAagN,CAAS,CAAC,CAC5D,CACA,SAASqC,GAAYrP,EAASgN,EAAWsC,EAAM,CAC3C,GAAI,CAACtP,EAAQ,aAAagN,CAAS,EAC/B,OACJ,IAAMzP,GAAQ6R,EAAWpP,EAASgN,CAAS,EAC3C,OAAQzP,GAAO,CACX,IAAK,QACD,MAAO,GAEX,IAAK,OACL,IAAK,GACL,KAAKyP,EACD,MAAO,GAEX,QACI,OAAIsC,EACO/R,GAGA,EAGnB,CACJ,CACA,SAASgS,GAAoBvP,EAASgN,EAAW,CAC7C,OAAOqC,GAAYrP,EAASgN,EAAW,EAAI,CAC/C,CACA,SAASwC,GAAWxP,EAASgN,EAAW,CACpC,IAAIzP,EAAQyC,EAAQ,aAAagN,CAAS,EAC1C,GAAIzP,IACAA,EAAQA,EAAM,QAAQ,KAAM,EAAE,EAC1BA,EAAM,MAAM,UAAU,GACtB,OAAO,WAAWA,CAAK,CAGnC,CACA,SAASkS,GAASzP,EAASgN,EAAW,CA3yC1C,IAAAzO,GAAAmR,GA4yCQ,IAAIlI,GAAOkI,IAAAnR,GAAAyB,EAAQ,eAAR,YAAAzB,GAAA,KAAAyB,EAAuBgN,KAAvB,YAAA0C,GAAmC,OAC9C,GAAIlI,EACA,OAAO,KAAK,MAAMA,CAAI,CAE9B,CACA,SAASmI,GAAa7T,EAAMyK,EAAM,CAAE,YAAAqJ,EAAc,CAAC,EAAG,QAAAC,GAAU,OAAQ,EAAI,CAAC,EAAG,CAC5E,IAAIC,GAAOhU,EAAK,aAAayK,CAAI,EACjC,GAAIuJ,GAAM,CACN,IAAMtO,GAAW,GAAG,kBAAkB,WAAWsO,EAAI,EAAE,WAAWD,GAAS,GAAGD,CAAW,EACzF,OAAO,SAAUzH,GAAO,CACpB,IAAM4H,GAAgB,OAAO,OAAOzH,EAAE,KAAKH,GAAOyH,CAAW,CAAC,EAC9D,OAAOpO,GAAS,KAAK1F,EAAMqM,GAAO,GAAG4H,EAAa,CACtD,CACJ,CACJ,CACA,SAASC,GAAYhQ,EAASuG,EAAM0J,EAAUb,EAAY,CACtD,IAAIrP,GAAQC,EAAQ,QAAQ,IAAMuG,EAAO,GAAG,EAC5C,GAAIxG,GACA,OAAOkQ,EAAQlQ,GAAOwG,CAAI,CAElC,CACA,SAASwH,GAAkB/N,EAASkQ,EAAW,CAC3C,IAAMC,EAAYC,GAAYpQ,EAAS,OAAO,KAAKkQ,CAAS,CAAC,EAC7D,OAAAvE,GAAe3L,EAASkQ,CAAS,EAC1B,IAAMvE,GAAe3L,EAASmQ,CAAS,CAClD,CACA,SAASE,GAAkBrQ,EAAS0L,EAAO,CACvC,OAAA1L,EAAQ,UAAU,IAAI0L,CAAK,EACpB,IAAM1L,EAAQ,UAAU,OAAO0L,CAAK,CAC/C,CACA,SAAS4E,GAAiBtQ,EAASuG,EAAMhJ,EAAO,CAC5C,OAAAyC,EAAQ,aAAauG,EAAMhJ,CAAK,EACzB,IAAMyC,EAAQ,gBAAgBA,EAASuG,CAAI,CACtD,CACA,SAAS4H,GAAcnO,EAASgG,EAAO,CACnC,IAAMuK,EAAQ,OAAO,iBAAiBvQ,CAAO,EAC7C,OAAOwQ,GAAuBD,EAAOvK,CAAK,CAC9C,CACA,SAASwI,GAAoBxO,EAASkG,EAAM,CACxC,IAAMuK,EAAWtC,GAAcnO,EAASkG,CAAI,EAC5C,GAAIoC,EAAE,QAAQmI,CAAQ,EAClB,OAAO,WAAWA,CAAQ,CAElC,CACA,SAASL,GAAYpQ,EAASgG,EAAO,CACjC,GAAM,CAAE,MAAAuK,CAAM,EAAIvQ,EAClB,OAAOwQ,GAAuBD,EAAOvK,CAAK,CAC9C,CACA,SAASwK,GAAuBD,EAAOG,EAAW,CAC9C,OAAIpI,EAAE,SAASoI,CAAS,EACbH,EAAMG,CAAS,EAGfpI,EAAE,KAAKiI,EAAOG,CAAS,CAEtC,CACA,SAAS/E,GAAe3L,EAASgG,EAAO,CACpC,GAAIsC,EAAE,SAAStC,CAAK,EAChBhG,EAAQ,aAAa,QAASgG,CAAK,MAElC,CACD,GAAM,CAAE,MAAAuK,CAAM,EAAIvQ,EAClB,QAASP,MAAOuG,EAAO,CACnB,IAAIzI,GAAQyI,EAAMvG,EAAG,EACrBlC,GAAQoT,EAA4BlR,GAAKlC,EAAK,EAC9CgT,EAAM9Q,EAAG,EAAIlC,EACjB,CACJ,CACJ,CACA,SAASoT,EAA4BlR,EAAKlC,EAAO,CAC7C,OAAI+K,EAAE,UAAU/K,CAAK,EACjBA,EAAQ,GAEHqT,EAAiB,IAAInR,EAAI,YAAY,EAAE,QAAQ,IAAK,EAAE,CAAC,IAC5DlC,EAAQsT,EAAUtT,CAAK,GAEpBA,CACX,CACA,IAAMqT,EAAmB,IAAI,IAAI,CAC7B,MAAO,QAAS,SAAU,OAC1B,UAAW,aAAc,eAAgB,gBAAiB,cAC1D,SAAU,YAAa,cAAe,eAAgB,aACtD,cAAe,iBAAkB,mBAAoB,oBAAqB,kBAC1E,QAAS,SACT,WAAY,YACZ,WAAY,WAChB,CAAC,EACD,SAASC,EAAUzW,EAAK,CACpB,OAAIkO,EAAE,SAASlO,CAAG,GAAMkO,EAAE,SAASlO,CAAG,GAAK,QAAQ,KAAKA,CAAG,EAChDA,EAAI,SAAS,EAAI,KAGjBA,CAEf,CACA,SAAS4P,EAAUhK,EAAS,CACxB,MAAO,CAAC,EAAEA,EAAQ,aAAeA,EAAQ,cAAgBA,EAAQ,eAAe,EAAE,OACtF,CACA,SAAS8Q,GAAahO,EAAQ,CAC1B,MAAO,OAAO,KAAKA,CAAM,CAC7B,CACA,SAASiO,GAAQ/Q,EAAS,CACtB,IAAIgR,EAAY1I,EAAE,OAAOtI,EAAQ,kBAAkB,EAAG8Q,EAAY,EAClE,OAAOxI,EAAE,UAAU0I,EAAY7W,GAAS,CAACA,EAAM6F,EAAQ,aAAa7F,CAAI,CAAC,CAAC,CAC9E,CACA,SAAS8W,GAAUjR,EAAS,CACxB,OAAOsI,EAAE,OAAOtI,EAAQ,UAAU,OAAO,EAAG8Q,EAAY,CAC5D,CACA,SAASI,GAAYlR,EAAS,CACtB,GAAG,QAAQ,UAAU,GACrB,OAAOA,CAAO,EAAE,OAAO,CAE/B,CACA,SAASmR,GAAQnR,EAAS,CACtB,MAAO,CAACA,EAAQ,SAAS,OAAS,GAAK,CAACA,EAAQ,UAAU,KAAK,CACnE,CACA,SAASoR,GAAoB7K,EAAM,CAC/B,MAAO,IAAIA,iBAAoBA,SAAY,SAAS,UACxD,CACA,MAAO,CACH,QAAA4C,EACA,SAAA9H,EACA,YAAA2O,GACA,SAAAxG,EACA,OAAAC,EACA,IAAKF,EACL,KAAMG,EACN,OAAAI,EACA,KAAAF,EACA,KAAAC,EACA,YAAAU,EACA,aAAAE,EACA,mBAAAG,EACA,SAAAT,EACA,kBAAAE,EACA,MAAAqC,EACA,WAAAO,EACA,cAAAC,EACA,YAAAJ,GACA,aAAAtC,EACA,QAASuC,GACT,6BAAAI,EACA,gBAAAE,EACA,eAAAG,EACA,IAAI,MAAO,CAAE,OAAOG,EAAQ,CAAG,EAC/B,MAAAC,GACA,sBAAAC,EACA,iBAAAG,EACA,gBAAAK,EACA,gBAAAI,GACA,eAAAC,GACA,OAAAC,GACA,aAAAK,GACA,UAAAE,GACA,KAAME,EACN,YAAAC,GACA,WAAAG,GACA,SAAAC,GACA,aAAAE,GACA,oBAAAJ,GACA,kBAAAxB,GACA,MAAOI,GACP,YAAaK,GACb,YAAA4B,GACA,SAAUzE,GACV,UAAA3B,EACA,QAAA+G,GACA,UAAAE,GACA,WAAAhH,EACA,kBAAAoG,GACA,iBAAAC,GACA,YAAAY,GACA,cAAApG,EACA,QAAAqG,GACA,oBAAAC,EACJ,CACJ,EAAG,CAGG,EAEC,CAACtI,EAAyBuI,EAAqBrI,IAAwB,CAE9E,aACAA,EAAoB,EAAEqI,CAAmB,CAInC,EAEC,IAAM,CAEb,GAAG,MAAQ,cAAoB,OAAO,KAAM,CACxC,YAAY1K,EAASX,EAAQ,CAAC,EAAG,CACzB,MAAM,QAAQW,CAAO,IACrBA,EAAU,GAAG,KAAK,QAAQ,GAAGA,CAAO,GAExC,MAAMA,CAAO,EACb,IAAIxM,EAAO,MAAQ,KAAK,YAAY,KACpC,OAAO,OAAO,KAAM,CAAE,KAAAA,CAAK,EAAG6L,CAAK,CACvC,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,eAAiB,cAA6B,GAAG,KAAM,CAC1D,CAGM,EAEC,IAAM,CAEb,GAAG,QAAU,cAAsB,GAAG,KAAM,CACxC,YAAYW,EAAS,CACjB,MAAMA,EAAS,CAAE,KAAM,YAAa,CAAC,CACzC,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,YAAc,cAA0B,GAAG,KAAM,CACpD,CAGM,EAEC,IAAM,CAEb,GAAG,YAAc,cAA0B,GAAG,KAAM,CACpD,CAGM,EAEC,IAAM,CAEb,GAAG,aAAe,cAA2B,GAAG,KAAM,CACtD,CAGM,EAEC,IAAM,CAEb,GAAG,QAAU,cAAsB,GAAG,KAAM,CAC5C,CAGM,EAEC,IAAM,CAEb,IAAM2B,EAAI,GAAG,KACb,GAAG,OAAS,KAAa,CACrB,MAAO,CACH,KAAM,yBACV,CACA,SAASgJ,EAAU,CACf,MAAO,CAAC,CACZ,CACA,YAAYtW,EAAS,CACjB,OAAO,OAAO,KAAM,KAAK,SAASA,CAAO,EAAG,KAAK,WAAWA,CAAO,CAAC,CACxE,CACA,WAAWwE,EAAS,KAAM,CACtB,OAAO8I,EAAE,KAAK9I,EAAQ,KAAK,KAAK,CAAC,CACrC,CACA,CAAC8I,EAAE,KAAK,GAAG,GAAI,CACX,OAAOA,EAAE,QAAQ,IAAI,CACzB,CACA,CAACA,EAAE,QAAQ,GAAG,EAAEiJ,EAAO,CACnB,OAAQ,KAAK,cAAgBA,EAAM,aAAgBjJ,EAAE,QAAQ,KAAK,WAAW,EAAGiJ,EAAM,WAAW,CAAC,CACtG,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMjJ,EAAI,GAAG,KACb,GAAG,OAAS,KAAa,CACrB,YAAYkJ,EAAe,KAAO,CAAC,GAAK,CACpC,KAAK,aAAeA,EACpB,KAAK,MAAM,EACX,SAAS,iBAAiB,qBAAsB,IAAM,KAAK,MAAM,CAAC,CACtE,CACA,OAAQ,CACJ,OAAO,OAAO,KAAM,KAAK,aAAa,CAAC,CAC3C,CACA,QAAQxR,EAASkG,EAAM,CACnB,OAAOlG,EAAQ,QAAQ,KAAK,SAASkG,CAAI,CAAC,CAC9C,CACA,SAASA,EAAM,CACX,IAAIuL,EAAW,KAAKvL,CAAI,EACpBwL,EAAW,KAAK,KAAOpJ,EAAE,eAAepC,CAAI,CAAC,EAC7CgD,EAAW,OAAOuI,EAAS,KAAK,KACpC,OAAInJ,EAAE,UAAUoJ,CAAQ,IACpBxI,GAAY,QAAQwI,EAAS,KAAK,MAC/BxI,CACX,CACA,WAAWhD,EAAM,CACb,MAAO,IAAM,KAAK,SAASA,CAAI,CACnC,CACJ,CAGM,EAEC,IAAM,CAEb,IAAIyL,EAAa,iBACbC,EAAU,GACd,GAAI,CACAA,EAAU,CAAC,EAAC,qCAAgB,QAAQD,GACxC,MACA,CACA,CACA,GAAG,UAAY,cAAwB,GAAG,MAAO,CAC7C,aAAc,CACV,MAAM,KAAO,CACT,OAAQ,GACR,OAAQ,EACZ,EAAE,CACN,CACA,IAAI,SAAU,CACV,OAAOC,CACX,CACA,IAAI,QAAQC,EAAY,CACpBD,EAAUC,EACV,GAAI,CACA,qCAAgB,QAAQF,EAAYE,EAAa,IAAM,GAC3D,MACA,CACA,CACJ,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMvJ,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,cAAgB,KAAoB,CACnC,YAAYjH,EAAShF,EAAS8W,EAAgB,CAAC,EAAG,CAC9C,KAAK,SAAW9W,EAChB,KAAK,SAAWgF,EAChB,KAAK,eAAiB8R,EACtB,KAAK,MAAQA,EAAc,KAC3B,KAAK,SAAWA,EAAc,QAC9B,KAAK,YAAcA,EAAc,YAAc,MAC/C,KAAK,UAAYA,EAAc,UAAY,CAAC,CAChD,CACA,OAAOrS,EAAKsS,EAAY,CACpB,KAAK,MAAM9K,EAAE,KAAMxH,EAAKsS,CAAU,CACtC,CACA,QAAQtS,EAAKsS,EAAY,CACrB,KAAK,MAAM9K,EAAE,YAAaxH,EAAKsS,CAAU,CAC7C,CACA,OAAOtS,EAAKsS,EAAY,CACpB,KAAK,MAAM9K,EAAE,WAAYxH,EAAKsS,CAAU,CAC5C,CACA,gBAAgBtS,EAAKsS,EAAY,CAC7B,KAAK,MAAM9K,EAAE,oBAAqBxH,EAAKsS,CAAU,CACrD,CACA,KAAKtS,EAAKsS,EAAY,CAClB,KAAK,MAAM9K,EAAE,SAAUxH,EAAKsS,CAAU,CAC1C,CACA,SAAStS,EAAKsS,EAAa,CAAC,EAAG,CAC3B,IAAIC,EAAS,CAAClW,EAAMyK,IAASU,EAAE,aAAanL,EAAMyK,EAAMwL,CAAU,EAClE,KAAK,MAAMC,EAAQvS,EAAKsS,CAAU,CACtC,CACA,MAAME,EAAaxS,EAAKsS,EAAa,CAAC,EAAG,CAxqD7C,IAAAxT,EAAAmR,EAyqDQ,IAAMsB,EAAY1I,EAAE,UAAS/J,EAAAwT,EAAW,OAAX,KAAAxT,EAAmB,KAAK,gBAAgBkB,CAAG,CAAC,EACrElC,EAAQ,KAAK,SAASkC,CAAG,EAC7B,QAASyS,KAAYlB,EACjBzT,GAAA,OAAAA,EAAU,KAAK,eAAe0U,EAAa,KAAK,SAAUC,CAAQ,GAEtE3U,GAAA,OAAAA,GAAUmS,EAAAqC,EAAW,UAAX,KAAArC,EAAsB,KAAK,UAAUjQ,CAAG,GAClD,IAAI0S,EAAcJ,EAAW,UACzBI,IACA5U,EAAQ4U,EAAY5U,CAAK,GAEzB+K,EAAE,UAAU/K,CAAK,IACjB,KAAK,SAASkC,CAAG,EAAIlC,GAEzB,IAAI6U,EACJ,GAAI,KAAK,QAAUA,EAAU,GAAG,SAAS,QAAQ3S,CAAG,GAAI,CACpD,IAAM4S,EAAgB/J,EAAE,QAAQA,EAAE,IAAI0I,EAAYkB,GAAa,KAAK,oBAAoBA,CAAQ,CAAC,CAAC,EAClG,KAAK,MAAMD,EAAaG,EAAS,CAAE,GAAGL,EAAY,KAAMM,CAAc,CAAC,CAC3E,CACJ,CACA,QAAQC,EAAW,CACf,IAAIC,EAAWD,EAAU,KAAK,SAAU,KAAK,SAAU,KAAK,cAAc,EAC1E,OAAO,OAAO,KAAK,SAAUC,CAAQ,CACzC,CACA,eAAeN,EAAajS,EAASkS,EAAU,CAC3C,OAAI,KAAK,SACEjL,EAAE,YAAYjH,EAASkS,EAAUD,CAAW,EAG5CA,EAAYjS,EAASkS,CAAQ,CAE5C,CACA,oBAAoB3L,EAAM,CACtB,OAAO,KAAK,6BAA6BA,EAAM,KAAK,YAAc,KAAK,GACnE,KAAK,6BAA6BA,EAAM,KAAK,WAAW,CAChE,CACA,6BAA6BA,EAAMiM,EAAQ,CACvC,GAAIjM,EAAK,WAAWiM,CAAM,EACtB,MAAO,GAAGA,SAAcjM,EAAK,UAAUiM,EAAO,MAAM,GAE5D,CACA,gBAAgBC,EAAQ,CACpB,MAAO,GAAG,KAAK,cAAcnK,EAAE,iBAAiBmK,CAAM,GAC1D,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMnK,EAAI,GAAG,KACb,GAAG,UAAY,KAAgB,CAC3B,YAAY,CAAE,SAAAoK,EAAW,GAAI,aAAAC,EAAerK,EAAE,QAAS,EAAI,CAAC,EAAG,CAC3D,KAAK,KAAO,IAAI,IAChB,KAAK,UAAYoK,EACjB,KAAK,cAAgBC,CACzB,CACA,IAAIlT,EAAK,CACL,OAAAA,EAAM,KAAK,cAAcA,CAAG,EACrB,KAAK,KAAK,IAAIA,CAAG,CAC5B,CACA,IAAIA,EAAKlC,EAAO,CACZ,GAAI,KAAK,KAAK,OAAS,KAAK,UAAW,CACnC,IAAIqV,EAAY,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,MACxC,KAAK,KAAK,OAAOA,CAAS,CAC9B,CACAnT,EAAM,KAAK,cAAcA,CAAG,EAC5B,KAAK,KAAK,IAAIA,EAAKlC,CAAK,CAC5B,CACA,OAAQ,CACJ,KAAK,KAAK,MAAM,CACpB,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,KAAO,cAAmB,GAAG,MAAO,CACnC,MAAO,CACH,MAAO,CACH,OACA,MACA,QACA,QACJ,CACJ,CACA,IAAI,QAAS,CACT,OAAO,KAAK,IAAM,KAAK,MAC3B,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,KAAO,KAAK,KAC5B,CACA,OAAO,YAAYyC,EAAS,CACxB,OAAO,IAAK,KAAMA,EAAQ,sBAAsB,CAAC,CACrD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMiH,EAAI,GAAG,QACb,GAAG,YAAc,KAAkB,CAC/B,aAAc,CACV,KAAK,YAAc,CAAC,EACpB,KAAK,kBAAoB,IAAI,IAC7B,KAAK,OAAS,CAClB,CACA,YAAa,CACT,KAAK,SACD,KAAK,SAAW,GAChB,KAAK,YAAY,CAEzB,CACA,YAAa,CACT,KAAK,SACD,KAAK,SAAW,GAChB,KAAK,UAAU,CAEvB,CACA,0BAA0BjH,EAAS,CAC/B,YAAK,kBAAkB,IAAIA,CAAO,EAC9B,KAAK,WAAW,GAChB,KAAK,sBAAsBA,CAAO,EAE/B,IAAM,KAAK,kBAAkB,OAAOA,CAAO,CACtD,CACA,YAAa,CACT,OAAO,KAAK,qBAAuB,KAAK,OAAS,CACrD,CACA,WAAY,CAGR,GAFA,KAAK,gBAAkB,GAAG,SAAS,eAAe,EAClD,KAAK,oBAAsB,GAAG,SAAS,iCAAiC,EACpE,EAAC,KAAK,oBAEV,MAAK,WAAW,EAChB,QAASA,KAAW,KAAK,kBACrB,KAAK,sBAAsBA,CAAO,EAE1C,CACA,YAAa,CACT,IAAM6S,EAAkB,GAAG,SAAS,oBAAoB,EACxD,KAAK,aAAaA,EAAiB,CAAE,UAAW,QAAS,CAAC,EAC1D,GAAM,CAAE,KAAAC,CAAK,EAAI,SACXC,EAAmB9L,EAAE,YAAY6L,EAAM,cAAc,EACrDE,EAAiB,KAAK,gBAAkBD,EAC9C,KAAK,aAAaD,EAAM,CAAE,aAAcE,CAAe,CAAC,CAC5D,CACA,sBAAsBhT,EAAS,CAC3B,IAAMiT,EAAehM,EAAE,YAAYjH,EAAS,OAAO,EAC7CkT,EAAoB,KAAK,gBAAkBD,EACjD,KAAK,aAAajT,EAAS,CAAE,MAAOkT,CAAkB,CAAC,CAC3D,CACA,aAAalT,EAASmT,EAAQ,CAC1B,KAAK,YAAY,KAAKlM,EAAE,kBAAkBjH,EAASmT,CAAM,CAAC,CAC9D,CACA,aAAc,CACV,IAAIC,EACJ,KAAOA,EAAY,KAAK,YAAY,IAAI,GACpCA,EAAU,CAElB,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM9K,EAAI,GAAG,KACb,GAAG,OAAS,KAAa,CACrB,YAAYtN,EAAS,CACjB,KAAK,QAAUA,CACnB,CACA,SAAU,CACN,MAAM,IAAI,GAAG,cACjB,CACA,WAAWqY,EAAc,CA71D7B,IAAA9U,EAAAmR,EA81DQ,OAAOA,GAAAnR,EAAA,KAAK,SAAQ,aAAb,YAAAmR,EAAA,KAAAnR,EAA0B8U,EACrC,CACA,oBAAoBC,EAAelN,EAAU,CACzC,OAAKkN,IAAkB,IAAUhL,EAAE,SAASgL,CAAa,EAC9CA,EAGAlN,CAEf,CACA,mBAAoB,CAChB,OAAO,GAAG,cAAc,kBAAkB,KAAK,OAAO,CAC1D,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMkC,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,OAAO,SAAW,cAAuB,GAAG,MAAO,CAClD,YAAYjM,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,aAAeA,EAAQ,YAC5B,KAAK,cAAgBA,EAAQ,aAC7B,KAAK,YAAcA,EAAQ,YAAc,CAAC,EAC1C,KAAK,UAAYA,EAAQ,QAC7B,CACA,2BAA4B,CACpB,KAAK,MAAM,UAAU,IACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,MAAM,qBAAqB,KAAK,eAAe,CAAC,EACrD,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,KAAK,MAAM,sBAAsB,KAAK,eAAe,CAAC,EACtD,KAAK,qBAAqB,GAE9B,KAAK,MAAM,UAAU,IAAM,CACvB,QAASuY,KAAa,KAAK,YACvB,GAAG,KAAK,CAAE,GAAGA,EAAW,GAAG,KAAK,eAAe,CAAE,CAAC,EAClD,KAAK,qBAAqB,CAElC,CAAC,CACL,CACA,0BAA2B,CACnBjL,EAAE,UAAU,KAAK,YAAY,GAAK,KAAK,MAAM,UAAU,GACvD,KAAK,MAAM,OAAO,KAAK,aAAc,KAAK,eAAe,CAAC,CAElE,CACA,2BAA4B,CACpBA,EAAE,UAAU,KAAK,aAAa,GAAK,KAAK,MAAM,UAAU,GACxD,KAAK,MAAM,QAAQ,KAAK,cAAe,KAAK,eAAe,CAAC,CAEpE,CACA,qBAAqBkL,EAAQ,KAAK,MAAO,CACrC,GAAIA,EAAM,SAAS,EACf,MAAM,IAAI,GAAG,QAAQ,kBAAkB,CAE/C,CACA,UAAU,CAAE,WAAAC,EAAY,WAAA9I,EAAY,OAAAnL,CAAO,EAAG,CACtCA,IAAW,SACXA,EAAUiU,GAAc,GAAG,SAAS,OAAOA,CAAU,GAErDjU,GACAyH,EAAE,eAAe0D,EAAY,YAAarC,EAAE,aAAa9I,EAAQ,CAAE,KAAM,EAAM,CAAC,CAAC,CAEzF,CACA,QAAQ,CAAE,WAAAmL,EAAY,KAAA+I,CAAK,EAAG,CAC1BzM,EAAE,eAAe0D,EAAY,UAAW+I,EAAOA,EAAK,YAAY,EAAI,EAAK,CAC7E,CACA,QAAQ,CAAE,WAAA/I,EAAY,KAAAgJ,CAAK,EAAG,CAC1B1M,EAAE,eAAe0D,EAAY,UAAWgJ,GAAQ,EAAK,CACzD,CACA,eAAe3Y,EAAS,CACpB,KAAK,UAAUA,CAAO,EACtB,KAAK,QAAQA,CAAO,EACpB,KAAK,QAAQA,CAAO,CACxB,CACA,gBAAiB,CACb,MAAO,CAAE,SAAU,KAAK,SAAU,CACtC,CACA,aAAa4Y,EAAOC,EAAaC,EAAa,CAC1C,OAAO,IAAI,GAAG,OAAO,YAAY,CAAE,MAAAF,EAAO,YAAAE,CAAY,CAAC,EAAE,QAAQD,CAAW,CAChF,CACJ,CAGM,EAEC,IAAM,CAEb,IAAItV,EACJ,IAAM+J,EAAI,GAAG,KACb,GAAG,WAAa/J,EAAK,KAAgB,CAC7B,YAAYvD,EAAS,CACjB,KAAK,QAAU,GAAG,cAAc,WAAWA,CAAO,CACtD,CACA,SAAU,CACN,YAAK,UAAY,KAAK,gBAAgB,EAC/B,IACX,CACA,MAAM,iBAAkB,CACpB,GAAI,CACA,KAAK,aAAa,EAClB,IAAIuE,EAAS,MAAM,KAAK,WAAW,EAAE,QAAQ,EAC7C,YAAK,cAAcA,CAAM,EAClBA,CACX,OACOwU,EAAP,CACI,WAAK,cAAcA,CAAa,GAAK,KAAK,aAAaA,CAAa,EAC9DA,CACV,CACJ,CACA,cAAcxU,EAAQ,CAClB,GAAIA,aAAkB,GAAG,aAAc,CACnC,GAAI,CAAE,WAAAyU,EAAY,WAAAC,CAAW,EAAI1U,EAAO,QACnCA,EAAO,MACR,GAAG,MAAM,MAAM,IAAMyU,GAAA,YAAAA,EAAazU,EAAO,EAC7C,IAAI2U,EAAoB,SAAU3U,EAAQ,CACtC,GAAG,MAAM,MAAM,IAAM0U,GAAA,YAAAA,EAAa1U,EAAO,CAC7C,EACA,YAAK,SAAS,KAAK2U,EAAmB5L,EAAE,IAAI,EACrC,EACX,CACJ,CACA,aAAa9B,EAAO,CAChB,IAAIgM,EAAShM,aAAiB,GAAG,QAAU,wBAA0B,wBACrE,GAAG,KAAK,cAAe,GAAGgM,MAAWhM,EAAM,SAASA,EAAM,SAAS,EACnE,GAAG,MAAM,MAAM,IAAG,CAl+D9B,IAAAjI,EAAAmR,EAk+DiC,OAAAA,GAAAnR,EAAA,KAAK,SAAQ,UAAb,YAAAmR,EAAA,KAAAnR,EAAuBiI,GAAM,CACtD,CACA,IAAI,UAAW,CACX,OAAO,KAAK,eAAe,CAC/B,CACA,MAAM,gBAAiB,CACnB,GAAI,CAEA,OAAO,MADM,MAAM,KAAK,WACJ,QACxB,OACOA,EAAP,CACI,MAAIA,aAAiB,GAAG,aACd,MAAMA,EAAM,SAGZA,CAEd,CACJ,CACA,YAAa,CACT,GAAI,KAAK,QAAQ,IAAK,CAClB,IAAI2N,EAAaC,GAAY,KAAK,mBAAmBA,CAAO,EAC5D,OAAO,IAAI,GAAG,OAAO,QAAQ,CAAE,GAAG,KAAK,QAAS,UAAAD,CAAU,CAAC,CAC/D,SACS,KAAK,QAAQ,SAAU,CAC5B,IAAIE,EAAW,IAAM,KAAK,mBAAmB,IAAI,EACjD,OAAO,IAAI,GAAG,OAAO,aAAa,CAAE,GAAG,KAAK,QAAS,SAAAA,CAAS,CAAC,CACnE,KACK,CACD,IAAIA,EAAW,IAAM,KAAK,mBAAmB,IAAI,EACjD,OAAO,IAAI,GAAG,OAAO,YAAY,CAAE,GAAG,KAAK,QAAS,SAAAA,CAAS,CAAC,CAClE,CACJ,CACA,cAAe,CACX,GAAG,QAAQ,gBAAgB,KAAK,OAAO,EACvC,IAAIC,EAAahM,EAAE,SAAS,KAAK,QAAS,YAAY,EACtD,GAAIgM,IACAA,EAAW,cAAgB,KAAK,QAC5B,GAAG,KAAKA,EAAY,CAAE,OAAQ,KAAK,QAAQ,MAAO,CAAC,EAAE,kBACrD,MAAM,IAAI,GAAG,QAAQ,8BAA8BA,EAAW,eAAe,EAGrF,GAAG,cAAc,mBAAmB,KAAK,OAAO,CACpD,CACA,mBAAmBF,EAAS,CACxB,GAAI,CAAE,MAAAG,CAAM,EAAI,KAAK,QACrB,GAAI,CAACA,GAAS,CAAC,GAAG,QAAQ,OAAO,EAC7B,OACJ,GAAI,CAAE,UAAAC,EAAW,MAAAhB,EAAO,OAAAiB,EAAQ,SAAAC,CAAS,EAAI,KAAK,WAAW,EAAE,kBAAkB,EAC7EC,EAAe,CACf,OAAQP,EACR,QAAS,CAAC,cAAe,wDAAwD,EACjF,SAAAM,EACA,OAAAD,CACJ,EACIF,IAAU,SACV,GAAG,SAAS,MAAMC,EAAWG,CAAY,EAEpCJ,IAAU,QACf,GAAG,SAAS,MAAM,CAAE,GAAGI,EAAc,MAAAnB,CAAM,CAAC,EAEvCe,IAAU,OAASA,IAAU,GAClC,GAAG,SAAS,MAAM,CAAE,GAAGI,EAAc,MAAO,KAAM,CAAC,EAE9CrM,EAAE,WAAWiM,CAAK,EACvBA,EAAMI,CAAY,EAGlB,GAAG,SAAS,MAAMJ,EAAO,CAAE,GAAGI,EAAc,MAAAnB,CAAM,CAAC,CAE3D,CACJ,EAEIlL,EAAE,SAAS/J,EAAG,UAAW,CAAC,OAAQ,QAAS,SAAS,EAAG,UAAY,CAAE,OAAO,KAAK,SAAW,CAAC,EAC7F+J,EAAE,cAAc/J,EAAG,UAAW,CAC1B,eAAgB,GAChB,WAAY,EAChB,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,GAAG,OAAO,QAAU,cAAsB,GAAG,MAAO,CACpD,CAGM,EAEC,IAAM,CAEb,GAAG,OAAO,gBAAkB,cAA8B,GAAG,OAAO,OAAQ,CACxE,YAAYvD,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,OAAS,GAAG,MAAM,IAAIA,CAAO,GAAK,GAAG,MAAM,QAChD,KAAK,SAAW,KAAK,QAAQ,QAC7B,KAAK,WAAa,KAAK,QAAQ,UAC/B,KAAK,KAAO,KAAK,QAAQ,GAC7B,CACA,SAAU,CACN,KAAK,QAAU,KAAK,SAAS,WAC7B,GAAG,SAAS,iBAAiB,KAAK,QAAQ,EACtC,GAAG,OAAO,YAAY,KAAK,SAAU,KAAK,WAAY,KAAK,OAAO,EAClE,KAAK,uBAAuB,EAG5B,KAAK,YAAY,CAEzB,CACA,MAAM,wBAAyB,CAC3B,KAAK,eAAe,EACpB,MAAM,KAAK,SAAS,EACpB,KAAK,MAAM,EACX,KAAK,WAAW,CACpB,CACA,aAAc,CACV,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,WAAW,CACpB,CACA,UAAW,CACP,OAAO,GAAG,OAAO,QAAQ,KAAK,SAAU,KAAK,WAAY,KAAK,OAAO,CACzE,CACA,OAAQ,CACJ,KAAK,OAAO,UAAU,IAAM,CACxB,GAAG,SAAS,MAAM,KAAK,QAAQ,EAC/B,GAAG,OAAO,MAAM,KAAK,SAAU,CAAE,MAAO,KAAK,MAAO,CAAC,EACrD,GAAG,QAAQ,YAAY,KAAK,QAAQ,EACpC,KAAK,SAAS,OAAO,CACzB,CAAC,CACL,CACA,gBAAiB,CACb,GAAG,SAAS,cAAc,KAAK,SAAU,CAAE,OAAQ,KAAK,QAAS,IAAK,KAAK,IAAK,CAAC,CACrF,CACJ,CAGM,EAEC,IAAM,CAEb,IAAIsN,EAAI,GAAG,KACX,GAAG,OAAO,UAAY,cAAwB,GAAG,OAAO,QAAS,CAC7D,YAAYtN,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,OAASA,EAAQ,OACtB,KAAK,QAAUA,EAAQ,OACvB,KAAK,WAAaA,EAAQ,SAC9B,CACA,mBAAoB,CAChB,MAAO,CACH,KAAM,KAAK,QAAQ,KACnB,QAAS,KAAK,YAAY,EAAE,QAC5B,OAAQ,KAAK,QAAQ,OACrB,OAAQ,KAAK,OACb,MAAO,KAAK,WACZ,UAAWsN,EAAE,QAAQ,CAAC,GAAG,SAAS,IAAI,QAAS,CAAE,MAAO,KAAK,UAAW,CAAC,CAAC,CAAC,EAC3E,SAAU,EACd,CACJ,CACA,QAAQuL,EAAae,EAAc,CAC/B,KAAK,YAAcf,EACnB,KAAK,iBAAiB,EACtBe,EAAa,EACb,KAAK,eAAe,EACpB,IAAIC,EAAgB,KAAK,MAAM,GAAG,wCAAyC,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAC7G,GAAI,CACA,YAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACjB,GAAG,aAAa,KAAK,KAAK,kBAAmB,KAAK,kBAAkB,CAC/E,QACA,CACIA,EAAc,CAClB,CACJ,CACA,kBAAmB,CAOf,GANI,KAAK,SAAW,QAChB,KAAK,SAAW,SAAS,cAAc,SAAS,EAGhD,KAAK,SAAW,KAAK,YAAY,OAAO,KAAK,MAAM,EAEnD,CAAC,KAAK,UAAY,KAAK,WAAW,SAAS,EAC3C,MAAM,IAAI,GAAG,WAErB,CACA,gBAAiB,CACb,GAAG,KAAK,cAAe,oBAAoB,KAAK,wBAAwB,EACxE,KAAK,wBAAwB,EAC7B,KAAK,MAAQ,KAAK,YAAY,EAC9B,KAAK,WAAW,KAAK,CAAE,QAAS,CAAC,KAAK,MAAM,OAAQ,CAAC,EACrD,GAAG,MAAM,MAAM,KAAK,KAAK,KAAK,EAC9B,KAAK,MAAM,eAAe,EAC1B,KAAK,MAAM,cAAc,CAC7B,CACA,uBAAwB,CACpB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,YAAY,cAAc,KAAK,QAAQ,EAC5C,KAAK,MAAM,WAAW,KAAK,QAAQ,EACnC,KAAK,eAAe,CAAE,WAAY,KAAK,SAAU,OAAQ,KAAK,QAAQ,MAAO,CAAC,EAC9E,KAAK,YAAY,gBAAgB,KAAK,QAAQ,EAC9C,KAAK,kBAAoB,IAAI,GAAG,aAAa,CACzC,MAAO,KAAK,MACZ,UAAW,CAAC,KAAK,QAAQ,EACzB,OAAQ,KAAK,MACjB,CAAC,EACD,GAAG,MAAM,KAAK,MAAM,QAAS,CAAE,GAAG,KAAK,QAAS,MAAO,KAAK,KAAM,CAAC,EACnE,KAAK,cAAc,EACnB,KAAK,kBAAkB,SAAW,KAAK,QAAQ,EAC/C,KAAK,MAAM,QAAU,GACrB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,CAC9B,CACA,oBAAqB,CACjB,GAAI,KAAK,mBACL,OACJ,IAAIC,EAAkB,KAAK,gBAAgB,EAAE,MAC7C,KAAK,mBAAqB,KAAK,aAAaA,EAAiB,KAAK,WAAW,CACjF,CACA,MAAM,SAAU,CACZ,aAAM,KAAK,MAAM,mBAAmB,EACpC,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EACX,KAAK,iBAChB,CACA,aAAc,CACV,IAAMC,EAAe,CAAE,GAAG,KAAK,QAAS,QAAS,EAAK,EAChDC,EAAYC,GACP,KAAK,QAAU,GAAG,cAAc,SAASA,CAAwB,EAE5E,OAAO,GAAG,MAAM,MAAMF,EAAcC,CAAS,CACjD,CACA,gBAAiB,CA9sErB,IAAAzW,EA+sEY,KAAK,MAAM,UAAY,SACvB,KAAK,MAAM,QAAU,GAAG,SAAS,eAAe,CAAC,KAAK,QAAQ,EAAG,KAAK,KAAK,GAE/E,GAAI,CAAE,OAAAoO,CAAO,EAAI,KAAK,OACtBpO,EAAA,KAAK,OAAM,UAAXA,EAAW,QAAYoO,EAAO,SAC9BA,EAAO,YAAY,EACnB,KAAK,MAAM,cAAc,KAAK,OAAO,CACzC,CACA,cAAe,CAvtEnB,IAAApO,GAwtEQA,EAAA,KAAK,WAAW,eAAhB,MAAAA,EAA8B,aAC9B,KAAK,MAAM,aAAa,YAAY,EACd,IAAI,GAAG,cAAc,CACvC,SAAU,KAAK,SACf,MAAO,KAAK,MACZ,UAAW,CAAC,YAAa,OAAO,EAChC,YAAa,KAAK,QAAQ,WAC9B,CAAC,EACa,QAAQ,KAAK,QAAQ,KAAK,CAC5C,CACA,eAAgB,CACZ,IAAM2W,EAAmB,CACrB,GAAG,KAAK,QACR,SAAU,KAAK,SACf,MAAO,KAAK,MACZ,UAAW,CAAC,OAAQ,OAAO,CAC/B,EACkB,IAAI,GAAG,kBAAkBA,CAAgB,EACjD,QAAQ,KAAK,QAAQ,MAAM,CACzC,CACA,yBAA0B,CACtB,GAAG,MAAM,cAAc,gBAAiB,CACpC,OAAQ,KAAK,QACb,UAAW,KAAK,WAChB,aAAc,KAAK,QACnB,IAAK,qBACT,CAAC,CACL,CACA,kBAAmB,CACf,KAAK,MAAM,KAAK,kBAAmB,CAC/B,OAAQ,KAAK,QACb,SAAU,KAAK,MAAM,SAAS,UAAU,EACxC,IAAK,cAAc,KAAK,OAC5B,CAAC,CACL,CACA,iBAAkB,CACd,OAAO,GAAG,MAAM,YAAY,KAAK,2BAA2B,CAAC,CACjE,CACA,4BAA6B,CACzB,MAAO,CACH,GAAG,KAAK,QACR,MAAO,KAAK,MACZ,QAAS,KAAK,MAAM,OACxB,CACJ,CACJ,CAGM,EAEC,IAAM,CAEb,IAAI3W,EACJ,IAAM+J,EAAI,GAAG,KACb,GAAG,OAAO,aAAe/J,EAAK,cAA0B,GAAG,OAAO,QAAS,CACnE,YAAYvD,EAAS,CACjBA,EAAU,GAAG,cAAc,SAASA,CAAO,EAC3C,MAAMA,CAAO,EACb,KAAK,MAAQA,EAAQ,MACrB,KAAK,OAASA,EAAQ,OACtB,KAAK,SAAWA,EAAQ,QACxB,KAAK,OAAS,GAAG,SAAS,iBAAiB,KAAK,OAAQ,KAAK,OAAO,CACxE,CACA,mBAAoB,CAChB,YAAK,gBAAgB,EACd,CACH,MAAO,KAAK,MACZ,KAAM,KAAK,MAAM,KACjB,QAASsN,EAAE,MAAM,KAAK,MAAM,QAAS,KAAK,QAAQ,EAClD,OAAQ,KAAK,QAAQ,OACrB,OAAQ,KAAK,uBAAuB,EACpC,UAAW,KAAK,cAAc,EAC9B,SAAU,EACd,CACJ,CACA,wBAAyB,CACrB,YAAK,gBAAgB,EACd,GAAG,SAAS,eAAe,KAAK,MAAM,CACjD,CACA,eAAgB,CACZ,YAAK,gBAAgB,EACdA,EAAE,IAAI,KAAK,OAAQ,YAAY,CAC1C,CACA,QAAQuL,EAAae,EAAc,CAC/B,KAAK,YAAcf,EACnB,KAAK,iBAAiB,EACtBe,EAAa,EACb,IAAIC,EAAgB,KAAK,MAAM,GAAG,wCAAyC,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAC7G,GAAI,CACA,YAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACjB,GAAG,aAAa,KAAK,KAAK,oBAAqB,KAAK,kBAAkB,CACjF,QACA,CACIA,EAAc,CAClB,CACJ,CACA,qBAAsB,CACd,KAAK,OAAO,QACZ,GAAG,KAAK,cAAe,aAAa,KAAK,uBAAuB,SAAS,KAAK,OAAO,EAEzF,KAAK,0BAA0B,EAC3B,KAAK,QAAQ,YACb,GAAG,SAAS,WAAW,CAAE,MAAO,KAAK,KAAM,CAAC,EAE5C,KAAK,QAAQ,WACb,GAAG,SAAS,UAAU,CAAE,MAAO,KAAK,KAAM,CAAC,EAE3C,KAAK,QAAQ,MACb,KAAK,MAAM,KAAK,CAAE,QAAS,CAAC,KAAK,YAAY,CAAE,CAAC,EAEhD,KAAK,QAAQ,QAAU,IACvB,GAAG,SAAS,MAAM,KAAK,cAAc,EAAG,CAAE,OAAQ,4BAA6B,CAAC,EAEpF,OAAO,OAAO,KAAK,MAAM,QAAS,KAAK,QAAQ,EAC3C,KAAK,YAAY,GACjB,KAAK,MAAM,cAAc,KAAK,OAAO,EAEzC,KAAK,0BAA0B,EAC/B,KAAK,oBAAsB,KAAK,aAAa,KAAK,OAAQ,KAAK,YAAa,KAAK,OAAO,CAC5F,CACA,oBAAqB,CACjB,GAAI,KAAK,mBACL,OACJ,IAAIC,EAAkB,KAAK,gBAAgB,EAAE,MAC7C,KAAK,mBAAqB,KAAK,aAAaA,EAAiB,KAAK,WAAW,CACjF,CACA,iBAAkB,CACd,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,CAC9B,CACA,kBAAmB,CACf,KAAK,kBAAkB,EACvB,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,CAC3B,CACA,+BAAgC,CAC5B,KAAK,OAAO,KAAK,GAAG,KAAK,gBAAgB,EAAE,OAAO,CACtD,CACA,mBAAoB,CAChB,KAAK,OAAS,KAAK,OAAO,OAAQK,GAAS,CACvC,IAAMC,EAAS,IAAI,GAAG,eAAe9M,EAAE,KAAK6M,EAAM,CAAC,WAAY,SAAU,QAAS,QAAS,mBAAmB,CAAC,CAAC,EAEhH,GADAA,EAAK,aAALA,EAAK,WAAeC,EAAO,KAAK,GAC5BD,EAAK,WACL,MAAO,GAEN,GAAI,CAACA,EAAK,MACX,MAAM,IAAI,GAAG,WAErB,CAAC,CACL,CACA,mBAAoB,CAChB,KAAK,OAAS,KAAK,YAAY,YAAY,KAAK,MAAM,CAC1D,CACA,sBAAuB,CACnB,KAAK,OAAS,GAAG,SAAS,oBAAoB,KAAK,MAAM,CAC7D,CACA,iBAAkB,CACd,OAAO,GAAG,MAAM,YAAY,KAAK,2BAA2B,CAAC,CACjE,CACA,2BAA4B,CACxB,IAAIE,EAAe,GAAG,aAAa,SAAS,KAAK,KAAK,EACtD,KAAK,OAAO,QAAQ,CAACF,EAAM,IAAM,CAC7BA,EAAK,aAAeE,EAChB,EAAI,IACJF,EAAK,OAAS,GACdA,EAAK,MAAQ,KAEZA,EAAK,YAAc,QAAYA,EAAK,YAAc,aACnDA,EAAK,eAAiB,UAE9B,CAAC,CACL,CACA,aAAc,CACV,OAAO7M,EAAE,eAAe,KAAK,QAAQ,QAAS,KAAK,gBAAgB,KAAK,IAAI,CAAC,CACjF,CACA,iBAAkB,CACd,IAAMgN,EAAehN,EAAE,IAAI,KAAK,OAAQ,YAAY,EACpD,OAAO,GAAG,SAAS,eAAegN,EAAc,KAAK,KAAK,CAC9D,CACA,4BAA6B,CACzB,MAAO,CACH,GAAG,KAAK,QACR,MAAO,KAAK,MACZ,QAAS,KAAK,YAAY,CAC9B,CACJ,CACJ,EAEIhN,EAAE,cAAc/J,EAAG,UAAW,CAC1B,gBAAiB,GACjB,kBAAmB,GACnB,YAAa,GACb,gBAAiB,EACrB,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,IAAM+J,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,OAAO,YAAc,cAA0B,GAAG,OAAO,QAAS,CACjE,YAAYjM,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,aAAeA,EAAQ,aAAe,CAAC,EAC5C,KAAK,OAASsN,EAAE,KAAKtN,EAAQ,KAAK,CACtC,CACA,QAAQ6Y,EAAa,CA56EzB,IAAAtV,EAg7EQ,GAHA,KAAK,YAAcsV,EACnB,KAAK,OAASA,EAAY,YAAY,KAAK,MAAM,EACjD,KAAK,OAASA,EAAY,YAAY,KAAK,MAAM,EAC7C,CAAC,KAAK,OAAO,OACb,OAAO,KAAK,aAAa,EAE7B,KAAK,aAAe,IAAI,GAAG,aAAa,CACpC,OAAOtV,EAAA,KAAK,OAAO,CAAC,IAAb,YAAAA,EAAgB,MACvB,OAAQ,GAAG,SAAS,eAAe,KAAK,MAAM,CAClD,CAAC,EACD,KAAK,OAAO,QAAQ,EACpB,IAAMgX,EAAoB,KAAK,OAAO,IAAIJ,GAAQ,KAAK,aAAaA,CAAI,CAAC,EACzE,YAAK,aAAa,SAAW,KAAK,QAAQI,CAAiB,EACpD,KAAK,YAChB,CACA,cAAe,CACX,YAAK,aAAa,KAAM,KAAK,YAAY,EACzC,KAAK,cAAc,KAAM,KAAK,YAAY,EACnC,GAAG,aAAa,UAAU,CACrC,CACA,MAAM,QAAQA,EAAmB,CAC7B,MAAM,QAAQ,IAAIA,CAAiB,EACnC,QAASJ,KAAQ,KAAK,OAClB,KAAK,qBAAqBA,EAAK,KAAK,EAExC,OAAO,KAAK,YAChB,CACA,aAAaK,EAAU,CACnB,IAAIC,EAAeD,EAAS,QAAQ,YAAY,EAAIA,EAAS,SAAW,CAACA,CAAQ,EACjF,KAAK,aAAa,UAAU,QAAQ,GAAGC,CAAY,CACvD,CACA,aAAaN,EAAM,CAEf,OADA,KAAK,eAAeA,CAAI,EAChBA,EAAK,UAAW,CACpB,IAAK,OAAQ,CAET,GADe,KAAK,cAAcA,CAAI,EAElC,YAAK,aAAaA,EAAK,WAAYA,CAAI,EACvC,KAAK,cAAcA,EAAK,WAAYA,CAAI,EACjC,QAAQ,QAAQ,EAEtB,CACD,KAAK,mBAAmBA,CAAI,EAC5B,IAAMxI,EAASwI,EAAK,WAAW,WACzBO,EAAe,CACjB,GAAGP,EACH,aAAc,CACV,GAAG,SAAS,iBAAiBA,EAAK,UAAU,CAChD,EACA,YAAa,IAAM,CACf,KAAK,kBAAkBA,CAAI,EAC3B,KAAK,YAAY,gBAAgBA,EAAK,UAAU,EAChD,KAAK,iBAAiBA,CAAI,EAC1B,GAAG,MAAMA,EAAK,WAAYA,CAAI,EAC9B,KAAK,aAAaA,EAAK,UAAU,CACrC,EACA,aAAc,IAAM,CAChB,GAAG,OAAO,MAAMA,EAAK,WAAY,CAAE,MAAOA,EAAK,KAAM,CAAC,CAC1D,EACA,aAAc,CACV,GAAG,QAAQ,YAAY,EACvB,GAAG,SAAS,cAAcA,EAAK,WAAY,CAAE,OAAAxI,EAAQ,IAAK,EAAM,CAAC,CACrE,EACA,UAAW,IAAM,CACb,KAAK,aAAawI,EAAK,WAAYA,CAAI,EACvC,KAAK,cAAcA,EAAK,WAAYA,CAAI,CAC5C,CACJ,EACA,OAAO,GAAG,MAAMA,EAAK,WAAYA,EAAK,WAAYA,EAAK,WAAYO,CAAY,CACnF,CACJ,CACA,IAAK,UAAW,CACZ,IAAIC,EAAa1O,EAAE,aAAakO,EAAK,UAAU,EAC3CS,EAAa3O,EAAE,aAAakO,EAAK,UAAU,EAC3CU,EAAc,CACd,GAAGV,EACH,UAAW,OACX,WAAYQ,EACZ,WAAYC,EACZ,MAAO,EACX,EACA,OAAO,KAAK,aAAaC,CAAW,EAAE,KAAK,IAAM,CAC7C5O,EAAE,OAAO2O,CAAU,EACnB,KAAK,aAAaT,EAAK,WAAYA,CAAI,CAC3C,CAAC,CACL,CACA,IAAK,SACL,IAAK,QAAS,CACV,IAAIvG,EAAU3H,EAAE,aAAakO,EAAK,UAAU,EACxCvI,EAAWuI,EAAK,YAAc,SAAW,aAAe,YAC5D,OAAAA,EAAK,WAAW,sBAAsBvI,EAAUgC,CAAO,EACvD,KAAK,YAAY,gBAAgBA,CAAO,EACxC,GAAG,MAAMA,EAASuG,CAAI,EACtB,KAAK,aAAavG,CAAO,EACzB,KAAK,aAAaA,EAASuG,CAAI,EAC/B,KAAK,cAAcvG,EAASuG,CAAI,EACzB,GAAG,QAAQvG,EAASuG,EAAK,WAAYA,CAAI,EAAE,KAAK,IAAMlO,EAAE,OAAO2H,CAAO,CAAC,CAClF,CACA,QACI,GAAG,KAAK,wBAAyBuG,EAAK,SAAS,CAEvD,CACJ,CACA,cAAcna,EAAS,CACnB,GAAI,CAACA,EAAQ,QACT,OAEJ,GAAM,CAAE,WAAAyY,EAAY,WAAA9I,CAAW,EAAI3P,EAEnC,GAAI,CADSiM,EAAE,YAAYwM,EAAY,SAAS,EAE5C,OAEJ,IAAIqC,EACAC,EAAkB,GAAG,SAAS,SAAStC,CAAU,EAC/CuC,EAAa,CAAE,MAAOhb,EAAQ,KAAM,EAO1C,GANIA,EAAQ,gBACR8a,EAAU,GAAG,SAAS,IAAInL,EAAYoL,EAAiBC,CAAU,EAGjEF,EAAU,GAAG,SAAS,QAAQnL,EAAYoL,EAAiBC,CAAU,EAAE,CAAC,EAExEF,GAAW7O,EAAE,YAAY6O,EAAS,SAAS,IAAM,GAAO,CACxD,IAAMG,EAAO,CACT,WAAAxC,EACA,WAAYqC,EACZ,QAAS,GAAG,OAAO,KAAKA,CAAO,EAC/B,cAAe9a,CACnB,EACA,GAAI,CAAC,GAAG,SAAS,SAASib,CAAI,EAAE,iBAC5B,OAAOA,CAEf,CACJ,CACA,mBAAmBd,EAAM,CACrB,IAAMe,EAAY,CAAC,EACnB,GAAIf,EAAK,QACL,QAASgB,KAAYhB,EAAK,WAAW,iBAAiB,WAAW,EAAG,CAChE,IAAIiB,EAAW,KAAK,cAAc,CAAE,GAAGjB,EAAM,WAAYgB,EAAU,gBAAiB,EAAK,CAAC,EAC1F,GAAIC,EAAU,CACV,IAAMC,EAAgBF,EAAS,UAAU,EAAI,EAC7CA,EAAS,sBAAsB,cAAeE,CAAa,EAC3DF,EAAS,UAAU,IAAI,YAAY,EACnC,GAAG,OAAO,eAAeC,EAAS,UAAU,EAC5C,IAAIE,EAAY,GAAG,SAAS,QAAQF,EAAS,UAAU,EACvDA,EAAS,SAAWE,EAAU,IAAI,SAAUC,EAAU,CAClD,IAAIC,EAAc,GAAG,SAAS,gBAAgBD,CAAQ,EACtD,MAAO,IAAM,GAAG,SAAS,gBAAgBC,EAAaD,CAAQ,CAClE,CAAC,EACG,KAAK,mBAAmB,SAAS,IAAI,EACrCH,EAAS,WAAW,YAAYD,CAAQ,EAGxC,SAAS,KAAK,OAAOA,CAAQ,EAEjCD,EAAU,KAAKE,CAAQ,CAC3B,CACJ,CAEJjB,EAAK,UAAYe,CACrB,CACA,kBAAkBf,EAAM,CACpB,QAASiB,KAAYjB,EAAK,UAAW,CACjCiB,EAAS,WAAW,YAAYA,EAAS,UAAU,EACnD,QAASK,KAAWL,EAAS,SACzBK,EAAQ,CAEhB,CACJ,CACA,iBAAiBtB,EAAM,CACnB,QAASiB,KAAYjB,EAAK,UACtBiB,EAAS,WAAW,UAAU,OAAO,YAAY,CAEzD,CACA,mBAAmBpW,EAAS,CACxB,OAAOsI,EAAE,KAAK,KAAK,OAAS6M,GAASA,EAAK,WAAW,SAASnV,CAAO,CAAC,CAC1E,CACA,aAAawV,EAAUxa,EAAS,CAM5B,OALsB,IAAI,GAAG,cAAc,CACvC,GAAGA,EACH,SAAAwa,EACA,UAAW,GAAG,SAAS,OAAO,SAClC,CAAC,EACoB,QAAQxa,EAAQ,KAAK,CAC9C,CACA,cAAcwa,EAAUxa,EAAS,CAM7B,OALkB,IAAI,GAAG,kBAAkB,CACvC,GAAGA,EACH,SAAAwa,EACA,UAAW,GAAG,SAAS,OAAO,UAClC,CAAC,EACgB,QAAQxa,EAAQ,MAAM,CAC3C,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMsN,EAAI,GAAG,KACb,GAAG,OAAO,WAAa,cAAyB,GAAG,OAAO,OAAQ,CAC9D,YAAYtN,EAAS,CAtnFzB,IAAAuD,EAAAmR,EAunFQ,MAAM1U,CAAO,EACb,KAAK,MAAQA,EAAQ,KACrB,KAAK,OAAS,GAAG,MAAM,IAAIA,CAAO,EAClC,KAAK,QAAUA,EAAQ,OACvB,KAAK,OAASA,EAAQ,MACtB,KAAK,cAAeuD,EAAAvD,EAAQ,cAAR,KAAAuD,EAAuB,GAC3C,KAAK,UAAYvD,EAAQ,SACzB,KAAK,UAAW0U,EAAA1U,EAAQ,UAAR,KAAA0U,EAAmB,EACvC,CACA,SAAU,CACN,GAAI,CAAC,KAAK,OAAO,OAAO,EACpB,OAAO,QAAQ,QAAQ,EAG3B,GADA,GAAG,QAAQ,gBAAgB,KAAK,OAAO,EACnC,KAAK,gBAAgB,EAAE,kBAAoB,KAAK,aAChD,MAAM,IAAI,GAAG,QAAQ,2BAA2B,EAEpD,KAAK,kBAAkB,EACvB,GAAG,SAAS,MAAM,CAAE,OAAQ,mBAAoB,MAAO,KAAK,MAAO,CAAC,EACpE,GAAM,CAAE,OAAA/C,CAAO,EAAI,KAAK,OACxB,KAAK,OAAO,KAAK,EACjB,KAAK,OAAO,MAAM,OAAO,KAAK,MAAM,EAChC,KAAK,UACLA,EAAO,eAAe,EAE1B,KAAK,aAAaA,CAAM,EACxB,KAAK,OAAO,iBAAiB,EAC7B,KAAK,OAAO,gBAAgB,KAAK,OAAO,EACxC,KAAK,iBAAiBA,CAAM,CAChC,CACA,iBAAkB,CACd,IAAIxE,EAAQ,KAAK,OAAO,KAAK,KAAK,YAAY,YAAY,KAAK,OAAO,EAAG,CACrE,SAAU,KAAK,OAAO,SAAS,KAAKG,EAAE,eAAe,KAAK,KAAK,GAAG,EAClE,IAAK,CAAC,QAAQ,KAAK,SAAS,KAAK,uBAAwB,KAAK,MAAM,CACxE,CAAC,EACD,YAAK,OAASH,EAAM,MACbA,CACX,CACA,mBAAoB,CAChB,IAAIA,EAAQ,KAAK,YAAY,YAAY,KAAK,UAAU,EACxD,KAAK,OAAO,KAAKA,EAAO,CAAE,IAAK,EAAM,CAAC,CAC1C,CACA,iBAAiBuO,EAAc,CAC3B,IAAMC,EAAW,GAAG,KAAK,UACnBC,EAAyBtO,EAAE,eAAeqO,CAAQ,EACxD,OAAO,KAAK,OAAO,KAAK,KAAK,YAAY,YAAYA,GAAU,EAAG,CAC9D,UAAWD,EACX,SAAU,KAAK,OAAO,SAAS,KAAKE,GAAwB,EAC5D,cAAe,GACf,IAAK,CAAC,GAAGA,KAA0B,KAAK,uBAAwB,KAAK,MAAM,CAC/E,CAAC,CACL,CACA,YAAYzc,EAAM,CACd,OAAO,GAAG,MAAM,MAAMA,EAAM,CACxB,MAAO,KAAK,OACZ,MAAO,KAAK,OACZ,OAAQ,KAAK,QACb,SAAU,KAAK,SACnB,CAAC,CACL,CACA,aAAauc,EAAc,CAnrF/B,IAAAnY,EAorFQ,KAAK,OAAO,aAAa,SAAS,GAClCA,EAAAmY,EAAa,eAAb,MAAAnY,EAA2B,cAC3B,IAAIsY,EAAkB,KAAK,OAAO,QAAUH,EAAa,QACzD,GAAG,MAAMG,EAAiB,CAAE,cAAe,EAAK,CAAC,CACrD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAItY,EACJ,IAAM+J,EAAI,GAAG,KACb,GAAG,OAAO,SAAW/J,EAAK,cAAsB,GAAG,MAAO,CAClD,YAAYvD,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,QAAQ,MAAQ,GAAG,MAAM,OAAO,KAAK,OAAO,EACjD,KAAK,QAAQ,sBAAwB,EACzC,CACA,SAAU,CAxsFlB,IAAAuD,EAAAmR,EAysFY,IAAIoH,EAAiB,KAAK,eAAe,EACzC,OAAIA,GACA,GAAG,KAAK,cAAeA,CAAc,EACrC,GAAG,QAAQ,SAAS,KAAK,OAAO,EACzBxO,EAAE,oBAAoB,IAEjC,KAAK,QAAU,GAAG,QAAQ,KAAK,iBAAiB,CAAC,GACjDoH,GAAAnR,EAAA,KAAK,SAAQ,YAAb,MAAAmR,EAAA,KAAAnR,EAAyB,KAAK,SAC9B,GAAG,SAAS,kBAAkB,KAAK,QAAS,KAAK,OAAO,EACxD,GAAG,KAAK,aAAa,KAAK,QAAS,KAAK,OAAO,EAC3C,KAAK,QAAQ,QACN,KAAK,QAET+J,EAAE,OAAO,KAAK,QAASyO,GAAmB,KAAK,kBAAkBA,CAAe,CAAC,EAC5F,CACA,gBAAiB,CACb,GAAIzO,EAAE,cAAc,KAAK,QAAQ,GAAG,EAChC,MAAO,2CAEX,GAAI,KAAK,QAAQ,SAAW,CAAC,GAAG,QAAQ,aAAa,EACjD,MAAO,wDAEf,CACA,kBAAmB,CACf,IAAM0O,EAAe,KAAK,gCAAgC,KAAK,OAAO,EAChEC,EAAY,KAAK,gCAAgC,KAAK,kBAAkB,EAAG,CAAE,SAAU,EAAK,CAAC,EACnG,MAAO,CACH,GAAG,KAAK,QACR,GAAGD,EACH,GAAG1O,EAAE,WAAW2O,EAAW,GAAG,SAAS,OAAO,CAClD,CACJ,CACA,mBAAoB,CAChB,OAAO,KAAK,iBAAiB,CACjC,CACA,gCAAgCC,EAAeC,EAA0B,CAErE,OADgB,IAAI,GAAG,OAAO,YAAY,CAAE,GAAGD,EAAe,QAAS,EAAK,CAAC,EAC9D,kBAAkBC,CAAwB,CAC7D,CACA,kBAAkBC,EAAU,CACxB,OAAIA,aAAoB,GAAG,SAChB,KAAK,8BAA8BA,CAAQ,EAG3C,KAAK,2BAA2BA,CAAQ,CAEvD,CACA,8BAA8BA,EAAU,CACpC,OAAO,IAAI,GAAG,OAAO,aAAa,CAAE,GAAG,KAAK,QAAS,SAAAA,CAAS,CAAC,EAAE,QAAQ,CAC7E,CACA,2BAA2B5Q,EAAO,CAC9B,MAAIA,aAAiB,GAAG,SACpB,KAAK,QAAQ,KAAK,sBAAuB,CACrC,SAAU,KAAK,QAAQ,UACvB,cAAe,KAAK,QACpB,MAAQ6Q,GAAiB,GAAG,OAAO,CAAE,GAAG,KAAK,QAAS,GAAGA,CAAa,CAAC,EACvE,IAAK,CAAC,mCAAoC,KAAK,QAAQ,YAAa7Q,EAAM,MAAM,CACpF,CAAC,EAECA,CACV,CACJ,EAEI8B,EAAE,cAAc/J,EAAG,UAAW,CAC1B,iBAAkB,EACtB,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,IAAIA,EACJ,IAAM+J,EAAI,GAAG,KACb,GAAG,OAAO,cAAgB/J,EAAK,cAA2B,GAAG,MAAO,CAC5D,YAAYvD,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,UAAYA,EAAQ,SACzB,KAAK,SAAW,KAAK,UAAU,OACnC,CACA,SAAU,CA3xFlB,IAAAuD,EAwyFY,GAZI,GAAG,SAAS,OAAO,aAAa,KAAK,kBAAkB,CAAC,EACxD,KAAK,MAAM,EAGX,KAAK,SAAS,cAAc,qBAAsB,CAC9C,GAAG,KAAK,kBAAkB,EAC1B,SAAU,KAAK,QAAQ,SACvB,IAAK,CAAC,0BAA2B,KAAK,UAAU,WAAW,EAC3D,KAAM,IAAM,KAAK,MAAM,CAC3B,CAAC,GAEMA,EAAA+J,EAAE,WAAW,KAAK,QAAQ,KAAM,KAAK,SAAS,IAA9C,KAAA/J,EAAmD,CAAC,KAAK,UAAU,GAE1E,MAAM,KAAK,2BAA2B,KAAK,kBAAkB,CAAC,EAElE,OAAO,KAAK,2BAA2B,KAAK,OAAO,CACvD,CACA,OAAQ,CACJ,GAAG,KAAK,cAAe,YAAc,KAAK,UAAU,WAAW,EAC/D,KAAK,QAAQ,OAAS,QACtB,KAAK,QAAQ,WAAa,OAC9B,CACA,2BAA2B+Y,EAAoB,CACvCA,EAAmB,kBACnB,GAAG,KAAK,cAAe,6FAA6F,EAExH,KAAK,4BAA4BA,CAAkB,EACnDA,EAAmB,KAAO,KAAK,kBAAkB,EACjD,IAAI/X,EAAS,IAAI,GAAG,OAAO,YAAY+X,CAAkB,EAAE,QAAQ,EACnE,OAAA/X,EAAO,SAAW,KAAK,OAAOA,EAAQ+X,CAAkB,EACjD/X,CACX,CACA,MAAM,OAAO8T,EAAckE,EAAuB,CAC9C,OAAAlE,EAAe,MAAMA,EAAa,SAC9B,GAAG,SAAS,iBAAiB,KAAK,SAAU,KAAK,UAAWkE,CAAqB,IACjFlE,EAAe,MAAM,KAAK,YAAYA,EAAckE,CAAqB,GAEtElE,CACX,CACA,MAAM,YAAYA,EAAckE,EAAuB,CACnD,IAAIC,EAAcD,EAAsB,OACpCE,EAAkBpE,EAAa,OACnC,GAAI,kBAAkB,KAAKmE,CAAW,EAClC,GAAG,KAAK,cAAe,gEAAiEA,CAAW,MAElG,CACD,GAAG,KAAK,cAAe,+CAAgDC,CAAe,EACtF,IAAIC,EAAe,MAAM,GAAG,OAAOD,EAAiB,CAChD,GAAGF,EACH,kBAAmBlE,EAAa,UAChC,MAAOA,EAAa,MACpB,WAAY,KACZ,OAAQ,GACR,MAAO,OACP,WAAY,GACZ,MAAO,GACP,QAAS,GACT,SAAU,GACV,MAAO,GACP,gBAAiB,KAAK,SAC1B,CAAC,EACIqE,EAAa,OACdrE,EAAeqE,EAEvB,CACA,OAAOrE,CACX,CACA,mBAAoB,CAChB,GAAM,CAAE,gBAAAsE,CAAgB,EAAI,KAAK,QACjC,MAAO,CACH,QAAS,KAAK,SACd,SAAU,KAAK,UACf,cAAe,KAAK,QACpB,aAAc,CAAC,CAACA,EAChB,gBAAAA,CACJ,CACJ,CACA,mBAAoB,CAz2F5B,IAAApZ,EAAAmR,EA02FY,IAAIkI,EAAO,CAAE,aAAc,CAAC,CAAC,KAAK,QAAQ,eAAgB,EAC1D,OAAAlI,GAAAnR,EAAA,GAAG,SAAQ,0BAAX,MAAAmR,EAAA,KAAAnR,EAAqCqZ,EAAM,KAAK,WACzCA,CACX,CACA,4BAA4BV,EAAe,CA92FnD,IAAA3Y,EAAAmR,EA+2FY,IAAMmI,EAAc,KAAK,UAAU,IAC/BC,EAAiBD,EACjBE,EAAO,KAAK,SAAS,KACrBA,IACAb,EAAc,KAAOa,EACrBD,GAAkBC,GAEA,KAAK,UAAU,SAAW,MAE5Cb,EAAc,OAAS,KAAK,oBAAoBA,EAAc,OAAQW,CAAW,GAGjFX,EAAc,OAAS,KAAK,oBAAoBA,EAAc,OAAQ,MAAM,EAC5EA,EAAc,QAAU,CAAC,CAACA,EAAc,UAE5CA,EAAc,SAAW,KAAK,oBAAoBA,EAAc,SAAUY,CAAc,EACxFZ,EAAc,MAAQ,KAAK,oBAAoBA,EAAc,MAAO,KAAK,UAAU,KAAK,EACxFA,EAAc,WAAa,KAAK,UAAU,WAC1C,IAAIc,EAAe,KAAK,UAAU,OAC9BA,IACAd,EAAc,OAASc,GAE3Bd,EAAc,YAAc,KAAK,UAAU,YAC3CA,EAAc,aAAe,KAAK,UAAU,aAC5CA,EAAc,SAAW,KAAK,UAAU,KACpC,KAAK,UAAU,OACfA,EAAc,OAAS,SAE3BA,EAAc,QAAU5O,EAAE,MAAM4O,EAAc,QAAS,KAAK,UAAU,OAAO,EAC7EA,EAAc,UAAY,KAAK,UAAU,WACzC3Y,EAAA2Y,EAAc,OAAd,OAAAA,EAAc,KAAS,KAAK,UAAU,eACtCxH,EAAAwH,EAAc,OAAd,OAAAA,EAAc,KAAS,KAAK,UAAU,KAC1C,CACJ,EAEI5O,EAAE,cAAc/J,EAAG,UAAW,CAC1B,kBAAmB,EACvB,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,IAAIA,EACJ,IAAM+J,EAAI,GAAG,KACb,GAAG,OAAO,aAAe/J,EAAK,cAA0B,GAAG,MAAO,CAC1D,YAAYvD,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,QAAU,KAAK,QAAQ,OAC5B,KAAK,SAAW,KAAK,QAAQ,OACjC,CACA,WAAY,CACR,IAAIid,EAAQ,CAAC,EACb,YAAK,cAAc,EACnB,KAAK,+BAA+B,EACpC,KAAK,iBAAiBA,EAAO,KAAK,QAAS,KAAK,QAAQ,MAAM,EAC9D,KAAK,iBAAiBA,EAAO,KAAK,QAAS,KAAK,QAAQ,QAAQ,EACzDA,CACX,CACA,mBAAmBzE,EAAO,CACtB,OAAQA,IAAU,OAAUA,EAAM,OAAO,CAC7C,CACA,eAAgB,CACZ,KAAK,WAAa,GAAG,MAAM,OAAO,KAAK,OAAO,EAC9C,KAAK,QAAUlL,EAAE,OAAO,KAAK,WAAY,KAAK,kBAAkB,CACpE,CACA,iBAAiB2P,EAAOC,EAAQC,EAAS,CACrC,QAAS3E,KAAS0E,EACd,QAAS/R,KAAU,KAAK,eAAegS,EAAS3E,CAAK,EAAG,CACpD,IAAMxN,EAAQ,CAAE,GAAG,KAAK,QAAS,OAAAG,EAAQ,MAAAqN,EAAO,iBAAkB,KAAK,kBAAkB,CAAE,EACrF4E,EAAS5E,IAAU,MAAQ,IAAI,GAAG,OAAO,UAAUxN,CAAK,EAAI,IAAI,GAAG,OAAO,YAAYA,CAAK,EACjGiS,EAAM,KAAKG,CAAM,CACrB,CAER,CACA,eAAeD,EAAS3E,EAAO,CAC3B,OAAO,GAAG,SAAS,cAAc2E,EAAS,CAAE,MAAA3E,EAAO,KAAM,KAAK,QAAQ,KAAM,OAAQ,KAAK,OAAQ,CAAC,CACtG,CACA,SAAU,CACN,OAAI,KAAK,QAAQ,QACN,QAAQ,QAAQ,EAEpB,KAAK,UAAU,KAAK,aAAa,KAAK,IAAI,CAAC,GAAK,KAAK,6BAA6B,CAC7F,CACA,aAAa6E,EAAa,CACtB,IAAI9Y,EAAS8Y,EAAY,QAAQ,KAAK,gBAAgB,EAAG,KAAK,kBAAkB,KAAK,KAAMA,CAAW,CAAC,EACvG,OAAA9Y,EAAO,QAAU,KAAK,QACfA,CACX,CACA,uBAAuBiH,EAAO,CAC1B,MAAO,EAAEA,aAAiB,GAAG,YACjC,CACA,kBAAkByP,EAAM,CA98FhC,IAAA1X,EAAAmR,EA+8FY,IAAI4I,EAAc,KAAK,UAAU,EAAE,CAAC,EAChCrC,IAASqC,GACT,GAAG,KAAK,cAAe,wEAAyEA,EAAY,OAAQrC,EAAK,MAAM,EAEnI,GAAI,CAAE,OAAAsC,CAAO,EAAI,KAAK,gBAAgB,EAClCA,GACA,GAAG,OAAO,eAAeA,EAAQtC,EAAK,OAAO,GAEjDvG,GAAAnR,EAAA,KAAK,SAAQ,WAAb,MAAAmR,EAAA,KAAAnR,EACJ,CACA,iBAAkB,CAz9F1B,IAAAA,EAAAmR,EA09FY,GAAI,KAAK,SACL,OACJ,IAAM8I,EAAalQ,EAAE,KAAK,KAAK,QAAS,CACpC,SACA,UACA,WACA,WACA,OACA,YACA,QACJ,CAAC,EACD,OAAAoH,GAAAnR,EAAA,GAAG,SAAQ,2BAAX,MAAAmR,EAAA,KAAAnR,EAAsCia,GAClC,KAAK,kBAAkB,IAAM,YAC7BA,EAAW,OAAS,KAAK,qBAAqBA,EAAW,MAAM,GAE5D,IAAI,GAAG,YAAYA,CAAU,CACxC,CACA,gCAAiC,CA3+FzC,IAAAja,EA4+FY,GAAI,KAAK,SACL,OACJ,IAAIsV,EAAc,KAAK,gBAAgB,EACnC,KAAK,QAAQ,YACbtV,EAAA,KAAK,SAAQ,SAAbA,EAAa,OAAWsV,EAAY,aAAa,IAErD,KAAK,QAAQ,MAAQ,KAAK,oBAAoB,KAAK,QAAQ,MAAOA,EAAY,KAAK,EACnF,KAAK,QAAQ,SAAW,KAAK,oBAAoB,KAAK,QAAQ,SAAUA,EAAY,QAAQ,CAChG,CACA,mBAAoB,CAChB,GAAI,CAAC,KAAK,QAAQ,UAAY,CAAC,KAAK,QAAQ,SACxC,MAAO,SAEf,CACA,qBAAqB1N,EAAQ,CACzB,IAAIqN,EAAQ,KAAK,QAAQ,CAAC,GAAK,GAAG,MAAM,KACxC,OAAO,KAAK,eAAerN,GAAU,QAASqN,CAAK,EAAE,CAAC,CAC1D,CACA,kBAAkBiF,EAAO,CAAC,EAAG,CACzB,IAAMC,EAAezC,GAAQA,EAAK,kBAAkB,EACpD,OAAO,KAAK,UAAUyC,CAAY,GAAKD,EAAK,UAAY,KAAK,4BAA4B,CAC7F,CACA,6BAA8B,CAC1B,KAAK,mBAAmB,uCAAuC,CACnE,CACA,8BAA+B,CAC3B,KAAK,mBAAmB,2DAA2D,CACvF,CACA,mBAAmBE,EAAQ,CACvB,GAAI,KAAK,UAAU,EAAE,OAAQ,CACzB,IAAMC,EAActQ,EAAE,KAAKA,EAAE,IAAI,KAAK,UAAU,EAAG,QAAQ,CAAC,EACtDuQ,EAAuB,GAAG,MAAM,eAAe,KAAK,QAAQ,KAAK,EACvE,MAAM,IAAI,GAAG,YAAY,CAACF,EAAS,8BAA+BC,EAAaC,CAAoB,CAAC,CACxG,SACS,KAAK,QAAQ,SAAW,EAC7B,KAAK,kBAAkB,MAEtB,OAAI,KAAK,QAAQ,iBACZ,IAAI,GAAG,YAAY,qFAAqF,EAGxG,IAAI,GAAG,YAAY,0BAA0B,CAE3D,CACA,mBAAoB,CAChB,MAAM,IAAI,GAAG,YAAY,iHAAiH,CAC9I,CACA,UAAUlV,EAAI,CACV,QAASsS,KAAQ,KAAK,UAAU,EAC5B,GAAI,CACA,OAAOtS,EAAGsS,CAAI,CAClB,OACOzP,EAAP,CACI,GAAI,KAAK,uBAAuBA,CAAK,EACjC,MAAMA,CAEd,CAER,CACJ,EAEI8B,EAAE,cAAc/J,EAAG,UAAW,CAC1B,UAAW,GACX,gBAAiB,GACjB,kBAAmB,EACvB,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,IAAM+J,EAAI,GAAG,KACb,GAAG,aAAe,KAAmB,CACjC,YAAYc,EAAM0P,EAAW,CAAE,MAAAtF,EAAO,KAAAuF,EAAM,QAAAC,EAAS,KAAApB,CAAK,EAAG,CACzDpE,MAAU,GAAG,MAAM,IAAIpK,CAAI,GAAK,GAAG,MAAM,SACzC,KAAK,MAAQA,EACb,KAAK,WAAa0P,EAClB,KAAK,OAAStF,EACd,KAAK,MAAQuF,EACb,KAAK,SAAWC,EAChBpB,MAAS,CAAC,GACVA,EAAK,MAAQpE,EACb,KAAK,MAAQoE,CACjB,CACA,KAAM,CACF,KAAK,OAAO,UAAU,IAAM,CACxB,KAAK,eAAe,EACpB,QAASqB,KAAY,KAAK,WACtB,KAAK,aAAaA,CAAQ,CAElC,CAAC,CACL,CACA,gBAAiB,CAIb,GAHI,KAAK,QACL,KAAK,MAAM,cAAgB,KAAK,OAEhC,KAAK,SACL,QAAS/P,KAAY,KAAK,SACtB,QAASnJ,KAAS,KAAK,QAAQmJ,CAAQ,EACnCnJ,EAAM,cAAgB,KAAK,SAASmJ,CAAQ,CAI5D,CACA,aAAa+P,EAAU,CAvlG3B,IAAA1a,EAAAmR,EAwlGQ,IAAM1O,EAAU,KAAK,YAAYiY,CAAQ,EACzC,GAAKjY,EAAQ,OAMb,IAHKiY,EAAS,WACV,GAAG,KAAK,aAAc,8BAA4BjY,EAAQ,OAAQiY,EAAS,SAAU,KAAK,MAAM,EAEhGA,EAAS,MACT,KAAK,cAAcA,EAAUjY,CAAO,MAGpC,SAASjB,KAASiB,EACd,KAAK,mBAAmBiY,EAAUlZ,CAAK,EAG/C,OAAO2P,GAAAnR,EAAA,GAAG,SAAQ,cAAX,YAAAmR,EAAA,KAAAnR,EAAyByC,EAASiY,GAC7C,CACA,mBAAmBA,EAAUjZ,EAAS,CAClC,IAAMkZ,EAAc,CAAClZ,CAAO,EAC5B,GAAIiZ,EAAS,SAAW,EAAG,CACvB,IAAMF,EAAO,GAAG,OAAO,KAAK/Y,CAAO,EACnCkZ,EAAY,KAAKH,EAAM,KAAK,KAAK,CACrC,CACA,IAAMxZ,EAAS,KAAK,uBAAuB0Z,EAAUjZ,EAASkZ,CAAW,EACrEC,EAA0B,KAAK,oBAAoB5Z,CAAM,EACzD4Z,GACA,GAAG,WAAWnZ,EAASmZ,CAAuB,CAEtD,CACA,cAAcF,EAAUvL,EAAU,CAC9B,IAAMwL,EAAc,CAACxL,CAAQ,EAC7B,GAAIuL,EAAS,SAAW,EAAG,CACvB,IAAMG,EAAW9Q,EAAE,IAAIoF,EAAU,GAAG,OAAO,IAAI,EAC/CwL,EAAY,KAAKE,EAAU,KAAK,KAAK,CACzC,CACA,IAAM7Z,EAAS,KAAK,uBAAuB0Z,EAAUvL,EAAUwL,CAAW,EACtE,KAAK,oBAAoB3Z,CAAM,GAC/B,GAAG,KAAK,0DAA0D,CAE1E,CACA,uBAAuB0Z,EAAUI,EAAmBH,EAAa,CAC7D,OAAO,GAAG,MAAM,MAAM,IAAMD,EAAS,MAAMI,EAAmBH,CAAW,CAAC,CAC9E,CACA,oBAAoB3Z,EAAQ,CACxB,GAAI+I,EAAE,WAAW/I,CAAM,GAAM+I,EAAE,QAAQ/I,CAAM,GAAM+I,EAAE,MAAM/I,EAAQ+I,EAAE,UAAU,EAC3E,OAAO/I,CAEf,CACA,QAAQ2J,EAAU,CACd,OAAO,GAAG,SAAS,QAAQ,KAAK,MAAOZ,EAAE,WAAWY,CAAQ,EAAG,CAAE,MAAO,KAAK,MAAO,CAAC,CACzF,CACA,YAAY+P,EAAU,CAClB,IAAIjY,EAAU,KAAK,QAAQiY,EAAS,QAAQ,EAC5C,OAAO3Q,EAAE,OAAOtH,EAAUhB,GAAY,CAClC,IAAIsZ,EAAoBtZ,EAAQ,qBAARA,EAAQ,mBAAuB,IAAI,KAC3D,GAAI,CAACsZ,EAAiB,IAAIL,CAAQ,EAC9B,OAAAK,EAAiB,IAAIL,CAAQ,EACtB,EAEf,CAAC,CACL,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM3Q,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,cAAgB,KAAoB,CACnC,YAAYjH,EAASuZ,EAAgBve,EAAS,CAC1C,KAAK,SAAWgF,EAChB,KAAK,gBAAkBuZ,EACvB,KAAK,oBAAsB,OAAO,KAAK,KAAK,eAAe,EACvDjR,EAAE,KAAK,KAAK,oBAAqB7I,GAAOA,EAAI,MAAM,KAAK,CAAC,GACxD,GAAG,KAAK,mCAAmC,EAE/C,KAAK,aAAezE,EAAQ,YAC5B,KAAK,UAAYA,EAAQ,SACzB,KAAK,QAAUA,EAAQ,OACvB,KAAK,UAAY,EACrB,CACA,OAAQ,CACJ,OAAI,KAAK,oBAAoB,SAAW,GACpC,KAAK,UAAY,GACV,QAAQ,QAAQ,IAE3B,KAAK,UAAYsN,EAAE,YAAY,EAC/B,KAAK,oBAAoB,EACzB,KAAK,WAAa,IAAI,KACtB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EACX,KAAK,UAChB,CACA,sBAAuB,CACf,KAAK,eACL,KAAK,yBAA2B,GAAG,GAAG,KAAK,SAAU,KAAK,aAAc,KAAK,eAAe,KAAK,IAAI,CAAC,EAE9G,CACA,eAAeH,EAAO,CAClBA,EAAM,gBAAgB,EACtB,KAAK,QAAQ,CACjB,CACA,qBAAsB,CAElB,KAAK,eAAiBG,EAAE,MAAO,KAAK,UAAY,IAAkB,IAAM,CACpE,KAAK,QAAQ,CACjB,CAAC,CACL,CACA,oBAAqB,CACjB,aAAa,KAAK,cAAc,CACpC,CACA,wBAAyB,CACrB,KAAK,2BAA6B,GAAG,GAAG,KAAK,SAAU,gBAAiB,KAAK,iBAAiB,KAAK,IAAI,CAAC,CAC5G,CACA,iBAAiBH,EAAO,CAKpB,GAJIA,EAAM,SAAW,KAAK,UAGV,IAAI,KAAS,KAAK,YAClB,IAAO,KAAK,UACxB,OAEJ,IAAMqR,EAAyBrR,EAAM,aAChCG,EAAE,SAAS,KAAK,oBAAqBkR,CAAsB,GAGhE,KAAK,QAAQ,CACjB,CACA,SAAU,CA5tGd,IAAAjb,EAAAmR,EA6tGY,KAAK,YAGT,KAAK,UAAY,GACjB,KAAK,mBAAmB,GACxBnR,EAAA,KAAK,2BAAL,MAAAA,EAAA,YACAmR,EAAA,KAAK,6BAAL,MAAAA,EAAA,WACAzI,EAAE,sBAAsB,KAAK,QAAQ,EACrC,KAAK,qBAAqB,EAC1B,KAAK,UAAU,QAAQ,EAC3B,CACA,qBAAsB,CAClB,IAAMwS,EAAgBxS,EAAE,MAAM,KAAK,SAAU,CACzC,qBACA,qBACA,kBACA,0BACJ,CAAC,EACD,GAAIA,EAAE,iBAAiBwS,CAAa,EAAG,CACnC,GAAIA,EAAc,qBAAuB,MAAO,CAC5C,IAAMC,EAA0BD,EAAc,mBAAmB,MAAM,SAAS,EAC1EE,EAA0B1S,EAAE,MAAM,KAAK,SAAUyS,CAAuB,EAC9E,KAAK,6BAA+BzS,EAAE,kBAAkB,KAAK,SAAU0S,CAAuB,CAClG,CACA,KAAK,kBAAoB1S,EAAE,sBAAsB,KAAK,QAAQ,CAClE,CACJ,CACA,sBAAuB,CAxvG3B,IAAA1I,EAAAmR,GAyvGQnR,EAAA,KAAK,+BAAL,MAAAA,EAAA,YACAmR,EAAA,KAAK,oBAAL,MAAAA,EAAA,UACJ,CACA,cAAe,CACXzI,EAAE,SAAS,KAAK,SAAU,CACtB,mBAAoB,OAAO,KAAK,KAAK,eAAe,EAAE,KAAK,IAAI,EAC/D,mBAAoB,GAAG,KAAK,cAC5B,yBAA0B,KAAK,OACnC,CAAC,EACDA,EAAE,SAAS,KAAK,SAAU,KAAK,eAAe,CAClD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMqB,EAAI,GAAG,KACb,GAAG,eAAiB,KAAqB,CACrC,YAAYkN,EAAUxa,EAAS,CAC3B,KAAK,UAAYwa,EACjB,KAAK,SAAWxa,CACpB,CACA,KAAM,CACF,QAAS4e,KAAa,KAAK,kBAAkB,EAAG,CAC5C,IAAIC,EAAcvR,EAAE,SAASsR,EAAW,eAAe,EACvD,GAAIC,EACA,QAASC,KAAcD,EACnB,KAAK,yBAAyBC,EAAYF,CAAS,EAG3DA,EAAU,UAAU,OAAO,cAAc,CAC7C,CACJ,CACA,mBAAoB,CAChB,IAAMG,EAAgB,CAAE,GAAG,KAAK,SAAU,WAAY,EAAK,EAC3D,OAAO,GAAG,SAAS,QAAQ,KAAK,UAAW,gBAAiBA,CAAa,CAC7E,CACA,yBAAyBD,EAAY9Z,EAAS,CAC1C,GAAG,MAAM,MAAM,IAAM8Z,EAAW9Z,CAAO,CAAC,CAC5C,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMsI,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,aAAe,cAA2B,GAAG,MAAO,CACnD,MAAO,CACH,MAAO,CACH,SACA,QACA,YACA,WACA,MACA,eACJ,CACJ,CACA,MAAO,CACH,YAAK,aAAa,EACd,KAAK,UACL,KAAK,UAAU,UAAU,IAAM,KAAK,eAAe,CAAC,EAGpD,KAAK,eAAe,EAEjB,KAAK,KAChB,CACA,gBAAiB,CACb,KAAK,OAAO,cAAc,KAAK,KAAK,EAChC,KAAK,eAAiB,CAAC,KAAK,OAAO,aACnC,SAAS,cAAc,KAAK,KAAK,EAErC,GAAG,MAAM,MAAM,IAAG,CAt0G1B,IAAA1I,EAs0G6B,OAAAA,EAAA,KAAK,WAAL,YAAAA,EAAA,UAAgB,KAAK,OAAM,CACpD,CACA,eAAgB,CACZ,IAAM4J,EAAQ,KAAK,KAAK,EACxB,GAAIA,EAAM,iBACN,MAAM,IAAI,GAAG,QAAQ,SAASA,EAAM,oBAAoB,CAEhE,CACA,cAAe,CACX,GAAI,CAAC,GAAG,IAAI,OAAO,QACf,OAEJ,IAAIxB,EAAU,KAAK,IACfqT,EACA1R,EAAE,QAAQ3B,CAAO,EACjB,CAACA,EAAS,GAAGqT,CAAW,EAAIrT,EAG5BqT,EAAc,CAAC,EAEnB,GAAM,CAAE,KAAAC,CAAK,EAAI,KAAK,MAClB3R,EAAE,SAAS3B,CAAO,EAClB,GAAG,KAAKsT,EAAMtT,EAAS,GAAGqT,CAAW,EAEhCrT,IAAY,IACjB,GAAG,KAAKsT,EAAM,SAASA,GAAM,CAErC,CACA,OAAO,aAAarf,EAAM8E,EAAW,CAAC,EAAG,CAl2G7C,IAAAnB,EAAAmR,EAm2GQ,IAAI1U,EAAUsN,EAAE,eAAe1N,CAAI,EACnCI,EAAUsN,EAAE,MAAM5I,EAAU1E,CAAO,EAC/BsN,EAAE,aAAa1N,EAAK,CAAC,CAAC,EACtBI,EAAQ,OAASiM,EAAE,IAAIrM,EAAK,MAAM,CAAC,EAE9BA,EAAK,CAAC,YAAa,GAAG,QAC3BI,EAAQ,MAAQJ,EAAK,MAAM,GAE/B,IAAI4Y,EACJ,OAAIlL,EAAE,QAAQtN,EAAQ,KAAK,IACvBwY,EAAQ,GAAG,MAAM,IAAIxY,EAAQ,KAAK,EAClCA,EAAQ,SAARA,EAAQ,OAAWwY,EAAM,SACzBxY,EAAQ,YAARA,EAAQ,UAAcwY,IAEtBxY,EAAQ,YACRA,EAAQ,UAAY,GAAG,MAAM,IAAIA,EAAQ,SAAS,GAElDsN,EAAE,SAAStN,EAAQ,MAAM,EACzBA,EAAQ,OAAS,GAAG,SAAS,IAAIA,EAAQ,OAAQ,CAAE,MAAOA,EAAQ,KAAM,CAAC,EAEnEA,EAAQ,SACdA,EAAQ,OAAS,WAEjBuD,EAAA3D,EAAK,CAAC,IAAN,MAAA2D,EAAS,gBACTvD,EAAQ,MAAQJ,EAAK,CAAC,GACtB8U,EAAA1U,EAAQ,MAAR,OAAAA,EAAQ,IAAQJ,EAAK,CAAC,EAAE,MAEnB0N,EAAE,SAAS1N,EAAK,CAAC,CAAC,EACvBI,EAAQ,MAAQ,GAAG,MAAM,MAAMJ,EAAK,CAAC,EAAGI,CAAO,EAG/CA,EAAQ,MAAQ,GAAG,MAAM,MAAMA,CAAO,EAEnC,IAAK,KAAMA,CAAO,CAC7B,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMsN,EAAI,GAAG,KACb,GAAG,cAAgB,cAA4B,GAAG,MAAO,CACrD,MAAO,CACH,MAAO,CACH,UACA,YACA,WACA,WACA,QACA,YACA,UACA,OACA,UACA,YACJ,CACJ,CACA,YAAYgD,EAAY,CA75G5B,IAAA/M,EA85GQ,MAAM+M,CAAU,EAChB,KAAK,KAAO,KAAK,YAAY,UAAUA,CAAU,EACjD,KAAK,UAAY,GAAG,UAAU,SAC9B/M,EAAA,KAAK,aAAL,YAAK,WAAgB,KAAK,UAAU,QAAQ,eAAe,IAAM,GACjE,KAAK,eAAiB,KAAK,eAAe,KAAK,IAAI,CACvD,CACA,MAAO,CAp6GX,IAAAA,EAq6GQ,IAAMlC,GAAOkC,EAAA,KAAK,SAAQ,mBAAbA,EAAa,iBAAqB,CAAC,GAC5ClC,EAAI,KAAK,IAAI,GACb,GAAG,KAAK,kEAAmE,KAAK,UAAW,KAAK,QAAQ,EAE5GA,EAAI,KAAK,IAAI,EAAI,KACjB,KAAK,QAAQ,iBAAiB,GAAG,KAAK,gBAAgB,CAAC,CAC3D,CACA,iBAAkB,CACd,IAAIrB,EAAUsN,EAAE,cAAcA,EAAE,KAAK,KAAM,CAAC,OAAQ,UAAW,SAAS,CAAC,CAAC,EAC1E,MAAO,CAAC,KAAK,UAAW,KAAK,eAAgBtN,CAAO,CACxD,CACA,QAAS,CACL,IAAIqB,EAAM,KAAK,QAAQ,iBACnBA,GACA,OAAOA,EAAI,KAAK,IAAI,EAExB,KAAK,QAAQ,oBAAoB,GAAG,KAAK,gBAAgB,CAAC,CAC9D,CACA,eAAe8L,EAAO,CAClB,GAAI,GAAG,UAAU,YAAc,CAAC,KAAK,WACjC,OAEJ,IAAInI,EAAUmI,EAAM,OAIpB,GAHI,KAAK,WACLnI,EAAUA,EAAQ,QAAQsI,EAAE,WAAW,KAAK,QAAQ,CAAC,GAErD,OAAK,OAAS,CAAC,KAAK,MAAMH,CAAK,IAG/BnI,EAAS,CACT,IAAMpF,EAAO,CAACuN,EAAOnI,CAAO,EACtBka,EAAmB,KAAK,SAAS,OACvC,GAAIA,IAAqB,GAAKA,IAAqB,EAAG,CAClD,IAAMnB,EAAO,GAAG,OAAO,KAAK/Y,CAAO,EACnCpF,EAAK,KAAKme,CAAI,CAClB,CACA,GAAI,KAAK,YAAc,SAAW/Y,EAAQ,SACtC,OAEJ,IAAMma,EAAgB,KAAK,SAAS,KAAKna,EAAS,GAAGpF,CAAI,EACrD,KAAK,UACL,KAAK,UAAU,UAAUuf,CAAa,EAGtCA,EAAc,CAEtB,CACJ,CACA,OAAO,YAAY7O,EAAY,CAC3B,IAAIjP,EAAMiP,EAAW,QAAQ,iBAC7B,GAAIjP,EAAK,CACL,IAAMoD,EAAM,KAAK,UAAU6L,CAAU,EACrC,OAAOjP,EAAIoD,CAAG,CAClB,CACJ,CACA,OAAO,UAAU6L,EAAY,CA59GjC,IAAA/M,EA69GQ,OAAAA,EAAA+M,EAAW,UAAS,QAApB/M,EAAoB,MAAU+J,EAAE,IAAI,GAC7B,CACHgD,EAAW,UACXA,EAAW,SACXA,EAAW,SAAS,KACxB,EAAE,KAAK,GAAG,CACd,CACA,OAAO,cAActL,EAAS,CAC1B,IAAI3D,EAAM2D,EAAQ,iBAClB,GAAI3D,EAAK,CACL,IAAM+d,EAAY,OAAO,OAAO/d,CAAG,EACnC,OAAOiM,EAAE,OAAO8R,EAAW,WAAW,CAC1C,KAEI,OAAO,CAAC,CAEhB,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM9R,EAAI,GAAG,KACb,GAAG,mBAAqB,cAAiC,GAAG,MAAO,CAC/D,MAAO,CACH,MAAO,CACH,WACA,aACA,WACA,WACA,QACA,YACA,UACA,OACA,UACA,YACJ,CACJ,CACA,MAAO,CACH,IAAM+R,EAAY,CAAC,EACnB,YAAK,wBAAwB,SAAUjQ,EAAO,CAC1C,IAAMkQ,EAAW,IAAI,GAAG,cAAclQ,CAAK,EAC3C,OAAAkQ,EAAS,KAAK,EACPD,EAAU,KAAKC,EAAS,OAAO,KAAKA,CAAQ,CAAC,CACxD,CAAC,EACMhS,EAAE,SAAS+R,CAAS,CAC/B,CACA,wBAAwB1W,EAAI,CACxB,QAAS3D,KAAW,KAAK,SACrB,QAASua,KAAa,KAAK,WACvB5W,EAAG,KAAK,oBAAoB3D,EAASua,CAAS,CAAC,CAG3D,CACA,oBAAoBva,EAASua,EAAW,CACpC,MAAO,CAAE,GAAG,KAAK,WAAW,EAAG,QAAAva,EAAS,UAAAua,CAAU,CACtD,CACA,QAAS,CACL,KAAK,wBAAwB,SAAUnQ,EAAO,CAC1C,IAAIkQ,EAAW,GAAG,cAAc,YAAYlQ,CAAK,EAC7CkQ,GACAA,EAAS,OAAO,CAExB,CAAC,CACL,CACA,OAAO,aAAa1f,EAAM8E,EAAU,CAChC9E,EAAO0N,EAAE,KAAK1N,CAAI,EAClB,IAAM4G,EAAW5G,EAAK,IAAI,EACtB8S,EACA9S,EAAK,CAAC,EAAE,iBACR8S,EAAW,CAAC9S,EAAK,MAAM,CAAC,EAEnB0N,EAAE,SAAS1N,EAAK,CAAC,CAAC,GAAM0N,EAAE,OAAO1N,EAAK,CAAC,CAAC,GAAKA,EAAK,CAAC,EAAE,CAAC,EAAE,iBAC7D8S,EAAW9S,EAAK,MAAM,EAGtB8S,EAAW,CAAC,QAAQ,EAExB,IAAI8M,EAAalS,EAAE,YAAY1N,EAAK,MAAM,CAAC,EACvC6f,EAAW,GAAG,QAAQ,cACtBA,IACAD,EAAaC,EAASD,CAAU,GAEpC,IAAMxf,EAAUsN,EAAE,eAAe1N,CAAI,EAC/BsO,EAAWtO,EAAK,CAAC,EACjB0Q,EAAa,CAAE,SAAAoC,EAAU,WAAA8M,EAAY,SAAAtR,EAAU,SAAA1H,EAAU,GAAGxG,EAAS,GAAG0E,CAAS,EACvF,OAAO,IAAK,KAAM4L,CAAU,CAChC,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMhD,EAAI,GAAG,KACb,GAAG,aAAe,KAAmB,CACjC,YAAYc,EAAMpO,EAASwG,EAAU,CACjC,KAAK,SAAWxG,EAChB,KAAK,MAAQoO,EACb,KAAK,OAAS,GAAG,KAAK,SAASA,CAAI,EACnC,KAAK,UAAY5H,EACjB,KAAK,OAASxG,EAAQ,MACtB,KAAK,WAAaA,EAAQ,SAC9B,CACA,OAAQ,CACJ,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,KAAK,iBAAiB,EAC9C,KAAK,cAAgB,KACrB,KAAK,iBAAmB,GACxB,KAAK,WAAa,CAAC,EACnB,KAAK,mBAAmB,KAAK,KAAK,EAClC,KAAK,MAAM,iBAAiB,uBAAwB,CAAC,CAAE,OAAAmL,CAAO,IAAM,CAC5DA,IAAW,KAAK,OAChB,KAAK,mBAAmBA,CAAM,CACtC,CAAC,EACD,KAAK,WAAW,KAAK,GAAG,SAAS,UAAU,KAAK,OAAQ,IAAM,KAAK,OAAO,CAAC,CAAC,EAC5E,KAAK,WAAW,KAAK,GAAG,GAAG,KAAK,OAAQ,QAAS,IAAM,KAAK,aAAa,CAAC,CAAC,CAC/E,CACA,MAAO,CACH,KAAK,OAAO,EACZ,QAASuU,KAAY,KAAK,WACtBA,EAAS,CACjB,CACA,cAAcC,EAAO,CACjB,IAAIC,EAActS,EAAE,KAAK,KAAK,QAAQ,EACtC,OAAO,GAAG,KAAK,aAAaqS,EAAOC,EAAa,CAAE,SAAU,CAAE,MAAO,OAAQ,CAAE,CAAC,CACpF,CACA,mBAAmBC,EAAW,CAC1B,QAASF,KAAS,GAAG,KAAK,OAAOE,CAAS,EACtC,KAAK,YAAYF,CAAK,CAE9B,CACA,YAAYA,EAAO,CACf,IAAIG,EAAe,KAAK,cAAcH,CAAK,EAC3C,KAAK,WAAW,KAAK,GAAG,GAAGA,EAAOG,EAAa,MAAO,IAAM,KAAK,OAAOA,CAAY,CAAC,CAAC,CAC1F,CACA,QAAS,CACL,KAAK,iBAAmB,IAC5B,CACA,gBAAgBrO,EAAQqO,EAAc,CAClC,KAAK,iBAAmBrO,EACxB,KAAK,uBAAyBqO,EAC9B,IAAIC,EAAQD,EAAa,OAAS,EAClC,aAAa,KAAK,aAAa,EAC/B,KAAK,cAAgBxS,EAAE,MAAMyS,EAAO,IAAM,CACtC,KAAK,cAAgB,KACrB,KAAK,iBAAiB,CAC1B,CAAC,CACL,CACA,aAAatO,EAAQ,CACjB,MAAO,CAACnE,EAAE,QAAQmE,EAAQ,KAAK,gBAAgB,GAAK,CAACnE,EAAE,QAAQ,KAAK,iBAAkBmE,CAAM,CAChG,CACA,MAAM,kBAAmB,CAOrB,GANI,CAAC,KAAK,kBAEN,KAAK,kBAEL,KAAK,eAEL,CAAC,KAAK,OAAO,YACb,OACJ,IAAIqO,EAAe,KAAK,uBAClBE,EAAO,KAAK,eAAe,KAAK,iBAAkB,KAAK,gBAAgB,EAC7E,KAAK,iBAAmB,KAAK,iBAC7B,KAAK,iBAAmB,KACxB,KAAK,iBAAmB,GACxB,KAAK,uBAAyB,KAC9B,IAAIC,EAAkB,CAAE,GAAGH,EAAc,QAAS,EAAM,EAClDI,EAAuB,CAAC,EAC9B,GAAI,KAAK,OACLA,EAAqB,KAAK,KAAK,aAAaF,EAAMC,CAAe,CAAC,MAGlE,SAAS9gB,KAAQ6gB,EAAM,CACnB,IAAMzd,EAAQyd,EAAK7gB,CAAI,EACvB+gB,EAAqB,KAAK,KAAK,aAAa3d,EAAOpD,EAAM8gB,CAAe,CAAC,CAC7E,CAEJ,GAAI3S,EAAE,KAAK4S,EAAsB5S,EAAE,SAAS,EAAG,CAC3C,IAAI6S,EAAe,QAAQ,WAAWD,CAAoB,EAC1D,GAAG,KAAK,aAAaC,EAAcL,CAAY,EAC/C,MAAMK,CACV,CACA,KAAK,iBAAmB,GACxB,KAAK,iBAAiB,CAC1B,CACA,gBAAgBvgB,EAAM,CAClB,OAAO,GAAG,MAAM,MAAM,IAAM,KAAK,UAAU,GAAGA,CAAI,CAAC,CACvD,CACA,eAAewgB,EAAUC,EAAM,CAC3B,IAAMzT,EAAU,CAAC,EACbzF,EAAO,OAAO,KAAKiZ,CAAQ,EAC/BjZ,EAAOA,EAAK,OAAO,OAAO,KAAKkZ,CAAI,CAAC,EACpClZ,EAAOmG,EAAE,KAAKnG,CAAI,EAClB,QAAS1C,KAAO0C,EAAM,CAClB,IAAMmZ,EAAgBF,EAAS3b,CAAG,EAC5B8b,EAAYF,EAAK5b,CAAG,EACrB6I,EAAE,QAAQgT,EAAeC,CAAS,IACnC3T,EAAQnI,CAAG,EAAI8b,EAEvB,CACA,OAAO3T,CACX,CACA,kBAAmB,CACf,OAAO,GAAG,OAAO,cAAc,KAAK,KAAK,EAAE,SAAS,CACxD,CACA,OAAOkT,EAAe,CAAC,EAAG,CACtB,IAAMrO,EAAS,KAAK,iBAAiB,EACjC,KAAK,aAAaA,CAAM,GACxB,KAAK,gBAAgBA,EAAQqO,CAAY,CAEjD,CACA,cAAe,CACXxS,EAAE,KAAK,IAAM,KAAK,OAAO,CAAC,CAC9B,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMA,EAAI,GAAG,KACb,GAAG,cAAgB,KAAoB,CACnC,YAAYE,EAAM,CACd,KAAK,MAAQA,EACb,KAAK,gBAAkB,CAAC,EACxB,KAAK,iBAAmB,KACxB,KAAK,WAAa,GAClB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,CACrB,CACA,aAAc,CACV,GAAG,SAAS,UAAU,KAAK,MAAQL,GAAU,KAAK,WAAWA,CAAK,CAAC,CACvE,CACA,WAAWA,EAAO,CACV,KAAK,gBAAgB,SACrB,KAAK,gBAAkB,CAAC,EACxB,KAAK,mBAAmB,OAAO,IAAI,GAAG,QAAQA,EAAM,MAAM,CAAC,EAC3D,KAAK,wBAAwB,EAErC,CACA,yBAA0B,CACtB,KAAK,mBAAqBG,EAAE,YAAY,CAC5C,CACA,eAAekT,EAAa,CACxB,GAAI,CAAE,MAAArT,CAAM,EAAI,KAAK,eAAeqT,CAAW,EAC3CpT,EAAQ,IAAM,GAAG,SAAS,QAAQoT,CAAW,EAC7Cha,EAAW,IAAM,GAAG,MAAM,wBAAwB,KAAK,SAAS,CAAE,OAAQga,CAAY,CAAC,CAAC,EAC5F,GAAG,GAAGA,EAAarT,EAAO,CAAE,MAAAC,CAAM,EAAG5G,CAAQ,CACjD,CACA,SAASxG,EAAU,CAAC,EAAG,CACnB,IAAIygB,EAAY,KAAK,cAAczgB,CAAO,EAC1C,YAAK,gBAAgB,KAAK,GAAGygB,CAAS,EACtC,KAAK,oBAAoB,EAClB,KAAK,kBAChB,CACA,cAAczgB,EAAS,CACnB,IAAIygB,EAAY,KAAK,4BAA4BzgB,CAAO,GACjD,KAAK,mBAAmBA,CAAO,GAC/B,KAAK,qBAAqBA,EAAQ,MAAM,EAC/C,QAAS0gB,KAAYD,EACjBC,EAAS,cAAgB,KAAK,eAAeA,EAAS,OAAQ1gB,CAAO,EACrE0gB,EAAS,OAAS,GAAG,SAAS,cAAcA,EAAS,OAAQA,CAAQ,EAEzE,OAAOD,CACX,CACA,mBAAmB,CAAE,OAAAhH,EAAQ,GAAGzZ,CAAQ,EAAG,CACvC,GAAI,GAAG,KAAK,QAAQyZ,CAAM,EACtB,OAAO,KAAK,0BAA0BA,CAAM,GAAK,KAAK,uBAAuBA,EAAQzZ,CAAO,CAEpG,CACA,uBAAuB2f,EAAO,CAAE,UAAAgB,EAAY,EAAK,EAAG,CAChD,GAAI,CAACA,EACD,OACJ,IAAID,EAAW,GAAG,KAAK,cAAcf,CAAK,EAC1C,GAAIe,EACA,UAAG,KAAK,gBAAiB,oCAAqCf,CAAK,EAC5D,CAACe,CAAQ,CAExB,CACA,4BAA4B,CAAE,OAAAvV,EAAQ,OAAAsO,CAAO,EAAG,CAC5C,GAAInM,EAAE,SAASnC,CAAM,GAAKA,EAAQ,CAC9B,GAAG,KAAK,gBAAiB,yBAA0BA,CAAM,EACzD,IAAIyV,EAAkB,GAAG,SAAS,YAAYzV,CAAM,EACpD,OAAOmC,EAAE,QAAQsT,EAAgB,IAAI,SAAUC,EAAgB,CAC3D,IAAI7b,EAAU,GAAG,SAAS,IAAI6b,EAAgB,CAAE,OAAApH,CAAO,CAAC,EACxD,GAAIzU,EACA,MAAO,CACH,QAAAA,EACA,OAAQ6b,EACR,OAAApH,CACJ,EAGA,GAAG,KAAK,mDAAoDoH,CAAc,CAElF,CAAC,CAAC,CACN,CACJ,CACA,qBAAqB7b,EAAS,CAC1B,UAAG,KAAK,gBAAiB,wBAAyBA,CAAO,EAClD,CAAC,CACA,QAAAA,EACA,OAAQ,GAAG,SAAS,SAASA,CAAO,EACpC,OAAQA,CACZ,CAAC,CACT,CACA,0BAA0B2a,EAAO,CAC7B,IAAImB,EAAoBnB,EAAM,QAAQ,eAAe,EACrD,GAAImB,EAAmB,CACnB,IAAI3V,EAAS2V,EAAkB,aAAa,aAAa,EACzD,OAAO,KAAK,4BAA4B,CAAE,OAAA3V,EAAQ,OAAQwU,CAAM,CAAC,CACrE,CACJ,CACA,eAAe3a,EAAS+b,EAAiB,CACrC,OAAO,GAAG,KAAK,aAAa/b,EAAS+b,EAAiB,CAAE,SAAU,CAAE,MAAO,QAAS,CAAE,CAAC,CAC3F,CACA,qBAAsB,CAClB,IAAIC,EAAiB,KAAK,gBAAgB,IAAKN,GAAaA,EAAS,cAAc,KAAK,EACpFO,EAAgB,KAAK,IAAI,GAAGD,CAAc,GAAK,EACnD,aAAa,KAAK,gBAAgB,EAClC,KAAK,iBAAmB1T,EAAE,MAAM2T,EAAe,IAAM,CACjD,KAAK,iBAAmB,KACxB,KAAK,sBAAsB,CAC/B,CAAC,CACL,CACA,uBAAwB,CACpB,GAAG,MAAM,wBAAwB,KAAK,wBAAwB,CAAC,CACnE,CACA,MAAM,yBAA0B,CA1yHpC,IAAA1d,EA+yHQ,GAJI,CAAC,KAAK,gBAAgB,QAEtB,KAAK,YAEL,KAAK,iBACL,OACJ,IAAI2d,EAAiB,KAAK,gBAC1B,KAAK,gBAAkB,CAAC,EACxB,IAAIC,EAAe7T,EAAE,IAAI4T,EAAgB,QAAQ,EAC7CE,EAAc9T,EAAE,QAAQ6T,EAAc,GAAG,KAAK,MAAM,EACpDE,EAAa/T,EAAE,KAAKA,EAAE,IAAI8T,EAAa,MAAM,CAAC,EAC9CpD,EAAU,KAAK,cAAckD,CAAc,EAC3CI,EAAyBhU,EAAE,IAAI4T,EAAgB,eAAe,EAC9DlhB,EAAUsN,EAAE,aAAa,GAAGgU,EAAwB,CAAE,QAAAtD,CAAQ,EAAG,GAAG,KAAK,mBAAmB,KAAK,KAAK,CAAC,EAC3Ghe,EAAQ,OAASsN,EAAE,IAAI4T,EAAgB,QAAQ,EAAE,KAAK,IAAI,EAC1DlhB,EAAQ,SAAWsN,EAAE,KAAKgU,EAAwB,UAAU,EAC5DthB,EAAQ,OAAS,KAAK,OACtBuD,EAAAvD,EAAQ,QAAR,OAAAA,EAAQ,MAAU,QAClBA,EAAQ,YAAc,GACtBA,EAAQ,aAAe,GACvBA,EAAQ,OAAS,GAAG,OAAO,MAAMA,EAAQ,OAAQ,GAAGsN,EAAE,IAAIgU,EAAwB,QAAQ,CAAC,EAC3FthB,EAAQ,QAAUsN,EAAE,MAAM,GAAGA,EAAE,IAAIgU,EAAwB,SAAS,CAAC,EACrE,KAAK,mBAAmBthB,EAAQ,QAASqhB,CAAU,EACnDrhB,EAAQ,WAAa,GAAG,MAAM,MAAM,mBAAoB,CACpD,OAAQohB,EACR,IAAK,kBACL,OAAQphB,EAAQ,MACpB,CAAC,EACD,KAAK,WAAa,GAClB,IAAIuhB,EAAmB,KAAK,mBAC5B,KAAK,wBAAwB,EAC7BvhB,EAAQ,QAAU,GAClB,QAAS0gB,KAAYQ,EACjB,GAAG,KAAK,aAAaK,EAAkB,CACnC,QAASb,EAAS,cAAc,QAChC,OAAQA,EAAS,MACrB,CAAC,EAEL,GAAI,CACAa,EAAiB,QAAQ,GAAG,OAAOvhB,CAAO,CAAC,EAC3C,MAAMuhB,CACV,QACA,CACI,KAAK,WAAa,GAClB,KAAK,sBAAsB,CAC/B,CACJ,CACA,mBAAmBC,EAASC,EAAO,CAC/B,IAAIhd,EAAM,GAAG,SAAS,UAAU,UAAU,EACtClC,EAAQkf,EAAM,KAAK,GAAG,GACtB,CAAClf,GAASA,EAAM,OAAS,GAAG,SAAS,OAAO,iBAC5CA,EAAQ,YACZif,EAAQ/c,CAAG,EAAIlC,CACnB,CACA,cAAcke,EAAW,CACrB,IAAIzC,EAAU,CAAC,EACf,QAAS0C,KAAYD,EAAW,CAC5B,IAAI1C,EAAOzQ,EAAE,SAASoT,EAAS,cAAe,MAAM,EACrCpT,EAAE,SAASoT,EAAS,cAAe,UAAU,IAExD3C,EAAO,GAAG,KAAK2C,EAAS,OAAO,GAE/B3C,IACAC,EAAQ0C,EAAS,MAAM,EAAI3C,EAEnC,CACA,OAAOC,CACX,CACA,OAAO,WAAWhZ,EAAS,CACvB,IAAIwI,EAAO,GAAG,KAAK,IAAIxI,CAAO,EAC9B,OAAOwI,EAAK,kBAALA,EAAK,gBAAoB,IAAI,KAAKA,CAAI,EACjD,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,aAAe,KAAmB,CACjC,YAAYrC,EAAQqQ,EAAa,CAC7B,KAAK,QAAUrQ,EACf,KAAK,aAAeqQ,CACxB,CACA,QAAQhD,EAAOxY,EAAS,CACpB,IAAI0hB,EAAsB,GAAG,SAAS,IAAI,KAAK,QAAS,CAAE,MAAAlJ,CAAM,CAAC,EACjE,GAAIkJ,EACA,UAAG,SAAS,gBAAgB,KAAK,aAAcA,CAAmB,EAClE,GAAG,MAAMA,EAAqB1hB,CAAO,EAC9B,EAEf,CACA,OAAO,SAASwY,EAAO,CACnB,IAAImJ,EAAiB,GAAG,SAAS,qBAAqBnJ,EAAM,OAAO,EACnE,GAAI,CAACmJ,EACD,OACJ,IAAIxW,EAAS,GAAG,SAAS,YAAYwW,CAAc,EACnD,GAAI,CAACxW,EACD,OACJ,IAAMqQ,EAAc,GAAG,SAAS,gBAAgBmG,CAAc,EAC9D,OAAO,IAAI,KAAKxW,EAAQqQ,CAAW,CACvC,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMlO,EAAI,GAAG,KACb,GAAG,kBAAoB,cAAgC,GAAG,MAAO,CAC7D,MAAO,CACH,MAAO,CACH,WACA,YACA,SACA,OACJ,CACJ,CACA,QAAQsU,EAAK,CACT,IAAIC,EAAe,KAAK,WAAWD,CAAG,EACtC,OAAO,KAAK,WAAWC,CAAY,CACvC,CACA,WAAWD,EAAK,CACZ,OAAOtU,EAAE,YAAYsU,EAAK,CAAE,UAAW,IAAK,CAAC,CACjD,CACA,WAAWA,EAAK,CACZ,GAAItU,EAAE,QAAQsU,CAAG,EACb,OAAO,KAAK,aAAaA,CAAG,EAEhC,GAAItU,EAAE,WAAWsU,CAAG,EAAG,CACnB,IAAIrd,EAAS,GAAG,MAAM,MAAM,IAAMqd,EAAI,KAAK,SAAU,KAAK,WAAW,CAAC,CAAC,EACvE,OAAO,KAAK,WAAWrd,CAAM,CACjC,CACA,GAAI+I,EAAE,UAAUsU,CAAG,EACf,OAAO,KAAK,eAAeA,CAAG,EAElC,GAAItU,EAAE,SAASsU,CAAG,EAAG,CACjB,GAAIA,IAAQ,OACR,OAAO,KAAK,WAAW,KAAK,SAAS,EAEzC,IAAI7c,EAAQ6c,EAAI,MAAM,kBAAkB,EACxC,GAAI7c,EACA,OAAO,KAAK,iBAAiBA,EAAM,CAAC,CAAC,GAAK,KAAK,QAAQA,EAAM,CAAC,CAAC,CAEvE,CACA,OAAO,KAAK,iBAAiB6c,CAAG,CACpC,CACA,aAAalgB,EAAO,CAChB,OAAO4L,EAAE,KAAK5L,EAAOkgB,GAAO,KAAK,WAAWA,CAAG,CAAC,CACpD,CACA,iBAAiBE,EAAW,CACxB,GAAIA,IAAc,OACd,OAAO,KAAK,UAAY,GAAG,SAAS,SAAS,KAAK,SAAU,OAAO,CAE3E,CACA,aAAa5T,EAAU,CACnB,IAAM8M,EAAa,CAAE,MAAO,KAAK,MAAO,OAAQ,KAAK,MAAO,EAExDjW,EADsB,KAAK,UAAY,GAAG,SAAS,IAAI,KAAK,SAAUmJ,EAAU8M,CAAU,GAC3D,GAAG,SAAS,IAAI9M,EAAU8M,CAAU,EACvE,GAAIjW,EACA,OAAOA,EAGP,GAAG,KAAK,cAAe,0CAA2CmJ,CAAQ,CAElF,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMZ,EAAI,GAAG,KACPyU,EAAsB,oBAC5B,GAAG,eAAiB,KAAqB,CACrC,YAAY/hB,EAAS,CA59HzB,IAAAuD,EA69HQ,KAAK,SAAWvD,EAChB,KAAK,QAAUA,EAAQ,OACvB,KAAK,UAAYA,EAAQ,SACzB,KAAK,UAAYA,EAAQ,UAAY,OAAO,SAC5C,KAAK,QAASuD,EAAAvD,EAAQ,QAAR,KAAAuD,EAAiB,GAAG,SAAS,OAAO,MAClD,KAAK,mBAAqBvD,EAAQ,iBACtC,CACA,MAAO,CACH,OAAO,KAAK,yBAAyB,GAAK,KAAK,cAAc,GAAK,KAAK,WAAW,CACtF,CACA,0BAA2B,CACvB,GAAI,KAAK,mBACL,OAAO,KAAK,mBAAmB,KAAMgiB,GAAqB,KAAK,UAAU,SAASA,CAAgB,GAAK,GAAG,SAAS,QAAQA,EAAkB,KAAK,SAAS,CAAC,CAEpK,CACA,eAAgB,CA5+HpB,IAAAze,EA6+HQ,GAAI,KAAK,SAAW,UAAY,CAAC,GAAG,SAAS,mBAAmB,KAAK,SAAS,KAAKA,EAAA,KAAK,UAAL,MAAAA,EAAc,aAC7F,OAAO,KAAK,aAAa,GAAK,KAAK,wBAAwB,CAEnE,CACA,cAAe,CACX,OAAO,GAAG,SAAS,QAAQ,KAAK,QAAS,KAAK,UAAW,KAAK,QAAQ,CAC1E,CACA,yBAA0B,CACtB,IAAIqd,EAAkB,GAAG,SAAS,YAAY,KAAK,SAAS,EAC5D,OAAOtT,EAAE,WAAWsT,EAAkBC,GAAmB,CACrD,IAAI3gB,EAAQ2gB,EAAe,MAAMkB,CAAmB,EACpD,GAAI7hB,EAAO,CACP,IAAIyR,EAAS,GAAG,SAAS,QAAQ,KAAK,QAASzR,EAAM,CAAC,EAAG,KAAK,QAAQ,EACtE,GAAIyR,EACA,OAAO,GAAG,SAAS,QAAQA,EAAQzR,EAAM,CAAC,CAAC,CAEnD,CACJ,CAAC,CACL,CACA,YAAa,CACT,OAAO,GAAG,SAAS,QAAQ,KAAK,UAAW,KAAK,UAAW,KAAK,QAAQ,CAC5E,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMoN,EAAI,GAAG,KACPrB,EAAI,GAAG,QACPgW,EAAyB,CAAE,cAAe,EAAK,EACrD,GAAG,cAAgB,cAA4B,GAAG,iBAAkB,CAChE,MAAO,CACH,OAAO,MAAM,KAAK,EAAE,OAAO,CACvB,OACA,eACA,aACJ,CAAC,CACL,CACA,iBAAiBL,EAAK,CAClB,OAAQA,EAAK,CACT,IAAK,OACD,OAAO,KAAK,kBAAkB,EAClC,IAAK,UACD,OAAO,KAAK,iCAAiC,EACjD,IAAK,SACL,IAAK,GACD,OAAO,KAAK,cAAc,KAAK,QAAQ,EAC3C,IAAK,QACD,OAAO,KAAK,cAAc,KAAK,MAAM,gBAAgB,CAAC,EAC1D,IAAK,OACD,OAAO,KAAK,eAAe,OAAO,EACtC,IAAK,OACD,OAAO,KAAK,WAAW,EAC3B,IAAK,YACD,OAAO,KAAK,WAAW,EAC3B,QACI,GAAItU,EAAE,SAASsU,CAAG,EACd,OAAO,KAAK,eAAeA,CAAG,CAE1C,CACJ,CACA,eAAe5c,EAAS,CACpB,OAAO,KAAK,cAAcA,CAAO,CACrC,CACA,iBAAiB8c,EAAW,CACxB,OAAIA,IAAc,OACP,KAAK,cAAc,EAGnB,MAAM,iBAAiBA,CAAS,CAE/C,CACA,eAAe5T,EAAU,CACrB,IAAInJ,EAAQ,KAAK,aAAamJ,CAAQ,EACtC,OAAO,KAAK,cAAcnJ,CAAK,CACnC,CACA,mBAAoB,CA3jIxB,IAAAxB,EA4jIQ,GAAI,KAAK,cAAc,EACnB,OAAOA,EAAA,KAAK,eAAL,YAAAA,EAAmB,QAAQ,KAAK,MAAO0e,EAEtD,CACA,kCAAmC,CAC/B,OAAO,GAAG,SAAS,aAAa,CAAE,MAAO,KAAK,KAAM,CAAC,CACzD,CACA,YAAa,CACT,IAAIC,EAAmB,KAAK,UAAYjW,EAAE,QAAQ,KAAK,SAAU,aAAa,EAAE,CAAC,EACjF,GAAIiW,EACA,OAAO,KAAK,cAAcA,CAAgB,CAElD,CACA,cAAcld,EAAS,CACnB,GAAIA,EACA,UAAG,MAAMA,EAAS,CAAE,MAAO,GAAM,GAAGid,EAAwB,YAAa,KAAK,WAAY,CAAC,EACpF,EAEf,CACA,YAAa,CACT,IAAIE,EAAa,GAAG,SAAS,gBAAgB,KAAK,KAAM,CAAE,MAAO,KAAK,KAAM,CAAC,EAC7E,GAAIA,EACA,OAAO,KAAK,cAAcA,CAAU,CAE5C,CACA,eAAgB,CACZ,MAAO,CAAC,KAAK,MAAM,SAAS,CAChC,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMlW,EAAI,GAAG,QACb,GAAG,gBAAkB,KAAsB,CACvC,YAAYuO,EAAU,CAClB,KAAK,SAAW,GAAG,MAAM,YAAYA,CAAQ,EAC7C,KAAK,UAAYA,EACjB,GAAG,WAAWA,EAAU,KAAK,qBAAqB,KAAK,IAAI,CAAC,EAC5D,GAAG,SAAS,UAAUA,EAAU,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAClE,KAAK,OAAS,cACd,KAAK,WAAa,GAClB,KAAK,SAAW,GAChB,KAAK,iBAAiB,CAC1B,CACA,OAAO,YAAYA,EAAU,CACzB,OAAOA,EAAS,YAATA,EAAS,UAAc,IAAI,KAAKA,CAAQ,EACnD,CACA,yBAA0B,CACtB,KAAK,OAAO,CAChB,CACA,sBAAuB,CACnB,KAAK,MAAM,CACf,CACA,OAAOxa,EAAS,CAEZ,GADA,OAAO,OAAO,KAAK,SAAUA,CAAO,EAChC,KAAK,SAAW,UAAW,CAC3B,GAAI,CAAC,GAAG,SAAS,aAAa,KAAK,SAAS,EAAG,CAC3C,GAAG,KAAK,YAAa,uCAAwC,KAAK,SAAS,EAC3E,MACJ,CACA,KAAK,OAAS,UACd,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,CAChC,CACJ,CACA,OAAQ,CAhoIZ,IAAAuD,EAioIY,KAAK,SAAW,YAChB,KAAK,kBAAkB,EACvB,KAAK,OAAS,WACdA,EAAA,KAAK,eAAL,MAAAA,EAAA,WAER,CACA,WAAWvD,EAAS,CAChB,OAAO,OAAO,KAAK,SAAUA,CAAO,EACpC,KAAK,aAAe,GACpB,KAAK,OAAO,CAChB,CACA,WAAY,CACR,KAAK,MAAM,EACX,KAAK,aAAe,EACxB,CACA,oBAAqB,CACZ,KAAK,eACN,KAAK,aAAe,GAAG,GAAG,wEAAyE,KAAK,oBAAoB,KAAK,IAAI,CAAC,EAE9I,CACA,qBAAsB,CACd,KAAK,mBAAmB,GACxB,KAAK,uBAAuB,CAIpC,CACA,oBAAqB,CACjB,MAAQ,CAAC,SAAS,SACb,KAAK,SAAS,UAAY,OAAS,KAAK,gBAAgB,EACjE,CACA,mBAAoB,CAChB,aAAa,KAAK,WAAW,EAC7B,KAAK,YAAc,IACvB,CACA,wBAAyB,CACjB,CAAC,KAAK,aAAe,CAAC,KAAK,WAC3B,KAAK,kBAAkB,EACvB,KAAK,YAAc,WAAW,KAAK,gBAAgB,KAAK,IAAI,EAAG,KAAK,mBAAmB,CAAC,EAEhG,CACA,iBAAkB,CACd,KAAK,YAAc,KACnB,KAAK,WAAW,CACpB,CACA,YAAa,CACT,GAAI,KAAK,SAAW,UAGpB,IAAI,CAAC,KAAK,mBAAmB,EAAG,CAC5B,GAAG,KAAK,YAAa,+BAA+B,EACpD,MACJ,CACA,GAAI,GAAG,KAAK,KAAK,UAAW,mBAAoB,CAAE,IAAK,CAAC,mBAAoB,KAAK,SAAS,CAAE,CAAC,EAAE,iBAAkB,CAC7G,GAAG,KAAK,YAAa,uCAAuC,EAC5D,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,MACJ,CACA,KAAK,WAAW,EACpB,CACA,eAAgB,CA9rIpB,IAAAuD,EAAAmR,EA+rIQ,OAAOA,GAAAnR,EAAA,KAAK,SAAS,WAAd,KAAAA,EAA0B0I,EAAE,WAAW,KAAK,UAAW,aAAa,IAApE,KAAAyI,EAAyE,GAAG,MAAM,OAAO,YACpG,CACA,oBAAqB,CACjB,OAAO,KAAK,IAAI,KAAK,cAAc,EAAI,KAAK,gBAAgB,EAAG,CAAC,CACpE,CACA,iBAAkB,CACd,OAAO,IAAI,KAAS,KAAK,YAC7B,CACA,iBAAkB,CAvsItB,IAAAnR,EAAAmR,EAwsIQ,YAAK,QAAL,KAAK,MAAU,GAAG,MAAM,IAAI,KAAK,SAAS,IACnCA,GAAAnR,EAAA,KAAK,QAAL,YAAAA,EAAY,UAAZ,YAAAmR,EAAA,KAAAnR,EACX,CACA,YAAa,CACT,KAAK,kBAAkB,EACvB,IAAI6e,EAAgB,CAChB,IAAK,KAAK,SAAS,IACnB,KAAM,GACN,WAAY,EAChB,EACIC,EAAe,KAAK,WACxB,GAAI,CACA,KAAK,WAAa,GAClB,KAAK,SAAW,GAChB,GAAG,OAAO,KAAK,UAAWD,CAAa,EAAE,KAAK,KAAK,iBAAiB,KAAK,IAAI,EAAG,KAAK,iBAAiB,KAAK,IAAI,CAAC,CACpH,QACA,CACI,KAAK,WAAaC,CACtB,CACJ,CACA,mBAAmB,CAAE,SAAA3I,CAAS,EAAG,CACzB,KAAK,YAAc,CAACA,GACpB,KAAK,MAAM,CAEnB,CACA,iBAAiB,CAAE,SAAAc,CAAS,EAAG,CAC3B,KAAK,SAAW,GAChB,KAAK,iBAAiB,EAClBA,EACA,KAAK,mBAAmBA,CAAQ,EAGhC,KAAK,uBAAuB,CAEpC,CACA,mBAAmB8H,EAAa,CAC5B,KAAK,MAAM,EACP,KAAK,cAAgB,GAAG,SAAS,QAAQ,KAAK,UAAWA,CAAW,GACpE,KAAK,YAAY,YAAYA,CAAW,EAAE,WAAW,KAAK,QAAQ,CAE1E,CACA,iBAAiB3E,EAAQ,CACrB,KAAK,SAAW,GAChB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,GAAG,MAAM,cAAcA,CAAM,CACjC,CACA,kBAAmB,CACf,KAAK,aAAe,IAAI,IAC5B,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMrQ,EAAI,GAAG,KACb,GAAG,kBAAoB,cAAgC,GAAG,iBAAkB,CACxE,MAAO,CACH,OAAO,MAAM,KAAK,EAAE,OAAO,CACvB,OACA,OACA,YACA,YACA,aACA,gBACJ,CAAC,CACL,CACA,iBAAiBsU,EAAK,CAClB,OAAQA,EAAK,CACT,IAAK,QACD,OAAO,KAAK,OAAO,EACvB,IAAK,QACD,OAAO,KAAK,aAAa,EAC7B,IAAK,OACD,OAAO,KAAK,gBAAgB,OAAO,EACvC,IAAK,UACD,OAAO,KAAK,SAAS,EACzB,IAAK,OACD,OAAO,KAAK,MAAQ,GAAG,SAAS,WAAW,KAAK,KAAM,KAAK,WAAW,CAAC,EAC3E,IAAK,SACL,IAAK,SACL,IAAK,GACD,OAAO,KAAK,eAAe,KAAK,QAAQ,EAC5C,QACI,GAAItU,EAAE,SAASsU,CAAG,EACd,OAAO,KAAK,gBAAgBA,CAAG,CAE3C,CACJ,CACA,eAAe5c,EAAS,CACpB,OAAO,KAAK,eAAeA,CAAO,CACtC,CACA,eAAeA,EAAS,CACpB,GAAIA,EACA,UAAG,OAAOA,EAAS,KAAK,WAAW,CAAC,EAC7B,EAEf,CACA,gBAAgBkJ,EAAU,CACtB,IAAInJ,EAAQ,KAAK,aAAamJ,CAAQ,EACtC,OAAO,KAAK,eAAenJ,CAAK,CACpC,CACA,cAAe,CACX,OAAO,KAAK,eAAe,KAAK,MAAM,cAAc,CAAC,CACzD,CACA,QAAS,CACL,UAAG,SAAS,YAAY,CAAE,GAAG,KAAK,WAAW,EAAG,OAAQ,KAAK,QAAS,CAAC,EAChE,EACX,CACA,UAAW,CACP,OAAO,GAAG,SAAS,cAAc,CAAE,GAAG,KAAK,WAAW,EAAG,OAAQ,KAAK,QAAS,CAAC,CACpF,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMkH,EAAI,GAAG,QACPqB,EAAI,GAAG,KACb,GAAG,MAAQ,cAAoB,GAAG,MAAO,CACrC,MAAO,CACH,MAAO,CACH,UACA,QACA,UACA,OACA,UACA,iBACA,mBACJ,CACJ,CACA,UAAW,CACP,MAAO,CACH,QAAS,CAAC,EACV,eAAgB,GAAG,SAAS,cAAc,EAC1C,kBAAmB,GAAG,SAAS,cAAc,CACjD,CACJ,CACA,YAAYtN,EAAU,CAAC,EAAG,CAEtB,GADA,MAAMA,CAAO,EACT,CAAC,KAAK,KACN,KAAM,yBAEd,CACA,eAAgB,CACZ,GAAG,KAAK,cAAc,IAAI,CAC9B,CACA,kBAAmB,CAAE,CACrB,aAAc,CACV,OAAO,GAAG,MAAM,YAAY,KAAK,IAAI,CACzC,CACA,MAAO,CACP,CACA,QAAS,CACL,MAAM,IAAI,GAAG,cACjB,CACA,SAAU,CACN,MAAM,IAAI,GAAG,cACjB,CACA,KAAKA,EAAS,CACV,KAAK,MAAM,KAAK,KAAMA,CAAO,CACjC,CACA,WAAWyX,EAAQ,CACf,OAAOnK,EAAE,WAAWmK,EAAQ,IAAI,CACpC,CACA,WAAY,CACR,OAAO,KAAK,MAAM,UAAU,IAAI,CACpC,CACA,SAAU,CACN,OAAO,KAAK,MAAM,QAAQ,IAAI,CAClC,CACA,QAAS,CACL,OAAO,KAAK,MAAM,OAAO,IAAI,CACjC,CACA,WAAY,CACR,OAAO,KAAK,MAAM,UAAU,IAAI,CACpC,CACA,QAAS,CACL,OAAO,KAAK,MAAM,OAAO,IAAI,CACjC,CACA,UAAW,CACP,OAAO,KAAK,MAAM,SAAS,IAAI,CACnC,CACA,IAAI,QAAS,CACT,OAAO,KAAK,MAAM,SAAS,IAAI,CACnC,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,MAAM,QAAQ,IAAI,CAClC,CACA,IAAI,WAAY,CACZ,OAAO,KAAK,MAAM,YAAY,IAAI,CACtC,CACA,IAAI,aAAc,CACd,OAAO,KAAK,MAAM,cAAc,IAAI,CACxC,CACA,IAAI,SAAU,CACV,MAAO,CAAC,KAAM,GAAG,KAAK,WAAW,CACrC,CACA,IAAI,OAAQ,CAl5IhB,IAAAlU,EAm5IQ,OAAOA,EAAA,KAAK,SAAL,KAAAA,EAAA,KAAK,OAAW,KAAK,MAAM,QAAQ,IAAI,CAClD,CACA,mBAAoB,CAChB,OAAO,KAAK,gBAAkB,KAAK,OACvC,CACA,eAAgB,CACZ,OAAO,KAAK,YAAc,KAAK,OACnC,CACA,iBAAkB,CACd,OAAO,KAAK,cAAc,CAC9B,CACA,0BAA2B,CACvB,MAAM,IAAI,GAAG,cACjB,CACA,SAASyB,EAAS,CACd,OAAOA,EAAQ,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAM,KAAK,OAC5D,CACA,MAAMpF,EAAM,CACR,OAAO,KAAK,yBAAyBA,CAAI,EAAE,KAAK,CACpD,CACA,OAAOA,EAAM,CACT,OAAO,KAAK,yBAAyBA,CAAI,EAAE,OAAO,CACtD,CACA,yBAAyBA,EAAM,CAC3B,OAAO,GAAG,mBAAmB,aAAaA,EAAM,CAC5C,MAAQuN,GAAU,KAAK,qBAAqBA,CAAK,EACjD,SAAU,CAAC,KAAK,OAAO,EACvB,UAAW,IACf,CAAC,CACL,CACA,qBAAqBA,EAAO,CACxB,OAAO,KAAK,SAASA,EAAM,MAAM,CACrC,CACA,mBAAmBA,EAAO,CACtB,IAAMoV,EAAkB,SAAS,iBAAiBpV,EAAM,QAASA,EAAM,OAAO,EAC9E,MAAO,CAACoV,GAAmB,KAAK,SAASA,CAAe,CAC5D,CACA,mBAAmB3iB,EAAM,CACrB,OAAO,GAAG,aAAa,aAAaA,EAAM,CAAE,MAAO,IAAK,CAAC,CAC7D,CACA,QAAQA,EAAM,CACV,OAAO,KAAK,mBAAmBA,CAAI,EAAE,KAAK,CAC9C,CACA,YAAa,CACT,MAAO,CAAC,KAAK,QAAQ,WACzB,CACA,aAAc,CACN,KAAK,UACL,KAAK,WAAa,SAAS,MAC3B,KAAK,cAAgB,GAAG,QAAQ,aAAa,EAC7C,KAAK,cAAgB,GAAG,QAAQ,SAExC,CACA,gBAAiB,CACR,KAAK,iBAAiB,IAGvB,KAAK,eACL,GAAG,QAAQ,KAAK,KAAK,aAAa,EAElC,KAAK,aACL,SAAS,MAAQ,KAAK,YAEtB,KAAK,eACL,GAAG,QAAQ,eAAe,KAAK,aAAa,EAEpD,CACA,UAAU+I,EAAI,CACV,OAAO,KAAK,MAAM,UAAU,KAAMA,CAAE,CACxC,CACA,cAAc3I,EAAS,CAz9I3B,IAAAuD,EAAAmR,EA09IYpH,EAAE,SAAStN,EAAQ,QAAQ,IAC3B,KAAK,SAAWA,EAAQ,UAExB,GAAG,QAAQ,OAAO,gBAAkBsN,EAAE,OAAOtN,EAAQ,QAAQ,KAC7D0U,GAAAnR,EAAA,GAAG,UAAH,YAAAA,EAAY,uBAAZ,MAAAmR,EAAA,KAAAnR,EAAmCvD,EAAQ,UAC3C,KAAK,SAAWA,EAAQ,UAExBsN,EAAE,SAAStN,EAAQ,KAAK,IACxB,KAAK,MAAQA,EAAQ,MAE7B,CACA,kBAAmB,CACf,OAAO,KAAK,SAAW,KAAK,QAAQ,CACxC,CACA,IAAI,OAAQ,CACR,OAAI,KAAK,iBAAiB,EACf,SAAS,MAGT,KAAK,UAEpB,CACA,IAAI,MAAMwiB,EAAO,CACb,KAAK,WAAaA,EACd,KAAK,iBAAiB,IACtB,SAAS,MAAQA,EAEzB,CACA,IAAI,UAAW,CACX,OAAI,KAAK,iBAAiB,EACf,GAAG,QAAQ,aAAa,EAGxB,KAAK,aAEpB,CACA,IAAI,SAASC,EAAU,CACnB,KAAK,cAAgBA,EACjB,KAAK,iBAAiB,GACtB,GAAG,QAAQ,eAAeA,CAAQ,CAE1C,CACA,IAAI,UAAW,CACX,OAAI,KAAK,iBAAiB,EACf,GAAG,QAAQ,SAGX,KAAK,aAEpB,CACA,IAAI,SAASC,EAAU,CACnB,IAAMC,EAAmB,KAAK,SAC9BD,EAAW,GAAG,QAAQ,aAAaA,CAAQ,GACvCC,IAAqBD,GAAY,KAAK,WACtC,KAAK,cAAgBA,EACjB,KAAK,iBAAiB,GACtB,GAAG,QAAQ,KAAKA,CAAQ,EAEvB,KAAK,SACN,KAAK,KAAK,4BAA6B,CAAE,SAAAA,CAAS,CAAC,EAG/D,CACA,SAASE,EAAM,CACX,OAAO,KAAK,YAAY,SAASA,CAAI,CACzC,CACA,OAAO,SAASC,EAAO,CACnB,MAAM,IAAI,GAAG,cACjB,CACA,UAAW,CACP,MAAM,IAAI,GAAG,cACjB,CACA,SAASjjB,EAAM,CACX,OAAOqM,EAAE,MAAM,KAAK,yBAAyB,EAAG,GAAGrM,CAAI,CAC3D,CACA,CAAC0N,EAAE,QAAQ,GAAG,EAAEiJ,EAAO,CACnB,OAAQ,KAAK,cAAgBA,EAAM,aAAiB,KAAK,UAAYA,EAAM,OAC/E,CACA,UAAW,CACP,IAAIoL,EAAiB,SAAS,cAC9B,OAAOA,IAAmB,SAAS,MAAQ,KAAK,QAAQ,SAASA,CAAc,CACnF,CACA,OAAQ,CACJ,OAAO,OAAO,KAAM,KAAK,SAAS,CAAC,CACvC,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM1V,EAAI,GAAG,QACPqB,EAAI,GAAG,KACb,GAAG,MAAM,QAAU,cAAsB,GAAG,KAAM,CAC9C,MAAO,CACH,OAAO,MAAM,KAAK,EAAE,OAAO,CACvB,WACA,QACA,OACA,SACA,QACA,WACA,gBACA,iBACA,eACA,gBACA,aACA,cACA,wBACA,yBACA,cACA,eACA,mBACA,WACA,WACA,aACA,YACA,cACA,cACA,eACA,iBACA,kBACA,SACJ,CAAC,CACL,CACA,YAAYtN,EAAS,CACjB,MAAMA,CAAO,EACT,KAAK,cAAgB,GACrB,KAAK,YAAc,CAAC,SAAU,MAAO,SAAS,EAEzC,KAAK,cAAgB,GAC1B,KAAK,YAAc,CAAC,EAGpB,KAAK,YAAcsN,EAAE,YAAY,KAAK,WAAW,EAEjD,KAAK,iBACL,KAAK,eAAiB,IAAI,GAAG,WAAW,KAAK,cAAc,GAE3D,KAAK,kBACL,KAAK,gBAAkB,IAAI,GAAG,WAAW,KAAK,eAAe,EAErE,CACA,SAASnO,EAAM,CACX,IAAIwJ,EAAK,KAAKxJ,CAAI,EAClB,GAAIwJ,EACA,OAAOA,EAAG,KAAK,IAAI,CAE3B,CACA,cAAcma,EAAe,CACzB,KAAK,UAAL,KAAK,QAAY,KAAK,sBAAsB,GAC5C,IAAMC,EAAezV,EAAE,cAAcA,EAAE,KAAK,KAAM,CAAC,QAAS,WAAY,OAAQ,QAAS,SAAS,CAAC,CAAC,EACpG,KAAK,QAAU,KAAK,UAAUwV,EAAe,KAAMC,CAAY,CACnE,CACA,sBAAsBD,EAAe,CACjC,KAAK,gBAAkB,KAAK,UAAUA,EAAe,UAAU,CACnE,CACA,sBAAsBA,EAAe,CACjC,KAAK,gBAAkB,KAAK,UAAUA,EAAe,WAAY,CAAE,cAAe,EAAG,CAAC,CAC1F,CACA,iBAAiBA,EAAe,CAC5B,KAAK,WAAa,KAAK,UAAUA,EAAe,KAAK,CACzD,CACA,qBAAqBA,EAAe,CAChC,KAAK,eAAiB,KAAK,UAAUA,EAAe,SAAS,CACjE,CACA,WAAWE,EAAS,CAChB,KAAK,eAAe,OAAOA,CAAO,EAClC,KAAK,aAAa,CACtB,CACA,cAAe,CACf,CACA,qBAAqBF,EAAe,CAChC,YAAK,eAAiB,KAAK,UAAUA,EAAe,UAAW,CAC3D,aAAc,YACd,aAAc,KAAK,gBACvB,CAAC,EACM7W,EAAE,MAAM,KAAK,eAAgB,2BAA4B,CAAE,KAAM,KAAK,YAAa,CAAC,CAC/F,CACA,UAAU6W,EAAeF,EAAM5iB,EAAU,CAAC,EAAG,CACzC,OAAOiM,EAAE,MAAM6W,EAAe,KAAK,SAASF,CAAI,EAAG5iB,CAAO,CAC9D,CACA,OAAO,SAAS4iB,EAAM,CAClB,OAAOtV,EAAE,QAAQ,CAAC,KAAM,KAAK,KAAMsV,CAAI,CAAC,EAAE,KAAK,GAAG,CACtD,CACA,uBAAwB,CACpB,GAAM,CAAE,OAAAjR,CAAO,EAAI,KACnB,OAAI,KAAK,OAASA,EAAO,KACd,EAAIA,EAAO,sBAAsB,EAGjC,CAEf,CACA,eAAgB,CA7pJpB,IAAApO,EAAAmR,EA8pJQ,MAAM,cAAc,EACpB,KAAK,aAAe,IAAI,GAAG,aAAa,IAAI,EACxC,KAAK,uBAAuB,QAAQ,GACpC,KAAK,qBAAqB,KAAK,cAAc,CAAC,EAE9C,KAAK,uBAAuB,SAAS,IACjC,KAAK,gBACL,GAAG,GAAG,KAAK,gBAAiB,WAAYvH,GAAS,CACzCA,EAAM,SAAW,KAAK,iBACtB,KAAK,kBAAkBA,EAAO,EAAI,CAE1C,CAAC,EAGD,KAAK,oBAAsB,KAAK,OAAO,GAAG,WAAY,CAACA,EAAOnI,IAAY,CACtE,GAAI,CAAC,GAAG,MAAM,uBAAuBA,CAAO,EAAG,CAC3C,IAAMie,EAAgB,KAAK,QAAU,KAAK,OAAO,SAASje,CAAO,EACjE,KAAK,kBAAkBmI,EAAO8V,CAAa,CAC/C,CACJ,CAAC,GAGL,KAAK,uBAAuB,KAAK,IACjC,KAAK,oBAAsB,GAAG,MAAM,SAAS9V,GAAS,KAAK,gBAAgBA,CAAK,CAAC,GAErF,KAAK,oBAAoB,YAAa,CAAC5K,EAAO2gB,IAAiB,CAC3D,KAAK,OAAO3gB,EAAO2gB,CAAY,CACnC,CAAC,EACD,KAAK,oBAAoB,aAAc,CAAC3gB,EAAO2gB,IAAiB,CAC5D,KAAK,QAAQ3gB,EAAO2gB,CAAY,CACpC,CAAC,GACDxO,GAAAnR,EAAA,GAAG,SAAQ,sBAAX,MAAAmR,EAAA,KAAAnR,EAAiC,MACjC,KAAK,qBAAqB,KAAK,YAAa,KAAK,MAAM,EACvD,KAAK,qBAAqB,KAAK,aAAc,KAAK,OAAO,EACzD,KAAK,GAAG,WAAY,aAAc,CAAC4J,EAAOgW,IAAU,KAAK,gBAAgBhW,EAAOgW,CAAK,CAAC,CAC1F,CACA,gBAAgBhW,EAAOgW,EAAO,CAC1B,IAAI/S,EAAK+S,EAAM,aAAa,KAAK,EAC7BC,EAAgB,GAAG,KAAK,cAAcnX,EAAE,WAAWmE,CAAE,CAAC,EACtDiT,EAAiB,GAAG,SAAS,IAAID,EAAe,CAAE,MAAO,KAAM,CAAC,EAChEE,EAAgB,GAAG,SAAS,IAAIF,EAAe,CAAE,MAAO,IAAK,CAAC,EAClE,GAAIC,EAAe,OAAS,GAAKC,EAAc,CAAC,IAAMD,EAAe,CAAC,EAAG,CACrElW,EAAM,eAAe,EACrB,IAAMwS,EAAQ2D,EAAc,CAAC,EAC7B3D,EAAM,MAAM,EACRA,EAAM,QAAQ,yCAAyC,GACvDA,EAAM,MAAM,CAEpB,CACJ,CACA,kBAAkBxS,EAAOoW,EAAM,CAC3B,GAAG,IAAI,UAAUpW,CAAK,EAClBoW,GACA,GAAG,MAAM,KAAKpW,CAAK,EACvB,KAAK,QAAQ,WAAY,CAAE,OAAQA,EAAM,MAAO,CAAC,CACrD,CACA,gBAAgBA,EAAO,CACnB,GAAI,KAAK,QAAQ,EAAG,CAChB,IAAIwS,EAAQ,GAAG,KAAK,aAAa,EAC7BA,EACAA,EAAM,KAAK,EAEN,KAAK,uBAAuB,KAAK,IACtC,GAAG,MAAM,KAAKxS,EAAO,CAAE,IAAK,EAAK,CAAC,EAClC,KAAK,QAAQ,MAAM,EAE3B,CACJ,CACA,oBAAoB6E,EAAWwR,EAAS,CACpC,IAAItV,EAAW,IAAI8D,KACnB,KAAK,GAAG,WAAY9D,EAAU,SAAUf,EAAO,CAC3C,GAAG,MAAM,KAAKA,EAAO,CAAE,IAAK,EAAK,CAAC,EAClC,IAAMsM,EAAStM,EAAM,OAAO,QAAQe,CAAQ,EACtC3L,EAAQ0J,EAAE,SAASwN,EAAQzH,CAAS,EACpCkR,EAAe,CAAE,OAAAzJ,CAAO,EACxBzC,EAAS,IAAI,GAAG,cAAcyC,EAAQyJ,CAAY,EACxDlM,EAAO,gBAAgB,WAAW,EAClCA,EAAO,OAAO,QAAQ,EACtBA,EAAO,OAAO,UAAU,EACxBA,EAAO,OAAO,SAAS,EACvB,GAAG,MAAM,mBAAmB,IAAMwM,EAAQjhB,EAAO2gB,CAAY,CAAC,CAClE,CAAC,CACL,CACA,qBAAqB1D,EAAYgE,EAAS,CACtC,GAAKhE,EAGL,OAAO,KAAK,GAAGA,EAAYrS,GAAS,CAChCA,EAAM,eAAe,EACrBqW,EAAQ,KAAK,KAAMrW,EAAO,CAAE,SAAUA,EAAM,QAAS,CAAC,CAC1D,CAAC,CACL,CACA,qBAAqBnN,EAAS,CAC1B,KAAK,qBAAqB,KAAK,eAAgB,KAAK,OAAQA,CAAO,CACvE,CACA,sBAAsBA,EAAS,CAC3B,KAAK,qBAAqB,KAAK,gBAAiB,KAAK,QAASA,CAAO,CACzE,CACA,qBAAqByjB,EAAYD,EAASxjB,EAAS,CAC/C,IAAI0iB,EAAUgB,EACd,GAAID,IAAef,EAAW,KAAK,YAAcgB,EAAaD,EAAW,UAAUf,CAAQ,GAAI,CAC3F,IAAMiB,EAAa,CAAE,GAAGD,EAAY,SAAAhB,CAAS,EAC7Cc,EAAQ,KAAK,KAAMG,EAAY3jB,CAAO,CAC1C,CACJ,CACA,kBAAmB,CAvwJvB,IAAAuD,EAAAmR,EAwwJQ,MAAM,iBAAiB,GACvBnR,EAAA,KAAK,sBAAL,MAAAA,EAAA,YACAmR,EAAA,KAAK,sBAAL,MAAAA,EAAA,WACA,KAAK,aAAa,SAAS,CAC/B,CACA,gBAAgB1U,EAAS,CAMrB,IAAM4jB,EAAiB,CAAE,GAAG5jB,EAAS,UALnB,IAAM,KAAK,oBAAoBA,CAAO,EAKR,WAJ7B,IAAM,CA/wJjC,IAAAuD,EAgxJY,KAAK,kBAAkB,GACvBA,EAAAvD,EAAQ,aAAR,MAAAuD,EAAA,KAAAvD,EACJ,EAC4D,IAAK,EAAM,EACvE,GAAG,QAAQ,KAAK,QAAS4jB,CAAc,CAC3C,CACA,mBAAoB,CACpB,CACA,gBAAgB5jB,EAAU,CAAC,EAAG,CAC1B,IAAM6jB,EAAU,GAAG,QAAQ,KAAK,cAAc,EAAG7jB,EAAQ,aAAcA,CAAO,EAC1E8jB,EACJ,OAAI,KAAK,UAAY,CAAC,GAAG,OAAO,OAAO9jB,EAAQ,YAAY,IACvD8jB,EAAe,GAAG,QAAQ,KAAK,gBAAiB9jB,EAAQ,kBAAmBA,CAAO,GAE/E,QAAQ,IAAI,CAAC6jB,EAASC,CAAY,CAAC,CAC9C,CACA,MAAM,mBAAmB9jB,EAAU,CAAC,EAAG,CAhyJ3C,IAAAuD,EAiyJQ,MAAM,KAAK,gBAAgB,CACvB,cAAcA,EAAAvD,EAAQ,YAAR,KAAAuD,EAAqB,KAAK,WAAW,KAAK,aAAa,EACrE,kBAAmB,UACnB,OAAQvD,EAAQ,QAAU,KAAK,WAC/B,SAAUA,EAAQ,UAAY,KAAK,YACvC,CAAC,EACD,KAAK,eAAiB,EAC1B,CACA,oBAAoBA,EAAU,CAAC,EAAG,CAzyJtC,IAAAuD,EA0yJQ,OAAO,KAAK,gBAAgB,CACxB,aAAc,KAAK,kBAAmBA,EAAAvD,EAAQ,YAAR,KAAAuD,EAAqB,KAAK,WAAW,KAAK,cAAc,GAC9F,kBAAmB,KAAK,gBAAkB,WAC1C,OAAQvD,EAAQ,QAAU,KAAK,YAC/B,SAAUA,EAAQ,UAAY,KAAK,aACvC,CAAC,CACL,CACA,OAAOuC,EAAQ,KAAMvC,EAAU,CAAC,EAAG,CAC/B,OAAO,KAAK,oBAAoB,SAAUuC,EAAOvC,CAAO,CAC5D,CACA,QAAQuC,EAAQ,KAAMvC,EAAU,CAAC,EAAG,CAChC,OAAO,KAAK,oBAAoB,UAAWuC,EAAOvC,CAAO,CAC7D,CACA,uBAAuBgB,EAAQ,CAC3B,OAAOsM,EAAE,SAAS,KAAK,YAAatM,CAAM,CAC9C,CACA,oBAAoB+iB,EAAMxhB,EAAOvC,EAAS,CACtC,OAAAA,EAAU,CAAE,GAAGA,EAAS,KAAA+jB,EAAM,MAAAxhB,EAAO,MAAO,IAAK,EAC1C,IAAI,GAAG,OAAO,WAAWvC,CAAO,EAAE,QAAQ,CACrD,CACA,0BAA2B,CACvB,OAAO,KAAK,kBAAkB,EAAE,SAAS,CAAC,CAC9C,CACA,UAAW,CACP,MAAO,GAAG,KAAK,cACnB,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,MAAM,kBAAoB,cAAgC,GAAG,MAAM,OAAQ,CAC1E,gBAAiB,CACR,KAAK,QACN,GAAG,KAAK,2BAA2B,EAEvC,KAAK,QAAU,IAAI,GAAG,OAAO,CACzB,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,SAAU,KAAK,QACnB,CAAC,EACD,KAAK,cAAc,KAAK,QAAQ,MAAM,EACtC,KAAK,qBAAqB,KAAK,OAAO,CAC1C,CACA,cAAe,CACX,KAAK,QAAQ,MAAM,KAAK,OAAO,CACnC,CACA,mBAAoB,CAChB,KAAK,QAAQ,KAAK,CACtB,CACA,MAAO,CACC,KAAK,OAAO,IACR,KAAK,WAAW,GAAK,KAAK,QAAQ,WAAW,EAC7C,KAAK,QAAQ,YAAa,CACtB,UAAW,GACX,YAAa,EACjB,CAAC,EAGD,KAAK,QAAQ,KAAK,EAG9B,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,MAAM,oBAAsB,cAAkC,GAAG,MAAM,OAAQ,CAC9E,OAAO,kBAAmB,CACtB,OAAO,SAAS,IACpB,CACA,gBAAiB,CACb,GAAG,SAAS,YAAY,WAAW,EACnC,KAAK,cAAc,KAAK,YAAY,iBAAiB,CAAC,EAClD,KAAK,UACL,KAAK,sBAAsB,KAAK,OAAO,EAE3C,KAAK,sBAAsB,KAAK,OAAO,EACvC,KAAK,iBAAiB,KAAK,eAAe,EAC1C,KAAK,qBAAqB,KAAK,UAAU,CAC7C,CACA,mBAAoB,CAChB,GAAG,SAAS,YAAY,WAAW,CACvC,CACA,MAAO,CACC,KAAK,WAAW,GAAK,KAAK,OAAO,GACjC,KAAK,YAAY,iBAAiB,EAAE,YAAY,KAAK,OAAO,CAEpE,CACJ,CAGM,EAEC,IAAM,CAEb,IAAIuD,EACJ,IAAM0I,EAAI,GAAG,QACb,GAAG,MAAM,MAAQ1I,EAAK,cAAmB,GAAG,KAAM,CAC1C,IAAI,SAAU,CACV,OAAO0I,EAAE,IACb,CACA,YAAYjM,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,cAAc,CACvB,CACA,0BAA2B,CACvB,OAAO,SAAS,IACpB,CACA,OAAO,UAAW,CACd,MAAO,MACX,CACA,eAAgB,CACP,KAAK,QAAQ,oBACd,KAAK,QAAQ,kBAAoB,GACjC,MAAM,cAAc,EAE5B,CACA,MAAO,CACH,KAAK,cAAc,CACvB,CACA,QAAS,CACL,KAAK,iBAAiB,CAC1B,CACA,SAAU,CACN,KAAK,iBAAiB,CAC1B,CACA,kBAAmB,CACf,GAAG,KAAK,6BAA6B,CACzC,CACA,UAAW,CACP,MAAO,YACX,CACJ,EACAuD,EAAG,KAAO,OACVA,EAGE,EAEC,IAAM,CAEb,IAAIA,EACJ,GAAG,MAAM,OAASA,EAAK,cAAoB,GAAG,MAAM,mBAAoB,CACpE,EACAA,EAAG,KAAO,QACVA,EAGE,EAEC,IAAM,CAEb,IAAIA,EACJ,GAAG,MAAM,OAASA,EAAK,cAAoB,GAAG,MAAM,iBAAkB,CAClE,EACAA,EAAG,KAAO,QACVA,EAGE,EAEC,IAAM,CAEb,IAAIA,EACJ,GAAG,MAAM,QAAUA,EAAK,cAAqB,GAAG,MAAM,mBAAoB,CACtE,EACAA,EAAG,KAAO,SACVA,EAGE,EAEC,IAAM,CAEb,IAAIA,EACJ,GAAG,MAAM,OAASA,EAAK,cAAoB,GAAG,MAAM,mBAAoB,CACpE,EACAA,EAAG,KAAO,QACVA,EAGE,EAEC,IAAM,CAEb,IAAM+J,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,YAAc,KAAkB,CAC/B,YAAY+X,KAAUpkB,EAAM,CACxB,KAAK,OAASokB,EACd,IAAMhkB,EAAUsN,EAAE,oBAAoB1N,EAAM,OAAO,EAOnD,GANII,EAAQ,wBAA0B,IAClC,GAAG,MAAM,iBAAiBA,CAAO,EAErC,KAAK,QAAUsN,EAAE,YAAYtN,EAAQ,KAAK,EAC1C,KAAK,QAAUA,EAAQ,OACvB,KAAK,WAAaA,EAAQ,WAAa,KAAK,aAAa,GAAK,KAAK,OAAO,QACtEsN,EAAE,SAAS,KAAK,UAAU,EAAG,CAC7B,IAAM2W,EAAmB,CAAE,GAAGjkB,EAAS,UAAW,KAAK,OAAO,QAAS,sBAAuB,EAAM,EACpG,KAAK,WAAa,IAAI,KAAK,YAAY,KAAK,OAAQ,KAAK,WAAYikB,CAAgB,EAAE,MAAM,CACjG,CACJ,CACA,cAAe,CACX,GAAI,KAAK,QACL,OAAO,KAAK,YAAY,KAAK,OAAO,CAE5C,CACA,OAAQ,CACJ,OAAO,KAAK,IAAI,EAAE,CAAC,CACvB,CACA,KAAM,CACF,IAAI5V,EAAUf,EAAE,QAAQ,KAAK,QAAS/K,GAAS,KAAK,cAAcA,CAAK,CAAC,EACxE,OAAA8L,EAAUf,EAAE,QAAQe,CAAO,EAC3BA,EAAUf,EAAE,KAAKe,CAAO,EACjBA,CACX,CACA,YAAYrJ,EAAS,CACjB,OAAAA,EAAUiH,EAAE,IAAIjH,CAAO,EAChBsI,EAAE,KAAK,KAAK,OAAO,SAAS,EAAGkL,GAASA,EAAM,SAASxT,CAAO,CAAC,CAC1E,CACA,UAAUzC,EAAO,CACb,OAAO,KAAK,OAAO,GAAGA,CAAK,CAC/B,CACA,cAAcA,EAAO,CACjB,GAAIA,aAAiB,GAAG,MACpB,OAAOA,EAEX,GAAI+K,EAAE,SAAS/K,CAAK,EAChB,OAAO,KAAK,UAAUA,CAAK,EAE/B,GAAI,QAAQ,KAAKA,CAAK,EAClB,OAAO,KAAK,UAAU,OAAOA,CAAK,CAAC,EAEvC,GAAI+K,EAAE,aAAa/K,CAAK,EACpB,OAAO,KAAK,YAAYA,CAAK,EAEjC,OAAQA,EAAO,CACX,IAAK,MACD,MAAO,CAAC,KAAK,WAAY,GAAG,KAAK,OAAO,SAAS,CAAC,EACtD,IAAK,UACD,OAAO,KAAK,WAChB,IAAK,UACD,OAAO,KAAK,OAAO,mBAAmB,KAAK,UAAU,EACzD,IAAK,SACD,OAAO,KAAK,WAAW,OAC3B,IAAK,WACL,IAAK,YACD,OAAO,KAAK,WAAW,UAC3B,IAAK,QACD,OAAO,KAAK,WAAW,MAC3B,IAAK,aACL,IAAK,cACD,OAAO,KAAK,WAAW,YAC3B,IAAK,UACD,OAAO,KAAK,WAAW,QAC3B,IAAK,MACD,MAAO,MACX,IAAK,OACD,OAAO,KAAK,OAAO,KACvB,IAAK,UACL,IAAK,WACD,OAAO+K,EAAE,QAAQ,KAAK,OAAO,QAAQ,EACzC,IAAK,QACD,OAAO,KAAK,OAAO,MACvB,IAAK,SACD,OAAO,KAAK,aAAa,EAC7B,QACI,OAAO,GAAG,KAAK,+BAAgC/K,CAAK,CAC5D,CACJ,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM+K,EAAI,GAAG,KACb,GAAG,WAAa,KAAiB,CAC7B,aAAc,CACV,KAAK,kBAAoB,CAAC,EAC1B,KAAK,OAAS,CAAC,KAAK,WAAW,CAAC,CACpC,CACA,YAAa,CACT,OAAO,GAAG,MAAM,MAAM,CAAE,KAAM,OAAQ,MAAO,IAAK,CAAC,CACvD,CACA,OAAOkL,EAAO,CACVlL,EAAE,OAAO,KAAK,OAAQkL,CAAK,CAC/B,CACA,KAAKA,EAAOxY,EAAS,CACjB,IAAMkkB,EAAc5W,EAAE,QAAQkL,EAAM,WAAW,EACzC2L,EAAiB,CAAE,GAAGnkB,EAAS,YAAa,EAAM,EACxD,QAASokB,KAAcF,EACnBE,EAAW,QAAQ,QAASD,CAAc,CAElD,CACA,OAAQ,CACJ,KAAK,KAAK,KAAK,KAAM,CAAE,UAAW,EAAM,CAAC,EACzC,KAAK,kBAAoB,CAAC,EAC1B,KAAK,KAAK,MAAM,CACpB,CACA,OAAO3L,EAAO,CACV,OAAOlL,EAAE,SAAS,KAAK,OAAQkL,CAAK,CACxC,CACA,SAASA,EAAO,CACZ,MAAO,CAAC,KAAK,OAAOA,CAAK,CAC7B,CACA,SAASA,EAAO,CACZ,OAAO,KAAK,OAAOA,EAAM,MAAQ,CAAC,CACtC,CACA,QAAQA,EAAO,CACX,OAAO,KAAK,OAAOA,EAAM,MAAQ,CAAC,CACtC,CACA,YAAYA,EAAO,CACf,OAAOlL,EAAE,QAAQ,KAAK,OAAO,MAAM,EAAGkL,EAAM,KAAK,CAAC,CACtD,CACA,mBAAmBA,EAAO,CACtB,MAAO,CAACA,EAAO,GAAGA,EAAM,SAAS,CACrC,CACA,cAAcA,EAAO,CACjB,OAAO,KAAK,OAAO,MAAMA,EAAM,MAAQ,CAAC,CAC5C,CACA,OAAOA,EAAO,CACV,OAAO,KAAK,OAASA,CACzB,CACA,UAAUA,EAAO,CACb,OAAO,KAAK,OAASA,CACzB,CACA,UAAUA,EAAO,CACb,OAAO,KAAK,UAAYA,CAC5B,CACA,QAAQA,EAAO,CACX,OAAO,KAAK,QAAUA,CAC1B,CACA,OAAO5Y,EAAM,CACT,OAAO,KAAK,OAAO,GAAGA,CAAI,EAAE,CAAC,CACjC,CACA,UAAUA,EAAM,CACZ,OAAO,IAAI,GAAG,YAAY,KAAM,GAAGA,CAAI,EAAE,IAAI,CACjD,CACA,MAAO,CACH,QAAS4Y,KAAS,KAAK,OACnBA,EAAM,KAAK,CAEnB,CACA,UAAUA,EAAO7P,EAAI,CACjB,GAAI,CACA,YAAK,kBAAkB,KAAK6P,CAAK,EAC1B7P,EAAG,CACd,QACA,CACI,KAAK,kBAAkB,IAAI,CAC/B,CACJ,CACA,UAAW,CACP,OAAO2E,EAAE,QAAQ,KAAK,MAAM,CAChC,CACA,gBAAgB/K,EAAQ,KAAMvC,EAAU,CAAC,EAAG,CACxCA,EAAQ,YAAc,GACtB,QAASqkB,KAAW/W,EAAE,QAAQ,KAAK,QAAQ,EACvC+W,EAAQ,QAAQ9hB,EAAOvC,CAAO,CAEtC,CACA,GAAG+F,EAAO,CACN,OAAO,KAAK,OAAOA,CAAK,CAC5B,CACA,QAAQyS,EAAO,CACX,OAAO,KAAK,OAAO,QAAQA,CAAK,CACpC,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,OAAO,MACvB,CACA,IAAI,MAAO,CACP,OAAO,KAAK,OAAO,CAAC,CACxB,CACA,IAAI,UAAW,CACX,OAAO,KAAK,KAAK,WACrB,CACA,IAAI,SAAU,CACV,OAAOlL,EAAE,KAAK,KAAK,iBAAiB,GAAK,KAAK,KAClD,CACA,IAAI,OAAQ,CACR,OAAOA,EAAE,KAAK,KAAK,MAAM,CAC7B,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,iBAAmB,KAAuB,CACzC,YAAYxM,EAAM,CACd,IAAMwjB,EAAY,GAAG,SAAS,aAE9B,GADA,KAAK,QAAU,GAAG,KAAK,OAAOxjB,CAAI,EAC9B,KAAK,QAAS,CACd,IAAMyjB,EAAOzjB,EAAK,aAAa,MAAM,EACjCyjB,GAASA,IAAS,MAClB,KAAK,KAAOD,EAAUC,CAAI,GAE9B,IAAMC,EAAS1jB,EAAK,aAAa,SAAS,EACtC0jB,IACA,KAAK,QAAUF,EAAUE,CAAM,GAEnC,IAAMC,EAAQ3jB,EAAK,aAAa,UAAU,EACtC2jB,IACA,KAAK,cAAgB,IAAI,GAAG,WAAWA,EAAOH,CAAS,EAE/D,CACJ,CACA,UAAUI,EAAoB,CA1sKlC,IAAAnhB,EAAAmR,EA2sKQ,OAAO,KAAK,SAAW,CAAC,EAAE,KAAK,OAASgQ,GACpC,KAAK,UAAYA,IACjBhQ,GAAAnR,EAAA,KAAK,gBAAL,YAAAA,EAAoB,OAApB,MAAAmR,EAAA,KAAAnR,EAA2BmhB,EAAoB,IACvD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMpX,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,cAAgB,KAAoB,CACnC,UAAUnL,EAAM,CACP,GAAG,KAAK,aAAaA,CAAI,IAC1B,KAAK,IAAIA,EAAM,aAAeqM,GAAU,KAAK,iBAAiBA,EAAO,EAAI,CAAC,EAC1E,KAAK,IAAIrM,EAAM,uBAAyBqM,GAAU,KAAK,iBAAiBA,CAAK,CAAC,EAC9E,KAAK,IAAIrM,EAAM,aAAeqM,GAAU,KAAK,aAAaA,CAAK,CAAC,EAExE,CACA,IAAIrM,EAAM0e,EAAYhZ,EAAU,CAC5B,GAAG,GAAG1F,EAAM0e,EAAY,CAAE,QAAS,EAAK,EAAGhZ,CAAQ,CACvD,CACA,iBAAiB2G,EAAOwX,EAAY,CAChC,IAAM7jB,EAAOqM,EAAM,OACfrM,IAAS,KAAK,eACd,KAAK,MAAM,EACX,KAAK,aAAeA,EAChB,GAAG,KAAK,kBAAkBqM,EAAOrM,CAAI,IACjC6jB,EACA,KAAK,mBAAmBxX,EAAOrM,CAAI,EAGnC,KAAK,YAAYqM,EAAOrM,CAAI,GAI5C,CACA,aAAaqM,EAAO,CAChB,GAAIA,EAAM,SAAW,KAAK,aACtB,OAAO,KAAK,MAAM,CAE1B,CACA,OAAQ,CAvvKZ,IAAA5J,EAwvKa,KAAK,eAGV,aAAa,KAAK,MAAM,GACpBA,EAAA,KAAK,kBAAL,MAAAA,EAAsB,YACtB,KAAK,gBAAgB,MAAM,EAE/B,KAAK,aAAe,OACpB,KAAK,gBAAkB,OAC3B,CACA,mBAAmB4J,EAAOrM,EAAM,CAlwKpC,IAAAyC,EAmwKQ,IAAMwc,GAAQxc,EAAA0I,EAAE,WAAWnL,EAAM,kBAAkB,IAArC,KAAAyC,EAA0C,GAAG,KAAK,OAAO,aACvE,KAAK,OAAS+J,EAAE,MAAMyS,EAAO,IAAM,KAAK,YAAY5S,EAAOrM,CAAI,CAAC,CACpE,CACA,YAAYqM,EAAOrM,EAAM,CACrB,GAAI,CAACA,EAAK,YAAa,CACnB,KAAK,MAAM,EACX,MACJ,CACA,IAAM8jB,EAAWxL,GAAoB,KAAK,gBAAkBA,EAC5D,GAAG,IAAI,UAAUjM,CAAK,EACtB,GAAG,MAAM,wBAAwB,GAAG,KAAK,QAAQrM,EAAM,CAAE,SAAA8jB,CAAS,CAAC,CAAC,CACxE,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMtX,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,iBAAmB,KAAuB,CACzC,YAAY9M,EAAM,CACd,KAAK,aAAe,MAAMA,IAC1B,KAAK,UAAY,IAAI,KAAK,eAC1B,KAAK,YAAc,MAAMA,WACzB,KAAK,YAAc,EACnB,KAAK,cAAgB,CACzB,CACA,cAAc0lB,EAASC,EAAaC,EAAS,CAAC,EAAG,CAhyKrD,IAAAxhB,EAiyKQshB,EAAU5Y,EAAE,KAAK4Y,CAAO,EACxB,IAAMG,EAAgB,IAAM,GAAG,MAAM,wBAAwBF,EAAY,CAAC,EAE1E,GADAC,EAAO,aAAcxhB,EAAAwhB,EAAO,cAAP,KAAAxhB,EAAsB,GAAG,OAAO,UAAU,EAC3DwhB,EAAO,cAAgB,GACvB,OAAOC,EAAc,EAEpB,CACDD,EAAO,YAAc,GACrB,KAAK,OAAOF,CAAO,EACnB,KAAK,aAAaA,CAAO,EACzB,IAAI7b,EAAU,KAAK,4BAA4B6b,EAASG,CAAa,EACrE,OAAAhc,EAAUA,EAAQ,KAAK,IAAM,KAAK,eAAe6b,CAAO,CAAC,EAClD7b,CACX,CACJ,CACA,OAAO0J,EAAU,CAhzKrB,IAAAnP,EAAAmR,EAkzKQ,GADA,KAAK,cACA,OAAK,gBAAkB,GAAM,CAAC,GAAG,OAAO,UAAU,GAGvD,CAAAhC,EAAW,KAAK,qBAAqBA,CAAQ,EAC7C,QAAS1N,KAAW0N,EAChB,KAAK,kBAAkB1N,CAAO,EAElC,OAAO0P,GAAAnR,EAAA,GAAG,SAAQ,gBAAX,YAAAmR,EAAA,KAAAnR,EAA2B,sBACtC,CACA,qBAAqBmP,EAAU,CAC3B,OAAIA,EACOpF,EAAE,QAAQoF,EAAUuS,GAAMhZ,EAAE,KAAKgZ,EAAG,QAAQ,KAAK,SAAS,EAAGA,EAAG,iBAAiB,KAAK,SAAS,CAAC,CAAC,EAGjG,SAAS,iBAAiB,KAAK,SAAS,CAEvD,CACA,SAASjgB,EAAS,CACd,OAAOA,EAAQ,UAAU,SAAS,KAAK,YAAY,CACvD,CACA,kBAAkBA,EAAS,CACvB,KAAK,iBAAiBA,CAAO,CACjC,CACA,iBAAiBA,EAASkgB,EAAa,CAAC,EAAG,CACvC,OAAAA,EAAa,CAAE,OAAQlgB,EAAS,IAAK,GAAO,GAAGkgB,CAAW,EACnD,GAAG,KAAK,KAAK,YAAaA,CAAU,CAC/C,CACA,aAAaL,EAAS,CAClB,KAAK,gBACL,KAAK,cAAcA,EAAS,EAAI,CACpC,CACA,eAAeA,EAAS,CACpB,KAAK,gBACL,KAAK,cAAcA,EAAS,EAAK,CACrC,CACA,cAAcA,EAASM,EAAU,CAC7B,QAASngB,KAAW6f,EAChB7f,EAAQ,UAAU,OAAO,KAAK,aAAcmgB,CAAQ,CAE5D,CACA,4BAA4BN,EAASlc,EAAI,CACrC,GAAIkc,EAAQ,OAAS,EACjB,OAAOlc,EAAG,EAEd,IAAMyc,EAAajY,GAAU,CACzB,GAAI,CAACA,EAAM,UACP,QAASnI,KAAW6f,EACZ7f,IAAYmI,EAAM,QAAU,KAAK,SAASnI,CAAO,GACjD,KAAK,iBAAiBA,EAAS,CAAE,UAAW,EAAK,CAAC,CAIlE,EACMqgB,EAAe,GAAG,GAAGR,EAAS,KAAK,YAAaO,CAAS,EAC/D,OAAOzc,EAAG,EAAE,KAAK0c,CAAY,CACjC,CACA,MAAM,OAAQ,CACV,MAAM,KAAK,OAAO,EAClB,KAAK,YAAc,EACnB,KAAK,cAAgB,CACzB,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM/X,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,kBAAoB,KAAwB,CAC3C,YAAYqZ,EAAQC,EAAO,CACvB,KAAK,OAASD,EACd,KAAK,MAAQC,CACjB,CACA,OAAO,WAAWzd,EAAQ,CACtB,IAAI/C,EAAQ+C,EAAO,MAAM,2BAA2B,EACpD,OAAO,IAAI,KAAK/C,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,CACtC,CACA,cAAcygB,EAAU,CACpB,GAAI,KAAK,MAAO,CACZ,IAAIC,EAAe,KACnB,OAAO,YAAa7lB,EAAM,CACtB,OAAO6lB,EAAa,qBAAqB,KAAMD,EAAU5lB,CAAI,CACjE,CACJ,KAEI,QAAO,IAAI,SAAS,GAAG4lB,EAAU,KAAK,MAAM,CAEpD,CACA,UAAW,CACP,MAAO,SAAS,KAAK,SAAS,KAAK,QACvC,CACA,qBAAqBE,EAASF,EAAU5lB,EAAM,CAC1C,IAAI+lB,EAAgB;AAAA;AAAA,0CAEcH,EAAS,KAAK;AAAA,YAC5C,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,MAMLF,EACJ,GAAI,CAGA,GAFA,GAAG,WAAa,CAAE,KAAA1lB,EAAM,QAAS8lB,CAAQ,EACzCJ,EAAS,GAAG,QAAQ,MAAM,SAAS,KAAM,SAAU,CAAE,MAAO,KAAK,MAAO,KAAMK,CAAc,CAAC,EACzF,GAAG,WAAW,MACd,MAAM,GAAG,WAAW,MAGpB,OAAO,GAAG,WAAW,KAE7B,QACA,CACI,GAAG,WAAa,OACZL,GACAA,EAAO,OAAO,CAEtB,CACJ,CACA,WAAWM,EAAe,CACtB,OAAO,KAAK,OAAStY,EAAE,SAASsY,EAAe,KAAK,KAAK,CAC7D,CACA,OAAO,YAAY5gB,EAAS4gB,EAAe,CACvC,GAAI,EAACA,GAAA,MAAAA,EAAe,QAChB,OAEJ,IAAMC,EAAevY,EAAE,QAAQ,GAAG,SAAS,QAAQ,EACnDA,EAAE,KAAK,GAAG,OAAO,OAAO,oBAAsB0E,GAAc,CACxD,IAAIhM,EAAUiG,EAAE,QAAQjH,EAAS,IAAIgN,cAAsB,EAC3D1E,EAAE,KAAKtH,EAAUjB,GAAU,CACvB,IAAI0L,EAAiB1L,EAAM,aAAaiN,CAAS,EAC7CxL,EAAW,KAAK,WAAWiK,CAAc,EACzCqV,EAAO,CAACna,KAAY/L,IAAS,GAAG,IAAI,KAAK,cAAe,wBAAwBoS,MAAcvB,QAAqB9E,IAAW,GAAG/L,CAAI,EACzI,GAAI,CAAC4G,EAAS,WAAWof,CAAa,EAClC,OAAOE,EAAK,gEAAiEtf,EAAS,MAAOof,CAAa,EAE9G,IAAIG,EAAYF,EAAa,EAC7B,GAAI,CAACE,EACD,OAAOD,EAAK,qCAAqC,EAErDtf,EAAS,MAAQuf,EACjBhhB,EAAM,aAAaiN,EAAWxL,EAAS,SAAS,CAAC,CACrD,CAAC,CACL,CAAC,CACL,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMyF,EAAI,GAAG,QACPqB,EAAI,GAAG,KACb,GAAG,aAAe,KAAmB,CACjC,YAAYkL,EAAO,CACf,KAAK,OAASA,EACd,KAAK,cAAgB,KAAK,OAAO,gBAAgB,CACrD,CACA,aAAc,CACN,KAAK,WAGT,KAAK,SAAW,GAChB,KAAK,aAAe,GAAG,GAAG,UAAWrL,GAAS,KAAK,SAASA,CAAK,CAAC,EAClE,KAAK,YAAclB,EAAE,kBAAkB,KAAK,cAAe,CACvD,SAAY,IACZ,KAAQ,SACR,aAAc,MAClB,CAAC,EACD,KAAK,iBAAmBA,EAAE,MAAM,KAAK,cAAe,cAAe,2BAA2B,EAC9F,KAAK,gBAAkBA,EAAE,MAAM,KAAK,cAAe,WAAY,2BAA2B,EAC9F,CACA,YAAa,CACT,KAAK,SAAS,CAClB,CACA,UAAW,CACF,KAAK,WAGV,KAAK,SAAW,GAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,OAAO,EAC7B,KAAK,gBAAgB,OAAO,EAChC,CACA,SAASkB,EAAO,CACZ,GAAM,CAAE,OAAAhC,CAAO,EAAIgC,EACf,KAAK,uBAAyB,GAAG,MAAM,uBAAuBhC,CAAM,IAGxE,KAAK,sBAAwB,GACzBA,IAAW,KAAK,iBAChB,KAAK,UAAU,GAETA,IAAW,KAAK,iBAAoB,CAAC,KAAK,OAAO,SAASA,CAAM,IACtE,KAAK,YAAY,EAErB,KAAK,sBAAwB,GACjC,CACA,YAAY6a,EAAc,CACtB,GAAG,MAAM,KAAK,cAAeA,CAAY,CAC7C,CACA,WAAY,CACR,KAAK,qBAAqB,KAAK,OAAO,cAAc,CAAC,GAAK,KAAK,YAAY,CAC/E,CACA,qBAAqBhhB,EAAS,CAC1B,QAASihB,KAAS3Y,EAAE,QAAQtI,EAAQ,QAAQ,EACxC,GAAI,GAAG,SAAS,SAASihB,CAAK,GAAK,KAAK,qBAAqBA,CAAK,EAC9D,MAAO,EAGnB,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM3Y,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,OAAS,KAAa,CACrB,YAAYia,EAAK,CACb,KAAK,MAAM,EACX,KAAK,OAAOA,CAAG,CACnB,CACA,OAAQ,CACJ,KAAK,QAAU,CAAC,CACpB,CACA,CAAC5Y,EAAE,KAAK,GAAG,GAAI,CACX,OAAO,IAAI,GAAG,OAAO,IAAI,CAC7B,CACA,UAAW,CACP,IAAMlO,EAAM,CAAC,EACb,QAAS+mB,KAAS,KAAK,QAAS,CAC5B,GAAM,CAAE,KAAAhnB,EAAM,MAAAoD,CAAM,EAAI4jB,EACnB7Y,EAAE,sBAAsBnO,CAAI,IACzB,KAAK,YAAYA,CAAI,GACrBC,EAAAD,KAAAC,EAAAD,GAAc,CAAC,GACfC,EAAID,CAAI,EAAE,KAAKoD,CAAK,GAGpBnD,EAAID,CAAI,EAAIoD,EAGxB,CACA,OAAOnD,CACX,CACA,SAAU,CACN,OAAO,KAAK,OAChB,CACA,YAAa,CACT,IAAMgnB,EAAW,IAAI,SACrB,QAASD,KAAS,KAAK,QACnBC,EAAS,OAAOD,EAAM,KAAMA,EAAM,KAAK,EAE3C,OAAKC,EAAS,UACVA,EAAS,cAAgB,KAAK,SAE3BA,CACX,CACA,SAAU,CACN,IAAIlmB,EAAQoN,EAAE,IAAI,KAAK,QAAS,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAClE,OAAApN,EAAQoN,EAAE,QAAQpN,CAAK,EAChBA,EAAM,KAAK,GAAG,CACzB,CACA,mBAAmBimB,EAAO,CACtB,GAAM,CAAE,MAAA5jB,CAAM,EAAI4jB,EAClB,GAAI,KAAK,eAAe5jB,CAAK,EACzB,OAEJ,IAAI8jB,EAAQ,mBAAmBF,EAAM,IAAI,EACzC,OAAI7Y,EAAE,QAAQ/K,CAAK,IACf8jB,GAAS,IACTA,GAAS,mBAAmB9jB,CAAK,GAE9B8jB,CACX,CACA,eAAe9jB,EAAO,CAClB,OAAOA,aAAiB,IAC5B,CACA,iBAAkB,CACd,IAAMkP,EAASnE,EAAE,IAAI,KAAK,QAAS,OAAO,EAC1C,OAAOA,EAAE,KAAKmE,EAAQ,KAAK,cAAc,CAC7C,CACA,MAAM6U,EAAM,CACR,IAAIpmB,EAAQ,CAAComB,EAAM,KAAK,QAAQ,CAAC,EACjCpmB,EAAQoN,EAAE,OAAOpN,EAAOoN,EAAE,SAAS,EACnC,IAAMrD,EAAYqD,EAAE,SAASgZ,EAAM,GAAG,EAAI,IAAM,IAChD,OAAOpmB,EAAM,KAAK+J,CAAS,CAC/B,CACA,IAAI9K,EAAMoD,EAAO,CACb,KAAK,QAAQ,KAAK,CAAE,KAAApD,EAAM,MAAAoD,CAAM,CAAC,CACrC,CACA,OAAO2jB,EAAK,CACJ5Y,EAAE,UAAU4Y,CAAG,IAEVA,aAAe,KAAK,YACzB,KAAK,QAAQ,KAAK,GAAGA,EAAI,OAAO,EAE3B5Y,EAAE,QAAQ4Y,CAAG,EAClB,KAAK,QAAQ,KAAK,GAAGA,CAAG,EAEnB5Y,EAAE,SAAS4Y,CAAG,EACnB,KAAK,iBAAiBA,CAAG,EAEpB5Y,EAAE,WAAW4Y,CAAG,EACrB,KAAK,oBAAoBA,CAAG,EAEvB5Y,EAAE,SAAS4Y,CAAG,EACnB,KAAK,kBAAkBA,CAAG,EAG1B,GAAG,KAAK,4BAA6BA,CAAG,EAEhD,CACA,kBAAkBrkB,EAAQ,CACtB,QAAS4C,KAAO5C,EAAQ,CACpB,IAAMU,EAAQV,EAAO4C,CAAG,EAClB8hB,EAAgBjZ,EAAE,QAAQ/K,CAAK,EAAIA,EAAQ,CAACA,CAAK,EACvD,QAASikB,KAAgBD,EACrB,KAAK,IAAI9hB,EAAK+hB,CAAY,CAElC,CACJ,CACA,iBAAiBH,EAAO,CACpB,QAASzD,KAAQyD,EAAM,MAAM,GAAG,EAC5B,GAAIzD,EAAM,CACN,GAAI,CAACzjB,EAAMoD,CAAK,EAAIqgB,EAAK,MAAM,GAAG,EAClCzjB,EAAO,mBAAmBA,CAAI,EAC1BmO,EAAE,QAAQ/K,CAAK,EACfA,EAAQ,mBAAmBA,CAAK,EAGhCA,EAAQ,KAEZ,KAAK,IAAIpD,EAAMoD,CAAK,CACxB,CAER,CACA,oBAAoB6jB,EAAU,CAC1B,QAAS7jB,KAAS6jB,EAAS,QAAQ,EAC/B,KAAK,IAAI,GAAG7jB,CAAK,CAEzB,CACA,IAAIpD,EAAMoD,EAAO,CACb,KAAK,OAAOpD,CAAI,EAChB,KAAK,IAAIA,EAAMoD,CAAK,CACxB,CACA,OAAOpD,EAAM,CACT,KAAK,QAAUmO,EAAE,OAAO,KAAK,QAAS,KAAK,cAAcnO,CAAI,CAAC,CAClE,CACA,cAAcA,EAAM,CAChB,OAAOgnB,GAASA,EAAM,OAAShnB,CACnC,CACA,IAAIA,EAAM,CACN,OAAI,KAAK,YAAYA,CAAI,EACd,KAAK,OAAOA,CAAI,EAGhB,KAAK,SAASA,CAAI,CAEjC,CACA,SAASA,EAAM,CACX,IAAMgnB,EAAQ7Y,EAAE,KAAK,KAAK,QAAS,KAAK,cAAcnO,CAAI,CAAC,EAC3D,OAAOgnB,GAAA,YAAAA,EAAO,KAClB,CACA,OAAOhnB,EAAM,CACT,GAAI,KAAK,YAAYA,CAAI,EACrB,OAAO,KAAK,OAAOA,CAAI,EAEtB,CACD,IAAMsnB,EAAUnZ,EAAE,IAAI,KAAK,QAAS,KAAK,cAAcnO,CAAI,CAAC,EAC5D,OAAOmO,EAAE,IAAImZ,EAAS,OAAO,CACjC,CACJ,CACA,YAAYhiB,EAAK,CACb,OAAOA,EAAI,SAAS,IAAI,CAC5B,CACA,CAAC6I,EAAE,QAAQ,GAAG,GAAI,CACd,OAAO,KAAK,QAAQ,SAAW,CACnC,CACA,OAAO,SAASE,EAAM,CAClB,OAAO,KAAK,cAAcA,CAAI,CAClC,CACA,OAAO,cAAcqS,EAAW,CAC5B,IAAI6G,EAAS,GAAG,KAAK,OAAO7G,CAAS,EACrC,OAAO,KAAK,WAAW6G,CAAM,CACjC,CACA,OAAO,WAAWA,EAAQ,CACtB,IAAMC,EAAS,IAAK,KACpB,QAAShH,KAASrS,EAAE,SAASoZ,CAAM,EAC/BC,EAAO,SAAShH,CAAK,EAEzB,OAAOgH,CACX,CACA,SAAShH,EAAO,CACZA,EAAQ1T,EAAE,IAAI0T,CAAK,EACnB,IAAIxgB,EAAOwgB,EAAM,KACjB,GAAIxgB,GAAQ,CAACwgB,EAAM,SAAU,CACzB,GAAM,CAAE,QAAAxP,CAAQ,EAAIwP,EACd,CAAE,KAAAV,CAAK,EAAIU,EACjB,GAAIxP,IAAY,SACZ,QAASsH,KAAUkI,EAAM,iBAAiB,QAAQ,EAC1ClI,EAAO,UACP,KAAK,IAAItY,EAAMsY,EAAO,KAAK,UAI7BwH,IAAS,YAAgBA,IAAS,QACpCU,EAAM,SACN,KAAK,IAAIxgB,EAAMwgB,EAAM,KAAK,UAGzBV,IAAS,OACd,QAAS2H,KAAQjH,EAAM,MACnB,KAAK,IAAIxgB,EAAMynB,CAAI,MAIvB,QAAO,KAAK,IAAIznB,EAAMwgB,EAAM,KAAK,CAEzC,CACJ,CACA,CAACrS,EAAE,QAAQ,GAAG,EAAEiJ,EAAO,CACnB,OAAQ,KAAK,cAAgBA,EAAM,aAAgBjJ,EAAE,QAAQ,KAAK,QAASiJ,EAAM,OAAO,CAC5F,CACA,OAAO,QAAQxW,EAAK,CAChB,IAAM4mB,EAAS,IAAK,KAEhBN,EADa/Y,EAAE,SAASvN,CAAG,EACV,OACrB,OAAIsmB,IACAA,EAAQA,EAAM,QAAQ,MAAO,EAAE,EAC/BM,EAAO,OAAON,CAAK,GAEhBM,CACX,CACA,OAAO,SAAS5mB,EAAK,CACjB,OAAOuN,EAAE,aAAavN,EAAK,CAAE,OAAQ,EAAM,CAAC,CAChD,CACA,OAAO,SAAS8mB,EAAS,CACrB,OAAOA,EAAQ,OAAO,SAAUC,EAAWH,EAAQ,CAC/C,OAAAG,EAAU,OAAOH,CAAM,EAChBG,CACX,EAAG,IAAI,GAAG,MAAQ,CACtB,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM7a,EAAI,GAAG,QACP8a,EAAmB,IACzB,GAAG,YAAc,KAAkB,CAC/B,aAAc,CACV,KAAK,MAAQ,EACb,KAAK,SAAW9a,EAAE,MAAM,SAAS,KAAM,iBAAiB,EACxD,KAAK,SAAS,MAAM,WAAa,SAAS8a,eAC1C,KAAK,QAAQ,CAAC,EACd,GAAG,QAAQ,MAAM,KAAK,QAAQ,EAC9B,KAAK,OAAS,GACd,KAAK,UAAU,CACnB,CACA,WAAY,CACR,IAAI/G,EACA,KAAK,OAAS,GACV,KAAK,OAAO,EAAI,IAChBA,EAAO,EAAK,EAAI,KAAK,OAAO,EAG5BA,EAAO,IAAO,GAAM,KAAK,OAAO,EAIpCA,EAAO,KAAQ,IAAM,KAAK,QAAU,KAAK,OAAO,EAEpD,KAAK,QAAQ,KAAK,OAASA,CAAI,EAC/B,KAAK,QACL,IAAMgH,EAAgBD,EAAoB,KAAK,MAAQ,GACvD,KAAK,QAAU,WAAW,KAAK,UAAU,KAAK,IAAI,EAAGC,CAAa,CACtE,CACA,QAAQC,EAAO,CACX,KAAK,OAASA,EACd,KAAK,SAAS,MAAM,MAAQ,GAAGA,KACnC,CACA,SAAU,CACN,aAAa,KAAK,OAAO,EACzB,KAAK,SAAS,OAAO,CACzB,CACA,UAAW,CACP,aAAa,KAAK,OAAO,EACzB,KAAK,QAAQ,GAAG,EAChB,WAAW,KAAK,QAAQ,KAAK,IAAI,EAAGF,CAAgB,CACxD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMzZ,EAAI,GAAG,KACb,GAAG,cAAiB,UAAY,CAC5B,IAAM4Z,EAAkB,CACpB,UAAW,GACX,QAAS,GACT,WAAY,GACZ,UAAW,GACX,MAAO,OACP,MAAO,SACP,YAAa,EACjB,EACMC,EAAoB,CACtB,MAAO,GACP,QAAS,GACT,SAAU,GACV,MAAO,GACP,WAAY,EAChB,EAkBMC,EAjBiB,CACnB,MACA,SACA,SACA,UACA,SACA,QACA,WACA,QACA,YACA,UACA,WACA,SACA,YACA,OACA,SACJ,EACmC,OAAO,CACtC,OACA,SACA,UACA,SACA,aACA,UACJ,CAAC,EACKC,EAAe,CACjB,MACA,WACA,UACA,WACA,UACJ,EACMC,EAAY,CACd,UACA,QACA,QACJ,EACA,SAASC,EAAiBvnB,EAAS,CAC/B,GAAIA,EAAQ,SACR,OAAO,GAAG,SAAS,OAAO,eAElC,CACA,SAASwnB,EAAiBxnB,EAAS,CAC/B,GAAIA,EAAQ,QACR,OAAOmnB,CAEf,CACA,SAASM,EAAWznB,EAAS,CA72LjC,IAAAuD,EAAAmR,GA82LQA,GAAAnR,EAAA,GAAG,SAAQ,0BAAX,MAAAmR,EAAA,KAAAnR,EAAqCvD,GACrC,IAAM0E,EAAW4I,EAAE,MAAM4Z,EAAiBK,EAAiBvnB,CAAO,CAAC,EACnE,OAAOsN,EAAE,MAAMA,EAAE,KAAK5I,EAAU4iB,CAAS,EAAG,CAAE,SAAA5iB,CAAS,EAAG,CAAE,YAAa,GAAG,MAAM,WAAY,EAAG1E,EAASwnB,EAAiBxnB,CAAO,CAAC,CACvI,CACA,SAAS0nB,EAASC,EAAqBC,EAAc,CACjD,OAAOta,EAAE,MAAMqa,EAAoB,SAAUC,EAAcD,CAAmB,CAClF,CACA,SAASE,EAAmB7nB,EAAS,CAC5BsN,EAAE,KAAK+Z,EAAcS,GAAcxa,EAAE,QAAQtN,EAAQ8nB,CAAU,CAAC,CAAC,IAC9D9nB,EAAQ,sBACRA,EAAQ,QAAU,GAGlB,GAAG,KAAK,8BAAgCqnB,EAAa,KAAK,IAAI,EAAI,WAAW,EAGzF,CACA,SAASU,EAAc/nB,EAAS,CAC5B,IAAMgoB,EAAY,CAAC,EACnB,QAASvjB,KAAOzE,EAAS,CACrB,IAAMuC,EAAQvC,EAAQyE,CAAG,EACrBwjB,EAAa,GAAG,SAAS,WAAWxjB,CAAG,EACvCwjB,IACAD,EAAUC,CAAU,EAAI1lB,EAEhC,CACA,OAAOylB,CACX,CACA,SAASE,EAAkBP,EAAqB,CAC5C,OAAIA,EAAoB,YACb,CACH,GAAGA,EAAoB,SACvB,GAAGra,EAAE,KAAKqa,EAAqBP,CAAW,EAC1C,GAAGW,EAAcJ,CAAmB,EAC/B,iBAAkB,EAC3B,EAGO,CACH,GAAGA,EACH,GAAGI,EAAcJ,CAAmB,CACxC,CAER,CACA,MAAO,CACH,WAAAF,EACA,SAAAC,EACA,mBAAAG,EACA,kBAAAK,CACJ,CACJ,EAAG,CAGG,EAEC,IAAM,CAEb,GAAG,aAAe,cAA2B,GAAG,MAAO,CACnD,MAAO,CACH,MAAO,CACH,YACA,QACA,SACA,UACA,UACJ,CACJ,CACA,UAAW,CACP,MAAO,CACH,UAAW,CAAC,CAChB,CACJ,CACA,IAAI,MAAO,CACP,MAAO,CAAC,KAAK,UAAU,MAC3B,CACA,IAAI,UAAW,CACX,OAAO,KAAK,UAAU,CAAC,CAC3B,CACA,OAAO,KAAKC,EAAMC,EAAWC,EAAgB,GAAM,CAC/C,OAAKD,EAEE,IAAI,KAAK,CACZ,OAAQD,EAAK,OACb,MAAOA,EAAK,MACZ,QAASA,EAAK,QACd,UAAWA,EAAK,UAAU,OAAOC,EAAU,SAAS,EACpD,SAAWC,GAAiB,KAAK,cAAcF,EAAMC,CAAS,CAClE,CAAC,EAPUD,CAQf,CACA,aAAa,cAAcA,EAAMC,EAAW,CACxC,OAAO,KAAK,KAAK,MAAMD,EAAK,SAAU,MAAMC,EAAU,SAAU,EAAK,CACzE,CACA,OAAO,WAAY,CACf,OAAO,IAAI,KAAK,CACZ,OAAQ,QACR,SAAU,QAAQ,QAAQ,CAC9B,CAAC,CACL,CACJ,CAGM,EAEC,IAAM,CAEb,IAAI7kB,EACJ,IAAM+J,EAAI,GAAG,KACb,GAAG,SAAW/J,EAAK,cAAsB,GAAG,MAAO,CAC3C,MAAO,CACH,MAAO,CACH,SACA,MACA,OACA,SACA,SACA,aACA,UACA,UACA,aACA,QACA,cACA,aACA,QACA,OACA,UACA,YACA,WACA,cACA,SACA,YACA,UACA,aACA,cACA,UACA,WACA,YACA,OACA,YACA,iBACJ,CACJ,CACA,UAAW,CACP,MAAO,CACH,MAAO,MACP,UAAW,GACX,QAAS,CAAC,EACV,QAAS,GAAG,QAAQ,OAAO,QAC3B,QAAS,IAAI,IACjB,CACJ,CACA,YAAYvD,EAAS,CApgM7B,IAAAuD,EAAAmR,EAAA4T,EA2gMY,GANA,MAAMtoB,CAAO,EACb,KAAK,OAAS,IAAI,GAAG,OAAO,KAAK,MAAM,EACnC,KAAK,YAAc,OACnB,KAAK,WAAa,GAAG,QAAQ,OAAO,YAExC,KAAK,WAAW,GACX,KAAK,QAAU,KAAK,OAAS,KAAK,SAAW,CAACA,EAAQ,MAAO,CAC9D,IAAMuoB,EAAqB,CAAE,OAAQ,KAAK,MAAO,EACjD,KAAK,MAAQ,GAAG,MAAM,IAAI,KAAK,MAAOA,CAAkB,EACxD,KAAK,UAAY,GAAG,MAAM,IAAI,KAAK,UAAWA,CAAkB,EAChE,KAAK,UAAL,KAAK,QAAY,KAAK,MAAM,SAAW,CAAC,GACxC,KAAK,cAAL,KAAK,cAAgBhlB,EAAA,KAAK,YAAL,YAAAA,EAAgB,UAAW,CAAC,GACjD,KAAK,OAAL,KAAK,KAAS,KAAK,MAAM,MACzB,KAAK,WAAL,KAAK,UAAamR,EAAA,KAAK,YAAL,YAAAA,EAAgB,KACtC,CACA,KAAK,SAAWpH,EAAE,YAAY,GAC9Bgb,EAAA,KAAK,kBAAL,YAAK,gBAAoBhb,EAAE,WAAW,GAAG,QAAQ,OAAO,gBAAiB,IAAI,GAC7E,KAAK,gBAAgB,CACzB,CACA,IAAI,KAAM,CAxhMlB,IAAA/J,EAyhMY,OAAOA,EAAA,KAAK,OAAL,KAAAA,EAAA,KAAK,KAAS,IAAI,cAC7B,CACA,IAAI,WAAY,CACZ,GAAI,KAAK,WACL,OAAO,KAAK,WAEX,GAAI,KAAK,OAAQ,CAClB,IAAIqV,EAAQ,GAAG,SAAS,iBAAiB,KAAK,MAAM,EAChD4P,EAAYlb,EAAE,IAAIsL,EAAO,UAAU,EACnCoC,EAAa,CAAE,OAAQ,KAAK,OAAQ,MAAO,KAAK,KAAM,EAC1D,OAAO1N,EAAE,QAAQA,EAAE,IAAIkb,EAAYta,GAAa,GAAG,SAAS,IAAIA,EAAU8M,CAAU,CAAC,CAAC,CAC1F,CACJ,CACA,IAAI,UAAUzY,EAAO,CACjB,KAAK,WAAaA,CACtB,CACA,IAAI,UAAW,CAziMvB,IAAAgB,EA0iMY,OAAOA,EAAA,KAAK,YAAL,YAAAA,EAAiB,EAC5B,CACA,YAAa,CACT,KAAK,OAAS+J,EAAE,gBAAgB,KAAK,MAAM,EAC3C,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,IAAMA,EAAE,aAAa,KAAK,GAAG,CACtC,CACA,sBAAuB,CACnBA,EAAE,KAAK,IAAM,CACT,KAAK,MAAQ,OACb,KAAK,UAAY,OACjB,KAAK,OAAS,OACd,KAAK,UAAY,MACrB,CAAC,CACL,CACA,qBAAsB,CA1jM9B,IAAA/J,EA2jMY,IAAIwB,GAAQxB,EAAA,KAAK,MAAL,YAAAA,EAAU,MAAM,kBAC5B,GAAIwB,EACA,YAAK,IAAMA,EAAM,CAAC,EACX,KAAK,KAAOA,EAAM,CAAC,CAElC,CACA,sBAAuB,CACf,CAAC,KAAK,KAAO,KAAK,cAAc,GAAKuI,EAAE,QAAQ,KAAK,MAAM,IAG9D,KAAK,IAAM,KAAK,OAAO,MAAM,KAAK,GAAG,EACrC,KAAK,OAAO,MAAM,EACtB,CACA,QAAS,CACL,OAAO,GAAG,QAAQ,aAAa,KAAK,MAAM,CAC9C,CACA,eAAgB,CACZ,OAAOA,EAAE,oBAAoB,KAAK,MAAM,CAC5C,CACA,wBAAyB,CACrB,OAAO,KAAK,OAAO,GAAM,KAAK,SAAW,MAC7C,CACA,WAAY,CACR,OAAOA,EAAE,eAAe,KAAK,MAAO,GAAG,QAAQ,OAAO,UAAW,IAAI,CACzE,CACA,oBAAqB,CAplM7B,IAAA/J,EAqlMY+J,EAAE,OAAO,KAAM,IAAM,KAAK,qBAAqB,CAAC,GAChD/J,EAAA,KAAK,WAAL,MAAAA,EAAA,UAAgB,KACpB,CACA,MAAO,CAxlMf,IAAAA,EAylMY,GAAI,KAAK,QAAU,MAEnB,IAAI,KAAK,UAAU,EACf,YAAK,MAAQ,UACb,KAAK,WAAW,GAChBA,EAAA,KAAK,YAAL,MAAAA,EAAA,WACA,KAAK,QAAU,GACf,IAAI,GAAG,QAAQ,YAAY,IAAI,EAAE,aAAa,CAC1C,OAAQ,IAAM,KAAK,WAAW,EAC9B,QAAS,IAAM,KAAK,YAAY,EAChC,UAAW,IAAM,KAAK,cAAc,EACpC,QAAS,IAAM,KAAK,YAAY,CACpC,CAAC,EACM,GAGP,KAAK,MAAM,CAAE,OAAQ,6BAA8B,CAAC,EAE5D,CACA,WAAY,CAER,MAAO,CADK,KAAK,KAAK,kBAAmB,CAAE,IAAK,CAAC,aAAc,KAAK,WAAW,CAAE,CAAC,EACpE,gBAClB,CACA,UAAW,CACP,GAAG,QAAQ,MAAM,EACjB,IAAI,GAAG,QAAQ,aAAa,IAAI,EAAE,eAAe,CACrD,CACA,YAAa,CACT,IAAM6Y,EAAW,KAAK,wBAAwB,EACxCqM,EAAM,UAAYrM,EAAS,YACjC,KAAK,KAAK,oBAAqB,CAAE,QAASA,EAAS,QAAS,SAAAA,EAAU,IAAAqM,CAAI,CAAC,EAC3E,KAAK,YAAYrM,CAAQ,CAC7B,CACA,aAAc,CACV,KAAK,iBAAiB,eAAe,CACzC,CACA,eAAgB,CACZ,KAAK,iBAAiB,SAAS,CACnC,CACA,aAAc,CACV,KAAK,iBAAiB,CAC1B,CACA,MAAM,CAAE,OAAAuB,CAAO,EAAI,CAAC,EAAG,CACf,KAAK,iBAAiBA,CAAM,GAAK,KAAK,MACtC,KAAK,KAAK,MAAM,CAExB,CACA,iBAAiBA,EAAQ,CACrB,GAAI,KAAK,WAAW,EAChB,OACJ,IAAIhS,EAAU,sBAAwB,KAAK,aAAegS,EAAS,KAAOA,EAAS,IACnF,YAAK,MAAQ,UACb,KAAK,SAAS,OAAO,IAAI,GAAG,QAAQhS,CAAO,CAAC,EAC5C,KAAK,KAAK,qBAAsB,CAAE,IAAKA,CAAQ,CAAC,EACzC,EACX,CACA,iBAAiBgS,EAAQ,CACrB,GAAI,KAAK,WAAW,EAChB,OACJ,IAAIhS,EAAU,0BAA4B,KAAK,aAAegS,EAAS,KAAOA,EAAS,IACvF,KAAK,MAAQ,UACb,KAAK,KAAK,qBAAsB,CAAE,IAAKhS,CAAQ,CAAC,EAChD,KAAK,SAAS,OAAO,IAAI,GAAG,QAAQA,CAAO,CAAC,CAChD,CACA,YAAYyQ,EAAU,CAClB,KAAK,SAAWA,EACZ,MAAK,WAAW,IAEpB,KAAK,MAAQ,SACTA,EAAS,GACT,KAAK,SAAS,QAAQA,CAAQ,EAG9B,KAAK,SAAS,OAAOA,CAAQ,EAErC,CACA,YAAa,CACT,OAAQ,KAAK,QAAU,OAAW,KAAK,QAAU,WAAe,KAAK,QAAU,UACnF,CACA,YAAa,CACT,OAAO,GAAG,SAAS,WAAW,CAClC,CACA,WAAY,CACR,OAAO,GAAG,SAAS,UAAU,CACjC,CACA,WAAY,CACR,GAAI,CAAC,KAAK,OAAO,GAAK,CAAC,KAAK,cAAc,EACtC,OAAO,GAAG,SAAS,UAAU,CAErC,CACA,eAAgB,CACZ,OAAO9O,EAAE,cAAc,KAAK,GAAG,CACnC,CACA,yBAA0B,CACtB,IAAMob,EAAgB,CAClB,OAAQ,KAAK,OACb,IAAK,KAAK,IACV,QAAS,KACT,IAAK,KAAK,IACV,KAAM,KAAK,IAAI,aACf,OAAQ,KAAK,IAAI,OACjB,MAAO,GAAG,SAAS,aAAa,KAAK,GAAG,EACxC,OAAQ,GAAG,SAAS,cAAc,KAAK,GAAG,EAC1C,YAAa,GAAG,SAAS,mBAAmB,KAAK,GAAG,EACpD,aAAc,GAAG,SAAS,oBAAoB,KAAK,GAAG,EACtD,WAAY,GAAG,SAAS,kBAAkB,KAAK,GAAG,EAClD,QAAS,GAAG,SAAS,eAAe,KAAK,GAAG,EAC5C,YAAa,GAAG,SAAS,mBAAmB,KAAK,GAAG,EACpD,WAAY,GAAG,SAAS,kBAAkB,KAAK,GAAG,EAClD,KAAM,KAAK,IACf,EACIC,EAAqB,GAAG,SAAS,cAAc,KAAK,GAAG,EACvDC,EAAkB,GAAG,SAAS,gBAAgB,KAAK,GAAG,EAC1D,OAAIA,IACKtb,EAAE,UAAU,KAAK,IAAKsb,CAAe,GACtCD,MAAuB,OAE3BD,EAAc,IAAME,GAEpBD,IACAD,EAAc,OAASC,GAEpB,IAAI,GAAG,SAASD,CAAa,CACxC,CACA,mBAAmB9oB,EAAM,CACrB,OAAO,GAAG,aAAa,aAAaA,EAAM,CACtC,MAAO,KAAK,MACZ,QAAS,KACT,OAAQ,KAAK,MACjB,CAAC,CACL,CACA,QAAQA,EAAM,CACV,OAAO,KAAK,mBAAmBA,CAAI,EAAE,KAAK,CAC9C,CACA,iBAAiBA,EAAM,CACnB,KAAK,mBAAmBA,CAAI,EAAE,cAAc,CAChD,CACA,IAAI,aAAc,CACd,OAAO,KAAK,OAAS,IAAM,KAAK,GACpC,CACA,gBAAgBipB,EAAiB,CAC7B,MAAI,CAAC,KAAK,WAAa,CAACA,EACb,IAEXA,EAAkBvb,EAAE,SAASub,CAAe,EACrCvb,EAAE,KAAK,KAAK,UAAW,SAAUkN,EAAU,CAC9C,OAAOlN,EAAE,KAAKub,EAAkBC,GAAmBA,EAAe,SAAStO,CAAQ,CAAC,CACxF,CAAC,EACL,CACA,IAAI,KAAM,CACN,OAAO,IAAI,KAAS,KAAK,OAC7B,CACA,OAAOrb,EAAM,CACT,OAAO,KAAK,QAAQA,CAAI,CAC5B,CACA,iBAAkB,CACd,QAASsF,IAAO,CAAC,SAAU,aAAc,OAAQ,WAAY,UAAW,aAAa,EACjF,KAAK,eAAe,GAAG,SAAS,UAAUA,CAAG,EAAG,KAAKA,CAAG,CAAC,EAE7D,IAAIskB,EAAYC,GACXD,EAAa,KAAK,WAAW,KAAOC,EAAY,KAAK,UAAU,IAChE,KAAK,eAAeD,EAAYC,CAAS,EAE7C,KAAK,eAAe,GAAG,SAAS,UAAU,SAAS,EAAG,GAAG,OAAO,CACpE,CACA,eAAe7pB,EAAMoD,EAAO,CACpB+K,EAAE,UAAU/K,CAAK,KAGjB+K,EAAE,UAAU/K,CAAK,GAAK+K,EAAE,QAAQ/K,CAAK,KACrCA,EAAQ+K,EAAE,kBAAkB/K,CAAK,GAErC,KAAK,QAAQpD,CAAI,EAAIoD,EACzB,CACA,OAAO,OAAOuf,EAAW,CAAE,OAAAmH,CAAO,EAAI,CAAC,EAAG,CACtC,IAAIC,EACJ,GAAI5b,EAAE,WAAWwU,CAAS,EACtBoH,EAASpH,UAEJA,aAAqB,KAC1BoH,EAAU9P,GAAY0I,IAAc1I,UAE/B9L,EAAE,SAASwU,CAAS,EAAG,CAC5B,IAAI5X,EAAU,IAAI,GAAG,WAAW4X,CAAS,EACzCoH,EAAU9P,GAAYlP,EAAQ,KAAKkP,EAAQ,GAAG,CAClD,MAEI8P,EAAUC,GAAarH,EAE3B,OAAImH,EACQ7P,GAAY,CAAC,GAAG,MAAM,qBAAqBA,EAAS6P,CAAM,GAAKC,EAAO9P,CAAO,EAG9E8P,CAEf,CACJ,EAEI5b,EAAE,SAAS/J,EAAG,UAAW,CAAC,OAAQ,QAAS,SAAS,EAAG,UAAY,CAAE,OAAO,KAAK,QAAU,CAAC,EAEhGA,EAGE,EAEC,IAAM,CAEb,IAAM+J,EAAI,GAAG,KACb,GAAG,QAAQ,MAAQ,KAAY,CAC3B,aAAc,CACV,KAAK,MAAM,CACf,CACA,OAAQ,CACJ,KAAK,UAAY,CAAC,EAClB,KAAK,KAAO,IAAI,GACpB,CACA,UAAU8L,EAAS,CACf,IAAIgQ,EAAqB,KAAK,+BAA+BhQ,CAAO,EAChEiQ,EAAW/b,EAAE,QAAQ8b,EAAqBE,GAAe,CAACA,EAAYlQ,EAAQ,OAAOkQ,CAAU,CAAC,CAAC,EACrG,MAAO,CAAClQ,EAAQ,YAAa,GAAGiQ,CAAQ,EAAE,KAAK,GAAG,CACtD,CACA,+BAA+BjQ,EAAS,CAtzM5C,IAAA7V,EAAAmR,EAuzMQ,OAAQnR,EAAA,KAAK,WAALmR,EAAe0E,EAAQ,eAAvB7V,EAAAmR,GAAwC,IAAI,IACxD,CACA,IAAI0E,EAAS,CACTA,EAAU,KAAK,MAAMA,CAAO,EAC5B,IAAI9M,EAAW,KAAK,UAAU8M,CAAO,EACjCmQ,EAAgB,KAAK,KAAK,IAAIjd,CAAQ,EAC1C,GAAIid,EAAe,CACf,GAAI,KAAK,UAAUA,CAAa,EAC5B,OAAOA,EAGP,KAAK,KAAK,OAAOjd,CAAQ,CAEjC,CACJ,CACA,IAAI,WAAY,CACZ,OAAO,GAAG,QAAQ,OAAO,SAC7B,CACA,UAAU8M,EAAS,CACf,OAAOA,EAAQ,IAAM,GAAG,QAAQ,OAAO,aAC3C,CACA,MAAM,IAAIA,EAAS,CACfA,EAAU,KAAK,MAAMA,CAAO,EAC5B,KAAK,UAAU,EACf,IAAI9M,EAAW,KAAK,gBAAgB8M,CAAO,EAC3C,KAAK,KAAK,IAAI9M,EAAU8M,CAAO,CACnC,CACA,gBAAgBA,EAAS,CACrB,IAAIoQ,EAAc,KAAK,UAAUpQ,CAAO,EACpC,CAAE,SAAAgD,CAAS,EAAIhD,EACnB,GAAIgD,EAAU,CACV,KAAK,0BAA0BhD,EAASgD,CAAQ,EAChD,IAAIqN,EAAc,KAAK,UAAUrQ,CAAO,EACxC,YAAK,cAAcoQ,EAAaC,CAAW,EACpCA,CACX,KAEI,QAAOD,CAEf,CACA,cAAcrhB,EAAQC,EAAQ,CACtBD,IAAWC,GAAU,KAAK,KAAK,IAAID,CAAM,IACzC,KAAK,KAAK,IAAIC,EAAQ,KAAK,KAAK,IAAID,CAAM,CAAC,EAC3C,KAAK,KAAK,OAAOA,CAAM,EAE/B,CACA,0BAA0BiR,EAASgD,EAAU,CACzC,IAAIsN,EAA6BtN,EAAS,qBAC1C,GAAIsN,EAA2B,OAAQ,CACnC,IAAIC,EAA6B,KAAK,+BAA+BvQ,CAAO,EAC5E,QAASkQ,KAAcI,EACnBC,EAA2B,IAAIL,CAAU,CAEjD,CACJ,CACA,MAAMM,EAAuBC,EAAY,CAErC,GADAD,EAAwB,KAAK,IAAIA,CAAqB,EAClD,EAACA,EAEL,OAAAC,EAAa,KAAK,MAAMA,CAAU,EAClC,KAAK,MAAMD,EAAuBC,EAAY,CAAE,MAAO,EAAK,CAAC,EAC7D,KAAK,IAAIA,CAAU,EACZA,CACX,CACA,MAAM,MAAMC,EAAiBD,EAAY7pB,EAAU,CAAC,EAAG,CAv3M3D,IAAAuD,EAw3MQsmB,EAAW,eAAiBC,EAC5BD,EAAW,MAAQ,WACnB,IAAItnB,EAAQ,MAAM+K,EAAE,OAAOwc,CAAe,EACtCvnB,aAAiB,GAAG,SAChBvC,EAAQ,OAAS,KAAK,mBAAmB8pB,EAAiBD,CAAU,GACpEA,EAAW,UAAY,GACvBtnB,EAAQ+K,EAAE,QAAQ/K,EAAO,CAAE,QAASsnB,CAAW,CAAC,EAChDA,EAAW,YAAYtnB,CAAK,EAC5B+K,EAAE,SAASuc,EAAY,CAAC,UAAW,OAAO,EAAG,IAAMC,CAAe,IAGlE,OAAOD,EAAW,eAClBA,EAAW,MAAQ,OACnBtmB,EAAAvD,EAAQ,iBAAR,MAAAuD,EAAA,KAAAvD,EAAyB6pB,KAI7BA,EAAW,MAAQC,EAAgB,MACnCD,EAAW,SAAS,OAAOtnB,CAAK,EAExC,CACA,qBAAqBunB,EAAiBD,EAAY,CAC9C,OAAOC,IAAoBD,GAAcC,IAAoBD,EAAW,cAC5E,CACA,QAAQzQ,EAAS,CACbA,EAAU,KAAK,MAAMA,CAAO,EAC5B,IAAI9M,EAAW,KAAK,UAAU8M,CAAO,EACrC,KAAK,KAAK,OAAO9M,CAAQ,CAC7B,CACA,MAAMwV,EAAY,GAAMiI,EAAe,CACnC,KAAK,WAAWjI,EAAWiI,EAAgB3Q,GAAY,KAAK,QAAQA,CAAO,CAAC,CAChF,CACA,OAAO0I,EAAY,GAAMiI,EAAe,CACpC,KAAK,WAAWjI,EAAWiI,EAAgB3Q,GAAYA,EAAQ,QAAU,EAAI,CACjF,CACA,WAAY,CACR,KAAO,KAAK,KAAK,MAAQ,KAAK,WAAW,CACrC,IAAIxB,EAAY,KAAK,KAAK,KAAK,EAAE,KAAK,EAAE,MACxC,KAAK,KAAK,OAAOA,CAAS,CAC9B,CACJ,CACA,WAAWkK,EAAY,GAAMiI,EAAephB,EAAI,CAC5C,IAAI/F,EAAS,GAAG,QAAQ,OAAOkf,EAAWiI,CAAa,EACnD1b,EAAUf,EAAE,OAAO,KAAK,KAAK,OAAO,EAAG1K,CAAM,EACjD0K,EAAE,KAAKe,EAAS1F,CAAE,CACtB,CACA,mBAAmBqhB,EAAUC,EAAU,CACnC,OAAO,KAAK,UAAUD,CAAQ,IAAM,KAAK,UAAUC,CAAQ,CAC/D,CACA,MAAMC,EAAkB,CACpB,OAAO5c,EAAE,UAAU,GAAG,QAAS4c,CAAgB,CACnD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM5c,EAAI,GAAG,KACb,GAAG,QAAQ,MAAQ,KAAY,CAC3B,aAAc,CACV,KAAK,MAAM,CACf,CACA,OAAQ,CACJ,KAAK,gBAAkB,CAAC,EACxB,KAAK,iBAAmB,CAAC,EACzB,KAAK,aAAe,EACxB,CACA,IAAI,aAAc,CACd,OAAO,KAAK,iBAAiB,OAAO,KAAK,eAAe,CAC5D,CACA,KAAK8L,EAAS,CACVA,EAAQ,mBAAmB,EAC3B9L,EAAE,OAAO8L,EAAS2C,GAAmB,KAAK,kBAAkB3C,EAAS2C,CAAe,CAAC,EACrF,KAAK,mBAAmB3C,CAAO,EAC/B,KAAK,cAAcA,CAAO,EAC1B9L,EAAE,UAAU,IAAM,KAAK,MAAM,CAAC,CAClC,CACA,oBAAoB8L,EAAS,CACrBA,EAAQ,aACRA,EAAQ,WAAa,GACrB,KAAK,mBAAmBA,CAAO,EAEvC,CACA,mBAAmBA,EAAS,CACxB,IAAI+Q,EAAgB,KAAK,IAAI/Q,EAAQ,gBAAkBA,EAAQ,IAAK,CAAC,EACrE9L,EAAE,MAAM6c,EAAe,IAAM,KAAK,WAAW,CAAC,CAClD,CACA,oBAAqB,CACjB,OAAO7c,EAAE,WAAW,GAAG,QAAQ,OAAO,WAAW,CACrD,CACA,qBAAsB,CAClB,IAAM8c,EAAiB,KAAK,mBAAmB,EAC/C,OAAQA,IAAmB,IAAQ,KAAK,iBAAiB,OAASA,CACtE,CACA,QAAS,CACL,OAAO,KAAK,iBAAiB,OAAS,GAAK,KAAK,gBAAgB,OAAS,CAC7E,CACA,cAAchR,EAAS,CACnB,KAAK,gBAAgB,KAAKA,CAAO,CACrC,CACA,mBAAoB,CAChB,IAAIA,EAAU9L,EAAE,KAAK,KAAK,gBAAiB8L,GAAW,CAACA,EAAQ,UAAU,EACzE,OAAAA,MAAY,KAAK,gBAAgB,CAAC,GAC3B9L,EAAE,OAAO,KAAK,gBAAiB8L,CAAO,CACjD,CACA,gBAAgBA,EAAS,CACjBA,EAAQ,KAAK,GACb,KAAK,iBAAiB,KAAKA,CAAO,CAE1C,CACA,kBAAkBA,EAAS2C,EAAiB,CACxCzO,EAAE,OAAO,KAAK,iBAAkB8L,CAAO,GAAK9L,EAAE,OAAO,KAAK,gBAAiB8L,CAAO,EAC7E2C,aAA2B,GAAG,UAAaA,EAAgB,IAC5D,GAAG,QAAQ,yBAAyB3C,EAAS2C,CAAe,EAEhE,KAAK,WAAW,EAChBzO,EAAE,UAAU,IAAM,KAAK,MAAM,CAAC,CAClC,CACA,OAAQ,CACJ,IAAI8L,EACJ,GAAI,KAAK,oBAAoB,IAAMA,EAAU,KAAK,kBAAkB,GAChE,OAAO,KAAK,gBAAgBA,CAAO,CAE3C,CACA,SAASxZ,EAAM,CAt/MnB,IAAA2D,EAu/MQ,IAAIvD,EAAUsN,EAAE,eAAe1N,CAAI,EAC/B,CAAE,OAAAqpB,EAAQ,OAAAtL,EAAQ,QAAA0M,CAAQ,EAAIrqB,EAC9BsqB,GAAa/mB,EAAA3D,EAAK,CAAC,IAAN,KAAA2D,EAAW,GACxBX,EAAS,GAAG,QAAQ,OAAO0nB,EAAY,CAAE,OAAArB,CAAO,CAAC,EACrD,QAAS3nB,IAAQ,CAAC,KAAK,iBAAkB,KAAK,eAAe,EAAG,CAC5D,IAAMipB,EAAoBjd,EAAE,OAAOhM,EAAMsB,CAAM,EAC/C,QAAS4nB,KAAoBD,EACrBF,IACA,GAAG,KAAK,GAAGA,CAAO,EAClBA,EAAU,MAEdG,EAAiB,MAAM,CAAE,OAAA7M,CAAO,CAAC,EACjCrQ,EAAE,OAAOhM,EAAMkpB,CAAgB,CAEvC,CACJ,CACA,YAAa,CACT,IAAMC,EAAc,KAAK,QAAQ,EAC7B,KAAK,eAAiBA,IACtB,KAAK,aAAeA,EAChBA,EACA,GAAG,KAAK,kBAAmB,CAAE,IAAK,2BAA4B,CAAC,EAG/D,GAAG,KAAK,qBAAsB,CAAE,IAAK,2BAA4B,CAAC,EAG9E,CACA,SAAU,CACN,IAAMC,EAAwBpd,EAAE,OAAO,KAAK,YAAa,YAAY,EAC/Dqd,EAAiB,EACvB,OAAOrd,EAAE,KAAKod,EAAwBtR,GAAYA,EAAQ,KAAQA,EAAQ,gBAAkBuR,CAAe,CAC/G,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMrd,EAAI,GAAG,KACPrB,EAAI,GAAG,QACP2e,EAAoB,CAAC,MAAO,MAAM,EACxC,GAAG,QAAQ,aAAe,KAAmB,CACzC,YAAYxR,EAAS,CACjB,KAAK,SAAWA,CACpB,CACA,gBAAiB,CACb,KAAK,OAAS9L,EAAE,KAAK,KAAK,SAAS,MAAM,EACzC,IAAIud,EAAS,KAAK,SAAS,IACvB,CAAE,OAAA7pB,CAAO,EAAI,KAAK,SAChB8pB,EAAkB,GAAG,OAAO,QAAQD,CAAM,EAChD,KAAK,OAAO,OAAOC,CAAe,EAClCD,EAAS,GAAG,OAAO,SAASA,CAAM,EAC7Bvd,EAAE,SAASsd,EAAmB5pB,CAAM,IACrCA,EAAS,GAAG,SAAS,WAAWA,EAAQ,KAAK,MAAM,GAEvD,KAAK,MAAQiL,EAAE,MAAM,SAAS,KAAM,yBAA0B,CAAE,OAAAjL,EAAQ,OAAA6pB,CAAO,CAAC,EAChF,IAAIE,EAAc,KAAK,SAAS,YAC5BA,GACA,KAAK,MAAM,aAAa,UAAWA,CAAW,EAElD,IAAIC,EAAWhC,GACVgC,EAAY,KAAK,SAAS,UAAU,KAAOhC,EAAY,KAAK,SAAS,UAAU,IAChF,KAAK,OAAO,IAAIgC,EAAWhC,CAAS,EAExC1b,EAAE,KAAK,KAAK,OAAO,QAAQ,EAAG,KAAK,UAAU,KAAK,IAAI,CAAC,EACvD,GAAG,QAAQ,WAAW,KAAK,KAAK,CACpC,CACA,UAAU8B,EAAO,CACbnD,EAAE,MAAM,KAAK,MAAO,qBAAsBmD,CAAK,CACnD,CACJ,CAGM,EAEC,IAAM,CAEb,IAAI7L,EACJ,IAAM0nB,EAA2B,oCAC3BC,EAAyB,sBACzB5d,EAAI,GAAG,KACb,GAAG,QAAQ,aAAe/J,EAAK,KAAkB,CACzC,YAAY6V,EAAS,CACjB,KAAK,SAAWA,CACpB,CACA,aAAa+R,EAAU,CACnB,IAAMC,EAAM,KAAK,SAAS,IAC1B,KAAK,QAAU9d,EAAE,KAAK,KAAK,SAAS,MAAM,EACtC,KAAK,SAAS,UACd8d,EAAI,QAAU,KAAK,SAAS,SAEhCA,EAAI,KAAK,KAAK,WAAW,EAAG,KAAK,SAAS,GAAG,EAC7C,IAAIL,EAAc,KAAK,gBAAgB,EACnCA,GACAK,EAAI,iBAAiB,eAAgBL,CAAW,EAEpD,QAASzB,KAAc,KAAK,SAAS,QAAS,CAC1C,IAAI+B,EAAc,KAAK,SAAS,QAAQ/B,CAAU,EAClD8B,EAAI,iBAAiB9B,EAAY+B,CAAW,CAChD,CACA,OAAO,OAAOD,EAAKD,CAAQ,EAC3BC,EAAI,KAAK,KAAK,YAAY,CAAC,CAC/B,CACA,YAAa,CACT,IAAIpqB,EAAS,KAAK,SAAS,OAC3B,OAAI,KAAK,SAAS,YAAc,CAAC,KAAK,SAAS,uBAAuB,IAClEA,EAAS,GAAG,SAAS,WAAWA,EAAQ,KAAK,OAAO,GAEjDA,CACX,CACA,iBAAkB,CACd,YAAK,iBAAiB,EACf,KAAK,YAChB,CACA,aAAc,CACV,YAAK,iBAAiB,EACf,KAAK,QAChB,CACA,kBAAmB,CACf,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,aAAe,KAAK,SAAS,YAC9B,CAAC,KAAK,UAAY,KAAK,SAAS,cAAc,IACzC,KAAK,eACN,KAAK,aAAe,KAAK,QAAQ,gBAAgB,EAAIkqB,EAAyBD,GAE9E,KAAK,eAAiBC,GACtB,KAAK,aAAe,KACpB,KAAK,SAAW,KAAK,QAAQ,WAAW,GAGxC,KAAK,SAAW,KAAK,QAAQ,QAAQ,EAAE,QAAQ,OAAQ,GAAG,EAGtE,CACJ,EAEI5d,EAAE,cAAc/J,EAAG,UAAW,CAC1B,iBAAkB,GAClB,WAAY,EAChB,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,IAAM+J,EAAI,GAAG,KACb,GAAG,SAAW,cAAuB,GAAG,MAAO,CAC3C,MAAO,CACH,MAAO,CACH,SACA,MACA,OACA,SACA,UACA,MACA,SACA,QACA,cACA,eACA,aACA,UACA,cACA,aACA,UACA,WACA,MACJ,CACJ,CACA,UAAW,CACP,MAAO,CACH,QAAS,CAAC,EACV,SAAU,IAAI,IAClB,CACJ,CACA,IAAI,IAAK,CA1qNb,IAAA/J,EA2qNQ,MAAO,CAAC+J,EAAE,YAAW/J,EAAA,KAAK,OAAL,KAAAA,EAAa,GAAG,QAAQ,OAAO,KAAM,IAAI,CAClE,CACA,IAAI,MAAO,CACP,MAAO,CAAC,KAAK,IACjB,CACA,aAAc,CACV,OAAO,KAAK,IAAM,CAAC,KAAK,IAC5B,CACA,OAAOpE,EAAM,CAnrNjB,IAAAoE,EAorNQ,OAAO,KAAK,QAAQpE,CAAI,KAAKoE,EAAA,KAAK,MAAL,YAAAA,EAAU,kBAAkBpE,GAC7D,CACA,IAAI,sBAAuB,CACvB,IAAIiqB,EAAqB,GAAG,SAAS,+BAA+B,IAAI,EACxE,OAAO9b,EAAE,OAAO8b,EAAqBE,GAAe,KAAK,QAAQ,OAAOA,CAAU,CAAC,CACvF,CACA,IAAI,aAAc,CACd,OAAO,KAAK,OAAO,cAAc,CACrC,CACA,IAAI,WAAY,CACZ,OAAO,GAAG,SAAS,oBAAoB,KAAK,OAAO,yBAAyB,GAAK,KAAK,OAAO,qCAAqC,CAAC,CACvI,CACA,IAAI,cAAe,CACf,IAAIgC,EAAS,KAAK,OAAO,eAAe,EACxC,GAAIA,EACA,OAAO,IAAI,KAAKA,CAAM,CAE9B,CACA,IAAI,MAAO,CACP,OAAO,KAAK,OAAO,MAAM,CAC7B,CACA,IAAI,MAAO,CACP,OAAO,KAAK,aAAL,KAAK,WAAe,KAAK,MAAM,KAAK,IAAI,EACnD,CACA,IAAI,KAAM,CAEN,OADU,IAAI,KACD,KAAK,QACtB,CACA,IAAI,SAAU,CACV,OAAO,KAAK,IAAM,GAAG,QAAQ,OAAO,gBAChC,KAAK,QAAQ,OACrB,CACA,IAAI,aAAc,CACd,MAAO,QAAQ,KAAK,sBAAsB,KAAK,QAAQ,aAC3D,CACJ,CAGM,EAEC,IAAM,CAEb,IAAI/nB,EACJ,IAAM+J,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,aAAe1I,EAAK,KAAkB,CACjC,YAAY,CAAE,SAAAgoB,EAAU,SAAA/Q,EAAU,QAAAwI,EAAS,OAAA7X,EAAQ,OAAAsO,EAAQ,UAAA+R,EAAW,MAAAzmB,CAAM,EAAG,CAW3E,GAVIwmB,EACA,KAAK,eAAeA,CAAQ,EAEvB/Q,EACL,KAAK,eAAeA,CAAQ,EAG5B,KAAK,cAAcwI,GAAW,GAAI7X,CAAM,EAE5C,KAAK,WAAaqgB,EACd/R,EAAQ,CACR,IAAIgS,EAAiB,GAAG,SAAS,YAAYhS,CAAM,EAC/CgS,IACA,KAAK,oBAAsB,KAAK,OAAOA,CAAc,EAE7D,CACA,KAAK,OAAS1mB,CAClB,CACA,eAAewmB,EAAU,CACrBA,EAAW,KAAK,OAAOA,EAAUtf,EAAE,4BAA4B,EAC/D,KAAK,kBAAoB,GACzB,KAAK,gBAAgBsf,CAAQ,CACjC,CACA,eAAe/Q,EAAU,CACrBA,EAAW,KAAK,OAAOA,EAAUvO,EAAE,cAAc,EACjD,KAAK,gBAAgBuO,CAAQ,CACjC,CACA,cAAcwI,EAAS7X,EAAQ,CACtBA,GACD,GAAG,KAAK,iDAAiD,EAC7DA,EAASmC,EAAE,IAAI,GAAG,SAAS,iBAAiBnC,CAAM,EAAG,UAAU,EAAE,KAAK,EACtE,IAAMugB,EAAkBzf,EAAE,mBAAmBd,CAAM,EAC/CmC,EAAE,SAAS0V,CAAO,EAClB0I,EAAgB,UAAY1I,EAG5B0I,EAAgB,YAAY1I,CAAO,EAEvC,KAAK,gBAAgB0I,CAAe,CACxC,CACA,OAAOnpB,EAAO0S,EAAS,CACnB,OAAI3H,EAAE,SAAS/K,CAAK,IAChBA,EAAQ0S,EAAQ1S,CAAK,GAElBA,CACX,CACA,gBAAgBopB,EAAM,CACdA,aAAgB,SAChB,KAAK,UAAYA,GAGjB,KAAK,UAAY,SAAS,cAAc,aAAa,EACrD,KAAK,UAAU,OAAOA,CAAI,EAC1B,KAAK,UAAU,gBAAkBA,EAEzC,CACA,cAAe,CACX,OAAO,GAAG,SAAS,SAAS,KAAK,UAAU,eAAe,CAC9D,CACA,IAAI,OAAQ,CACR,OAAO,KAAK,UAAU,KAAK,aAAa,CAC5C,CACA,UAAW,CACP,GAAI,CAAE,KAAAC,CAAK,EAAI,KAAK,UACpB,GAAIA,GAAQA,EAAK,WAAW,OAAS,EACjC,OAAOA,CAEf,CACA,UAAUjjB,EAAI,CACV,IAAIijB,EAAO,KAAK,SAAS,EACzB,OAAOA,GAAQjjB,EAAGijB,CAAI,CAC1B,CACA,IAAI,UAAW,CACX,OAAO,KAAK,UAAU,GAAG,QAAQ,YAAY,CACjD,CACA,IAAI,QAAS,CACT,OAAO,KAAK,UAAU,GAAG,OAAO,UAAU,CAC9C,CACA,cAAcA,EAAM,CAjzN5B,IAAAroB,EAkzNY,OAAOA,EAAAqoB,EAAK,cAAc,OAAO,IAA1B,YAAAroB,EAA6B,WACxC,CACA,OAAO2K,EAAU,CAOb,OANa,IAAI,GAAG,eAAe,CAC/B,SAAUA,EACV,OAAQ,KAAK,oBACb,SAAU,KAAK,UACf,MAAO,KAAK,MAChB,CAAC,EACa,KAAK,CACvB,CACA,YAAY0K,EAAO,CACf,OAAOA,EAAM,OAAQuB,GACV,KAAK,eAAeA,CAAI,GAAK,KAAK,iBAAiBA,CAAI,CACjE,CACL,CACA,YAAYvB,EAAO,CACf,OAAOA,EAAM,OAAQuB,GAAS,KAAK,cAAcA,EAAK,UAAU,CAAC,CACrE,CACA,eAAeA,EAAM,CACjB,GAAIA,EAAK,WACL,MAAO,GAEX,IAAIxK,EAAa,KAAK,OAAOwK,EAAK,QAAQ,EAC1C,GAAI,CAACxK,EACD,OAEJ,GAAI,CAAE,YAAAkc,CAAY,EAAI1R,EACtB,GAAI,EAAA0R,IACAA,EAAY,YAAclc,EAC1Bkc,EAAY,cAAgB1R,EAAK,sBACjC,GAAG,KAAKA,EAAK,WAAY0R,EAAa,CAAE,SAAU1R,EAAK,cAAe,CAAC,EACnE0R,EAAY,mBAIpB,OAAA1R,EAAK,WAAaxK,EACX,EACX,CACA,iBAAiBwK,EAAM,CACnB,GAAI,CAACA,EAAK,MACN,MAAM,IAAI,GAAG,WAErB,CACA,cAAcnV,EAAS,CACnB,GAAI,KAAK,UAAU,SAASA,CAAO,EAC/B,OAAK,GAAG,SAAS,OAAO,YACpB,GAAG,OAAO,eAAeA,CAAO,EAEpCA,EAAQ,OAAO,EACR,EAEf,CACA,gBAAgBA,EAAS,CAErB,GADA,GAAG,kBAAkB,YAAYA,EAAS,KAAK,UAAU,EACrD,KAAK,kBAAmB,CACxB,IAAI8mB,EAAiB7f,EAAE,QAAQjH,EAAS,kEAAkE,EAC1GsI,EAAE,KAAKwe,EAAgB7f,EAAE,eAAe,CAC5C,CACJ,CACJ,EAEIqB,EAAE,cAAc/J,EAAG,UAAW,CAC1B,SAAU,EACd,CAAC,EAELA,EAGE,EAEC,IAAM,CAEb,IAAM0I,EAAI,GAAG,QACPqB,EAAI,GAAG,KACb,GAAG,aAAe,KAAmB,CACjC,YAAYtI,EAAShF,EAAU,CAAC,EAAG,CA93NvC,IAAAuD,EAAAmR,EAAA4T,EAAAyD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA+3NQ,KAAK,SAAWpnB,EAChB,KAAK,UAAYiH,EAAE,IAAIjM,EAAQ,QAAQ,GAAK,GAAG,SAAS,IAAI,KAAK,QAAQ,EACzE,KAAK,mBAAqB,GAAG,MAAM,IAAI,KAAK,SAAS,EACrD,KAAK,WAAYuD,EAAAvD,EAAQ,WAAR,KAAAuD,EAAoB,UACrC,IAAM8oB,EAAiB,GAAG,SAAS,OACnC,KAAK,OAAQ/D,GAAA5T,EAAA1U,EAAQ,OAAR,KAAA0U,EAAgB1U,EAAQ,aAAxB,KAAAsoB,EAAsC+D,EAAe,WAClE,KAAK,UAAWL,GAAAD,EAAA/rB,EAAQ,UAAR,KAAA+rB,EAAmB/rB,EAAQ,gBAA3B,KAAAgsB,EAA4CK,EAAe,cAC3E,KAAK,MAAOH,GAAAD,EAAAjsB,EAAQ,MAAR,KAAAisB,EAAejsB,EAAQ,YAAvB,KAAAksB,EAAoCG,EAAe,UAC/D,KAAK,MAAOD,GAAAD,EAAAnsB,EAAQ,MAAR,KAAAmsB,EAAensB,EAAQ,YAAvB,KAAAosB,EAAoCC,EAAe,UAC/D,KAAK,wBAA0BA,EAAe,SAAS,mBAAmB,EAC1E,KAAK,2BAA6BA,EAAe,SAAS,sBAAsB,CACpF,CACA,OAAQ,CACJ,IAAMC,EAAe,KAAK,iBAAiB,KAAK,SAAS,EACnDC,EAAc,GAAG,KAAK,YAAY,KAAK,QAAQ,EACrD,GAAI,KAAK,KAAM,CACX,IAAMC,EAAYlf,EAAE,WAAW,KAAK,KAAM,KAAK,QAAQ,EACvDif,EAAY,OAAS,KAAK,IAAIA,EAAY,OAAQC,CAAS,CAC/D,CACA,KAAK,YAAYD,CAAW,EAC5B,KAAK,uBAAuBD,CAAY,EACpCA,EAAa,OAAS,GACtB,GAAG,KAAK,8BAA8B,EAE1C,IAAMG,EAAoB,KAAK,UAAU,UACrCC,EAAeD,EACnB,GAAI,KAAK,MAASF,EAAY,OAASD,EAAa,OAAS,CACzD,IAAMtM,EAAOuM,EAAY,IAAMD,EAAa,IAC5CI,GAAgB1M,CACpB,MACSuM,EAAY,IAAMD,EAAa,IACpCI,GAAiBJ,EAAa,IAAMC,EAAY,IAE3CA,EAAY,OAASD,EAAa,SACvCI,GAAiBH,EAAY,OAASD,EAAa,QAInDhf,EAAE,SAAS,KAAK,KAAK,GAAMof,EAAe,KAAK,OAAWH,EAAY,IAAO,GAAMD,EAAa,SAChGI,EAAe,GAEfA,IAAiBD,GACjB,KAAK,UAAU,SAAS,CAAE,IAAKC,EAAc,SAAU,KAAK,SAAU,CAAC,CAE/E,CACA,kBAAmB,CACf,OAAI,GAAG,SAAS,OAAO,KAAK,SAAS,EAC1B,IAAI,GAAG,KAAK,CACf,KAAM,EACN,IAAK,EACL,MAAO,GAAG,SAAS,UAAU,EAC7B,OAAQ,GAAG,SAAS,WAAW,CACnC,CAAC,EAGM,GAAG,KAAK,YAAY,KAAK,SAAS,CAEjD,CACA,YAAYH,EAAa,CACrBA,EAAY,KAAO,KAAK,SACxBA,EAAY,QAAU,EAAI,KAAK,QACnC,CACA,oBAAoBre,EAAU,CAC1B,IAAIwE,EAAW,GAAG,SAAS,IAAIxE,EAAU,CAAE,MAAO,KAAK,kBAAmB,CAAC,EAC3E,OAAOZ,EAAE,OAAOoF,EAAUzG,EAAE,SAAS,CACzC,CACA,uBAAuBqgB,EAAc,CACjC,QAASK,KAAe,KAAK,oBAAoB,KAAK,uBAAuB,EAAG,CAE5E,IAAI3M,EADkB,GAAG,KAAK,YAAY2M,CAAW,EAC1B,OAASL,EAAa,IAC7CtM,EAAO,IACPsM,EAAa,KAAOtM,EACpBsM,EAAa,QAAUtM,EAE/B,CACA,QAAS2M,KAAe,KAAK,oBAAoB,KAAK,0BAA0B,EAAG,CAC/E,IAAIC,EAAkB,GAAG,KAAK,YAAYD,CAAW,EACjD3M,EAAOsM,EAAa,OAASM,EAAgB,IAC7C5M,EAAO,IACPsM,EAAa,QAAUtM,EAE/B,CACJ,CACJ,CAGM,EAEC,IAAM,CAEb,IAAM1S,EAAI,GAAG,KACPuf,EAAyB,mBAC/B,GAAG,SAAW,KAAe,CACzB,YAAY3e,EAAU4e,EAAmB9sB,EAAU,CAAC,EAAG,CA59N3D,IAAAuD,EA69NQ,KAAK,SAAW,CAAC,EACZvD,EAAQ,YACT,KAAK,SAAS,KAAK,GAAG,SAAS,eAAe,EAElD,IAAI+sB,EAA6BD,GAAqB,CAAC,SAAS,SAASA,CAAiB,EACtFE,EACJ,GAAID,GAA8B/sB,EAAQ,QAAU,MAChDgtB,EAAoB,GAAG,MAAM,SAE5B,CAGD,IAFAzpB,EAAAvD,EAAQ,QAAR,OAAAA,EAAQ,MAAUsN,EAAE,SAASwf,EAAmBxf,EAAE,SAAS,GAC3D,KAAK,QAAU,GAAG,MAAM,OAAOtN,CAAO,EAClC,CAAC,KAAK,QAAQ,OACd,MAAM,IAAI,GAAG,YAAY,CAAC,oBAAqBA,EAAQ,KAAK,CAAC,EACjE,KAAK,SAAS,KAAK+E,GAASuI,EAAE,KAAK,KAAK,QAASkL,GAASA,EAAM,SAASzT,CAAK,CAAC,CAAC,EAChFioB,EAAoB,KAAK,QAAQ,CAAC,CACtC,CACA,IAAIC,EAAkB,GAAG,SAAS,cAAc/e,EAAU,CAAE,GAAGlO,EAAS,MAAOgtB,CAAkB,CAAC,EAClG,KAAK,WAAaC,EAAgB,IAAK9hB,IAC9B,GAAG,QAAQ,eAAe,IAC3BA,EAASA,EAAO,QAAQ0hB,EAAwB,CAAC9nB,EAAOmoB,KACpD,KAAK,SAAS,KAAKloB,GAAWA,EAAQ,cAAckoB,CAAkB,CAAC,EAChE,GACV,GAEE/hB,GAAU,IACpB,EACD,KAAK,eAAiB,KAAK,WAAW,KAAK,GAAK,YACpD,CACA,QAAQnG,EAAS,CACb,OAAOA,EAAQ,QAAQ,KAAK,cAAc,GAAK,KAAK,cAAcA,CAAO,CAC7E,CACA,QAAQA,EAAS,CACb,IAAI8d,EACJ,GAAI,KAAK,QAAQ9d,CAAO,EACpB,OAAOA,EAEN,GAAI8d,EAAgB9d,EAAQ,cAC7B,OAAO,KAAK,QAAQ8d,CAAa,CAEzC,CACA,cAAc9d,EAAS,CACnB,OAAOsI,EAAE,MAAM,KAAK,SAAU6f,GAAUA,EAAOnoB,CAAO,CAAC,CAC3D,CACA,YAAYoJ,EAAO,SAAU,CACzB,IAAMC,EAAUf,EAAE,QAAQ,KAAK,WAAYY,GAAYE,EAAK,iBAAiBF,CAAQ,CAAC,EACtF,OAAOZ,EAAE,OAAOe,EAASrJ,GAAW,KAAK,cAAcA,CAAO,CAAC,CACnE,CACA,QAAQoJ,EAAM,CACV,IAAMC,EAAU,CAAC,EACjB,MAAI,EAAED,aAAgB,WAAa,KAAK,QAAQA,CAAI,GAChDC,EAAQ,KAAKD,CAAI,EAErBC,EAAQ,KAAK,GAAG,KAAK,YAAYD,CAAI,CAAC,EAC/BC,CACX,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMf,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,OAAS,KAAa,CACrB,YAAYjM,EAAS,CA/hOzB,IAAAuD,EAAAmR,GAgiOQA,GAAAnR,EAAA,GAAG,SAAQ,sBAAX,MAAAmR,EAAA,KAAAnR,EAAiCvD,GACjC,KAAK,QAAUA,EAAQ,OACvB,KAAK,OAASA,EAAQ,MACtB,KAAK,UAAYA,EAAQ,SACzB,KAAK,WAAc,KAAK,YAAc,OAAW,KAAK,YAAc,SAAY,aAAe,WAC/F,KAAK,UAAY,GAAG,SAAS,IAAI,KAAK,OAAO,EAC7C,KAAK,OAAS,KAAK,YAAciM,EAAE,KAAO,SAAS,KAAO,KAAK,UAC/D,KAAK,cAAgB,CAAC,KAAK,UAAU,SAAS,KAAK,QAAQ,YAAY,CAC3E,CACA,MAAMjH,EAAS,CACX,KAAK,SAAWA,EAChB,KAAK,SAAS,MAAM,SAAW,WAC/B,KAAK,WAAW,EAAG,CAAC,EACpB,KAAK,KAAK,EACV,KAAK,yBAAyB,IAAI,CACtC,CACA,MAAO,CACH,KAAK,yBAAyB,KAAK,CACvC,CACA,yBAAyB2D,EAAI,CACzB,IAAIykB,EAAiB,KAAK,cAAc,KAAK,IAAI,EACjD,GAAGzkB,CAAE,EAAE,OAAQ,SAAUykB,CAAc,EACnC,KAAK,eACL,GAAGzkB,CAAE,EAAE,KAAK,UAAW,SAAUykB,CAAc,CAEvD,CACA,eAAgB,CACZ,oBAAa,KAAK,SAAS,EACpB,KAAK,UAAY9f,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,CACvD,CACA,YAAa,CACT,MAAO,CAAC,KAAK,OAAO,aAAe,CAAC,KAAK,QAAQ,WACrD,CACA,MAAO,CACH,IAAM+f,EAAa,KAAK,SAAS,sBAAsB,EACjDC,EAAgB,CAClB,IAAKrhB,EAAE,YAAY,KAAK,SAAU,WAAW,EAC7C,MAAOA,EAAE,YAAY,KAAK,SAAU,aAAa,EACjD,OAAQA,EAAE,YAAY,KAAK,SAAU,cAAc,EACnD,KAAMA,EAAE,YAAY,KAAK,SAAU,YAAY,CACnD,EACMshB,EAAY,KAAK,QAAQ,sBAAsB,EACjDC,EACAC,EACJ,OAAQ,KAAK,WAAY,CACrB,IAAK,aAAc,CACf,OAAQ,KAAK,UAAW,CACpB,IAAK,MACDA,EAAMF,EAAU,IAAMD,EAAc,OAASD,EAAW,OACxD,MACJ,IAAK,SACDI,EAAMF,EAAU,IAAMA,EAAU,OAASD,EAAc,IACvD,KACR,CACA,OAAQ,KAAK,OAAQ,CACjB,IAAK,OACDE,EAAOD,EAAU,KAAOD,EAAc,KACtC,MACJ,IAAK,SACDE,EAAOD,EAAU,KAAQ,IAAOA,EAAU,MAAQF,EAAW,OAC7D,MACJ,IAAK,QACDG,EAAQD,EAAU,KAAOA,EAAU,MAASF,EAAW,MAAQC,EAAc,MAC7E,KACR,CACA,KACJ,CACA,IAAK,WAAY,CACb,OAAQ,KAAK,OAAQ,CACjB,IAAK,MACDG,EAAMF,EAAU,IAAMD,EAAc,IACpC,MACJ,IAAK,SACDG,EAAMF,EAAU,IAAO,IAAOA,EAAU,OAASF,EAAW,QAC5D,MACJ,IAAK,SACDI,EAAOF,EAAU,IAAMA,EAAU,OAAUF,EAAW,OAASC,EAAc,OAC7E,KACR,CACA,OAAQ,KAAK,UAAW,CACpB,IAAK,OACDE,EAAOD,EAAU,KAAOD,EAAc,MAAQD,EAAW,MACzD,MACJ,IAAK,QACDG,EAAOD,EAAU,KAAOA,EAAU,MAAQD,EAAc,KACxD,KACR,CACA,KACJ,CACJ,CACIhgB,EAAE,UAAUkgB,CAAI,GAAKlgB,EAAE,UAAUmgB,CAAG,EACpC,KAAK,QAAQD,EAAMC,CAAG,EAGtB,GAAG,KAAK,iCAAkC,KAAK,qBAAqB,CAAC,CAE7E,CACA,sBAAuB,CACnB,MAAO,CAAE,SAAU,KAAK,UAAW,MAAO,KAAK,MAAO,CAC1D,CACA,QAAQC,EAAYC,EAAW,CAC3B,IAAMN,EAAa,KAAK,SAAS,sBAAsB,EACvD,KAAK,WAAYK,EAAaL,EAAW,KAAQ,KAAK,WAAaM,EAAYN,EAAW,IAAO,KAAK,SAAS,CACnH,CACA,WAAWG,EAAMC,EAAK,CAClB,KAAK,WAAaD,EAClB,KAAK,UAAYC,EACjBxhB,EAAE,SAAS,KAAK,SAAU,CAAE,KAAAuhB,EAAM,IAAAC,CAAI,CAAC,CAC3C,CACJ,CAGM,EAEC,IAAM,CAEb,IAAMngB,EAAI,GAAG,KACb,GAAG,WAAa,KAAiB,CAC7B,YAAYsgB,EAAa9tB,EAAewN,EAAE,aAAc,CACpD,KAAK,cAAgBxN,EACrB,KAAK,QAAU,CAAC,EAChB,IAAM+tB,EAAe,CAAC,EAChBC,EAAe,CAAC,EACtB,QAAS5jB,KAAWoD,EAAE,YAAYsgB,CAAW,EACrC1jB,EAAQ,CAAC,IAAM,IACf4jB,EAAa,KAAK5jB,EAAQ,UAAU,CAAC,CAAC,EAGtC2jB,EAAa,KAAK3jB,CAAO,EAGjC,KAAK,gBAAkB,KAAK,aAAa2jB,EAAc,EAAI,EAC3D,KAAK,gBAAkB,KAAK,aAAaC,EAAc,EAAK,CAChE,CACA,aAAaxsB,EAAMysB,EAAS,CACxB,GAAI,CAACzsB,EAAK,OACN,OAEJA,EAAOA,EAAK,IAAKvB,IACTA,EAAI,CAAC,IAAM,MACXA,EAAM,IAAMA,GAEhBA,EAAM,KAAK,cAAcA,CAAG,EAC5BA,EAAMuN,EAAE,aAAavN,CAAG,EACjBA,EACV,EACD,IAAIiuB,EAAS1sB,EAAK,KAAK,GAAG,EAC1B,OAAA0sB,EAASA,EAAO,QAAQ,QAAS,KAAK,EACtCA,EAASA,EAAO,QAAQ,0BAA2B,CAACjpB,EAAOka,EAAM9f,IACzD8f,IAAS,OACL8O,GACA,KAAK,QAAQ,KAAK,CAAE,KAAA5uB,EAAM,KAAM,MAAO,CAAC,EAErC,WAGH4uB,GACA,KAAK,QAAQ,KAAK,CAAE,KAAA5uB,EAAM,KAAM,MAAO,CAAC,EAErC,YAEd,EACM,IAAI,OAAO,OAAS6uB,EAAS,IAAI,CAC5C,CACA,KAAKjuB,EAAKkuB,EAAc,GAAM,CAC1B,OAAIA,IACAluB,EAAM,KAAK,cAAcA,CAAG,GAEzB,KAAK,gBAAgB,KAAKA,CAAG,GAAK,CAAC,KAAK,YAAYA,CAAG,CAClE,CACA,UAAUA,EAAKkuB,EAAc,GAAM,CAC3BA,IACAluB,EAAM,KAAK,cAAcA,CAAG,GAEhC,IAAIgF,EAAQ,KAAK,gBAAgB,KAAKhF,CAAG,EACzC,GAAIgF,GAAS,CAAC,KAAK,YAAYhF,CAAG,EAAG,CACjC,IAAM2jB,EAAa,CAAC,EACpB,YAAK,QAAQ,QAAQ,CAACwK,EAAOC,IAAe,CACxC,IAAI5rB,EAAQwC,EAAMopB,EAAa,CAAC,EAChC,GAAI5rB,EACA,OAAOmhB,EAAWwK,EAAM,IAAI,EAAIA,EAAM,KAAK3rB,CAAK,CAExD,CAAC,EACMmhB,CACX,CACJ,CACA,YAAY3jB,EAAK,CA1tOrB,IAAAwD,EA2tOQ,OAAOA,EAAA,KAAK,kBAAL,YAAAA,EAAsB,KAAKxD,EACtC,CACJ,CAGM,EAEC,IAAM,CAEb,GAAG,UAAa,UAAY,CACxB,IAAIquB,EAAa,UACjB,SAASC,GAAY,CACjB,GAAG,KAAK,qBAAsB,CAAE,IAAK,EAAM,CAAC,CAChD,CACA,SAASC,GAAO,CACZ,GAAIF,IAAe,cAAe,CAC9B,QAAQ,MAAM,2BAA2B,EACzC,MACJ,CACA,IAAIG,EAAQC,EAAa,EACpBD,EAOD,QAAQ,MAAM,yBAA0BA,CAAK,GAN7CH,EAAa,UACb,GAAG,KAAK,oBAAqB,CAAE,IAAK,EAAM,CAAC,EAC3CA,EAAa,SACb,GAAG,KAAK,sBAAuB,CAAE,IAAK,EAAM,CAAC,EAKrD,CACA,SAASK,GAAmB,CACxB,IAAIC,EAAe,SAAS,cAO5B,GANIA,GAAA,MAAAA,EAAc,QAGdA,GAAA,YAAAA,EAAc,aAAa,cAAe,UAG1C,SAAS,aAAe,WACxB,MAAO,EAEf,CACA,SAASC,GAAW,CAChB,GAAG,KAAK,sBAAuB,CAAE,IAAK,EAAM,CAAC,EACzCF,EAAiB,EACjB,QAAQ,MAAM,iDAAiD,EAG/D,SAAS,iBAAiB,mBAAoBH,CAAI,EAEtDF,EAAa,aACjB,CACA,SAASQ,GAAiB,CACtB,GAAIR,IAAe,cACf,MAAM,IAAI,MAAM,iDAAiD,EAErEA,EAAa,SACjB,CACA,SAASS,GAAgB,CACrBT,EAAa,aACjB,CACA,SAASU,GAAc,CACnB,MAAO,CAACN,EAAa,CACzB,CACA,SAASA,GAAe,CACpB,QAASO,IAAW,CAAC,MAAO,QAAS,UAAW,YAAa,UAAU,EACnE,GAAI,CAAC,OAAOA,CAAO,EACf,MAAO,+BAA+BA,QAG9C,GAAI,SAAS,aAAe,aACxB,MAAO,8CAEf,CACA,MAAO,CACH,SAAAJ,EACA,KAAAL,EACA,eAAAM,EACA,cAAAC,EACA,MAAOR,EACP,IAAI,SAAU,CAAE,OAAOD,IAAe,SAAW,EACjD,IAAI,QAAS,CAAE,OAAOA,IAAe,QAAU,EAC/C,IAAI,YAAa,CAAE,OAAOA,IAAe,WAAaA,IAAe,QAAU,EAC/E,YAAAU,CACJ,CACJ,EAAG,EACH,GAAG,KAAO,GAAG,UAAU,IAGjB,EAEC,IAAM,CAEb,GAAG,MAAS,UAAY,CACpB,IAAMxhB,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,SAAS+iB,GAAQ,CACb,QAASC,IAAiB,CAAC,OAAQ,SAAUhjB,EAAE,KAAM,SAAS,IAAI,EAC9D,QAASqT,KAAY,GAAG,cAAc,cAAc2P,CAAa,EAC7D3P,EAAS,OAAO,CAG5B,CACA,SAAS4P,KAAMtvB,EAAM,CACjB,OAAOuvB,EAAmBvvB,CAAI,EAAE,KAAK,CACzC,CACA,SAASwvB,KAAOxvB,EAAM,CAClB,OAAOuvB,EAAmBvvB,CAAI,EAAE,OAAO,CAC3C,CACA,SAASuvB,EAAmBvvB,EAAMI,EAAS,CACvC,OAAO,GAAG,mBAAmB,aAAaJ,EAAMI,CAAO,CAC3D,CACA,SAASqvB,EAAazvB,EAAM,CACxB,OAAO,GAAG,aAAa,aAAaA,CAAI,CAC5C,CACA,SAAS0vB,KAAQ1vB,EAAM,CACnB,OAAOyvB,EAAazvB,CAAI,EAAE,KAAK,CACnC,CACA,SAAS2vB,KAAS3vB,EAAM,CACpB,IAAMoL,EAAQsC,EAAE,eAAe1N,CAAI,EAC7Bqf,EAAOrf,EAAK,CAAC,GAAKoL,EAAM,MAAQ,GAAG,KAAK,0EAA0E,EAClHmC,EAAQ,SAAS,YAAY,OAAO,EAC1C,OAAAA,EAAM,UAAU8R,EAAM,GAAM,EAAI,EAChC,OAAO,OAAO9R,EAAOG,EAAE,KAAKtC,EAAO,CAAC,OAAQ,QAAQ,CAAC,CAAC,EAC/CmC,CACX,CACA,SAASqiB,KAAiB5vB,EAAM,CAC5B,OAAOyvB,EAAazvB,CAAI,EAAE,cAAc,CAC5C,CACA,SAAS6vB,EAASnQ,EAAU,CACxB,OAAO4P,EAAG,UAAW,SAAU/hB,EAAO,CAClC,GAAIA,EAAM,MAAQ,SACd,OAAOmS,EAASnS,CAAK,CAE7B,CAAC,CACL,CACA,SAASoW,EAAKpW,EAAOnN,EAAU,CAAC,EAAG,CAC3BA,EAAQ,KACR,GAAG,IAAI,UAAUmN,CAAK,EAC1BA,EAAM,yBAAyB,EAC/BA,EAAM,eAAe,CACzB,CACA,IAAMuiB,EAAe,CAAC,UAAW,WAAY,UAAW,QAAQ,EAChE,SAASC,EAAaxiB,EAAO,CACzB,OAAQG,EAAE,YAAYH,EAAM,MAAM,GAAMA,EAAM,SAAW,IACrD,CAACG,EAAE,KAAKoiB,EAAcE,GAAYziB,EAAMyiB,CAAQ,CAAC,CACzD,CACA,SAASC,EAAKC,EAAeC,EAASC,EAAW,CAAC,EAAG,CACjD,IAAMC,EAAW,GAAG,MAAM,MAAMF,EAASziB,EAAE,KAAKwiB,EAAeE,CAAQ,CAAC,EACxE,OAAAC,EAAS,cAAgBH,EACzB,CAAC,kBAAmB,2BAA4B,gBAAgB,EAAE,QAAQ,SAAUrrB,EAAK,CACrF,IAAMyrB,EAAiBD,EAASxrB,CAAG,EACnC,OAAOwrB,EAASxrB,CAAG,EAAI,UAAY,CAC/B,OAAAqrB,EAAcrrB,CAAG,EAAE,EACZyrB,EAAe,KAAKD,CAAQ,CACvC,CACJ,CAAC,EACGH,EAAc,kBACdG,EAAS,eAAe,EAErBA,CACX,CACA,SAASE,EAAgBhjB,EAAOnI,EAAS,CACrC,GAAI,CAAC2qB,EAAaxiB,CAAK,EACnB,OAEJ,IAAMoS,EAAYtT,EAAE,KAAKjH,EAAS,SAAS,EACrCorB,EAAankB,EAAE,SAASjH,EAAS,eAAe,EAChDqrB,EAAcR,EAAK1iB,EAAOoS,CAAS,EACzC,OAAO,OAAO8Q,EAAaD,CAAU,EACrC,GAAG,KAAKprB,EAASqrB,CAAW,CAChC,CACAnB,EAAG,WAAY,aAAciB,CAAe,EAC5C,IAAIG,EAAe,CAAC,SAAS,EAC7B,SAASC,GAAiB,CACtB,OAAOjjB,EAAE,KAAKgjB,CAAY,CAC9B,CACA,SAASE,EAAmBC,EAAa,CACrCH,EAAa,KAAKG,CAAW,EAC7B,WAAW,IAAMH,EAAa,IAAI,CAAC,CACvC,CACA,OAAApB,EAAG,gBAAiB,CAAE,QAAS,EAAK,EAAG,IAAMsB,EAAmB,KAAK,CAAC,EACtEtB,EAAG,wBAAyB,CAAE,QAAS,EAAK,EAAG,IAAMsB,EAAmB,SAAS,CAAC,EAClFtB,EAAG,qBAAsBF,CAAK,EACvB,CACH,GAAAE,EACA,IAAAE,EACA,MAAAG,EACA,KAAAD,EACA,cAAAE,EACA,SAAAC,EACA,KAAAlM,EACA,aAAAoM,EACA,KAAAE,EACA,aAAAH,EACA,IAAI,aAAc,CAAE,OAAOa,EAAe,CAAG,CACjD,CACJ,EAAG,EACH,GAAG,GAAK,GAAG,MAAM,GACjB,GAAG,IAAM,GAAG,MAAM,IAClB,GAAG,KAAO,GAAG,MAAM,IAGb,EAEC,IAAM,CAEb,GAAG,SAAY,UAAY,CACvB,IAAMjjB,EAAI,GAAG,KACPrB,EAAI,GAAG,QACPykB,EAAY,SAAUC,EAAO,CAE/B,MAAO,OADQA,EAAM,QAAQ,cAAe5oB,GAAQ,IAAMA,EAAK,YAAY,CAAC,CAEhF,EACM6oB,EAAgB,SAAUxF,EAAKyF,EAAa5b,EAAU3H,EAAE,SAAU,CACpE,IAAI/K,GAAQ6oB,EAAI,kBAAkBsF,EAAUG,CAAW,CAAC,EACxD,GAAItuB,GACA,OAAO0S,EAAQ1S,EAAK,CAE5B,EACA,SAASuuB,EAAc1F,EAAK,CACxB,OAAOwF,EAAcxF,EAAK,QAAQ,CACtC,CACA,SAAS2F,EAAsBxuB,EAAO,CAClC,OAAIA,IAAU,QACH,GAGAA,CAEf,CACA,SAASyuB,EAAkB5F,EAAK,CAC5B,OAAOwF,EAAcxF,EAAK,aAAc2F,CAAqB,CACjE,CACA,SAASE,EAAmB7F,EAAK,CAr8OrC,IAAA7nB,EAAAmR,EAs8OQ,OAAOkc,EAAcxF,EAAK,aAAa,KAAK1W,GAAAnR,EAAA,GAAG,SAAQ,oBAAX,YAAAmR,EAAA,KAAAnR,EAA+B6nB,GAC/E,CACA,SAAS8F,EAAe9F,EAAK,CACzB,OAAOwF,EAAcxF,EAAK,UAAW,KAAK,KAAK,CACnD,CACA,SAAS+F,EAAc/F,EAAK,CACxB,OAAOwF,EAAcxF,EAAK,SAAU9d,EAAE,eAAe,CACzD,CACA,SAAS8jB,EAAahG,EAAK,CA98O/B,IAAA7nB,EAAAmR,EAAA4T,GA+8OQ,OAAOA,IAAA5T,GAAAnR,EAAA,GAAG,SAAQ,eAAX,YAAAmR,EAAA,KAAAnR,EAA0B6nB,KAA1B,KAAA9C,GAAkCsI,EAAcxF,EAAK,QAAS,KAAK,KAAK,CACnF,CACA,SAASiG,EAAkBjG,EAAK,CAC5B,OAAOwF,EAAcxF,EAAK,SAAU,KAAK,KAAK,CAClD,CACA,SAASkG,EAAmBlG,EAAK,CAC7B,OAAOwF,EAAcxF,EAAK,cAAe,KAAK,KAAK,CACvD,CACA,SAASmG,EAAoBnG,EAAK,CAC9B,OAAOwF,EAAcxF,EAAK,eAAgB,KAAK,KAAK,CACxD,CACA,IAAMoG,EAAuBlkB,EAAE,QAAQ,UAAY,CAC/C,OAAOA,EAAE,gBAAgB,GAAG,QAAQ,UAAU,YAAY,CAAC,CAC/D,CAAC,EACD,SAASmkB,EAAgBrG,EAAK,CAC1B,OAAOwF,EAAcxF,EAAK,UAAU,GAAKA,EAAI,WACjD,CACA,SAASsG,EAA+BtV,EAAU,CAC9C,IAAIuV,EAAkBvV,EAAS,OAAO,MAAM,EAC5C,OAAO9O,EAAE,YAAYqkB,EAAiB,CAAE,UAAW,OAAQ,CAAC,CAChE,CACA,IAAMC,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,YAAa,UACb,WAAY,CAAE,OAAO3lB,EAAE,YAAY,YAAY,CAAG,EAClD,WAAY,CAAE,OAAOA,EAAE,YAAY,YAAY,CAAG,EAClD,UAAW,CAAE,OAAOA,EAAE,YAAY,WAAW,CAAG,EAChD,WAAY,eACZ,cAAe,IACnB,EAAE,EACF,SAAS8c,GAAa,CAClB,OAAOzb,EAAE,WAAWskB,EAAO,UAAU,CACzC,CACA,SAAS5G,GAAY,CACjB,OAAO1d,EAAE,WAAWskB,EAAO,SAAS,CACxC,CACA,SAAS5I,GAAY,CACjB,OAAO1b,EAAE,WAAWskB,EAAO,SAAS,CACxC,CACA,SAASC,GAAW,CAChB,OAAOvkB,EAAE,WAAWskB,EAAO,QAAQ,CACvC,CACA,SAASE,EAAoBC,EAAW,CACpC,IAAIC,EAAS,CAAC,EACd,GAAID,EAAW,CACX,IAAI7xB,EAAQ6xB,EAAU,MAAM,SAAS,EACrC,QAASnP,MAAQ1iB,EACb,GAAI0iB,GAAK,QAAQ,YAAY,IAAM,EAAG,CAClC,IAAIqP,GAAe,mBACfltB,EACJ,KAAOA,EAAQktB,GAAa,KAAKrP,EAAI,GACjCoP,EAAO,KAAKjtB,EAAM,CAAC,CAAC,CAE5B,CAER,CACA,OAAOitB,CACX,CACA,SAASE,EAAWlxB,EAAQ2lB,EAAQ,CAChC,OAAAA,EAAO,IAAIiL,EAAO,YAAa5wB,CAAM,EAC9B,MACX,CACA,MAAO,CACH,OAAA4wB,EACA,gBAAAH,EACA,aAAAL,EACA,cAAAN,EACA,cAAAK,EACA,mBAAAG,EACA,eAAAJ,EACA,oBAAAK,EACA,kBAAAF,EACA,mBAAAJ,EACA,kBAAAD,EACA,WAAAjI,EACA,UAAAiC,EACA,UAAAhC,EACA,SAAA6I,EACA,qBAAAL,EACA,UAAAd,EACA,WAAAwB,EACA,oBAAAJ,EACA,+BAAAJ,CACJ,CACJ,EAAG,CAGG,EAEC,IAAM,CAEb,GAAG,IAAO,UAAY,CAClB,IAAMpkB,EAAI,GAAG,KACPskB,EAAS,IAAI,GAAG,UACtB,SAASO,KAAmBvyB,EAAM,CAC1BgyB,EAAO,SACPQ,EAAc,MAAO,GAAGxyB,CAAI,CAEpC,CACA,IAAMyyB,EAAc,IAAIzyB,IAASwyB,EAAc,OAAQ,GAAGxyB,CAAI,EACxD0yB,EAAe,IAAI1yB,IAASwyB,EAAc,QAAS,GAAGxyB,CAAI,EAChE,SAASwyB,EAAcG,EAAQC,EAAO7mB,KAAY/L,EAAM,CACpD6yB,EAAoBF,EAAQC,EAAO,GAAI7mB,EAAS,GAAG/L,CAAI,CAC3D,CACA,SAAS6yB,EAAoBF,EAAQC,EAAOE,EAAc/mB,KAAY/L,EAAM,CACpE+L,IACIimB,EAAO,OACP,QAAQW,CAAM,EAAE,KAAKC,OAAW7mB,IAAW,0HAA4H+mB,EAAc,GAAI,GAAG9yB,CAAI,EAGhM,QAAQ2yB,CAAM,EAAE,IAAIC,MAAUllB,EAAE,QAAQ3B,EAAS,GAAG/L,CAAI,GAAG,EAGvE,CACA,SAAS+yB,EAAexlB,EAAO,CAC3B,GAAIykB,EAAO,QAAS,CAChBzkB,EAAQA,EAAM,eAAiBA,EAC/B,IAAIylB,EAAQ,UACZH,EAAoB,MAAOtlB,EAAM,KAAM,+BAA+BylB,wBAA4BA,IAAS,oBAAqBzlB,EAAM,MAAM,CAChJ,CACJ,CACA,SAAS0lB,GAAc,CACnB,GAAI,CAACjB,EAAO,OACR,OAEJ,IAAMkB,EAAO;AAAA,mCAC2B,GAAG;AAAA;AAAA;AAAA;AAAA,EAGvCC,EAAO,GACN,GAAG,QAAQ,SACZA,GAAQ;AAAA;AAAA,GAERnB,EAAO,QACPmB,GAAQ,+DAGRA,GAAQ,6DAEZ,IAAMH,EAAQ,iBACVhB,EAAO,OACP,QAAQ,IAAI,KAAOkB,EAAO,KAAOC,EAAM,0BAA4BH,EAAOA,CAAK,EAG/E,QAAQ,IAAIE,EAAOC,CAAI,CAE/B,CACA,GAAG,GAAG,oBAAqBF,CAAW,EACtC,SAASG,GAAS,CACdpB,EAAO,QAAU,EACrB,CACA,SAASqB,GAAU,CACfrB,EAAO,QAAU,EACrB,CACA,MAAO,CACH,KAAMO,EACN,UAAWQ,EACX,MAAOL,EACP,KAAMD,EACN,OAAAT,EACA,OAAAoB,EACA,QAAAC,CACJ,CACJ,EAAG,EACH,GAAG,KAAO,GAAG,IAAI,KACjB,GAAG,KAAO,GAAG,IAAI,IAGX,EAEC,IAAM,CAEb,GAAG,OAAU,UAAY,CACrB,IAAM3lB,EAAI,GAAG,KACPrB,EAAI,GAAG,QACP2lB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,eAAgB,CACZ,uBACA,cACA,YACJ,EACA,iBAAkB,CACd,kBACJ,EACA,oBAAqB,CACjB,WACA,iBACA,kBACA,eACA,iBACA,iBACA,cACA,eACJ,EACA,gBAAiB,CACb,QACJ,EACA,kBAAmB,CACf,oCACJ,CACJ,EAAE,EACIsB,EAA0B,CAC5B,YAAa,KACb,eAAgB,KAChB,cAAe,KACf,aAAc,KACd,aAAc,KACd,aAAc,KACd,eAAgB,KAChB,YAAa,KACb,eAAgB,KAChB,cAAe,KACf,gBAAiB,KACjB,iBAAkB,IACtB,EACIC,EAAsB,CAAC,EACvBC,EAAmB,CAAC,EACxB,SAASC,KAAoBzzB,EAAM,CAC/B,IAAMqe,EAAWqV,EAAc1zB,CAAI,EACnC,OAAO2zB,EAAeJ,EAAqBlV,CAAQ,CACvD,CACA,SAASuV,KAAiB5zB,EAAM,CAC5B,IAAM6zB,EAAQH,EAAc1zB,CAAI,EAChC,OAAI,GAAG,UAAU,UACb6zB,EAAM,WAANA,EAAM,SAAaC,EAA0BD,EAAM,QAAQ,GACvD,GAAG,KAAK,4CAA6CA,EAAM,QAAQ,IAEpEF,EAAeH,EAAkBK,CAAK,CACjD,CACA,SAASC,EAA0BC,EAAe,CAC9CA,EAAgBrmB,EAAE,WAAWqmB,CAAa,EAC1C,QAASC,KAAUV,EAAyB,CACxC,IAAMW,EAAWX,EAAwBU,CAAM,EAC/C,GAAID,EAAc,QAAQC,CAAM,GAAK,EACjC,OAAOC,CAEf,CACJ,CACA,IAAMC,EAAoB,SAAUl0B,EAAM,CACtC,IAAM8E,EAAW4I,EAAE,eAAe1N,CAAI,EAChCsO,EAAWtO,EAAK,MAAM,EACtB4G,EAAW5G,EAAK,IAAI,EACpBI,GAAU,CAAE,GAAG0E,EAAU,GAAG4I,EAAE,eAAe1N,CAAI,CAAE,EACzD,MAAO,CAACsO,EAAUlO,GAASwG,CAAQ,CACvC,EACA,SAAS8sB,EAAc1zB,EAAM,CACzB,GAAI,CAACsO,EAAUlO,EAASwG,CAAQ,EAAIstB,EAAkBl0B,CAAI,EAC1D,OAAAI,EAAUsN,EAAE,QAAQtN,EAAS,CACzB,SAAAkO,EACA,UAAW,GAAG,UAAU,QACxB,SAAU,EACV,MAAO,EACX,CAAC,EACM,OAAO,OAAO1H,EAAUxG,CAAO,CAC1C,CACA,SAASuzB,EAAeQ,EAAOC,EAAa,CACxC,IAAIC,EACAluB,EAAQ,EACZ,MAAQkuB,EAAmBF,EAAMhuB,CAAK,IAAOkuB,EAAiB,UAAYD,EAAY,UAClFjuB,GAAS,EAGb,GADAguB,EAAM,OAAOhuB,EAAO,EAAGiuB,CAAW,EAC9B,GAAG,UAAU,OACb,GAAIA,EAAY,WAAa,EACzB,QAASxb,MAAS,GAAG,MAAM,MACvB0b,EAAQ1b,GAAM,QAAS,CAAE,MAAAA,GAAO,UAAW,CAACwb,CAAW,CAAE,CAAC,OAI9D,GAAG,KAAK,gBAAiB,gGAAiGA,EAAY,QAAQ,EAGtJ,OAAOA,CACX,CACA,SAASE,EAAQ1Z,EAAUxa,EAAS,CAChC,GAAG,KAAKwa,EAAU,sBAAuB,CAAE,IAAK,EAAM,CAAC,EACvD,IAAIsD,EAAY9d,EAAQ,WAAaozB,EAAiB,OAAOD,CAAmB,EACnE,IAAI,GAAG,aAAa3Y,EAAUsD,EAAW9d,CAAO,EACxD,IAAI,CACb,CACA,SAASm0B,EAAmBnvB,EAAS8Z,EAAY,CAC7C,IAAID,EAAc7Z,EAAQ,cACrB6Z,IACDA,EAAc,CAAC,EACf7Z,EAAQ,cAAgB6Z,EACxB7Z,EAAQ,UAAU,IAAI,cAAc,GAEpCsI,EAAE,QAAQwR,CAAU,EACpBD,EAAY,KAAK,GAAGC,CAAU,EAG9BD,EAAY,KAAKC,CAAU,CAEnC,CACA,SAASsV,EAAMpvB,EAAShF,EAAU,CAAC,EAAG,CAClC,OAAAgF,EAAU,GAAG,SAAS,IAAIA,EAAShF,CAAO,EAC1C,GAAG,KAAK,aAAc,wBAAyBgF,CAAO,EACtDkvB,EAAQlvB,EAAShF,CAAO,EACxB,GAAG,SAAS,aAAagF,CAAO,EACzBA,CACX,CACA,SAASqvB,EAAM7Z,EAAUxa,EAAU,CAAC,EAAG,CACnC,IAAI,GAAG,eAAewa,EAAUxa,CAAO,EAAE,IAAI,CACjD,CACA,SAASs0B,EAAStvB,EAAS,CACvB,OAAAA,EAAU,GAAG,SAAS,IAAIA,CAAO,EAC1BA,EAAQ,SAARA,EAAQ,OAAWuvB,EAAUvvB,CAAO,EAC/C,CACA,SAASuvB,EAAUvvB,EAAS,CACxB,GAAI,CAACA,EAAQ,aACT,MAAO,CAAC,EAEZ,IAAIwvB,EAAUxvB,EAAQ,aAAa,SAAS,EACxCyvB,EACJ,OAAID,IACAC,EAAa,KAAK,MAAMD,CAAO,EAC3B,CAAClnB,EAAE,UAAUmnB,CAAU,GAChBA,EAGR,CACH,GAAGzvB,EAAQ,QACX,GAAGyvB,EACH,GAAGzvB,EAAQ,aACf,CACJ,CACA,SAAS0vB,EAAW9I,EAAO,SAAS,KAAM,CACtC,OAAOA,EAAK,iBAAiBgG,EAAO,SAAS,gBAAgB,CAAC,CAClE,CACA,SAAS+C,EAAeC,EAAW1Y,EAAe,CAC9C,IAAI2Y,EAAYH,EAAW,EACvBI,EAAUxnB,EAAE,IAAIunB,EAAW,WAAW,EAAE,KAAK,EAC7CE,GAAUznB,EAAE,IAAIsnB,EAAW,WAAW,EAAE,KAAK,EAC7CE,IAAYC,IACZ,GAAG,MAAM,cAAc,oBAAqB,CAAE,UAAAF,EAAW,UAAAD,EAAW,cAAA1Y,CAAc,CAAC,CAE3F,CACA,SAAS8Y,EAAcC,EAAe,CAClCA,EAAc,KAAO,oBACzB,CACA,SAASC,EAAwB9mB,EAAM,CACnC,IAAIF,EAAW0jB,EAAO,SAAS,iBAAiB,EAChDtkB,EAAE,KAAKrB,EAAE,QAAQmC,EAAMF,CAAQ,EAAG8mB,CAAa,CACnD,CACA,SAAShG,GAAQ,CACbmE,EAAsB7lB,EAAE,OAAO6lB,EAAqB,WAAW,EAC/DC,EAAmB9lB,EAAE,OAAO8lB,EAAkB,WAAW,CAC7D,CACA,UAAG,GAAG,qBAAsBpE,CAAK,EAC1B,CACH,OAAA4C,EACA,SAAUyB,EACV,MAAOG,EACP,WAAYW,EACZ,MAAAC,EACA,MAAAC,EACA,KAAMC,EACN,WAAAI,EACA,eAAAC,EACA,eAAgBO,CACpB,CACJ,EAAG,EACH,GAAG,SAAW,GAAG,OAAO,SACxB,GAAG,WAAa,GAAG,OAAO,WAC1B,GAAG,MAAQ,GAAG,OAAO,MACrB,GAAG,KAAO,GAAG,OAAO,KACpB,GAAG,MAAQ,GAAG,OAAO,KAGf,EAEC,IAAM,CAEb,GAAG,QAAW,UAAY,CACtB,IAAM5nB,EAAI,GAAG,KACPrB,EAAI,GAAG,QACP2lB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,QAAS,GACT,eAAgB,GAChB,eAAgB,CAAC,MAAM,EACvB,iBAAkB,CACd,OACA,sBACA,sBACA,iBACA,YACA,oCACJ,EACA,mBAAoB,CAChB,mBACA,kBACA,sBACJ,CACJ,EAAE,EACEjP,EACAwS,EACJ,SAASnG,GAAQ,CACbrM,EAAmB,OACnBwS,EAAuB,OACvBC,EAAqB,CACzB,CACA,IAAMC,EAA4B,CAAE,KAAM,EAAK,EAC/C,SAASv1B,EAAaC,EAAKC,EAAS,CAChC,OAAAA,EAAUsN,EAAE,MAAM+nB,EAA2Br1B,CAAO,EAC7CsN,EAAE,aAAavN,EAAKC,CAAO,CACtC,CACA,SAASs1B,EAAgBC,EAAkB,CACvC,OAAOz1B,EAAa,SAAS,KAAMy1B,CAAgB,CACvD,CACA,SAASH,GAAuB,CAC5B,IAAMr1B,EAAMu1B,EAAgB,EACxBH,IAAyBp1B,IACzB4iB,EAAmBwS,EACnBA,EAAuBp1B,EAE/B,CACAq1B,EAAqB,EACrB,IAAMI,EAA8C,CAAE,cAAe,EAAM,EAC3E,SAASC,EAAW11B,EAAKC,EAAS,CAC9B,OAAAA,EAAUsN,EAAE,MAAMkoB,EAA6Cx1B,CAAO,EAC/DF,EAAaC,EAAKC,CAAO,IAAMs1B,EAAgBt1B,CAAO,CACjE,CACA,SAAS01B,EAAQhT,EAAU1iB,EAAU,CAAC,EAAG,CACrC0iB,EAAW5iB,EAAa4iB,CAAQ,EAC5BiT,EAAW,eAAgBjT,CAAQ,GAAM1iB,EAAQ,QAAU,IAC3D41B,EAAoB,CAAE,SAAAlT,EAAU,OAAQ,UAAW,IAAK,sBAAsBA,GAAW,CAAC,CAElG,CACA,SAASmT,EAAKnT,EAAU,CACpBA,EAAW5iB,EAAa4iB,CAAQ,EAC5B,CAAC+S,EAAW/S,CAAQ,GAAKiT,EAAW,YAAajT,CAAQ,GACzDkT,EAAoB,CAAE,SAAAlT,EAAU,OAAQ,OAAQ,IAAK,wBAAwBA,GAAW,CAAC,CAEjG,CACA,SAASkT,EAAoB5qB,EAAO,CAh4PxC,IAAAzH,EAAAmR,EAi4PQ,IAAIvH,EAAQ,GAAG,MAAM,MAAM,sBAAuBnC,CAAK,GACvD0J,GAAAnR,EAAA,GAAG,UAAH,YAAAA,EAAY,kBAAZ,MAAAmR,EAAA,KAAAnR,EAA8B4J,EAAO,MAAO,YAC5C,GAAG,KAAKA,CAAK,CACjB,CACA,SAASwoB,EAAW30B,EAAQjB,EAAK,CAC7B,GAAI6xB,EAAO,QAAS,CAChB,IAAMkE,EAAQC,EAAW,EACzB,cAAO,QAAQ/0B,CAAM,EAAE80B,EAAO,GAAI/1B,CAAG,EACrCq1B,EAAqB,EACd,EACX,CACJ,CACA,SAASW,GAAa,CAClB,MAAO,CAAE,GAAI,CAAC,CAAE,CACpB,CACA,SAASC,EAAkBF,EAAO,CAC9B,GAAI,EAACA,GAAA,MAAAA,EAAO,IAAI,CACZ,GAAG,KAAK,WAAY,8CAA8C,EAClE,MACJ,CACA,IAAIpT,EAAW4S,EAAgB,EAC3B,GAAG,KAAK,sBAAuB,CAAE,SAAA5S,EAAU,IAAK,sBAAsBA,GAAW,CAAC,EAAE,kBAGxF,GAAG,OAAO,CACN,IAAKA,EACL,OAAQkP,EAAO,eACf,KAAM,GACN,QAAS,GACT,SAAAlP,EACA,KAAM,GACN,MAAO,OACP,MAAO,GACP,WAAY,GACZ,OAAQ,CAAC,UAAW,MAAM,EAC1B,UAAW,GACX,MAAO,CAAC,UAAW,MAAM,CAC7B,CAAC,CACL,CACA,SAASuT,EAAM9oB,EAAO,CAClBioB,EAAqB,EACrB,IAAI1S,EAAW4S,EAAgB,EAC/BM,EAAoB,CAAE,SAAAlT,EAAU,OAAQ,MAAO,IAAK,8BAA8BA,GAAW,CAAC,EAC9F,GAAG,SAAS,UAAU,CAAE,SAAUC,CAAiB,CAAC,EACpD,GAAG,SAAS,WAAW,CAAE,SAAUA,CAAiB,CAAC,EACrDqT,EAAkB7oB,EAAM,KAAK,CACjC,CACA,SAAS+oB,GAAW,CAChB,OAAO,iBAAiB,WAAYD,CAAK,EACrC,GAAG,SAAS,qBAAqB,IAAM,OACvCP,EAAQJ,EAAgB,EAAG,CAAE,MAAO,EAAM,CAAC,CAEnD,CACA,GAAG,GAAG,oBAAqB,UAAY,CAC/B,YAAa,OACbY,EAAS,EAGT,WAAWA,EAAU,GAAG,CAEhC,CAAC,EACD,SAASC,EAAavK,EAAO,SAAS,KAAM,CACxC,OAAOA,EAAK,iBAAiBgG,EAAO,SAAS,kBAAkB,CAAC,CACpE,CACA,SAASwE,EAAeC,EAAa,CACjC,IAAIC,EAAcH,EAAa,EAC/B,QAASI,KAAcD,EACnBC,EAAW,OAAO,EAEtB,QAASC,KAAcH,EACnB,SAAS,KAAK,OAAOG,CAAU,CAEvC,CACA,UAAG,MAAM,iCAAkC,SAAU11B,EAAM,CACnD6hB,IACA1W,EAAE,gBAAgBnL,EAAM,CACpB,UAAW6hB,EACX,YAAa,SACjB,CAAC,EACD7hB,EAAK,gBAAgB,SAAS,EAC9B,GAAG,KAAK,eAAeA,CAAI,EAEnC,CAAC,EACD,GAAG,GAAG,qBAAsBkuB,CAAK,EAC1B,CACH,OAAA4C,EACA,KAAAiE,EACA,QAAAH,EACA,IAAI,UAAW,CAAE,OAAOJ,EAAgB,CAAG,EAC3C,IAAI,kBAAmB,CAAE,OAAO3S,CAAkB,EAClD,aAAA7iB,EACA,WAAA21B,EACA,aAAAU,EACA,eAAAC,CACJ,CACJ,EAAG,CAGG,EAEC,CAACtoB,EAAyBC,EAA0BC,IAAwB,CAEnFA,EAAoB,EAAE,EACtB,IAAMV,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,SAAY,UAAY,CACvB,SAASwqB,EAAUzxB,EAAS,CACxB,IAAImL,EAAUlE,EAAE,QAAQjH,CAAO,EAC/B,GAAImL,EAAQ,WAAW,KAAK,EACxB,OAAOA,CAEf,CACA,IAAMyhB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,iBAAkB,CAAC,MAAM,EACzB,eAAgB,CACZ,UACA,OACA,OACA,OACA,OACA,OACA,YACA6E,EACA,kBACA,0BACA,6BACA,2BACA,YACA,iBACA,UACA,eACA,UACA,UACA,eACA,MACJ,EACA,oBAAqB,GACrB,gBAAiB,CACb,MAAO,OACP,WAAY,OACZ,SAAU,GACV,SAAU,GACV,MAAO,OACP,OAAQ,OACR,QAAS,OACT,KAAM,EACV,EACA,MAAO,SACP,WAAY,GACZ,mBAAoB,CAAC,OAAO,EAC5B,UAAW,CAAC,OAAQ,YAAa,eAAgB,OAAQ,gBAAgB,EACzE,WAAY,CAAC,OAAQ,eAAe,EACpC,eAAiBra,GAAaA,EAAS,QACvC,aAAcsa,CAClB,EAAE,EACFppB,EAAE,SAASskB,EAAQ,CAAC,aAAa,EAAG,IAAM,GAAG,MAAM,OAAO,GAAG,EAC7D,SAAS8E,EAAoB,CAAE,SAAAta,EAAU,gBAAAO,CAAgB,EAAG,CACxD,MAAO,CAACP,EAAS,MAAQA,EAAS,QAASO,GAAA,YAAAA,EAAiB,KAChE,CACA,SAASga,EAAS3xB,EAAShF,EAAU,CAAC,EAAG,CACrC,OAAAgF,EAAU4xB,EAAS5xB,EAAShF,CAAO,EAC5BiM,EAAE,YAAYjH,EAAS,WAAW,CAC7C,CACA,SAAS6xB,EAAO7xB,EAAS,CACrB,IAAIzC,EAAQ0J,EAAE,YAAYjH,EAAS,SAAS,EAC5C,GAAIzC,GAASA,IAAU,QACnB,MAAI,QAAQ,KAAKA,CAAK,IAClBA,EAAQ,OAAOA,CAAK,EAAI,KAErB,IAAI,KAAKA,CAAK,CAE7B,CACA,SAASu0B,EAAO9xB,EAAS,CACrB,IAAIzC,EAAQ0J,EAAE,YAAYjH,EAAS,SAAS,EAC5C,GAAIzC,GAASA,IAAU,QACnB,OAAOA,CAEf,CACA,IAAMw0B,EAAS,GAAG,SAAS,IAAIn3B,IAAS,CACpC,IAAII,EAAUg3B,EAAsBp3B,CAAI,EACxC,OAAO,IAAI,GAAG,UAAUI,CAAO,EAAE,QAAQ,CAC7C,CAAC,EACKi3B,EAAW,GAAG,SAAS,IAAIr3B,IAAS,CACtC,IAAMI,EAAUg3B,EAAsBp3B,CAAI,EAC1C,OAAOm3B,EAAO,CAAE,GAAG/2B,EAAS,SAAU,EAAK,CAAC,CAChD,CAAC,EACD,SAASk3B,EAAqBlyB,EAAS,CACnC,OAAO,GAAG,KAAKA,EAAS,uBAAwB,CAC5C,IAAK,CAAC,uBAAwBA,CAAO,CACzC,CAAC,CACL,CACA,SAASmyB,EAAiB/b,EAAU,CAChC,GAAI,CAAE,WAAA3C,EAAY,WAAY6J,EAAa,QAAA8U,EAAS,cAAAlb,EAAc,EAAId,EAChEqN,GAAM,CAAC,sBAAuBhQ,CAAU,EACxCjS,GAAWyF,EAAE,aAAawM,EAAY,aAAc,CAAE,YAAa,CAAC,cAAe,SAAS,CAAE,CAAC,EACrG,OAAO,GAAG,KAAKA,EAAY,mBAAoB,CAAE,YAAA6J,EAAa,QAAA8U,EAAS,cAAAlb,GAAe,IAAAuM,GAAK,SAAAjiB,EAAS,CAAC,CACzG,CACA,SAAS6wB,EAAsB7c,EAAUxa,EAAS,CAtkQtD,IAAAuD,GAukQQ,IAAMklB,GAAMllB,GAAAvD,EAAQ,MAAR,KAAAuD,GAAe,CAAC,wBAAyBiX,CAAQ,EACvD7I,EAAS3R,EAAQ,QAAU,SACjC,OAAO,GAAG,KAAK2R,EAAQ,wBAAyB,CAAE,SAAA6I,EAAU,OAAA7I,EAAQ,IAAA8W,CAAI,CAAC,CAC7E,CACA,SAAS6O,EAAgBtyB,EAAS,CAC9B,MAAO,CAACA,EAAQ,QAAQ,gBAAgB,CAC5C,CACA,SAASuyB,EAAQ/c,EAAU,CACvB,OAAOA,EAAS,aAAe8c,EAAgB9c,CAAQ,CAC3D,CACA,SAASoc,KAAYh3B,EAAM,CACvB,IAAMI,EAAUsN,EAAE,eAAe1N,CAAI,EAC/BsO,EAAWtO,EAAK,IAAI,EACpBwO,EAAOxO,EAAK,CAAC,EACnB,OAAI0N,EAAE,aAAaY,CAAQ,EAChBjC,EAAE,IAAIiC,CAAQ,EAErBE,EACOopB,EAAQppB,EAAMF,EAAUlO,CAAO,EAEnC,IAAI,GAAG,eAAe,CACzB,SAAAkO,EACA,OAAQlO,EAAQ,OAChB,MAAOA,EAAQ,MACf,MAAOA,EAAQ,KACnB,CAAC,EAAE,KAAK,CACZ,CACA,SAASw3B,KAAW53B,EAAM,CACtB,OAAO63B,EAAO,GAAG73B,CAAI,EAAE,CAAC,CAC5B,CACA,SAAS63B,KAAU73B,EAAM,CACrB,IAAMI,EAAUsN,EAAE,eAAe1N,CAAI,EACjC83B,EAAiB93B,EAAK,IAAI,EACxBwO,EAAOxO,EAAK,CAAC,EACnB,OAAI0N,EAAE,UAAUoqB,CAAc,EACnB,CAACA,CAAc,EAEtBpqB,EAAE,OAAOoqB,CAAc,EAChBA,EAEI,IAAI,GAAG,SAASA,EAAgBtpB,EAAMpO,CAAO,EAC5C,YAAYoO,CAAI,CACpC,CACA,SAASupB,EAAW3yB,EAASkJ,EAAUlO,EAAU,CAAC,EAAG,CACjD,OAAO,IAAI,GAAG,SAASkO,EAAUlJ,EAAShF,CAAO,EAAE,QAAQgF,CAAO,CACtE,CACA,SAASqB,EAAS+H,EAAME,EAAmB,CACvC,OAAIhB,EAAE,UAAUgB,CAAiB,EACtBrC,EAAE,SAASmC,EAAME,CAAiB,GAAK,GAAG,MAAM,IAAIF,CAAI,EAAE,SAASE,CAAiB,EAGpFqpB,EAAWvpB,EAAME,CAAiB,EAAE,OAAS,CAE5D,CACA,SAASspB,EAAQ5yB,EAASkJ,EAAUlO,EAAS,CACzC,OAAO,IAAI,GAAG,SAASkO,EAAUlJ,EAAShF,CAAO,EAAE,QAAQgF,CAAO,CACtE,CACA,SAAS6yB,KAAWj4B,EAAM,CAhoQ9B,IAAA2D,EAAAmR,EAioQQ,IAAM1U,EAAUg3B,EAAsBp3B,CAAI,EAC1C,OAAII,EAAQ,QAAU42B,EAAS52B,EAAQ,OAAQA,CAAO,IAClD,IAAI,GAAG,OAAO,gBAAgBA,CAAO,EAAE,QAAQ,GAE5C0U,GAAAnR,EAAA,GAAG,SAAQ,gBAAX,YAAAmR,EAAA,KAAAnR,EAA2B,eACtC,CACA,SAASyzB,EAAsBp3B,EAAM,CACjC,IAAMI,EAAUsN,EAAE,oBAAoB1N,EAAM,QAAQ,EACpD,OAAI0N,EAAE,UAAUtN,EAAQ,MAAM,IAC1BA,EAAQ,SAARA,EAAQ,OAAWA,EAAQ,SAExBA,CACX,CACA,SAAS83B,EAAyB9yB,EAAS,CACvCA,EAAQ,UAAU,IAAI,eAAe,EACrCA,EAAQ,aAAa,cAAe,MAAM,CAC9C,CACA,SAAS+yB,MAAUn4B,EAAM,CAlpQ7B,IAAA2D,EAAAmR,GAmpQQ,IAAM1U,EAAUg3B,EAAsBp3B,CAAI,EAC1CI,EAAQ,SAARA,EAAQ,OAAW,SACnB,IAAMgF,EAAU4xB,EAAS52B,EAAQ,OAAQA,CAAO,EAChD,OAAAA,EAAQ,MAARA,EAAQ,IAAQ22B,EAAS3xB,CAAO,GAChChF,EAAQ,QAAUsN,EAAE,MAAMtN,EAAQ,QAASg4B,GAAmBhzB,CAAO,CAAC,GAClEhF,EAAQ,UAAYiM,EAAE,YAAYjH,EAAS,cAAc,KACzDhF,EAAQ,KAAO,GAAG,KAAKgF,CAAO,IAElC0P,IAAAnR,EAAA,GAAG,SAAQ,2BAAX,MAAAmR,GAAA,KAAAnR,EAAsCvD,GAC/B+2B,EAAO/2B,CAAO,CACzB,CACA,SAASg4B,GAAmBhzB,EAAS,CACjC,IAAIwc,EAAU,CAAC,EACX9I,EAAOme,EAAO7xB,CAAO,EACrB0T,IACA8I,EAAQ,mBAAmB,EAAI9I,EAAK,YAAY,GAEpD,IAAIC,EAAOme,EAAO9xB,CAAO,EACzB,OAAI2T,IACA6I,EAAQ,eAAe,EAAI7I,GAExB6I,CACX,CACA,SAASyW,EAAMl4B,EAAKC,EAAS,CACzB,OAAOi3B,EAAS,CAAE,GAAGj3B,EAAS,IAAAD,CAAI,CAAC,CACvC,CACA,IAAMm4B,EAAc,0BACpB,SAASC,EAAW1zB,EAAK,CACrB,IAAIM,EAAQmzB,EAAY,KAAKzzB,CAAG,EAChC,GAAIM,EAAO,CACP,GAAI,CAACqzB,EAAG5gB,EAAQ6gB,EAAM,EAAItzB,EAC1B,OAAQyS,EAAQ,CACZ,IAAK,SACD,MAAO,KAAOlK,EAAE,eAAe+qB,EAAM,EACzC,IAAK,OACD,OAAO/qB,EAAE,eAAe+qB,EAAM,CACtC,CACJ,CACJ,CACA,SAASjhB,EAAQ3S,EAAK,CAClB,IAAIM,EAAQmzB,EAAY,KAAKzzB,CAAG,EAChC,GAAIM,EAAO,CACP,GAAI,CAACqzB,EAAG5gB,EAAQ6gB,EAAM,EAAItzB,EAC1B,OAAQyS,EAAQ,CACZ,IAAK,KACD,MAAO,SAAWlK,EAAE,eAAe+qB,EAAM,EAC7C,KAAK,OACD,MAAO,OAAS/qB,EAAE,eAAe+qB,EAAM,CAC/C,CACJ,CACJ,CACA,SAASC,EAAStzB,EAAShF,EAAS,CAChC,OAAOsN,EAAE,SAAStI,EAASsI,EAAE,QAAQ,GAAKirB,EAAYvzB,EAAShF,CAAO,GAAKw4B,GAAaxzB,CAAO,CACnG,CACA,SAASyzB,EAAazzB,EAAS,CAC3B,MAAO,CAAC,CAACuzB,EAAYvzB,CAAO,CAChC,CACA,SAAS0zB,EAAoB1zB,EAAS,CAClC,MAAO,8CAA8CiH,EAAE,QAAQjH,CAAO,gHAC1E,CACA,SAASwzB,GAAaxzB,EAAS,CAC3B,MAAM,IAAI,GAAG,aAAa0zB,EAAoB1zB,CAAO,CAAC,CAC1D,CACA,SAASuzB,EAAYvzB,EAAShF,EAAS,CACnC,OAAOsN,EAAE,WAAWskB,EAAO,eAAgB,SAAU+G,EAAS,CAC1D,IAAIxtB,EAASytB,EAAa5zB,EAAS2zB,CAAO,EAC1C,GAAIxtB,GAAU0tB,GAAa1tB,EAAQnG,EAAShF,CAAO,EAC/C,OAAOmL,CAEf,CAAC,CACL,CACA,SAASytB,EAAa5zB,EAAS2zB,EAAS,CACpC,GAAIrrB,EAAE,WAAWqrB,CAAO,EACpB,OAAOA,EAAQ3zB,CAAO,EAErB,GAAIA,EAAQ,QAAQ2zB,CAAO,EAC5B,GAAI,CACA,OAAOG,EAAwB9zB,EAAS2zB,CAAO,CACnD,OACO1sB,EAAP,CACI,GAAIA,aAAa,GAAG,YAChB,OAAO0sB,EAGP,MAAM1sB,CAEd,CAER,CACA,SAAS6sB,EAAwB9zB,EAAS2zB,EAAS,CAC/C,GAAI,CAAE,YAAA9oB,EAAa,WAAAe,CAAW,EAAI,GAAG,QAAQ,cAAc+nB,CAAO,EAClE,GAAI9oB,EAAY,SAAW,EACvB,MAAM,IAAI,GAAG,YAAY8oB,CAAO,EAEpC,GAAI,CAAE,QAAAxoB,GAAS,GAAAC,GAAI,WAAAC,GAAY,WAAAC,EAAW,EAAIT,EAAY,CAAC,EACvDtL,GAAS,GACT4L,KAAY,IACZ5L,IAAU0H,EAAE,QAAQjH,CAAO,EAEtBmL,KACL5L,IAAU4L,IAEd,QAASI,MAAaF,GAClB9L,IAAU0H,EAAE,cAAcsE,EAAS,EAEnCH,KACA7L,IAAU0H,EAAE,WAAWmE,EAAE,GAE7B,QAASI,MAAiBF,GAAY,CAClC,IAAIG,EAAiBH,GAAWE,EAAa,GAAKxL,EAAQ,aAAawL,EAAa,EACpF,GAAIA,KAAkB,KAClBjM,IAAU0H,EAAE,WAAWwE,CAAc,UAEhCD,KAAkB,QACvB,QAASuoB,KAAaC,GAAqBh0B,CAAO,EAC9CT,IAAU0H,EAAE,cAAc8sB,CAAS,OAIvCx0B,IAAU0H,EAAE,aAAauE,GAAeC,CAAc,CAE9D,CACA,OAAIG,IACArM,IAAUqM,GAEPrM,EACX,CACA,SAASs0B,GAAa1tB,EAAQnG,EAAShF,EAAU,CAAC,EAAG,CACjD,MAAO,CAACu3B,EAAQvyB,CAAO,GAAK,CAAC4sB,EAAO,qBAAuB,GAAG,SAAS,IAAIzmB,EAAQ,CAAE,MAAOnG,EAAS,GAAGhF,CAAQ,CAAC,IAAMgF,CAC3H,CACA,SAASi0B,GAAe/uB,EAASU,EAAK,CAClC,OAAI0C,EAAE,SAASpD,CAAO,EACXA,EAAQ,KAAKU,CAAG,EAGhBV,IAAYU,CAE3B,CACA,SAASouB,GAAqBh0B,EAAS,CACnC,IAAIk0B,EAAUxoB,GAAU,CAACpD,EAAE,KAAKskB,EAAO,iBAAmBuH,GAAmBF,GAAeE,EAAgBzoB,CAAK,CAAC,EAClH,OAAOpD,EAAE,OAAOtI,EAAQ,UAAWk0B,CAAM,CAC7C,CACA,IAAME,GAAc,UACdC,GAAe,WACfC,EAAgB,YACtB,SAASC,EAAmBpuB,EAAQ,CAChC,OAAOiuB,GAAY,KAAKjuB,CAAM,CAClC,CACA,SAASquB,GAAcrc,EAASnd,EAAU,CAAC,EAAG,CAC1C,GAAM,CAAE,MAAAwY,CAAM,EAAIxY,EACdwY,IAAU,OAAS,EAAEA,aAAiB,GAAG,QACzC,GAAG,KAAK,wDAAyDA,CAAK,EAE1E2E,EAAU7P,EAAE,KAAKA,EAAE,SAAS6P,CAAO,CAAC,EACpC,IAAMsc,EAAW,CAAC,EAClB,KAAOtc,EAAQ,QAAQ,CACnB,IAAIhS,GAASgS,EAAQ,MAAM,EAG3B,GAFIhS,KAAW,KACXA,GAAS,SACTouB,EAAmBpuB,EAAM,EAAG,CAC5B,IAAIuuB,GAAOC,GAAY35B,CAAO,EAC1B45B,GAAW,GAAG,MAAM,YAAYF,EAAI,EAAE,IAAKG,IAAe1uB,GAAO,QAAQiuB,GAAaS,EAAU,CAAC,EACrG1c,EAAQ,QAAQ,GAAGyc,EAAQ,CAC/B,SACSP,GAAa,KAAKluB,EAAM,EAAG,CAChC,GAAIqN,IAAU,OAASA,EAAM,QACzB,SACJ,IAAIshB,GAAuBxB,EAAS9f,EAAM,yBAAyB,EAAGxY,CAAO,EAC7Emd,EAAQ,QAAQhS,GAAO,QAAQkuB,GAAcS,EAAoB,CAAC,CACtE,MACSxsB,EAAE,aAAanC,EAAM,EAC1BsuB,EAAS,KAAKnB,EAASntB,GAAQnL,CAAO,CAAC,EAElCsN,EAAE,SAASnC,EAAM,GACtBsuB,EAAS,KAAKM,GAAc5uB,GAAQnL,CAAO,CAAC,CAEpD,CACA,OAAOsN,EAAE,KAAKmsB,CAAQ,CAC1B,CACA,SAASE,GAAY,CAAE,MAAAnhB,EAAO,KAAAkhB,CAAK,EAAG,CAClC,OAAIlhB,IAAU,MACHkhB,GAAQ,GAAG,KAAK,4DAA4D,EAG5ElhB,EAAM,IAErB,CACA,SAASwhB,GAAoB7uB,EAAQ,CAAE,OAAAsO,CAAO,EAAI,CAAC,EAAG,CAClD,OAAOtO,EAAO,QAAQmuB,EAAe,SAAUv0B,EAAO,CAClD,GAAI0U,EACA,OAAO6e,EAAS7e,CAAM,EAGtB,GAAG,KAAK,qEAAsE1U,EAAOoG,CAAM,CAEnG,CAAC,CACL,CACA,SAAS4uB,MAAiBn6B,EAAM,CAC5B,OAAQ,GAAG,QAAQ,eAAiBo6B,IAAqB,GAAGp6B,CAAI,CACpE,CACA,SAASq6B,GAAY9uB,EAAQ,CACzB,OAAOmC,EAAE,YAAYnC,EAAQ,CAAE,UAAW,OAAQ,CAAC,CACvD,CACA,SAAS+uB,GAAiB/uB,EAAQnL,EAAU,CAAC,EAAG,CA91QpD,IAAAuD,GA+1QQ,IAAI42B,EAAmBn6B,EAAQ,kBAAoB,OAC/Co6B,GAAe72B,GAAAvD,EAAQ,eAAR,KAAAuD,GAAwB,GACvCqV,GAAQ,CAAC,EACTgI,GAAkBqZ,GAAY9uB,CAAM,EACxC,QAAS+C,MAAY0S,GAAiB,CAClC,GAAI1S,KAAa,QACb,SACJ,IAAImsB,GAAYF,EACZG,GAAQF,EACZlsB,GAAWA,GAAS,QAAQ,wBAAyB,CAACiD,EAAQopB,KAC1DF,GAAYE,EACL,GACV,EACDrsB,GAAWA,GAAS,QAAQ,aAAc,KACtCosB,GAAQ,GACD,GACV,EACD,IAAMngB,EAAO,CACT,GAAGna,EACH,SAAAkO,GACA,UAAAmsB,GACA,MAAAC,GACA,sBAAuBt6B,CAC3B,EACA4Y,GAAM,KAAKuB,CAAI,CACnB,CACA,OAAOvB,EACX,CACA,SAAS4hB,GAAe/f,EAAcjC,EAAO,CACzC,IAAIiiB,EAAkBjB,GAAc5H,EAAO,mBAAoB,CAAE,MAAApZ,CAAM,CAAC,EAAE,KAAK,EAC/E,QAAS8J,KAAe7H,EACpB,GAAIxO,EAAE,QAAQqW,EAAamY,CAAe,EAAE,OACxC,MAAO,GAGf,UAAG,KAAK,cAAe,qHAAqH,EACrI,EACX,CACA,SAASz0B,GAAQhB,EAASkJ,EAAUlO,EAAU,CAAC,EAAG,CAE9C,GADAgF,EAAUiH,EAAE,IAAIjH,CAAO,EACnBsI,EAAE,UAAUY,CAAQ,EAAG,CACvB,IAAI/C,EAASotB,EAAYrqB,CAAQ,EACjC,OAAO/C,GAAUnG,EAAQ,QAAQmG,CAAM,CAC3C,KAEI,QAAO,IAAI,GAAG,SAAS+C,EAAUlJ,EAAShF,CAAO,EAAE,QAAQgF,CAAO,CAE1E,CACA,SAAS01B,GAAiBthB,EAASgD,EAAUpc,EAAU,CAAC,EAAG,CACvD,OAAOoZ,EAAQ,WAAa9L,EAAE,eAAetN,EAAQ,WAAY4xB,EAAO,eAAgBxV,CAAQ,CACpG,CACA,SAASue,GAAe/hB,EAAO,CAC3B,IAAIgiB,EAAYhiB,EAAM,OAAQuB,GAAM,CAn5Q5C,IAAA5W,GAm5Q+C,OAAC4W,EAAK,SAAS5W,GAAA4W,EAAK,aAAL,YAAA5W,GAAiB,aAAW,EAElF,OADgB+J,EAAE,IAAIstB,EAAW,UAAU,EAC1B,KAAK,IAAI,GAAK,OACnC,CACA,SAASC,GAAuBjiB,EAAOkiB,EAAe,CAClD,OAAOxtB,EAAE,KAAKsL,EAAO,SAAUmiB,EAAW,CACtC,OAAQA,IAAcD,IAChBC,EAAU,YAAc,QAAYA,EAAU,YAAc,YAC9DA,EAAU,WAAW,SAASD,EAAc,UAAU,CAC9D,CAAC,CACL,CACA,SAASE,GAAoBpiB,EAAO,CAChC,GAAIA,EAAM,OAAS,EACf,OAAOA,EACX,IAAIqiB,EAAa3tB,EAAE,OAAOsL,EAAO,YAAY,EAC7C,OAAAqiB,EAAa3tB,EAAE,OAAO2tB,EAAY9gB,GAAQ0gB,GAAuBI,EAAY9gB,CAAI,CAAC,EAC3E8gB,CACX,CACA,SAAS1hB,MAAS3Z,EAAM,CACpB,IAAII,EAAUg3B,EAAsBp3B,CAAI,EACpCspB,EACA,CAAE,OAAAvL,EAAQ,SAAAjE,EAAS,EAAI1Z,EACvB0S,GACJ,GAAI1S,EAAQ,OACR0S,GAAW+kB,EAAOz3B,EAAQ,OAAQA,CAAO,EACzCkpB,EAAU9P,IAAYA,GAAQ,gBAAgB1G,EAAQ,EACtDiL,MAAW,yCAEV,CACD,IAAIT,GAAS,GAAG,MAAM,OAAOld,CAAO,EACpC0S,GAAWpF,EAAE,IAAI4P,GAAQ,SAAS,EAClCgM,EAAU9P,IAAY9L,EAAE,SAAS4P,GAAQ9D,GAAQ,KAAK,EACtDuE,MAAW,4BAA8BT,GAAO,KAAK,IAAI,EAC7D,CACA,IAAIge,GAAuB9hB,IAAYA,GAAQ,WAAa8P,EAAO9P,EAAO,EAC1E,GAAG,QAAQ,MAAM8hB,GAAqB,CAAE,GAAGl7B,EAAS,OAAA2d,CAAO,CAAC,EAC5D,QAAS3Y,MAAW0N,GAChB,GAAG,KAAK1N,GAAS,sBAAuB,CAAE,OAAA2Y,EAAQ,SAAAjE,GAAU,IAAK,EAAM,CAAC,CAEhF,CACA,SAASyhB,GAAU3gB,EAAUhU,EAAU,CACnC,IAAI4G,EAASD,IAAUA,GAAM,OAAO,SAASqN,CAAQ,EACjD4gB,EAAc,GAAG,GAAG,sBAAuB,CAAE,MAAAhuB,CAAM,EAAG5G,CAAQ,EAClE,UAAG,WAAWgU,EAAU4gB,CAAW,EAC5BA,CACX,CACA,UAAG,GAAG,oBAAqB,UAAY,CACnC,GAAM,CAAE,gBAAAC,CAAgB,EAAI,SAG5B,GAFAA,EAAgB,aAAa,YAAa/tB,EAAE,aAAa,SAAS,KAAM,CAAE,KAAM,EAAM,CAAC,CAAC,EACxF,GAAG,MAAM+tB,CAAe,EACpB,CAAC,GAAG,QAAQ,aAAa,EACzB,OAAO,GAAG,KAAK,4EAA4E,CAEnG,CAAC,EACM,CACH,OAAAzJ,EACA,OAAAmG,GACA,QAAAF,EACA,OAAAd,EACA,SAAAE,EACA,IAAKL,EACL,QAAAY,EACA,IAAKC,EACL,QAASE,EACT,SAAAtxB,EACA,QAAAuxB,EACA,OAAQjB,EACR,MAAAsB,EACA,iBAAkBH,EAClB,aAAcZ,EACd,cAAeG,EACf,SAAUF,EACV,WAAAgB,EACA,QAAA/gB,EACA,cAAAoiB,GACA,cAAAO,GACA,SAAAzB,EACA,YAAAC,EACA,aAAAE,EACA,QAAAzyB,GACA,eAAAw0B,GACA,KAAM3D,EACN,KAAMC,EACN,iBAAA4D,GACA,MAAAnhB,GACA,UAAA4hB,GACA,YAAAlB,GACA,iBAAAC,GACA,QAAA3C,EACA,gBAAAD,EACA,eAAAqD,GACA,oBAAAK,GACA,mBAAAzB,CACJ,CACJ,EAAG,EACH,GAAG,OAAS,GAAG,SAAS,OACxB,GAAG,QAAU,GAAG,SAAS,QACzB,GAAG,OAAS,GAAG,SAAS,OACxB,GAAG,SAAW,GAAG,SAAS,SAC1B,GAAG,MAAQ,GAAG,SAAS,MACvBjsB,EAAE,SAAS,GAAI,CAAC,SAAS,EAAG,IAAM,GAAG,MAAM,OAAO,CAG5C,EAEC,CAACQ,EAAyBuI,EAAqBrI,IAAwB,CAE9E,aACAA,EAAoB,EAAEqI,CAAmB,CAInC,EAEC,CAACvI,EAAyBC,EAA0BC,IAAwB,CAEnFA,EAAoB,EAAE,EACtB,GAAG,SAAY,UAAY,CACvB,IAAMV,EAAI,GAAG,KACPrB,EAAI,GAAG,QACPqvB,EAAI,GAAG,SACP1J,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,kBAAmB,CAAC,gBAAiB,YAAY,EACjD,kBAAmB,CAAC,iBAAiB,EACrC,qBAAsB,CAAC,oBAAoB,EAC3C,uBAAwB,CAAC,uBAAwB,kBAAmB,qBAAsB,mBAAmB,EAC7G,WAAY,IACZ,cAAe,EACf,UAAW,GACX,WAAY,CAAE,MAAO,IAAM,OAAO,WAAa,EAC/C,iBAAiB,CAAE,QAAA5sB,EAAS,YAAAu2B,CAAY,EAAG,CAAE,OAAOA,IAAgB,OAAS,GAAG,KAAK,QAAQv2B,CAAO,CAAG,CAC3G,EAAE,EACIw2B,EAAc,IAAI,GAAG,YAC3B,GAAG,SAAS5J,EAAO,WAAW,wBAAwB,EAAG,SAAU5sB,EAAS,CACxE,OAAOw2B,EAAY,0BAA0Bx2B,CAAO,CACxD,CAAC,EACD,SAASy2B,EAAOz2B,EAAShF,EAAS,CA3hRtC,IAAAuD,GAAAmR,GA4hRQ,OAAA1U,EAAUsN,EAAE,QAAQtN,CAAO,EAC3BgF,EAAUs2B,EAAE,IAAIt2B,EAAShF,CAAO,GAC1BA,EAAQ,MAAQ,GAAG,MAAM,IAAIgF,CAAO,IACtC,GAAG,KAAK,kCAAkC,EAE1ChF,EAAQ,MACRA,EAAQ,MAAM,KAAK,EAER,IAAI,GAAG,aAAagF,EAAShF,CAAO,EAC5C,MAAM,IACN0U,IAAAnR,GAAA,GAAG,SAAQ,gBAAX,YAAAmR,GAAA,KAAAnR,GAA2B,iBAAkB,EACxD,CACA,SAASm4B,EAAQ12B,EAAS,CAAE,cAAA22B,EAAe,MAAAC,GAAO,YAAAL,GAAa,aAAAM,EAAa,EAAI,CAAC,EAAG,CAehF,GAdID,IACI,CAAC52B,EAAQ,aAAa,UAAU,GAAKA,EAAQ,WAAa,IAC1DA,EAAQ,aAAa,WAAY,IAAI,EAG7Cu2B,IAAA,OAAAA,GAAgB,GAAG,MAAM,aACzBM,IAAA,OAAAA,GAAiB,QACjBA,GAAevuB,EAAE,eAAeuuB,GAAcjK,EAAO,iBAAkB,CAAE,QAAA5sB,EAAS,YAAAu2B,EAAY,CAAC,EAC/Fv2B,EAAQ,MAAM,CACV,cAAe,GACf,aAAA62B,EACJ,CAAC,EACDC,EAAmB92B,CAAO,EAC1BA,EAAQ,UAAU,IAAI62B,GAAe,mBAAqB,iBAAiB,EACvE,CAACF,EACD,OAAOF,EAAOz2B,CAAO,CAE7B,CACA,SAAS82B,EAAmB92B,EAAS,CACjCA,GAAA,MAAAA,EAAS,UAAU,OAAO,kBAAmB,mBACjD,CACA,GAAG,GAAG,UAAW,SAAU,CAAE,cAAA+2B,CAAc,EAAG,CAC1CD,EAAmBC,CAAa,CACpC,CAAC,EACD,SAASC,EAASh3B,EAAShF,EAAS,CAChC,OAAA07B,EAAQ12B,EAAShF,CAAO,EACjBgF,IAAY,SAAS,aAChC,CACA,SAASi3B,EAAWlf,EAAO,SAAS,KAAM/c,EAAS,CAC/C,IAAI+E,GAAQm3B,EAAgBnf,EAAM/c,CAAO,EACzC,GAAI+E,GACA,OAAO,GAAG,OAAOA,GAAO,CAAE,IAAK,EAAK,CAAC,CAE7C,CACA,SAASo3B,GAAc,CACnB,MAAO,CAACC,EAAa,EAAG,GAAGxK,EAAO,iBAAiB,EAAE,KAAK,CAC9D,CACA,SAASgG,EAAQzsB,EAAQnL,EAAU,CAAC,EAAG,CAEnC,OADgBs7B,EAAE,IAAInwB,EAAQnL,CAAO,EACtB,QAAQm8B,EAAY,CAAC,CACxC,CACA,SAASxE,EAAW3yB,EAAShF,EAAU,CAAC,EAAG,CACvC,OAAAgF,EAAUs2B,EAAE,IAAIt2B,EAAShF,CAAO,EACzBiM,EAAE,QAAQjH,EAASm3B,EAAY,CAAC,CAC3C,CACA,SAASE,EAAUr3B,EAAShF,EAAU,CAAC,EAAG,CACtC,OAAAgF,EAAUs2B,EAAE,IAAIt2B,EAAShF,CAAO,EACzBiM,EAAE,OAAOjH,EAASm3B,EAAY,CAAC,CAC1C,CACA,SAAS1E,EAAOz3B,EAAU,CAAC,EAAG,CAC1B,OAAOs7B,EAAE,IAAIa,EAAY,EAAGn8B,CAAO,CACvC,CACA,SAASo8B,GAAe,CACpB,OAAOzpB,EAAQ,EAAE,OACrB,CACA,SAASA,GAAU,CACf,OAAO,SAAS,gBACpB,CACA,SAAS2pB,GAAY,CACjB,OAAOrwB,EAAE,KAAK,WAClB,CACA,SAASswB,GAAa,CAClB,OAAOtwB,EAAE,KAAK,YAClB,CACA,SAASuwB,EAAOx3B,EAAS,CACrB,OAAOA,IAAY2N,EAAQ,CAC/B,CACA,SAAS8pB,GAAmC,CACxC,OAAO,OAAO,WAAa,SAAS,gBAAgB,WACxD,CACA,SAASC,GAAsB,CAC3B,GAAM,CAAE,KAAA5kB,CAAK,EAAI,SACX1F,EAAO,SAAS,gBAEtB,OADgB9E,EAAE,KAAK,CAAC8E,EAAM0F,CAAI,EAAG6kB,CAA6B,GAChDhqB,EAAQ,CAC9B,CACA,SAASgqB,EAA8B33B,EAAS,CAC5C,IAAM43B,EAAY3wB,EAAE,MAAMjH,EAAS,YAAY,EAC/C,OAAO43B,IAAc,QAAUA,IAAc,QACjD,CACA,IAAMC,EAAiBvvB,EAAE,QAAQ,UAAY,CACzC,IAAMwvB,EAAa,CACf,SAAU,WACV,IAAK,IACL,KAAM,IACN,MAAO,QACP,OAAQ,QACR,UAAW,QACf,EACMC,EAAQ,GAAG,QAAQ,MAAM,SAAS,KAAM,gBAAiB,CAAE,MAAOD,CAAW,CAAC,EAC9E7V,GAAQ8V,EAAM,YAAcA,EAAM,YACxC,OAAAA,EAAM,OAAO,EACN9V,EACX,CAAC,EACD,SAAS+V,GAAazhB,EAAU,CAC5B,OAAO,GAAG,SAAS,YAAYA,CAAQ,CAC3C,CACA,SAAS0hB,GAAc7uB,EAAO,SAAU,CACpC,IAAM8uB,EAAa,CAAC,YAAY,EAAE,OAAOtL,EAAO,iBAAiB,EAAE,OAAOA,EAAO,oBAAoB,EACrG,OAAOxjB,EAAK,iBAAiB8uB,EAAW,KAAK,CAAC,CAClD,CACA,SAASC,KAAcv9B,EAAM,CACzB,GAAM,CAAC0b,EAAWtb,EAAO,EAAIo9B,EAAax9B,CAAI,EACxC8iB,GAAW1iB,GAAQ,UAAYA,GAAQ,MAAM,SACnD,GAAI0iB,GAAU,CACV,IAAM2a,GAAOC,EAAqBhiB,CAAS,EAC3Ctb,GAAQ,MAAM,eAAe,IAAI0iB,GAAU2a,EAAI,CACnD,CACJ,CACA,SAASC,EAAqBhiB,EAAW,CACrC,IAAI+hB,EAAO,CAAC,EACZ,QAAS9hB,MAAYD,EAAW,CAC5B,IAAI7W,GAAMu4B,GAAazhB,EAAQ,EAC3B9W,GACA44B,EAAK54B,EAAG,EAAI8W,GAAS,UAGrB,GAAG,KAAK,2BAA4B,4DAA6DA,EAAQ,CAEjH,CACA,OAAO8hB,CACX,CACA,SAASE,KAAiB39B,EAAM,CAC5B,GAAM,CAAC0b,EAAWtb,EAAO,EAAIo9B,EAAax9B,CAAI,EACxC,CAAE,SAAA8iB,EAAS,EAAI1iB,GAAQ,MACvBw9B,GAAqBx9B,GAAQ,MAAM,eAAe,IAAI0iB,EAAQ,EACpE,OAAI8a,IACAC,EAAcniB,EAAWkiB,EAAkB,EAC3C,GAAG,KAAK,8BAA+B,kCAAmCA,EAAkB,EACrF,IAGA,EAEf,CACA,SAASE,EAAU19B,EAAU,CAAC,EAAG,CAC7B,IAAMwY,EAAQ,GAAG,MAAM,IAAIxY,CAAO,EAC5B0iB,GAAW1iB,EAAQ,UAAYwY,EAAM,SAC3C,GAAIkK,GAAU,CACV,IAAMrI,GAAe,GAAG,aAAa,SAAS7B,CAAK,EACnDA,EAAM,kBAAkB,IAAIkK,GAAUrI,EAAY,CACtD,CACJ,CACA,SAASsjB,EAAa39B,EAAU,CAAC,EAAG,CAChC,IAAMwY,EAAQ,GAAG,MAAM,IAAIxY,CAAO,EAC5B0iB,GAAW1iB,EAAQ,UAAYwY,EAAM,SACrColB,GAAkB59B,EAAQ,MAAM,kBAAkB,IAAI0iB,EAAQ,EACpE,OAAIkb,IAAmBA,GAAgB,QAAQplB,CAAK,GAChD,GAAG,KAAK,6BAA8B,yBAA0BolB,GAAgB,MAAM,EAC/E,IAGA,EAEf,CACA,SAASC,GAAgB,CACrB,OAAO,IAAI,GAAG,UAAU,CAAE,SAAU,GAAI,aAAc,GAAG,QAAQ,YAAa,CAAC,CACnF,CACA,SAAST,EAAax9B,EAAM,CACxB,IAAMI,EAAUsN,EAAE,KAAKA,EAAE,eAAe1N,CAAI,CAAC,EAC7CI,EAAQ,MAAQ,GAAG,MAAM,IAAIA,CAAO,EACpC,IAAIsb,GACJ,OAAI1b,EAAK,CAAC,EACN0b,GAAY,CAACsc,EAAQh4B,EAAK,CAAC,EAAGI,CAAO,CAAC,EAEjCA,EAAQ,OACbsb,GAAY+gB,EAAUr8B,EAAQ,OAAQA,CAAO,EAG7Csb,GAAYmc,EAAOz3B,CAAO,EAEvB,CAACsb,GAAWtb,CAAO,CAC9B,CACA,SAAS89B,MAAel+B,EAAM,CAC1B,GAAM,CAAC0b,EAAWhF,EAAQ,EAAI8mB,EAAax9B,CAAI,EAC/C69B,EAAcniB,EAAW,CAAC,CAAC,CAC/B,CACA,SAASmiB,EAAcniB,EAAW+hB,EAAM,CACpC,QAAS9hB,MAAYD,EAAW,CAC5B,IAAM7W,GAAMu4B,GAAazhB,EAAQ,EACjCA,GAAS,UAAY8hB,EAAK54B,EAAG,GAAK,CACtC,CACJ,CACA,SAASs5B,EAAW/4B,EAAShF,EAAU,CAAC,EAAG,CAhuR/C,IAAAuD,GAkuRQ,IAAM+oB,GADWsL,EAAQ5yB,CAAO,EACF,sBAAsB,EAC9Cg5B,GAAeh5B,EAAQ,sBAAsB,EAC7Ci5B,GAAa,IAAI,GAAG,KAAK,CAC3B,KAAMD,GAAa,KAAO1R,GAAa,KACvC,IAAK0R,GAAa,IAAM1R,GAAa,IACrC,MAAO0R,GAAa,MACpB,OAAQA,GAAa,MACzB,CAAC,GACDz6B,GAAAvD,EAAQ,eAAR,MAAAuD,GAAA,KAAAvD,GACAiM,EAAE,SAASjH,EAAS,CAChB,SAAUA,EAAQ,MAAM,WAAa,SAAW,SAAW,WAC3D,IAAK,OACL,MAAO,OACP,OAAQ,OACR,KAAM,OACN,MAAO,OACP,OAAQ,MACZ,CAAC,EACD,IAAMk5B,GAASjyB,EAAE,mBAAmB,WAAW,EAC/CA,EAAE,aAAajH,EAASk5B,EAAM,EAC9BA,GAAO,YAAYl5B,CAAO,EAC1B,IAAMm5B,GAAa,SAAUC,GAAOC,GAAO,CACvC,OAAAJ,GAAW,MAAQG,GACnBH,GAAW,KAAOI,GACXpyB,EAAE,SAASiyB,GAAQD,EAAU,CACxC,EACAE,GAAW,EAAG,CAAC,EACf,IAAMG,GAAiBt5B,EAAQ,sBAAsB,EACrD,OAAAm5B,GAAWH,GAAa,KAAOM,GAAe,KAAMN,GAAa,IAAMM,GAAe,GAAG,EACzFhxB,EAAE,KAAK2vB,GAAcj4B,CAAO,EAAGiH,EAAE,eAAe,EACzC,CACH,OAAAiyB,GACA,WAAAC,EACJ,CACJ,CACA,SAASjC,EAAgBnf,EAAM/c,EAAU,CAAC,EAAG,CACzC,GAAI+c,EAAOwhB,GAASxhB,CAAI,EAAG,CACvB,IAAM7O,GAAW,CACbjC,EAAE,aAAa,KAAM8Q,CAAI,EACzB,IAAM9Q,EAAE,aAAa,OAAQ8Q,CAAI,CACrC,EAAE,KAAK,EACP,OAAOue,EAAE,IAAIptB,GAAUlO,CAAO,CAClC,CACJ,CACA,SAASu+B,GAASh8B,EAAO,CACrB,OAAOA,GAAA,YAAAA,EAAO,QAAQ,KAAM,GAChC,CACA,SAASi8B,GAAqBC,EAAc,CACxC,IAAM9c,EAAiB,SAAS,cAChC,GAAI,GAAG,SAAS,SAAS8c,EAAc9c,CAAc,EACjD,OAAOA,CAEf,CACA,IAAM+c,GAAe,CAAC,iBAAkB,eAAgB,aAAc,WAAW,EACjF,SAASC,GAAgBC,EAAMC,EAAK,CAAC,EAAG,CACpC,QAASp6B,MAAOi6B,GACZ,GAAI,CACAG,EAAGp6B,EAAG,EAAIm6B,EAAKn6B,EAAG,CACtB,MACA,CACA,CAEJ,OAAOo6B,CACX,CACA,IAAIC,GAAe,GACnB,UAAG,GAAG,SAAU,CAAE,KAAM,GAAM,WAAY,EAAK,EAAG,IAAMA,GAAe,EAAI,EAC3E,GAAG,GAAG,oBAAqB,UAAY,CACnCxxB,EAAE,KAAK,UAAY,CACf,GAAI,CAACwxB,GACD,OAAO7C,EAAW,CAE1B,CAAC,CACL,CAAC,EACD,GAAG,GAAG,OAAQ,aAAc,IAAMA,EAAW,CAAC,EACvC,CACH,OAAAR,EACA,WAAAQ,EACA,gBAAAC,EACA,OAAAtK,EACA,IAAKgG,EACL,QAASD,EACT,OAAQ0E,EACR,IAAI,MAAO,CAAE,OAAO1pB,EAAQ,CAAG,EAC/B,UAAA2pB,EACA,WAAAC,EACA,iCAAAE,EACA,oBAAAC,EACA,OAAAF,EACA,eAAAK,EACA,WAAAM,EACA,cAAAI,EACA,YAAAO,GACA,UAAAJ,EACA,aAAAC,EACA,WAAAI,EACA,MAAOrC,EACP,SAAAM,EACA,cAAA6B,EACA,qBAAAW,GACA,gBAAAG,GACA,YAAAnD,CACJ,CACJ,EAAG,EACH,GAAG,MAAQ,GAAG,SAAS,MACvB,GAAG,OAAS,GAAG,SAAS,MAGlB,EAEC,CAAC1tB,EAAyBuI,EAAqBrI,IAAwB,CAE9E,aACAA,EAAoB,EAAEqI,CAAmB,CAInC,EAEC,IAAM,CAEb,GAAG,OAAU,UAAY,CACrB,IAAM/I,EAAI,GAAG,KACPrB,EAAI,GAAG,QACT8yB,EAAkB,CAAC,EACnBC,EAAmB,CAAC,EAClBC,EAAmB,IAAI,GAAG,iBAAiB,QAAQ,EACnDrN,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,SAAU,IACV,OAAQ,OACR,QAAS,CAAC,WAAW,kCAAkC,EAAE,OAC7D,EAAE,EACF,SAASsN,EAAYC,EAAU,CAC3B,OAAO7xB,EAAE,OAAO6xB,EAAU,WAAW,CACzC,CACA,SAASnQ,GAAQ,CACbiQ,EAAiB,MAAM,EACvBF,EAAkBG,EAAYH,CAAe,EAC7CC,EAAmBE,EAAYF,CAAgB,CACnD,CACA,SAASI,GAAY,CACjB,OAAOxN,EAAO,OAClB,CACA,SAASyN,EAAQr6B,EAASs6B,EAAWt/B,EAAS,CAC1CgF,EAAU,GAAG,SAAS,IAAIA,CAAO,EACjChF,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B,IAAIu/B,EAAcC,EAAgBF,CAAS,EACrCG,EAAUC,EAAY16B,EAASs6B,EAAWt/B,CAAO,EAEvD,GADAu/B,EAAc,GAAG,MAAM,QAAQA,CAAW,EACtCE,EAAS,CACT,IAAME,EAAS,IAAMJ,EAAYv6B,EAAShF,CAAO,EACjD,OAAOi/B,EAAiB,cAAcj6B,EAAS26B,EAAQ3/B,CAAO,CAClE,KAEI,QAAO4/B,EAAY56B,EAASs6B,CAAS,CAE7C,CACA,SAASI,EAAY16B,EAAS66B,EAAuB7/B,EAAS,CAC1D,OAAA8/B,EAAY9/B,CAAO,EACZo/B,EAAU,GAAK,CAACW,EAAOF,CAAqB,GAAM7/B,EAAQ,SAAW,GAAM,CAACiM,EAAE,YAAYjH,CAAO,CAC5G,CACA,SAAS46B,EAAY56B,EAASs6B,EAAW,CACrC,OAAIhyB,EAAE,UAAUgyB,CAAS,GACrBrzB,EAAE,SAASjH,EAASs6B,CAAS,EAE1B,QAAQ,QAAQ,CAC3B,CACA,SAASU,EAAWh7B,EAASi7B,EAAWjgC,EAAS,CAC7C,OAAAA,EAAU,CAAE,GAAGA,EAAS,YAAai/B,EAAiB,WAAY,EAC5C,IAAI,GAAG,cAAcj6B,EAASi7B,EAAWjgC,CAAO,EACjD,MAAM,CAC/B,CACA,SAAS8/B,EAAY9/B,EAAS,CAC1BA,EAAQ,SAARA,EAAQ,OAAW4xB,EAAO,QAC1B5xB,EAAQ,WAARA,EAAQ,SAAa4xB,EAAO,SAChC,CACA,SAASsO,EAAmB/gC,EAAM,CAC9B,OAAO4/B,EAAgB5/B,CAAI,GAAK,GAAG,KAAK,uBAAwBA,CAAI,CACxE,CACA,SAASghC,EAAOn7B,EAAS,CACrB,OAAOi6B,EAAiB,OAAOj6B,CAAO,CAC1C,CACA,SAASo7B,EAAM3nB,EAAY9I,EAAY0wB,EAAkBrgC,EAAS,CAC9DA,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B8/B,EAAY9/B,CAAO,EACnByY,EAAa,GAAG,SAAS,IAAIA,CAAU,EACvC9I,EAAa,GAAG,SAAS,IAAIA,CAAU,EACvC,IAAI2wB,EAAeC,EAAiBF,CAAgB,EAC9CG,EAAYd,EAAYjnB,EAAY6nB,EAActgC,CAAO,EAC/DsgC,EAAe,GAAG,MAAM,QAAQA,CAAY,EAC5C,IAAMG,GAAcnzB,EAAE,SAAStN,EAAS,aAAa,GAAKsN,EAAE,KACtDozB,EAAcpzB,EAAE,SAAStN,EAAS,aAAa,GAAKsN,EAAE,KACtDqzB,EAAerzB,EAAE,SAAStN,EAAS,cAAc,GAAKsN,EAAE,KACxDszB,EAActzB,EAAE,SAAStN,EAAS,aAAa,GAAKsN,EAAE,KACtDuzB,GAAYvzB,EAAE,SAAStN,EAAS,WAAW,GAAKsN,EAAE,KAExD,GADAmzB,GAAY,EACRD,EAAW,CACX,GAAIvB,EAAiB,SAASxmB,CAAU,GAAMzY,EAAQ,cAAgB,GAClE,OAAOsgC,EAAa7nB,EAAY9I,EAAY3P,CAAO,EAEvD,GAAG,KAAK,aAAc,kDAAmDyY,EAAY9I,EAAY0wB,EAAkBrgC,EAAQ,QAAQ,EACnI,IAAMub,GAAW,GAAG,SAAS,IAAI9C,CAAU,EACrCqoB,GAAwBvlB,GAAS,UACjCwlB,GAAY,GAAG,SAAS,WAAWtoB,EAAY,CACjD,cAAe,CACXxM,EAAE,aAAawM,EAAY9I,CAAU,EACrC+wB,EAAY,CAChB,CACJ,CAAC,EACKM,GAAY,gBAAkB,CAChCH,GAAU,EACV,IAAMI,EAAuB1lB,GAAS,UACtCwlB,GAAU,WAAW,EAAGE,EAAuBH,EAAqB,EACpE,MAAMR,EAAa7nB,EAAY9I,EAAY3P,CAAO,EAClD2gC,EAAa,EACbI,GAAU,OAAO,OAAO,EACxBH,EAAY,CAChB,EACA,OAAO3B,EAAiB,cAAc,CAACxmB,EAAY9I,CAAU,EAAGqxB,GAAWhhC,CAAO,CACtF,KAEI,QAAA2gC,EAAa,EACbO,EAAqBzoB,EAAY9I,CAAU,EAC3C+wB,EAAY,EACZE,EAAY,EACZC,GAAU,EACH,QAAQ,QAAQ,CAE/B,CACA,SAASN,EAAiB1+B,EAAQ,CAC9B,GAAI,CAAAk+B,EAAOl+B,CAAM,EAGZ,IAAIyL,EAAE,WAAWzL,CAAM,EACxB,OAAOA,EAEN,GAAIyL,EAAE,QAAQzL,CAAM,EACrB,OAAOs/B,EAAoB,GAAGt/B,CAAM,EAEnC,GAAIyL,EAAE,SAASzL,CAAM,EAAG,CACzB,IAAIu/B,EACJ,GAAIv/B,EAAO,QAAQ,GAAG,GAAK,EACvB,OAAOs/B,EAAoB,GAAGt/B,EAAO,MAAM,GAAG,CAAC,EAE9C,GAAIu/B,EAAkBpC,EAAiBn9B,CAAM,EAC9C,OAAO0+B,EAAiBa,CAAe,CAE/C,MAEI,GAAG,KAAK,wBAAyBv/B,CAAM,EAE/C,CACA,SAASs/B,EAAoBE,EAAcC,EAAc,CACrD,GAAI,CAACvB,EAAOsB,CAAY,GAAK,CAACtB,EAAOuB,CAAY,EAAG,CAChD,IAAMC,EAAiB/B,EAAgB6B,CAAY,GAAK/zB,EAAE,UACpDk0B,EAAiBhC,EAAgB8B,CAAY,GAAKh0B,EAAE,UAC1D,MAAO,CAACmL,EAAY9I,EAAY3P,KAAY,QAAQ,IAAI,CACpDuhC,EAAe9oB,EAAYzY,EAAO,EAClCwhC,EAAe7xB,EAAY3P,EAAO,CACtC,CAAC,CACL,CACJ,CACA,SAASw/B,EAAgB39B,EAAQ,CAC7B,GAAI,CAAAk+B,EAAOl+B,CAAM,EAGZ,IAAIyL,EAAE,WAAWzL,CAAM,EACxB,OAAOA,EAEN,GAAIyL,EAAE,SAASzL,CAAM,EACtB,OAAOq+B,EAAmBr+B,CAAM,EAE/B,GAAIyL,EAAE,UAAUzL,CAAM,EACvB,MAAO,CAACmD,EAAShF,IAAYggC,EAAWh7B,EAASnD,EAAQ7B,CAAO,EAGhE,GAAG,KAAK,uBAAwB6B,CAAM,EAE9C,CACA,IAAMq/B,EAAuB,GAAG,SAAS,SAAUzoB,EAAY9I,EAAY,CACvE8I,EAAW,YAAY9I,CAAU,CACrC,CAAC,EACD,SAAS8xB,EAAcz8B,EAAShF,EAAS8W,EAAe,CACpD9W,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B,IAAIgX,EAAS,IAAI,GAAG,cAAchS,EAAShF,EAAS8W,CAAa,EACjE,OAAAE,EAAO,gBAAgB,WAAW,EAClCA,EAAO,gBAAgB,YAAY,EACnCA,EAAO,OAAO,QAAQ,EACtBA,EAAO,OAAO,UAAU,EACjBhX,CACX,CACA,SAAS0hC,EAAmBviC,EAAMwiC,EAAY,CAC1C,IAAMh5B,EAAK43B,EAAiBoB,CAAU,EACtCh5B,EAAG,UAAY,GAAG,UAAU,QAC5Bq2B,EAAiB7/B,CAAI,EAAIwJ,CAC7B,CACA,SAASi5B,EAAkBziC,EAAMmgC,EAAW,CACxC,IAAM32B,EAAK62B,EAAgBF,CAAS,EACpC32B,EAAG,UAAY,GAAG,UAAU,QAC5Bo2B,EAAgB5/B,CAAI,EAAIwJ,CAC5B,CACA,GAAG,GAAG,oBAAqB,UAAY,CAC9By2B,EAAU,GACX,GAAG,KAAK,YAAa,yBAAyB,CAEtD,CAAC,EACD,SAASW,EAAOF,EAAuB,CACnC,MAAO,CAACA,GAAyBA,IAA0B,MAC/D,CACA,SAASgC,EAAyB1iC,EAAMy/B,EAAMC,EAAI,CAC9C+C,EAAkBziC,EAAM,SAAU6F,EAAShF,EAAS,CAChD,OAAAgF,EAAQ,MAAM,QAAU,EACxBiH,EAAE,SAASjH,EAAS,CAAE,QAAS45B,CAAK,CAAC,EAC9BoB,EAAWh7B,EAAS,CAAE,QAAS65B,CAAG,EAAG7+B,CAAO,CACvD,CAAC,CACL,CACA6hC,EAAyB,UAAW,EAAG,CAAC,EACxCA,EAAyB,WAAY,EAAG,CAAC,EACzC,SAASC,EAAaC,EAAIC,EAAI,CAC1B,MAAO,CAAE,UAAW,aAAaD,QAASC,MAAQ,CACtD,CACA,SAASC,IAAiB,CACtB,MAAO,CAAE,UAAW,IAAK,CAC7B,CACA,SAASC,GAAgBl9B,EAAS,CAC9B,OAAAiH,EAAE,SAASjH,EAASi9B,GAAe,CAAC,EAC7Bj9B,EAAQ,sBAAsB,CACzC,CACA,SAASm9B,EAAuBC,EAAWC,EAAgB,CACvD,IAAMC,EAAkB,WAAWF,IAC7BG,EAAoB,aAAaH,IACvCR,EAAkBU,EAAiB,SAAUt9B,EAAShF,EAAS,CAC3D,IAAMwiC,GAAMN,GAAgBl9B,CAAO,EAC7By9B,EAAYJ,EAAeG,EAAG,EACpC,OAAOxC,EAAWh7B,EAASy9B,EAAWziC,CAAO,CACjD,CAAC,EACD4hC,EAAkBW,EAAmB,SAAUv9B,EAAShF,EAAS,CAC7D,IAAMwiC,GAAMN,GAAgBl9B,CAAO,EAC7By9B,EAAYJ,EAAeG,EAAG,EACpC,OAAAv2B,EAAE,SAASjH,EAASy9B,CAAS,EACtBzC,EAAWh7B,EAASi9B,GAAe,EAAGjiC,CAAO,CACxD,CAAC,CACL,CACA,OAAAmiC,EAAuB,MAAO,SAAUK,EAAK,CACzC,IAAME,EAAiBF,EAAI,IAAMA,EAAI,OACrC,OAAOV,EAAa,EAAG,CAACY,CAAc,CAC1C,CAAC,EACDP,EAAuB,SAAU,SAAUK,EAAK,CAC5C,IAAME,EAAiB,GAAG,SAAS,WAAW,EAAIF,EAAI,IACtD,OAAOV,EAAa,EAAGY,CAAc,CACzC,CAAC,EACDP,EAAuB,OAAQ,SAAUK,EAAK,CAC1C,IAAME,EAAiBF,EAAI,KAAOA,EAAI,MACtC,OAAOV,EAAa,CAACY,EAAgB,CAAC,CAC1C,CAAC,EACDP,EAAuB,QAAS,SAAUK,EAAK,CAC3C,IAAME,EAAiB,GAAG,SAAS,UAAU,EAAIF,EAAI,KACrD,OAAOV,EAAaY,EAAgB,CAAC,CACzC,CAAC,EACDhB,EAAmB,aAAc,CAAC,WAAY,SAAS,CAAC,EACxDA,EAAmB,YAAa,CAAC,eAAgB,iBAAiB,CAAC,EACnEA,EAAmB,aAAc,CAAC,gBAAiB,gBAAgB,CAAC,EACpEA,EAAmB,UAAW,CAAC,cAAe,kBAAkB,CAAC,EACjEA,EAAmB,YAAa,CAAC,iBAAkB,eAAe,CAAC,EACnE,GAAG,GAAG,qBAAsB1S,CAAK,EAC1B,CACH,MAAAoR,EACA,QAAAf,EACA,OAAAc,EACA,aAAc,CAAE,OAAOlB,EAAiB,WAAa,EACrD,WAAYyC,EACZ,UAAWE,EACX,OAAAhQ,EACA,UAAAwN,EACA,OAAAW,EACA,YAAAL,EACA,qBAAAwB,EACA,cAAAO,CACJ,CACJ,EAAG,EACH,GAAG,WAAa,GAAG,OAAO,WAC1B,GAAG,UAAY,GAAG,OAAO,UACzB,GAAG,MAAQ,GAAG,OAAO,MACrB,GAAG,QAAU,GAAG,OAAO,OAGjB,EAEC,CAAC3zB,EAAyBC,EAA0BC,IAAwB,CAEnFA,EAAoB,EAAE,EACtB,IAAMV,EAAI,GAAG,KACb,GAAG,QAAW,UAAY,CACtB,IAAMskB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,YAAa,EACb,WAAY,GACZ,UAAW,GACX,eAAgB,KAChB,cAAe,KACf,gBAAiB,IACjB,KAAKxV,EAAU,CAAE,OAAQA,EAAS,OAAS,KAAOA,EAAS,OAAS,MAAQA,EAAS,SAAW,GAAK,EACrG,UAAUhD,EAAS,CAAE,OAAOA,EAAQ,OAAO,CAAG,EAC9C,YAAYA,EAASupB,EAAW,CAAE,MAAO,CAACvpB,EAAQ,OAAO,CAAG,EAC5D,WAAY,GACZ,YAAa,GACb,QAAS,GACb,EAAE,EACI2a,EAAQ,IAAI,GAAG,QAAQ,MACvB1nB,EAAQ,IAAI,GAAG,QAAQ,MACzBu2B,EAAc,KAClB,SAAS5T,GAAQ,CACb6T,EAAc,EACd9O,EAAM,MAAM,EACZ1nB,EAAM,MAAM,EACZu2B,GAAA,MAAAA,EAAa,UACbA,EAAc,IAClB,CACA,SAASE,KAAeljC,EAAM,CAC1B,IAAMI,EAAU+iC,EAAoBnjC,CAAI,EAClCwZ,EAAU,IAAI,GAAG,QAAQpZ,CAAO,EACtC,OAAAgjC,EAAe5pB,CAAO,EACfA,CACX,CACA,SAAS2pB,EAAoBnjC,EAAM,CAxoSvC,IAAA2D,EAAAmR,EAyoSQ,IAAM1U,EAAUsN,EAAE,eAAe1N,CAAI,EACrC,OAAKI,EAAQ,MACTA,EAAQ,IAAMJ,EAAK,CAAC,IAExB8U,GAAAnR,EAAA,GAAG,SAAQ,uBAAX,MAAAmR,EAAA,KAAAnR,EAAkCvD,GAC3BA,CACX,CACA,SAASgjC,EAAe5pB,EAAS,CAC7B6pB,EAAiB7pB,CAAO,GAAK8pB,EAAa9pB,CAAO,CACrD,CACA,SAAS6pB,EAAiBpZ,EAAY,CAClC,IAAIN,EACJ,GAAIM,EAAW,UAAU,IAAMN,EAAgBld,EAAM,IAAIwd,CAAU,GAC/D,UAAG,KAAK,eAAgB,kCAAmCA,EAAW,WAAW,EAC5EA,EAAW,YACZkK,EAAM,oBAAoBxK,CAAa,EAE3Cld,EAAM,MAAMkd,EAAeM,EAAY,CAAE,eAAgBmZ,CAAe,CAAC,EAClE,EAEf,CACA,SAASE,EAAa9pB,EAAS,CAC3B,OAAA+pB,EAAc/pB,CAAO,EACrB2a,EAAM,KAAK3a,CAAO,EACX,EACX,CACA,SAAS+pB,EAAc/pB,EAAS,CACxBA,EAAQ,UAAU,IAClB/M,EAAM,IAAI+M,CAAO,EACjBA,EAAQ,UAAY,IAAM/M,EAAM,IAAI+M,CAAO,GAE/C9L,EAAE,OAAO8L,EAAS,SAAU2C,EAAiB,CAxqSrD,IAAAxY,EAAAmR,GAAA4T,GAAAyD,EAAAC,EAyqSY,IAAIoX,GAAc1uB,IAAAnR,EAAAwY,EAAgB,cAAhB,KAAAxY,EAA+B6V,EAAQ,cAAvC,KAAA1E,GAAsDpH,EAAE,WAAWskB,EAAO,YAAaxY,EAAS2C,CAAe,EAC7HqnB,GACA/2B,EAAM,OAAO+2B,EAAa,CAAE,OAAQhqB,CAAQ,CAAC,EAEjD,IAAIiqB,GAAatX,GAAAzD,GAAAvM,EAAgB,aAAhB,KAAAuM,GAA8BlP,EAAQ,aAAtC,KAAA2S,EAAoDze,EAAE,WAAWskB,EAAO,WAAYxY,EAAS2C,CAAe,EACzHsnB,GACAh3B,EAAM,MAAMg3B,EAAY,CAAE,OAAQjqB,CAAQ,CAAC,EAE3C/M,EAAM,IAAI+M,CAAO,GACjB/M,EAAM,IAAI+M,CAAO,GAEhB4S,EAAAjQ,EAAgB,cAAhB,MAAAiQ,EAAA,KAAAjQ,IACD1P,EAAM,MAAM+M,CAAO,CAE3B,CAAC,CACL,CACA,SAASkqB,GAAS,CACd,OAAOvP,EAAM,OAAO,CACxB,CACA,SAASwP,EAASC,EAAe,CAC7B,IAAI,GAAG,QAAQA,CAAa,EAAE,SAAS,CAC3C,CACA,SAASX,KAAiBjjC,EAAM,CA/rSpC,IAAA2D,EAAAmR,GAgsSQA,GAAAnR,EAAA,GAAG,SAAQ,sBAAX,MAAAmR,EAAA,KAAAnR,EAAiC3D,GACjCm0B,EAAM,MAAM,GAAGn0B,CAAI,CACvB,CACA,SAAS6jC,EAAyBrqB,EAASgD,EAAU,CACjD,GAAIhD,EAAQ,OAASgD,EAAS,KAAOhD,EAAQ,MAAQgD,EAAS,IAAK,CAC/D,IAAMyN,EAAavc,EAAE,QAAQ8L,EAAS,CAClC,OAAQgD,EAAS,OACjB,IAAKA,EAAS,GAClB,CAAC,EACD/P,EAAM,MAAM+M,EAASyQ,CAAU,CACnC,CACJ,CACA,SAAS6Z,EAAa1iC,EAAQ,CAC1B,OAAOsM,EAAE,SAAS,CAAC,MAAO,UAAW,MAAM,EAAGA,EAAE,gBAAgBtM,CAAM,CAAC,CAC3E,CACA,SAAS2iC,GAAS,CACVr2B,EAAE,WAAWskB,EAAO,WAAW,IAC/BgR,EAAc,IAAI,GAAG,YAE7B,CACA,SAASgB,GAAY,CACjBhB,GAAA,MAAAA,EAAa,UACjB,CACA,UAAG,GAAG,kBAAmBe,CAAM,EAC/B,GAAG,GAAG,qBAAsBC,CAAS,EACrC,GAAG,GAAG,qBAAsB5U,CAAK,EAC1B,CACH,QAAS8T,EACT,MAAAz2B,EACA,OAAAi3B,EACA,aAAAI,EACA,OAAA9R,EACA,MAAOiR,EACP,yBAAAY,EACA,MAAA1P,EACA,SAAAwP,CACJ,CACJ,EAAG,EACH,GAAG,QAAU,GAAG,QAAQ,QACxB,GAAG,MAAQ,GAAG,QAAQ,KAGhB,EAEC,CAACz1B,EAAyBuI,EAAqBrI,IAAwB,CAE9E,aACAA,EAAoB,EAAEqI,CAAmB,CAInC,EAEC,CAACvI,EAAyBC,EAA0BC,IAAwB,CAEnFA,EAAoB,EAAE,EACtB,IAAMV,EAAI,GAAG,KACPrB,EAAI,GAAG,QACb,GAAG,MAAS,UAAY,CACpB,IAAM43B,EAAgB,CAClB,GAAG,MAAM,KACT,GAAG,MAAM,MACT,GAAG,MAAM,MACT,GAAG,MAAM,OACT,GAAG,MAAM,KACb,EACMjS,EAAS,IAAI,GAAG,OAAO,UAAY,CACrC,IAAMkS,EAAY,CACd,KAAM,QACN,IAAK,CACD,YAAa,CACT,eACA,OACA,QACJ,CACJ,EACA,KAAM,CACF,YAAa,CAAC,iBAAiB,EAC/B,QAAS,EACb,EACA,QAAS,CACL,YAAa,CAAC,oBAAoB,EAClC,cAAe,UACf,eAAgB,WAChB,aAAc,OACd,iBAAkB,iBAClB,YAAa,GACb,QAAS,MACb,EACA,MAAO,CACH,YAAa,CAAC,kBAAkB,CACpC,EACA,OAAQ,CACJ,YAAa,CAAC,mBAAmB,EACjC,SAAU,GACV,SAAU,OACV,KAAM,SACN,cAActrB,EAAO,CACjB,OAAQA,EAAM,SAAU,CACpB,IAAK,OAAQ,MAAO,iBACpB,IAAK,QAAS,MAAO,iBACzB,CACJ,EACA,eAAeA,EAAO,CAClB,OAAQA,EAAM,SAAU,CACpB,IAAK,OAAQ,MAAO,eACpB,IAAK,QAAS,MAAO,eACzB,CACJ,CACJ,EACA,MAAO,CACH,YAAa,CAAC,kBAAkB,EAChC,SAAU,GACV,KAAM,QACV,EACA,MAAO,CACH,YAAa,CAAC,kBAAkB,EAChC,SAAU,SACV,KAAM,SACN,MAAO,OACP,YAAa,aACjB,EACA,wBAAyB,CAAC,QAAQ,CACtC,EACA,QAASurB,KAASF,EACdC,EAAUC,EAAM,IAAI,EAAE,MAAQA,EAElC,OAAOD,CACX,CAAC,EACG9f,EAAQ,KACRmH,EAAW,CAAC,EAChB,SAAS6Y,EAAYtK,EAAM,CACvB,OAAOpsB,EAAE,QAAQ22B,EAAYvK,CAAI,EAAG,aAAa,CACrD,CACA,SAASuK,EAAYvK,EAAM,CACvB,OAAIA,IAAS,OACF,CAAC9H,EAAO,KAAMA,EAAO,GAAG,EAGxB,CAACA,EAAO8H,CAAI,EAAG9H,EAAO,QAASA,EAAO,GAAG,CAExD,CACA,SAAS2D,EAAiBv1B,EAAS,CA90SvC,IAAAuD,EAAAmR,EAg1SQ,IADAA,GAAAnR,EAAA,GAAG,SAAQ,qBAAX,MAAAmR,EAAA,KAAAnR,EAAgCvD,GAC5BsN,EAAE,QAAQtN,EAAQ,KAAK,EAAG,CAC1B,IAAI+E,EAAQ,OAAO/E,EAAQ,KAAK,EAAE,MAAM,8BAA8B,EACtE,GAAI+E,EAAO,CACP/E,EAAQ,MAAQ,MAChB,IAAMkkC,EAAan/B,EAAM,CAAC,EACpBo/B,GAAgBp/B,EAAM,CAAC,EAC7B/E,EAAQ,OAARA,EAAQ,KAASmkC,IAAiBvS,EAAO,MACrCsS,IAAe,OACX,GAAG,MAAM,UAAU,IACnBlkC,EAAQ,UAAY,UAGnBkkC,IAAe,YACpBlkC,EAAQ,UAAY,OAE5B,CACJ,MAEQA,EAAQ,KACRA,EAAQ,MAAQ,MAEXsN,EAAE,aAAatN,EAAQ,MAAM,EAClCA,EAAQ,MAAQgkB,EAAM,IAAIhkB,EAAQ,OAAQ,CAAE,sBAAuB,EAAM,CAAC,EAErEA,EAAQ,OACbA,EAAQ,MAAQ,SAGhBA,EAAQ,MAAQ,UAGnBA,EAAQ,UACTA,EAAQ,QAAU,CAAC,GAEvBA,EAAQ,UAAYgkB,EAAM,IAAI,UAAW,CAAE,GAAGhkB,EAAS,sBAAuB,EAAM,CAAC,CACzF,CACA,SAASuvB,EAAMvvB,EAASga,EAAW,CAp3SvC,IAAAzW,GAq3SQ,GAAM,CAAE,KAAAm2B,CAAK,EAAI15B,EACX,CAAE,MAAA+jC,CAAM,EAAInS,EAAO8H,CAAI,EACvB0K,EAAU92B,EAAE,QAAQ22B,EAAYvK,CAAI,CAAC,EACvC2K,GAAyB,GAAG,QAAQ,kBACxC,OAAIA,IACAD,EAAQ,QAAQC,EAAsB,GAE1C9gC,GAAAvD,EAAQ,gBAAR,OAAAA,EAAQ,cAAkBsN,EAAE,SAAStN,EAAS,WAAW,GACzDA,EAAUsN,EAAE,aAAa,GAAG82B,EAAS,CAAE,KAAA1K,EAAM,MAAA1V,CAAM,EAAGhkB,CAAO,EACzDga,IACAha,EAAUga,EAAUha,CAAO,GAExB,IAAI+jC,EAAM/jC,CAAO,CAC5B,CACA,SAASskC,EAAiBxjC,EAAMyK,EAAM,CAClC,OAAOU,EAAE,aAAanL,EAAMyK,EAAM,CAAE,YAAa,CAAC,OAAO,CAAE,CAAC,CAChE,CACA,SAASg5B,EAAkBzjC,EAAMyK,EAAM,CACnC,OAAOU,EAAE,aAAanL,EAAMyK,EAAM,CAAE,YAAa,CAAC,QAAS,QAAS,UAAU,CAAE,CAAC,CACrF,CACA,SAASyjB,GAAQ,CACbhL,EAAM,MAAM,EACZmH,EAAW7d,EAAE,OAAO6d,EAAU,WAAW,CAC7C,CACA,eAAeqZ,EAAKxkC,EAAS,CACzB,OAAAA,EAAUsN,EAAE,QAAQtN,EAAS,CACzB,MAAO,MACP,sBAAuB,GACvB,SAAU,EACd,CAAC,GACY,MAAM,GAAG,OAAOA,CAAO,GACtB,KAClB,CACA,SAASykC,EAAIzkC,EAAS,CAClB,OAAO,IAAI,QAAQ,SAAU0kC,EAASz+B,EAAQ,CAC1CjG,EAAU,CACN,GAAGA,EACH,WAAamN,GAAUu3B,EAAQv3B,EAAM,KAAK,EAC1C,YAAcA,GAAUlH,EAAOkH,EAAM,KAAK,CAC9C,EACAq3B,EAAKxkC,CAAO,CAChB,CAAC,CACL,CACA,SAAS2kC,GAAc,CACnB,OAAOr3B,EAAE,IAAIu2B,EAAeE,GAASA,EAAM,SAAS,CAAC,EAAE,KAAK,CAChE,CACA,SAASa,EAAentB,EAAQ,CAC5B,OAAInK,EAAE,SAASmK,CAAM,EACV,UAAUA,KAGVA,EAAO,SAAS,CAE/B,CACA,SAASotB,EAAuB7/B,EAAS,CACrC,IAAIkJ,EAAW0jB,EAAO,SAAS,yBAAyB,EACxD,MAAO,CAAC,EAAE1jB,GAAYlJ,EAAQ,QAAQkJ,CAAQ,EAClD,CACA,GAAG,GAAG,wBAAyB,UAAY,CACvC8V,EAAM,KAAK,CACf,CAAC,EACD,GAAG,GAAG,sBAAuB,UAAY,CACrCA,EAAQ,IAAI,GAAG,UACnB,CAAC,EACD,GAAG,GAAG,qBAAsBgL,CAAK,EACjC,IAAM8V,EAAM,CACR,OAAAlT,EACA,YAAAoS,EACA,KAAAQ,EACA,MAAAjV,EACA,IAAAkV,EACA,iBAAAlP,EACA,iBAAA+O,EACA,kBAAAC,EACA,YAAAI,EACA,eAAAC,EACA,IAAI,OAAQ,CAAE,OAAO5gB,EAAM,MAAQ,EACnC,uBAAA6gB,CACJ,EACA,OAAAv3B,EAAE,SAASw3B,EAAK,CACZ,MACA,SACA,OACA,WACA,UACA,QACA,OACA,QACA,iBACJ,EAAG,IAAM9gB,CAAK,EACd1W,EAAE,SAASw3B,EAAK,CACZ,SACA,UACA,SACA,YACA,UACA,KACA,MACA,OACA,SACA,UACA,WACA,OACA,UACA,UACA,WACA,OACA,OACJ,EAAG,IAAM9gB,EAAM,OAAO,EACf8gB,CACX,EAAG,CAGG,EAEC,CAACh3B,EAAyBuI,EAAqBrI,IAAwB,CAE9E,aACAA,EAAoB,EAAEqI,CAAmB,CAInC,EAEC,CAACvI,EAAyBC,EAA0BC,IAAwB,CAEnFA,EAAoB,EAAE,EACtB,GAAG,KAAQ,UAAY,CACnB,IAAMV,EAAI,GAAG,KACPrB,EAAI,GAAG,QACP84B,EAAgB,IAAI,GAAG,cACzBC,EAAsB,KACpBC,EAAwB,CAAC,gBAAiB,iBAAkB,gBAAgB,EAC5EC,EAAyB,CAAC,UAAW,WAAW,EAChDC,EAA+B,CAAC,cAAe,cAAe,aAAc,kBAAmB,eAAgB,eAAgB,WAAW,EAChJ,SAASC,EAA2BC,EAAkBC,EAAoB,CACtE,OAAOh4B,EAAE,QAAQ+3B,EAAkBE,GAAmBD,EAAmB,IAAI91B,GAAgB+1B,EAAkB/1B,CAAY,CAAC,CAChI,CACA,IAAMoiB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,gBAAiBwT,EAA2BF,EAAwBC,CAA4B,EAAE,OAAOF,CAAqB,EAC9H,kBAAmB,CAAC,oBAAqB,cAAe,YAAa,uEAAwE,yBAA0B,qBAAsBh5B,EAAE,oBAAoB,MAAM,EAAGA,EAAE,oBAAoB,SAAS,CAAC,EAC5P,iBAAkB,CAAC,cAAc,EACjC,mBAAoB,CAAC,qBAAsB,WAAW,EACtD,iBAAkBm5B,EAA2BF,EAAwB,CAAC,cAAc,CAAC,EACrF,mBAAoB,CAAC,oBAAoB,EACzC,mBAAoBD,EAAsB,OAAO,CAAC,YAAa,cAAe,eAAgB,gBAAgB,CAAC,EAC/G,aAAc,EAClB,EAAE,EACF,SAASO,EAAkB1kC,EAAM,CAC7B,MAAO,CAAC,GAAG,QAAQ,aAAa,GAAK,CAAC2kC,EAAa3kC,CAAI,GAAK,CAAC4kC,EAAU5kC,CAAI,CAC/E,CACA,SAAS4kC,EAAU5kC,EAAM,CACrB,IAAMd,EAAU+iC,EAAoBjiC,CAAI,EACxC,GAAId,EAAQ,IACR,OAAIA,EAAQ,OAAS,OACjBA,EAAQ,MAAQ,QAEpBA,EAAQ,MAAQ,GACA,IAAI,GAAG,QAAQA,CAAO,EACvB,UAAU,CAEjC,CACA,SAASgvB,GAAQ,CACbgW,EAAsB,KACtBD,EAAc,MAAM,CACxB,CACA,IAAMY,EAAS,GAAG,SAAS,SAAU7kC,EAAMd,EAAS,CAChD,OAAO,GAAG,OAAO4lC,EAAc9kC,EAAMd,CAAO,CAAC,CACjD,CAAC,EACD,SAAS+iC,EAAoBjiC,EAAMd,EAAS8W,EAAe,CACvD9W,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B,IAAMgX,EAAS,IAAI,GAAG,cAAclW,EAAMd,EAAS,CAAE,GAAG8W,EAAe,KAAM,EAAM,CAAC,EACpF,OAAA9W,EAAQ,IAAM6lC,EAAU/kC,EAAMd,CAAO,EACrCA,EAAQ,OAAS8lC,EAAahlC,EAAMd,CAAO,EAC3CgX,EAAO,KAAK,SAAS,EACrBA,EAAO,KAAK,QAAQ,EACpBA,EAAO,gBAAgB,OAAO,EAC9BA,EAAO,gBAAgB,aAAa,EACpCA,EAAO,gBAAgB,YAAY,EACnCA,EAAO,gBAAgB,YAAY,EACnCA,EAAO,gBAAgB,OAAO,EAC9BA,EAAO,QAAQ,WAAW,EAC1BA,EAAO,QAAQ,YAAY,EAC3BA,EAAO,OAAO,aAAa,EAC3BA,EAAO,OAAO,iBAAiB,EAC/BA,EAAO,OAAO,SAAS,EAChBhX,CACX,CACA,SAAS4lC,EAAc9kC,EAAMd,EAAS8W,EAAe,CACjDhW,EAAO,GAAG,SAAS,IAAIA,CAAI,EAC3Bd,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B,IAAMgX,EAAS,IAAI,GAAG,cAAclW,EAAMd,EAAS,CAAE,KAAM,GAAM,GAAG8W,CAAc,CAAC,EACnF,OAAAE,EAAO,QAAQ+rB,CAAmB,EAClC/rB,EAAO,QAAQ,UAAU,EACzBhX,EAAQ,SAARA,EAAQ,OAAWc,GACnBkW,EAAO,QAAQ,MAAM,EACrBA,EAAO,QAAQ,WAAY,CAAE,QAAS,EAAK,CAAC,EAC5CA,EAAO,OAAO,UAAW,CAAE,KAAM,CAAC,aAAc,cAAc,CAAE,CAAC,EACjEA,EAAO,OAAO,QAAQ,EACtBA,EAAO,gBAAgB,UAAU,EACjCA,EAAO,OAAO,OAAO,EACrBA,EAAO,OAAO,SAAS,EACvBA,EAAO,OAAO,UAAU,EACxBA,EAAO,OAAO,UAAU,EACxBA,EAAO,QAAQ,SAAS,EACxBA,EAAO,QAAQ,WAAW,EAC1BA,EAAO,SAAS,UAAU,EAC1BA,EAAO,SAAS,aAAc,CAAE,QAAS,QAAS,CAAC,EACnDA,EAAO,SAAS,aAAc,CAAE,QAAS,QAAS,CAAC,EACnDA,EAAO,SAAS,YAAa,CAAE,QAAS,OAAQ,CAAC,EACjDA,EAAO,SAAS,UAAW,CAAE,QAAS,OAAQ,CAAC,EAC/CA,EAAO,QAAQ,MAAM,EACrBA,EAAO,OAAO,OAAO,EACrBA,EAAO,OAAO,WAAW,EACzBA,EAAO,KAAK,SAAS,EACrBA,EAAO,OAAO,MAAM,EACpBA,EAAO,OAAO,OAAO,EACrBA,EAAO,OAAO,UAAU,EACxBA,EAAO,OAAO,OAAO,EACrBA,EAAO,OAAO,MAAM,EACpBA,EAAO,gBAAgB,aAAa,EACpCA,EAAO,MAAM,GAAG,MAAM,iBAAkB,UAAU,EAClDA,EAAO,MAAM,GAAG,MAAM,kBAAmB,YAAY,EACrDA,EAAO,MAAM,GAAG,MAAM,kBAAmB,aAAa,EACtDA,EAAO,OAAO,aAAa,EAC3BA,EAAO,OAAO,cAAc,EAC5BA,EAAO,OAAO,gBAAgB,EAC9BA,EAAO,OAAO,iBAAiB,EAC/BA,EAAO,gBAAgB,SAAS,EAChCA,EAAO,gBAAgB,OAAO,EAC9BA,EAAO,QAAQ,YAAY,EAC3BA,EAAO,QAAQ,WAAW,EAC1BA,EAAO,gBAAgB,QAAQ,EAC/BA,EAAO,QAAQ,WAAW,EAC1BA,EAAO,OAAO,WAAW,EACzBA,EAAO,OAAO,eAAe,EAC7BA,EAAO,OAAO,YAAY,EAC1BA,EAAO,OAAO,gBAAgB,EAC9BA,EAAO,gBAAgB,SAAS,EAChCA,EAAO,gBAAgB,UAAU,EACjCA,EAAO,gBAAgB,OAAO,EAC9BA,EAAO,QAAQ,UAAU,EACzBA,EAAO,QAAQ,GAAG,OAAO,aAAa,EACjChX,EAAQ,aACTA,EAAQ,WAAa,GAAG,MAAM,MAAM,iBAAkB,CAAE,IAAK,gBAAiB,CAAC,GAE5EA,CACX,CACA,SAAS+lC,EAAQjlC,EAAMd,EAAS,CAC5Bc,EAAO,GAAG,SAAS,IAAIA,CAAI,EAC3B,IAAIytB,EAAQyX,EAAallC,CAAI,EAC7B,GAAIytB,EACA,OAAO,QAAQ,OAAO,IAAI,GAAG,MAAMA,CAAK,CAAC,EAE7C,IAAMjV,EAAa,GAAG,MAAM,MAAM,kBAAmB,CAAE,IAAK,CAAC,qBAAsBxY,CAAI,CAAE,CAAC,EAC1F,OAAO6kC,EAAO7kC,EAAM,CAChB,UAAW,GACX,GAAGd,EACH,WAAAsZ,EACA,QAAS,EACb,CAAC,CACL,CACA,SAAS0sB,EAAallC,EAAM,CACxB,GAAI,CAACmlC,EAAOnlC,CAAI,EACZ,MAAO,iCAEf,CACA,SAASglC,EAAahlC,EAAMd,EAAU,CAAC,EAAG,CACtC,OAAOsN,EAAE,gBAAgBtN,EAAQ,QAAUc,EAAK,aAAa,WAAW,GAAKA,EAAK,aAAa,aAAa,CAAC,CACjH,CACA,SAAS+kC,EAAU/kC,EAAMd,EAAU,CAAC,EAAG,CACnC,IAAMD,EAAMC,EAAQ,KAAOc,EAAK,aAAa,SAAS,GAAKA,EAAK,aAAa,MAAM,EACnF,GAAIf,IAAQ,IACR,OAAOA,CAEf,CACA,SAAS0lC,EAAa3kC,EAAM,CACxB,OAAAA,EAAO,GAAG,SAAS,IAAIA,CAAI,EACpB8wB,EAAO,QAAQ9wB,EAAM,iBAAiB,CACjD,CACA,SAASolC,EAAeplC,EAAM,CACrB2kC,EAAa3kC,CAAI,GAClBA,EAAK,aAAa,YAAa,EAAE,CAEzC,CACA,SAASqlC,EAAcrlC,EAAM,CACrBA,EAAK,QAAQ,iBAAiB,IAGlCmL,EAAE,gBAAgBnL,EAAM,CACpB,SAAU,IACV,KAAM,OACN,eAAgB,EACpB,CAAC,EACDA,EAAK,iBAAiB,UAAW,SAAUqM,EAAO,CAC9C,GAAKA,EAAM,MAAQ,SAAaA,EAAM,MAAQ,QAC1C,OAAOi5B,EAAmBj5B,CAAK,CAEvC,CAAC,EACL,CACA,GAAG,MAAMykB,EAAO,WAAW,oBAAoB,EAAGuU,CAAa,EAC/D,SAASE,EAAkBl5B,EAAOrM,EAAM,CACpC,GAAIqM,EAAM,iBACN,MAAO,GAEX,IAAMm5B,EAAuB,iBAAiB,GAAG,KAAK,cAAc,IAC9DC,EAAep5B,EAAM,OAAO,QAAQm5B,CAAoB,EAC9D,MAAO,CAACC,GAAiBA,IAAiBzlC,CAC9C,CACA,SAAS0lC,EAAUC,EAAkB,CACjC,IAAMzhC,EAAUyhC,EAAiB,QAAQ7U,EAAO,SAAS,kBAAkB,CAAC,EAC5E,OAAO5sB,GAAW,CAAC0hC,GAAkB1hC,CAAO,CAChD,CACA,SAAS0hC,GAAkB5lC,EAAM,CAC7B,OAAO8wB,EAAO,QAAQ9wB,EAAM,oBAAoB,GAAK8wB,EAAO,QAAQ9wB,EAAM,mBAAmB,CACjG,CACA,SAAS6lC,GAAcnuB,EAAO,CAC1BA,EAAM,GAAG,QAAS,SAAUrL,EAAOnI,EAAS,CACxC,GAAK,GAAG,MAAM,aAAamI,CAAK,EAGhC,OAAIq5B,EAAUxhC,CAAO,GAAKggC,EACtB,GAAG,MAAM,KAAK73B,CAAK,EAEdqL,EAAM,mBAAmBrL,CAAK,GAAK,CAACy5B,EAAgBz5B,CAAK,GAC9Di5B,EAAmBj5B,CAAK,EAErB63B,EAAsB,IACjC,CAAC,EACDxsB,EAAM,GAAG,YAAa,SAAUrL,EAAOnI,EAAS,CACvC,GAAG,MAAM,aAAamI,CAAK,IAGhC63B,EAAsB73B,EAAM,OACxBq5B,EAAUxhC,CAAO,GACjBohC,EAAmBj5B,CAAK,EAEhC,CAAC,CACL,CACA,SAASy5B,EAAgBC,EAAY,CACjC,OAAO7B,GAAwBA,IAAwB6B,EAAW,MACtE,CACA,SAAST,EAAmBtW,EAAe,CACvC,IAAIgX,EAAiB,CAAC,UAAW,UAAW,SAAU,GAAG,GAAG,MAAM,YAAY,EACxE7W,EAAW,GAAG,MAAM,KAAKH,EAAe,WAAYgX,CAAc,EACxE,GAAG,KAAKhX,EAAc,OAAQG,EAAU,CAAE,IAAK,EAAM,CAAC,CAC1D,CACA,SAASgW,EAAOnlC,EAAM,CAClB,IAAME,EAAS8kC,EAAahlC,CAAI,EAChC,OAAO,GAAG,QAAQ,aAAaE,CAAM,CACzC,CACA,UAAG,GAAG,WAAY4wB,EAAO,WAAW,iBAAiB,EAAG,SAAUzkB,EAAOrM,EAAM,CACvEulC,EAAkBl5B,EAAOrM,CAAI,IAC7B,GAAG,MAAM,KAAKqM,EAAO,CAAE,IAAK,EAAK,CAAC,EAClC,GAAG,MAAMrM,EAAM,CAAE,cAAe,EAAK,CAAC,EACtC,GAAG,MAAM,wBAAwB6kC,EAAO7kC,CAAI,CAAC,EAErD,CAAC,EACD,GAAG,MAAM,cAAe,SAAUimC,EAAM,CACpC,IAAM74B,EAAW64B,EAAK,aAAa,WAAW,GAAK,eAC/CC,EAAY/6B,EAAE,IAAI86B,EAAM74B,CAAQ,EACpC,GAAI84B,EAAW,CACX,IAAMC,EAAYh7B,EAAE,QAAQ+6B,CAAS,EACrCC,EAAA,aAAAA,EAAA,WAAyBD,EAAU,aAAa,MAAM,GACtD/6B,EAAE,gBAAgB86B,EAAME,CAAS,EACjC,IAAMC,GAAcj7B,EAAE,UAAU+6B,CAAS,EACzCD,EAAK,UAAU,IAAI,GAAGG,EAAW,EACjChB,EAAea,CAAI,CACvB,CACJ,CAAC,EACD,GAAG,SAASnV,EAAO,WAAW,kBAAkB,EAAG,SAAU9wB,EAAM,CAC1D0kC,EAAkB1kC,CAAI,GACvBikC,EAAc,UAAUjkC,CAAI,CAEpC,CAAC,EACD,GAAG,GAAG,qBAAsBkuB,CAAK,EAC1B,CACH,OAAA2W,EACA,cAAAC,EACA,QAAAG,EACA,eAAAG,EACA,cAAAC,EACA,OAAAF,EACA,aAAAR,EACA,kBAAAY,EACA,aAAAP,EACA,cAAAa,GACA,OAAA/U,EACA,2BAAAwT,EACA,aAAAY,CACJ,CACJ,EAAG,EACH,GAAG,OAAS,GAAG,KAAK,MAGd,EAEC,CAACl4B,EAAyBuI,EAAqBrI,IAAwB,CAE9E,aACAA,EAAoB,EAAEqI,CAAmB,CAInC,EAEC,IAAM,CAEb,GAAG,KAAQ,UAAY,CACnB,IAAM/I,EAAI,GAAG,KACPrB,EAAI,GAAG,QACPk7B,EAA+B,CAAC,cAAe,cAAe,aAAc,iBAAiB,EAC7FvV,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,eAAgB,CAAC,kBAAmB,WAAY,QAAS,MAAM,EAC/D,eAAgB,CAAC,SAAU,6CAA8C,kCAAmC,UAAU,EACtH,gBAAiB,GAAG,KAAK,2BAA2B,CAAC,MAAM,EAAGuV,CAA4B,EAC1F,kBAAmB,CAAC,oBAAqB,WAAYl7B,EAAE,oBAAoB,QAAQ,CAAC,EACpF,sBAAuB,CAAC,qBAAsB,oBAAqB,sBAAuB,oBAAoB,EAC9G,iBAAkB,CAAC,QAAS,QAAQ,EACpC,gBAAiB,EACjB,kBAAmB,CAAC,QAAQ,CAChC,EAAE,EACF,SAASmX,EAAciV,EAAS,GAAI,CAChC,OAAOzG,EAAO,eAAe,IAAIjS,GAASA,EAAQ0Y,CAAM,EAAE,KAAK,CACnE,CACA,SAAS+O,EAAQpiC,EAAS,CACtB,OAAOA,EAAQ,QAAQoe,EAAc,CAAC,CAC1C,CACA,SAASikB,EAAWj5B,EAAM,CACtBA,EAAOnC,EAAE,IAAImC,CAAI,EACjB,IAAIsY,EAASza,EAAE,QAAQmC,EAAMgV,EAAc,CAAC,EAC5C,GAAIhV,EAAK,QAAQ,UAAU,EAAG,CAC1B,IAAMk5B,EAAuBlkB,EAAcnX,EAAE,aAAa,OAAQmC,EAAK,aAAa,IAAI,CAAC,CAAC,EACpFm5B,GAAgB,GAAG,SAAS,IAAID,EAAsB,CAAE,MAAOl5B,CAAK,CAAC,EAC3EsY,EAAO,KAAK,GAAG6gB,EAAa,EAC5B7gB,EAASpZ,EAAE,KAAKoZ,CAAM,CAC1B,CACA,OAAOA,CACX,CACA,SAAS8gB,EAAkBp5B,EAAM,CAC7B,OAAOnC,EAAE,QAAQmC,EAAMq5B,EAAqB,CAAC,CACjD,CACA,SAASC,EAAiBl6B,EAAM,CAC5B,IAAMU,EAAWu5B,EAAqB,EAChC9lB,EAAiB,SAAS,cAChC,OAAIA,GAAkBA,EAAe,OAASnU,GACtCmU,EAAe,QAAQzT,CAAQ,EACxByT,EAGR1V,EAAE,IAAIuB,EAAMU,CAAQ,CAC/B,CACA,SAASu5B,GAAuB,CAC5B,OAAO7V,EAAO,SAAS,uBAAuB,CAClD,CACA,IAAM+V,EAAS,GAAG,SAAS,CAACn6B,EAAMxN,IACvB,GAAG,OAAO4nC,EAAcp6B,EAAMxN,CAAO,CAAC,CAChD,EACD,SAAS4nC,EAAcp6B,EAAMxN,EAAS8W,EAAe,CACjDtJ,EAAOq6B,EAAQr6B,CAAI,EACnBxN,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B,IAAIgX,GAAS,IAAI,GAAG,cAAcxJ,EAAMxN,EAAS8W,CAAa,EAC9D,OAAAE,GAAO,QAAQ8wB,CAAkB,EACjC9wB,GAAO,OAAO,aAAc,CAAE,QAAS,GAAG,SAAS,YAAYxJ,CAAI,CAAE,CAAC,EACtEwJ,GAAO,gBAAgB,SAAS,EAChChX,EAAQ,aAARA,EAAQ,WAAe,GAAG,MAAM,MAAM,iBAAkB,CACpD,aAAcA,EAAQ,aACtB,IAAK,kBACL,OAAQA,EAAQ,MACpB,CAAC,GACDA,EAAQ,SAARA,EAAQ,OAAW,GAAG,SAAS,qBAAqBwN,CAAI,GAAKxN,EAAQ,cAAgBwN,GACrFwJ,GAAO,QAAQ,GAAG,KAAK,aAAa,EAC7BhX,CACX,CACA,SAAS+nC,EAAapoB,EAAO3f,EAAS8W,EAAgB,CAAC,EAAG,CA/0T9D,IAAAvT,GAg1TQvD,EAAUsN,EAAE,QAAQtN,CAAO,EAC3B,IAAIgX,GAAS,IAAI,GAAG,cAAc2I,EAAO3f,EAAS,CAAE,GAAG8W,EAAe,QAAS,GAAM,WAAY,WAAY,CAAC,EAC9GE,GAAO,QAAQ,UAAU,EACzBA,GAAO,gBAAgB,SAAS,EAChCA,GAAO,OAAO,OAAO,EACrBA,GAAO,OAAO,OAAO,EACrB,IAAI4a,GAAS,GAAG,KAAK,OACrB,OAAI5xB,EAAQ,QAAU,SAClBA,EAAQ,MAAQsN,EAAE,WAAWskB,GAAO,iBAAkBjS,CAAK,GAC3Dpc,GAAAvD,EAAQ,QAAR,OAAAA,EAAQ,MAAU4xB,GAAO,kBAEpB5xB,EAAQ,QAAU,WACvBA,EAAQ,MAAQsN,EAAE,WAAWskB,GAAO,kBAAmBjS,CAAK,GAEhE3f,EAAQ,SAARA,EAAQ,OAAW2f,GACZ3f,CACX,CACA,SAASgoC,EAAiBnoB,EAAW,CACjC,IAAI8B,EAAiB,SAAS,cAC1BsmB,EACAC,GAAW,CAAC,GAAGb,EAAWxnB,CAAS,EAAG,GAAG2nB,EAAkB3nB,CAAS,CAAC,EACzE,QAASsoB,MAAWD,GACZC,KAAYxmB,IACZsmB,EAAgBG,EAAUzmB,CAAc,GAE5C0mB,EAAkBF,EAAO,EAE7B,OAAIF,GACA,GAAG,MAAMA,EAAe,CAAE,MAAO,GAAM,cAAe,EAAK,CAAC,EAEzD,UAAY,CACfC,GAAS,QAAQI,CAAiB,CACtC,CACJ,CACA,SAASD,EAAkBF,EAAS,CAC3BA,EAAQ,iBACTA,EAAQ,iBAARA,EAAQ,eAAmB,GAC3BA,EAAQ,mBAAqBA,EAAQ,UAEzCA,EAAQ,iBACRA,EAAQ,SAAW,EACvB,CACA,SAASG,EAAkBH,EAAS,CAC5BA,EAAQ,iBACHA,EAAQ,UAITA,EAAQ,iBACHA,EAAQ,iBACTA,EAAQ,SAAWA,EAAQ,qBAL/BA,EAAQ,eAAiB,EASrC,CACA,SAASI,EAAav/B,EAAShJ,EAAS,CACpC,IAAIwoC,EAAcC,EAAoBzoC,CAAO,EAC7CsN,EAAE,OAAOtE,EAASw/B,CAAW,CACjC,CACA,SAASC,EAAoB,CAAE,QAAAxV,EAAS,OAAAxZ,CAAO,EAAG,CAC9C,GAAI,CAACwZ,EACD,OAAO3lB,EAAE,KACb,IAAIo7B,EAAiBjkC,IAAQ,CAAE,GAAG,KAAK,yDAA0DwuB,EAASxuB,EAAG,CAAG,EAC5GkkC,GAAY,IAAMlvB,GAAUivB,EAAc,QAAQ,EAClDE,GAAgB,IAAMC,EAASF,GAAU,CAAC,EAC1CG,GACJ,OAAI7V,IAAY,GACZ6V,GAAa,CAACF,GAAc,CAAC,EAExBt7B,EAAE,SAAS2lB,CAAO,IACvB6V,GAAa,GAAG,SAAS,QAAQF,GAAc,EAAG3V,EAAS,CAAE,OAAAxZ,CAAO,CAAC,GAElEnM,EAAE,SAASw7B,GAAW,IAAId,CAAgB,CAAC,CACtD,CACA,SAASF,EAAmBt6B,EAAMxN,EAAS8W,EAAe,CACtD9W,EAAUsN,EAAE,QAAQtN,CAAO,EAC3BwN,EAAOq6B,EAAQr6B,CAAI,EACnB,IAAMwJ,GAAS,IAAI,GAAG,cAAcxJ,EAAMxN,EAAS8W,CAAa,EAChEE,GAAO,OAAO,cAAe,CAAE,KAAM,SAAU,CAAC,EAChDA,GAAO,KAAK,SAAS,EACrB,IAAM2P,GAAS,GAAG,OAAO,SAASnZ,CAAI,EAChCu7B,GAAerB,EAAiBl6B,CAAI,EAC1C,OAAIu7B,KACA/oC,EAAQ,aAAe+oC,GACvBpiB,GAAO,SAASoiB,EAAY,EAC5B/oC,EAAQ,SAARA,EAAQ,OAAW+oC,GAAa,aAAa,YAAY,GACzD/oC,EAAQ,MAARA,EAAQ,IAAQ+oC,GAAa,aAAa,YAAY,IAE1DpiB,GAAO,OAAO3mB,EAAQ,MAAM,EAC5BA,EAAQ,OAAS2mB,GACjB3P,GAAO,OAAO,MAAO,CAAE,KAAM,SAAU,QAAS,GAAG,SAAS,OAAOxJ,CAAI,CAAE,CAAC,EAC1EwJ,GAAO,OAAO,SAAU,CACpB,KAAM,CAAC,YAAa,cAAe,QAAQ,EAC3C,QAAS,MACT,UAAW1J,EAAE,eACjB,CAAC,EACGtN,EAAQ,SAAW,QACnBA,EAAQ,IAAM,GAAG,OAAO,SAASA,EAAQ,GAAG,GAEzCA,CACX,CACA,GAAG,GAAG,WAAYynC,EAAsB,SAAUt6B,EAAO67B,EAAQ,CAC7D,IAAMx7B,EAAOq6B,EAAQmB,CAAM,EACvBx7B,GAAQy7B,EAAcz7B,CAAI,GAC1Bw7B,EAAO,MAAM,CAErB,CAAC,EACD,SAASE,EAAM96B,KAASxO,EAAM,CAC1BwO,EAAO,GAAG,QAAQ,IAAIA,CAAI,EAC1B,IAAM5H,EAAW8G,EAAE,gBAAgB1N,CAAI,GAAKupC,EAAyB/6B,CAAI,GAAK,GAAG,KAAK,kCAAkC,EACpHpO,GAAUsN,EAAE,eAAe1N,CAAI,EAC7BwpC,GAAU,IAAI,GAAG,aAAah7B,EAAMpO,GAASwG,CAAQ,EAC3D,OAAA4iC,GAAQ,MAAM,EACP,IAAMA,GAAQ,KAAK,CAC9B,CACA,SAASD,EAAyBnkC,EAAS,CACvC,IAAIqkC,EAAcrkC,EAAQ,aAAa,UAAU,EACjD,GAAIqkC,EACA,OAAO,GAAG,kBAAkB,WAAWA,CAAW,EAAE,WAAW,QAAS,MAAM,EAAE,KAAKrkC,CAAO,CAEpG,CACA,SAASskC,EAAWn+B,EAAQnL,EAAU,CAAC,EAAG,CAEtC,OAAOkpC,EAAM/9B,EAAQ,CAAE,QAAAnL,EAAS,MAAO,EAAK,EAD3B,CAACupC,GAAOrtB,KAAkByrB,EAAOx8B,EAAQ+Q,EAAa,CAChB,CAC3D,CACA,SAASstB,GAAoB,CA78TjC,IAAAjmC,EAAAmR,EA88TQ,QAAOA,GAAAnR,EAAA,GAAG,SAAQ,6BAAX,YAAAmR,EAAA,KAAAnR,KAA6CquB,EAAO,cAC/D,CACA,SAASwW,EAAUzoB,EAAO,CACtB,OAAO8pB,EAAkB9pB,CAAK,EAAE,OACpC,CACA,SAAS8pB,EAAkB9pB,EAAO,CAC9B,OAAOrS,EAAE,WAAWk8B,EAAkB,EAAG,SAAUE,EAAe,CAC9D,IAAIxb,EAAQvO,EAAM,QAAQ+pB,CAAa,EACvC,GAAIxb,EAAO,CACP,IAAIyb,GAAyB,GAAG,SAAS,YAAYzb,CAAK,EACtD0b,GAAyB,GAAG,SAAS,YAAYjqB,CAAK,EACtDkqB,GAAsBD,IAA2B1b,IAAUvO,GAAU,GAAG+pB,SAAqBE,MAC7Fz+B,GAASw+B,IAA0BE,GACvC,GAAI1+B,GACA,MAAO,CACH,OAAAA,GACA,QAAS+iB,EACT,OAAQvO,CACZ,CAER,CACJ,CAAC,CACL,CACA,SAASmqB,KAAYlqC,EAAM,CACvB,IAAII,EAAU+pC,EAAkB,GAAGnqC,CAAI,EAEvC,OADgB,GAAG,cAAc,WAAWI,EAAQ,MAAM,EACzC,SAASA,CAAO,CACrC,CACA,SAAS+pC,EAAkBC,KAAmBpqC,EAAM,CAChD,IAAMI,EAAUsN,EAAE,eAAe1N,CAAI,EACrC,OAAII,EAAQ,OACRA,EAAQ,SAARA,EAAQ,OAAW,GAAG,SAAS,SAASgqC,CAAc,GAGtDhqC,EAAQ,SAARA,EAAQ,OAAW,GAAG,SAAS,IAAIgqC,CAAc,GAE9ChqC,CACX,CACA,SAASiqC,GAAetqB,EAAO,CAC3B,IAAIpd,EACAqa,EACJ,GAAI+C,EAAM,QAAQ,sBAAsB,EAChCA,EAAM,SACNpd,EAAQod,EAAM,MACd/C,EAAO,YAGPA,EAAO,qBAGN+C,EAAM,QAAQ,mBAAmB,EAAG,CACzC,IAAMnS,GAAOq7B,EAASlpB,CAAK,EACrBuqB,GAAYvqB,EAAM,aAAa,MAAM,EACrCwqB,GAAgB38B,GAAK,cAAc,oBAAoBvB,EAAE,aAAa,OAAQi+B,EAAS,WAAW,EACpGC,IACAvtB,EAAO,WACPra,EAAQ4nC,GAAc,OAGtBvtB,EAAO,YAEf,MAEIra,EAAQod,EAAM,MAElB,IAAMlO,GAAS,CAAC,EAChB,OAAInE,EAAE,UAAU/K,CAAK,GACjBkP,GAAO,KAAKlP,CAAK,EACjBkP,GAAO,KAAK,UAAU,GAGtBA,GAAO,KAAK,QAAQ,EAEpBnE,EAAE,UAAUsP,CAAI,GAChBnL,GAAO,KAAKmL,CAAI,EAEbnL,EACX,CACA,SAAS24B,GAAcC,EAAUrqC,EAAU,CAAC,EAAG,CAC3C,IAAMsqC,EAAiBtqC,EAAQ,QAAUA,EAAQ,QAAUqqC,EAAS,aAAa,WAAW,EACtF78B,GAAOq7B,EAASwB,CAAQ,EAC9BC,GAAkB,GAAG,KAAK,gCAAiCD,CAAQ,EACnE,IAAME,GAAcN,GAAeI,CAAQ,EAC3C,QAASl/B,MAAU,GAAG,SAAS,IAAIqC,GAAM88B,CAAc,EACnDE,EAAar/B,GAAQo/B,EAAW,CAExC,CACA,IAAMC,EAAe,GAAG,SAAS,SAAUr/B,EAAQo/B,EAAa,CAC5D,IAAI17B,EACJ07B,MAAgBN,GAAeQ,EAAsBt/B,CAAM,CAAC,GAC5D,IAAIu/B,GAAav/B,EAAO,aAAa,aAAa,EAClD,GAAIu/B,GACAA,GAAaC,EAAkBD,EAAU,EACzC77B,EAAOvB,EAAE,UAAUi9B,EAAaG,EAAU,EAAE,SAAW,MAEtD,CACD,IAAIE,GAAaz/B,EAAO,aAAa,aAAa,EAClDy/B,GAAaA,GAAaD,EAAkBC,EAAU,EAAI,CAAC,WAAY,UAAU,EACjF/7B,EAAOvB,EAAE,UAAUi9B,EAAaK,EAAU,EAAE,OAAS,CACzD,CACA3+B,EAAE,OAAOd,EAAQ0D,CAAI,EACrB1D,EAAO,UAAU,IAAI,aAAa,CACtC,CAAC,EACD,SAASw/B,EAAkB//B,EAAK,CAC5B,OAAO0C,EAAE,YAAY1C,EAAK,CAAE,KAAM,EAAK,CAAC,CAC5C,CACA,SAAS6/B,EAAsBt/B,EAAQ,CAEnC,IAAM0/B,EADOhC,EAAS19B,CAAM,EACL,iBAAiB,aAAa,EAKrD,OAJiBmC,EAAE,KAAKu9B,EAAW,SAAUR,GAAU,CACnD,IAAMC,GAAiBD,GAAS,aAAa,WAAW,EACxD,OAAOl/B,EAAO,QAAQm/B,EAAc,CACxC,CAAC,GACkB,GAAG,KAAK,0CAA2Cn/B,CAAM,CAChF,CACA,SAAS08B,EAAQiD,EAAmB9qC,EAAU,CAAC,EAAG,CAC9C,IAAMgF,EAAU,GAAG,SAAS,IAAI8lC,EAAmB9qC,CAAO,EAC1D,OAAOgF,EAAQ,MAAQA,EAAQ,QAAQ,MAAM,CACjD,CACA,SAAS6jC,EAAS7jC,EAAShF,EAAS,CAChC,OAAO6nC,EAAQ7iC,EAAShF,CAAO,GAAK,GAAG,MAAM,IAAIgF,CAAO,EAAE,OAC9D,CACA,SAAS+lC,GAAe,CACpB,OAAOz9B,EAAE,SAAS,SAAS,cAAe85B,CAAO,CACrD,CACA,SAAS6B,EAAcz7B,EAAM,CACzB,OAAAA,EAAO,GAAG,SAAS,IAAIA,CAAI,EACpBokB,EAAO,QAAQpkB,EAAM,iBAAiB,CACjD,CACA,GAAG,GAAG,SAAUokB,EAAO,WAAW,iBAAiB,EAAG,SAAUzkB,EAAOK,EAAM,CACrEL,EAAM,mBAEV,GAAG,MAAM,KAAKA,EAAO,CAAE,IAAK,EAAK,CAAC,EAClC,GAAG,MAAM,wBAAwBw6B,EAAOn6B,CAAI,CAAC,EACjD,CAAC,EACD,GAAG,SAASw9B,GAAyB,SAAUxqB,EAAa,CACxC,GAAG,cAAc,WAAWA,CAAW,EAC7C,eAAeA,CAAW,CACxC,CAAC,EACD,SAASwqB,IAA0B,CAC/B,OAAOpZ,EAAO,eAAe,IAAK1jB,GAAa,GAAGA,iCAAwCA,GAAU,EAAE,KAAK,IAAI,CACnH,CACA,UAAG,SAAS,cAAgBm8B,GAAa,CACrCD,GAAcC,CAAQ,CAC1B,CAAC,EACD,GAAG,GAAG,SAAU,cAAe,CAACY,EAAQZ,IAAa,CACjDD,GAAcC,CAAQ,CAC1B,CAAC,EACD,GAAG,SAAS,mEAAqErlC,GAAY,CACzFwlC,EAAaxlC,CAAO,CACxB,CAAC,EACD,GAAG,SAAS,aAAekmC,GAAgBhC,EAAMgC,CAAW,CAAC,EAC7D,GAAG,SAAS,kBAAoBA,GAAgB5B,EAAW4B,CAAW,CAAC,EAChE,CACH,OAAAtZ,EACA,OAAA+V,EACA,cAAAC,EACA,mBAAAE,EACA,aAAAC,EACA,cAAAkB,EACA,MAAAC,EACA,SAAAY,EACA,WAAAR,EACA,cAAAlmB,EACA,OAAQikB,EACR,QAAAD,EACA,cAAeI,EACf,aAAAuD,EACA,aAAAP,EACA,aAAAjC,EACA,QAASP,EACT,MAAOI,EACP,cAAeqB,EACf,eAAgBD,EAChB,IAAK3B,EACL,SAAAgB,CACJ,CACJ,EAAG,EACH,GAAG,OAAS,GAAG,KAAK,OACpB,GAAG,MAAQ,GAAG,KAAK,MACnB,GAAG,WAAa,GAAG,KAAK,WACxB,GAAG,SAAW,GAAG,KAAK,QAGhB,EAEC,IAAM,CAEb,GAAG,SAAY,UAAY,CACvB,IAAMv7B,EAAI,GAAG,KACPrB,EAAI,GAAG,QACP2lB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,eAAgB,CAAC,YAAY,EAC7B,aAAc,CAAC,WAAY,KAAK,CACpC,EAAE,EACF,SAAS5C,GAAQ,CACb,GAAG,MAAM,KAAK,iBAAmB,IACrC,CACA,IAAMmc,EAAe,YACfC,EAAgB,aAChBC,EAAgB,eACtB,SAASC,GAAc,CACnB,OAAO1Z,EAAO,SAAS,cAAc,CACzC,CACA,SAAS9xB,EAAaC,EAAK,CACvB,GAAIA,EACA,OAAOuN,EAAE,aAAavN,EAAK,CAAE,cAAe,GAAO,KAAM,EAAM,CAAC,CAExE,CACA,SAASwrC,EAASzqC,EAAM,CACpB,OAAOA,EAAK,iBAALA,EAAK,eAAmB,IAAI,GAAG,iBAAiBA,CAAI,EAC/D,CACA,SAAS0qC,EAAehxB,EAAU,CAC9B,IAAMixB,EAAc,CAAE,MAAO,GAAG,MAAM,IAAIjxB,CAAQ,CAAE,EACpD,GAAI,GAAG,SAAS,QAAQA,EAAU8wB,EAAY,EAAGG,CAAW,EAAG,CAC3D,IAAMC,EAAQ,GAAG,SAAS,QAAQlxB,EAAU6wB,EAAeI,CAAW,EACtEE,EAAYD,EAAOD,CAAW,CAClC,MAEIG,EAAsBpxB,EAAUixB,CAAW,CAEnD,CACA,SAASG,EAAsBpxB,EAAUxa,EAAS,CAC9C,IAAM6rC,EAAO,GAAG,SAAS,QAAQrxB,EAAU8wB,EAAY,EAAGtrC,CAAO,EAC3D0rC,EAAQp+B,EAAE,QAAQu+B,EAAMC,GAAO7/B,EAAE,QAAQ6/B,EAAKT,CAAa,CAAC,EAClEM,EAAYD,EAAO1rC,CAAO,CAC9B,CACA,SAAS+rC,EAA2BvzB,EAAO,CACvC,OAAOA,EAAM,kBAAoB1Y,EAAa0Y,EAAM,QAAQ,CAChE,CACA,SAASmzB,EAAYD,EAAO1rC,EAAU,CAAC,EAAG,CACtC,GAAI,CAAC0rC,EAAM,OACP,OAEJ,IAAMlzB,EAAQxY,EAAQ,OAAS,GAAG,MAAM,IAAI0rC,EAAM,CAAC,CAAC,EAChDM,EAAgBD,EAA2BvzB,CAAK,EACpD,GAAIwzB,EACA,QAASlrC,KAAQ4qC,EAAO,CACpB,IAAMO,EAAYV,EAASzqC,CAAI,EAAE,UAAUkrC,CAAa,EACxD,QAASE,KAAgBta,EAAO,eAC5B9wB,EAAK,UAAU,OAAOorC,EAAcD,CAAS,EAEjDhgC,EAAE,WAAWnL,EAAM,eAAgB,OAAQmrC,CAAS,CACxD,CAER,CACA,SAASE,EAAoBnnC,EAAS,CAClC,OAAOiH,EAAE,SAASjH,EAASqmC,CAAa,GAAKrmC,CACjD,CACA,SAASonC,EAAkBhzB,EAASpZ,EAAS,CACzC,GAAI,CAACA,EAAQ,SACT,OAEJ,IAAIq0B,EAAS1rB,GAAO2E,EAAE,OAAO8L,EAASzQ,CAAE,EACpC0jC,EAAgBC,EAAkClzB,CAAO,EACzDizB,GACAhY,EAAMpoB,EAAE,kBAAkBogC,EAAelB,CAAY,CAAC,EAE1D,QAAS3wB,KAAYpB,EAAQ,UACzBib,EAAMpoB,EAAE,kBAAkBuO,EAAU4wB,CAAa,CAAC,CAE1D,CACA,SAASkB,EAAkClzB,EAAS,CAChD,IAAIizB,EAAgBjzB,EAAQ,OAC5B,GAAIizB,EACA,OAAOF,EAAoBE,CAAa,CAEhD,CACA,SAASE,EAA6B/zB,EAAO,CACzC,IAAMg0B,EAAoBh0B,EAAM,iBAC1BwzB,EAAgBD,EAA2BvzB,EAAM,QAAQ,GAC3D,CAACg0B,GAAsBA,IAAsBR,KAC7CxzB,EAAM,iBAAmBwzB,EACzBJ,EAAsBpzB,EAAM,QAAS,CAAE,MAAAA,CAAM,CAAC,EAEtD,CACA,SAASi0B,GAA2B,CAChC,IAAMC,EAAa,GAAG,MAAM,MACxBA,EAAW,iBAAiB,GAC5BH,EAA6BG,CAAU,CAE/C,CACA,UAAG,GAAG,sBAAwBzB,GAAW,CACrCwB,EAAyB,CAC7B,CAAC,EACD,GAAG,GAAG,sBAAuB,CAACxB,EAAQ3oB,IAAgB,CAClDkpB,EAAelpB,CAAW,CAC9B,CAAC,EACD,GAAG,GAAG,4BAA8BnV,GAAU,CAC1Co/B,EAA6Bp/B,EAAM,KAAK,CAC5C,CAAC,EACD,GAAG,GAAG,qBAAsB6hB,CAAK,EAC1B,CACH,OAAA4C,EACA,kBAAAwa,EACA,aAAAtsC,CACJ,CACJ,EAAG,CAGG,EAEC,IAAM,CAEb,GAAG,MAAS,UAAY,CACpB,IAAMmM,EAAI,GAAG,QACP2lB,EAAS,IAAI,GAAG,OAAO,KAAO,CAChC,gBAAiB,CAAC,aAAa,EAC/B,aAAc,GAClB,EAAE,EACF,SAAS+a,EAAYzwB,EAAe,CAChC,GAAI,CAAE,UAAA0wB,EAAW,OAAAnzB,EAAQ,MAAOozB,CAAY,EAAI3wB,EAC5CtD,EAAQ,CAAE,QAAS,CAAC,EAAG,MAAO,CAAC,CAAE,EACrC,GAAI,CAACg0B,EACD,OAAOh0B,EACX,IAAIk0B,EAAiBlb,EAAO,SAAS,iBAAiB,EAChDmb,EAAkB,CAACF,EAAa,GAAGA,EAAY,UAAW,GAAGA,EAAY,WAAW,EAC1F,QAASG,KAAgBD,EAAiB,CACtC,IAAIE,EAAW,GAAG,SAAS,IAAID,EAAa,QAASF,EAAgB,CAAE,MAAOE,CAAa,CAAC,EAC5F,QAAShoC,KAAWioC,EAAU,CAC1B,IAAI/+B,EAAW,GAAG,SAAS,YAAYlJ,EAAS,CAAE,OAAAyU,CAAO,CAAC,EAC1D,GAAI,CAACvL,EAAU,CACX,GAAG,KAAK,cAAe,oCAAqClJ,CAAO,EACnE,QACJ,CACA,IAAIkoC,EAAUjhC,EAAE,KAAKjH,EAAS,aAAa,EACvCmoC,EAAmBD,EAAU,GAAG,MAAM,OAAOA,EAAS,CAAE,UAAWF,CAAa,CAAC,EAAI,CAACA,CAAY,EAClGvL,EAAgB,GAAG,OAAO,cAAcz8B,CAAO,EAC/C6mB,EAAc,GAAG,MAAM,MAAM,qBAAsB,CAAE,IAAK,EAAM,CAAC,EACjEuhB,EAAiBnhC,EAAE,aAAajH,EAAS,eAAgB,CAAE,YAAa,CAAC,cAAe,eAAe,CAAE,CAAC,EAC1GmV,EAAO,CACP,SAAAjM,EACA,WAAYlJ,EACZ,MAAOgoC,EACP,OAAAvzB,EACA,GAAGgoB,EACH,UAAW,OACX,QAAS,GACT,MAAO,GACP,YAAA5V,EACA,eAAAuhB,EACA,sBAAuBlxB,CAC3B,EACIixB,EAAiB,SAASN,CAAW,IAC1BA,IAAgBG,EAAep0B,EAAM,QAAUA,EAAM,OAC3D,KAAKuB,CAAI,CAEtB,CACJ,CACA,OAAAvB,EAAM,MAAQ,GAAG,SAAS,oBAAoBA,EAAM,KAAK,EAClDA,CACX,CACA,SAASy0B,EAAa7yB,EAAUxa,EAAU,CAAC,EAAG,CAC1C,GAAG,gBAAgB,YAAYwa,CAAQ,EAAE,WAAWxa,CAAO,CAC/D,CACA,SAASstC,EAAYtoC,EAAS,CAC1B,GAAG,gBAAgB,YAAYA,CAAO,EAAE,UAAU,CACtD,CACA,SAASuoC,EAAY/yB,EAAUxa,EAAU,CAAC,EAAG,CACzC,IAAMgX,EAAS,IAAI,GAAG,cAAcwD,EAAUxa,CAAO,EACrD,OAAAgX,EAAO,OAAO,WAAY,CAAE,QAAS4a,EAAO,YAAa,CAAC,EAC1D5a,EAAO,OAAO,UAAW,CAAE,QAAS,OAAQ,CAAC,EACtChX,CACX,CACA,UAAG,SAAS,iCAAkC,SAAUwa,EAAU,CAC9D,GAAG,gBAAgB,YAAYA,CAAQ,EAAE,wBAAwB,CACrE,CAAC,EACD,GAAG,MAAM,eAAgB,SAAUA,EAAU,CACzCvO,EAAE,gBAAgBuO,EAAU,CACxB,YAAa,GACb,cAAe,UACf,UAAW,GACX,KAAQ,OACZ,CAAC,EACDA,EAAS,iBAAiB,mBAAoB,SAAUrN,EAAO,CACtDlB,EAAE,QAAQkB,EAAM,WAAW,GAC5BA,EAAM,eAAe,CAC7B,CAAC,CACL,CAAC,EACM,CACH,OAAAykB,EACA,YAAA+a,EACA,aAAAU,EACA,YAAAC,EACA,YAAAC,CACJ,CACJ,EAAG,CAGG,EAEC,IAAM,EAEZ,UAAY,CACT,IAAMthC,EAAI,GAAG,QACb,SAASuhC,GAAU,CAz1UvB,IAAAjqC,EA01UQ,OAAO,OAAO,SACVA,EAAA,OAAO,SAAP,YAAAA,EAAe,MACvB,CACA,QAASwrB,IAAW,CAAC,SAAU,SAAS,EAAG,CACvC,IAAM0e,EAAc,MAAM1e,IACpB2e,EAAgB,QAAQ3e,IAC9B,GAAG,MAAM,KAAK2e,KAAkB,SAAU5sC,EAAM,CACxC0sC,EAAQ,GAAK,GAAG,KAAK,aAAa1sC,CAAI,IACtCmL,EAAE,eAAenL,EAAM2sC,EAAa3sC,EAAK,aAAa4sC,CAAa,CAAC,EACpE5sC,EAAK,gBAAgB4sC,CAAa,EAE1C,CAAC,CACL,CACJ,GAAG,CAGG,CACI,EAGIC,EAA2B,CAAC,EAGhC,SAAS3/B,EAAoB4/B,EAAU,CAEtC,IAAIC,EAAeF,EAAyBC,CAAQ,EACpD,GAAIC,IAAiB,OACpB,OAAOA,EAAa,QAGrB,IAAIC,EAASH,EAAyBC,CAAQ,EAAI,CAGjD,QAAS,CAAC,CACX,EAGA,OAAA3uC,EAAoB2uC,CAAQ,EAAEE,EAAQA,EAAO,QAAS9/B,CAAmB,EAGlE8/B,EAAO,OACf,CAMC9/B,EAAoB,EAAK+/B,GAAY,CACjC,OAAO,OAAW,KAAe,OAAO,aAC1C,OAAO,eAAeA,EAAS,OAAO,YAAa,CAAE,MAAO,QAAS,CAAC,EAEvE,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAK,CAAC,CAC7D,EAIX,IAAI13B,EAAsB,CAAC,EAG3BrI,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,CAAC,EACrBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,EAAE,EACtBA,EAAoB,GAAG,EACvB,GAAG,UAAU,SAAS,CAIb,GAAG,ECv/UZ,IAAOggC,GAAQ,IAAI,KAAkB,CAEnC,IAAI,UAAW,CACb,OAAO,SAAS,KAAK,aAAa,kBAAkB,CACtD,CAEA,IAAI,QAAS,CACX,OAAO,KAAK,WAAa,MAC3B,CAEA,IAAI,eAAgB,CAClB,OAAO,KAAK,WAAa,aAC3B,CAEA,IAAI,eAAgB,CAClB,OAAO,KAAK,QAAU,OAAO,QAAY,GAC3C,CAEF,EChBA,GAAG,MAAM,OAAO,MAAM,YAAc,aAEpC,GAAG,KAAK,OAAO,gBAAgB,KAAK,SAAS,EAC7C,GAAG,KAAK,OAAO,iBAAiB,KAAK,SAAS,EAC9C,GAAG,KAAK,OAAO,mBAAmB,KAAK,mCAAmC,EAE1E,GAAG,SAAS,OAAO,WAAa,GAEhC,GAAG,SAAS,OAAO,eAAe,KAAK,QAAQ,EAE/C,GAAG,KAAK,OAAO,gBAAgB,KAAK,MAAM,EAE1C,GAAG,QAAQ,OAAO,eAAiB,GAEnC,GAAG,OAAO,OAAO,QAAU,CAACC,GAAY,OAExC,GAAG,QAAQ,OAAO,YAAc,GAEhC,GAAG,GAAG,kBAAmB,IAAM,CAAE,SAAS,KAAK,UAAU,IAAI,UAAU,CAAE,CAAC,EAC1E,GAAG,GAAG,qBAAsB,IAAM,CAAE,SAAS,KAAK,UAAU,OAAO,UAAU,CAAE,CAAC,ECrBzE,SAASC,IAAW,CACzB,MAAO,CAAC,CAAC,SAAS,cAAc,sBAAsB,CACxD,CCEA,GAAG,KAAK,OAAO,iBAAiB,KAAK,SAAS,EAE9C,GAAG,GAAG,oBAAqB,CAAC,CAAE,SAAAC,CAAS,IAAM,CACvCA,EAAS,SAAW,KAAOC,GAAS,GAItC,GAAG,KAAK,KAAK,IAAM,CAOjB,GAAG,OAAO,CAER,MAAO,OACP,KAAM,GAGN,OAAQ,OACR,SAAUD,EAAS,KACnB,WAAY,GAGZ,SAAU,IACV,QAAS,EACX,CAAC,CACH,CAAC,CAEL,CAAC,EClCD,IAAME,GAAgB,CAAC,EAER,SAARC,GAA4BC,EAAK,CAEtC,SAASC,EAAgBD,EAAK,CAC5B,IAAME,EAAY,SAAS,cAAc,QAAQ,EACjD,OAAAA,EAAU,IAAMF,EACTE,CACT,CAEA,IAAMC,EAAgBL,GAAcE,CAAG,EACvC,GAAIG,EACF,OAAOA,EACF,CACL,IAAMC,EAAU,IAAI,QAAQ,CAACC,EAASC,IAAW,CAC/C,IAAMJ,EAAYD,EAAgBD,CAAG,EACrCE,EAAU,iBAAiB,OAAQG,CAAO,EAC1CH,EAAU,iBAAiB,QAASI,CAAM,EAC1C,SAAS,KAAK,YAAYJ,CAAS,CACrC,CAAC,EACD,OAAAJ,GAAcE,CAAG,EAAII,EACdA,CACT,CAEF,CCfA,IAAMG,GAAoB,iBACpBC,GAAa,0BACbC,GAAa,0BAEbC,GAAgB,CAAC,IAAK,OAAQ,IAAI,EAClCC,GAAc,IAAI,SAAS,iBAAiB,EAC5CC,GAAqBF,GAAc,IAAIG,GAAOF,GAAc,GAAGE,SAAWN,MAAuBM,CAAG,EAE1G,GAAG,SAASN,GAAmB,MAAOO,EAAS,CAAE,KAAAC,EAAM,aAAAC,EAAc,SAAAC,EAAW,GAAO,KAAAC,EAAO,EAAK,IAAM,CAEvG,GADA,MAAMC,GAAWH,CAAY,EACzB,CAACF,EAAQ,YAAa,OAE1B,IAAMM,EAAe,IAAI,OAAO,aAAa,CAAE,QAAAN,EAAS,KAAAI,EAAM,SAAAD,EAAU,KAAAF,CAAK,CAAC,EAE9ED,EAAQ,iBAAiBN,GAAY,IAAM,CAAEY,EAAa,QAAQ,CAAE,CAAC,EACrEN,EAAQ,iBAAiBL,GAAY,IAAM,CAAEW,EAAa,QAAQ,CAAE,CAAC,EAErE,GAAG,WAAWN,EAAS,IAAM,CAC3BM,EAAa,QAAQ,CACvB,CAAC,CACH,CAAC,EAED,GAAG,SAASR,GAAqBE,GAAY,CAE3C,IAAMM,EAAeN,EAAQ,cAAcP,EAAiB,EAExDa,IACFN,EAAQ,iBAAiB,aAAc,IAAM,CAAE,GAAG,KAAKM,EAAcZ,EAAU,CAAE,CAAC,EAClFM,EAAQ,iBAAiB,aAAc,IAAM,CAAE,GAAG,KAAKM,EAAcX,EAAU,CAAE,CAAC,EAGtF,CAAC,ECvCuE,IAAAY,GAAyB,SAAkDC,GAAyB,SCD5K,IAAMC,GAAN,KAAkB,CAEhB,aAAc,CACZ,KAAK,eAAiB,CAAC,CACzB,CAEA,UAAUC,EAAWC,EAAM,CACzB,IAAMC,EAAS,IAAIC,GAAcF,CAAI,EACrC,YAAK,eAAeD,CAAS,EAAIE,EAC1BA,CACT,CAEA,iBAAiBF,EAAW,CAC1B,OAAO,KAAK,eAAeA,CAAS,CACtC,CAEF,EAEMG,GAAN,KAAoB,CAElB,YAAYF,EAAM,CAChB,OAAW,CAACG,EAAKC,CAAK,IAAK,OAAO,QAAQJ,CAAI,EAC5C,OAAO,eAAe,KAAMG,EAAK,CAC/B,IAAK,IAAMC,EACX,aAAc,EAChB,CAAC,CAEL,CAEF,EAEOC,GAAQ,IAAIP,GC/BnB,IAAqBQ,GAArB,KAA6B,CAC3B,YAAYC,EAAUC,EAAe,EAAG,CACtC,KAAK,SAAWD,EAChB,KAAK,QAAU,KACf,KAAK,UAAY,KACjB,KAAK,oBAAsBC,EAC3B,KAAK,iBAAmBA,EACxB,KAAK,OAAS,GACd,KAAK,OAAO,CACd,CAEA,IAAI,SAAU,CACZ,IAAMC,EAAU,KAAK,MAAM,IAAM,KAAK,QAAU,KAAK,mBAAmB,EACxE,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,IAAKA,CAAO,CAAC,CAC3C,CAEA,IAAI,kBAAmB,CACrB,MAAO,KAAM,KAAK,OACpB,CAEA,IAAI,SAAU,CACZ,OAAO,KAAK,oBAAsB,KAAK,SACzC,CAEA,IAAI,WAAY,CACd,OAAO,KAAK,IAAI,EAAG,KAAK,iBAAmB,KAAK,iCAAiC,CAAC,CACpF,CAEA,OAAQ,CACN,KAAK,MAAM,EACX,KAAK,kBAAoB,KAAK,iCAAiC,EAC/D,KAAK,OAAS,EAChB,CAEA,QAAS,CACP,KAAK,MAAM,EACX,KAAK,UAAY,IAAI,KACrB,KAAK,QAAU,OAAO,WAAW,KAAK,SAAU,KAAK,gBAAgB,EACrE,KAAK,OAAS,EAChB,CAEA,OAAQ,CACN,OAAO,aAAa,KAAK,OAAO,CAClC,CAEA,kCAAmC,CACjC,OAAO,KAAK,OAAS,EAAI,IAAI,KAAS,KAAK,SAC7C,CACF,EC5CA,IAAMC,GAASC,GAAY,UAAU,kBAAmB,CACtD,aAAc,IACd,gBAAiB,GACnB,CAAC,EAED,GAAG,SAAS,kBAAoBC,GAAY,CAC1C,IAAMC,EAAYD,EAAQ,cAAc,kCAAkC,EACpEE,EAAcF,EAAQ,cAAc,wBAAwB,EAElE,SAASG,GAAkB,CACzB,IAAMC,EAAUC,EAAcA,EAAY,QAAU,EAE/CC,GAAY,QACf,GAAG,QAAQ,SAASL,EAAW,CAC7B,WAAY,SAASH,GAAO,2BAC5B,MAAO,GAAGM,IACZ,CAAC,CAEL,CAEA,SAASG,GAAsB,CACzBD,GAAY,SAKdH,EAAgB,EAChBK,EAAO,EAEX,CAEA,SAASA,GAAS,CAChB,OAAO,cAAcC,CAAuB,EAC5CJ,EAAY,MAAM,EAClB,GAAG,QAAQL,EAAS,aAAa,EAAE,KAAK,IAAM,CAAEA,EAAQ,OAAO,CAAE,CAAC,CACpE,CAEA,IAAMK,EAAc,IAAIK,GAAQH,EAAqBT,GAAO,YAAY,EAClEW,EAA0B,OAAO,YAAYN,EAAiBL,GAAO,eAAe,EAE1F,OAAAK,EAAgB,EAChBH,EAAQ,iBAAiB,aAAc,IAAM,CAAEK,EAAY,MAAM,CAAE,CAAC,EACpEL,EAAQ,iBAAiB,aAAc,IAAM,CAAEK,EAAY,OAAO,CAAE,CAAC,EACrEH,EAAY,iBAAiB,QAASM,CAAM,EAErCA,CACT,CAAC,EHjDiR,IAAAG,GAAyB,SAAkCC,GAAyB,SAA2CC,GAAyB,SID1a,IAAAC,GAAO,SAEP,SAASC,GAAaC,EAAQ,CAC5B,IAAMC,EAAWD,EAAO,aAAa,UAAU,EAE3CC,IACFD,EAAO,IAAMC,EACbD,EAAO,UAAU,IAAI,YAAY,EAErC,CAEA,SAASE,GAAiBF,EAAQ,CAChC,IAAMG,EAAqBH,EAAO,aAAa,SAAS,EACpDG,IACFH,EAAO,MAAM,gBAAkB,QAAQG,MACvCH,EAAO,UAAU,IAAI,gBAAgB,EAEzC,CAEA,SAAS,iBAAiB,mBAAqBI,GAAU,CACvD,IAAMJ,EAASI,EAAM,OACrBL,GAAaC,CAAM,EACnBE,GAAiBF,CAAM,CACzB,CAAC,EJtB4gB,IAAAK,GAAyB,SAAoCC,GAAyB,SKA3lB,IAAAC,GAAyB,SCDjC,IAAMC,GAAc,UACdC,GAAY,QACZC,GAAc,QACdC,GAAiB,8BACjBC,GAAe,2BACfC,GAAgB,WAChBC,GAAc,qCACdC,GAAe,QACfC,GAAe,iBACfC,GAAgB,wBAChBC,GAAkB,cAClBC,GAAoB,QACpBC,GAAa,cACbC,GAAc,gCACdC,GAAe,yBASfC,GAAuB,SAACC,EAAqB,CACjD,OACE,OAAOA,EAAc,KACrBA,EAAU,WAAa,YACvB,OAAOA,EAAU,gBAAmB,UACpCA,EAAU,eAAiB,GAC3B,OAAO,SAAa,GAExB,EAEA,SAASC,GAAYC,EAAoB,CACvC,OAAO,SAACC,EAAa,CAAc,OAAAA,EAAM,KAAKD,CAAS,CAApB,CACrC,CAwCc,SAAPE,GAA0BC,EAAyB,CACxD,IAAIC,EAAiB,CACnB,UAAW,GACX,SAAU,GACV,eAAgB,GAGd,CAACD,GAAS,OAAO,UAAc,IACjCC,EAAM,CACJ,UAAW,UAAU,UACrB,SAAU,UAAU,SACpB,eAAgB,UAAU,gBAAkB,GAErC,OAAOD,GAAU,SAC1BC,EAAI,UAAYD,EACPA,GAASA,EAAM,YACxBC,EAAM,CACJ,UAAWD,EAAM,UACjB,SAAUA,EAAM,SAChB,eAAgBA,EAAM,gBAAkB,IAI5C,IAAIH,EAAYI,EAAI,UAIhBC,EAAML,EAAU,MAAM,OAAO,EAC7B,OAAOK,EAAI,CAAC,EAAM,MACpBL,EAAYK,EAAI,CAAC,GAMnBA,EAAML,EAAU,MAAM,SAAS,EAC3B,OAAOK,EAAI,CAAC,EAAM,MACpBL,EAAYK,EAAI,CAAC,GAGnB,IAAMC,EAAQP,GAAYC,CAAS,EAE7BO,EAAyB,CAC7B,MAAO,CACL,MAAOD,EAAMxB,EAAW,GAAK,CAACwB,EAAMhB,EAAY,EAChD,KAAMgB,EAAMvB,EAAS,EACrB,OACE,CAACuB,EAAMxB,EAAW,IACjBwB,EAAMtB,EAAW,GAAKa,GAAqBO,CAAG,IAC/C,CAACE,EAAMhB,EAAY,EACrB,UAAWgB,EAAMrB,EAAc,EAC/B,QACGqB,EAAMxB,EAAW,GAChBwB,EAAMvB,EAAS,GACfuB,EAAMtB,EAAW,GACjBsB,EAAMrB,EAAc,GACpBY,GAAqBO,CAAG,IAC1B,CAACE,EAAMhB,EAAY,GAEvB,OAAQ,CACN,MAAOgB,EAAMlB,EAAW,EACxB,OAAQ,CAACkB,EAAMlB,EAAW,GAAKkB,EAAMjB,EAAY,EACjD,OAAQiB,EAAMlB,EAAW,GAAKkB,EAAMjB,EAAY,GAElD,QAAS,CACP,MACG,CAACiB,EAAMhB,EAAY,GAAKgB,EAAMlB,EAAW,GACzC,CAACkB,EAAMhB,EAAY,GAAKgB,EAAMpB,EAAY,EAC7C,OACE,CAACoB,EAAMhB,EAAY,GACnB,CAACgB,EAAMlB,EAAW,GAClB,CAACkB,EAAMpB,EAAY,IAClBoB,EAAMjB,EAAY,GAAKiB,EAAMnB,EAAa,GAC7C,OACG,CAACmB,EAAMhB,EAAY,IACjBgB,EAAMlB,EAAW,GAChBkB,EAAMjB,EAAY,GAClBiB,EAAMpB,EAAY,GAClBoB,EAAMnB,EAAa,IACvBmB,EAAM,aAAa,GAEvB,QAAS,CACP,MAAOA,EAAMhB,EAAY,EACzB,OAAQgB,EAAMf,EAAa,EAC3B,OAAQe,EAAMhB,EAAY,GAAKgB,EAAMf,EAAa,GAEpD,MAAO,CACL,WAAYe,EAAMd,EAAe,EACjC,aAAcc,EAAMb,EAAiB,EACrC,MAAOa,EAAMZ,EAAU,EACvB,QAASY,EAAMV,EAAY,EAC3B,OAAQU,EAAMX,EAAW,EACzB,OACEW,EAAMd,EAAe,GACrBc,EAAMb,EAAiB,GACvBa,EAAMZ,EAAU,GAChBY,EAAMV,EAAY,GAClBU,EAAMX,EAAW,GAErB,IAAK,GACL,MAAO,GACP,OAAQ,IAGV,OAAAY,EAAO,IACLA,EAAO,MAAM,QACbA,EAAO,QAAQ,QACfA,EAAO,QAAQ,QACfA,EAAO,MAAM,OAEfA,EAAO,MACLA,EAAO,MAAM,OAASA,EAAO,QAAQ,OAASA,EAAO,QAAQ,MAC/DA,EAAO,OACLA,EAAO,MAAM,QAAUA,EAAO,QAAQ,QAAUA,EAAO,QAAQ,OAE1DA,CACT,CC7LA,IAAIC,GAEJ,OAAO,iBAAiB,sBAAwBC,GAAU,CAGxDA,EAAM,eAAe,EACrBD,GAAgBC,EAIhB,GAAG,KAAK,eAAe,CACzB,CAAC,EAED,GAAG,SAAS,sBAAuB,CAACC,EAAS,CAAE,UAAAC,EAAW,oBAAAC,CAAoB,IAAM,CAClF,IAAMC,EAAgBH,EAAQ,cAAc,6BAA6B,EAEzE,SAASI,GAAgB,CACnBF,EACFF,EAAQ,OAAS,GACRK,GAAS,EAAE,MAAM,QAC1BL,EAAQ,OAAS,GACjBG,EAAc,iBAAiB,QAAS,IAAM,CAC5C,GAAG,MAAM,KAAK,CAAE,QAASF,EAAW,KAAM,OAAQ,CAAC,CACrD,CAAC,GACQI,GAAS,EAAE,KAAOP,KAC3BE,EAAQ,OAAS,GACjBG,EAAc,iBAAiB,QAAS,IAAM,CAC5CG,EAAkB,CACpB,CAAC,EAEL,CAEA,SAASA,GAAoB,CAC3BR,GAAc,OAAO,EACrBA,GAAc,WAAW,KAAMS,GAAiB,CAC1CA,EAAa,UAAY,aAC3BP,EAAQ,OAAS,GAErB,CAAC,CACH,CAEA,OAAAI,EAAc,EACP,GAAG,GAAG,gBAAiBA,CAAa,CAC7C,CAAC,EF5CmJ,IAAAI,GAAyB,SAAkDC,GAAyB,SGCzO,SAARC,IAAiC,CACtC,GAAM,CAAE,MAAAC,EAAO,OAAAC,CAAO,EAAIC,GAAS,EAEnC,OAAIF,EACK,QACEC,GAAU,UAAU,UAAU,MAAM,kBAAkB,EACxD,SAEA,SAEX,CCVA,GAAG,SAAS,2BAA6BE,GAAY,CAE/CC,GAAc,IAAM,WACtB,GAAG,KAAK,KAAK,IAAM,CACjBD,EAAQ,MAAM,CAChB,CAAC,CAGL,CAAC,ECVD,IAAIE,GAAE,IAAI,IAAI,SAASC,GAAEA,EAAE,CAAC,IAAIC,EAAEF,GAAE,IAAIC,CAAC,EAAEC,GAAGA,EAAE,QAAQ,CAAC,CAAC,SAASA,GAAED,EAAE,CAAC,IAAIC,EAAEF,GAAE,IAAIC,CAAC,EAAEC,GAAGA,EAAE,OAAO,CAAC,CAAC,IAAIC,GAAE,KAAkB,OAAO,OAApB,MAA6BA,GAAE,SAASH,EAAE,CAAC,OAAOA,CAAC,GAAG,QAAQ,SAASA,EAAE,CAAC,OAAOA,CAAC,EAAEG,GAAE,OAAO,SAASH,EAAE,CAAC,OAAOA,CAAC,KAAKG,GAAE,SAASF,EAAEC,EAAE,CAAC,OAAOD,GAAG,MAAM,UAAU,QAAQ,KAAKA,EAAE,OAAOA,EAAE,CAACA,CAAC,EAAE,SAASA,EAAE,CAAC,OAAO,SAASA,EAAE,CAAC,GAAGA,GAAGA,EAAE,UAAuBA,EAAE,WAAf,YAAyB,CAACD,GAAE,IAAIC,CAAC,EAAE,CAAC,IAAI,EAAEE,EAAE,KAAKC,EAAE,OAAO,iBAAiBH,CAAC,EAAEI,GAAG,EAAEJ,EAAE,MAAM,UAAU,CAACK,EAAE,CAAC,uBAA4B,IAAL,IAAQ,CAACL,EAAE,MAAM,WAAW,CAAC,EAAE,iBAAiB,IAAI,CAAC,EAAE,EAAEA,EAAE,KAAK,GAAGM,EAAE,SAASL,EAAE,CAACD,EAAE,oBAAoB,mBAAmBM,CAAC,EAAEN,EAAE,oBAAoB,kBAAkBO,CAAC,EAAEP,EAAE,oBAAoB,QAAQI,CAAC,EAAE,OAAO,oBAAoB,SAASG,CAAC,EAAE,OAAO,KAAKN,CAAC,EAAE,QAAQ,SAASF,EAAE,CAAC,OAAOC,EAAE,MAAMD,CAAC,EAAEE,EAAEF,CAAC,CAAC,CAAC,EAAEA,GAAE,OAAOC,CAAC,CAAC,EAAE,KAAKA,EAAE,CAAC,OAAOA,EAAE,MAAM,OAAO,OAAOA,EAAE,MAAM,OAAO,UAAUA,EAAE,MAAM,UAAU,UAAUA,EAAE,MAAM,UAAU,UAAUA,EAAE,MAAM,UAAU,SAASA,EAAE,MAAM,QAAQ,CAAC,EAAEA,EAAE,iBAAiB,mBAAmBM,CAAC,EAAEN,EAAE,iBAAiB,kBAAkBO,CAAC,EAAEP,EAAE,iBAAiB,QAAQI,CAAC,EAAE,OAAO,iBAAiB,SAASG,CAAC,EAAEP,EAAE,MAAM,UAAU,SAASA,EAAE,MAAM,SAAS,aAAaD,GAAE,IAAIC,EAAE,CAAC,QAAQM,EAAE,OAAOC,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,SAASF,EAAEN,EAAE,CAAC,IAAIE,EAAEG,EAAEE,EAAEP,EAAE,iBAAiBQ,EAAWD,IAAT,OAAW,KAAKA,EAAEE,EAAET,EAAE,uBAAuBU,EAAWD,IAAT,QAAYA,EAAEE,EAAEP,EAAE,UAAU,GAAOH,EAAE,eAAN,IAAkCG,EAAE,SAAf,WAAsBH,EAAE,MAAM,OAAO,OAAgBG,EAAE,SAAX,SAAoBH,EAAE,MAAM,OAAO,cAAcS,IAAIR,EAAE,SAASF,EAAE,CAAC,QAAQC,EAAE,CAAC,EAAED,GAAGA,EAAE,YAAYA,EAAE,sBAAsB,SAASA,EAAE,WAAW,WAAWC,EAAE,KAAK,CAACD,EAAE,WAAWA,EAAE,WAAW,SAAS,CAAC,EAAEA,EAAEA,EAAE,WAAW,OAAO,UAAU,CAAC,OAAOC,EAAE,QAAQ,SAASD,EAAE,CAAC,IAAIC,EAAED,EAAE,CAAC,EAAEE,EAAEF,EAAE,CAAC,EAAEC,EAAE,MAAM,eAAe,OAAOA,EAAE,UAAUC,EAAED,EAAE,MAAM,eAAe,IAAI,CAAC,CAAC,CAAC,EAAEA,CAAC,EAAEA,EAAE,MAAM,OAAO,IAAII,EAAkBD,EAAE,YAAlB,cAA4BH,EAAE,cAAc,WAAWG,EAAE,UAAU,EAAE,WAAWA,EAAE,aAAa,GAAGH,EAAE,aAAa,WAAWG,EAAE,cAAc,EAAE,WAAWA,EAAE,iBAAiB,EAAWA,EAAE,YAAX,QAAsBC,EAAE,WAAWD,EAAE,SAAS,GAAcA,EAAE,YAAb,WAAyBH,EAAE,MAAM,SAAS,UAAUI,EAAE,WAAWD,EAAE,SAAS,GAAcA,EAAE,YAAb,WAAyBH,EAAE,MAAM,SAAS,UAAUA,EAAE,MAAM,OAAOI,EAAE,KAAKG,IAAIP,EAAE,MAAM,UAAUO,GAAGN,GAAGA,EAAE,EAAEC,IAAIE,IAAIJ,EAAE,cAAc,IAAI,MAAM,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAEE,EAAEE,GAAGM,IAAIP,EAAE,UAAU,CAACI,GAAG,CAAC,IAAII,EAAER,EAAE,UAAqBA,EAAE,WAAb,WAAwBH,EAAE,MAAM,UAAoBW,IAAV,QAAY,MAAM,SAASN,EAAE,CAAC,iBAAiBM,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,CAAC,SAASJ,GAAG,CAACF,EAAE,CAAC,uBAAuB,GAAG,iBAAiB,IAAI,CAAC,CAAC,CAAC,EAAEL,CAAC,CAAC,CAAC,EAAEA,CAAC,GAAG,QAAQ,SAASD,EAAE,CAAC,OAAOA,GAAG,MAAM,UAAU,QAAQ,KAAKA,EAAE,OAAOA,EAAE,CAACA,CAAC,EAAEC,EAAC,EAAED,CAAC,EAAEG,GAAE,OAAO,SAASH,EAAE,CAAC,OAAOA,GAAG,MAAM,UAAU,QAAQ,KAAKA,EAAE,OAAOA,EAAE,CAACA,CAAC,EAAEE,EAAC,EAAEF,CAAC,GAAG,IAAII,GAAED,GAASU,GAAQT,GCEtmF,GAAG,SAAS,aAAeU,GAAY,CACrCC,GAASD,CAAO,CAClB,CAAC,ENHqa,IAAAE,GAAyB,SODxb,SAASC,GAAkBC,EAASC,EAAU,CACnD,GAAM,CAAE,MAAOC,EAAU,eAAgBC,CAAc,EAAIH,EAE3D,OAAAA,EAAQ,MAAQC,EACTG,GAAiBJ,EAASE,EAAUC,CAAa,CAC1D,CAEO,SAASC,GAAiBJ,EAASE,EAAUC,EAAe,CAEjE,IAAME,EAAYH,EAAS,OACrBI,EAAWN,EAAQ,MAAM,OACzBO,EAAmBJ,GAAiBG,EAAWD,GAErD,OAAAL,EAAQ,kBAAkBO,EAAkBA,CAAgB,EAErDA,IAAqBJ,CAC9B,CCdA,GAAG,SAAS,sBAAuB,CAACK,EAAS,CAAE,eAAAC,CAAe,IAAM,CAElE,IAAMC,EAAe,IAAI,OAAOD,EAAgB,GAAG,EAEnD,SAASE,EAAOC,EAAO,CACrB,OAAOA,EAAM,YAAY,EAAE,QAAQF,EAAc,EAAE,CACrD,CAEA,SAASG,GAAU,CACjB,IAAMC,EAAiBH,EAAOH,EAAQ,KAAK,EAC3CO,GAAkBP,EAASM,CAAc,CAC3C,CAEAN,EAAQ,iBAAiB,QAASK,CAAO,CAE3C,CAAC,ERhB2iB,IAAAG,GAAyB,SSDrkB,IAAqBC,GAArB,KAAsC,CACpC,aAAc,CACZ,KAAK,UAAY,CAAC,CACpB,CAEA,SAAU,CACR,KAAK,UAAU,QAASC,GAAa,CAAEA,EAAS,CAAE,CAAC,CACrD,CAEA,SAASA,EAAU,CACjB,KAAK,UAAU,KAAKA,CAAQ,CAC9B,CAEA,WAAWA,EAAU,CACnB,IAAMC,EAAQ,KAAK,UAAU,QAAQD,CAAQ,EAC7C,KAAK,UAAU,OAAOC,EAAO,CAAC,CAChC,CACF,ECfA,IAAMC,GAAN,KAAgB,CACd,aAAc,CACZ,KAAK,aAAe,EACpB,KAAK,OAAS,IAAIC,GAClB,KAAK,cAAgB,IAAIA,EAC3B,CAEA,WAAY,CACV,KAAK,cAAgB,EACrB,KAAK,cAAc,QAAQ,CAC7B,CAEA,UAAW,CACT,KAAK,cAAgB,EACrB,KAAK,cAAc,QAAQ,CAC7B,CAEA,IAAI,aAAc,CAChB,OAAO,KAAK,aAAe,CAC7B,CACF,EAEaC,GAAY,IAAIF,GCtB7B,GAAG,SAAS,6BAA+BG,GAAY,CACrD,SAASC,GAAiB,CACxBD,EAAQ,UAAU,OAAO,wBAAyBE,GAAU,WAAW,CACzE,CAEA,UAAG,GAAGF,EAAS,QAAS,UAAW,CAC7BA,EAAQ,UAAU,SAAS,uBAAuB,IAChD,QAAQ,mCAAgC,GAC1CE,GAAU,OAAO,QAAQ,EAE3B,MAAM,eAAe,EAEzB,CAAC,EAEDD,EAAe,EACfC,GAAU,cAAc,SAASD,CAAc,EAExC,UAAmB,CACxBC,GAAU,cAAc,WAAWD,CAAc,CACnD,CACF,CAAC,ECpBD,GAAG,SAAS,yBAA2BE,GAAY,CAEjD,IAAMC,EAAkBD,EAAQ,cAAc,+BAA+B,EACvEE,EAAqBF,EAAQ,cAAc,+CAA+C,EAC1FG,EAAiBH,EAAQ,cAAc,2CAA2C,EAClFI,EAAWC,GAAY,OAAS,OAAS,SAE3CC,EAEJ,SAASC,EAAKC,EAAQ,CACpBP,EAAgB,SAAS,CAAE,KAAMO,EAAQ,SAAAJ,CAAS,CAAC,CACrD,CAEA,SAASK,GAAqB,CAC5B,IAAMC,EAAUT,EAAgB,aAAe,EACzCU,EAAQV,EAAgB,YAAcA,EAAgB,YAAcA,EAAgB,aAAe,EAEzGC,EAAmB,gBAAgB,WAAYQ,CAAO,EACtDP,EAAe,gBAAgB,WAAYQ,CAAK,CAClD,CAEA,SAASC,GAAuB,CAE9B,OAAO,aAAaN,CAAW,EAC/BA,EAAc,OAAO,WAAWG,EAAoB,EAAE,CACxD,CAEAR,EAAgB,iBAAiB,SAAUW,CAAoB,EAC/DV,EAAmB,iBAAiB,QAAS,IAAM,CAAEK,EAAK,GAAKN,EAAgB,WAAW,CAAE,CAAC,EAC7FE,EAAe,iBAAiB,QAAS,IAAM,CAAEI,EAAKN,EAAgB,WAAW,CAAE,CAAC,EAEpFA,EAAgB,SAAS,EAAG,CAAC,EAC7BQ,EAAmB,CAErB,CAAC,EZnC2wB,IAAAI,GAA0B,SAAuCC,GAA0B,SaCv2B,GAAG,SAAS,SAAU,IAAM,CAC1BC,GAAU,UAAU,CACtB,CAAC,ECJD,IAAqBC,GAArB,KAAgC,CAC9B,YAAYC,EAASC,EAAMC,EAAiBC,EAAsBC,EAA6BC,EAA0B,CACvH,KAAK,MAAQ,KAAK,mBAAmBJ,CAAI,EACzC,KAAK,WAAa,KAAK,iBAAiB,EACxC,KAAK,cAAgBA,EAAK,MAAM,SAAS,EACzC,KAAK,qBAAuBE,EAC5B,KAAK,4BAA8BC,EACnC,KAAK,yBAA2BC,EAChC,KAAK,iBAAiBL,EAASG,EAAsBC,CAA2B,EAChF,KAAK,wBAAwBF,EAAiBG,CAAwB,CACxE,CAEA,kBAAmB,CACjB,OAAO,IAAI,MAAM,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,CAC3D,CAEA,mBAAmBJ,EAAM,CACvB,IAAIK,EAAUL,EAAK,MAAM,UAAU,EACnC,OAAAK,EAAUA,EAAQ,IAAIC,GAASA,EAAM,UAAU,EAAGA,EAAM,OAAS,CAAC,CAAC,EAC5DD,CACT,CAEA,iBAAiBN,EAASQ,EAAWC,EAAkB,CACrD,GAAG,QAAQ,MAAMD,EAAW,6BAA8B,CAAE,KAAM,eAAa,CAAC,EAC5ER,GACF,GAAG,QAAQ,MAAMQ,EAAW,0BAA2B,CAAE,KAAMR,CAAQ,CAAC,EAG1E,IAAIU,EAAI,EACR,QAAWC,KAAgB,KAAK,cAC9BH,EAAU,YAAY,SAAS,eAAeG,CAAY,CAAC,EACvDD,EAAI,KAAK,MAAM,QACjB,GAAG,QAAQ,MAAMF,EAAWC,EAAkB,CAC5C,qBAAsB,KAAK,MAAMC,GAAG,EACpC,kBAAmB,KAAK,UAC1B,CAAC,CAGP,CAEA,wBAAwBF,EAAWI,EAA2B,CAC5D,IAAMC,EAAgB,KAAK,MAAM,KAAK,CAACC,EAAGC,IAAM,GAAM,KAAK,OAAO,CAAC,EAEnE,QAAWC,KAAQH,EACjB,GAAG,QAAQ,MAAML,EAAWI,EAA2B,CAAE,KAAMI,CAAK,CAAC,CAEzE,CAEA,IAAI,aAAc,CAChB,IAAIC,EAAY,GAChB,QAAWC,KAAY,KAAK,qBAAqB,iBAAiB,KAAK,2BAA2B,EAAG,CACnG,IAAMC,EAAeD,EAAS,cAAc,KAAK,wBAAwB,EACrEC,EACYA,EAAa,cAAgBD,EAAS,QAAQ,aAE1D,KAAK,cAAcA,CAAQ,GAE3BD,EAAY,GACZ,KAAK,gBAAgBC,CAAQ,IAG/BD,EAAY,GACZ,KAAK,gBAAgBC,CAAQ,EAEjC,CACA,OAAOD,CACT,CAEA,cAAcC,EAAU,CACtBA,EAAS,UAAU,OAAO,YAAY,EACtCA,EAAS,UAAU,IAAI,UAAU,CACnC,CAEA,gBAAgBA,EAAU,CACxBA,EAAS,UAAU,OAAO,UAAU,EACpCA,EAAS,UAAU,IAAI,YAAY,CACrC,CAEA,IAAI,kBAAmB,CACrB,IAAIE,EAAY,KAAK,MAAM,CAAC,EAAE,OAC9B,QAAWJ,KAAQ,KAAK,MAClBA,EAAK,OAASI,IAChBA,EAAYJ,EAAK,QAGrB,OAAOI,CACT,CACF,ECjFA,SAASC,GAAQC,EAAQC,EAAgB,CACvC,IAAIC,EAAO,OAAO,KAAKF,CAAM,EAE7B,GAAI,OAAO,sBAAuB,CAChC,IAAIG,EAAU,OAAO,sBAAsBH,CAAM,EAE7CC,IACFE,EAAUA,EAAQ,OAAO,SAAUC,EAAK,CACtC,OAAO,OAAO,yBAAyBJ,EAAQI,CAAG,EAAE,UACtD,CAAC,GAGHF,EAAK,KAAK,MAAMA,EAAMC,CAAO,CAC/B,CAEA,OAAOD,CACT,CAEA,SAASG,GAAeC,EAAQ,CAC9B,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAS,UAAUD,CAAC,GAAK,KAAO,UAAUA,CAAC,EAAI,CAAC,EAEhDA,EAAI,EACNR,GAAQ,OAAOS,CAAM,EAAG,EAAI,EAAE,QAAQ,SAAUC,EAAK,CACnDC,GAAgBJ,EAAQG,EAAKD,EAAOC,CAAG,CAAC,CAC1C,CAAC,EACQ,OAAO,0BAChB,OAAO,iBAAiBH,EAAQ,OAAO,0BAA0BE,CAAM,CAAC,EAExET,GAAQ,OAAOS,CAAM,CAAC,EAAE,QAAQ,SAAUC,EAAK,CAC7C,OAAO,eAAeH,EAAQG,EAAK,OAAO,yBAAyBD,EAAQC,CAAG,CAAC,CACjF,CAAC,CAEL,CAEA,OAAOH,CACT,CAEA,SAASK,GAAQC,EAAK,CAGpB,OAAI,OAAO,QAAW,YAAc,OAAO,OAAO,UAAa,SAC7DD,GAAU,SAAUC,EAAK,CACvB,OAAO,OAAOA,CAChB,EAEAD,GAAU,SAAUC,EAAK,CACvB,OAAOA,GAAO,OAAO,QAAW,YAAcA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC3H,EAGKD,GAAQC,CAAG,CACpB,CAEA,SAASF,GAAgBE,EAAKH,EAAKI,EAAO,CACxC,OAAIJ,KAAOG,EACT,OAAO,eAAeA,EAAKH,EAAK,CAC9B,MAAOI,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAEDD,EAAIH,CAAG,EAAII,EAGND,CACT,CAEA,SAASE,IAAW,CAClB,OAAAA,GAAW,OAAO,QAAU,SAAUR,EAAQ,CAC5C,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAS,UAAUD,CAAC,EAExB,QAASE,KAAOD,EACV,OAAO,UAAU,eAAe,KAAKA,EAAQC,CAAG,IAClDH,EAAOG,CAAG,EAAID,EAAOC,CAAG,EAG9B,CAEA,OAAOH,CACT,EAEOQ,GAAS,MAAM,KAAM,SAAS,CACvC,CAEA,SAASC,GAA8BP,EAAQQ,EAAU,CACvD,GAAIR,GAAU,KAAM,MAAO,CAAC,EAC5B,IAAIF,EAAS,CAAC,EACVW,EAAa,OAAO,KAAKT,CAAM,EAC/BC,EAAKF,EAET,IAAKA,EAAI,EAAGA,EAAIU,EAAW,OAAQV,IACjCE,EAAMQ,EAAWV,CAAC,EACd,EAAAS,EAAS,QAAQP,CAAG,GAAK,KAC7BH,EAAOG,CAAG,EAAID,EAAOC,CAAG,GAG1B,OAAOH,CACT,CAEA,SAASY,GAAyBV,EAAQQ,EAAU,CAClD,GAAIR,GAAU,KAAM,MAAO,CAAC,EAE5B,IAAIF,EAASS,GAA8BP,EAAQQ,CAAQ,EAEvDP,EAAKF,EAET,GAAI,OAAO,sBAAuB,CAChC,IAAIY,EAAmB,OAAO,sBAAsBX,CAAM,EAE1D,IAAKD,EAAI,EAAGA,EAAIY,EAAiB,OAAQZ,IACvCE,EAAMU,EAAiBZ,CAAC,EACpB,EAAAS,EAAS,QAAQP,CAAG,GAAK,IACxB,OAAO,UAAU,qBAAqB,KAAKD,EAAQC,CAAG,IAC3DH,EAAOG,CAAG,EAAID,EAAOC,CAAG,EAE5B,CAEA,OAAOH,CACT,CAmCA,IAAIc,GAAU,SAEd,SAASC,GAAUC,EAAS,CAC1B,GAAI,OAAO,OAAW,KAAe,OAAO,UAC1C,MAAO,CAAC,CAAe,UAAU,UAAU,MAAMA,CAAO,CAE5D,CAEA,IAAIC,GAAaF,GAAU,uDAAuD,EAC9EG,GAAOH,GAAU,OAAO,EACxBI,GAAUJ,GAAU,UAAU,EAC9BK,GAASL,GAAU,SAAS,GAAK,CAACA,GAAU,SAAS,GAAK,CAACA,GAAU,UAAU,EAC/EM,GAAMN,GAAU,iBAAiB,EACjCO,GAAmBP,GAAU,SAAS,GAAKA,GAAU,UAAU,EAE/DQ,GAAc,CAChB,QAAS,GACT,QAAS,EACX,EAEA,SAASC,GAAGC,EAAIC,EAAOC,EAAI,CACzBF,EAAG,iBAAiBC,EAAOC,EAAI,CAACV,IAAcM,EAAW,CAC3D,CAEA,SAASK,GAAIH,EAAIC,EAAOC,EAAI,CAC1BF,EAAG,oBAAoBC,EAAOC,EAAI,CAACV,IAAcM,EAAW,CAC9D,CAEA,SAASM,GAETJ,EAEAK,EAAU,CACR,GAAKA,EAGL,IAFAA,EAAS,CAAC,IAAM,MAAQA,EAAWA,EAAS,UAAU,CAAC,GAEnDL,EACF,GAAI,CACF,GAAIA,EAAG,QACL,OAAOA,EAAG,QAAQK,CAAQ,EACrB,GAAIL,EAAG,kBACZ,OAAOA,EAAG,kBAAkBK,CAAQ,EAC/B,GAAIL,EAAG,sBACZ,OAAOA,EAAG,sBAAsBK,CAAQ,CAE5C,MAAE,CACA,MAAO,EACT,CAGF,MAAO,GACT,CAEA,SAASC,GAAgBN,EAAI,CAC3B,OAAOA,EAAG,MAAQA,IAAO,UAAYA,EAAG,KAAK,SAAWA,EAAG,KAAOA,EAAG,UACvE,CAEA,SAASO,GAETP,EAEAK,EAEAG,EAAKC,EAAY,CACf,GAAIT,EAAI,CACNQ,EAAMA,GAAO,SAEb,EAAG,CACD,GAAIH,GAAY,OAASA,EAAS,CAAC,IAAM,IAAML,EAAG,aAAeQ,GAAOJ,GAAQJ,EAAIK,CAAQ,EAAID,GAAQJ,EAAIK,CAAQ,IAAMI,GAAcT,IAAOQ,EAC7I,OAAOR,EAGT,GAAIA,IAAOQ,EAAK,KAElB,OAASR,EAAKM,GAAgBN,CAAE,EAClC,CAEA,OAAO,IACT,CAEA,IAAIU,GAAU,OAEd,SAASC,GAAYX,EAAIY,EAAMC,EAAO,CACpC,GAAIb,GAAMY,EACR,GAAIZ,EAAG,UACLA,EAAG,UAAUa,EAAQ,MAAQ,QAAQ,EAAED,CAAI,MACtC,CACL,IAAIE,GAAa,IAAMd,EAAG,UAAY,KAAK,QAAQU,GAAS,GAAG,EAAE,QAAQ,IAAME,EAAO,IAAK,GAAG,EAC9FZ,EAAG,WAAac,GAAaD,EAAQ,IAAMD,EAAO,KAAK,QAAQF,GAAS,GAAG,CAC7E,CAEJ,CAEA,SAASK,GAAIf,EAAIgB,EAAMC,EAAK,CAC1B,IAAIC,EAAQlB,GAAMA,EAAG,MAErB,GAAIkB,EAAO,CACT,GAAID,IAAQ,OACV,OAAI,SAAS,aAAe,SAAS,YAAY,iBAC/CA,EAAM,SAAS,YAAY,iBAAiBjB,EAAI,EAAE,EACzCA,EAAG,eACZiB,EAAMjB,EAAG,cAGJgB,IAAS,OAASC,EAAMA,EAAID,CAAI,EAEnC,EAAEA,KAAQE,IAAUF,EAAK,QAAQ,QAAQ,IAAM,KACjDA,EAAO,WAAaA,GAGtBE,EAAMF,CAAI,EAAIC,GAAO,OAAOA,GAAQ,SAAW,GAAK,KAExD,CACF,CAEA,SAASE,GAAOnB,EAAIoB,EAAU,CAC5B,IAAIC,EAAoB,GAExB,GAAI,OAAOrB,GAAO,SAChBqB,EAAoBrB,MAEpB,GAAG,CACD,IAAIsB,EAAYP,GAAIf,EAAI,WAAW,EAE/BsB,GAAaA,IAAc,SAC7BD,EAAoBC,EAAY,IAAMD,EAI1C,OAAS,CAACD,IAAapB,EAAKA,EAAG,aAGjC,IAAIuB,EAAW,OAAO,WAAa,OAAO,iBAAmB,OAAO,WAAa,OAAO,YAGxF,OAAOA,GAAY,IAAIA,EAASF,CAAiB,CACnD,CAEA,SAASG,GAAKhB,EAAKiB,EAASC,EAAU,CACpC,GAAIlB,EAAK,CACP,IAAImB,EAAOnB,EAAI,qBAAqBiB,CAAO,EACvCG,EAAI,EACJC,EAAIF,EAAK,OAEb,GAAID,EACF,KAAOE,EAAIC,EAAGD,IACZF,EAASC,EAAKC,CAAC,EAAGA,CAAC,EAIvB,OAAOD,CACT,CAEA,MAAO,CAAC,CACV,CAEA,SAASG,IAA4B,CACnC,IAAIC,EAAmB,SAAS,iBAEhC,OAAIA,GAGK,SAAS,eAEpB,CAYA,SAASC,GAAQhC,EAAIiC,EAA2BC,EAA2BC,EAAWC,EAAW,CAC/F,GAAI,GAACpC,EAAG,uBAAyBA,IAAO,QACxC,KAAIqC,EAAQC,EAAKC,EAAMC,EAAQC,EAAOC,EAAQC,EAmB9C,GAjBI3C,IAAO,QAAUA,EAAG,YAAcA,IAAO8B,GAA0B,GACrEO,EAASrC,EAAG,sBAAsB,EAClCsC,EAAMD,EAAO,IACbE,EAAOF,EAAO,KACdG,EAASH,EAAO,OAChBI,EAAQJ,EAAO,MACfK,EAASL,EAAO,OAChBM,EAAQN,EAAO,QAEfC,EAAM,EACNC,EAAO,EACPC,EAAS,OAAO,YAChBC,EAAQ,OAAO,WACfC,EAAS,OAAO,YAChBC,EAAQ,OAAO,aAGZV,GAA6BC,IAA8BlC,IAAO,SAErEoC,EAAYA,GAAapC,EAAG,WAGxB,CAACR,IACH,EACE,IAAI4C,GAAaA,EAAU,wBAA0BrB,GAAIqB,EAAW,WAAW,IAAM,QAAUF,GAA6BnB,GAAIqB,EAAW,UAAU,IAAM,UAAW,CACpK,IAAIQ,EAAgBR,EAAU,sBAAsB,EAEpDE,GAAOM,EAAc,IAAM,SAAS7B,GAAIqB,EAAW,kBAAkB,CAAC,EACtEG,GAAQK,EAAc,KAAO,SAAS7B,GAAIqB,EAAW,mBAAmB,CAAC,EACzEI,EAASF,EAAMD,EAAO,OACtBI,EAAQF,EAAOF,EAAO,MACtB,KACF,OAGOD,EAAYA,EAAU,YAInC,GAAID,GAAanC,IAAO,OAAQ,CAE9B,IAAI6C,EAAW1B,GAAOiB,GAAapC,CAAE,EACjC8C,EAASD,GAAYA,EAAS,EAC9BE,EAASF,GAAYA,EAAS,EAE9BA,IACFP,GAAOS,EACPR,GAAQO,EACRH,GAASG,EACTJ,GAAUK,EACVP,EAASF,EAAMI,EACfD,EAAQF,EAAOI,EAEnB,CAEA,MAAO,CACL,IAAKL,EACL,KAAMC,EACN,OAAQC,EACR,MAAOC,EACP,MAAOE,EACP,OAAQD,CACV,EACF,CAUA,SAASM,GAAehD,EAAIiD,EAAQC,EAAY,CAK9C,QAJIC,EAASC,GAA2BpD,EAAI,EAAI,EAC5CqD,EAAYrB,GAAQhC,CAAE,EAAEiD,CAAM,EAG3BE,GAAQ,CACb,IAAIG,EAAgBtB,GAAQmB,CAAM,EAAED,CAAU,EAC1CK,EAAU,OAQd,GANIL,IAAe,OAASA,IAAe,OACzCK,EAAUF,GAAaC,EAEvBC,EAAUF,GAAaC,EAGrB,CAACC,EAAS,OAAOJ,EACrB,GAAIA,IAAWrB,GAA0B,EAAG,MAC5CqB,EAASC,GAA2BD,EAAQ,EAAK,CACnD,CAEA,MAAO,EACT,CAWA,SAASK,GAASxD,EAAIyD,EAAUC,EAASC,EAAe,CAKtD,QAJIC,EAAe,EACfhC,EAAI,EACJiC,EAAW7D,EAAG,SAEX4B,EAAIiC,EAAS,QAAQ,CAC1B,GAAIA,EAASjC,CAAC,EAAE,MAAM,UAAY,QAAUiC,EAASjC,CAAC,IAAMkC,GAAS,QAAUH,GAAiBE,EAASjC,CAAC,IAAMkC,GAAS,UAAYvD,GAAQsD,EAASjC,CAAC,EAAG8B,EAAQ,UAAW1D,EAAI,EAAK,EAAG,CACvL,GAAI4D,IAAiBH,EACnB,OAAOI,EAASjC,CAAC,EAGnBgC,GACF,CAEAhC,GACF,CAEA,OAAO,IACT,CASA,SAASmC,GAAU/D,EAAIK,EAAU,CAG/B,QAFI2D,EAAOhE,EAAG,iBAEPgE,IAASA,IAASF,GAAS,OAAS/C,GAAIiD,EAAM,SAAS,IAAM,QAAU3D,GAAY,CAACD,GAAQ4D,EAAM3D,CAAQ,IAC/G2D,EAAOA,EAAK,uBAGd,OAAOA,GAAQ,IACjB,CAUA,SAASC,GAAMjE,EAAIK,EAAU,CAC3B,IAAI4D,EAAQ,EAEZ,GAAI,CAACjE,GAAM,CAACA,EAAG,WACb,MAAO,GAKT,KAAOA,EAAKA,EAAG,wBACTA,EAAG,SAAS,YAAY,IAAM,YAAcA,IAAO8D,GAAS,QAAU,CAACzD,GAAYD,GAAQJ,EAAIK,CAAQ,IACzG4D,IAIJ,OAAOA,CACT,CASA,SAASC,GAAwBlE,EAAI,CACnC,IAAImE,EAAa,EACbC,EAAY,EACZC,EAAcvC,GAA0B,EAE5C,GAAI9B,EACF,EAAG,CACD,IAAI6C,EAAW1B,GAAOnB,CAAE,EACpB8C,EAASD,EAAS,EAClBE,EAASF,EAAS,EACtBsB,GAAcnE,EAAG,WAAa8C,EAC9BsB,GAAapE,EAAG,UAAY+C,CAC9B,OAAS/C,IAAOqE,IAAgBrE,EAAKA,EAAG,aAG1C,MAAO,CAACmE,EAAYC,CAAS,CAC/B,CASA,SAASE,GAAcC,EAAKC,EAAK,CAC/B,QAAS5C,KAAK2C,EACZ,GAAKA,EAAI,eAAe3C,CAAC,GAEzB,QAAS6C,KAAOD,EACd,GAAIA,EAAI,eAAeC,CAAG,GAAKD,EAAIC,CAAG,IAAMF,EAAI3C,CAAC,EAAE6C,CAAG,EAAG,OAAO,OAAO7C,CAAC,EAI5E,MAAO,EACT,CAEA,SAASwB,GAA2BpD,EAAI0E,EAAa,CAEnD,GAAI,CAAC1E,GAAM,CAACA,EAAG,sBAAuB,OAAO8B,GAA0B,EACvE,IAAI6C,EAAO3E,EACP4E,EAAU,GAEd,EAEE,IAAID,EAAK,YAAcA,EAAK,aAAeA,EAAK,aAAeA,EAAK,aAAc,CAChF,IAAIE,EAAU9D,GAAI4D,CAAI,EAEtB,GAAIA,EAAK,YAAcA,EAAK,cAAgBE,EAAQ,WAAa,QAAUA,EAAQ,WAAa,WAAaF,EAAK,aAAeA,EAAK,eAAiBE,EAAQ,WAAa,QAAUA,EAAQ,WAAa,UAAW,CACpN,GAAI,CAACF,EAAK,uBAAyBA,IAAS,SAAS,KAAM,OAAO7C,GAA0B,EAC5F,GAAI8C,GAAWF,EAAa,OAAOC,EACnCC,EAAU,EACZ,CACF,OAGOD,EAAOA,EAAK,YAErB,OAAO7C,GAA0B,CACnC,CAEA,SAASgD,GAAOC,EAAKC,EAAK,CACxB,GAAID,GAAOC,EACT,QAASP,KAAOO,EACVA,EAAI,eAAeP,CAAG,IACxBM,EAAIN,CAAG,EAAIO,EAAIP,CAAG,GAKxB,OAAOM,CACT,CAEA,SAASE,GAAYC,EAAOC,EAAO,CACjC,OAAO,KAAK,MAAMD,EAAM,GAAG,IAAM,KAAK,MAAMC,EAAM,GAAG,GAAK,KAAK,MAAMD,EAAM,IAAI,IAAM,KAAK,MAAMC,EAAM,IAAI,GAAK,KAAK,MAAMD,EAAM,MAAM,IAAM,KAAK,MAAMC,EAAM,MAAM,GAAK,KAAK,MAAMD,EAAM,KAAK,IAAM,KAAK,MAAMC,EAAM,KAAK,CAC5N,CAEA,IAAIC,GAEJ,SAASC,GAASC,EAAUC,EAAI,CAC9B,OAAO,UAAY,CACjB,GAAI,CAACH,GAAkB,CACrB,IAAII,EAAO,UACPC,EAAQ,KAERD,EAAK,SAAW,EAClBF,EAAS,KAAKG,EAAOD,EAAK,CAAC,CAAC,EAE5BF,EAAS,MAAMG,EAAOD,CAAI,EAG5BJ,GAAmB,WAAW,UAAY,CACxCA,GAAmB,MACrB,EAAGG,CAAE,CACP,CACF,CACF,CAOA,SAASG,GAASC,EAAIC,EAAGC,EAAG,CAC1BF,EAAG,YAAcC,EACjBD,EAAG,WAAaE,CAClB,CAEA,SAASC,GAAMH,EAAI,CACjB,IAAII,EAAU,OAAO,QACjBC,EAAI,OAAO,QAAU,OAAO,MAEhC,OAAID,GAAWA,EAAQ,IACdA,EAAQ,IAAIJ,CAAE,EAAE,UAAU,EAAI,EAC5BK,EACFA,EAAEL,CAAE,EAAE,MAAM,EAAI,EAAE,CAAC,EAEnBA,EAAG,UAAU,EAAI,CAE5B,CAkBA,IAAIM,GAAU,WAAa,IAAI,KAAK,EAAE,QAAQ,EAE9C,SAASC,IAAwB,CAC/B,IAAIC,EAAkB,CAAC,EACnBC,EACJ,MAAO,CACL,sBAAuB,UAAiC,CAEtD,GADAD,EAAkB,CAAC,EACf,EAAC,KAAK,QAAQ,UAClB,KAAIE,EAAW,CAAC,EAAE,MAAM,KAAK,KAAK,GAAG,QAAQ,EAC7CA,EAAS,QAAQ,SAAUC,EAAO,CAChC,GAAI,EAAAC,GAAID,EAAO,SAAS,IAAM,QAAUA,IAAUE,GAAS,OAC3D,CAAAL,EAAgB,KAAK,CACnB,OAAQG,EACR,KAAMG,GAAQH,CAAK,CACrB,CAAC,EAED,IAAII,EAAWC,GAAe,CAAC,EAAGR,EAAgBA,EAAgB,OAAS,CAAC,EAAE,IAAI,EAGlF,GAAIG,EAAM,sBAAuB,CAC/B,IAAIM,EAAcC,GAAOP,EAAO,EAAI,EAEhCM,IACFF,EAAS,KAAOE,EAAY,EAC5BF,EAAS,MAAQE,EAAY,EAEjC,CAEAN,EAAM,SAAWI,EACnB,CAAC,EACH,EACA,kBAAmB,SAA2BI,EAAO,CACnDX,EAAgB,KAAKW,CAAK,CAC5B,EACA,qBAAsB,SAA8BC,EAAQ,CAC1DZ,EAAgB,OAAOa,GAAcb,EAAiB,CACpD,OAAQY,CACV,CAAC,EAAG,CAAC,CACP,EACA,WAAY,SAAoBE,EAAU,CACxC,IAAIC,EAAQ,KAEZ,GAAI,CAAC,KAAK,QAAQ,UAAW,CAC3B,aAAad,CAAmB,EAC5B,OAAOa,GAAa,YAAYA,EAAS,EAC7C,MACF,CAEA,IAAIE,EAAY,GACZC,EAAgB,EACpBjB,EAAgB,QAAQ,SAAUW,EAAO,CACvC,IAAIO,EAAO,EACPN,EAASD,EAAM,OACfJ,EAAWK,EAAO,SAClBO,EAASb,GAAQM,CAAM,EACvBQ,EAAeR,EAAO,aACtBS,EAAaT,EAAO,WACpBU,EAAgBX,EAAM,KACtBY,EAAeb,GAAOE,EAAQ,EAAI,EAElCW,IAEFJ,EAAO,KAAOI,EAAa,EAC3BJ,EAAO,MAAQI,EAAa,GAG9BX,EAAO,OAASO,EAEZP,EAAO,uBAELY,GAAYJ,EAAcD,CAAM,GAAK,CAACK,GAAYjB,EAAUY,CAAM,IACrEG,EAAc,IAAMH,EAAO,MAAQG,EAAc,KAAOH,EAAO,SAAWZ,EAAS,IAAMY,EAAO,MAAQZ,EAAS,KAAOY,EAAO,QAE9HD,EAAOO,GAAkBH,EAAeF,EAAcC,EAAYN,EAAM,OAAO,GAK9ES,GAAYL,EAAQZ,CAAQ,IAC/BK,EAAO,aAAeL,EACtBK,EAAO,WAAaO,EAEfD,IACHA,EAAOH,EAAM,QAAQ,WAGvBA,EAAM,QAAQH,EAAQU,EAAeH,EAAQD,CAAI,GAG/CA,IACFF,EAAY,GACZC,EAAgB,KAAK,IAAIA,EAAeC,CAAI,EAC5C,aAAaN,EAAO,mBAAmB,EACvCA,EAAO,oBAAsB,WAAW,UAAY,CAClDA,EAAO,cAAgB,EACvBA,EAAO,aAAe,KACtBA,EAAO,SAAW,KAClBA,EAAO,WAAa,KACpBA,EAAO,sBAAwB,IACjC,EAAGM,CAAI,EACPN,EAAO,sBAAwBM,EAEnC,CAAC,EACD,aAAajB,CAAmB,EAE3Be,EAGHf,EAAsB,WAAW,UAAY,CACvC,OAAOa,GAAa,YAAYA,EAAS,CAC/C,EAAGG,CAAa,EAJZ,OAAOH,GAAa,YAAYA,EAAS,EAO/Cd,EAAkB,CAAC,CACrB,EACA,QAAS,SAAiBY,EAAQc,EAAaP,EAAQQ,EAAU,CAC/D,GAAIA,EAAU,CACZvB,GAAIQ,EAAQ,aAAc,EAAE,EAC5BR,GAAIQ,EAAQ,YAAa,EAAE,EAC3B,IAAIgB,EAAWlB,GAAO,KAAK,EAAE,EACzBmB,EAASD,GAAYA,EAAS,EAC9BE,EAASF,GAAYA,EAAS,EAC9BG,GAAcL,EAAY,KAAOP,EAAO,OAASU,GAAU,GAC3DG,GAAcN,EAAY,IAAMP,EAAO,MAAQW,GAAU,GAC7DlB,EAAO,WAAa,CAAC,CAACmB,EACtBnB,EAAO,WAAa,CAAC,CAACoB,EACtB5B,GAAIQ,EAAQ,YAAa,eAAiBmB,EAAa,MAAQC,EAAa,OAAO,EACnF,KAAK,gBAAkBC,GAAQrB,CAAM,EAErCR,GAAIQ,EAAQ,aAAc,aAAee,EAAW,MAAQ,KAAK,QAAQ,OAAS,IAAM,KAAK,QAAQ,OAAS,GAAG,EACjHvB,GAAIQ,EAAQ,YAAa,oBAAoB,EAC7C,OAAOA,EAAO,UAAa,UAAY,aAAaA,EAAO,QAAQ,EACnEA,EAAO,SAAW,WAAW,UAAY,CACvCR,GAAIQ,EAAQ,aAAc,EAAE,EAC5BR,GAAIQ,EAAQ,YAAa,EAAE,EAC3BA,EAAO,SAAW,GAClBA,EAAO,WAAa,GACpBA,EAAO,WAAa,EACtB,EAAGe,CAAQ,CACb,CACF,CACF,CACF,CAEA,SAASM,GAAQrB,EAAQ,CACvB,OAAOA,EAAO,WAChB,CAEA,SAASa,GAAkBH,EAAef,EAAUY,EAAQe,EAAS,CACnE,OAAO,KAAK,KAAK,KAAK,IAAI3B,EAAS,IAAMe,EAAc,IAAK,CAAC,EAAI,KAAK,IAAIf,EAAS,KAAOe,EAAc,KAAM,CAAC,CAAC,EAAI,KAAK,KAAK,KAAK,IAAIf,EAAS,IAAMY,EAAO,IAAK,CAAC,EAAI,KAAK,IAAIZ,EAAS,KAAOY,EAAO,KAAM,CAAC,CAAC,EAAIe,EAAQ,SAC7N,CAEA,IAAIC,GAAU,CAAC,EACXC,GAAW,CACb,oBAAqB,EACvB,EACIC,GAAgB,CAClB,MAAO,SAAeC,EAAQ,CAE5B,QAASC,KAAUH,GACbA,GAAS,eAAeG,CAAM,GAAK,EAAEA,KAAUD,KACjDA,EAAOC,CAAM,EAAIH,GAASG,CAAM,GAIpCJ,GAAQ,QAAQ,SAAUK,EAAG,CAC3B,GAAIA,EAAE,aAAeF,EAAO,WAC1B,KAAM,iCAAiC,OAAOA,EAAO,WAAY,iBAAiB,CAEtF,CAAC,EACDH,GAAQ,KAAKG,CAAM,CACrB,EACA,YAAa,SAAqBG,EAAWC,EAAUC,EAAK,CAC1D,IAAI5B,EAAQ,KAEZ,KAAK,cAAgB,GAErB4B,EAAI,OAAS,UAAY,CACvB5B,EAAM,cAAgB,EACxB,EAEA,IAAI6B,EAAkBH,EAAY,SAClCN,GAAQ,QAAQ,SAAUG,EAAQ,CAC3BI,EAASJ,EAAO,UAAU,IAE3BI,EAASJ,EAAO,UAAU,EAAEM,CAAe,GAC7CF,EAASJ,EAAO,UAAU,EAAEM,CAAe,EAAEpC,GAAe,CAC1D,SAAUkC,CACZ,EAAGC,CAAG,CAAC,EAKLD,EAAS,QAAQJ,EAAO,UAAU,GAAKI,EAASJ,EAAO,UAAU,EAAEG,CAAS,GAC9EC,EAASJ,EAAO,UAAU,EAAEG,CAAS,EAAEjC,GAAe,CACpD,SAAUkC,CACZ,EAAGC,CAAG,CAAC,EAEX,CAAC,CACH,EACA,kBAAmB,SAA2BD,EAAUG,EAAIT,EAAUF,EAAS,CAC7EC,GAAQ,QAAQ,SAAUG,EAAQ,CAChC,IAAIQ,EAAaR,EAAO,WACxB,GAAI,GAACI,EAAS,QAAQI,CAAU,GAAK,CAACR,EAAO,qBAC7C,KAAIS,EAAc,IAAIT,EAAOI,EAAUG,EAAIH,EAAS,OAAO,EAC3DK,EAAY,SAAWL,EACvBK,EAAY,QAAUL,EAAS,QAC/BA,EAASI,CAAU,EAAIC,EAEvBC,GAASZ,EAAUW,EAAY,QAAQ,EACzC,CAAC,EAED,QAASR,KAAUG,EAAS,QAC1B,GAAKA,EAAS,QAAQ,eAAeH,CAAM,EAC3C,KAAIU,EAAW,KAAK,aAAaP,EAAUH,EAAQG,EAAS,QAAQH,CAAM,CAAC,EAEvE,OAAOU,EAAa,MACtBP,EAAS,QAAQH,CAAM,EAAIU,GAGjC,EACA,mBAAoB,SAA4BC,EAAMR,EAAU,CAC9D,IAAIS,EAAkB,CAAC,EACvB,OAAAhB,GAAQ,QAAQ,SAAUG,EAAQ,CAC5B,OAAOA,EAAO,iBAAoB,YAEtCU,GAASG,EAAiBb,EAAO,gBAAgB,KAAKI,EAASJ,EAAO,UAAU,EAAGY,CAAI,CAAC,CAC1F,CAAC,EACMC,CACT,EACA,aAAc,SAAsBT,EAAUQ,EAAME,EAAO,CACzD,IAAIC,EACJ,OAAAlB,GAAQ,QAAQ,SAAUG,EAAQ,CAE3BI,EAASJ,EAAO,UAAU,GAE3BA,EAAO,iBAAmB,OAAOA,EAAO,gBAAgBY,CAAI,GAAM,aACpEG,EAAgBf,EAAO,gBAAgBY,CAAI,EAAE,KAAKR,EAASJ,EAAO,UAAU,EAAGc,CAAK,EAExF,CAAC,EACMC,CACT,CACF,EAEA,SAASC,GAAcC,EAAM,CAC3B,IAAIb,EAAWa,EAAK,SAChBC,EAASD,EAAK,OACdL,EAAOK,EAAK,KACZE,EAAWF,EAAK,SAChBG,EAAUH,EAAK,QACfI,EAAOJ,EAAK,KACZK,EAASL,EAAK,OACdM,EAAWN,EAAK,SAChBO,EAAWP,EAAK,SAChBQ,EAAoBR,EAAK,kBACzBS,EAAoBT,EAAK,kBACzBU,EAAgBV,EAAK,cACrBW,EAAcX,EAAK,YACnBY,EAAuBZ,EAAK,qBAEhC,GADAb,EAAWA,GAAYc,GAAUA,EAAO1D,EAAO,EAC3C,EAAC4C,EACL,KAAIC,EACAT,EAAUQ,EAAS,QACnB0B,EAAS,KAAOlB,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,OAAO,CAAC,EAE5D,OAAO,aAAe,CAACmB,IAAc,CAACC,GACxC3B,EAAM,IAAI,YAAYO,EAAM,CAC1B,QAAS,GACT,WAAY,EACd,CAAC,GAEDP,EAAM,SAAS,YAAY,OAAO,EAClCA,EAAI,UAAUO,EAAM,GAAM,EAAI,GAGhCP,EAAI,GAAKgB,GAAQH,EACjBb,EAAI,KAAOiB,GAAUJ,EACrBb,EAAI,KAAOc,GAAYD,EACvBb,EAAI,MAAQe,EACZf,EAAI,SAAWkB,EACflB,EAAI,SAAWmB,EACfnB,EAAI,kBAAoBoB,EACxBpB,EAAI,kBAAoBqB,EACxBrB,EAAI,cAAgBsB,EACpBtB,EAAI,SAAWuB,EAAcA,EAAY,YAAc,OAEvD,IAAIK,EAAqB/D,GAAeA,GAAe,CAAC,EAAG2D,CAAoB,EAAG9B,GAAc,mBAAmBa,EAAMR,CAAQ,CAAC,EAElI,QAASH,KAAUgC,EACjB5B,EAAIJ,CAAM,EAAIgC,EAAmBhC,CAAM,EAGrCiB,GACFA,EAAO,cAAcb,CAAG,EAGtBT,EAAQkC,CAAM,GAChBlC,EAAQkC,CAAM,EAAE,KAAK1B,EAAUC,CAAG,EAEtC,CAEA,IAAI6B,GAAY,CAAC,KAAK,EAElBC,GAAc,SAAqBhC,EAAWC,EAAU,CAC1D,IAAIa,EAAO,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,CAAC,EAC5EU,EAAgBV,EAAK,IACrBmB,EAAOC,GAAyBpB,EAAMiB,EAAS,EAEnDnC,GAAc,YAAY,KAAKhC,EAAQ,EAAEoC,EAAWC,EAAUlC,GAAe,CAC3E,OAAQoE,EACR,SAAUC,GACV,QAASC,GACT,OAAQtB,GACR,OAAQuB,GACR,WAAYC,GACZ,QAAStB,GACT,YAAauB,GACb,YAAaC,GACb,YAAahB,GACb,eAAgB7D,GAAS,OACzB,cAAe4D,EACf,SAAUJ,GACV,kBAAmBE,GACnB,SAAUD,GACV,kBAAmBE,GACnB,mBAAoBmB,GACpB,qBAAsBC,GACtB,eAAgB,UAA0B,CACxCH,GAAc,EAChB,EACA,cAAe,UAAyB,CACtCA,GAAc,EAChB,EACA,sBAAuB,SAA+B/B,EAAM,CAC1DmC,GAAe,CACb,SAAU3C,EACV,KAAMQ,EACN,cAAee,CACjB,CAAC,CACH,CACF,EAAGS,CAAI,CAAC,CACV,EAEA,SAASW,GAAeC,EAAM,CAC5BhC,GAAc9C,GAAe,CAC3B,YAAa0D,GACb,QAASR,GACT,SAAUkB,EACV,OAAQpB,GACR,SAAUK,GACV,kBAAmBE,GACnB,SAAUD,GACV,kBAAmBE,EACrB,EAAGsB,CAAI,CAAC,CACV,CAEA,IAAIV,EACAC,GACAC,GACAtB,GACAuB,GACAC,GACAtB,GACAuB,GACApB,GACAC,GACAC,GACAC,GACAuB,GACArB,GACAsB,GAAsB,GACtBC,GAAkB,GAClBC,GAAY,CAAC,EACbC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAd,GACAe,GACAC,GACAC,GAAwB,GACxBC,GAAyB,GACzBC,GAEJC,GACIC,GAAmC,CAAC,EAExCC,GAAU,GACNC,GAAoB,CAAC,EAGrBC,GAAiB,OAAO,SAAa,IACrCC,GAA0BC,GAC1BC,GAAmBvC,IAAQD,GAAa,WAAa,QAEzDyC,GAAmBJ,IAAkB,CAACK,IAAoB,CAACH,IAAO,cAAe,SAAS,cAAc,KAAK,EACzGI,GAA0B,UAAY,CACxC,GAAKN,GAEL,IAAIrC,GACF,MAAO,GAGT,IAAIxB,EAAK,SAAS,cAAc,GAAG,EACnC,OAAAA,EAAG,MAAM,QAAU,sBACZA,EAAG,MAAM,gBAAkB,OACpC,EAAE,EACEoE,GAAmB,SAA0BpE,EAAIX,EAAS,CAC5D,IAAIgF,EAAQ9G,GAAIyC,CAAE,EACdsE,EAAU,SAASD,EAAM,KAAK,EAAI,SAASA,EAAM,WAAW,EAAI,SAASA,EAAM,YAAY,EAAI,SAASA,EAAM,eAAe,EAAI,SAASA,EAAM,gBAAgB,EAChKE,EAASC,GAASxE,EAAI,EAAGX,CAAO,EAChCoF,EAASD,GAASxE,EAAI,EAAGX,CAAO,EAChCqF,EAAgBH,GAAUhH,GAAIgH,CAAM,EACpCI,EAAiBF,GAAUlH,GAAIkH,CAAM,EACrCG,EAAkBF,GAAiB,SAASA,EAAc,UAAU,EAAI,SAASA,EAAc,WAAW,EAAIjH,GAAQ8G,CAAM,EAAE,MAC9HM,EAAmBF,GAAkB,SAASA,EAAe,UAAU,EAAI,SAASA,EAAe,WAAW,EAAIlH,GAAQgH,CAAM,EAAE,MAEtI,GAAIJ,EAAM,UAAY,OACpB,OAAOA,EAAM,gBAAkB,UAAYA,EAAM,gBAAkB,iBAAmB,WAAa,aAGrG,GAAIA,EAAM,UAAY,OACpB,OAAOA,EAAM,oBAAoB,MAAM,GAAG,EAAE,QAAU,EAAI,WAAa,aAGzE,GAAIE,GAAUG,EAAc,OAAYA,EAAc,QAAa,OAAQ,CACzE,IAAII,EAAqBJ,EAAc,QAAa,OAAS,OAAS,QACtE,OAAOD,IAAWE,EAAe,QAAU,QAAUA,EAAe,QAAUG,GAAsB,WAAa,YACnH,CAEA,OAAOP,IAAWG,EAAc,UAAY,SAAWA,EAAc,UAAY,QAAUA,EAAc,UAAY,SAAWA,EAAc,UAAY,QAAUE,GAAmBN,GAAWD,EAAML,EAAgB,IAAM,QAAUS,GAAUJ,EAAML,EAAgB,IAAM,QAAUY,EAAkBC,EAAmBP,GAAW,WAAa,YACvV,EACIS,GAAqB,SAA4BC,EAAUC,EAAYC,EAAU,CACnF,IAAIC,EAAcD,EAAWF,EAAS,KAAOA,EAAS,IAClDI,EAAcF,EAAWF,EAAS,MAAQA,EAAS,OACnDK,EAAkBH,EAAWF,EAAS,MAAQA,EAAS,OACvDM,EAAcJ,EAAWD,EAAW,KAAOA,EAAW,IACtDM,EAAcL,EAAWD,EAAW,MAAQA,EAAW,OACvDO,EAAkBN,EAAWD,EAAW,MAAQA,EAAW,OAC/D,OAAOE,IAAgBG,GAAeF,IAAgBG,GAAeJ,EAAcE,EAAkB,IAAMC,EAAcE,EAAkB,CAC7I,EAQAC,GAA8B,SAAqCC,EAAGC,EAAG,CACvE,IAAIC,EACJ,OAAA/C,GAAU,KAAK,SAAUhD,EAAU,CACjC,IAAIgG,EAAYhG,EAAS5C,EAAO,EAAE,QAAQ,qBAC1C,GAAI,GAAC4I,GAAaC,GAAUjG,CAAQ,GACpC,KAAIkG,EAAOtI,GAAQoC,CAAQ,EACvBmG,EAAqBN,GAAKK,EAAK,KAAOF,GAAaH,GAAKK,EAAK,MAAQF,EACrEI,EAAmBN,GAAKI,EAAK,IAAMF,GAAaF,GAAKI,EAAK,OAASF,EAEvE,GAAIG,GAAsBC,EACxB,OAAOL,EAAM/F,EAEjB,CAAC,EACM+F,CACT,EACIM,GAAgB,SAAuB7G,EAAS,CAClD,SAAS8G,EAAK5F,EAAO6F,EAAM,CACzB,OAAO,SAAUC,EAAIC,EAAMvE,EAAQjC,EAAK,CACtC,IAAIyG,EAAYF,EAAG,QAAQ,MAAM,MAAQC,EAAK,QAAQ,MAAM,MAAQD,EAAG,QAAQ,MAAM,OAASC,EAAK,QAAQ,MAAM,KAEjH,GAAI/F,GAAS,OAAS6F,GAAQG,GAG5B,MAAO,GACF,GAAIhG,GAAS,MAAQA,IAAU,GACpC,MAAO,GACF,GAAI6F,GAAQ7F,IAAU,QAC3B,OAAOA,EACF,GAAI,OAAOA,GAAU,WAC1B,OAAO4F,EAAK5F,EAAM8F,EAAIC,EAAMvE,EAAQjC,CAAG,EAAGsG,CAAI,EAAEC,EAAIC,EAAMvE,EAAQjC,CAAG,EAErE,IAAI0G,GAAcJ,EAAOC,EAAKC,GAAM,QAAQ,MAAM,KAClD,OAAO/F,IAAU,IAAQ,OAAOA,GAAU,UAAYA,IAAUiG,GAAcjG,EAAM,MAAQA,EAAM,QAAQiG,CAAU,EAAI,EAE5H,CACF,CAEA,IAAIC,EAAQ,CAAC,EACTC,EAAgBrH,EAAQ,OAExB,CAACqH,GAAiBC,GAAQD,CAAa,GAAK,YAC9CA,EAAgB,CACd,KAAMA,CACR,GAGFD,EAAM,KAAOC,EAAc,KAC3BD,EAAM,UAAYN,EAAKO,EAAc,KAAM,EAAI,EAC/CD,EAAM,SAAWN,EAAKO,EAAc,GAAG,EACvCD,EAAM,YAAcC,EAAc,YAClCrH,EAAQ,MAAQoH,CAClB,EACInE,GAAsB,UAA+B,CACnD,CAAC6B,IAA2BlC,IAC9B1E,GAAI0E,GAAS,UAAW,MAAM,CAElC,EACIM,GAAwB,UAAiC,CACvD,CAAC4B,IAA2BlC,IAC9B1E,GAAI0E,GAAS,UAAW,EAAE,CAE9B,EAGI4B,IAAkB,CAACK,IACrB,SAAS,iBAAiB,QAAS,SAAUpE,EAAK,CAChD,GAAI8C,GACF,OAAA9C,EAAI,eAAe,EACnBA,EAAI,iBAAmBA,EAAI,gBAAgB,EAC3CA,EAAI,0BAA4BA,EAAI,yBAAyB,EAC7D8C,GAAkB,GACX,EAEX,EAAG,EAAI,EAGT,IAAIgE,GAAgC,SAAuC9G,EAAK,CAC9E,GAAIiC,EAAQ,CACVjC,EAAMA,EAAI,QAAUA,EAAI,QAAQ,CAAC,EAAIA,EAErC,IAAI+G,EAAUpB,GAA4B3F,EAAI,QAASA,EAAI,OAAO,EAElE,GAAI+G,EAAS,CAEX,IAAIC,EAAQ,CAAC,EAEb,QAASC,KAAKjH,EACRA,EAAI,eAAeiH,CAAC,IACtBD,EAAMC,CAAC,EAAIjH,EAAIiH,CAAC,GAIpBD,EAAM,OAASA,EAAM,OAASD,EAC9BC,EAAM,eAAiB,OACvBA,EAAM,gBAAkB,OAExBD,EAAQ5J,EAAO,EAAE,YAAY6J,CAAK,CACpC,CACF,CACF,EAEIE,GAAwB,SAA+BlH,EAAK,CAC1DiC,GACFA,EAAO,WAAW9E,EAAO,EAAE,iBAAiB6C,EAAI,MAAM,CAE1D,EAQA,SAAStC,GAASwC,EAAIX,EAAS,CAC7B,GAAI,EAAEW,GAAMA,EAAG,UAAYA,EAAG,WAAa,GACzC,KAAM,8CAA8C,OAAO,CAAC,EAAE,SAAS,KAAKA,CAAE,CAAC,EAGjF,KAAK,GAAKA,EAEV,KAAK,QAAUX,EAAUc,GAAS,CAAC,EAAGd,CAAO,EAE7CW,EAAG/C,EAAO,EAAI,KACd,IAAIsC,EAAW,CACb,MAAO,KACP,KAAM,GACN,SAAU,GACV,MAAO,KACP,OAAQ,KACR,UAAW,WAAW,KAAKS,EAAG,QAAQ,EAAI,MAAQ,KAClD,cAAe,EAEf,WAAY,GAEZ,sBAAuB,KAEvB,kBAAmB,GACnB,UAAW,UAAqB,CAC9B,OAAOoE,GAAiBpE,EAAI,KAAK,OAAO,CAC1C,EACA,WAAY,iBACZ,YAAa,kBACb,UAAW,gBACX,OAAQ,SACR,OAAQ,KACR,gBAAiB,GACjB,UAAW,EACX,OAAQ,KACR,QAAS,SAAiBiH,EAAclF,EAAQ,CAC9CkF,EAAa,QAAQ,OAAQlF,EAAO,WAAW,CACjD,EACA,WAAY,GACZ,eAAgB,GAChB,WAAY,UACZ,MAAO,EACP,iBAAkB,GAClB,qBAAsB,OAAO,SAAW,OAAS,QAAQ,SAAS,OAAO,iBAAkB,EAAE,GAAK,EAClG,cAAe,GACf,cAAe,oBACf,eAAgB,GAChB,kBAAmB,EACnB,eAAgB,CACd,EAAG,EACH,EAAG,CACL,EACA,eAAgBvE,GAAS,iBAAmB,IAAS,iBAAkB,QAAU,CAAC0J,GAClF,qBAAsB,CACxB,EACA1H,GAAc,kBAAkB,KAAMQ,EAAIT,CAAQ,EAElD,QAASc,KAAQd,EACf,EAAEc,KAAQhB,KAAaA,EAAQgB,CAAI,EAAId,EAASc,CAAI,GAGtD6F,GAAc7G,CAAO,EAGrB,QAAS8H,KAAM,KACTA,EAAG,OAAO,CAAC,IAAM,KAAO,OAAO,KAAKA,CAAE,GAAM,aAC9C,KAAKA,CAAE,EAAI,KAAKA,CAAE,EAAE,KAAK,IAAI,GAKjC,KAAK,gBAAkB9H,EAAQ,cAAgB,GAAQ4E,GAEnD,KAAK,kBAEP,KAAK,QAAQ,oBAAsB,GAIjC5E,EAAQ,eACV+H,GAAGpH,EAAI,cAAe,KAAK,WAAW,GAEtCoH,GAAGpH,EAAI,YAAa,KAAK,WAAW,EACpCoH,GAAGpH,EAAI,aAAc,KAAK,WAAW,GAGnC,KAAK,kBACPoH,GAAGpH,EAAI,WAAY,IAAI,EACvBoH,GAAGpH,EAAI,YAAa,IAAI,GAG1B6C,GAAU,KAAK,KAAK,EAAE,EAEtBxD,EAAQ,OAASA,EAAQ,MAAM,KAAO,KAAK,KAAKA,EAAQ,MAAM,IAAI,IAAI,GAAK,CAAC,CAAC,EAE7Ec,GAAS,KAAMjD,GAAsB,CAAC,CACxC,CAEAM,GAAS,UAET,CACE,YAAaA,GACb,iBAAkB,SAA0BO,EAAQ,CAC9C,CAAC,KAAK,GAAG,SAASA,CAAM,GAAKA,IAAW,KAAK,KAC/CqF,GAAa,KAEjB,EACA,cAAe,SAAuBtD,EAAK/B,EAAQ,CACjD,OAAO,OAAO,KAAK,QAAQ,WAAc,WAAa,KAAK,QAAQ,UAAU,KAAK,KAAM+B,EAAK/B,EAAQgE,CAAM,EAAI,KAAK,QAAQ,SAC9H,EACA,YAAa,SAEbjC,EAAK,CACH,GAAKA,EAAI,WAET,KAAI5B,EAAQ,KACR8B,EAAK,KAAK,GACVX,EAAU,KAAK,QACfgI,EAAkBhI,EAAQ,gBAC1BiI,EAAOxH,EAAI,KACXyH,EAAQzH,EAAI,SAAWA,EAAI,QAAQ,CAAC,GAAKA,EAAI,aAAeA,EAAI,cAAgB,SAAWA,EAC3F/B,GAAUwJ,GAASzH,GAAK,OACxB0H,EAAiB1H,EAAI,OAAO,aAAeA,EAAI,MAAQA,EAAI,KAAK,CAAC,GAAKA,EAAI,cAAgBA,EAAI,aAAa,EAAE,CAAC,IAAM/B,EACpH0J,EAASpI,EAAQ,OAKrB,GAHAqI,GAAuB1H,CAAE,EAGrB,CAAA+B,GAIA,0BAAwB,KAAKuF,CAAI,GAAKxH,EAAI,SAAW,GAAKT,EAAQ,WAKlE,CAAAmI,EAAe,mBAKf,GAAC,KAAK,iBAAmBN,IAAUnJ,GAAUA,EAAO,QAAQ,YAAY,IAAM,YAIlFA,EAAS4J,GAAQ5J,EAAQsB,EAAQ,UAAWW,EAAI,EAAK,EAEjD,EAAAjC,GAAUA,EAAO,WAIjBoE,KAAepE,GASnB,IAHAiD,GAAW4G,GAAM7J,CAAM,EACvBmD,GAAoB0G,GAAM7J,EAAQsB,EAAQ,SAAS,EAE/C,OAAOoI,GAAW,YACpB,GAAIA,EAAO,KAAK,KAAM3H,EAAK/B,EAAQ,IAAI,EAAG,CACxCyE,GAAe,CACb,SAAUtE,EACV,OAAQsJ,EACR,KAAM,SACN,SAAUzJ,EACV,KAAMiC,EACN,OAAQA,CACV,CAAC,EAED4B,GAAY,SAAU1D,EAAO,CAC3B,IAAK4B,CACP,CAAC,EACDuH,GAAmBvH,EAAI,YAAcA,EAAI,eAAe,EACxD,MACF,UACS2H,IACTA,EAASA,EAAO,MAAM,GAAG,EAAE,KAAK,SAAUI,EAAU,CAGlD,GAFAA,EAAWF,GAAQH,EAAgBK,EAAS,KAAK,EAAG7H,EAAI,EAAK,EAEzD6H,EACF,OAAArF,GAAe,CACb,SAAUtE,EACV,OAAQ2J,EACR,KAAM,SACN,SAAU9J,EACV,OAAQiC,EACR,KAAMA,CACR,CAAC,EAED4B,GAAY,SAAU1D,EAAO,CAC3B,IAAK4B,CACP,CAAC,EACM,EAEX,CAAC,EAEG2H,GAAQ,CACVJ,GAAmBvH,EAAI,YAAcA,EAAI,eAAe,EACxD,MACF,CAGET,EAAQ,QAAU,CAACsI,GAAQH,EAAgBnI,EAAQ,OAAQW,EAAI,EAAK,GAKxE,KAAK,kBAAkBF,EAAKyH,EAAOxJ,CAAM,GAC3C,EACA,kBAAmB,SAEnB+B,EAEAyH,EAEAxJ,EAAQ,CACN,IAAIG,EAAQ,KACR8B,EAAK9B,EAAM,GACXmB,EAAUnB,EAAM,QAChB4J,EAAgB9H,EAAG,cACnB+H,EAEJ,GAAIhK,GAAU,CAACgE,GAAUhE,EAAO,aAAeiC,EAAI,CACjD,IAAIgF,EAAWvH,GAAQM,CAAM,EAwE7B,GAvEA4C,GAASX,EACT+B,EAAShE,EACTiE,GAAWD,EAAO,WAClBG,GAASH,EAAO,YAChBI,GAAapE,EACb2E,GAAcrD,EAAQ,MACtB7B,GAAS,QAAUuE,EACnBe,GAAS,CACP,OAAQf,EACR,SAAUwF,GAASzH,GAAK,QACxB,SAAUyH,GAASzH,GAAK,OAC1B,EACAoD,GAAkBJ,GAAO,QAAUkC,EAAS,KAC5C7B,GAAiBL,GAAO,QAAUkC,EAAS,IAC3C,KAAK,QAAUuC,GAASzH,GAAK,QAC7B,KAAK,QAAUyH,GAASzH,GAAK,QAC7BiC,EAAO,MAAM,aAAa,EAAI,MAE9BgG,EAAc,UAAuB,CAKnC,GAJAnG,GAAY,aAAc1D,EAAO,CAC/B,IAAK4B,CACP,CAAC,EAEGtC,GAAS,cAAe,CAC1BU,EAAM,QAAQ,EAEd,MACF,CAIAA,EAAM,0BAA0B,EAE5B,CAAC8J,IAAW9J,EAAM,kBACpB6D,EAAO,UAAY,IAIrB7D,EAAM,kBAAkB4B,EAAKyH,CAAK,EAGlC/E,GAAe,CACb,SAAUtE,EACV,KAAM,SACN,cAAe4B,CACjB,CAAC,EAGDmI,GAAYlG,EAAQ1C,EAAQ,YAAa,EAAI,CAC/C,EAGAA,EAAQ,OAAO,MAAM,GAAG,EAAE,QAAQ,SAAUwI,EAAU,CACpDK,GAAKnG,EAAQ8F,EAAS,KAAK,EAAGM,EAAiB,CACjD,CAAC,EACDf,GAAGU,EAAe,WAAYlB,EAA6B,EAC3DQ,GAAGU,EAAe,YAAalB,EAA6B,EAC5DQ,GAAGU,EAAe,YAAalB,EAA6B,EAC5DQ,GAAGU,EAAe,UAAW5J,EAAM,OAAO,EAC1CkJ,GAAGU,EAAe,WAAY5J,EAAM,OAAO,EAC3CkJ,GAAGU,EAAe,cAAe5J,EAAM,OAAO,EAE1C8J,IAAW,KAAK,kBAClB,KAAK,QAAQ,oBAAsB,EACnCjG,EAAO,UAAY,IAGrBH,GAAY,aAAc,KAAM,CAC9B,IAAK9B,CACP,CAAC,EAEGT,EAAQ,QAAU,CAACA,EAAQ,kBAAoBkI,KAAW,CAAC,KAAK,iBAAmB,EAAE9F,IAAQD,KAAc,CAC7G,GAAIhE,GAAS,cAAe,CAC1B,KAAK,QAAQ,EAEb,MACF,CAKA4J,GAAGU,EAAe,UAAW5J,EAAM,mBAAmB,EACtDkJ,GAAGU,EAAe,WAAY5J,EAAM,mBAAmB,EACvDkJ,GAAGU,EAAe,cAAe5J,EAAM,mBAAmB,EAC1DkJ,GAAGU,EAAe,YAAa5J,EAAM,4BAA4B,EACjEkJ,GAAGU,EAAe,YAAa5J,EAAM,4BAA4B,EACjEmB,EAAQ,gBAAkB+H,GAAGU,EAAe,cAAe5J,EAAM,4BAA4B,EAC7FA,EAAM,gBAAkB,WAAW6J,EAAa1I,EAAQ,KAAK,CAC/D,MACE0I,EAAY,CAEhB,CACF,EACA,6BAA8B,SAE9BK,EAAG,CACD,IAAIb,EAAQa,EAAE,QAAUA,EAAE,QAAQ,CAAC,EAAIA,EAEnC,KAAK,IAAI,KAAK,IAAIb,EAAM,QAAU,KAAK,MAAM,EAAG,KAAK,IAAIA,EAAM,QAAU,KAAK,MAAM,CAAC,GAAK,KAAK,MAAM,KAAK,QAAQ,qBAAuB,KAAK,iBAAmB,OAAO,kBAAoB,EAAE,GAChM,KAAK,oBAAoB,CAE7B,EACA,oBAAqB,UAA+B,CAClDxF,GAAUoG,GAAkBpG,CAAM,EAClC,aAAa,KAAK,eAAe,EAEjC,KAAK,0BAA0B,CACjC,EACA,0BAA2B,UAAqC,CAC9D,IAAI+F,EAAgB,KAAK,GAAG,cAC5BO,GAAIP,EAAe,UAAW,KAAK,mBAAmB,EACtDO,GAAIP,EAAe,WAAY,KAAK,mBAAmB,EACvDO,GAAIP,EAAe,cAAe,KAAK,mBAAmB,EAC1DO,GAAIP,EAAe,YAAa,KAAK,4BAA4B,EACjEO,GAAIP,EAAe,YAAa,KAAK,4BAA4B,EACjEO,GAAIP,EAAe,cAAe,KAAK,4BAA4B,CACrE,EACA,kBAAmB,SAEnBhI,EAEAyH,EAAO,CACLA,EAAQA,GAASzH,EAAI,aAAe,SAAWA,EAE3C,CAAC,KAAK,iBAAmByH,EACvB,KAAK,QAAQ,eACfH,GAAG,SAAU,cAAe,KAAK,YAAY,EACpCG,EACTH,GAAG,SAAU,YAAa,KAAK,YAAY,EAE3CA,GAAG,SAAU,YAAa,KAAK,YAAY,GAG7CA,GAAGrF,EAAQ,UAAW,IAAI,EAC1BqF,GAAGzG,GAAQ,YAAa,KAAK,YAAY,GAG3C,GAAI,CACE,SAAS,UAEX2H,GAAU,UAAY,CACpB,SAAS,UAAU,MAAM,CAC3B,CAAC,EAED,OAAO,aAAa,EAAE,gBAAgB,CAE1C,MAAE,CAAa,CACjB,EACA,aAAc,SAAsBC,EAAUzI,EAAK,CAIjD,GAFA6C,GAAsB,GAElBhC,IAAUoB,EAAQ,CACpBH,GAAY,cAAe,KAAM,CAC/B,IAAK9B,CACP,CAAC,EAEG,KAAK,iBACPsH,GAAG,SAAU,WAAYJ,EAAqB,EAGhD,IAAI3H,EAAU,KAAK,QAEnB,CAACkJ,GAAYN,GAAYlG,EAAQ1C,EAAQ,UAAW,EAAK,EACzD4I,GAAYlG,EAAQ1C,EAAQ,WAAY,EAAI,EAC5C7B,GAAS,OAAS,KAClB+K,GAAY,KAAK,aAAa,EAE9B/F,GAAe,CACb,SAAU,KACV,KAAM,QACN,cAAe1C,CACjB,CAAC,CACH,MACE,KAAK,SAAS,CAElB,EACA,iBAAkB,UAA4B,CAC5C,GAAIiD,GAAU,CACZ,KAAK,OAASA,GAAS,QACvB,KAAK,OAASA,GAAS,QAEvBT,GAAoB,EAKpB,QAHIvE,EAAS,SAAS,iBAAiBgF,GAAS,QAASA,GAAS,OAAO,EACrEyF,EAASzK,EAENA,GAAUA,EAAO,aACtBA,EAASA,EAAO,WAAW,iBAAiBgF,GAAS,QAASA,GAAS,OAAO,EAC1EhF,IAAWyK,IACfA,EAASzK,EAKX,GAFAgE,EAAO,WAAW9E,EAAO,EAAE,iBAAiBc,CAAM,EAE9CyK,EACF,EAAG,CACD,GAAIA,EAAOvL,EAAO,EAAG,CACnB,IAAIwL,EAAW,OAQf,GAPAA,EAAWD,EAAOvL,EAAO,EAAE,YAAY,CACrC,QAAS8F,GAAS,QAClB,QAASA,GAAS,QAClB,OAAQhF,EACR,OAAQyK,CACV,CAAC,EAEGC,GAAY,CAAC,KAAK,QAAQ,eAC5B,KAEJ,CAEA1K,EAASyK,CACX,OAEOA,EAASA,EAAO,YAGzBjG,GAAsB,CACxB,CACF,EACA,aAAc,SAEdzC,EAAK,CACH,GAAIgD,GAAQ,CACV,IAAIzD,EAAU,KAAK,QACfqJ,EAAoBrJ,EAAQ,kBAC5BsJ,EAAiBtJ,EAAQ,eACzBkI,EAAQzH,EAAI,QAAUA,EAAI,QAAQ,CAAC,EAAIA,EACvC8I,EAAc3G,IAAWpE,GAAOoE,GAAS,EAAI,EAC7CjD,EAASiD,IAAW2G,GAAeA,EAAY,EAC/C3J,EAASgD,IAAW2G,GAAeA,EAAY,EAC/CC,EAAuB/E,IAA2BL,IAAuBqF,GAAwBrF,EAAmB,EACpHsF,GAAMxB,EAAM,QAAUzE,GAAO,QAAU6F,EAAe,IAAM3J,GAAU,IAAM6J,EAAuBA,EAAqB,CAAC,EAAInF,GAAiC,CAAC,EAAI,IAAM1E,GAAU,GACnLgK,GAAMzB,EAAM,QAAUzE,GAAO,QAAU6F,EAAe,IAAM1J,GAAU,IAAM4J,EAAuBA,EAAqB,CAAC,EAAInF,GAAiC,CAAC,EAAI,IAAMzE,GAAU,GAEvL,GAAI,CAACzB,GAAS,QAAU,CAACmF,GAAqB,CAC5C,GAAI+F,GAAqB,KAAK,IAAI,KAAK,IAAInB,EAAM,QAAU,KAAK,MAAM,EAAG,KAAK,IAAIA,EAAM,QAAU,KAAK,MAAM,CAAC,EAAImB,EAChH,OAGF,KAAK,aAAa5I,EAAK,EAAI,CAC7B,CAEA,GAAImC,GAAS,CACP2G,GACFA,EAAY,GAAKG,GAAM/F,IAAU,GACjC4F,EAAY,GAAKI,GAAM/F,IAAU,IAEjC2F,EAAc,CACZ,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAGG,EACH,EAAGC,CACL,EAGF,IAAIC,EAAY,UAAU,OAAOL,EAAY,EAAG,GAAG,EAAE,OAAOA,EAAY,EAAG,GAAG,EAAE,OAAOA,EAAY,EAAG,GAAG,EAAE,OAAOA,EAAY,EAAG,GAAG,EAAE,OAAOA,EAAY,EAAG,GAAG,EAAE,OAAOA,EAAY,EAAG,GAAG,EAC1LrL,GAAI0E,GAAS,kBAAmBgH,CAAS,EACzC1L,GAAI0E,GAAS,eAAgBgH,CAAS,EACtC1L,GAAI0E,GAAS,cAAegH,CAAS,EACrC1L,GAAI0E,GAAS,YAAagH,CAAS,EACnCjG,GAAS+F,EACT9F,GAAS+F,EACTjG,GAAWwE,CACb,CAEAzH,EAAI,YAAcA,EAAI,eAAe,CACvC,CACF,EACA,aAAc,UAAwB,CAGpC,GAAI,CAACmC,GAAS,CACZ,IAAIiH,EAAY,KAAK,QAAQ,eAAiB,SAAS,KAAOvI,GAC1DoF,EAAOtI,GAAQsE,EAAQ,GAAM+B,GAAyB,GAAMoF,CAAS,EACrE7J,EAAU,KAAK,QAEnB,GAAIyE,GAAyB,CAI3B,IAFAL,GAAsByF,EAEf3L,GAAIkG,GAAqB,UAAU,IAAM,UAAYlG,GAAIkG,GAAqB,WAAW,IAAM,QAAUA,KAAwB,UACtIA,GAAsBA,GAAoB,WAGxCA,KAAwB,SAAS,MAAQA,KAAwB,SAAS,iBACxEA,KAAwB,WAAUA,GAAsB0F,GAA0B,GACtFpD,EAAK,KAAOtC,GAAoB,UAChCsC,EAAK,MAAQtC,GAAoB,YAEjCA,GAAsB0F,GAA0B,EAGlDzF,GAAmCoF,GAAwBrF,EAAmB,CAChF,CAEAxB,GAAUF,EAAO,UAAU,EAAI,EAC/BkG,GAAYhG,GAAS5C,EAAQ,WAAY,EAAK,EAC9C4I,GAAYhG,GAAS5C,EAAQ,cAAe,EAAI,EAChD4I,GAAYhG,GAAS5C,EAAQ,UAAW,EAAI,EAC5C9B,GAAI0E,GAAS,aAAc,EAAE,EAC7B1E,GAAI0E,GAAS,YAAa,EAAE,EAC5B1E,GAAI0E,GAAS,aAAc,YAAY,EACvC1E,GAAI0E,GAAS,SAAU,CAAC,EACxB1E,GAAI0E,GAAS,MAAO8D,EAAK,GAAG,EAC5BxI,GAAI0E,GAAS,OAAQ8D,EAAK,IAAI,EAC9BxI,GAAI0E,GAAS,QAAS8D,EAAK,KAAK,EAChCxI,GAAI0E,GAAS,SAAU8D,EAAK,MAAM,EAClCxI,GAAI0E,GAAS,UAAW,KAAK,EAC7B1E,GAAI0E,GAAS,WAAY6B,GAA0B,WAAa,OAAO,EACvEvG,GAAI0E,GAAS,SAAU,QAAQ,EAC/B1E,GAAI0E,GAAS,gBAAiB,MAAM,EACpCzE,GAAS,MAAQyE,GACjBiH,EAAU,YAAYjH,EAAO,EAE7B1E,GAAI0E,GAAS,mBAAoBiB,GAAkB,SAASjB,GAAQ,MAAM,KAAK,EAAI,IAAM,KAAOkB,GAAiB,SAASlB,GAAQ,MAAM,MAAM,EAAI,IAAM,GAAG,CAC7J,CACF,EACA,aAAc,SAEdnC,EAEAyI,EAAU,CACR,IAAIrK,EAAQ,KAER+I,EAAenH,EAAI,aACnBT,EAAUnB,EAAM,QAKpB,GAJA0D,GAAY,YAAa,KAAM,CAC7B,IAAK9B,CACP,CAAC,EAEGtC,GAAS,cAAe,CAC1B,KAAK,QAAQ,EAEb,MACF,CAEAoE,GAAY,aAAc,IAAI,EAEzBpE,GAAS,gBACZqD,GAAUuI,GAAMrH,CAAM,EACtBlB,GAAQ,gBAAgB,IAAI,EAC5BA,GAAQ,UAAY,GACpBA,GAAQ,MAAM,aAAa,EAAI,GAE/B,KAAK,WAAW,EAEhBoH,GAAYpH,GAAS,KAAK,QAAQ,YAAa,EAAK,EACpDrD,GAAS,MAAQqD,IAInB3C,EAAM,QAAUoK,GAAU,UAAY,CACpC1G,GAAY,QAAS1D,CAAK,EACtB,CAAAV,GAAS,gBAERU,EAAM,QAAQ,mBACjByC,GAAO,aAAaE,GAASkB,CAAM,EAGrC7D,EAAM,WAAW,EAEjBsE,GAAe,CACb,SAAUtE,EACV,KAAM,OACR,CAAC,EACH,CAAC,EACD,CAACqK,GAAYN,GAAYlG,EAAQ1C,EAAQ,UAAW,EAAI,EAEpDkJ,GACF3F,GAAkB,GAClB1E,EAAM,QAAU,YAAYA,EAAM,iBAAkB,EAAE,IAGtDmK,GAAI,SAAU,UAAWnK,EAAM,OAAO,EACtCmK,GAAI,SAAU,WAAYnK,EAAM,OAAO,EACvCmK,GAAI,SAAU,cAAenK,EAAM,OAAO,EAEtC+I,IACFA,EAAa,cAAgB,OAC7B5H,EAAQ,SAAWA,EAAQ,QAAQ,KAAKnB,EAAO+I,EAAclF,CAAM,GAGrEqF,GAAG,SAAU,OAAQlJ,CAAK,EAE1BX,GAAIwE,EAAQ,YAAa,eAAe,GAG1CY,GAAsB,GACtBzE,EAAM,aAAeoK,GAAUpK,EAAM,aAAa,KAAKA,EAAOqK,EAAUzI,CAAG,CAAC,EAC5EsH,GAAG,SAAU,cAAelJ,CAAK,EACjCmE,GAAQ,GAEJ6E,IACF3J,GAAI,SAAS,KAAM,cAAe,MAAM,CAE5C,EAEA,YAAa,SAEbuC,EAAK,CACH,IAAIE,EAAK,KAAK,GACVjC,EAAS+B,EAAI,OACbkF,EACAC,EACAoE,EACAhK,EAAU,KAAK,QACfoH,EAAQpH,EAAQ,MAChBiK,EAAiB9L,GAAS,OAC1B+L,EAAU7G,KAAgB+D,EAC1B+C,EAAUnK,EAAQ,KAClBoK,EAAepI,IAAeiI,EAC9BpE,EACAhH,EAAQ,KACRwL,EAAiB,GAErB,GAAI/F,GAAS,OAEb,SAASgG,EAActJ,EAAMuJ,EAAO,CAClChI,GAAYvB,EAAMnC,EAAOP,GAAe,CACtC,IAAKmC,EACL,QAASyJ,EACT,KAAMrE,EAAW,WAAa,aAC9B,OAAQmE,EACR,SAAUrE,EACV,WAAYC,EACZ,QAASuE,EACT,aAAcC,EACd,OAAQ1L,EACR,UAAW8L,EACX,OAAQ,SAAgB9L,EAAQ+L,EAAO,CACrC,OAAOC,GAAQpJ,GAAQX,EAAI+B,EAAQiD,EAAUjH,EAAQN,GAAQM,CAAM,EAAG+B,EAAKgK,CAAK,CAClF,EACA,QAASE,CACX,EAAGJ,CAAK,CAAC,CACX,CAGA,SAASK,GAAU,CACjBN,EAAc,0BAA0B,EAExCzL,EAAM,sBAAsB,EAExBA,IAAUuL,GACZA,EAAa,sBAAsB,CAEvC,CAGA,SAASI,EAAUK,EAAW,CAC5B,OAAAP,EAAc,oBAAqB,CACjC,UAAWO,CACb,CAAC,EAEGA,IAEEX,EACFD,EAAe,WAAW,EAE1BA,EAAe,WAAWpL,CAAK,EAG7BA,IAAUuL,IAEZxB,GAAYlG,EAAQV,GAAcA,GAAY,QAAQ,WAAaiI,EAAe,QAAQ,WAAY,EAAK,EAC3GrB,GAAYlG,EAAQ1C,EAAQ,WAAY,EAAI,GAG1CgC,KAAgBnD,GAASA,IAAUV,GAAS,OAC9C6D,GAAcnD,EACLA,IAAUV,GAAS,QAAU6D,KACtCA,GAAc,MAIZoI,IAAiBvL,IACnBA,EAAM,sBAAwBH,GAGhCG,EAAM,WAAW,UAAY,CAC3ByL,EAAc,2BAA2B,EACzCzL,EAAM,sBAAwB,IAChC,CAAC,EAEGA,IAAUuL,IACZA,EAAa,WAAW,EACxBA,EAAa,sBAAwB,QAKrC1L,IAAWgE,GAAU,CAACA,EAAO,UAAYhE,IAAWiC,GAAM,CAACjC,EAAO,YACpEqF,GAAa,MAIX,CAAC/D,EAAQ,gBAAkB,CAACS,EAAI,QAAU/B,IAAW,WACvDgE,EAAO,WAAW9E,EAAO,EAAE,iBAAiB6C,EAAI,MAAM,EAGtD,CAACoK,GAAatD,GAA8B9G,CAAG,GAGjD,CAACT,EAAQ,gBAAkBS,EAAI,iBAAmBA,EAAI,gBAAgB,EAC/D4J,EAAiB,EAC1B,CAGA,SAASM,GAAU,CACjB/I,GAAW2G,GAAM7F,CAAM,EACvBZ,GAAoByG,GAAM7F,EAAQ1C,EAAQ,SAAS,EAEnDmD,GAAe,CACb,SAAUtE,EACV,KAAM,SACN,KAAM8B,EACN,SAAUiB,GACV,kBAAmBE,GACnB,cAAerB,CACjB,CAAC,CACH,CAQA,GANIA,EAAI,iBAAmB,QACzBA,EAAI,YAAcA,EAAI,eAAe,EAGvC/B,EAAS4J,GAAQ5J,EAAQsB,EAAQ,UAAWW,EAAI,EAAI,EACpD2J,EAAc,UAAU,EACpBnM,GAAS,cAAe,OAAOkM,EAEnC,GAAI3H,EAAO,SAASjC,EAAI,MAAM,GAAK/B,EAAO,UAAYA,EAAO,YAAcA,EAAO,YAAcG,EAAM,wBAA0BH,EAC9H,OAAO8L,EAAU,EAAK,EAKxB,GAFAjH,GAAkB,GAEd0G,GAAkB,CAACjK,EAAQ,WAAakK,EAAUC,IAAYH,EAASrH,KAAarB,IACtFU,KAAgB,OAAS,KAAK,YAAcqB,GAAY,UAAU,KAAM4G,EAAgBvH,EAAQjC,CAAG,IAAM2G,EAAM,SAAS,KAAM6C,EAAgBvH,EAAQjC,CAAG,GAAI,CAI7J,GAHAoF,EAAW,KAAK,cAAcpF,EAAK/B,CAAM,IAAM,WAC/CiH,EAAWvH,GAAQsE,CAAM,EACzB4H,EAAc,eAAe,EACzBnM,GAAS,cAAe,OAAOkM,EAEnC,GAAIL,EACF,OAAArH,GAAWrB,GAEXsJ,EAAQ,EAER,KAAK,WAAW,EAEhBN,EAAc,QAAQ,EAEjBnM,GAAS,gBACR0E,GACFvB,GAAO,aAAaoB,EAAQG,EAAM,EAElCvB,GAAO,YAAYoB,CAAM,GAItB8H,EAAU,EAAI,EAGvB,IAAIM,EAAcrE,GAAU9F,EAAIX,EAAQ,SAAS,EAEjD,GAAI,CAAC8K,GAAeC,GAAatK,EAAKoF,EAAU,IAAI,GAAK,CAACiF,EAAY,SAAU,CAG9E,GAAIA,IAAgBpI,EAClB,OAAO8H,EAAU,EAAK,EAYxB,GARIM,GAAenK,IAAOF,EAAI,SAC5B/B,EAASoM,GAGPpM,IACFkH,EAAaxH,GAAQM,CAAM,GAGzBgM,GAAQpJ,GAAQX,EAAI+B,EAAQiD,EAAUjH,EAAQkH,EAAYnF,EAAK,CAAC,CAAC/B,CAAM,IAAM,GAC/E,OAAAkM,EAAQ,EAEJE,GAAeA,EAAY,YAE7BnK,EAAG,aAAa+B,EAAQoI,EAAY,WAAW,EAE/CnK,EAAG,YAAY+B,CAAM,EAGvBC,GAAWhC,EAEXgK,EAAQ,EACDH,EAAU,EAAI,CAEzB,SAAWM,GAAeE,GAAcvK,EAAKoF,EAAU,IAAI,EAAG,CAE5D,IAAIoF,EAAa9F,GAASxE,EAAI,EAAGX,EAAS,EAAI,EAE9C,GAAIiL,IAAevI,EACjB,OAAO8H,EAAU,EAAK,EAMxB,GAHA9L,EAASuM,EACTrF,EAAaxH,GAAQM,CAAM,EAEvBgM,GAAQpJ,GAAQX,EAAI+B,EAAQiD,EAAUjH,EAAQkH,EAAYnF,EAAK,EAAK,IAAM,GAC5E,OAAAmK,EAAQ,EACRjK,EAAG,aAAa+B,EAAQuI,CAAU,EAClCtI,GAAWhC,EAEXgK,EAAQ,EACDH,EAAU,EAAI,CAEzB,SAAW9L,EAAO,aAAeiC,EAAI,CACnCiF,EAAaxH,GAAQM,CAAM,EAC3B,IAAIwM,EAAY,EACZC,EACAC,EAAiB1I,EAAO,aAAe/B,EACvC0K,EAAkB,CAAC3F,GAAmBhD,EAAO,UAAYA,EAAO,QAAUiD,EAAUjH,EAAO,UAAYA,EAAO,QAAUkH,EAAYC,CAAQ,EAC5IyF,EAAQzF,EAAW,MAAQ,OAC3B0F,EAAkBC,GAAe9M,EAAQ,MAAO,KAAK,GAAK8M,GAAe9I,EAAQ,MAAO,KAAK,EAC7F+I,EAAeF,EAAkBA,EAAgB,UAAY,OAE7DxH,KAAerF,IACjByM,EAAwBvF,EAAW0F,CAAK,EACxCrH,GAAwB,GACxBC,GAAyB,CAACmH,GAAmBrL,EAAQ,YAAcoL,GAGrEF,EAAYQ,GAAkBjL,EAAK/B,EAAQkH,EAAYC,EAAUwF,EAAkB,EAAIrL,EAAQ,cAAeA,EAAQ,uBAAyB,KAAOA,EAAQ,cAAgBA,EAAQ,sBAAuBkE,GAAwBH,KAAerF,CAAM,EAC1P,IAAIiN,EAEJ,GAAIT,IAAc,EAAG,CAEnB,IAAIU,EAAYrD,GAAM7F,CAAM,EAE5B,GACEkJ,GAAaV,EACbS,EAAUhJ,GAAS,SAASiJ,CAAS,QAC9BD,IAAYzN,GAAIyN,EAAS,SAAS,IAAM,QAAUA,IAAY/I,IACzE,CAGA,GAAIsI,IAAc,GAAKS,IAAYjN,EACjC,OAAO8L,EAAU,EAAK,EAGxBzG,GAAarF,EACbsF,GAAgBkH,EAChB,IAAIW,GAAcnN,EAAO,mBACrB+L,GAAQ,GACZA,GAAQS,IAAc,EAEtB,IAAIY,EAAapB,GAAQpJ,GAAQX,EAAI+B,EAAQiD,EAAUjH,EAAQkH,EAAYnF,EAAKgK,EAAK,EAErF,GAAIqB,IAAe,GACjB,OAAIA,IAAe,GAAKA,IAAe,MACrCrB,GAAQqB,IAAe,GAGzBxH,GAAU,GACV,WAAWyH,GAAW,EAAE,EACxBnB,EAAQ,EAEJH,IAAS,CAACoB,GACZlL,EAAG,YAAY+B,CAAM,EAErBhE,EAAO,WAAW,aAAagE,EAAQ+H,GAAQoB,GAAcnN,CAAM,EAIjE6M,GACFS,GAAST,EAAiB,EAAGE,EAAeF,EAAgB,SAAS,EAGvE5I,GAAWD,EAAO,WAGdyI,IAA0B,QAAa,CAACjH,KAC1CC,GAAqB,KAAK,IAAIgH,EAAwB/M,GAAQM,CAAM,EAAE4M,CAAK,CAAC,GAG9EX,EAAQ,EACDH,EAAU,EAAI,CAEzB,CAEA,GAAI7J,EAAG,SAAS+B,CAAM,EACpB,OAAO8H,EAAU,EAAK,CAE1B,CAEA,MAAO,EACT,EACA,sBAAuB,KACvB,eAAgB,UAA0B,CACxCxB,GAAI,SAAU,YAAa,KAAK,YAAY,EAC5CA,GAAI,SAAU,YAAa,KAAK,YAAY,EAC5CA,GAAI,SAAU,cAAe,KAAK,YAAY,EAC9CA,GAAI,SAAU,WAAYzB,EAA6B,EACvDyB,GAAI,SAAU,YAAazB,EAA6B,EACxDyB,GAAI,SAAU,YAAazB,EAA6B,CAC1D,EACA,aAAc,UAAwB,CACpC,IAAIkB,EAAgB,KAAK,GAAG,cAC5BO,GAAIP,EAAe,UAAW,KAAK,OAAO,EAC1CO,GAAIP,EAAe,WAAY,KAAK,OAAO,EAC3CO,GAAIP,EAAe,YAAa,KAAK,OAAO,EAC5CO,GAAIP,EAAe,cAAe,KAAK,OAAO,EAC9CO,GAAI,SAAU,cAAe,IAAI,CACnC,EACA,QAAS,SAETvI,EAAK,CACH,IAAIE,EAAK,KAAK,GACVX,EAAU,KAAK,QAYnB,GAVA4B,GAAW2G,GAAM7F,CAAM,EACvBZ,GAAoByG,GAAM7F,EAAQ1C,EAAQ,SAAS,EACnDuC,GAAY,OAAQ,KAAM,CACxB,IAAK9B,CACP,CAAC,EACDkC,GAAWD,GAAUA,EAAO,WAE5Bd,GAAW2G,GAAM7F,CAAM,EACvBZ,GAAoByG,GAAM7F,EAAQ1C,EAAQ,SAAS,EAE/C7B,GAAS,cAAe,CAC1B,KAAK,SAAS,EAEd,MACF,CAEAmF,GAAsB,GACtBY,GAAyB,GACzBD,GAAwB,GACxB,cAAc,KAAK,OAAO,EAC1B,aAAa,KAAK,eAAe,EAEjCgI,GAAgB,KAAK,OAAO,EAE5BA,GAAgB,KAAK,YAAY,EAG7B,KAAK,kBACPjD,GAAI,SAAU,OAAQ,IAAI,EAC1BA,GAAIrI,EAAI,YAAa,KAAK,YAAY,GAGxC,KAAK,eAAe,EAEpB,KAAK,aAAa,EAEdkH,IACF3J,GAAI,SAAS,KAAM,cAAe,EAAE,EAGtCA,GAAIwE,EAAQ,YAAa,EAAE,EAEvBjC,IACEuC,KACFvC,EAAI,YAAcA,EAAI,eAAe,EACrC,CAACT,EAAQ,YAAcS,EAAI,gBAAgB,GAG7CmC,IAAWA,GAAQ,YAAcA,GAAQ,WAAW,YAAYA,EAAO,GAEnEtB,KAAWqB,IAAYX,IAAeA,GAAY,cAAgB,UAEpER,IAAWA,GAAQ,YAAcA,GAAQ,WAAW,YAAYA,EAAO,EAGrEkB,IACE,KAAK,iBACPsG,GAAItG,EAAQ,UAAW,IAAI,EAG7BoG,GAAkBpG,CAAM,EAExBA,EAAO,MAAM,aAAa,EAAI,GAG1BM,IAAS,CAACM,IACZsF,GAAYlG,EAAQV,GAAcA,GAAY,QAAQ,WAAa,KAAK,QAAQ,WAAY,EAAK,EAGnG4G,GAAYlG,EAAQ,KAAK,QAAQ,YAAa,EAAK,EAEnDS,GAAe,CACb,SAAU,KACV,KAAM,WACN,KAAMR,GACN,SAAU,KACV,kBAAmB,KACnB,cAAelC,CACjB,CAAC,EAEGa,KAAWqB,IACTf,IAAY,IAEduB,GAAe,CACb,OAAQR,GACR,KAAM,MACN,KAAMA,GACN,OAAQrB,GACR,cAAeb,CACjB,CAAC,EAGD0C,GAAe,CACb,SAAU,KACV,KAAM,SACN,KAAMR,GACN,cAAelC,CACjB,CAAC,EAGD0C,GAAe,CACb,OAAQR,GACR,KAAM,OACN,KAAMA,GACN,OAAQrB,GACR,cAAeb,CACjB,CAAC,EAED0C,GAAe,CACb,SAAU,KACV,KAAM,OACN,KAAMR,GACN,cAAelC,CACjB,CAAC,GAGHuB,IAAeA,GAAY,KAAK,GAE5BJ,KAAaD,IACXC,IAAY,IAEduB,GAAe,CACb,SAAU,KACV,KAAM,SACN,KAAMR,GACN,cAAelC,CACjB,CAAC,EAED0C,GAAe,CACb,SAAU,KACV,KAAM,OACN,KAAMR,GACN,cAAelC,CACjB,CAAC,GAKHtC,GAAS,UAEPyD,IAAY,MAAQA,KAAa,MACnCA,GAAWD,GACXG,GAAoBD,IAGtBsB,GAAe,CACb,SAAU,KACV,KAAM,MACN,KAAMR,GACN,cAAelC,CACjB,CAAC,EAGD,KAAK,KAAK,KAKhB,KAAK,SAAS,CAChB,EACA,SAAU,UAAoB,CAC5B8B,GAAY,UAAW,IAAI,EAC3BjB,GAASoB,EAASC,GAAWC,GAAUC,GAASrB,GAAUsB,GAAaC,GAAcU,GAASC,GAAWV,GAAQpB,GAAWE,GAAoBH,GAAWE,GAAoBkC,GAAaC,GAAgBhC,GAAcqB,GAAclF,GAAS,QAAUA,GAAS,MAAQA,GAAS,MAAQA,GAAS,OAAS,KAC/SoG,GAAkB,QAAQ,SAAU5D,EAAI,CACtCA,EAAG,QAAU,EACf,CAAC,EACD4D,GAAkB,OAASZ,GAASC,GAAS,CAC/C,EACA,YAAa,SAEbnD,EAAK,CACH,OAAQA,EAAI,KAAM,CAChB,IAAK,OACL,IAAK,UACH,KAAK,QAAQA,CAAG,EAEhB,MAEF,IAAK,YACL,IAAK,WACCiC,IACF,KAAK,YAAYjC,CAAG,EAEpByL,GAAgBzL,CAAG,GAGrB,MAEF,IAAK,cACHA,EAAI,eAAe,EACnB,KACJ,CACF,EAMA,QAAS,UAAmB,CAQ1B,QAPI0L,EAAQ,CAAC,EACTxL,EACA3C,EAAW,KAAK,GAAG,SACnB0J,EAAI,EACJ0E,EAAIpO,EAAS,OACbgC,EAAU,KAAK,QAEZ0H,EAAI0E,EAAG1E,IACZ/G,EAAK3C,EAAS0J,CAAC,EAEXY,GAAQ3H,EAAIX,EAAQ,UAAW,KAAK,GAAI,EAAK,GAC/CmM,EAAM,KAAKxL,EAAG,aAAaX,EAAQ,UAAU,GAAKqM,GAAY1L,CAAE,CAAC,EAIrE,OAAOwL,CACT,EAMA,KAAM,SAAcA,EAAOG,EAAc,CACvC,IAAIC,EAAQ,CAAC,EACTjL,EAAS,KAAK,GAClB,KAAK,QAAQ,EAAE,QAAQ,SAAUkL,EAAI9E,EAAG,CACtC,IAAI/G,EAAKW,EAAO,SAASoG,CAAC,EAEtBY,GAAQ3H,EAAI,KAAK,QAAQ,UAAWW,EAAQ,EAAK,IACnDiL,EAAMC,CAAE,EAAI7L,EAEhB,EAAG,IAAI,EACP2L,GAAgB,KAAK,sBAAsB,EAC3CH,EAAM,QAAQ,SAAUK,EAAI,CACtBD,EAAMC,CAAE,IACVlL,EAAO,YAAYiL,EAAMC,CAAE,CAAC,EAC5BlL,EAAO,YAAYiL,EAAMC,CAAE,CAAC,EAEhC,CAAC,EACDF,GAAgB,KAAK,WAAW,CAClC,EAKA,KAAM,UAAgB,CACpB,IAAIG,EAAQ,KAAK,QAAQ,MACzBA,GAASA,EAAM,KAAOA,EAAM,IAAI,IAAI,CACtC,EAQA,QAAS,SAAmB9L,EAAI+L,EAAU,CACxC,OAAOpE,GAAQ3H,EAAI+L,GAAY,KAAK,QAAQ,UAAW,KAAK,GAAI,EAAK,CACvE,EAQA,OAAQ,SAAgB1L,EAAME,EAAO,CACnC,IAAIlB,EAAU,KAAK,QAEnB,GAAIkB,IAAU,OACZ,OAAOlB,EAAQgB,CAAI,EAEnB,IAAIG,EAAgBhB,GAAc,aAAa,KAAMa,EAAME,CAAK,EAE5D,OAAOC,EAAkB,IAC3BnB,EAAQgB,CAAI,EAAIG,EAEhBnB,EAAQgB,CAAI,EAAIE,EAGdF,IAAS,SACX6F,GAAc7G,CAAO,CAG3B,EAKA,QAAS,UAAmB,CAC1BuC,GAAY,UAAW,IAAI,EAC3B,IAAI5B,EAAK,KAAK,GACdA,EAAG/C,EAAO,EAAI,KACdoL,GAAIrI,EAAI,YAAa,KAAK,WAAW,EACrCqI,GAAIrI,EAAI,aAAc,KAAK,WAAW,EACtCqI,GAAIrI,EAAI,cAAe,KAAK,WAAW,EAEnC,KAAK,kBACPqI,GAAIrI,EAAI,WAAY,IAAI,EACxBqI,GAAIrI,EAAI,YAAa,IAAI,GAI3B,MAAM,UAAU,QAAQ,KAAKA,EAAG,iBAAiB,aAAa,EAAG,SAAUA,EAAI,CAC7EA,EAAG,gBAAgB,WAAW,CAChC,CAAC,EAED,KAAK,QAAQ,EAEb,KAAK,0BAA0B,EAE/B6C,GAAU,OAAOA,GAAU,QAAQ,KAAK,EAAE,EAAG,CAAC,EAC9C,KAAK,GAAK7C,EAAK,IACjB,EACA,WAAY,UAAsB,CAChC,GAAI,CAACoC,GAAa,CAEhB,GADAR,GAAY,YAAa,IAAI,EACzBpE,GAAS,cAAe,OAC5BD,GAAIsD,GAAS,UAAW,MAAM,EAE1B,KAAK,QAAQ,mBAAqBA,GAAQ,YAC5CA,GAAQ,WAAW,YAAYA,EAAO,EAGxCuB,GAAc,EAChB,CACF,EACA,WAAY,SAAoBf,EAAa,CAC3C,GAAIA,EAAY,cAAgB,QAAS,CACvC,KAAK,WAAW,EAEhB,MACF,CAEA,GAAIe,GAAa,CAEf,GADAR,GAAY,YAAa,IAAI,EACzBpE,GAAS,cAAe,OAExBuE,EAAO,YAAcpB,IAAU,CAAC,KAAK,QAAQ,MAAM,YACrDA,GAAO,aAAaE,GAASkB,CAAM,EAC1BG,GACTvB,GAAO,aAAaE,GAASqB,EAAM,EAEnCvB,GAAO,YAAYE,EAAO,EAGxB,KAAK,QAAQ,MAAM,aACrB,KAAK,QAAQkB,EAAQlB,EAAO,EAG9BtD,GAAIsD,GAAS,UAAW,EAAE,EAC1BuB,GAAc,EAChB,CACF,CACF,EAEA,SAASmJ,GAETzL,EAAK,CACCA,EAAI,eACNA,EAAI,aAAa,WAAa,QAGhCA,EAAI,YAAcA,EAAI,eAAe,CACvC,CAEA,SAASiK,GAAQhJ,EAAQD,EAAMiB,EAAQiD,EAAUpE,EAAUqE,EAAY7D,EAAe4K,EAAiB,CACrG,IAAIlM,EACAD,EAAWkB,EAAO9D,EAAO,EACzBgP,EAAWpM,EAAS,QAAQ,OAC5BqM,EAEJ,OAAI,OAAO,aAAe,CAAC1K,IAAc,CAACC,GACxC3B,EAAM,IAAI,YAAY,OAAQ,CAC5B,QAAS,GACT,WAAY,EACd,CAAC,GAEDA,EAAM,SAAS,YAAY,OAAO,EAClCA,EAAI,UAAU,OAAQ,GAAM,EAAI,GAGlCA,EAAI,GAAKgB,EACThB,EAAI,KAAOiB,EACXjB,EAAI,QAAUiC,EACdjC,EAAI,YAAckF,EAClBlF,EAAI,QAAUc,GAAYE,EAC1BhB,EAAI,YAAcmF,GAAcxH,GAAQqD,CAAI,EAC5ChB,EAAI,gBAAkBkM,EACtBlM,EAAI,cAAgBsB,EACpBL,EAAO,cAAcjB,CAAG,EAEpBmM,IACFC,EAASD,EAAS,KAAKpM,EAAUC,EAAKsB,CAAa,GAG9C8K,CACT,CAEA,SAAS/D,GAAkBnI,EAAI,CAC7BA,EAAG,UAAY,EACjB,CAEA,SAASoL,IAAY,CACnBzH,GAAU,EACZ,CAEA,SAAS0G,GAAcvK,EAAKoF,EAAUrF,EAAU,CAC9C,IAAIkG,EAAOtI,GAAQ+G,GAAS3E,EAAS,GAAI,EAAGA,EAAS,QAAS,EAAI,CAAC,EAC/DsM,EAAS,GACb,OAAOjH,EAAWpF,EAAI,QAAUiG,EAAK,KAAOoG,GAAUrM,EAAI,QAAUiG,EAAK,KAAOjG,EAAI,QAAUiG,EAAK,MAAQjG,EAAI,QAAUiG,EAAK,IAAMoG,GAAUrM,EAAI,QAAUiG,EAAK,QAAUjG,EAAI,QAAUiG,EAAK,IAChM,CAEA,SAASqE,GAAatK,EAAKoF,EAAUrF,EAAU,CAC7C,IAAIkG,EAAOtI,GAAQqI,GAAUjG,EAAS,GAAIA,EAAS,QAAQ,SAAS,CAAC,EACjEsM,EAAS,GACb,OAAOjH,EAAWpF,EAAI,QAAUiG,EAAK,MAAQoG,GAAUrM,EAAI,SAAWiG,EAAK,OAASjG,EAAI,QAAUiG,EAAK,QAAUjG,EAAI,SAAWiG,EAAK,KAAOjG,EAAI,QAAUiG,EAAK,OAASjG,EAAI,QAAUiG,EAAK,KAAOjG,EAAI,SAAWiG,EAAK,OAASjG,EAAI,QAAUiG,EAAK,OAASoG,CAC7P,CAEA,SAASpB,GAAkBjL,EAAK/B,EAAQkH,EAAYC,EAAUkH,EAAeC,EAAuBC,EAAYC,EAAc,CAC5H,IAAIC,EAActH,EAAWpF,EAAI,QAAUA,EAAI,QAC3C2M,EAAevH,EAAWD,EAAW,OAASA,EAAW,MACzDyH,EAAWxH,EAAWD,EAAW,IAAMA,EAAW,KAClD0H,EAAWzH,EAAWD,EAAW,OAASA,EAAW,MACrD2H,EAAS,GAEb,GAAI,CAACN,GAEH,GAAIC,GAAgB/I,GAAqBiJ,EAAeL,GAQtD,GALI,CAAC9I,KAA0BD,KAAkB,EAAImJ,EAAcE,EAAWD,EAAeJ,EAAwB,EAAIG,EAAcG,EAAWF,EAAeJ,EAAwB,KAEvL/I,GAAwB,IAGrBA,GAOHsJ,EAAS,WALLvJ,KAAkB,EAAImJ,EAAcE,EAAWlJ,GACjDgJ,EAAcG,EAAWnJ,GACzB,MAAO,CAACH,WAORmJ,EAAcE,EAAWD,GAAgB,EAAIL,GAAiB,GAAKI,EAAcG,EAAWF,GAAgB,EAAIL,GAAiB,EACnI,OAAOS,GAAoB9O,CAAM,EAOvC,OAFA6O,EAASA,GAAUN,EAEfM,IAEEJ,EAAcE,EAAWD,EAAeJ,EAAwB,GAAKG,EAAcG,EAAWF,EAAeJ,EAAwB,GAChIG,EAAcE,EAAWD,EAAe,EAAI,EAAI,GAIpD,CACT,CASA,SAASI,GAAoB9O,EAAQ,CACnC,OAAI6J,GAAM7F,CAAM,EAAI6F,GAAM7J,CAAM,EACvB,EAEA,EAEX,CASA,SAAS2N,GAAY1L,EAAI,CAKvB,QAJI8M,EAAM9M,EAAG,QAAUA,EAAG,UAAYA,EAAG,IAAMA,EAAG,KAAOA,EAAG,YACxD+G,EAAI+F,EAAI,OACRC,EAAM,EAEHhG,KACLgG,GAAOD,EAAI,WAAW/F,CAAC,EAGzB,OAAOgG,EAAI,SAAS,EAAE,CACxB,CAEA,SAASrF,GAAuBsF,EAAM,CACpCpJ,GAAkB,OAAS,EAI3B,QAHIqJ,EAASD,EAAK,qBAAqB,OAAO,EAC1CE,EAAMD,EAAO,OAEVC,KAAO,CACZ,IAAIlN,EAAKiN,EAAOC,CAAG,EACnBlN,EAAG,SAAW4D,GAAkB,KAAK5D,CAAE,CACzC,CACF,CAEA,SAASsI,GAAUnB,EAAI,CACrB,OAAO,WAAWA,EAAI,CAAC,CACzB,CAEA,SAASmE,GAAgBO,EAAI,CAC3B,OAAO,aAAaA,CAAE,CACxB,CAGIhI,IACFuD,GAAG,SAAU,YAAa,SAAUtH,EAAK,EAClCtC,GAAS,QAAUmF,KAAwB7C,EAAI,YAClDA,EAAI,eAAe,CAEvB,CAAC,EAIHtC,GAAS,MAAQ,CACf,GAAI4J,GACJ,IAAKiB,GACL,IAAK9K,GACL,KAAM2K,GACN,GAAI,SAAYlI,EAAI+L,EAAU,CAC5B,MAAO,CAAC,CAACpE,GAAQ3H,EAAI+L,EAAU/L,EAAI,EAAK,CAC1C,EACA,OAAQmN,GACR,SAAUC,GACV,QAASzF,GACT,YAAaM,GACb,MAAOmB,GACP,MAAOxB,GACP,SAAUU,GACV,eAAgBgD,GAChB,gBAAiBlH,GACjB,SAAUI,EACZ,EAOAhH,GAAS,IAAM,SAAU6P,EAAS,CAChC,OAAOA,EAAQpQ,EAAO,CACxB,EAOAO,GAAS,MAAQ,UAAY,CAC3B,QAAS8P,EAAO,UAAU,OAAQhO,EAAU,IAAI,MAAMgO,CAAI,EAAGC,EAAO,EAAGA,EAAOD,EAAMC,IAClFjO,EAAQiO,CAAI,EAAI,UAAUA,CAAI,EAG5BjO,EAAQ,CAAC,EAAE,cAAgB,QAAOA,EAAUA,EAAQ,CAAC,GACzDA,EAAQ,QAAQ,SAAUG,EAAQ,CAChC,GAAI,CAACA,EAAO,WAAa,CAACA,EAAO,UAAU,YACzC,KAAM,gEAAgE,OAAO,CAAC,EAAE,SAAS,KAAKA,CAAM,CAAC,EAGnGA,EAAO,QAAOjC,GAAS,MAAQG,GAAeA,GAAe,CAAC,EAAGH,GAAS,KAAK,EAAGiC,EAAO,KAAK,GAClGD,GAAc,MAAMC,CAAM,CAC5B,CAAC,CACH,EAQAjC,GAAS,OAAS,SAAUwC,EAAIX,EAAS,CACvC,OAAO,IAAI7B,GAASwC,EAAIX,CAAO,CACjC,EAGA7B,GAAS,QAAUgQ,GAEnB,IAAIC,GAAc,CAAC,EACfC,GACAC,GACAC,GAAY,GAHhB,IAMIC,GAiHJ,SAASC,IAAmB,CAC1BC,GAAY,QAAQ,SAAUC,EAAY,CACxC,cAAcA,EAAW,GAAG,CAC9B,CAAC,EACDD,GAAc,CAAC,CACjB,CAMA,IAAIE,GAAaC,GAAS,SAAUC,EAAKC,EAASC,EAAQC,EAAY,CAEpE,GAAKF,EAAQ,OACb,KAAIG,GAAKJ,EAAI,QAAUA,EAAI,QAAQ,CAAC,EAAIA,GAAK,QACzCK,GAAKL,EAAI,QAAUA,EAAI,QAAQ,CAAC,EAAIA,GAAK,QACzCM,EAAOL,EAAQ,kBACfM,EAAQN,EAAQ,YAChBO,EAAcC,GAA0B,EACxCC,EAAqB,GACrBC,EAEAC,KAAiBV,IACnBU,GAAeV,EACfW,GAAiB,EACjBC,GAAWb,EAAQ,OACnBU,EAAiBV,EAAQ,SAErBa,KAAa,KACfA,GAAWC,GAA2Bb,EAAQ,EAAI,IAItD,IAAIc,EAAY,EACZC,EAAgBH,GAEpB,EAAG,CACD,IAAII,EAAKD,EACLE,EAAOC,GAAQF,CAAE,EACjBG,EAAMF,EAAK,IACXG,EAASH,EAAK,OACdI,EAAOJ,EAAK,KACZK,EAAQL,EAAK,MACbM,EAAQN,EAAK,MACbO,EAASP,EAAK,OACdQ,EAAa,OACbC,EAAa,OACbC,EAAcX,EAAG,YACjBY,EAAeZ,EAAG,aAClBa,EAAQC,GAAId,CAAE,EACde,EAAaf,EAAG,WAChBgB,EAAahB,EAAG,UAEhBA,IAAOV,GACTmB,EAAaF,EAAQI,IAAgBE,EAAM,YAAc,QAAUA,EAAM,YAAc,UAAYA,EAAM,YAAc,WACvHH,EAAaF,EAASI,IAAiBC,EAAM,YAAc,QAAUA,EAAM,YAAc,UAAYA,EAAM,YAAc,aAEzHJ,EAAaF,EAAQI,IAAgBE,EAAM,YAAc,QAAUA,EAAM,YAAc,UACvFH,EAAaF,EAASI,IAAiBC,EAAM,YAAc,QAAUA,EAAM,YAAc,WAG3F,IAAII,EAAKR,IAAe,KAAK,IAAIH,EAAQpB,CAAC,GAAKE,GAAQ2B,EAAaR,EAAQI,IAAgB,KAAK,IAAIN,EAAOnB,CAAC,GAAKE,GAAQ,CAAC,CAAC2B,GACxHG,EAAKR,IAAe,KAAK,IAAIN,EAASjB,CAAC,GAAKC,GAAQ4B,EAAaR,EAASI,IAAiB,KAAK,IAAIT,EAAMhB,CAAC,GAAKC,GAAQ,CAAC,CAAC4B,GAE9H,GAAI,CAACG,GAAYrB,CAAS,EACxB,QAASsB,EAAI,EAAGA,GAAKtB,EAAWsB,IACzBD,GAAYC,CAAC,IAChBD,GAAYC,CAAC,EAAI,CAAC,IAKpBD,GAAYrB,CAAS,EAAE,IAAMmB,GAAME,GAAYrB,CAAS,EAAE,IAAMoB,GAAMC,GAAYrB,CAAS,EAAE,KAAOE,KACtGmB,GAAYrB,CAAS,EAAE,GAAKE,EAC5BmB,GAAYrB,CAAS,EAAE,GAAKmB,EAC5BE,GAAYrB,CAAS,EAAE,GAAKoB,EAC5B,cAAcC,GAAYrB,CAAS,EAAE,GAAG,GAEpCmB,GAAM,GAAKC,GAAM,KACnB1B,EAAqB,GAGrB2B,GAAYrB,CAAS,EAAE,IAAM,YAAY,UAAY,CAE/Cb,GAAc,KAAK,QAAU,GAC/BoC,GAAS,OAAO,aAAaC,EAAU,EAIzC,IAAIC,GAAgBJ,GAAY,KAAK,KAAK,EAAE,GAAKA,GAAY,KAAK,KAAK,EAAE,GAAK9B,EAAQ,EAClFmC,GAAgBL,GAAY,KAAK,KAAK,EAAE,GAAKA,GAAY,KAAK,KAAK,EAAE,GAAK9B,EAAQ,EAElF,OAAOI,GAAmB,YACxBA,EAAe,KAAK4B,GAAS,QAAQ,WAAWI,EAAO,EAAGD,GAAeD,GAAezC,EAAKwC,GAAYH,GAAY,KAAK,KAAK,EAAE,EAAE,IAAM,YAK/IO,GAASP,GAAY,KAAK,KAAK,EAAE,GAAIK,GAAeD,EAAa,CACnE,EAAE,KAAK,CACL,MAAOzB,CACT,CAAC,EAAG,EAAE,IAIVA,GACF,OAASf,EAAQ,cAAgBgB,IAAkBT,IAAgBS,EAAgBF,GAA2BE,EAAe,EAAK,IAElI4B,GAAYnC,EACd,EAAG,EAAE,EAEDoC,GAAO,SAAcC,EAAM,CAC7B,IAAIC,EAAgBD,EAAK,cACrBE,EAAcF,EAAK,YACnBG,EAASH,EAAK,OACdI,EAAiBJ,EAAK,eACtBK,EAAwBL,EAAK,sBAC7BM,EAAqBN,EAAK,mBAC1BO,EAAuBP,EAAK,qBAChC,GAAKC,EACL,KAAIO,EAAaN,GAAeE,EAChCE,EAAmB,EACnB,IAAIG,EAAQR,EAAc,gBAAkBA,EAAc,eAAe,OAASA,EAAc,eAAe,CAAC,EAAIA,EAChHS,EAAS,SAAS,iBAAiBD,EAAM,QAASA,EAAM,OAAO,EACnEF,EAAqB,EAEjBC,GAAc,CAACA,EAAW,GAAG,SAASE,CAAM,IAC9CL,EAAsB,OAAO,EAC7B,KAAK,QAAQ,CACX,OAAQF,EACR,YAAaD,CACf,CAAC,GAEL,EAEA,SAASS,IAAS,CAAC,CAEnBA,GAAO,UAAY,CACjB,WAAY,KACZ,UAAW,SAAmBC,EAAO,CACnC,IAAIC,EAAoBD,EAAM,kBAC9B,KAAK,WAAaC,CACpB,EACA,QAAS,SAAiBC,EAAO,CAC/B,IAAIX,EAASW,EAAM,OACfZ,EAAcY,EAAM,YACxB,KAAK,SAAS,sBAAsB,EAEhCZ,GACFA,EAAY,sBAAsB,EAGpC,IAAIa,EAAcC,GAAS,KAAK,SAAS,GAAI,KAAK,WAAY,KAAK,OAAO,EAEtED,EACF,KAAK,SAAS,GAAG,aAAaZ,EAAQY,CAAW,EAEjD,KAAK,SAAS,GAAG,YAAYZ,CAAM,EAGrC,KAAK,SAAS,WAAW,EAErBD,GACFA,EAAY,WAAW,CAE3B,EACA,KAAMH,EACR,EAEAkB,GAASN,GAAQ,CACf,WAAY,eACd,CAAC,EAED,SAASO,IAAS,CAAC,CAEnBA,GAAO,UAAY,CACjB,QAAS,SAAiBC,EAAO,CAC/B,IAAIhB,EAASgB,EAAM,OACfjB,EAAciB,EAAM,YACpBC,EAAiBlB,GAAe,KAAK,SACzCkB,EAAe,sBAAsB,EACrCjB,EAAO,YAAcA,EAAO,WAAW,YAAYA,CAAM,EACzDiB,EAAe,WAAW,CAC5B,EACA,KAAMrB,EACR,EAEAkB,GAASC,GAAQ,CACf,WAAY,eACd,CAAC,EAED,IAAIG,GAAU,CAACH,GAAQP,EAAM,EAEzBW,GAEJ,SAASC,IAAa,CACpB,SAASC,GAAO,CACd,KAAK,SAAW,CACd,UAAW,yBACb,CACF,CAEA,OAAAA,EAAK,UAAY,CACf,UAAW,SAAmBxB,EAAM,CAClC,IAAIG,EAASH,EAAK,OAClBsB,GAAanB,CACf,EACA,cAAe,SAAuBS,EAAO,CAC3C,IAAIa,EAAYb,EAAM,UAClBF,EAASE,EAAM,OACfc,EAASd,EAAM,OACfR,EAAiBQ,EAAM,eACvBe,EAAUf,EAAM,QAChBgB,EAAShB,EAAM,OACnB,GAAKR,EAAe,QAAQ,KAC5B,KAAIjC,EAAK,KAAK,SAAS,GACnBjB,EAAU,KAAK,QAEnB,GAAIwD,GAAUA,IAAWvC,EAAI,CAC3B,IAAI0D,EAAaP,GAEbI,EAAOhB,CAAM,IAAM,IACrBoB,GAAYpB,EAAQxD,EAAQ,UAAW,EAAI,EAC3CoE,GAAaZ,GAEbY,GAAa,KAGXO,GAAcA,IAAeP,IAC/BQ,GAAYD,EAAY3E,EAAQ,UAAW,EAAK,CAEpD,CAEAyE,EAAQ,EACRF,EAAU,EAAI,EACdG,EAAO,EACT,EACA,KAAM,SAAcd,EAAO,CACzB,IAAIV,EAAiBU,EAAM,eACvBZ,EAAcY,EAAM,YACpBX,EAASW,EAAM,OACfN,EAAaN,GAAe,KAAK,SACjChD,EAAU,KAAK,QACnBoE,IAAcQ,GAAYR,GAAYpE,EAAQ,UAAW,EAAK,EAE1DoE,KAAepE,EAAQ,MAAQgD,GAAeA,EAAY,QAAQ,OAChEC,IAAWmB,KACbd,EAAW,sBAAsB,EAC7BA,IAAeJ,GAAgBA,EAAe,sBAAsB,EACxE2B,GAAU5B,EAAQmB,EAAU,EAC5Bd,EAAW,WAAW,EAClBA,IAAeJ,GAAgBA,EAAe,WAAW,EAGnE,EACA,QAAS,UAAmB,CAC1BkB,GAAa,IACf,CACF,EACOL,GAASO,EAAM,CACpB,WAAY,OACZ,gBAAiB,UAA2B,CAC1C,MAAO,CACL,SAAUF,EACZ,CACF,CACF,CAAC,CACH,CAEA,SAASS,GAAUC,EAAIC,EAAI,CACzB,IAAIC,EAAKF,EAAG,WACRG,EAAKF,EAAG,WACRG,EACAC,EACA,CAACH,GAAM,CAACC,GAAMD,EAAG,YAAYD,CAAE,GAAKE,EAAG,YAAYH,CAAE,IACzDI,EAAKE,GAAMN,CAAE,EACbK,EAAKC,GAAML,CAAE,EAETC,EAAG,YAAYC,CAAE,GAAKC,EAAKC,GAC7BA,IAGFH,EAAG,aAAaD,EAAIC,EAAG,SAASE,CAAE,CAAC,EACnCD,EAAG,aAAaH,EAAIG,EAAG,SAASE,CAAE,CAAC,EACrC,CCrlGAE,GAAS,MAAMC,EAAO,EACtBD,GAAS,MAAM,IAAIE,EAAM,EAEzB,IAAIC,GAAW,GAEMC,GAArB,cAAqDJ,EAAS,CAI5D,YAAYK,EAASC,EAAS,CAC5B,MAAMD,EAAS,CACb,OAAQ,GACR,SAAAE,GACA,WAAAC,GACA,GAAGF,CACL,CAAC,CACH,CACF,EAEA,SAASC,IAAW,CAClBJ,GAAW,EACb,CAEA,SAASK,GAAW,CAAE,KAAAC,CAAK,EAAG,CAC5BN,GAAW,GACXM,EAAK,iBAAmB,IAC1B,CAEA,SAASC,GAAY,CAAE,QAAAC,CAAQ,EAAG,CAE5BR,IACFS,GAAOD,EAAQ,CAAC,CAAC,CAErB,CAEA,SAASC,GAAO,CAAE,OAAAC,EAAQ,QAAAC,EAAS,QAAAC,CAAQ,EAAG,CArC9C,IAAAC,EAsCE,GAAIF,IAAY,GAAKC,IAAY,EAAG,QAGpCC,EAAAH,EAAO,mBAAP,OAAAA,EAAO,iBAAqBI,GAAoBJ,CAAM,GAEtD,GAAM,CAAE,iBAAAK,CAAiB,EAAIL,EACvB,CAAE,aAAAM,CAAa,EAAID,EACnBE,EAAU,KAAK,IAAI,IAAKD,EAAe,CAAC,EAExC,CAAE,UAAAE,EAAW,UAAAC,CAAU,EAAIJ,EAC3BK,EAAeD,EAAYH,EAC3BK,EAAUT,EAAUM,EAAYC,EAElCE,EAASJ,EAAUE,EACrBG,GAAaP,EAAkBM,EAASJ,CAAO,EACtCI,EAASJ,EAAUG,GAC5BE,GAAaP,EAAkBM,EAASJ,EAAUD,CAAY,CAElE,CAEA,SAASF,GAAoBZ,EAAS,CACpC,MAAI,CAACA,GAAWA,IAAY,SAAS,KAG5B,SAAS,iBACPA,EAAQ,aAAeA,EAAQ,aACjCA,EAEAY,GAAoBZ,EAAQ,UAAU,CAEjD,CAEA,SAASoB,GAAaP,EAAkBQ,EAAK,CAC3CA,EAAM,KAAK,MAAM,KAAK,IAAI,EAAGA,CAAG,CAAC,EAKjCR,EAAiB,MAAM,eAAiB,OACxCA,EAAiB,SAAS,CAAE,IAAAQ,CAAI,CAAC,EACjCR,EAAiB,MAAM,eAAiB,IAC1C,CAEA,SAASS,GAAkBC,EAAU,CACnC,IAAIC,EAAY,GAEhB,OAAO,YAAYC,EAAM,CAClBD,IACHA,EAAY,GACZ,OAAO,WAAW,IAAM,CAAEA,EAAY,EAAM,EAAG,EAAE,EAEjDD,EAAS,MAAM,KAAME,CAAI,EAE7B,CACF,CAEA,SAAS,gBAAgB,iBAAiB,YAAaH,GAAkBjB,EAAW,EAAG,CAAE,QAAS,EAAK,CAAC,EACxG,SAAS,gBAAgB,iBAAiB,OAAQiB,GAAkBf,EAAM,EAAG,CAAE,QAAS,EAAK,CAAC,EC7F9F,IAAqBmB,GAArB,KAAmD,CACjD,YAAYC,EAAmBC,EAAWC,EAAmB,CAC3D,IAAMC,EAAY,kBAAkB,KAAK,OAAO,IAEhD,SAASC,EAAO,CAAE,GAAAC,CAAG,EAAG,CAEtB,OAAOA,IAAOL,GAAqB,CAACK,EAAG,cAAc,CACvD,CAEA,SAASC,EAAM,CAAE,KAAAC,CAAK,EAAG,CACvB,GAAG,KAAKA,EAAM,aAAa,EAG3BA,EAAK,UAAU,IAAI,kBAAkB,EACrC,OAAO,WAAW,IAAM,CACtBA,EAAK,UAAU,OAAO,kBAAkB,CAC1C,EAAG,GAAG,CACR,CAEA,KAAK,UAAY,CAACP,EAAmB,GAAGC,CAAS,EAAE,IAAKO,GAC/C,IAAIC,GAASD,EAAS,CAC3B,MAAOL,EACP,UAAWD,EACX,UAAW,IACX,OAAAE,EACA,MAAAE,CACF,CAAC,CACF,CACH,CAEA,SAAU,CACR,KAAK,UAAU,QAAQI,GAAYA,EAAS,QAAQ,CAAC,EACrD,KAAK,UAAU,OAAS,CAC1B,CACF,ECpCO,SAASC,GAAgBC,EAASC,EAAOC,EAAS,CACvD,IAAMC,EAAeH,EAAQ,QAAQ,QAAQ,EAAE,cAAc,sBAAsB,EACnFG,EAAa,UAAYD,EACzBC,EAAa,UAAYA,EAAa,UAAU,QAAQ,cAAe,EAAE,EACzEA,EAAa,UAAU,IAAI,IAAIF,GAAO,EACtC,GAAG,OAAOE,EAAc,CAAE,QAAS,EAAG,CAAC,CACzC,CCDA,GAAG,SAAS,2BAA4B,CAACC,EAAS,CAAE,QAAAC,EAAS,KAAAC,EAAM,eAAAC,EAAgB,iBAAAC,CAAiB,IAAM,CACxGJ,EAAQ,UAAU,IAAI,OAAO,EAC7B,IAAMK,EAAY,GAAG,QAAQ,MAAML,EAAS,cAAc,EAEpDM,EAAgB,GAAG,QAAQ,MAAMD,EAAW,8BAA8B,EAChF,GAAG,QAAQ,MAAMA,EAAW,gCAAiC,CAAE,KAAM,iBAAe,CAAC,EACrF,IAAME,EAAkB,GAAG,QAAQ,MAAMF,EAAW,uBAAuB,EACrEG,EAAoB,GAAG,QAAQ,MAAMH,EAAW,wBAAwB,EACxEI,EAAuB,GAAG,QAAQ,MAAMJ,EAAW,yBAAyB,EAE5EK,EAAe,GAAG,QAAQ,MAAMF,EAAmB,yBAA0B,CAAE,KAAM,SAAU,KAAM,WAAS,CAAC,EAC/GG,EAA8B,4BAC9BC,EAAiB,uBACnBC,EAAY,GAEVC,EAAa,IAAIC,GACrBd,EACAC,EACAK,EACAE,EACAE,EACAC,CACF,EAEMI,EAAchB,EAAQ,iBAAiBW,CAA2B,EAClEM,EAAW,IAAIC,GAA8BX,EAAiBS,EAAaJ,CAAc,EAC/F,OAAO,iBAAiB,SAAUO,CAAmB,EAErDT,EAAa,iBAAiB,QAASU,CAAa,EACpD,GAAG,GAAGJ,EAAa,QAASK,CAAuB,EACnDC,GAAU,OAAO,SAASF,CAAa,EAEnCjB,IACFoB,EAAO,EACPC,EAAgBxB,CAAO,GAGzB,eAAeoB,GAAgB,CAC7BG,EAAO,EACHnB,GACF,MAAM,GAAG,QAAQA,EAAkB,CAAE,OAAQ,MAAO,CAAC,EAEvDqB,EAAmB,EACfX,EAAW,YACbY,EAAmB,EAEnBC,EAAmB,CAEvB,CAEA,SAASN,EAAwBO,EAAO,CACtC,IAAMC,EAAWD,EAAM,OACjBE,GAAaC,EAAUF,CAAQ,EAEjCC,GAEFvB,EAAgB,YAAYuB,EAAU,EAEtC,GAAG,MAAM,KAAK,CAAE,QAASE,EAAoB,EAAG,YAAa,GAAM,WAAaJ,IAAU,CAAEC,EAAS,YAAYD,GAAM,KAAK,CAAE,CAAE,CAAC,CAErI,CAEA,SAASG,EAAU/B,EAAS,CAC1B,OAAIA,EAAQ,QAAQY,CAAc,EACzBZ,EAEAA,EAAQ,cAAcY,CAAc,CAE/C,CAEA,SAASoB,GAAsB,CAE7B,IAAMC,EAAsB1B,EAAgB,iBAAiBK,CAAc,EACrEsB,EAAuB,GAAG,QAAQ,eAAe3B,EAAgB,SAAS,EAGhF,OAAA2B,EAAqB,UAAU,OAAO,sBAAsB,EAC5DA,EAAqB,UAAU,IAAI,4BAA4B,EAE/D,GAAG,GAAGA,EAAsB,QAAStB,EAAgB,CAACgB,GAAOO,KAAkB,CAC7E,IAAMC,EAAqB,GAAG,KAAK,KAAKH,EAAsBH,GACrDA,EAAW,YAAcK,GAAc,SAC/C,EACD,GAAG,MAAM,OAAOC,CAAkB,CACpC,CAAC,EAEMF,CACT,CAEA,SAASX,GAAS,CAChBb,EAAa,OAAO,EACpBO,EAAS,QAAQ,EACjBK,GAAU,SAAS,EACnB,GAAG,IAAIN,EAAa,QAASK,CAAuB,EACpDR,EAAY,EACd,CAEA,SAASwB,GAAU,CACjBf,GAAU,OAAO,WAAWF,CAAa,EACpCP,GACHS,GAAU,SAAS,EAErBL,EAAS,QAAQ,EACjB,OAAO,oBAAoB,SAAUE,CAAmB,CAC1D,CAEA,SAASA,GAAsB,CAC7B,OAAO,sBAAsB,IAAM,CAhHvC,IAAAmB,EAiHM,IAAMC,EAAc,GAAG,QAAQ,IAAI,MAAM,EAAE,UACrCC,EAAU,GAEVC,GAAgBlC,EAAgB,sBAAsB,EAAE,OACxDmC,GAAiB,CAAC,GAAGnC,EAAgB,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,EAC5DoC,IAAmBL,EAAAI,IAAA,YAAAA,GAAgB,0BAAhB,YAAAJ,EAAyC,SAAU,EACtEM,EAAYH,GAAgBE,EAE5B,CAAE,IAAAE,EAAK,OAAAC,CAAO,EAAIxC,EAAc,sBAAsB,EACtDyC,EAAY,KAAK,IAAI,EAAGR,EAAcM,EAAML,CAAO,EACnDQ,EAAaD,EAAYD,EAE3BF,EAAYI,IACd1C,EAAc,MAAM,OAAS,GAAGyC,MAChCzC,EAAc,MAAM,YAAY,aAAeyC,EAAY,EAAK,IAAM,GAAG,EAE7E,CAAC,CACH,CAEA,SAAStB,GAAqB,CACD,GAAG,QAAQ,MAAMjB,EAAmB,yBAA0B,CAAE,KAAM,SAAU,KAAM,oBAAkB,CAAC,EACjH,iBAAiB,QAASyC,CAAmB,CAClE,CAEA,SAASvB,GAAqB,CAC5BwB,GAAgBlD,EAAS,UAAW,mGAA8E,CACpH,CAEA,SAAS2B,GAAqB,CAC5BuB,GACElD,EACA,UACA,0IACF,CACF,CAEA,eAAeiD,GAAsB,CACnC,IAAME,EAAoB,GAAG,QAAQ,mBAAmB,wBAAwB,EAChF,GAAG,QAAQ,MAAMA,EAAmB,KAAM,CAAE,KAAM,WAAS,CAAC,EAC5D,IAAMC,EAAeD,EAAkB,YAAY,GAAG,QAAQ,eAAe1C,EAAqB,SAAS,CAAC,EAC5Ge,EAAgB4B,CAAY,EAC5B,GAAG,QAAQ,MAAMD,EAAmB,8BAA+B,CAAE,KAAM,SAAU,KAAM,yBAA0B,aAAc,EAAK,CAAC,EAEzI,MAAM,GAAG,MAAM,KAAK,CAAE,QAASA,EAAmB,KAAM,OAAQ,CAAC,CACnE,CAEA,SAAS3B,EAAgBnB,EAAW,CAClC,IAAMW,EAAcX,EAAU,iBAAiBM,CAA2B,EAC1E,QAAWkB,MAAYb,EACrBa,GAAS,UAAY,GACrB,GAAG,QAAQ,MAAMA,GAAU,uBAAwB,CAAE,KAAMA,GAAS,aAAa,oBAAoB,CAAE,CAAC,EACxGA,GAAS,UAAU,IAAI,SAAS,CAEpC,CAEA,OAAOQ,CACT,CAAC,ECzKM,SAASgB,GAAQC,EAAO,CAC7B,IAAMC,EAAOD,EAAM,MAAM,EACzB,GAAIC,EAAK,OAAS,EAChB,OAAOA,EAGT,IAAIC,EAAS,CAAC,EACVC,EAAeC,EAAGC,EAClBC,EAAgB,GAEpB,IAAKF,EAAI,EAAGC,EAAaJ,EAAK,OAAS,EAAGG,EAAIC,EAAYD,IAAK,CAE7D,GAAIH,EAAK,SAAW,GAAK,CAACK,EAAe,CACvCJ,EAASA,EAAO,OAAOD,EAAK,QAAQ,EAAE,OAAO,EAAG,CAAC,CAAC,EAClD,KACF,CAGA,GACEE,EAAgB,KAAK,MAAM,KAAK,OAAO,EAAIF,EAAK,MAAM,QAC/CD,EAAM,QAAQC,EAAKE,CAAa,CAAC,IAAMD,EAAO,QAGvDA,EAAO,KAAKD,EAAK,OAAOE,EAAe,CAAC,EAAE,CAAC,CAAC,EAC5CG,MAAkBH,IAAkBF,EAAK,OAC3C,CAGA,OAAIA,EAAK,QAAQC,EAAO,KAAKD,EAAK,CAAC,CAAC,EAE7BC,CACT,CC/BA,IAAqBK,GAArB,KAAsC,CACpC,YAAYC,EAAQ,CAClB,KAAK,OAASA,CAChB,CAEA,QAAQC,EAAa,CACnB,OAAO,KAAK,YAAYA,CAAW,GAAK,KAAK,aAAaA,CAAW,CACvE,CAEA,YAAYA,EAAa,CACvB,OAAO,KAAK,OAAO,cAAgBA,EAAY,WACjD,CAEA,aAAaA,EAAa,CAb5B,IAAAC,EAAAC,EAcI,QAAOD,EAAA,KAAK,OAAO,cAAc,KAAK,IAA/B,YAAAA,EAAkC,SAAQC,EAAAF,EAAY,cAAc,KAAK,IAA/B,YAAAE,EAAkC,IACrF,CACF,ECbA,IAAqBC,GAArB,KAA8B,CAC5B,YAAYC,EAAaC,EAAeC,EAAcC,EAAiBC,EAAcC,EAAsBC,EAAqBC,EAA0B,CACxJ,KAAK,YAAcP,EACnB,KAAK,cAAgBC,EACrB,KAAK,gBAAkBE,EACvB,KAAK,aAAeC,EACpB,KAAK,qBAAuBC,EAC5B,KAAK,oBAAsBC,EAC3B,KAAK,yBAA2BC,EAChC,KAAK,aAAeL,EACpB,KAAK,YAAY,CACnB,CAEA,aAAc,CACZ,QAASM,EAAc,EAAGA,EAAc,KAAK,YAAaA,IACpD,KAAK,gBAAgBA,CAAW,GAClC,KAAK,cAAcA,CAAW,CAGpC,CAEA,cAAcA,EAAa,CACzB,IAAMC,EAAsB,CAAC,GAAG,KAAK,cAAc,iBAAiB,IAAI,KAAK,yBAAyBD,KAAe,CAAC,EAChHE,EAAaD,EAAoB,QAAQE,GAAaA,EAAU,cAAc,KAAK,wBAAwB,CAAC,EAC5GC,EAAeH,EAAoB,OACnCI,EAAqBC,GAAQ,MAAM,KAAK,MAAMF,CAAY,EAAE,KAAK,CAAC,CAAC,EAEzE,QAASG,EAAW,EAAGA,EAAWH,EAAcG,IAAY,CAC1D,IAAMC,EAAYN,EAAWK,CAAQ,EAC/BE,EAAcJ,EAAmBE,CAAQ,EAC1BN,EAAoBQ,CAAW,EAEvC,YAAYD,CAAS,CACpC,CACF,CAEA,IAAI,aAAc,CAChB,IAAIE,EAAY,GACZC,EAAY,EAChB,QAAWC,KAAQ,KAAK,cAAc,SAChC,KAAK,WAAWA,CAAI,IAClB,KAAK,UAAUA,EAAMD,CAAS,EAChC,KAAK,iBAAiBC,EAAK,aAAa,KAAK,YAAY,CAAC,GAE1DF,EAAY,GACZ,KAAK,mBAAmBE,EAAK,aAAa,KAAK,YAAY,CAAC,IAGhED,IAEF,OAAOD,CACT,CAEA,WAAWE,EAAM,CACf,IAAMZ,EAAcY,EAAK,aAAa,KAAK,oBAAoB,EAC/D,OAAO,KAAK,gBAAgBZ,CAAW,CACzC,CAEA,UAAUY,EAAMD,EAAW,CACzB,IAAME,EAAaD,EAAK,cAAc,KAAK,mBAAmB,EACxDE,EAAe,KAAK,aAAa,SAASH,CAAS,EAAE,cAAc,KAAK,mBAAmB,EAEjG,OAAO,IAAII,GAAiBF,CAAU,EAAE,QAAQC,CAAY,CAC9D,CAEA,iBAAiBE,EAAK,CACpB,KAAK,QAAQA,EAAMC,GAAY,CACxBA,EAAQ,UAAU,SAAS,YAAY,GAC1CA,EAAQ,UAAU,IAAI,UAAU,CAEpC,CAAC,CACH,CAEA,mBAAmBD,EAAK,CACtB,KAAK,QAAQA,EAAMC,GAAY,CAC7BA,EAAQ,UAAU,OAAO,UAAU,EACnCA,EAAQ,UAAU,IAAI,YAAY,CACpC,CAAC,CACH,CAEA,QAAQD,EAAKE,EAAU,CACrB,IAAMC,EAAc,KAAK,cAAc,iBAAiB,IAAI,KAAK,iBAAiBH,KAAO,EACzF,MAAM,KAAKG,CAAW,EAAE,QAAQD,CAAQ,CAC1C,CACF,ECrFA,IAAqBE,GAArB,KAAkC,CAChC,YAAYC,EAAS,CACnB,KAAK,QAAUA,CACjB,CAEA,WAAWC,EAAY,CACrB,IAAMC,EAAa,IAAIC,GAAiBF,CAAU,EAClD,OAAO,GAAG,KAAK,KAAK,KAAK,QAAUG,GAC1BF,EAAW,QAAQE,CAAM,CACjC,CACH,CACF,ECPA,GAAG,SAAS,oBAAqB,CAACC,EAAS,CAAE,KAAAC,EAAM,eAAAC,EAAgB,YAAAC,EAAa,KAAAC,EAAM,eAAAC,EAAgB,iBAAAC,CAAiB,IAAM,CAC3H,IAAMC,EAAY,GAAG,QAAQ,MAAMP,EAAS,mBAAmB,EAC/D,GAAG,QAAQ,MAAMO,EAAW,0CAA2C,CAAE,KAAAN,CAAK,CAAC,EAE/E,IAAMO,EAAe,GAAG,QAAQ,eAAeJ,CAAI,EACnDI,EAAa,iBAAiB,aAAa,EAAE,QAASR,GAAY,CAAEA,EAAQ,UAAU,OAAO,YAAY,CAAE,CAAC,EAC5GQ,EAAa,iBAAiB,yBAAyB,EAAE,QAASR,GAAY,CAAEA,EAAQ,UAAU,IAAI,SAAS,CAAE,CAAC,EAElH,IAAMS,EAAgB,GAAG,QAAQ,eAAeL,CAAI,EACpDG,EAAU,YAAYE,CAAa,EAEnC,IAAMC,EAAoB,GAAG,QAAQ,MAAMH,EAAW,6BAA6B,EAC7EI,EAAe,GAAG,QAAQ,MAAMD,EAAmB,yBAA0B,CAAE,KAAM,SAAU,KAAM,WAAS,CAAC,EAE/GE,EAAkBV,EAAe,IAAIW,GAAWA,EAAQ,OAAO,EAC/DC,EAAe,WACfC,EAAuB,cACvBC,EAAsB,oBACtBC,EAA2B,+BAC3BC,EAAclB,EAAQ,iBAAiBiB,CAAwB,EACjEE,EAAY,GAEVC,EAAW,IAAIC,GACnBlB,EACAM,EACAD,EACAI,EACAE,EACAC,EACAC,EACAC,CACF,EAEMK,EAAaC,EAAiB,EAEpC,GAAG,GAAGvB,EAAS,QAAS,iCAAkCwB,CAAiB,EAC3Eb,EAAa,iBAAiB,QAASc,CAAa,EACpD,GAAG,GAAGP,EAAa,QAASD,EAA0BS,CAAuB,EAC7EC,GAAU,OAAO,SAASF,CAAa,EAEnCpB,IACFuB,EAAO,EACPC,EAAgB,GAGlB,SAASN,GAAmB,CAC1B,IAAMD,EAAa,CAAC,EACdQ,EAAc,QAAQ,KAAK,OAAO,IAExC,QAAWC,KAAKnB,EAAiB,CAC/B,IAAMoB,EAAgB,IAAIjB,MAAyBgB,MAC7CE,GAAoBjC,EAAQ,iBAAiBgC,CAAa,EACrC,MAAM,KAAKC,EAAiB,EAAE,KAAKjC,GAAWA,EAAQ,cAAciB,CAAwB,CAAC,GAMxHgB,GAAkB,QAASC,GAAqB,CAC9C,IAAMC,EAAW,IAAIC,GAASF,EAAkB,CAC9C,MAAO,GAAGJ,KAAeE,IACzB,UAAWf,EACX,MAAOoB,EACP,KAAM,GACN,cAAe,EACf,WAAY,GACZ,UAAW,GACb,CAAC,EACDf,EAAW,KAAKa,CAAQ,CAC1B,CAAC,CACH,CACA,OAAOb,CACT,CAEA,SAASI,EAAwBY,EAAOC,EAAe,CACrD,GAAG,MAAM,KAAK,CACZ,QAASC,EAAoBD,CAAa,EAC1C,YAAa,GACb,WAAaD,GAAU,CACrBG,EAAgBF,EAAeD,EAAM,KAAK,CAC5C,CACF,CAAC,CACH,CAEA,SAASE,EAAoBE,EAAgB,CAC3C,IAAMC,EAAmB,GAAG,QAAQ,mBAAmB,kBAAkB,EAEzE,QAAWC,KAAU1B,EACnB,GAAI0B,IAAWF,EAAgB,CAC7B,IAAMG,EAAa,GAAG,QAAQ,eAAeD,EAAO,SAAS,EAC7DD,EAAiB,YAAYE,CAAU,CACzC,CAGF,UAAG,GAAGF,EAAkB,QAAS1B,EAA0B,CAACqB,EAAOQ,IAAsB,CACvF,IAAMC,GAAiB,IAAIC,GAAa9B,CAAW,EAAE,WAAW4B,CAAiB,EACjF,GAAG,MAAM,OAAOC,EAAc,CAChC,CAAC,EAEMJ,CACT,CAEA,SAASF,EAAgBQ,EAAWC,EAAW,CAC7C,IAAMC,EAAcF,EAAU,WACxBG,EAAcF,EAAU,WAE9BC,EAAY,YAAYD,CAAS,EACjCE,EAAY,YAAYH,CAAS,EACjCZ,EAAO,CAAE,YAAAc,EAAa,YAAAC,CAAY,CAAC,CACrC,CAEA,SAASf,EAAO,CAAE,KAAAgB,EAAM,GAAAC,CAAG,EAAG,CArHhC,IAAAC,EAuHI,GAAIF,IAASC,EAEX,OAIF,IAAME,EAAe,+CADNF,EAAG,QAAQ,WAEpBG,GAAOhD,EAAc,cAAc+C,CAAY,GACrDD,EAAAE,IAAA,YAAAA,GAAM,YAAN,MAAAF,EAAiB,IAAI,SACvB,CAEA,eAAe9B,GAAgB,CAC7BG,EAAO,EACHtB,GACF,MAAM,GAAG,QAAQA,EAAkB,CAAE,OAAQ,MAAO,CAAC,EAEvDoD,GAAmB,EACftC,EAAS,YACXuC,GAAmB,EAEnBC,EAAmB,CAEvB,CAEA,SAAShC,GAAS,CAChBjB,EAAa,OAAO,EACpBkD,EAAkB,EAClBlC,GAAU,SAAS,EACnB,GAAG,IAAIT,EAAa,QAASD,EAA0BS,CAAuB,EAC9EP,EAAY,EACd,CAEA,SAASK,GAAoB,CAC3B,MAAM,KAAK,KAAK,CAClB,CAEA,SAASqC,GAAoB,CAC3BvC,EAAW,QAAQwC,GAAaA,EAAU,QAAQ,CAAC,EACnDxC,EAAW,OAAS,CACtB,CAEA,SAASyC,GAAU,CACjBpC,GAAU,OAAO,WAAWF,CAAa,EACpCN,GACHQ,GAAU,SAAS,EAErBkC,EAAkB,CACpB,CAEA,SAASH,IAAqB,CACD,GAAG,QAAQ,MAAMhD,EAAmB,yBAA0B,CAAE,KAAM,SAAU,KAAM,oBAAkB,CAAC,EACjH,iBAAiB,QAASsD,CAAsB,CACrE,CAEA,SAASL,IAAqB,CAC5BM,GAAgBjE,EAAS,UAAW,oIAA0H,CAChK,CAEA,SAAS4D,GAAqB,CAC5BK,GACEjE,EACA,UACA,0IACF,CACF,CAEA,eAAegE,GAAyB,CACtC,IAAME,EAAoB,SAAS,cAAc,KAAK,EACtD,GAAG,QAAQ,MAAMA,EAAmB,KAAM,CAAE,KAAM,WAAS,CAAC,EAC5DA,EAAkB,YAAY1D,CAAY,EAC1C,GAAG,QAAQ,MAAM0D,EAAmB,8BAA+B,CAAE,KAAM,SAAU,KAAM,yBAA0B,aAAc,EAAK,CAAC,EAEzI,MAAM,GAAG,MAAM,KAAK,CAAE,QAASA,EAAmB,KAAM,MAAO,CAAC,CAClE,CAEA,SAASrC,GAAkB,CACzBpB,EAAc,YAAYD,CAAY,CACxC,CAEA,OAAOuD,CACT,CAAC,ECvMD,IAAqBI,GAArB,KAAqC,CACnC,YAAYC,EAAiBC,EAAsBC,EAA6BC,EAA0BC,EAAsB,CAC9H,KAAK,qBAAuBH,EAC5B,KAAK,4BAA8BC,EACnC,KAAK,yBAA2BC,EAChC,KAAK,qBAAuBC,EAC5B,KAAK,yBAA2B,GAAG,QAAQ,eAAeH,EAAqB,SAAS,EACxF,KAAK,oBAAsB,GAAG,QAAQ,eAAeD,EAAgB,SAAS,EAC9E,KAAK,SAAW,IAClB,CAEA,IAAI,aAAc,CAChB,IAAIK,EAAY,GACVC,EAAuB,KAAK,qBAAqB,iBAAiB,KAAK,2BAA2B,EACxG,QAAWC,KAAYD,EAAsB,CAC3C,IAAME,EAAeD,EAAS,cAAc,KAAK,wBAAwB,EACrEC,EACYA,EAAa,QAAQ,qBAAqB,SAASD,EAAS,QAAQ,SAAS,EAEzF,KAAK,cAAcA,CAAQ,GAE3BF,EAAY,GACZ,KAAK,gBAAgBE,CAAQ,IAG/BF,EAAY,GACZ,KAAK,gBAAgBE,CAAQ,EAEjC,CACA,OAAOF,CACT,CAEA,cAAcE,EAAU,CACtBA,EAAS,UAAU,OAAO,YAAY,EACtCA,EAAS,UAAU,IAAI,UAAU,CACnC,CAEA,gBAAgBA,EAAU,CACxBA,EAAS,UAAU,OAAO,UAAU,EACpCA,EAAS,UAAU,IAAI,YAAY,CACrC,CAEA,cAAcE,EAAmB,CAC/B,GAAI,CAAC,KAAK,SAAU,CAClB,IAAMC,EAAoB,KAAK,yBAAyB,iBAAiB,KAAK,2BAA2B,EACzG,QAAWH,KAAYG,EAAmB,CACxC,IAAMC,EAAS,KAAK,sBAAsB,KAAK,oBAAqBJ,EAAS,QAAQ,SAAS,EAC9FA,EAAS,YAAYI,CAAM,CAC7B,CACA,KAAK,SAAW,KAAK,wBACvB,CACAF,EAAkB,YAAY,KAAK,QAAQ,EAE3CA,EAAkB,YAAY,GAAG,QAAQ,eAAe,KAAK,qBAAqB,SAAS,CAAC,EAE5F,KAAK,qBAAqB,gBAAgB,QAAQ,CACpD,CAEA,sBAAsBG,EAAWC,EAAW,CAC1C,IAAMC,EAAW,GAAG,KAAK,yDAAyDD,KAClF,OAAOD,EAAU,cAAcE,CAAQ,CACzC,CACF,ECxDA,GAAG,SAAS,gCAAiC,CAACC,EAAS,CAAE,KAAAC,EAAM,eAAAC,EAAgB,iBAAAC,CAAiB,IAAM,CACpG,IAAMC,EAAkBJ,EAAQ,cAAc,4BAA4B,EACpEK,EAAoBL,EAAQ,cAAc,6BAA6B,EACvEM,EAAuBN,EAAQ,cAAc,+BAA+B,EAC5EO,EAAuBP,EAAQ,cAAc,gCAAgC,EAE7EQ,EAAeR,EAAQ,cAAc,2BAA2B,EAChES,EAA8B,iCAC9BC,EAAiB,4BACnBC,EAAY,GAEhB,QAASC,EAAIR,EAAgB,SAAS,OAAQQ,GAAK,EAAGA,IAEpDR,EAAgB,YAAYA,EAAgB,SAAS,KAAK,OAAO,EAAIQ,EAAI,CAAC,CAAC,EAG7E,IAAMC,EAAkB,IAAIC,GAC1BV,EACAE,EACAG,EACAC,EACAH,CACF,EAEMQ,EAAcf,EAAQ,iBAAiBS,CAA2B,EAClEO,EAAW,IAAIC,GAA8Bb,EAAiBW,EAAaL,CAAc,EAE/FF,EAAa,iBAAiB,QAASU,CAAa,EACpD,GAAG,GAAGH,EAAa,QAASN,EAA6BU,CAAuB,EAChFC,GAAU,OAAO,SAASF,CAAa,EAEnChB,IACFmB,EAAO,EACPC,EAAgB,GAGlB,SAASH,EAAwBI,EAAOC,EAAiB,CACvD,IAAMC,EAAcC,EAAUF,CAAe,EAEzCC,EAEFrB,EAAgB,YAAYqB,CAAW,EAEvC,GAAG,MAAM,KAAK,CACZ,QAASE,EAAqB,EAC9B,YAAa,GACb,WAAaJ,GAAU,CACrBC,EAAgB,YAAYD,EAAM,KAAK,EACvC,GAAG,KAAKA,EAAM,MAAO,aAAa,CACpC,CACF,CAAC,CAEL,CAEA,SAASG,EAAU1B,EAAS,CAC1B,OAAIA,EAAQ,QAAQU,CAAc,EACzBV,EAEAA,EAAQ,cAAcU,CAAc,CAE/C,CAEA,SAASiB,GAAuB,CAE9B,IAAMC,EAAuBxB,EAAgB,iBAAiBM,CAAc,EACtEmB,EAAuB,GAAG,QAAQ,eAAezB,EAAgB,SAAS,EAGhF,OAAAyB,EAAqB,UAAU,OAAO,2BAA2B,EACjEA,EAAqB,UAAU,IAAI,iCAAiC,EAEpE,GAAG,GAAGA,EAAsB,QAASnB,EAAgB,CAACa,EAAOO,IAAkB,CAC7E,IAAMC,EAAiB,IAAIC,GAAaJ,CAAoB,EAAE,WAAWE,CAAa,EACtF,GAAG,MAAM,OAAOC,CAAc,CAChC,CAAC,EAEMF,CACT,CAEA,eAAeX,GAAgB,CAC7BG,EAAO,EACHlB,GACF,MAAM,GAAG,QAAQA,EAAkB,CAAE,OAAQ,MAAO,CAAC,EAEvD8B,EAAmB,EACnB1B,EAAqB,gBAAgB,QAAQ,EACzCM,EAAgB,YAClBqB,EAAmB,EAEnBC,EAAmB,CAEvB,CAEA,SAASd,GAAS,CAChBb,EAAa,OAAO,EACpBQ,EAAS,QAAQ,EACjBI,GAAU,SAAS,EACnB,GAAG,IAAIL,EAAa,QAASN,EAA6BU,CAAuB,EACjFR,EAAY,EACd,CAEA,SAASyB,GAAU,CACjBhB,GAAU,OAAO,WAAWF,CAAa,EACpCP,GACHS,GAAU,SAAS,EAErBJ,EAAS,QAAQ,CACnB,CAEA,SAASiB,GAAqB,CACD,GAAG,QAAQ,MAAM5B,EAAmB,yBAA0B,CAAE,KAAM,SAAU,KAAM,oBAAkB,CAAC,EACjH,iBAAiB,QAASgC,CAAsB,CACrE,CAEA,SAASH,GAAqB,CAC5BI,GAAgBtC,EAAS,UAAW,gBAAgBC,uCAA0C,CAChG,CAEA,SAASkC,GAAqB,CAC5BG,GACEtC,EACA,UACA,8BAA8BC,qCAChC,CACF,CAEA,eAAeoC,GAAyB,CACtC,IAAME,EAAoB,GAAG,QAAQ,mBAAmB,6BAA6B,EACrF,GAAG,QAAQ,MAAMA,EAAmB,KAAM,CAAE,KAAM,WAAS,CAAC,EAC5D1B,EAAgB,cAAc0B,CAAiB,EAC/C,GAAG,QAAQ,MAAMA,EAAmB,8BAA+B,CAAE,KAAM,SAAU,KAAM,yBAA0B,aAAc,EAAK,CAAC,EAEzI,MAAM,GAAG,MAAM,KAAK,CAAE,QAASA,EAAmB,KAAM,OAAQ,CAAC,CACnE,CAEA,SAASjB,GAAkB,CACzBhB,EAAqB,OAAO,EAC5BO,EAAgB,cAAcb,CAAO,EACrCA,EAAQ,UAAU,IAAI,gBAAgB,CACxC,CAEA,OAAOoC,CACT,CAAC,E1BnJwqC,IAAAI,GAA0B,SAAmCC,GAA0B,SAA6CC,GAA0B,kC2BDv0CC,EA0GIC,EAAAA,EAAAA,EAAAA,EAAAA,CAAAA,KAEIC,kBA/CaC,GAAA,oBAAsCC,KAAAA,iBAC/C,cAA8D,KAAA,mBACrD,GAAA,KAAA,mBACT,GAAA,KAAA,WAOA,KAAA,SADA,KAAA,QADA,KAAA,QADA,GAAA,KAAA,OAuDJJ,EAAA,KAAKK,QACL,SAAKC,cAAmBC,QAAAA,EAAAA,GAExB,OAAwF,GAFlD,SAEkD,KAA9C,UAEtCC,GAAKC,QAEqCC,KAFrCD,GAAAA,GAAAA,EAGDE,qGAQAA,0KARa,EAWjB,KAAKC,gBAAkBV,GAhB3BM,EAAA,OAAA,GAAA,SAoBMK,EACA,CAAA,EACN,KAAKC,eAAiBC,EAAQC,gBAAkB,OAAOH,GAAuC,WACxFA,EACA,KAAKC,gBACX,KAAKG,qBAAuBF,EAAQG,sBAAwB,OAAOR,GAAkC,WAC/FA,EACA,KAAKO,sBACX,KAAKE,iBAAmBJ,EAAQK,iBAAmBA,GAAmB,KAAKD,iBAC3E,KAAKE,kBAAoB,OAAOR,GAAuC,SACjEA,EACA,OAAOH,GAAoC,SACvCA,EACA,KAAKW,kBACf,KAAKC,mBAAqBP,EAAQQ,mBAAqB,KAAKD,mBAE5D,KAAKE,QAAU,KAAKA,QAAQC,KAAK,IAAlB,EACf,KAAKC,kBAAoB,KAAKA,kBAAkBD,KAAK,IAA5B,EACzB,KAAKE,oBAAsB,KAAKA,oBAAoBF,KAAK,IAA9B,EAC3B,KAAKG,eAAiB,KAAKA,eAAeH,KAAK,IAAzB,EAGtBI,EAAMC,wBAA0B,GAIhCD,EAAME,YAAc,GAGpBF,EAAMG,MAAQ,GAId,IAAIC,EAAkB,GAWtB,GAVIJ,EAAMK,SACNL,EAAMK,OAAS,GACfD,EAAkB,IAEjBE,SAASC,KAAKC,SAASR,CAAvB,IACDM,SAASC,KAAKE,YAAYT,CAA1B,EACAI,EAAkB,IAFtB,EAAAjC,EAAA,cAMIe,EAAQwB,qBAAuBxB,EAAQyB,qBAAsB,CAQ7D,GAR6DC,EAAA,CAAA,CAClC1B,EAAAA,QAC3B,KAAK2B,SAAW3B,EAAQ4B,SAAWR,SAAS5B,cAAc,KAAvB,EAAAqC,EAAA,KAAA,SAAA,MAEnCC,EAAaC,SAAW,WACxBD,EAAaE,QAAU,SACVC,cAAgB,OAC7B,KAAKN,SAASO,UAAUC,IAAI,uBAA5B,EACI,CAACC,GAAsBpC,EAAQwB,oBAAqB,CAGpD,KAAKG,SAASU,UAAY,wWAK1B,GAAI,CACA,KAAKV,SAASW,kBAAmBC,QAAQ,CAAEC,UAAW,CAAC,aAAc,aAAf,CAAb,EAA8C,CACnFC,SAAU,IACVC,WAAYC,IACZC,UAAW,YACXC,OAAQ,aAJ2E,CAAvF,CADA,MAOF,CAAU,CACZC,EAAeC,aAAa,KAAKpB,SAAU,KAAKrC,OAAO0D,WAAvD,CAhBoD,CAkBpDhD,EAAQyB,uBAER,KAAKE,SAASsB,mBACV,YACA,oOAFJ,EAMA,KAAKC,sBAAwB,KAAKvB,SAASwB,iBAlCc,CAqCjE,KAAKC,YAAc,KAAKlD,qBAAqBY,CAA1B,EAEnBuC,sBAAsB,IAAA,CAElB,IAAAC,EAAA,OAAA,iBAAArE,CAAA,EACIsE,EAAWvB,UAAY,SACvBlB,EAAM0C,MAAMC,YAAY,UAAW,QAAS,WAA5C,EACAvC,EAAkB,IAElBqC,EAAWG,aAAe,YAC1B5C,EAAM0C,MAAMC,YAAY,aAAc,UAAW,WAAjD,EACAvC,EAAkB,IAElBA,IAEAtB,QAAQ+D,KAAK,yFAAb,EACA7C,EAAM0C,MAAMI,QAAU,IACtB9C,EAAM0C,MAAMK,MAAQ,IACpB/C,EAAM0C,MAAMM,OAAS,IACjB,KAAKnC,UAAY,KAAKA,SAASoC,eAC/B,KAAKpC,SAASoC,cAAcC,YAAY,KAAKrC,QAA7C,EAGJ,OAAO,KAAKA,SAEZ,OAAO,KAAKuB,uBAGZ,KAAKvB,UACL,KAAKd,eAAL,CAAA,CA3BR,EA+BAC,EAAMmD,iBAAiB,OAAQ,KAAKxD,OAApC,EACAK,EAAMmD,iBAAiB,iBAAkB,KAAKtD,iBAA9C,EACAS,SAAS6C,iBAAiB,mBAAoB,KAAKrD,mBAAnD,EACAsD,OAAOD,iBAAiB,SAAU,KAAKpD,cAAvC,EAEA,KAAKsD,iBAAmBC,GAAUC,eAAV,CAAA,CAlQjB,WAAA,YAAYC,EAAD,CAClB1E,QAAQ+D,KAAK,gIAAb,CAAA,CAISY,aAAAA,WAAS,CAClB,GAAI,CACA,MAAO,CAAC,EAAE,MAAMH,GAAUI,YAAY,EAAtB,GAA8BC,MAD9C,MAEF,CACE,MAAO,EADC,CAAA,CAKHD,aAAAA,YAAYE,EAAgB,GAAjB,CACpB,GAAI,CAACC,UAAUC,aAAc,MAAO,CAAA,EAEpC,IAAAnF,EAAA,UACoDoF,MAAAA,UAAAA,aAAAA,iBAAAA,GAAAA,OAAQC,GAAAA,EAAAA,OAAAA,YAAAA,EAMxDC,EACJ,GAAI,CACIL,IAAkB,MAAMM,EAAA,GAAoBC,MAAOC,GAAW,CAACA,EAAOC,KAArD,IACjBJ,EAAe,MAAMJ,UAAUC,aAAaQ,aAAa,CAAEC,MAAO,GAAOvE,MAAO,EAAvB,CAApC,EAFzB,MAIF,CAAU,CAKZ,GAAI,CACA,OAAQ,MAAMkE,EAAA,GAAoBM,IAAI,CAACJ,EAAQK,KAAO,CAClDC,GAAIN,EAAOO,SACXN,MAAOD,EAAOC,QAAUI,IAAM,EAAI,iBAAmB,UAAUA,EAAI,IAFjB,EAA/C,CADP,QAAJ,CAOQR,IACAnF,QAAQ+D,KAAK,sGAAb,EAEAS,GAAUsB,iBAAiBX,CAA3B,EALE,CAAA,CA+NRY,MAAAA,UAAQ,CACV,IAAIC,KACA,CACA,GAAI,KAAKtG,OAAOuG,UAAW,CACvB,GAAI,EAAE,KAAKvG,OAAOuG,qBAAqBC,aAAc,MAAO,GAC5DF,EAAS,KAAKtG,OAAOuG,SAFE,MAIvBD,GAAU,MAAM,KAAKG,iBAAL,GAAyBH,OAE7C,MAAO,UAAWA,EAAOI,eAAP,EAAwB,CAAxB,EAA2BC,YAA3B,CAPlB,MAQF,CACE,MAAO,EADC,QARZ,CAYQL,GAAUA,IAAW,KAAKtG,OAAOuG,YACjCjG,QAAQ+D,KAAK,kGAAb,EAEAS,GAAUsB,iBAAiBE,CAA3B,EALE,CAAA,CAUdM,WAAS,CACL,OAAO,KAAKC,QAAAA,CAGVC,MAAAA,aAAW,CACT,KAAKD,SACL,MAAM,KAAKE,aAAL,EAEN,MAAM,KAAKC,YAAL,CAAA,CAIRA,MAAAA,aAAW,CACb,GAASH,CAAL,KAAKA,UAAiBI,CAAL,KAAKA,aAC1B,KAAKJ,SAAW,GACX,KAAKK,SAAgBC,CAAL,KAAKA,SAC1B,GAAI,CACA,GAAI,CAAC,MAAM,KAAKd,SAAL,EAAiB,KAAM,qBAElC,MAAO,KAAKrG,OAAOuG,UAA0BG,eAAtC,EAAuD,CAAvD,EAA0DU,iBAAiB,CAE9EC,SAAU,CAAC,CAAEC,MAAO,EAAT,CAAD,CAFoE,CAA3E,CAHP,OAOKxH,EAAP,CAEE,MADA,KAAK+G,SAAW,GACV/G,CAFE,CAAA,CAMViH,MAAAA,cAAY,CACT,KAAKF,WAIV,KAAKA,SAAW,GAChB,MAAM,KAAKU,oBAAL,EALN,CAQJC,SAAO,CACH,KAAKxH,OAAOyH,oBAAoB,iBAAkB,KAAKpG,iBAAvD,EACA,KAAKrB,OAAOyH,oBAAoB,OAAQ,KAAKtG,OAA7C,EACAW,SAAS2F,oBAAoB,mBAAoB,KAAKnG,mBAAtD,EACAsD,OAAO6C,oBAAoB,SAAU,KAAKlG,cAA1C,EAEA,KAAK0F,WAAa,GAClB,KAAKJ,SAAW,GAChB,KAAKa,KAAL,EACA5C,GAAU6C,mBAAmB,KAAK9C,iBAAkB,OAApD,CAAA,CAGE+C,MAAAA,OAAK,CACP,GAAI,KAAKX,WAAY,MAAUY,MAAM,6DAAV,EAC3B,IAASX,CAAL,KAAKA,SAAY,KAAKC,WAEtBvC,OAAOkD,SAASC,WAAa,UAE7BzH,QAAQ+D,KAAK,4EAAb,EAGJ,KAAK6C,QAAU,GACFrF,CAATC,SAASD,QAEb,GADA,KAAKsF,QAAU,GACX,KAAKnH,OAAOuG,UAEZ,MAAM,KAAKvG,OAAOgI,KAAZ,MAIV,IAAI,CACA,GAAA,CAAM,OAAA1B,EAAQ,WAAA2B,CAAAA,EAAAA,MAAAA,KAAAA,iBAAAA,EACV,CAAC,KAAKf,SAAW,KAAKC,QAEtBrC,GAAUsB,iBAAiBE,CAA3B,GAGJ,KAAK4B,gBAAgBD,CAArB,EACA,KAAKjI,OAAOuG,UAAYD,EACxB,MAAM,KAAKtG,OAAOgI,KAAZ,EAGF,KAAKnB,WACL,KAAKA,SAAW,GAChB,KAAKG,YAAL,EAAmBmB,MAAM,IAAA,CAAA,CAAzB,GAdJ,OAgBKrI,EAAP,CACE,GAASqH,CAAL,KAAKA,QAET,MADA,KAAKD,QAAU,GACTpH,CAHE,CAAA,CAOhB4H,MAAI,CACA,KAAKU,MAAL,EACA,KAAKlB,QAAU,EAAA,CAGbkB,MAAAA,MAAMC,EAAwB,GAAzB,CAEP,GADA,KAAKlB,QAAU,GACX,CAAC,KAAKD,QAAS,MAAO,GAC1B,KAAKlH,OAAOoI,MAAZ,EAEI,KAAK/F,WACL,KAAKA,SAAS6B,MAAMxB,QAAU,QAGlC,IAAAvC,EAAA,IAAA,CACQ,KAAKH,OAAOuG,qBAAqBC,cAEjC1B,GAAUsB,iBAAiB,KAAKpG,OAAOuG,SAAvC,EACA,KAAKvG,OAAOuG,UAAY,KAH5B,EAOJ,OAAI8B,GACAC,EAAA,EACO,KAGX,MAAM,IAAIC,QAASC,GAAYC,WAAWD,EAAS,GAApB,CAAzB,EACD,KAAKrB,SACVmB,EAAA,EACO,IAFmB,GAEnB,CAGLI,MAAAA,UAAUC,EAAD,CACPA,IAAyB,KAAK7H,mBAClC,KAAKA,iBAAmB6H,EAExB,MAAM,KAAKpB,oBAAL,EAHN,CA6BSqB,aAAAA,UACTC,EAEAC,EASAC,EACAC,EACAC,EAAkC,GAClCC,EAAoC,GAflB,CAiBlB,IAAIC,EACAC,EAA2B,GAC3BN,IACA,eAAgBA,GACb,aAAcA,GACd,WAAYA,GACZ,2BAA4BA,GAC5B,6BAA8BA,GAC9B,6BAA8BA,IAGjCK,EAAaL,EAAoBK,WACjCJ,EAAWD,EAAoBC,SAC/BC,EAASF,EAAoBE,OAC7BC,EAAyBH,EAAoBG,wBAA0B,GACvEC,EAA2BJ,EAAoBI,0BAA4B,GAC3EE,EAA2B,IAE3B9I,QAAQ+D,KADDyE,GAAuBC,GAAYC,GAAUC,GAA0BC,EACjE,mFAOA,wJAPb,EAOA/I,EAAA,CAAA,CAIsB4I,EAE1B,GAAI,CACA,IAAIM,EAEAC,EACJ,CAACP,EAAUM,CAAX,EAAoB,MAAMd,QAAQgB,IAAI,CAClCR,GAAYjE,GAAUC,eAAV,EACZD,GAAU0E,WAAWX,CAArB,CAFkC,CAAZ,GAIzBG,EAAQM,CAAT,EAA0BxE,GAAU2E,cAAcJ,EAAOF,EAAYH,EAAQC,CAAnD,EAC1B,IAAIS,EAEJ,GAAIX,aAAoBY,OAAQ,CAC5B,IAAAC,EAAA,EACKC,GAED/E,GAAUgF,uBAAuBC,EAAgB,gBAAiB,MAAlE,EAEJL,EAAqB,MAAM,IAAInB,QAAQ,CAACC,EAASwB,IAAV,CACnC,IAAIC,EACAC,EACAC,EACAC,EAAqB,GACzBF,EAAaG,GAADH,CACJG,EAAMC,KAAKpE,KAAOkE,IAGtBL,EAAetC,oBAAoB,UAAWyC,CAA9C,EACAH,EAAetC,oBAAoB,QAAS0C,CAA5C,EACAI,aAAaN,CAAb,EACII,EAAMC,KAAKA,OAAS,KACpB9B,EAAQ,CACJ8B,KAAMD,EAAMC,KAAKA,KACjBE,aAAc1F,GAAU2F,eAAeJ,EAAMC,KAAKE,aAAcrB,CAAlD,CAFV,CAAR,EAKAa,EAAOlF,GAAU4F,gBAAjB,EAZJ,EAeJP,EAAWQ,GAADR,CACNJ,EAAetC,oBAAoB,UAAWyC,CAA9C,EACAH,EAAetC,oBAAoB,QAAS0C,CAA5C,EACAI,aAAaN,CAAb,EAEAD,EAAO,mBAAPY,+BAAA,CAAA,EAEJb,EAAepF,iBAAiB,UAAWuF,CAA3C,EACAH,EAAepF,iBAAiB,QAASwF,CAAzC,EACAF,EAAUxB,WAAW,IAAM0B,EAAQ,SAAR,EAAoB,GAArC,EACV,IAAAU,EAAAC,EAAA,aAAA,EAA8C,EAAG9B,EAAAA,MAAeA,EAAAA,MAAAA,EAChEoB,EAAqBtF,GAAUgF,uBAC3BC,EACA,SACAgB,EACA,CAACA,EAAUT,KAAKU,MAAhB,CAJiB,CAAA,CAhCE,CANC,MA8C5BtB,EAAqB,MAAMnB,QAAQ0C,KAAK,CACpC,IAAI1C,QAA8B,CAACC,EAASwB,IAAWpF,OAAO6D,WAC1D,IAAMuB,EAAO,wBAAP,EACN,GAFmD,CAAvD,GAIC,SAAA,CACG,GAAI,CACA,GAAA,CAAAJ,CAAA,EAAA,MAAA,EAAA,OAAAxH,CAAA,EACA,GAAI,CAAC8I,EAAY,MAAMpG,GAAU4F,iBACjC,MAAO,CACHJ,KAAMY,EAAWC,SACjBX,aAAc1F,GAAU2F,eAAeS,EAAWV,aAAcrB,CAAlD,CAFX,CAHP,OAOKrJ,EAAP,IAAU8J,EAAAwB,EACcC,SAAAA,EAClB,sCAAsCC,KAAKC,CAA3C,EAWA,OAFAzG,GAAU0G,wBAA0B,GAE7B1G,GAAU8D,UAAUC,EAAwB,CAC/CM,WAAAA,EACAH,OAAAA,EACAC,uBAAAA,EACAC,yBAAAA,CAJ+C,CAA5C,EAOX,KAAM,kBAAkBqC,GApBhB,CAAA,GARhB,CALoC,CAAb,EAsC/B,OAAOnC,EAA2BM,EAAqBA,EAAmBY,IA/F1E,OAgGKxK,EAAP,CACE,GAAI,CAACqJ,GAAc,CAACD,EAA0B,MAAMpJ,EACpD,IAAAgL,EAAA,MAAAhL,GAAA,UAAAH,EAC0B,CACtBoJ,SAAAA,EAAUC,OAAAA,EAAQC,uBAAAA,CADI,CAAA,EAG1B,OAAOG,EAA2BM,EAAqBA,EAAmBY,IANlE,QAhGZ,CAwGST,GACD/E,GAAU6C,mBAAmBoB,EAAW,OAAxC,CAFE,CAAA,CAOd0C,oBAAoBC,EAAaC,EAAeC,EAAcC,EAAmC,GAA9E,CAGf/G,GAAU6C,mBACN,KAAK9C,iBACL,mBACA,CAAE6G,IAAAA,EAAKC,MAAAA,EAAOC,KAAAA,EAAMC,wBAAAA,CAApB,CAHJ,CAAA,CAOJC,iBAAiBC,EAAD,CAGZjH,GAAU6C,mBAAmB,KAAK9C,iBAAkB,gBAAiBkH,CAArE,CAAA,CAMShH,aAAAA,eAAeC,EAAD,CAOD,GANlBA,GACA1E,QAAQ+D,KAAK,qEAAb,EAAA1E,EAAA,IAAA,sCAAA,KAKCqM,GAAAA,EAAK,aAAmBC,CAAAA,EAO7B,EAAA,CAAAnM,GAAI,yBAAA,oBAJG,QAAqB8E,gBACrBsH,sBAAgBC,MACf,gBAAMD,oBAAgBC,GAAhB,SAAuCC,SAAS,GAAA,OAErCzM,EAAA,EAAOsM,IAOhC9L,EAAA,UAAA,wBAEOkM,EAAcC,OAAOC,KAAK,CAAC,CAAE,MAAAC,CAAF,IAAc,YAAYlB,KAAKkB,CAAjB,CAAzC,GACA,WAAWlB,KAAKe,EAAcI,QAA9B,GAIA,MAAMJ,EAAcK,qBAAqB,CAAC,eAAgB,iBAAjB,CAAnC,EACJV,KAAK,CAAC,CAAE,aAAAW,EAAc,gBAAAC,CAAhB,IACH,OAAOtB,KAAKqB,GAAgB,KAA5B,GAAyF,IAAnDE,SAASD,GAAmB,IAA5B,CAFrC,EAGJzE,MAAM,IAAM,EAHR,EAI6B8D,EAAA,EAEnC,IAAIC,gBAAgB,CAAEY,QAAS,CAAC,SAAD,CAAX,CAApB,CAAA,CAGH3L,SAAO,CACX,KAAK2C,YAAc,KAAKlD,qBAAqB,KAAKZ,MAA/B,EACnB,KAAKuB,eAAL,EACI,KAAKc,WACL,KAAKA,SAAS6B,MAAMxB,QAAU,IAElC,KAAKqK,WAAL,CAAA,CAGI1L,mBAAiB,CACrB,KAAKyC,YAAc,KAAKlD,qBAAqB,KAAKZ,MAA/B,OACduB,eAAL,CAAA,CAGID,qBAAmB,CACnBQ,SAASD,OACT,KAAKuG,MAAL,EACO,KAAKlB,SACZ,KAAKU,MAAL,CAAA,CAIAhH,qBAAqBY,EAAD,CAGxB,IAAArB,EAAA,KAAA,MAAA,kBAAA,KAAA,IAAAR,EAAA,WADmD6B,EAAAA,WAAAA,CAAAA,EAEnD,MAAO,CACHqJ,EAAGmC,KAAKC,OAAOzL,EAAM0L,WAAaC,GAAkB,CAAjD,EACHC,EAAGJ,KAAKC,OAAOzL,EAAM6L,YAAcF,GAAkB,CAAlD,EACH5I,MAAO4I,EACP3I,OAAQ2I,EACRG,gBAAiB,KAAKtM,kBACtBuM,iBAAkB,KAAKvM,iBANpB,CAAA,CAUHO,gBAAc,CAClBwC,sBAAsB,IAAA,CAGlB,GAAK,KAAK1B,SAAV,CACA,IAAA1C,EAAA,KAAA,OAAAQ,EAAAR,EAAA,WAAA,EAAAA,EAAA,YAAAyC,EAAAzC,EAAA,YAAA4C,EAAA5C,EAAA,aAAA6N,EAAA7N,EAAA,yBAAA8N,EAAA,OAAA,iBAAA9N,CAAA,EAAA+N,EAAAD,EAAA,UAAA3C,EAAA3K,EAAA,EAAAwN,EAAAvL,EAAAG,EAcA,OAAQqL,EAAR,CACI,IAAK,OACD,IAAAC,EAAmBX,EACnBY,EAAoBT,EACpB,MACJ,IAAK,OACDQ,EAAmBE,EACnBD,EAAoBE,EACpB,MACJ,SACQJ,IAAmB,QACjBK,EAAmBC,EACnBD,EAAmBC,IAMrBJ,EAAoBE,EACpBH,EAAmBC,EAAoBG,IAEvCJ,EAAmBE,EACnBD,EAAoBD,EAAmBI,GAEvCL,IAAmB,eAEnBC,EAAmBb,KAAKmB,IAAIN,EAAkBX,CAA3B,EACnBY,EAAoBd,KAAKmB,IAAIL,EAAmBT,CAA5B,EA3BhC,CAkCA,GAAA,CAAAe,EAAaC,CAAAA,EAAAA,EAAAA,eAAAA,MAAAA,GAAAA,EAA+CrI,IAAAA,CAAKb,EAAQc,IAAAA,CACrE,IAAMqI,EAAcC,WAAWpJ,CAAX,EACpB,OAAOA,EAAOqJ,SAAS,GAAhB,GACCvI,EAAsC+H,EAAgBF,EAAlDC,EAAeF,GAAwDS,EAAc,IAC3FA,CAAAA,CAAAA,EAAAA,EAAAA,KAAAA,YAAAA,OAAAA,EAAAA,EAAAA,KAAAA,YAAAA,QAAAA,EAAAA,EAAAA,KAAAA,YAAAA,GAAAA,EAMV,IAAAG,EAAA,KAAA,YAAA,GAAA,EAAA3D,EAAA,KAAA,SAAA,MAGAtI,EAAa+B,MAAQ,GAAGmK,EAAcxB,EAAaW,MACnDrL,EAAagC,OAAS,GAAGmK,EAAetB,EAAcS,MACtDtL,EAAaoM,IAAM,GAAGC,EAAWR,EAASS,EAAUzB,EAAcS,MAA/C,EAAA,eAAA,KAAAnO,EAAA,MAAA,SAAA,EAEnB6C,EAAauM,KAAO,GAAGC,GAChBC,EAAkBlB,EAAemB,EAASrB,EAAmBqB,IAC7DD,EAAkB/B,EAAaiC,EAAUT,EAAcS,GAAWjC,EAAaW,MAEtFrL,EAAaU,UAAY1B,EAAM0C,MAAMhB,SAtErC,CAAA,CAHJ,CAAA,CA6EWuH,OAAAA,eACX2E,EACAjG,EAFyB,CAIzB,GAAI,CAACA,EAAY,OAAOiG,EACxB,IAAA,EAAAjP,EAAA,GAAA,EAAAiC,EAAAjC,EAAA,GAAA,EAAAoC,EAAApC,EAAA,OAAAA,EAAA,gBAGMgJ,EAAW5E,MAAQ4E,EAAWmE,gBAC9B,EAAAnN,EAAAA,EAAA,QAAAA,EAAA,iBAEAgJ,EAAW3E,OAAS2E,EAAWoE,iBAC/B,EACN,QAAKC,KAAL7N,EACI0P,EAAMxE,EAAIwE,EAAMxE,EAAIyE,EAAeC,EACnCF,EAAMjC,EAAIiC,EAAMjC,EAAIoC,EAAeC,EAEvC,OAAOL,CAAAA,CAGHrC,YAAU,CACV,CAAC,KAAK7F,SAAW,KAAKlH,OAAO0P,QAAU,KAAK1P,OAAO2P,QASvD,0CAFM,KAAK3P,OAAO4P,0BAA0BxO,KAAK,KAAKpB,MAAhD,EACA+D,uBACO,SAAA,CACT,GAAI,EAA0B,GAA1B,KAAK/D,OAAO6P,YAAhB,CASA,IAAAlQ,EAAA,KAAA,IAAA,EAAA,KAAA,mBAAAQ,EAAA,IAAA,KAAA,mBAEI2P,EAAoBC,GACpB,MAAM,IAAIxH,QAASC,GAAYC,WAAWD,EAASuH,EAA0BD,CAA9C,CAAzB,EAGV,KAAKE,mBAAqBC,KAAKC,IAAL,EAG1B,GAAI,CACA,IAAAC,EAAS,MAAMrL,GAAU8D,UAAU,KAAK5I,OAAQ,CAC5CmJ,WAAY,KAAKrF,YACjBiF,SAAU,KAAKlE,iBACfmE,OAAQ,KAAK/I,OAH+B,CAAjC,CADf,OAMK0K,EAAP,CACE,GAAI,CAAC,KAAKzD,QAAS,OACnB,KAAKzG,eAAekK,CAApB,CAFY,CAKFa,CAAV1G,GAAU0G,yBAA6B,MAAM,KAAK3G,4BAA4B8E,SAE9E,KAAK9E,iBAAmBC,GAAUC,eAAV,GAGxBoL,GACI,KAAK/P,UACL,KAAKA,UAAU+P,CAAf,EACO,KAAK5P,iBACZ,KAAKA,gBAAgB4P,EAAO7F,IAA5B,EAGA,KAAK1G,wBACL2G,aAAa,KAAK6F,mCAAlB,EACA,KAAKA,oCAAsCC,OAC3C,KAAKzM,sBAAsB0M,aACvB,UACA,GAAG,KAAKxM,YAAY+G,GAAK,KAChB,KAAK/G,YAAYsJ,GAAK,KACtB,KAAKtJ,YAAYS,OAAS,KAAKvE,OAAOkN,cACtC,KAAKpJ,YAAYU,QAAU,KAAKxE,OAAOqN,aALpD,EASA,KAAA,sBAAA,kBADQiD,aAAa,SAAUH,EAAO3F,aAAaxE,IAAI,CAAC,CAAC,EAAA6E,EAAG,EAAAuC,CAAJ,IAAW,GAAGvC,KAAKuC,GAA5C,EAAiDmD,KAAK,GAAtD,CAA/B,EACA,KAAK3M,sBAAsBM,MAAMxB,QAAU,KAExC,KAAKkB,uBAAyB,CAAC,KAAKwM,sCAE3C,KAAKA,oCAAsC3H,WACvC,IAAM,KAAK7E,sBAAuBM,MAAMxB,QAAU,OAClD,GAFuC,EAzD/C,CAKI,KAAKqK,WAAL,CAAA,CANR,CAAA,CAoEItM,eAAekK,EAAD,CAEdA,IAAU7F,GAAU4F,kBACxBpK,QAAQkQ,IAAI7F,CAAZ,CAAA,CAGUlE,MAAAA,kBAAgB,CAC1B,GAAI,CAACpB,UAAUC,aAAc,KAAM,oBAEnC,IAAA3F,EAAA,uBAAA,KAAA,KAAA,gBAAA,EACM,aACA,WAFNQ,EAAA,CAAA,CAIIoE,MAAO,CAAE4J,IAAK,IAAP,CAAA,EACR,CACC5J,MAAO,CAAE4J,IAAK,GAAP,CADR,EAEA,CAAA,CAAA,EAPH,EAAAhO,EAAA,IAQ0DsQ,GAAAA,OAAAA,OAAAA,CAAAA,EAAiCA,EAAY,CACnG,CAACC,CAAD,EAAkB,CAAEC,MAAO,KAAK7P,gBAAd,CADiF,CAAA,CAAA,EAIvG,QAAKsB,IAAL,CAAA,GAAA,EAAmD,GAAAjC,CAAA,EAC/C,GAAI,CACA,IAAAoC,EAAA,MAAA,UAAA,aAAA,aAAA,CAAyDf,MAAOoP,EAAa7K,MAAO,EAAA,CAAA,EAApFyH,EAAA,KAAA,eAAAjL,CAAA,IAKQqO,EAAY3I,WACV,KAAKnH,iBACJ,KAAKA,mBAAqB,cACvB,OACA,eAGd,MAAO,CAAEwF,OAAAA,EAAQ2B,WAAAA,CAAV,CAbP,MAcF,CAAU,CAGhB,KAAM,mBAAN,CAGUV,MAAAA,qBAAmB,CAG7B,IAAA5H,EAAA,KAAA,QAAA,MAAA,KAAA,MAAA,EAAA,GAEekR,CAAAA,GAAc,KAAK3J,SAClC,MAAM,KAAKU,MAAL,CAAA,CAGKxB,OAAAA,iBAAiBE,EAAD,CAC3B,QAAKnG,KAALR,EAAA,UAAA,EACImR,EAAMpJ,KAAN,EACApB,EAAOyK,YAAYD,CAAnB,CAAA,CAIA5I,gBAAgBD,EAAD,CAGnB,KAAKjI,OAAOkE,MAAMhB,UAAY,WAA9BvD,IAAA,OAAA,GAAA,GAAwD,GAAA,CAGpDqR,eAAeC,EAAD,CAElB,OAAAtR,EAAAA,EAAA,eAAA,EAAA,CAAA,GAEO,yBAAyB2L,KAAK4F,EAAWrL,KAAzC,EACD,cACA,mBAAmByF,KAAK4F,EAAWrL,KAAnC,EACI,OACA,KANc,IAAA,CASb4D,OAAAA,cACXJ,EAEAF,EACAH,EACAC,EAAwB,GALA,CAOxBD,EAASA,GAAUlH,SAAS5B,cAAc,QAAvB,EACnB,IAAAqC,EAAApC,GAAAA,EAAA,EAAAA,EAAA,EAAA,EAAAqN,EAAArN,GAAAA,EAAA,EAAAA,EAAA,EAAA,EAAA6D,EAAA7D,GAAAA,EAAA,MAGMgJ,EAAW5E,MACV8E,EAA2B6D,YAAc7D,EAAM9E,MAJtDkJ,EAAAtN,GAAAA,EAAA,OAMMgJ,EAAW3E,OACV6E,EAA2BgE,aAAehE,EAAM7E,OAElDyE,OAAAA,IAAL7G,EAYIjC,GAAAA,EAAA,gBAVMgJ,EAAWmE,gBACX6D,EASNhR,EAAAA,GAAAA,EAAA,iBAPMgJ,EAAWoE,iBACX6D,EAGFpI,EAAOzE,QAAU8M,IACjBrI,EAAOzE,MAAQ8M,GAEfrI,EAAOxE,SAAW8M,IAClBtI,EAAOxE,OAAS8M,IAbxBnR,EAAA,EAAA,WAAA,KAiBsC,CAAEoR,MAAO,EAAT,CAAA,EACtCC,EAAQC,sBAAwB,GAChCD,EAAQE,UACJrI,EACAsI,EAAaC,EAAaT,EAAiBC,EAC3C,EAAG,EAAGpI,EAAOzE,MAAOyE,EAAOxE,MAH/B,EAKO,CAACwE,EAAQwI,CAAT,CAAA,CAGUhI,aAAAA,WACjBX,EAD2B,CAK3B,GAAIA,aAAkCgJ,MAElC,OADA,MAAM/M,GAAUgN,gBAAgBjJ,CAA1B,EACCA,EACJ,GAAIA,aAAkCkJ,kBACtClJ,aAAkCmJ,mBAClCnJ,aAAkCoJ,iBAClC,oBAAqBrN,QAAUiE,aAAkCqJ,iBACjE,gBAAiBtN,QAAUiE,aAAkCsJ,YAChE,OAAOtJ,EACJ,GAAIA,aAAkCuJ,MAAQvJ,aAAkCwJ,MAChFxJ,aAAkCyJ,KAAO,OAAOzJ,GAA2B,SAAU,CACxF,IAAA1I,EAAA,IAAA,MAEIkJ,EAAMkJ,IADN1J,aAAkCuJ,MAAQvJ,aAAkCwJ,KAChEC,IAAIE,gBAAgB3J,CAApB,EAEAA,EAAuB4J,SAAvB,EAEhB,GAAI,CAEA,OADA,MAAM3N,GAAUgN,gBAAgBzI,CAA1B,EACCA,CAFP,QAAJ,EAIQR,aAAkCuJ,MAAQvJ,aAAkCwJ,OAC5EC,IAAII,gBAAgBrJ,EAAMkJ,GAA1B,CAFE,CAV8E,KAgBxF,MAAM,yBAAN,CAIaT,aAAAA,gBAAgBzI,EAAD,CAC5BA,EAAMsJ,UAAYtJ,EAAMuJ,eAAiB,GAC7C,MAAM,IAAIrK,QAAc,CAACC,EAASwB,IAAV,CACpB,IAAA5H,EAAAG,GAAA,CACI8G,EAAM5B,oBAAoB,OAAQoL,CAAlC,EACAxJ,EAAM5B,oBAAoB,QAASoL,CAAnC,EACIxI,aAAiByI,WACjB9I,EAAO,kBAAP,EAEAxB,EAAA,CAAA,EAGRa,EAAM1E,iBAAiB,OAAQkO,CAA/B,EACAxJ,EAAM1E,iBAAiB,QAASkO,CAAhC,CAAA,CAXE,CAAA,CAeWlL,aAAAA,mBACjBoL,EACAC,EACA1I,EACA2I,EAJmC,CAMnC,OAAOnO,GAAUgF,uBAAuB,MAAMiJ,EAA2BC,EAAM1I,EAAM2I,CAA9E,CAAA,CAIInJ,OAAAA,uBACXf,EACAiK,EACA1I,EACA2I,EAJiC,CAMjC,GAAI,EAAElK,aAAoBY,QAAS,MAAO,GAC1C,IAAApH,EAAAzC,GAAA,mBACAiJ,OAAAA,EAASmK,YAAY,CACjBhN,GAAAA,EACA8M,KAAAA,EACA1I,KAAAA,CAHiB,EAIlB2I,CAJH,EAKO/M,CAAAA,CAxiCf,EACoBpB,GAAAA,oBAAsB,IACtBA,GAAAA,iBAAmB,mBACpBA,GAAAA,wBAA0B,GAC1BA,GAAAA,iBAAmB,EAAA,IAAAqO,GAAArT,GCAtC,GAAG,SAAS,UAAW,MAAOsT,GAAY,CACxC,IAAIC,EAGJ,SAASC,GAAS,CAEhB,IAAMC,EAAc,IADDC,GAAc,WAE3BC,EAAqB,CAAC,GAAGL,EAAQ,SAAS,EAAE,OAAOM,GAAaA,EAAU,MAAM,eAAe,GAAKA,IAAcH,CAAW,EAEnIH,EAAQ,UAAU,OAAO,GAAGK,CAAkB,EAC9CL,EAAQ,UAAU,IAAIG,CAAW,CACnC,CAEA,SAASI,GAAkB,CACzB,aAAaN,CAAe,EAC5BA,EAAkB,WAAWC,EAAQ,GAAa,CACpD,CAEA,IAAMM,EAAiB,IAAI,eAAeD,CAAe,EACzDC,EAAe,QAAQR,CAAO,EAE9B,IAAMS,EAAY,MAAMC,GAAU,UAAU,EAC5CV,EAAQ,UAAU,OAAO,cAAeS,GAAaE,GAAY,aAAa,EAE9E,GAAG,WAAWX,EAAS,IAAM,CAC3BQ,EAAe,WAAW,CAC5B,CAAC,CAEH,CAAC,EC9BD,GAAG,SAAS,qBAAsB,CAACI,EAAS,CAAE,aAAAC,EAAc,eAAAC,EAAgB,UAAAC,EAAW,eAAAC,CAAe,IAAM,CAE1G,IAAMC,EAAuB,IAAI,OAAOH,EAAgB,GAAG,EAErDI,EAAmB,IAAI,OAAO,QAAQH,MAAe,GAAG,EAExDI,EAAO,SAAS,cAAcN,CAAY,EAChDM,GAAA,MAAAA,EAAM,aAAa,SAAU,IAE7B,IAAIC,EAEJ,MAAMC,CAAU,CACd,YAAYC,EAAY,CAd5B,IAAAC,EAeM,IAAMC,EAAaF,EAAW,YAAY,EAAE,WAAWN,EAAgB,EAAE,EACnES,EAAYD,EAAW,QAAQP,EAAsB,EAAE,EAEvDS,EAAYD,EAAU,MAAMP,CAAgB,GAAK,CAAC,IACpDK,EAAAG,EAAUA,EAAU,OAAS,CAAC,IAA9B,YAAAH,EAAiC,UAAWR,GAC9CW,EAAU,KAAK,EAAE,EAGnB,KAAK,uBAAyBF,IAAeC,EAC7C,KAAK,eAAiBC,EAAU,KAAKV,CAAc,CACrD,CACF,CAEA,SAASW,GAAU,CACjB,IAAMC,EAAY,IAAIP,EAAUT,EAAQ,KAAK,EAEzCQ,IAAoB,GAAGR,EAAQ,WAGjCiB,GAAkBjB,EAASgB,EAAU,cAAc,EAE/CA,EAAU,yBAA0BT,GAAA,MAAAA,EAAM,aAAa,aACzDA,GAAA,MAAAA,EAAM,gBAAgB,YAI1BC,EAAkBR,EAAQ,KAC5B,CAEAA,EAAQ,iBAAiB,QAASe,CAAO,CAE3C,CAAC,EC5CM,SAASG,MAAcC,EAAW,CACvCC,GAAK,aAAc,GAAGD,CAAS,CACjC,CAEO,SAASE,GAAc,CAC5B,SAAAC,EACA,cAAAC,EAEA,OAAAC,EACA,MAAAC,EACA,KAAAC,EACA,SAAAC,EAEA,KAAAC,EACA,SAAAC,EACA,OAAAC,EAEA,WAAAC,EACA,WAAAC,EACA,aAAAC,EACA,iBAAAC,CACF,EAAG,CACGX,GACFH,GAAK,aAAa,EAEpBA,GAAK,YAAaE,CAAQ,EAC1BF,GAAK,mBAAoBK,CAAK,EAC9BL,GAAK,eAAgBM,CAAI,EAErBC,GACFP,GAAK,iBAAkBO,CAAQ,EAGjCQ,GAAmB,EAAGP,CAAI,EAC1BO,GAAmB,EAAGN,CAAQ,EAC9BM,GAAmB,EAAGX,CAAM,EAC5BW,GAAmB,EAAGJ,CAAU,EAChCI,GAAmB,EAAGH,CAAU,EAChCG,GAAmB,EAAGF,CAAY,EAClCE,GAAmB,EAAGL,CAAM,EAC5BK,GAAmB,EAAGC,GAAc,CAAC,EACrCD,GAAmB,EAAGD,CAAgB,EAEtCd,GAAK,eAAe,CACtB,CAEA,SAASA,MAAQiB,EAAQ,CAhDzB,IAAAC,GAiDEA,EAAA,OAAO,OAAP,cAAO,KAAS,CAAC,GACjB,OAAO,KAAK,KAAKD,CAAM,CACzB,CAEA,SAASF,GAAmBI,EAAIC,EAAO,CACjCA,IAAU,QACZpB,GAAK,qBAAsBmB,EAAIC,CAAK,CAExC,CCrDA,GAAG,SAAS,cAAe,MAAOC,EAAS,CAAE,WAAAC,EAAY,qBAAAC,EAAsB,aAAAC,EAAc,gBAAAC,CAAgB,IAAM,CACjH,IAAMC,EAAY,MAAMC,GAAU,UAAU,EACtCC,EAAsBC,GAAY,cAElCC,EAAgB,cAAcR,IAEpC,GAAI,CAACI,GAAa,CAACE,EAAqB,CACtCP,EAAQ,UAAU,IAAI,YAAY,EAClCU,EAAeP,CAAY,EAC3B,MACF,CAEA,IAAMQ,EAAe,GAAG,QAAQ,MAAMX,EAAS,yBAAyB,EAClEY,EAAY,IAAIN,GAAUK,EAAcE,EAAe,CAC3D,oBAAqB,GACrB,yBAA0B,EAC5B,CAAC,EAED,GAAG,GAAGb,EAAS,QAAS,sBAAuBc,CAAgB,EAC/D,GAAG,GAAGd,EAAS,2BAA4Be,CAAQ,EAEnDC,EAA2B,EAE3B,SAASA,GAA6B,CAKpC,UAAU,YAAY,MAAM,CAAE,KAAM,QAAS,CAAC,EAC3C,KAAKC,CAAY,EACjB,MAAM,QAAQ,IAAI,CACvB,CAEA,SAASH,GAAmB,CAC1Bd,EAAQ,UAAU,IAAI,OAAO,EAI7BY,EAAU,MAAM,EACb,KAAKM,CAAO,EACZ,MAAMC,CAAkB,EACxB,QAAQ,IAAM,CAAEnB,EAAQ,UAAU,OAAO,OAAO,CAAE,CAAC,CACxD,CAEA,SAASkB,GAAU,CACjBlB,EAAQ,UAAU,IAAI,SAAS,EAC/BoB,GAAWX,EAAe,QAAQ,CACpC,CAEA,SAASU,GAAqB,CAC5BnB,EAAQ,UAAU,IAAI,oBAAoB,EAC1CU,EAAeR,CAAoB,EACnCkB,GAAWX,EAAe,mBAAmB,CAC/C,CAEA,SAASQ,EAAa,CAAE,MAAAI,CAAM,EAAG,CAC3BA,IAAU,UACZP,EAAiB,EACRO,IAAU,UACnBF,EAAmB,CAEvB,CAEA,SAAST,EAAeY,EAAM,CAC5BtB,EAAQ,UAAYsB,CACtB,CAEA,eAAeP,EAAS,CAAE,IAAAQ,CAAI,EAAG,CAC/B,IAAMC,EAAS,MAAMlB,GAAU,UAAUiB,EAAK,CAAE,yBAA0B,EAAK,CAAC,EAChFV,EAAcW,CAAM,CACtB,CAEA,IAAIC,EAAiB,GACrB,SAASZ,EAAcW,EAAQ,CAC7B,GAAIC,EAAgB,OACpBA,EAAiB,GAEjB,IAAMC,EAAMF,EAAO,KAEnB,GAAIG,EAAmBD,CAAG,EAAG,CAC3BN,GAAWX,EAAe,iBAAiB,EAG3C,IAAMmB,EAAkB,OAAO,0BAA4B,EAC3D,GAAG,KAAK,MAAMA,EAAiB,IAAM,CACnC,SAAS,KAAOF,CAClB,CAAC,CACH,MACEN,GAAWX,EAAe,0BAA0B,EACpD,QAAQ,KAAK,kBAAmBiB,CAAG,EACnC,GAAG,MAAM,KAAK,CACZ,QAAStB,EACT,KAAM,OACN,YAAa,IAAM,CAAEqB,EAAiB,EAAM,CAC9C,CAAC,CAEL,CAEA,SAASE,EAAmBE,EAAQ,CAClC,GAAI,CACF,IAAMH,EAAM,IAAI,IAAIG,CAAM,EAC1B,OAAOC,EAAYJ,CAAG,IAAMI,EAAY,QAAQ,CAClD,MAAE,CAAO,CACX,CAEA,SAASA,EAAYJ,EAAK,CACxB,OAAOA,EAAI,SAAS,QAAQ,SAAU,EAAE,CAC1C,CAEA,GAAG,WAAW1B,EAAS,IAAM,CAC3BY,GAAA,MAAAA,EAAW,SACb,CAAC,CACH,CAAC,ECpHD,IAAqBmB,GAArB,KAA8B,CAC5B,YAAYC,EAASC,EAAU,CAC7B,KAAK,QAAUD,EACf,KAAK,SAAWC,EAChB,KAAK,oBAAsB,EAC7B,CAEA,cAAe,CACb,IAAMC,EAAU,KAAK,QAAQ,cAAc,qBAAqB,EAC1DC,EAAU,KAAK,QAAQ,cAAc,qBAAqB,EAE1DC,EAASF,EAAQ,iBAAiB,OAAO,EAE3CG,EAAa,GAEjB,QAAWC,KAASF,EAAQ,CAC1B,IAAMG,EAAUD,EAAM,QAChBE,EAAQF,EAAM,QAAQ,MACtBG,EAAgBH,EAAM,QAAQ,UAAY,OAEhDH,EAAQ,cAAc,qBAAqBK,MAAUD,KAAW,EAAE,gBAAgB,QAAQ,EAEtFA,IAAYE,IACdJ,EAAa,IAGfC,EAAM,SAAW,EACnB,CAEID,EACF,KAAK,gBAAgB,UAAW,KAAK,wBAAwB,CAAC,EAE9D,KAAK,gBAAgB,UAAW,KAAK,wBAAwB,CAAC,EAGhE,KAAK,oBAAsB,GAC3B,KAAK,aAAa,CACpB,CAEA,gBAAgBK,EAAOC,EAAS,CAC9B,IAAMC,EAAe,KAAK,QAAQ,cAAc,0BAA0B,EAC1EA,EAAa,UAAYD,EACzBC,EAAa,UAAYA,EAAa,UAAU,QAAQ,cAAe,EAAE,EACzEA,EAAa,UAAU,IAAI,IAAIF,GAAO,CACxC,CAEA,yBAA0B,CACxB,OAAQ,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,EAAG,CACrC,IAAK,GACH,MAAO,+BAA0B,KAAK,qDACxC,IAAK,GACH,MAAO,uBAAuB,KAAK,gDACrC,QACE,MAAO,gBAAgB,KAAK,4DAChC,CACF,CAEA,yBAA0B,CACxB,OAAQ,KAAK,MAAM,KAAK,OAAO,EAAI,CAAC,EAAG,CACrC,IAAK,GACH,MAAO,WAAW,KAAK,8EACzB,IAAK,GACH,MAAO,gBAAgB,KAAK,wEAC9B,QACE,MAAO,wBAAwB,KAAK,oDACxC,CACF,CAEA,cAAe,CApEjB,IAAAG,EAqES,KAAK,qBACR,KAAK,QAAQ,cAAc,qBAAqB,EAAE,UAAU,IAAI,aAAa,GAG/EA,EAAA,KAAK,QAAQ,cAAc,qBAAqB,IAAhD,MAAAA,EAAmD,aAAa,SAAU,IAE1E,KACG,QACA,iBAAiB,wBAAwB,EACzC,QAASC,GAAkB,CAC1BA,EAAc,gBAAgB,QAAQ,CACxC,CAAC,CACL,CAEA,gBAAiB,CACf,KAAK,aAAa,CACpB,CACF,ECnFA,GAAG,SAAS,aAAc,CAACC,EAAS,CAAE,KAAAC,EAAM,eAAAC,EAAgB,iBAAAC,CAAiB,IAAM,CACjF,IAAMC,EAAW,IAAIC,GAASL,EAASC,CAAI,EACrCK,EAASN,EAAQ,cAAc,2BAA2B,EAC1DO,EAAgBP,EAAQ,iBAAiB,2BAA2B,EACpEQ,EAAUR,EAAQ,cAAc,qBAAqB,EAEvDS,EAAY,GAEhB,GAAG,GAAGH,EAAQ,QAASI,CAAa,EACpC,GAAG,GAAGH,EAAe,QAASI,CAAa,EAC3CC,GAAU,OAAO,SAASF,CAAa,EAEnCR,IACFW,EAAO,EACPT,EAAS,eAAe,GAG1B,eAAeO,GAAgB,CAC7BG,EAAY,KAAK,aAAa,WAAW,CAAC,EAC1CJ,EAAc,CAChB,CAEA,SAASI,EAAYC,EAAU,CAC7B,IAAMC,EAAiBR,EAAQ,cAAc,QAAQO,KAAY,EACjEC,EAAe,QAAU,EAC3B,CAEA,eAAeN,GAAgB,CAC7BG,EAAO,EACHV,GACF,MAAM,GAAG,QAAQA,EAAkB,CAAE,OAAQ,MAAO,CAAC,EAEvDC,EAAS,aAAa,CACxB,CAEA,SAASS,GAAS,CAChBP,EAAO,OAAO,EACdM,GAAU,SAAS,EACnBH,EAAY,EACd,CAEA,OAAO,UAAmB,CACxBG,GAAU,OAAO,WAAWF,CAAa,EACpCD,GACHG,GAAU,SAAS,CAEvB,CACF,CAAC,EChDD,GAAG,SAAS,eAAgB,MAAOK,EAAS,CAAE,SAAAC,EAAU,eAAAC,EAAgB,iBAAAC,CAAiB,IAAM,CAE7F,IAAMC,EAA+B,CAAC,EAAG,CAAC,EAEpCC,EAAsB,6BACtBC,EAAqB,4BACrBC,EAASP,EAAQ,iBAAiB,OAAO,EAE/C,GAAIO,EAAO,OAAS,EAClB,OAGF,IAAIC,EAAU,GACVC,EAAkB,GAClBC,EAAkB,GAClBC,EAA0B,EAC1BC,EAA4B,EAC5BC,EACEC,EAAoB,gBACpBC,EAAiB,YAEvB,eAAeC,GAAgB,CAC7B,IAAMC,EAAoB,CAACT,EAEvBS,GACF,MAAMC,EAAK,EACXC,GAAW,aAAc,YAAY,EACjCV,GAAmBG,IAA8B,EACnDO,GAAW,aAAc,mCAAmC,EACnDT,GAAmBC,IAA4B,GACxDQ,GAAW,aAAc,2BAA2B,GAE7CN,IACTO,EAAUP,CAAY,EACtBM,GAAW,aAAc,YAAY,EACrCT,EAAkB,IAGpBW,EAAwB,EACxBC,EAAoBL,CAAiB,CACvC,CAEA,eAAeM,EAAaC,EAAOC,EAAO,CACxC,IAAMC,EAASF,EAAM,QAAQ,UACzBE,GACF,MAAM,IAAI,QAAQ,CAACC,GAASC,IAAW,CACrC,GAAG,KAAK,MAAMF,EAAQC,EAAO,CAC/B,CAAC,EAEHP,EAAUI,CAAK,EAEf,IAAMK,GAAYtB,EAAOkB,EAAQ,CAAC,EAC9BI,GACF,MAAMC,EAAUD,EAAS,EAEzBpB,EAAkB,GAGpBY,EAAwB,CAC1B,CAEA,SAASA,GAA0B,CACjCrB,EAAQ,iBAAiBK,CAAmB,EAAE,QAAS0B,GAAW,CAAEA,EAAO,OAASvB,CAAQ,CAAC,EAC7FR,EAAQ,iBAAiBM,CAAkB,EAAE,QAASyB,GAAW,CAAEA,EAAO,OAAS,CAACvB,CAAQ,CAAC,CAC/F,CAEA,eAAeU,EAAK,CAAE,WAAAc,EAAa,EAAM,EAAI,CAAC,EAAG,CAC/CC,EAA6B,EAC7BC,EAA+B,EAEhB,MAAMJ,EAAUvB,EAAO,CAAC,EAAG,CAAE,WAAAyB,CAAW,CAAC,GAGtD,GAAG,QAAQ7B,EAAkB,CAAE,OAAQ,OAAQ,CAAC,EAC7C,KAAKgC,CAAkB,CAE9B,CAEA,eAAeL,EAAUN,EAAO,CAAE,WAAAQ,EAAa,EAAM,EAAI,CAAC,EAAG,CAM3D,GALInB,GAEFO,EAAUP,CAAY,EAGpB,CAACW,EAAM,YACT,OAGFA,EAAM,YAAc,EACpB,IAAIhB,EAAU,GAEd,GAAI,CACF,MAAMgB,EAAM,KAAK,EACjBhB,EAAU,EAEZ,OAAS4B,GAAP,CACA,GAAIJ,EACF,MAAMI,GAENC,EAAoB,EACpBlB,GAAW,aAAc,aAAciB,GAAM,OAAO,CAExD,CAEA,OAAAE,EAAWd,EAAO,EAAI,EACtBX,EAAeW,EAERhB,CACT,CAEA,SAASY,EAAUI,EAAO,CACxBA,EAAM,MAAM,EACZA,EAAM,YAAc,EACpBc,EAAWd,EAAO,EAAK,EACvBX,EAAe,MACjB,CAEA,SAASyB,EAAWd,EAAOe,EAAW,CACpC/B,EAAU+B,EAEV,IAAMC,EAAYxC,EAAQ,cAAc,IAAIwB,EAAM,aAAa,KAAK,GAAG,EAEvEA,EAAM,UAAU,OAAOV,EAAmByB,CAAS,EACnDC,EAAU,UAAU,OAAOzB,EAAgBwB,CAAS,CACtD,CAEA,SAASjB,EAAoBmB,EAAiB,CAC5C,GAAG,QAAQvC,EAAgB,CAAE,OAAQ,QAAS,OAAQ,CAAE,WAAYuC,CAAgB,CAAE,CAAC,CACzF,CAEA,SAASR,GAA+B,CAClCvB,GACFC,GAEJ,CAEA,SAASuB,GAAiC,CACpCzB,GACFG,GAEJ,CAEA,SAASuB,EAAmBO,EAAU,CACpC,GAAM,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIF,EAAS,KAChCE,GAAWxC,EAA6B,SAASuC,CAAK,GACxDxB,GAAW,aAAc,yBAA0BwB,CAAK,CAE5D,CAEA,SAASN,GAAsB,CAC7B,GAAG,MAAM,KAAK,CACZ,QAAS;AAAA;AAAA;AAAA;AAAA;AAAA,QAMT,KAAM,MACR,CAAC,CACH,CAeA,GAbAlB,GAAW,aAAc,0BAA0B,EAEnD,GAAG,GAAGnB,EAAS,QAASK,EAAqBW,CAAa,EAC1D,GAAG,GAAGhB,EAAS,QAASM,EAAoBU,CAAa,EAEzDT,EAAO,QAAQ,CAACiB,EAAOC,IAAU,CAC/BD,EAAM,iBAAiB,QAAS,IAAM,CACpCD,EAAaC,EAAOC,CAAK,CAC3B,CAAC,CACH,CAAC,EAEDJ,EAAwB,EAEpBpB,EACF,GAAI,CACF,MAAMiB,EAAK,CAAE,WAAY,EAAK,CAAC,EAAE,KAAKG,CAAuB,EAC7DF,GAAW,aAAc,WAAW,CACtC,MAAE,CAEAA,GAAW,aAAc,qBAAqB,CAChD,CAGJ,CAAC,ElCzLkrD,IAAA0B,GAA0B,SAA+CC,GAA0B,SAAmDC,GAA0B,SAAiDC,GAA0B,SAA0CC,GAA0B,SmCCl/D,GAAG,SAAS,oBAAqB,CAACC,EAASC,IAAS,CAClDC,GAAcD,CAAI,CACpB,CAAC,ECJD,IAAqBE,GAArB,KAAqC,CAEnC,YAAYC,EAAOC,EAAQ,CACzB,KAAK,MAAQD,EACb,KAAK,OAASC,CAChB,CAEA,SAAU,CACR,KAAK,OAAO,iBAAiB,QAAS,KAAK,UAAU,KAAK,IAAI,CAAC,EAC/D,KAAK,MAAM,iBAAiB,OAAQ,KAAK,aAAa,KAAK,IAAI,CAAC,EAChE,KAAK,MAAM,iBAAiB,QAAS,KAAK,aAAa,KAAK,IAAI,CAAC,CACnE,CAEA,YAAa,CACX,KAAK,OAAO,oBAAoB,QAAS,KAAK,UAAU,KAAK,IAAI,CAAC,EAClE,KAAK,MAAM,oBAAoB,OAAQ,KAAK,aAAa,KAAK,IAAI,CAAC,EACnE,KAAK,MAAM,oBAAoB,QAAS,KAAK,aAAa,KAAK,IAAI,CAAC,CACtE,CAEA,MAAM,WAAY,CACZ,OAAO,QAAY,KAErB,MAAM,GAAG,OAAO,KAAK,MAAO,CAAE,QAAS,EAAG,CAAC,EAE7C,KAAK,MAAM,KAAK,CAClB,CAEA,cAAe,CACb,KAAK,OAAO,gBAAgB,WAAY,CAAC,KAAK,MAAM,MAAM,CAC5D,CAEF,EC3BA,GAAG,SAAS,0BAA2B,CAACC,EAAS,CAAE,KAAAC,EAAM,WAAAC,EAAY,eAAAC,EAAgB,iBAAAC,CAAiB,IAAM,CAC1G,IAAMC,EAAiB,IAAIC,GAASN,EAASC,CAAI,EAC3CM,EAAgBP,EAAQ,cAAc,4BAA4B,EAClEQ,EAAgBR,EAAQ,cAAc,4BAA4B,EAClES,EAAUT,EAAQ,cAAc,qBAAqB,EACrDU,EAAcV,EAAQ,cAAc,0BAA0B,EAC9DW,EAAeX,EAAQ,cAAc,2BAA2B,EAChEY,EAAeZ,EAAQ,cAAc,2BAA2B,EAChEa,EAAgBb,EAAQ,iBAAiB,2BAA2B,EAEtEc,EAAY,GAEhB,GAAG,GAAGP,EAAe,QAASQ,CAA4B,EAC1D,GAAG,GAAGJ,EAAc,QAASK,CAAa,EAC1C,GAAG,GAAGH,EAAe,QAASI,CAAa,EAC3C,GAAG,GAAGL,EAAc,QAASM,CAAW,EACxCC,GAAU,OAAO,SAASH,CAAa,EAEvC,IAAMI,EAAkB,IAAIC,GAAgBd,EAAeG,CAAW,EACtEU,EAAgB,QAAQ,EAEpBjB,IACFmB,EAAO,EACPP,EAA6B,EAC7BV,EAAe,eAAe,EAC9BkB,EAAyB,GAG3B,SAASR,GAA+B,CACtCN,EAAQ,gBAAgB,QAAQ,EAChCG,EAAa,gBAAgB,QAAQ,EACrCF,EAAY,aAAa,SAAU,EAAI,EACvCH,EAAc,SAAW,GAEpBL,GACHS,EAAa,gBAAgB,QAAQ,CAEzC,CAEA,eAAeM,GAAgB,CAC7BO,EAAY,KAAK,aAAa,WAAW,CAAC,EAC1CR,EAAc,CAChB,CAEA,SAASQ,EAAYC,EAAU,CAC7B,IAAMC,EAAiBjB,EAAQ,cAAc,QAAQgB,KAAY,EACjEC,EAAe,QAAU,EAC3B,CAEA,eAAeV,GAAgB,CAC7BM,EAAO,EACHlB,GACF,MAAM,GAAG,QAAQA,EAAkB,CAAE,OAAQ,MAAO,CAAC,EAEvDC,EAAe,aAAa,EAC5BkB,EAAyB,CAC3B,CAEA,SAASD,GAAS,CAChBX,EAAa,OAAO,EACpBQ,GAAU,SAAS,EACnBL,EAAY,EACd,CAEA,SAASS,GAA2B,CAClChB,EAAc,aAAa,SAAU,EAAI,EACzCK,EAAa,aAAa,SAAU,EAAI,EACxCJ,EAAc,gBAAgB,QAAQ,EAEtCA,EAAc,KAAK,EAAE,MAAM,IAAM,CAGjC,CAAC,CACH,CAEA,SAASU,GAAc,CACrBN,EAAa,aAAa,SAAU,EAAI,EACxCL,EAAc,SAAW,GACzBA,EAAc,KAAK,CACrB,CAEA,OAAO,UAAmB,CACxBY,GAAU,OAAO,WAAWH,CAAa,EACzCI,EAAgB,WAAW,EACtBN,GACHK,GAAU,SAAS,CAEvB,CACF,CAAC,EC1FD,GAAG,SAAS,gBAAkBQ,GAAY,CAExC,IAAMC,EAAQD,EAAQ,cAAc,OAAO,EACrCE,EAAaF,EAAQ,cAAc,4BAA4B,EAE/DG,EAAkB,IAAIC,GAAgBH,EAAOC,CAAU,EAC7D,OAAAC,EAAgB,QAAQ,EAEjB,IAAM,CACXA,EAAgB,WAAW,CAC7B,CAEF,CAAC", "names": ["require_confirm_account_deletion", "__commonJSMin", "element", "message", "requiredInput", "onClick", "event", "input", "sanitizedInput", "expectedInput", "require_data_confirm", "__commonJSMin", "element", "onClick", "event", "message", "require_foldable", "__commonJSMin", "element", "foldableTriggers", "foldableContent", "foldableIconExpanded", "foldableIconCollapsed", "trigger", "require_input_type_number", "__commonJSMin", "element", "event", "key", "require_invalid_input", "__commonJSMin", "selector", "tagName", "element", "inputGroup", "formGroup", "setInputGroupInvalid", "isInvalid", "_a", "unsetOtherFormGroupFieldsInvalid", "_b", "unsetInvalid", "require_lazysizes", "__commonJSMin", "exports", "module", "window", "factory", "lazySizes", "document", "Date", "lazysizes", "lazySizesCfg", "prop", "lazySizesDefaults", "docElem", "supportPicture", "_addEventListener", "_getAttribute", "addEventListener", "setTimeout", "requestAnimationFrame", "requestIdleCallback", "regPicture", "loadEvents", "regClassCache", "forEach", "hasClass", "ele", "cls", "addClass", "removeClass", "reg", "addRemoveLoadEvents", "dom", "fn", "add", "action", "evt", "triggerEvent", "elem", "name", "detail", "noBubbles", "noCancelable", "event", "updatePolyfill", "el", "full", "polyfill", "getCSS", "style", "getWidth", "parent", "width", "rAF", "running", "waiting", "firstFns", "secondFns", "fns", "run", "runFns", "rafBatch", "queue", "rAFIt", "simple", "that", "args", "throttle", "lastTime", "gDelay", "rICTimeout", "idleCallback", "isPriority", "delay", "debounce", "func", "timeout", "timestamp", "wait", "later", "last", "loader", "preloadElems", "isCompleted", "resetPreloadingTimer", "loadMode", "started", "eLvW", "elvH", "eLtop", "eLleft", "eLright", "eLbottom", "isBodyHidden", "regImg", "regIframe", "supportScroll", "shrinkExpand", "currentExpand", "isLoading", "lowRuns", "resetPreloading", "e", "isVisible", "isNestedVisible", "elemExpand", "outerRect", "visible", "checkElements", "eLlen", "i", "rect", "autoLoadElem", "loadedSomething", "elemNegativeExpand", "elemExpandVal", "beforeExpandVal", "defaultExpand", "preloadExpand", "hFac", "lazyloadElems", "unveilElement", "throttledCheckElements", "switchLoadingClass", "rafSwitchLoadingClass", "rafedSwitchLoadingClass", "changeIframeSrc", "src", "handleSources", "source", "customMedia", "sourceSrcset", "lazyUnveil", "isAuto", "sizes", "isImg", "srcset", "isPicture", "firesLoad", "isLoaded", "autoSizer", "afterScroll", "altLoadmodeScrollListner", "onload", "loadingElements", "img", "autosizesElems", "sizeElement", "sources", "len", "getSizeElement", "dataAttr", "updateElementsSizes", "debouncedUpdateElementsSizes", "init", "require_query_diet", "__commonJSMin", "element", "require_video", "__commonJSMin", "element", "require_active_on_clicked", "__commonJSMin", "element", "evt", "classNames", "sibling", "require_alert_message_on_click", "__commonJSMin", "element", "message", "require_app_status", "__commonJSMin", "currentRelease", "lastNotified", "newReleaseMessage", "element", "release", "frequency", "time", "recentlyNotified", "showReloadNotification", "require_code_search", "__commonJSMin", "element", "button", "input", "onInput", "onSubmit", "enableOrDisable", "event", "getValue", "onSuccess", "onError", "response", "disabled", "require_content_code_search", "__commonJSMin", "element", "require_full_avatar", "__commonJSMin", "element", "image", "animating", "onClick", "animations", "bounce", "flip", "wheelie", "animation", "bounceBy", "offset", "duration", "turnBy", "degrees", "require_fullscreen", "__commonJSMin", "elem", "toggleFullscreen", "evt", "container", "exitFullScreen", "enterFullScreen", "closeFullscreenOnKeyEvent", "require_go_back", "__commonJSMin", "element", "require_image_in_lightbox", "__commonJSMin", "element", "url", "showButton", "lightbox", "container", "button", "openLightbox", "buildLightbox", "closeLightbox", "destroyLightbox", "require_javascript_links", "__commonJSMin", "element", "event", "constructor", "data", "width", "height", "length", "require_readonly_checkboxes", "__commonJSMin", "element", "event", "require_scale_to_fill_container", "__commonJSMin", "element", "isOverflown", "parent", "overflowWidth", "resizeText", "step", "i", "setFontSize", "fontSize", "target", "scalableElement", "require_scrollable_pagination", "__commonJSMin", "element", "xOffset", "paginationWidth", "require_service_worker", "__commonJSMin", "require_slide_form", "__commonJSMin", "renderOptions", "response", "__webpack_modules__", "originalFn", "name", "obj", "mockableFn", "noop", "asyncNoop", "memoize", "func", "cachedValue", "cached", "args", "NORMALIZE_URL_DEFAULTS", "normalizeURL", "url", "options", "newOptions", "parts", "parseURL", "normalized", "isCrossOrigin", "pathname", "matchURLs", "leftURL", "rightURL", "APP_PROTOCOL", "APP_HOSTNAME", "urlOrAnchor", "isString", "link", "normalizeMethod", "method", "methodAllowsPayload", "iteratee", "block", "item", "map", "list", "mapped", "i", "mapObject", "array", "pairer", "merger", "object", "pair", "each", "isNull", "isUndefined", "isDefined", "negate", "isMissing", "isGiven", "isBlank", "value", "isObject", "isList", "isOptions", "presence", "tester", "isPresent", "isFunction", "isBoolean", "isNumber", "typeOfResult", "isElement", "isRegExp", "isError", "isJQuery", "isElementish", "_a", "isPromise", "isArray", "isFormData", "toArray", "copyArrayLike", "isNodeList", "isArguments", "isHTMLCollection", "nullToUndefined", "wrapList", "copy", "arrayLike", "merge", "sources", "mergeDefined", "result", "source", "key", "defaults", "parseArgIntoOptions", "argKey", "extractOptions", "findInList", "match", "element", "some", "findResult", "every", "compact", "filterList", "filterMap", "mapping", "compactObject", "pickBy", "uniq", "uniqBy", "mapper", "seenElements", "elem", "index", "matches", "reject", "intersect", "array1", "array2", "contains", "scheduleTimer", "millis", "callback", "queueTask", "task", "queueMicrotask", "last", "subValue", "objectContains", "subObject", "reducedValue", "pick", "isEqual", "keys", "filtered", "omit", "_value", "unresolvablePromise", "remove", "evalOption", "evalAutoOption", "autoMeans", "ESCAPE_HTML_ENTITY_MAP", "escapeHTML", "string", "char", "escapeRegExp", "pluckKey", "renameKey", "oldKey", "newKey", "extractLastArg", "extractCallback", "identity", "arg", "sequence", "functions", "fn", "flatten", "flattened", "flatMap", "always", "promise", "newDeferred", "resolveFn", "rejectFn", "nativePromise", "givenResolve", "givenReject", "isBasicObjectProperty", "k", "a", "b", "isEqualList", "aKeys", "bKeys", "aKey", "PARSE_TOKEN_PATTERNS", "parseTokens", "separator", "pattern", "wrapValue", "constructor", "nextUid", "uid", "reverse", "renameKeys", "renameKeyFn", "renamed", "camelToKebabCase", "str", "lowerCaseFirst", "upperCaseFirst", "defineDelegates", "props", "targetProvider", "prop", "target", "newValue", "stringifyArg", "placeholder", "attr", "error", "SPRINTF_PLACEHOLDERS", "sprintf", "message", "useMemoizeCacheEntry", "cacheEntry", "buildMemoizeCacheEntry", "oldImpl", "self", "e", "memoizeMethod", "propLiteral", "cachingImpl", "cache", "cacheKey", "safeStringifyJSON", "json", "escapeHighASCII", "unicodeEscape", "variant", "changes", "fail", "isCritical", "muteUncriticalRejection", "throwCritical", "muteUncriticalSync", "report", "event", "guard", "guardFn", "u", "submitForm", "form", "canPushState", "canJQuery", "canHasSelector", "popCookie", "assertConfirmed", "__unused_webpack_module", "__unused_webpack_exports", "__webpack_require__", "first", "selector", "subtree", "root", "results", "selectorOrElement", "getOne", "ancestor", "around", "getList", "valueToList", "hide", "show", "toggle", "newVisible", "isVisible", "toggleAttr", "newPresent", "setAttrs", "attrs", "setTemporaryAttrs", "oldAttrs", "metaContent", "attrSelector", "insertBefore", "existingElement", "newElement", "createFromSelector", "includePath", "parseSelector", "rootElement", "depthElement", "previousElement", "includeSegment", "tagName", "id", "classNames", "attributes", "className", "attributeName", "attributeValue", "klass", "setInlineStyle", "excludeRaw", "includeRaw", "includeSelectorWithoutAttrValues", "attrValues", "removeAttrSelectorValues", "depthSelector", "parsed", "_match", "replaceAttrSelectors", "ATTR_SELECTOR_PATTERN", "replacement", "operator", "quote", "values", "affix", "parent", "position", "SINGLETON_TAG_NAMES", "isSingleton", "elementTagName", "attribute", "idSelector", "classSelector", "createBrokenDocumentFromHTML", "html", "fixParserDamage", "scriptish", "clone", "createFromHTML", "range", "elements", "getRoot", "paint", "concludeCSSTransition", "undo", "setTemporaryStyle", "hasCSSTransition", "elementOrStyleHash", "styleHash", "computedStyle", "duration", "fixedToAbsolute", "elementRectAsFixed", "offsetParentRect", "computedStyleNumber", "setMissingAttrs", "setMissingAttr", "unwrap", "wrapper", "preservingFocus", "wrappedNodes", "wrappedNode", "wrapChildren", "childNode", "isWrapper", "oldFocusElement", "stringAttr", "booleanAttr", "pass", "booleanOrStringAttr", "numberAttr", "jsonAttr", "_b", "callbackAttr", "exposedKeys", "mainKey", "code", "exposedValues", "closestAttr", "parseFn", "newStyles", "oldStyles", "inlineStyle", "addTemporaryClass", "setTemporaryAttr", "style", "extractFromStyleObject", "rawValue", "keyOrKeys", "normalizeStyleValueForWrite", "CSS_LENGTH_PROPS", "cssLength", "isUpPrefixed", "upAttrs", "attrNames", "upClasses", "cleanJQuery", "isEmpty", "crossOriginSelector", "__webpack_exports__", "_options", "other", "blueprintFn", "includes", "excludes", "enabledKey", "enabled", "newEnabled", "parserOptions", "keyOptions", "parser", "attrValueFn", "attrName", "normalizeFn", "failKey", "failAttrNames", "optionsFn", "fnResult", "prefix", "option", "capacity", "normalizeKey", "oldestKey", "overflowElement", "body", "bodyRightPadding", "bodyRightShift", "elementRight", "elementRightShift", "styles", "unshiftFn", "renderResult", "existingValue", "eventPlan", "layer", "oldElement", "time", "etag", "steps", "responseDoc", "noneOptions", "resultOrError", "onRendered", "onFinished", "guardedOnFinished", "onRequest", "request", "onRender", "guardEvent", "abort", "fragments", "origin", "newLayer", "abortOptions", "onApplicable", "unbindClosing", "otherLayerSteps", "buildOptions", "beforeNew", "optionsWithLayerDefaults", "scrollingOptions", "step", "finder", "focusCapsule", "oldFragments", "motionEndPromises", "fragment", "newFragments", "morphOptions", "oldWrapper", "newWrapper", "wrapperStep", "partner", "partnerSelector", "lookupOpts", "plan", "keepPlans", "keepable", "keepPlan", "keepableClone", "viewports", "viewport", "cursorProps", "reviver", "formerParent", "verbPast", "verbPastUpperCaseFirst", "newFocusElement", "_newPageReason", "responseOrError", "successAttrs", "failAttrs", "renderOptions", "requestAttributesOptions", "response", "retryOptions", "finalRenderOptions", "originalRenderOptions", "inputTarget", "effectiveTarget", "verifyResult", "expiredResponse", "meta", "responseURL", "serverLocation", "hash", "serverTarget", "plans", "layers", "targets", "change", "matchedPlan", "primaryPlan", "assets", "docOptions", "opts", "getPlanProps", "reason", "planTargets", "humanizedLayerOption", "compilers", "data", "dataMap", "compiler", "compileArgs", "destructorOrDestructors", "dataList", "elementOrElements", "appliedCompilers", "lastFrameKebab", "completedPropertyKebab", "oldTransition", "oldTransitionProperties", "oldTransitionFrameKebab", "cleanable", "destructors", "destructor", "selectOptions", "messageArgs", "type", "expectedArgCount", "applyCallback", "listeners", "unbindFns", "listener", "eventType", "eventTypes", "fixTypes", "unbindFn", "field", "rootOptions", "container", "fieldOptions", "delay", "diff", "callbackOptions", "callbackReturnValues", "callbackDone", "previous", "next", "previousValue", "nextValue", "fieldOrForm", "solutions", "solution", "formGroup", "simpleSelectors", "simpleSelector", "containerWithAttr", "overrideOptions", "solutionDelays", "shortestDelay", "dirtySolutions", "dirtyOrigins", "dirtyFields", "dirtyNames", "dirtyRenderOptionsList", "renderingPromise", "headers", "names", "rediscoveredElement", "focusedElement", "opt", "preprocessed", "condition", "DESCENDANT_SELECTOR", "preferOldElement", "PREVENT_SCROLL_OPTIONS", "autofocusElement", "hashTarget", "reloadOptions", "oldAbortable", "newFragment", "hittableElement", "title", "metaTags", "location", "previousLocation", "part", "_part", "parentElement", "elementAttrs", "content", "originClicked", "closeOptions", "label", "fieldSelector", "fieldsAnywhere", "fieldsInLayer", "halt", "closeFn", "urlPattern", "resolution", "closeValue", "destroyOptions", "boxDone", "backdropDone", "verb", "stack", "recursiveOptions", "descendants", "dismissOptions", "descendant", "overlay", "normalize", "href", "upHREF", "alias", "normalizedLocation", "applyDelay", "onQueued", "cluster", "startMotion", "memory", "mutedAnimator", "el", "eventAttrs", "isActive", "doForward", "unbindFinish", "script", "nonce", "argNames", "callbackThis", "thisArg", "wrappedScript", "allowedNonces", "getPageNonce", "warn", "pageNonce", "focusOptions", "child", "raw", "entry", "formData", "query", "base", "valueElements", "valueElement", "entries", "fields", "params", "file", "objects", "allParams", "TRANSITION_DELAY", "nextStepDelay", "width", "GLOBAL_DEFAULTS", "PRELOAD_OVERRIDES", "SHARED_KEYS", "CONTENT_KEYS", "LATE_KEYS", "navigateDefaults", "preloadOverrides", "preprocess", "finalize", "preprocessedOptions", "lateDefaults", "assertContentGiven", "contentKey", "failOverrides", "overrides", "unprefixed", "deriveFailOptions", "main", "extension", "mergeFinished", "_c", "layerLookupOptions", "selectors", "log", "responseAttrs", "methodFromResponse", "urlFromResponse", "subtreeElements", "subtreeElement", "csrfHeader", "csrfToken", "except", "testFn", "_request", "influencingHeaders", "varyPart", "headerName", "cachedRequest", "oldCacheKey", "newCacheKey", "headersInfluencingResponse", "previousInfluencingHeaders", "existingCachedRequest", "newRequest", "existingRequest", "testerOptions", "request1", "request2", "requestOrOptions", "timeUntilLate", "maxConcurrency", "logOnce", "conditions", "abortableRequests", "abortableRequest", "currentLate", "allForegroundRequests", "timerTolerance", "HTML_FORM_METHODS", "action", "paramsFromQuery", "contentType", "csrfParam", "CONTENT_TYPE_URL_ENCODED", "CONTENT_TYPE_FORM_DATA", "handlers", "xhr", "headerValue", "header", "document", "cspNonces", "originSelector", "matchingElement", "node", "head", "selectEvent", "brokenElements", "_d", "_e", "_f", "_g", "_h", "_i", "viewportConfig", "viewportRect", "elementRect", "maxPixels", "originalScrollTop", "newScrollTop", "obstruction", "obstructionRect", "CSS_HAS_SUFFIX_PATTERN", "elementOrDocument", "matchingInExternalDocument", "expandTargetLayer", "expandedTargets", "descendantSelector", "filter", "doScheduleSync", "elementBox", "elementMargin", "anchorBox", "left", "top", "targetLeft", "targetTop", "fullPattern", "positiveList", "negativeList", "capture", "reCode", "doNormalize", "group", "groupIndex", "readyState", "emitReset", "boot", "issue", "supportIssue", "mustBootManually", "unpolyScript", "onEvaled", "startExtension", "stopExtension", "isSupported", "feature", "reset", "globalElement", "on", "buildListenerGroup", "off", "buildEmitter", "emit", "build", "assertEmitted", "onEscape", "keyModifiers", "isUnmodified", "modifier", "fork", "originalEvent", "newType", "copyKeys", "newEvent", "originalMethod", "executeEmitAttr", "eventProps", "forkedEvent", "inputDevices", "getInputDevice", "observeInputDevice", "newModality", "headerize", "camel", "extractHeader", "shortHeader", "targetFromXHR", "parseModifyCacheValue", "evictCacheFromXHR", "expireCacheFromXHR", "contextFromXHR", "methodFromXHR", "titleFromXHR", "eventPlansFromXHR", "acceptLayerFromXHR", "dismissLayerFromXHR", "initialRequestMethod", "locationFromXHR", "influencingHeadersFromResponse", "varyHeaderValue", "config", "cspNonce", "cspNoncesFromHeader", "cspHeader", "nonces", "noncePattern", "wrapMethod", "printToStandard", "printToStream", "printToWarn", "printToError", "stream", "trace", "printToStreamStyled", "customStyles", "printUserEvent", "color", "printBanner", "logo", "text", "enable", "disable", "SYSTEM_MACRO_PRIORITIES", "registeredCompilers", "registeredMacros", "registerCompiler", "buildCompiler", "insertCompiler", "registerMacro", "macro", "detectSystemMacroPriority", "macroSelector", "substr", "priority", "parseCompilerArgs", "queue", "newCompiler", "existingCompiler", "compile", "registerDestructor", "hello", "clean", "readData", "buildData", "rawJSON", "parsedJSON", "findAssets", "assertAssetsOK", "newAssets", "oldAssets", "oldHTML", "newHTML", "disableScript", "scriptElement", "disableScriptsInSubtree", "nextPreviousLocation", "trackCurrentLocation", "DEFAULT_NORMALIZE_OPTIONS", "currentLocation", "normalizeOptions", "ADDITIONAL_NORMALIZE_OPTIONS_FOR_COMPARISON", "isLocation", "replace", "manipulate", "emitLocationChanged", "push", "state", "buildState", "restoreStateOnPop", "onPop", "register", "findMetaTags", "updateMetaTags", "newMetaTags", "oldMetaTags", "oldMetaTag", "newMetaTag", "upTagName", "defaultSkipResponse", "sourceOf", "getSmart", "timeOf", "etagOf", "render", "parseTargetAndOptions", "navigate", "emitFragmentInserted", "emitFragmentKeep", "newData", "emitFragmentDestroyed", "isNotDestroying", "isAlive", "getDumb", "getAll", "selectorString", "getSubtree", "closest", "destroy", "markFragmentAsDestroying", "reload", "conditionalHeaders", "visit", "KEY_PATTERN", "successKey", "_", "suffix", "toTarget", "tryToTarget", "cannotTarget", "isTargetable", "untargetableMessage", "deriver", "deriveTarget", "isGoodTarget", "deriveTargetFromPattern", "goodClass", "goodClassesForTarget", "matchesPattern", "isGood", "badTargetClass", "MAIN_PSEUDO", "LAYER_PSEUDO", "ORIGIN_PSEUDO", "containsMainPseudo", "expandTargets", "expanded", "mode", "resolveMode", "replaced", "mainTarget", "firstSwappableTarget", "resolveOrigin", "modernResolveOrigin", "splitTarget", "parseTargetSteps", "defaultPlacement", "defaultMaybe", "placement", "maybe", "customPlacement", "hasAutoHistory", "vanillaSelector", "shouldRevalidate", "targetForSteps", "bestSteps", "isContainedByRivalStep", "candidateStep", "rivalStep", "compressNestedSteps", "compressed", "testFnWithAbortable", "onAborted", "unsubscribe", "documentElement", "f", "inputDevice", "bodyShifter", "reveal", "doFocus", "preventScroll", "force", "focusVisible", "removeFocusClasses", "relatedTarget", "tryFocus", "revealHash", "firstHashTarget", "allSelector", "rootSelector", "getAround", "rootWidth", "rootHeight", "isRoot", "rootHasReducedWidthFromScrollbar", "rootOverflowElement", "wasChosenAsOverflowingElement", "overflowY", "scrollbarWidth", "outerStyle", "outer", "scrollTopKey", "fixedElements", "queryParts", "saveScroll", "parseOptions", "tops", "getScrollTopsForSave", "restoreScroll", "locationScrollTops", "setScrollTops", "saveFocus", "restoreFocus", "locationCapsule", "newStateCache", "resetScroll", "absolutize", "originalRect", "boundsRect", "bounds", "moveBounds", "diffX", "diffY", "newElementRect", "pureHash", "focusedElementWithin", "scopeElement", "CURSOR_PROPS", "copyCursorProps", "from", "to", "userScrolled", "namedAnimations", "namedTransitions", "motionController", "pickDefault", "registry", "isEnabled", "animate", "animation", "animationFn", "findAnimationFn", "willRun", "willAnimate", "runNow", "skipAnimate", "animationOrTransition", "applyConfig", "isNone", "animateNow", "lastFrame", "findNamedAnimation", "finish", "morph", "transitionObject", "transitionFn", "findTransitionFn", "willMorph", "beforeStart", "afterInsert", "beforeDetach", "afterDetach", "scrollNew", "scrollTopBeforeReveal", "oldRemote", "trackable", "scrollTopAfterReveal", "swapElementsDirectly", "composeTransitionFn", "namedTransition", "oldAnimation", "newAnimation", "oldAnimationFn", "newAnimationFn", "motionOptions", "registerTransition", "transition", "registerAnimation", "registerOpacityAnimation", "translateCSS", "dx", "dy", "noTranslateCSS", "untranslatedBox", "registerMoveAnimations", "direction", "boxToTransform", "animationToName", "animationFromName", "box", "transform", "travelDistance", "_response", "progressBar", "abortRequests", "makeRequest", "parseRequestOptions", "processRequest", "useCachedRequest", "queueRequest", "handleCaching", "expireCache", "evictCache", "isBusy", "loadPage", "requestsAttrs", "registerAliasForRedirect", "isSafeMethod", "onLate", "onRecover", "LAYER_CLASSES", "newConfig", "Class", "mainTargets", "modeConfigs", "openMethod", "shorthandMode", "configs", "handleDeprecatedConfig", "openCallbackAttr", "closeCallbackAttr", "open", "ask", "resolve", "anySelector", "optionToString", "isWithinForeignOverlay", "api", "linkPreloader", "lastMousedownTarget", "LINKS_WITH_LOCAL_HTML", "LINKS_WITH_REMOTE_HTML", "ATTRIBUTES_SUGGESTING_FOLLOW", "combineFollowableSelectors", "elementSelectors", "attributeSelectors", "elementSelector", "isPreloadDisabled", "isFollowable", "willCache", "follow", "followOptions", "followURL", "followMethod", "preload", "preloadIssue", "isSafe", "makeFollowable", "makeClickable", "forkEventAsUpClick", "shouldFollowEvent", "betterTargetSelector", "betterTarget", "isInstant", "linkOrDescendant", "isInstantDisabled", "convertClicks", "didUserDragAway", "clickEvent", "forwardedProps", "area", "childLink", "areaAttrs", "areaClasses", "ATTRIBUTES_SUGGESTING_SUBMIT", "isField", "findFields", "outsideFieldSelector", "outsideFields", "findSubmitButtons", "submitButtonSelector", "submittingButton", "submit", "submitOptions", "getForm", "destinationOptions", "watchOptions", "disableContainer", "focusFallback", "controls", "control", "findGroup", "raiseDisableStack", "lowerDisableStack", "disableWhile", "undoDisable", "handleDisableOption", "missingOption", "getOrigin", "getOriginForm", "getScope", "containers", "submitButton", "button", "isSubmittable", "watch", "watchCallbackFromElement", "watcher", "rawCallback", "autosubmit", "_diff", "getGroupSelectors", "findGroupSolution", "groupSelector", "goodDerivedGroupTarget", "goodDerivedFieldTarget", "groupHasFieldTarget", "validate", "parseValidateArgs", "originOrTarget", "switcherValues", "groupName", "checkedButton", "switchTargets", "switcher", "targetSelector", "fieldValues", "switchTarget", "findSwitcherForTarget", "hideValues", "parseSwitchTokens", "showValues", "switchers", "elementOrSelector", "focusedField", "validatingFieldSelector", "_event", "formOrField", "CLASS_ACTIVE", "CLASS_LOADING", "SELECTOR_LINK", "navSelector", "linkURLs", "updateFragment", "layerOption", "links", "updateLinks", "updateLinksWithinNavs", "navs", "nav", "getNormalizedLayerLocation", "layerLocation", "isCurrent", "currentClass", "findActivatableArea", "showAroundRequest", "activeElement", "getActiveElementFromRenderOptions", "updateLayerIfLocationChanged", "processedLocation", "onBrowserLocationChanged", "frontLayer", "hungrySteps", "useHungry", "renderLayer", "hungrySelector", "layerPreference", "elementLayer", "hungries", "ifLayer", "applicableLayers", "selectCallback", "startPolling", "stopPolling", "pollOptions", "isRails", "upAttribute", "dataAttribute", "__webpack_module_cache__", "moduleId", "cachedModule", "module", "exports", "environment_default", "environment_default", "signedIn", "response", "signedIn", "scriptsLoaded", "loadScript", "url", "createScriptTag", "scriptTag", "cachedPromise", "promise", "resolve", "reject", "componentSelector", "enterEvent", "leaveEvent", "hoverableTags", "supportsHas", "hoverablesSelector", "tag", "element", "path", "scriptSource", "autoplay", "loop", "loadScript", "animatedIcon", "module1", "module2", "Application", "configKey", "data", "config", "Configuration", "key", "value", "application_default", "Timeout", "callback", "microseconds", "percent", "config", "application_default", "element", "indicator", "closeButton", "updateIndicator", "percent", "removeTimer", "environment_default", "removeAutomatically", "remove", "updateIndicatorInterval", "Timeout", "module4", "module5", "module6", "import_lazysizes", "revealSource", "target", "imageUrl", "revealBackground", "backgroundImageUrl", "event", "module8", "module9", "module0", "appleIphone", "appleIpod", "appleTablet", "appleUniversal", "androidPhone", "androidTablet", "amazonPhone", "amazonTablet", "windowsPhone", "windowsTablet", "otherBlackBerry", "otherBlackBerry10", "otherOpera", "otherChrome", "otherFirefox", "isAppleTabletOnIos13", "navigator", "createMatch", "userAgent", "regex", "isMobile", "param", "nav", "tmp", "match", "result", "installPrompt", "event", "element", "iosDialog", "hideAddToHomescreen", "installButton", "setVisibility", "isMobile", "showInstallPrompt", "choiceResult", "module2", "module3", "getDeviceType", "phone", "tablet", "isMobile", "element", "getDeviceType", "e", "t", "o", "r", "n", "i", "a", "l", "s", "d", "u", "c", "v", "autosize_esm_default", "element", "autosize_esm_default", "module6", "setFormattedValue", "element", "newValue", "oldValue", "caretPosition", "fixCaretPosition", "lengthWas", "lengthIs", "newCaretPosition", "element", "invalidPattern", "formatRegExp", "format", "value", "onInput", "formattedValue", "setFormattedValue", "module8", "CallbackRegistry", "callback", "index", "GameState", "CallbackRegistry", "gameState", "element", "setButtonState", "gameState", "element", "scrollContainer", "previousPageButton", "nextPageButton", "behavior", "environment_default", "updateTimer", "move", "deltaX", "updateButtonStates", "atStart", "atEnd", "scheduleButtonUpdate", "module11", "module12", "gameState", "BlanksText", "heading", "text", "sourceContainer", "destinationContainer", "destinationDropAreaSelector", "draggableElementSelector", "matches", "match", "container", "dropAreaSelector", "i", "textFragment", "draggableElementsSelector", "shuffledWords", "a", "b", "word", "completed", "dropArea", "inputElement", "maxLength", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread2", "target", "i", "source", "key", "_defineProperty", "_typeof", "obj", "value", "_extends", "_objectWithoutPropertiesLoose", "excluded", "sourceKeys", "_objectWithoutProperties", "sourceSymbolKeys", "version", "userAgent", "pattern", "IE11OrLess", "Edge", "FireFox", "Safari", "IOS", "ChromeForAndroid", "captureMode", "on", "el", "event", "fn", "off", "matches", "selector", "getParentOrHost", "closest", "ctx", "includeCTX", "R_SPACE", "toggleClass", "name", "state", "className", "css", "prop", "val", "style", "matrix", "selfOnly", "appliedTransforms", "transform", "matrixFn", "find", "tagName", "iterator", "list", "i", "n", "getWindowScrollingElement", "scrollingElement", "getRect", "relativeToContainingBlock", "relativeToNonStaticParent", "undoScale", "container", "elRect", "top", "left", "bottom", "right", "height", "width", "containerRect", "elMatrix", "scaleX", "scaleY", "isScrolledPast", "elSide", "parentSide", "parent", "getParentAutoScrollElement", "elSideVal", "parentSideVal", "visible", "getChild", "childNum", "options", "includeDragEl", "currentChild", "children", "Sortable", "lastChild", "last", "index", "getRelativeScrollOffset", "offsetLeft", "offsetTop", "winScroller", "indexOfObject", "arr", "obj", "key", "includeSelf", "elem", "gotSelf", "elemCSS", "extend", "dst", "src", "isRectEqual", "rect1", "rect2", "_throttleTimeout", "throttle", "callback", "ms", "args", "_this", "scrollBy", "el", "x", "y", "clone", "Polymer", "$", "expando", "AnimationStateManager", "animationStates", "animationCallbackId", "children", "child", "css", "Sortable", "getRect", "fromRect", "_objectSpread2", "childMatrix", "matrix", "state", "target", "indexOfObject", "callback", "_this", "animating", "animationTime", "time", "toRect", "prevFromRect", "prevToRect", "animatingRect", "targetMatrix", "isRectEqual", "calculateRealTime", "currentRect", "duration", "elMatrix", "scaleX", "scaleY", "translateX", "translateY", "repaint", "options", "plugins", "defaults", "PluginManager", "plugin", "option", "p", "eventName", "sortable", "evt", "eventNameGlobal", "el", "pluginName", "initialized", "_extends", "modified", "name", "eventProperties", "value", "modifiedValue", "dispatchEvent", "_ref", "rootEl", "targetEl", "cloneEl", "toEl", "fromEl", "oldIndex", "newIndex", "oldDraggableIndex", "newDraggableIndex", "originalEvent", "putSortable", "extraEventProperties", "onName", "IE11OrLess", "Edge", "allEventProperties", "_excluded", "pluginEvent", "data", "_objectWithoutProperties", "dragEl", "parentEl", "ghostEl", "nextEl", "lastDownEl", "cloneHidden", "moved", "_hideGhostForTarget", "_unhideGhostForTarget", "_dispatchEvent", "info", "activeGroup", "awaitingDragStarted", "ignoreNextClick", "sortables", "tapEvt", "touchEvt", "lastDx", "lastDy", "tapDistanceLeft", "tapDistanceTop", "lastTarget", "lastDirection", "pastFirstInvertThresh", "isCircumstantialInvert", "targetMoveDistance", "ghostRelativeParent", "ghostRelativeParentInitialScroll", "_silent", "savedInputChecked", "documentExists", "PositionGhostAbsolutely", "IOS", "CSSFloatProperty", "supportDraggable", "ChromeForAndroid", "supportCssPointerEvents", "_detectDirection", "elCSS", "elWidth", "child1", "getChild", "child2", "firstChildCSS", "secondChildCSS", "firstChildWidth", "secondChildWidth", "touchingSideChild2", "_dragElInRowColumn", "dragRect", "targetRect", "vertical", "dragElS1Opp", "dragElS2Opp", "dragElOppLength", "targetS1Opp", "targetS2Opp", "targetOppLength", "_detectNearestEmptySortable", "x", "y", "ret", "threshold", "lastChild", "rect", "insideHorizontally", "insideVertically", "_prepareGroup", "toFn", "pull", "to", "from", "sameGroup", "otherGroup", "group", "originalGroup", "_typeof", "nearestEmptyInsertDetectEvent", "nearest", "event", "i", "_checkOutsideTargetEl", "dataTransfer", "Safari", "fn", "on", "preventOnFilter", "type", "touch", "originalTarget", "filter", "_saveInputCheckedState", "closest", "index", "criteria", "ownerDocument", "dragStartFn", "FireFox", "toggleClass", "find", "_disableDraggable", "e", "off", "_nextTick", "fallback", "parent", "inserted", "fallbackTolerance", "fallbackOffset", "ghostMatrix", "relativeScrollOffset", "getRelativeScrollOffset", "dx", "dy", "cssMatrix", "container", "getWindowScrollingElement", "clone", "revert", "activeSortable", "isOwner", "canSort", "fromSortable", "completedFired", "dragOverEvent", "extra", "completed", "after", "_onMove", "changed", "capture", "insertion", "elLastChild", "_ghostIsLast", "_ghostIsFirst", "firstChild", "direction", "targetBeforeFirstSwap", "differentLevel", "differentRowCol", "side1", "scrolledPastTop", "isScrolledPast", "scrollBefore", "_getSwapDirection", "sibling", "dragIndex", "nextSibling", "moveVector", "_unsilent", "scrollBy", "_cancelNextTick", "_globalDragOver", "order", "n", "_generateId", "useAnimation", "items", "id", "store", "selector", "willInsertAfter", "onMoveFn", "retVal", "spacer", "swapThreshold", "invertedSwapThreshold", "invertSwap", "isLastTarget", "mouseOnAxis", "targetLength", "targetS1", "targetS2", "invert", "_getInsertDirection", "str", "sum", "root", "inputs", "idx", "extend", "throttle", "element", "_len", "_key", "version", "autoScrolls", "scrollEl", "scrollRootEl", "scrolling", "touchEvt$1", "clearAutoScrolls", "autoScrolls", "autoScroll", "autoScroll", "throttle", "evt", "options", "rootEl", "isFallback", "x", "y", "sens", "speed", "winScroller", "getWindowScrollingElement", "scrollThisInstance", "scrollCustomFn", "scrollRootEl", "clearAutoScrolls", "scrollEl", "getParentAutoScrollElement", "layersOut", "currentParent", "el", "rect", "getRect", "top", "bottom", "left", "right", "width", "height", "canScrollX", "canScrollY", "scrollWidth", "scrollHeight", "elCSS", "css", "scrollPosX", "scrollPosY", "vx", "vy", "autoScrolls", "i", "Sortable", "touchEvt$1", "scrollOffsetY", "scrollOffsetX", "expando", "scrollBy", "scrolling", "drop", "_ref", "originalEvent", "putSortable", "dragEl", "activeSortable", "dispatchSortableEvent", "hideGhostForTarget", "unhideGhostForTarget", "toSortable", "touch", "target", "Revert", "_ref2", "oldDraggableIndex", "_ref3", "nextSibling", "getChild", "_extends", "Remove", "_ref4", "parentSortable", "OnSpill", "lastSwapEl", "SwapPlugin", "Swap", "completed", "onMove", "changed", "cancel", "prevSwapEl", "toggleClass", "swapNodes", "n1", "n2", "p1", "p2", "i1", "i2", "index", "Sortable", "OnSpill", "SwapPlugin", "dragging", "SortableWithScrollPatch", "element", "options", "onChoose", "onUnchoose", "item", "onTouchMove", "touches", "onDrag", "target", "clientX", "clientY", "_a", "getScrollingElement", "scrollingElement", "clientHeight", "padding", "offsetTop", "scrollTop", "scrollBottom", "layerY", "setScrollTop", "top", "throttledCallback", "callback", "throttled", "args", "SortableWithSingleDropTargets", "sortableContainer", "dropAreas", "draggableSelector", "groupName", "onMove", "to", "onEnd", "item", "element", "SortableWithScrollPatch", "sortable", "setNotification", "element", "state", "message", "notification", "element", "heading", "text", "skipToSolution", "completeSlideUrl", "container", "sourcesSpacer", "sourceContainer", "controlsContainer", "destinationContainer", "submitButton", "destinationDropAreaSelector", "nuggetSelector", "submitted", "blanksText", "BlanksText", "dropTargets", "sortable", "SortableWithSingleDropTargets", "ensureStickySources", "onClickSubmit", "handleClickOnDropTarget", "gameState", "submit", "displaySolution", "showSolutionButton", "displaySuccessText", "displayFailureText", "event", "dropArea", "textNugget", "getNugget", "modalForTextNuggets", "originalTextNuggets", "sourceContainerModal", "clickedNugget", "originalTextNugget", "destroy", "_a", "viewportTop", "padding", "sourcesBottom", "lastSourceItem", "lastSourceBottom", "spaceLeft", "top", "height", "newHeight", "heightDiff", "onClickShowSolution", "setNotification", "solutionContainer", "solutionBody", "derange", "array", "copy", "result", "selectedIndex", "i", "copyLength", "lastItemMoved", "NuggetComparator", "nugget", "otherNugget", "_a", "_b", "GridGame", "columnCount", "gridContainer", "gridSolution", "sortableColumns", "rowAttribute", "columnIndexAttribute", "gridElementSelector", "draggableElementSelector", "columnIndex", "draggableContainers", "draggables", "container", "numberOfRows", "derangedRowIndexes", "derange", "rowIndex", "draggable", "newRowIndex", "completed", "gridIndex", "item", "actualItem", "expectedItem", "NuggetComparator", "row", "element", "callback", "rowElements", "NuggetFinder", "nuggets", "nuggetCopy", "comparator", "NuggetComparator", "nugget", "element", "text", "columnSettings", "columnCount", "html", "skipToSolution", "completeSlideUrl", "container", "gridSolution", "gridContainer", "controlsContainer", "submitButton", "sortableColumns", "setting", "rowAttribute", "columnIndexAttribute", "gridElementSelector", "draggableElementSelector", "gameNuggets", "submitted", "gridGame", "GridGame", "swappables", "createSwappables", "onClickColumnHint", "onClickSubmit", "handleClickOnGameNugget", "gameState", "submit", "displaySolution", "groupPrefix", "i", "groupSelector", "swappableElements", "swappableElement", "sortable", "SortableWithScrollPatch", "onSwap", "event", "clickedNugget", "modalForGameNuggets", "swapGameNuggets", "excludedNugget", "gameNuggetsModal", "nugget", "nuggetCopy", "clickedNuggetCopy", "originalNugget", "NuggetFinder", "nuggetOne", "nuggetTwo", "gameCellOne", "gameCellTwo", "from", "to", "_a", "hintSelector", "hint", "showSolutionButton", "displaySuccessText", "displayFailureText", "destroySwappables", "swappable", "destroy", "displaySolutionInModal", "setNotification", "solutionContainer", "ImageAssignment", "sourceContainer", "destinationContainer", "destinationDropAreaSelector", "draggableElementSelector", "explanationContainer", "completed", "destinationDropAreas", "dropArea", "inputElement", "solutionContainer", "solutionDropAreas", "nugget", "container", "reference", "selector", "element", "name", "skipToSolution", "completeSlideUrl", "sourceContainer", "controlsContainer", "destinationContainer", "explanationContainer", "submitButton", "destinationDropAreaSelector", "nuggetSelector", "submitted", "i", "imageAssignment", "ImageAssignment", "dropTargets", "sortable", "SortableWithSingleDropTargets", "onClickSubmit", "handleClickOnDropTarget", "gameState", "submit", "displaySolution", "event", "clickedDropArea", "imageNugget", "getNugget", "modalForImageNuggets", "originalImageNuggets", "sourceContainerModal", "clickedNugget", "originalNugget", "NuggetFinder", "showSolutionButton", "displaySuccessText", "displayFailureText", "destroy", "displaySolutionInModal", "setNotification", "solutionContainer", "module17", "module18", "module19", "a", "constructor", "onDecode", "e", "DEFAULT_CANVAS_SIZE", "$video", "$canvas", "createElement", "b", "_onDecode", "canvasSizeOrCalculateScanRegion", "console", "_legacyOnDecode", "canvasSizeOrOnDecodeErrorOrOptions", "_onDecodeError", "options", "onDecodeError", "_calculateScanRegion", "calculateScanRegion", "_preferredCamera", "preferredCamera", "_legacyCanvasSize", "_maxScansPerSecond", "maxScansPerSecond", "_onPlay", "bind", "_onLoadedMetaData", "_onVisibilityChange", "_updateOverlay", "video", "disablePictureInPicture", "playsInline", "muted", "shouldHideVideo", "hidden", "document", "body", "contains", "appendChild", "highlightScanRegion", "highlightCodeOutline", "d", "$overlay", "overlay", "f", "overlayStyle", "position", "display", "pointerEvents", "classList", "add", "gotExternalOverlay", "innerHTML", "firstElementChild", "animate", "transform", "duration", "iterations", "Infinity", "direction", "easing", "videoContainer", "insertBefore", "nextSibling", "insertAdjacentHTML", "$codeOutlineHighlight", "lastElementChild", "_scanRegion", "requestAnimationFrame", "m", "videoStyle", "style", "setProperty", "visibility", "warn", "opacity", "width", "height", "parentElement", "removeChild", "addEventListener", "window", "_qrEnginePromise", "QrScanner", "createQrEngine", "workerPath", "hasCamera", "listCameras", "length", "requestLabels", "navigator", "mediaDevices", "filter", "device", "openedStream", "enumerateCameras", "every", "camera", "label", "getUserMedia", "audio", "map", "i", "id", "deviceId", "_stopVideoStream", "hasFlash", "stream", "srcObject", "MediaStream", "_getCameraStream", "getVideoTracks", "getSettings", "isFlashOn", "_flashOn", "toggleFlash", "turnFlashOff", "turnFlashOn", "_destroyed", "_active", "_paused", "applyConstraints", "advanced", "torch", "_restartVideoStream", "destroy", "removeEventListener", "stop", "_postWorkerMessage", "start", "Error", "location", "protocol", "play", "facingMode", "_setVideoMirror", "catch", "pause", "stopStreamImmediately", "stopStream", "Promise", "resolve", "setTimeout", "setCamera", "facingModeOrDeviceId", "scanImage", "imageOrFileOrBlobOrUrl", "scanRegionOrOptions", "qrEngine", "canvas", "disallowCanvasResizing", "alsoTryWithoutScanRegion", "scanRegion", "returnDetailedScanResult", "image", "canvasContext", "all", "_loadImage", "_drawToCanvas", "detailedScanResult", "Worker", "g", "gotExternalEngine", "_postWorkerMessageSync", "qrEngineWorker", "reject", "timeout", "onMessage", "onError", "expectedResponseId", "event", "data", "clearTimeout", "cornerPoints", "_convertPoints", "NO_QR_CODE_FOUND", "error", "t", "x", "k", "imageData", "buffer", "race", "scanResult", "rawValue", "l", "message", "test", "errorMessage", "_disableBarcodeDetector", "setGrayscaleWeights", "red", "green", "blue", "useIntegerApproximation", "setInversionMode", "inversionMode", "then", "createWorker", "BarcodeDetector", "getSupportedFormats", "includes", "userAgentData", "brands", "some", "brand", "platform", "getHighEntropyValues", "architecture", "platformVersion", "parseInt", "formats", "_scanFrame", "Math", "round", "videoWidth", "scanRegionSize", "y", "videoHeight", "downScaledWidth", "downScaledHeight", "h", "n", "p", "q", "videoObjectFit", "videoScaledWidth", "videoScaledHeight", "elementWidth", "elementHeight", "videoAspectRatio", "elementAspectRatio", "min", "v", "videoY", "lengthValue", "parseFloat", "endsWith", "u", "regionWidth", "regionHeight", "top", "elementY", "regionY", "left", "elementX", "isVideoMirrored", "videoX", "regionX", "points", "point", "scaleFactorX", "offsetX", "scaleFactorY", "offsetY", "paused", "ended", "requestVideoFrameCallback", "readyState", "timeSinceLastScan", "minimumTimeBetweenScans", "_lastScanTimestamp", "Date", "now", "result", "_codeOutlineHighlightRemovalTimeout", "undefined", "setAttribute", "join", "log", "constraint", "preferenceType", "exact", "constraints", "wasPaused", "track", "removeTrack", "_getFacingMode", "videoStream", "videoTrack", "scanRegionWidth", "scanRegionHeight", "canvasWidth", "canvasHeight", "alpha", "context", "imageSmoothingEnabled", "drawImage", "scanRegionX", "scanRegionY", "Image", "_awaitImageLoad", "HTMLVideoElement", "HTMLCanvasElement", "SVGImageElement", "OffscreenCanvas", "ImageBitmap", "File", "Blob", "URL", "src", "createObjectURL", "toString", "revokeObjectURL", "complete", "naturalWidth", "listener", "ErrorEvent", "qrEngineOrQrEnginePromise", "type", "transfer", "postMessage", "qr_scanner_min_default", "element", "debounceTimeout", "update", "deviceClass", "getDeviceType", "otherDeviceClasses", "className", "debouncedUpdate", "resizeObserver", "hasCamera", "qr_scanner_min_default", "environment_default", "element", "hintSelector", "invalidPattern", "groupSize", "groupSeparator", "invalidPatternRegExp", "groupSplitRegExp", "hint", "elementValueWas", "Formatter", "inputValue", "_a", "upperCased", "sanitized", "fragments", "onInput", "formatter", "setFormattedValue", "trackEvent", "eventData", "push", "trackPageView", "identity", "resetIdentity", "status", "title", "path", "referrer", "demo", "batchKey", "region", "courseUnit", "coursePage", "testQuestion", "slideContentType", "setCustomDimension", "getDeviceType", "values", "_a", "id", "value", "element", "identifier", "permissionDeniedHtml", "noCameraHtml", "invalidDataHtml", "hasCamera", "qr_scanner_min_default", "ignoreMissingCamera", "environment_default", "eventCategory", "replaceContent", "videoElement", "qrScanner", "onResultFound", "displayQrScanner", "testScan", "checkForExistingPermission", "onPermission", "onStart", "onPermissionDenied", "trackEvent", "state", "html", "uri", "result", "handlingResult", "url", "isUrlInApplication", "navigationDelay", "string", "shortHostOf", "Question", "element", "userName", "choices", "results", "inputs", "allCorrect", "input", "checked", "index", "expectChecked", "state", "message", "notification", "_a", "hiddenElement", "element", "name", "skipToSolution", "completeSlideUrl", "question", "Question", "button", "choiceButtons", "choices", "submitted", "onClickSubmit", "onClickChoice", "gameState", "submit", "checkChoice", "answerId", "choiceCheckbox", "element", "autoPlay", "saveSettingUrl", "setPagePlayedUrl", "TRACK_PAGE_READ_ALOUD_COUNTS", "startButtonSelector", "stopButtonSelector", "audios", "playing", "allAudiosPlayed", "userPressedStop", "playCountAfterFirstStop", "playCountAfterFirstFinish", "currentAudio", "audioPlayingClass", "highlightClass", "onClickButton", "requestedPlayback", "play", "trackEvent", "stopAudio", "updateVisibleButtonText", "saveAutoPlaySetting", "onAudioEnded", "audio", "index", "waitMs", "resolve", "reject", "nextAudio", "playAudio", "button", "throwError", "trackPlayCountAfterFirstStop", "trackPlayCountAfterFirstFinish", "afterSetPagePlayed", "error", "showPlayErrorDialog", "setPlaying", "isPlaying", "container", "autoPlayEnabled", "response", "count", "changed", "module25", "module26", "module27", "module28", "module29", "element", "data", "trackPageView", "VideoPlayButton", "video", "button", "element", "name", "buttonMode", "skipToSolution", "completeSlideUrl", "multipleChoice", "Question", "questionVideo", "solutionVideo", "choices", "startButton", "submitButton", "replayButton", "choiceButtons", "submitted", "showChoicesAndAdjustControls", "onClickSubmit", "onClickChoice", "replayVideo", "gameState", "videoPlayButton", "VideoPlayButton", "submit", "showAndPlaySolutionVideo", "checkChoice", "answerId", "choiceCheckbox", "element", "video", "playButton", "videoPlayButton", "VideoPlayButton"] }