{"version":3,"file":"dsfr.module.min.js","sources":["../src/dsfr/core/script/api/state.js","../.config/config.js","../src/dsfr/core/script/api/inspect/inspector.js","../src/dsfr/core/script/api/options/starters.js","../src/dsfr/core/script/api/options/modes.js","../src/dsfr/core/script/api/utilities/dom/dispatch.js","../src/dsfr/core/script/api/utilities/namespace.js","../src/dsfr/core/script/api/modules/stage/root-event.js","../src/dsfr/core/script/api/options/options.js","../src/dsfr/core/script/api/utilities/collection.js","../src/dsfr/core/script/api/modules/module.js","../src/dsfr/core/script/api/utilities/dom/query-selector.js","../src/dsfr/core/script/api/modules/register/registration.js","../src/dsfr/core/script/api/modules/register/register.js","../src/dsfr/core/script/api/modules/stage/element.js","../src/dsfr/core/script/api/modules/stage/root-emission.js","../src/dsfr/core/script/api/modules/register/key-codes.js","../src/dsfr/core/script/api/modules/stage/root.js","../src/dsfr/core/script/api/modules/stage/stage.js","../src/dsfr/core/script/api/modules/render/renderer.js","../src/dsfr/core/script/api/modules/resize/resizer.js","../src/dsfr/core/script/api/modules/scroll/scroll-locker.js","../src/dsfr/core/script/api/modules/load/load.js","../src/dsfr/core/script/api/modules/font-swap/font-swap.js","../src/dsfr/core/script/api/modules/mouse-move/mouse-move.js","../src/dsfr/core/script/api/modules/hash/hash.js","../src/dsfr/core/script/api/engine.js","../src/dsfr/core/script/api/utilities/colors/colors.js","../src/dsfr/core/script/api/utilities/dom/classes.js","../src/dsfr/core/script/api/utilities/dom/actions.js","../src/dsfr/core/script/api/utilities/dom/id.js","../src/dsfr/core/script/api/utilities/dom/index.js","../src/dsfr/core/script/api/utilities/image/index.js","../src/dsfr/core/script/api/utilities/image/data-uri-svg.js","../src/dsfr/core/script/api/utilities/support/index.js","../src/dsfr/core/script/api/utilities/support/browser-support.js","../src/dsfr/core/script/api/utilities/motion/index.js","../src/dsfr/core/script/api/utilities/motion/transition-selector.js","../src/dsfr/core/script/api/utilities/property/complete-assign.js","../src/dsfr/core/script/api/utilities/property/index.js","../src/dsfr/core/script/api/internals.js","../src/dsfr/core/script/api/utilities/search-params/index.js","../src/dsfr/core/script/api/api.js","../src/dsfr/core/script/api/utilities/emitter.js","../src/dsfr/core/script/api/modules/register/focus-manager.js","../src/dsfr/core/script/api/modules/register/breakpoints.js","../src/dsfr/core/script/api/modules/register/Instance-event.js","../src/dsfr/core/script/api/modules/register/instance.js","../src/dsfr/core/script/disclosure/disclosure-event.js","../src/dsfr/core/script/disclosure/disclosure-emission.js","../src/dsfr/core/script/disclosure/disclosure.js","../src/dsfr/core/script/disclosure/disclosure-button.js","../src/dsfr/core/script/disclosure/disclosure-selector.js","../src/dsfr/core/script/disclosure/disclosures-group.js","../src/dsfr/core/script/disclosure/disclosure-type.js","../src/dsfr/core/script/collapse/collapse-button.js","../src/dsfr/core/script/collapse/collapse-selector.js","../src/dsfr/core/script/equisized/equisized-emission.js","../src/dsfr/core/script/inject/inject-svg-selector.js","../src/dsfr/core/script/artwork/artwork-selector.js","../src/dsfr/core/script/assess/assess-selector.js","../src/dsfr/core/script/assess/assess-emission.js","../src/dsfr/core/script/ratio/ratio-selector.js","../src/dsfr/core/api.js","../src/dsfr/core/script/placement/place-selector.js","../src/dsfr/core/script/placement/align-selector.js","../src/dsfr/core/script/placement/placement-position.js","../src/dsfr/core/script/placement/placement-align.js","../src/dsfr/core/script/placement/placement-mode.js","../src/dsfr/core/index.js","../src/dsfr/core/script/collapse/collapse.js","../src/dsfr/core/script/collapse/collapses-group.js","../src/dsfr/core/script/api/modules/stage/root-selector.js","../src/dsfr/core/script/equisized/equisized.js","../src/dsfr/core/script/action/toggle/toggle.js","../src/dsfr/core/script/equisized/equisizeds-group.js","../src/dsfr/core/script/inject/inject-svg.js","../src/dsfr/core/script/api/utilities/attribute.js","../src/dsfr/core/script/artwork/artwork.js","../src/dsfr/core/script/assess/assess-file.js","../src/dsfr/core/script/assess/assess-detail.js","../src/dsfr/core/script/ratio/ratio.js","../src/dsfr/core/script/placement/placement.js","../src/dsfr/core/script/placement/placement-referent.js","../src/dsfr/core/main.js","../src/dsfr/scheme/script/scheme/scheme-value.js","../src/dsfr/scheme/script/scheme/scheme-attribute.js","../src/dsfr/scheme/script/scheme/scheme-theme.js","../src/dsfr/scheme/script/scheme/scheme-emission.js","../src/dsfr/scheme/script/scheme/scheme-event.js","../src/dsfr/scheme/script/scheme/scheme.js","../src/dsfr/scheme/script/scheme/scheme-selector.js","../src/dsfr/scheme/index.js","../src/dsfr/scheme/main.js","../src/dsfr/component/accordion/script/accordion/accordion-selector.js","../src/dsfr/component/accordion/script/accordion/accordion.js","../src/dsfr/component/accordion/script/accordion/accordions-group.js","../src/dsfr/component/accordion/index.js","../src/dsfr/component/accordion/main.js","../src/dsfr/component/button/script/button/button-selector.js","../src/dsfr/component/button/index.js","../src/dsfr/component/button/main.js","../src/dsfr/component/card/script/card/card-download.js","../src/dsfr/component/card/script/card/card-selector.js","../src/dsfr/component/card/index.js","../src/dsfr/component/card/main.js","../src/dsfr/component/checkbox/script/checkbox/checkbox-selector.js","../src/dsfr/component/checkbox/script/checkbox/checkbox-emission.js","../src/dsfr/component/checkbox/script/checkbox/checkbox-input.js","../src/dsfr/component/checkbox/index.js","../src/dsfr/component/checkbox/main.js","../src/dsfr/component/segmented/script/segmented/segmented-selector.js","../src/dsfr/component/segmented/script/segmented/segmented-emission.js","../src/dsfr/component/segmented/script/segmented/segmented.js","../src/dsfr/component/segmented/script/segmented/segmented-element.js","../src/dsfr/component/segmented/index.js","../src/dsfr/component/segmented/main.js","../src/dsfr/component/breadcrumb/script/breadcrumb/breadcrumb-selector.js","../src/dsfr/component/breadcrumb/script/breadcrumb/breadcrumb.js","../src/dsfr/component/breadcrumb/index.js","../src/dsfr/component/breadcrumb/main.js","../src/dsfr/component/tooltip/script/tooltip/tooltip-selector.js","../src/dsfr/component/tooltip/script/tooltip/tooltip-referent.js","../src/dsfr/component/tooltip/script/tooltip/tooltip-event.js","../src/dsfr/component/tooltip/script/tooltip/tooltip.js","../src/dsfr/component/tooltip/index.js","../src/dsfr/component/tooltip/main.js","../src/dsfr/component/toggle/script/toggle/toggle-input.js","../src/dsfr/component/toggle/script/toggle/toggle-status-label.js","../src/dsfr/component/toggle/script/toggle/toggle-selector.js","../src/dsfr/component/toggle/index.js","../src/dsfr/component/toggle/main.js","../src/dsfr/component/sidemenu/script/sidemenu/sidemenu-selector.js","../src/dsfr/component/sidemenu/script/sidemenu/sidemenu-list.js","../src/dsfr/component/sidemenu/script/sidemenu/sidemenu-item.js","../src/dsfr/component/sidemenu/index.js","../src/dsfr/component/sidemenu/main.js","../src/dsfr/component/modal/script/modal/modal-selector.js","../src/dsfr/component/modal/script/modal/modal-button.js","../src/dsfr/component/modal/script/modal/modal-attribute.js","../src/dsfr/component/modal/script/modal/modal.js","../src/dsfr/component/modal/script/modal/focus-trap.js","../src/dsfr/component/modal/script/modal/modals-group.js","../src/dsfr/component/modal/script/modal/modal-body.js","../src/dsfr/component/modal/index.js","../src/dsfr/component/modal/main.js","../src/dsfr/component/password/script/password/password-emission.js","../src/dsfr/component/password/script/password/password-toggle.js","../src/dsfr/component/password/script/password/password.js","../src/dsfr/component/password/script/password/password-selector.js","../src/dsfr/component/password/script/password/password-input.js","../src/dsfr/component/password/script/password/password-label.js","../src/dsfr/component/password/index.js","../src/dsfr/component/password/main.js","../src/dsfr/component/navigation/script/navigation/navigation-selector.js","../src/dsfr/component/navigation/script/navigation/navigation-item.js","../src/dsfr/component/navigation/script/navigation/navigation-mouse-position.js","../src/dsfr/component/navigation/script/navigation/navigation.js","../src/dsfr/component/navigation/index.js","../src/dsfr/component/navigation/main.js","../src/dsfr/component/tab/script/tab/tab-button.js","../src/dsfr/component/tab/script/tab/tab-selector.js","../src/dsfr/component/tab/script/tab/tab-panel-direction.js","../src/dsfr/component/tab/script/tab/tab-panel.js","../src/dsfr/component/tab/script/tab/tab-keys.js","../src/dsfr/component/tab/script/tab/tab-emission.js","../src/dsfr/component/tab/script/tab/tabs-group.js","../src/dsfr/component/tab/script/tab/tabs-list.js","../src/dsfr/component/tab/index.js","../src/dsfr/component/tab/main.js","../src/dsfr/component/tag/script/tag/tag-event.js","../src/dsfr/component/tag/script/tag/tag-dismissible.js","../src/dsfr/component/tag/script/tag/tag-selector.js","../src/dsfr/component/tag/index.js","../src/dsfr/component/tag/main.js","../src/dsfr/component/transcription/script/accordion/transcription-selector.js","../src/dsfr/component/transcription/script/accordion/transcription.js","../src/dsfr/component/transcription/index.js","../src/dsfr/component/transcription/main.js","../src/dsfr/component/tile/script/tile/tile-download.js","../src/dsfr/component/tile/script/tile/tile-selector.js","../src/dsfr/component/tile/index.js","../src/dsfr/component/tile/main.js","../src/dsfr/component/range/script/range/range-selector.js","../src/dsfr/component/range/script/range/range-emission.js","../src/dsfr/component/range/script/range/range-model.js","../src/dsfr/component/range/script/range/range.js","../src/dsfr/component/range/script/range/range-constraints.js","../src/dsfr/component/range/script/range/range-input.js","../src/dsfr/component/range/script/range/range-output.js","../src/dsfr/component/range/script/range/range-limit.js","../src/dsfr/component/range/index.js","../src/dsfr/component/range/script/range/range-input2.js","../src/dsfr/component/range/main.js","../src/dsfr/component/header/script/header/header-selector.js","../src/dsfr/component/header/script/header/header-links.js","../src/dsfr/component/header/script/header/header-modal.js","../src/dsfr/component/header/index.js","../src/dsfr/component/header/main.js","../src/dsfr/component/display/script/display/display-selector.js","../src/dsfr/component/display/script/display/display.js","../src/dsfr/component/display/index.js","../src/dsfr/component/display/main.js","../src/dsfr/component/table/script/table/table-emission.js","../src/dsfr/component/table/script/table/table.js","../src/dsfr/component/table/script/table/table-wrapper.js","../src/dsfr/component/table/script/table/table-selector.js","../src/dsfr/component/table/script/table/table-element.js","../src/dsfr/component/table/script/table/table-caption.js","../src/dsfr/component/table/script/table/table-row.js","../src/dsfr/component/table/index.js","../src/dsfr/component/table/main.js"],"sourcesContent":["class State {\n constructor () {\n this.modules = {};\n }\n\n create (ModuleClass) {\n const module = new ModuleClass();\n this.modules[module.type] = module;\n }\n\n getModule (type) {\n return this.modules[type];\n }\n\n add (type, item) {\n this.modules[type].add(item);\n }\n\n remove (type, item) {\n this.modules[type].remove(item);\n }\n\n get isActive () {\n return this._isActive;\n }\n\n set isActive (value) {\n if (value === this._isActive) return;\n this._isActive = value;\n const values = Object.keys(this.modules).map((e) => {\n return this.modules[e];\n });\n if (value) {\n for (const module of values) {\n module.activate();\n }\n } else {\n for (const module of values) {\n module.deactivate();\n }\n }\n }\n\n get isLegacy () {\n return this._isLegacy;\n }\n\n set isLegacy (value) {\n if (value === this._isLegacy) return;\n this._isLegacy = value;\n }\n}\n\nconst state = new State();\n\nexport default state;\n","const config = {\r\n prefix: 'fr',\r\n namespace: 'dsfr',\r\n organisation: '@gouvfr',\r\n version: '1.14.2'\r\n};\r\n\r\nexport default config;\r\n","import state from '../state.js';\nimport config from '../../../config.js';\n\nclass LogLevel {\n constructor (level, light, dark, logger) {\n this.level = level;\n this.light = light;\n this.dark = dark;\n\n switch (logger) {\n case 'warn':\n this.logger = console.warn;\n break;\n\n case 'error':\n this.logger = console.error;\n break;\n\n default:\n this.logger = console.log;\n }\n }\n\n log (...values) {\n const message = new Message(config.namespace);\n for (const value of values) message.add(value);\n this.print(message);\n }\n\n print (message) {\n message.setColor(this.color);\n this.logger.apply(console, message.getMessage());\n }\n\n get color () {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? this.dark : this.light;\n }\n}\n\nclass Message {\n constructor (domain) {\n this.inputs = ['%c'];\n this.styles = ['font-family:Marianne', 'line-height: 1.5'];\n this.objects = [];\n\n if (domain) this.add(`${domain} :`);\n }\n\n add (value) {\n switch (typeof value) {\n case 'object':\n case 'function':\n this.inputs.push('%o ');\n this.objects.push(value);\n break;\n\n default:\n this.inputs.push(`${value} `);\n }\n }\n\n setColor (color) {\n this.styles.push(`color:${color}`);\n }\n\n getMessage () {\n return [this.inputs.join(''), this.styles.join(';'), ...this.objects];\n }\n}\n\nconst LEVELS = {\n log: new LogLevel(0, '#616161', '#989898'),\n debug: new LogLevel(1, '#000091', '#8B8BFF'),\n info: new LogLevel(2, '#007c3b', '#00ed70'),\n warn: new LogLevel(3, '#ba4500', '#fa5c00', 'warn'),\n error: new LogLevel(4, '#D80600', '#FF4641', 'error')\n};\n\nclass Inspector {\n constructor () {\n this.level = 2;\n\n for (const id in LEVELS) {\n const level = LEVELS[id];\n this[id] = (...msgs) => {\n if (this.level <= level.level) level.log.apply(level, msgs);\n };\n this[id].print = level.print.bind(level);\n }\n }\n\n state () {\n const message = new Message();\n message.add(state);\n this.log.print(message);\n }\n\n tree () {\n const stage = state.getModule('stage');\n if (!stage) return;\n const message = new Message();\n this._branch(stage.root, 0, message);\n this.log.print(message);\n }\n\n _branch (element, space, message) {\n let branch = '';\n if (space > 0) {\n let indent = '';\n for (let i = 0; i < space; i++) indent += ' ';\n // branch += indent + '|\\n';\n branch += indent + '└─ ';\n }\n branch += `[${element.id}] ${element.html}`;\n message.add(branch);\n message.add({ '@': element });\n message.add('\\n');\n for (const child of element.children) branch += this._branch(child, space + 1, message);\n }\n}\n\nconst inspector = new Inspector();\n\nexport default inspector;\n","export const startAtDomContentLoaded = (callback) => {\n if (document.readyState !== 'loading') window.requestAnimationFrame(callback);\n else document.addEventListener('DOMContentLoaded', callback);\n};\n\nexport const startAuto = (callback) => {\n // detect\n startAtDomContentLoaded(callback);\n};\n","export const Modes = {\n AUTO: 'auto',\n MANUAL: 'manual',\n RUNTIME: 'runtime',\n LOADED: 'loaded',\n VUE: 'vue',\n ANGULAR: 'angular',\n REACT: 'react'\n};\n","const dispatch = (node, type, detail = null, bubbles = true, cancelable = false) => {\n const options = { bubbles: bubbles === true, cancelable: cancelable === true };\n if (detail) options.detail = detail;\n const event = new CustomEvent(type, options);\n node.dispatchEvent(event);\n};\n\nconst rootDispatch = (type, detail = null, bubbles = false, cancelable = false) => dispatch(document.documentElement, type, detail, bubbles, cancelable);\n\nexport { dispatch, rootDispatch };\n","import config from '../../../config.js';\n\nconst ns = name => `${config.prefix}-${name}`;\n\nns.selector = (name, notation) => {\n if (notation === undefined) notation = '.';\n return `${notation}${ns(name)}`;\n};\n\nns.attr = (name) => `data-${ns(name)}`;\n\nns.attr.selector = (name, value) => {\n let result = ns.attr(name);\n if (value !== undefined) result += `=\"${value}\"`;\n return `[${result}]`;\n};\n\nns.event = (type) => `${config.namespace}.${type}`;\n\nns.emission = (domain, type) => `emission:${domain}.${type}`;\n\nexport default ns;\n","import ns from '../../utilities/namespace.js';\n\nconst RootEvent = {\n READY: ns.event('ready'),\n START: ns.event('start'),\n STOP: ns.event('stop'),\n RENDER: ns.event('render'),\n RESIZE: ns.event('resize'),\n BREAKPOINT: ns.event('breakpoint'),\n SCROLL_LOCK: ns.event('scroll-lock'),\n SCROLL_UNLOCK: ns.event('scroll-unlock')\n};\n\nexport { RootEvent };\n","import inspector from '../inspect/inspector.js';\nimport { startAtDomContentLoaded, startAuto } from './starters.js';\nimport config from '../../../config';\nimport { Modes } from './modes';\nimport { rootDispatch } from '../utilities/dom/dispatch.js';\nimport { RootEvent } from '../modules/stage/root-event.js';\n\nclass Options {\n constructor () {\n this._mode = Modes.AUTO;\n this.isStarted = false;\n this.starting = this.start.bind(this);\n this.preventManipulation = false;\n }\n\n configure (settings = {}, start, query) {\n this.startCallback = start;\n const isProduction = settings.production && (!query || query.production !== 'false');\n switch (true) {\n case query && !isNaN(query.level):\n inspector.level = Number(query.level);\n break;\n\n case query && query.verbose && (query.verbose === 'true' || query.verbose === 1):\n inspector.level = 0;\n break;\n\n case isProduction:\n inspector.level = 999;\n break;\n\n case settings.verbose:\n inspector.level = 0;\n break;\n }\n inspector.info(`version ${config.version}`);\n rootDispatch(RootEvent.READY);\n this.mode = settings.mode || Modes.AUTO;\n }\n\n set mode (value) {\n switch (value) {\n case Modes.AUTO:\n this.preventManipulation = false;\n startAuto(this.starting);\n break;\n\n case Modes.LOADED:\n this.preventManipulation = false;\n startAtDomContentLoaded(this.starting);\n break;\n\n case Modes.RUNTIME:\n this.preventManipulation = false;\n this.start();\n break;\n\n case Modes.MANUAL:\n this.preventManipulation = false;\n break;\n\n case Modes.VUE:\n this.preventManipulation = true;\n break;\n\n case Modes.ANGULAR:\n this.preventManipulation = true;\n break;\n\n case Modes.REACT:\n this.preventManipulation = true;\n break;\n\n default:\n inspector.error('Illegal mode');\n return;\n }\n\n this._mode = value;\n inspector.info(`mode set to ${value}`);\n }\n\n get mode () {\n return this._mode;\n }\n\n start () {\n inspector.info('start');\n this.startCallback();\n }\n}\n\nconst options = new Options();\nexport default options;\n","class Collection {\n constructor () {\n this._collection = [];\n }\n\n forEach (callback) {\n this._collection.forEach(callback);\n }\n\n map (callback) {\n return this._collection.map(callback);\n }\n\n get length () {\n return this._collection.length;\n }\n\n add (collectable) {\n if (this._collection.indexOf(collectable) > -1) return false;\n this._collection.push(collectable);\n if (this.onAdd) this.onAdd();\n if (this.onPopulate && this._collection.length === 1) this.onPopulate();\n return true;\n }\n\n remove (collectable) {\n const index = this._collection.indexOf(collectable);\n if (index === -1) return false;\n this._collection.splice(index, 1);\n if (this.onRemove) this.onRemove();\n if (this.onEmpty && this._collection.length === 0) this.onEmpty();\n }\n\n execute (...args) {\n for (const collectable of this._collection) if (collectable) collectable.apply(null, args);\n }\n\n clear () {\n this._collection.length = 0;\n }\n\n clone () {\n const clone = new Collection();\n clone._collection = this._collection.slice();\n return clone;\n }\n\n get collection () {\n return this._collection;\n }\n}\n\nexport { Collection };\n","import { Collection } from '../utilities/collection.js';\n\nclass Module extends Collection {\n constructor (type) {\n super();\n this.type = type;\n this.isActive = false;\n }\n\n activate () {}\n deactivate () {}\n}\n\nexport { Module };\n","export const querySelectorAllArray = (element, selectors) => Array.prototype.slice.call(element.querySelectorAll(selectors));\n\nexport const queryParentSelector = (element, selectors) => {\n const parent = element.parentElement;\n if (parent.matches(selectors)) return parent;\n if (parent === document.documentElement) return null;\n return queryParentSelector(parent, selectors);\n};\n","import { Collection } from '../../utilities/collection.js';\nimport state from '../../state.js';\nimport ns from '../../utilities/namespace.js';\nimport { querySelectorAllArray } from '../../utilities/dom/query-selector';\n\nclass Registration {\n constructor (selector, InstanceClass, creator) {\n this.selector = selector;\n this.InstanceClass = InstanceClass;\n this.creator = creator;\n this.instances = new Collection();\n this.isIntroduced = false;\n this._instanceClassName = this.InstanceClass.instanceClassName;\n this._instanceClassNames = this.getInstanceClassNames(this.InstanceClass);\n this._property = this._instanceClassName.substring(0, 1).toLowerCase() + this._instanceClassName.substring(1);\n const dashed = this._instanceClassName\n .replace(/[^a-zA-Z0-9]+/g, '-')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/([0-9])([^0-9])/g, '$1-$2')\n .replace(/([^0-9])([0-9])/g, '$1-$2')\n .toLowerCase();\n this._attribute = ns.attr(`js-${dashed}`);\n }\n\n getInstanceClassNames (InstanceClass) {\n const prototype = Object.getPrototypeOf(InstanceClass);\n if (!prototype || prototype.instanceClassName === 'Instance') return [InstanceClass.instanceClassName];\n return [...this.getInstanceClassNames(prototype), InstanceClass.instanceClassName];\n }\n\n hasInstanceClassName (instanceClassName) {\n return this._instanceClassNames.indexOf(instanceClassName) > -1;\n }\n\n introduce () {\n if (this.isIntroduced) return;\n this.isIntroduced = true;\n state.getModule('stage').parse(document.documentElement, this);\n }\n\n parse (node, nonRecursive) {\n const nodes = [];\n if (node.matches && node.matches(this.selector)) nodes.push(node);\n // eslint-disable-next-line no-useless-call\n if (!nonRecursive && node.querySelectorAll && node.querySelector(this.selector)) nodes.push.apply(nodes, querySelectorAllArray(node, this.selector));\n return nodes;\n }\n\n create (element) {\n if (!element.node.matches(this.selector)) return;\n const instance = new this.InstanceClass();\n this.instances.add(instance);\n return instance;\n }\n\n remove (instance) {\n this.instances.remove(instance);\n }\n\n dispose () {\n const instances = this.instances.collection;\n for (let i = instances.length - 1; i > -1; i--) instances[i]._dispose();\n this.creator = null;\n }\n\n get instanceClassName () {\n return this._instanceClassName;\n }\n\n get instanceClassNames () {\n return this._instanceClassNames;\n }\n\n get property () {\n return this._property;\n }\n\n get attribute () {\n return this._attribute;\n }\n}\n\nexport { Registration };\n","import { Module } from '../module.js';\nimport { Registration } from './registration.js';\nimport state from '../../state.js';\n\nclass Register extends Module {\n constructor () {\n super('register');\n }\n\n register (selector, InstanceClass, creator) {\n const registration = new Registration(selector, InstanceClass, creator);\n this.add(registration);\n if (state.isActive) registration.introduce();\n return registration;\n }\n\n activate () {\n for (const registration of this.collection) registration.introduce();\n }\n\n remove (registration) {\n registration.dispose();\n super.remove(registration);\n }\n}\n\nexport { Register };\n","import state from '../../state.js';\nimport inspector from '../../inspect/inspector.js';\n\nlet count = 0;\n\nclass Element {\n constructor (node, id) {\n if (!id) {\n count++;\n this.id = count;\n } else this.id = id;\n this.node = node;\n this.attributeNames = [];\n this.instances = [];\n this._children = [];\n this._parent = null;\n this._projects = [];\n }\n\n get proxy () {\n const scope = this;\n if (!this._proxy) {\n this._proxy = {\n id: this.id,\n get parent () {\n return scope.parent ? scope.parent.proxy : null;\n },\n get children () {\n return scope.children.map((child) => child.proxy);\n }\n };\n\n for (const instance of this.instances) this._proxy[instance.registration.property] = instance.proxy;\n }\n return this._proxy;\n }\n\n get html () {\n if (!this.node || !this.node.outerHTML) return '';\n const end = this.node.outerHTML.indexOf('>');\n return this.node.outerHTML.substring(0, end + 1);\n }\n\n project (registration) {\n if (this._projects.indexOf(registration) === -1) this._projects.push(registration);\n }\n\n populate () {\n const projects = this._projects.slice();\n this._projects.length = 0;\n for (const registration of projects) this.create(registration);\n }\n\n create (registration) {\n if (this.hasInstance(registration.instanceClassName)) {\n // inspector.debug(`failed creation, instance of ${registration.instanceClassName} already exists on element [${this.id}]`);\n return;\n }\n inspector.debug(`create instance of ${registration.instanceClassName} on element [${this.id}]`);\n const instance = registration.create(this);\n this.instances.push(instance);\n instance._config(this, registration);\n if (this._proxy) this._proxy[registration.property] = instance.proxy;\n }\n\n remove (instance) {\n const index = this.instances.indexOf(instance);\n if (index > -1) this.instances.splice(index, 1);\n if (this._proxy) delete this._proxy[instance.registration.property];\n }\n\n get parent () {\n return this._parent;\n }\n\n get ascendants () {\n return [this.parent, ...this.parent.ascendants];\n }\n\n get children () {\n return this._children;\n }\n\n get descendants () {\n const descendants = [...this._children];\n this._children.forEach(child => descendants.push(...child.descendants));\n return descendants;\n }\n\n // TODO : emit ascendant et descendant de changement ?\n\n addChild (child, index) {\n if (this._children.indexOf(child) > -1) return null;\n child._parent = this;\n if (!isNaN(index) && index > -1 && index < this._children.length) this._children.splice(index, 0, child);\n else this._children.push(child);\n return child;\n }\n\n removeChild (child) {\n const index = this._children.indexOf(child);\n if (index === -1) return null;\n child._parent = null;\n this._children.splice(index, 1);\n }\n\n emit (type, data) {\n const elements = state.getModule('stage').collection;\n const response = [];\n for (const element of elements) response.push(...element._emit(type, data));\n return response;\n }\n\n _emit (type, data) {\n const response = [];\n for (const instance of this.instances) response.push(...instance._emitter.emit(type, data));\n return response;\n }\n\n ascend (type, data) {\n if (this._parent) return this._parent._ascend(type, data);\n return [];\n }\n\n _ascend (type, data) {\n const response = [];\n for (const instance of this.instances) response.push(...instance._ascent.emit(type, data));\n if (this._parent) response.push(...this._parent._ascend(type, data));\n return response;\n }\n\n descend (type, data) {\n const response = [];\n for (const child of this._children) response.push(...child._descend(type, data));\n return response;\n }\n\n _descend (type, data) {\n const response = [];\n for (const instance of this.instances) response.push(...instance._descent.emit(type, data));\n for (const child of this._children) response.push(...child._descend(type, data));\n return response;\n }\n\n getInstance (instanceClassName) {\n for (const instance of this.instances) if (instance.registration.hasInstanceClassName(instanceClassName)) return instance;\n return null;\n }\n\n hasInstance (instanceClassName) {\n return this.getInstance(instanceClassName) !== null;\n }\n\n getDescendantInstances (instanceClassName, stopAtInstanceClassName, stopAtFirstInstance) {\n if (!instanceClassName) return [];\n const instances = [];\n for (const child of this._children) {\n const instance = child.getInstance(instanceClassName);\n if (instance) {\n instances.push(instance);\n if (stopAtFirstInstance) continue;\n }\n if ((!stopAtInstanceClassName || !child.hasInstance(stopAtInstanceClassName)) && child.children.length) instances.push.apply(instances, child.getDescendantInstances(instanceClassName, stopAtInstanceClassName, stopAtFirstInstance));\n }\n return instances;\n }\n\n getAscendantInstance (instanceClassName, stopAtInstanceClassName) {\n if (!instanceClassName || !this._parent) return null;\n const instance = this._parent.getInstance(instanceClassName);\n if (instance) return instance;\n if (stopAtInstanceClassName && this._parent.hasInstance(stopAtInstanceClassName)) return null;\n return this._parent.getAscendantInstance(instanceClassName, stopAtInstanceClassName);\n }\n\n dispose () {\n for (let i = this.instances.length - 1; i >= 0; i--) {\n const instance = this.instances[i];\n if (instance) instance._dispose();\n }\n this.instances.length = 0;\n state.remove('stage', this);\n this.parent.removeChild(this);\n this._children.length = 0;\n inspector.debug(`remove element [${this.id}] ${this.html}`);\n }\n\n prepare (attributeName) {\n if (this.attributeNames.indexOf(attributeName) === -1) this.attributeNames.push(attributeName);\n }\n\n examine () {\n const attributeNames = this.attributeNames.slice();\n this.attributeNames.length = 0;\n for (let i = this.instances.length - 1; i > -1; i--) this.instances[i].examine(attributeNames);\n }\n}\n\nexport { Element };\n","import ns from '../../utilities/namespace.js';\n\nexport const RootEmission = {\n CLICK: ns.emission('root', 'click'),\n KEYDOWN: ns.emission('root', 'keydown'),\n KEYUP: ns.emission('root', 'keyup')\n};\n","export const KeyCodes = {\n TAB: {\n id: 'tab',\n value: 9\n },\n ESCAPE: {\n id: 'escape',\n value: 27\n },\n END: {\n id: 'end',\n value: 35\n },\n HOME: {\n id: 'home',\n value: 36\n },\n LEFT: {\n id: 'left',\n value: 37\n },\n UP: {\n id: 'up',\n value: 38\n },\n RIGHT: {\n id: 'right',\n value: 39\n },\n DOWN: {\n id: 'down',\n value: 40\n }\n};\n\nexport const getKeyCode = (keyCode) => Object.values(KeyCodes).filter(entry => entry.value === keyCode)[0];\n","import { Element } from './element.js';\nimport ns from '../../utilities/namespace.js';\nimport { RootEmission } from './root-emission';\nimport { getKeyCode } from '../register/key-codes';\n\nclass Root extends Element {\n constructor () {\n super(document.documentElement, 'root');\n this.node.setAttribute(ns.attr('js'), true);\n this.listen();\n }\n\n listen () {\n // TODO v2 => listener au niveau des éléments qui redistribuent aux instances.\n document.documentElement.addEventListener('click', this.click.bind(this), { capture: true });\n document.documentElement.addEventListener('keydown', this.keydown.bind(this), { capture: true });\n document.documentElement.addEventListener('keyup', this.keyup.bind(this), { capture: true });\n }\n\n click (e) {\n this.emit(RootEmission.CLICK, e.target);\n }\n\n keydown (e) {\n this.emit(RootEmission.KEYDOWN, getKeyCode(e.keyCode));\n }\n\n keyup (e) {\n this.emit(RootEmission.KEYUP, getKeyCode(e.keyCode));\n }\n}\n\nexport { Root };\n","import state from '../../state.js';\nimport { Element } from './element.js';\nimport { Module } from '../module.js';\nimport { Root } from './root.js';\nimport inspector from '../../inspect/inspector.js';\n\nclass Stage extends Module {\n constructor () {\n super('stage');\n this.root = new Root();\n super.add(this.root);\n this.observer = new MutationObserver(this.mutate.bind(this));\n this.modifications = [];\n this.willModify = false;\n this.modifying = this.modify.bind(this);\n }\n\n hasElement (node) {\n for (const element of this.collection) if (element.node === node) return true;\n return false;\n }\n\n getElement (node) {\n for (const element of this.collection) if (element.node === node) return element;\n const element = new Element(node);\n this.add(element);\n inspector.debug(`add element [${element.id}] ${element.html}`);\n return element;\n }\n\n getProxy (node) {\n if (!this.hasElement(node)) return null;\n const element = this.getElement(node);\n return element.proxy;\n }\n\n add (element) {\n super.add(element);\n this.put(element, this.root);\n }\n\n put (element, branch) {\n let index = 0;\n for (let i = branch.children.length - 1; i > -1; i--) {\n const child = branch.children[i];\n const position = element.node.compareDocumentPosition(child.node);\n if (position & Node.DOCUMENT_POSITION_CONTAINS) {\n this.put(element, child);\n return;\n } else if (position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n branch.removeChild(child);\n element.addChild(child, 0);\n } else if (position & Node.DOCUMENT_POSITION_PRECEDING) {\n index = i + 1;\n break;\n }\n }\n\n branch.addChild(element, index);\n }\n\n activate () {\n this.observer.observe(document.documentElement, { childList: true, subtree: true, attributes: true });\n }\n\n deactivate () {\n this.observer.disconnect();\n }\n\n mutate (mutations) {\n const examinations = [];\n mutations.forEach((mutation) => {\n switch (mutation.type) {\n case 'childList':\n mutation.removedNodes.forEach((node) => this.dispose(node));\n mutation.addedNodes.forEach((node) => this.parse(node));\n break;\n\n case 'attributes':\n if (this.hasElement(mutation.target)) {\n const element = this.getElement(mutation.target);\n element.prepare(mutation.attributeName);\n if (examinations.indexOf(element) === -1) examinations.push(element);\n for (const descendant of element.descendants) if (examinations.indexOf(descendant) === -1) examinations.push(descendant);\n }\n if (this.modifications.indexOf(mutation.target) === -1) this.modifications.push(mutation.target);\n break;\n }\n });\n\n examinations.forEach(element => element.examine());\n if (this.modifications.length && !this.willModify) {\n this.willModify = true;\n window.requestAnimationFrame(this.modifying);\n }\n }\n\n modify () {\n this.willModify = false;\n const targets = this.modifications.slice();\n this.modifications.length = 0;\n for (const target of targets) if (document.documentElement.contains(target)) this.parse(target);\n }\n\n dispose (node) {\n const disposables = [];\n this.forEach((element) => {\n if (node.contains(element.node)) disposables.push(element);\n });\n\n for (const disposable of disposables) {\n disposable.dispose();\n this.remove(disposable);\n }\n }\n\n parse (node, registration, nonRecursive) {\n const registrations = registration ? [registration] : state.getModule('register').collection;\n const creations = [];\n\n for (const registration of registrations) {\n const nodes = registration.parse(node, nonRecursive);\n\n for (const n of nodes) {\n const element = this.getElement(n);\n element.project(registration);\n if (creations.indexOf(element) === -1) creations.push(element);\n }\n }\n\n for (const element of creations) element.populate();\n }\n}\n\nexport { Stage };\n","import state from '../../state.js';\nimport { Module } from '../module.js';\nimport { Collection } from '../../utilities/collection.js';\nimport { rootDispatch } from '../../utilities/dom/dispatch.js';\nimport { RootEvent } from '../stage/root-event.js';\n\nclass Renderer extends Module {\n constructor () {\n super('render');\n this.rendering = this.render.bind(this);\n this.nexts = new Collection();\n }\n\n activate () {\n window.requestAnimationFrame(this.rendering);\n }\n\n request (instance) {\n this.nexts.add(instance);\n }\n\n render () {\n if (!state.isActive) return;\n window.requestAnimationFrame(this.rendering);\n this.forEach((instance) => instance.render());\n if (!this.nexts.length) return;\n const nexts = this.nexts.clone();\n this.nexts.clear();\n nexts.forEach((instance) => instance.next());\n rootDispatch(RootEvent.RENDER);\n }\n}\n\nexport { Renderer };\n","import { Module } from '../module.js';\nimport { rootDispatch } from '../../utilities/dom/dispatch.js';\nimport { RootEvent } from '../stage/root-event.js';\n\nclass Resizer extends Module {\n constructor () {\n super('resize');\n this.requireResize = false;\n this.resizing = this.resize.bind(this);\n const requesting = this.request.bind(this);\n if (document.fonts) {\n document.fonts.ready.then(requesting);\n }\n window.addEventListener('resize', requesting);\n window.addEventListener('orientationchange', requesting);\n }\n\n activate () {\n this.request();\n }\n\n request () {\n if (this.requireResize) return;\n this.requireResize = true;\n window.requestAnimationFrame(this.resizing);\n }\n\n resize () {\n if (!this.requireResize) return;\n this.forEach((instance) => instance.resize());\n this.requireResize = false;\n rootDispatch(RootEvent.RESIZE);\n }\n}\n\nexport { Resizer };\n","import ns from '../../utilities/namespace.js';\nimport { Module } from '../module.js';\nimport { rootDispatch } from '../../utilities/dom/dispatch.js';\nimport { RootEvent } from '../stage/root-event.js';\n\nclass ScrollLocker extends Module {\n constructor () {\n super('lock');\n this._isLocked = false;\n this._scrollY = 0;\n this.onPopulate = this.lock.bind(this);\n this.onEmpty = this.unlock.bind(this);\n }\n\n get isLocked () {\n return this._isLocked;\n }\n\n lock () {\n if (!this._isLocked) {\n this._isLocked = true;\n this._scrollY = window.scrollY;\n const scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n document.documentElement.setAttribute(ns.attr('scrolling'), 'false');\n document.body.style.top = `${-this._scrollY}px`;\n this.behavior = getComputedStyle(document.documentElement).getPropertyValue('scroll-behavior');\n if (this.behavior === 'smooth') document.documentElement.style.scrollBehavior = 'auto';\n if (scrollBarGap > 0) {\n document.documentElement.style.setProperty('--scrollbar-width', `${scrollBarGap}px`);\n }\n rootDispatch(RootEvent.SCROLL_LOCK);\n }\n }\n\n unlock () {\n if (this._isLocked) {\n this._isLocked = false;\n document.documentElement.removeAttribute(ns.attr('scrolling'));\n document.body.style.top = '';\n window.scrollTo(0, this._scrollY);\n if (this.behavior === 'smooth') document.documentElement.style.removeProperty('scroll-behavior');\n document.documentElement.style.removeProperty('--scrollbar-width');\n rootDispatch(RootEvent.SCROLL_UNLOCK);\n }\n }\n\n move (value) {\n if (this._isLocked) {\n this._scrollY += value;\n document.body.style.top = `${-this._scrollY}px`;\n } else {\n window.scrollTo(0, window.scrollY + value);\n }\n }\n}\n\nexport { ScrollLocker };\n","import { Module } from '../module.js';\n\nclass Load extends Module {\n constructor () {\n super('load');\n this.loading = this.load.bind(this);\n }\n\n activate () {\n window.addEventListener('load', this.loading);\n }\n\n load () {\n this.forEach((instance) => instance.load());\n }\n}\n\nexport { Load };\n","import { Module } from '../module.js';\n\nconst FONT_FAMILIES = ['Marianne', 'Spectral'];\n\nclass FontSwap extends Module {\n constructor () {\n super('font-swap');\n this.swapping = this.swap.bind(this);\n }\n\n activate () {\n if (document.fonts) {\n document.fonts.addEventListener('loadingdone', this.swapping);\n }\n }\n\n swap () {\n const families = FONT_FAMILIES.filter(family => document.fonts.check(`16px ${family}`));\n\n this.forEach((instance) => instance.swapFont(families));\n }\n}\n\nexport { FontSwap };\n","import { Module } from '../module.js';\n\nclass MouseMove extends Module {\n constructor () {\n super('mouse-move');\n this.requireMove = false;\n this._isMoving = false;\n this.moving = this.move.bind(this);\n this.requesting = this.request.bind(this);\n this.onPopulate = this.listen.bind(this);\n this.onEmpty = this.unlisten.bind(this);\n }\n\n listen () {\n if (this._isMoving) return;\n this._isMoving = true;\n this.requireMove = false;\n document.documentElement.addEventListener('mousemove', this.requesting);\n }\n\n unlisten () {\n if (!this._isMoving) return;\n this._isMoving = false;\n this.requireMove = false;\n document.documentElement.removeEventListener('mousemove', this.requesting);\n }\n\n request (e) {\n if (!this._isMoving) return;\n this.point = { x: e.clientX, y: e.clientY };\n if (this.requireMove) return;\n this.requireMove = true;\n window.requestAnimationFrame(this.moving);\n }\n\n move () {\n if (!this.requireMove) return;\n this.forEach((instance) => instance.mouseMove(this.point));\n this.requireMove = false;\n }\n}\n\nexport { MouseMove };\n","import { Module } from '../module.js';\n\nclass Hash extends Module {\n constructor () {\n super('hash');\n this.handling = this.handle.bind(this);\n this.getLocationHash();\n }\n\n activate () {\n window.addEventListener('hashchange', this.handling);\n }\n\n deactivate () {\n window.removeEventListener('hashchange', this.handling);\n }\n\n _sanitize (hash) {\n if (hash.charAt(0) === '#') return hash.substring(1);\n return hash;\n }\n\n set hash (value) {\n const hash = this._sanitize(value);\n if (this._hash !== hash) window.location.hash = hash;\n }\n\n get hash () {\n return this._hash;\n }\n\n getLocationHash () {\n const hash = window.location.hash;\n this._hash = this._sanitize(hash);\n }\n\n handle (e) {\n this.getLocationHash();\n this.forEach((instance) => instance.handleHash(this._hash, e));\n }\n}\n\nexport { Hash };\n","import { Register } from './modules/register/register.js';\nimport { Stage } from './modules/stage/stage.js';\nimport { Renderer } from './modules/render/renderer.js';\nimport { Resizer } from './modules/resize/resizer.js';\nimport { ScrollLocker } from './modules/scroll/scroll-locker.js';\nimport { Load } from './modules/load/load.js';\nimport { FontSwap } from './modules/font-swap/font-swap';\nimport { MouseMove } from './modules/mouse-move/mouse-move';\nimport { Hash } from './modules/hash/hash';\nimport { rootDispatch } from './utilities/dom/dispatch.js';\nimport { RootEvent } from './modules/stage/root-event.js';\nimport inspector from './inspect/inspector.js';\nimport state from './state.js';\n\nclass Engine {\n constructor () {\n state.create(Register);\n state.create(Stage);\n state.create(Renderer);\n state.create(Resizer);\n state.create(ScrollLocker);\n state.create(Load);\n state.create(FontSwap);\n state.create(MouseMove);\n state.create(Hash);\n\n const registerModule = state.getModule('register');\n this.register = registerModule.register.bind(registerModule);\n }\n\n get isActive () {\n return state.isActive;\n }\n\n start () {\n inspector.debug('START');\n state.isActive = true;\n rootDispatch(RootEvent.START);\n }\n\n stop () {\n inspector.debug('STOP');\n state.isActive = false;\n rootDispatch(RootEvent.STOP);\n }\n}\n\nconst engine = new Engine();\nexport default engine;\n","class Colors {\n getColor (context, use, tint, options = {}) {\n const option = getOption(options);\n const decision = `--${context}-${use}-${tint}${option}`;\n return getComputedStyle(document.documentElement).getPropertyValue(decision).trim() || null;\n }\n}\n\nconst getOption = (options) => {\n switch (true) {\n case options.hover:\n return '-hover';\n case options.active:\n return '-active';\n default:\n return '';\n }\n};\n\nconst colors = new Colors();\n\nexport default colors;\n","const sanitize = (className) => className.charAt(0) === '.' ? className.substr(1) : className;\n\nconst getClassNames = (element) => {\n switch (true) {\n case !element.className:\n return [];\n\n case typeof element.className === 'string':\n return element.className.split(' ');\n\n case typeof element.className.baseVal === 'string':\n return element.className.baseVal.split(' ');\n }\n\n return [];\n};\n\nexport { getClassNames };\n\nconst modifyClass = (element, className, remove) => {\n className = sanitize(className);\n const classNames = getClassNames(element);\n const index = classNames.indexOf(className);\n if (remove === true) {\n if (index > -1) classNames.splice(index, 1);\n } else if (index === -1) classNames.push(className);\n element.className = classNames.join(' ');\n};\n\nconst addClass = (element, className) => modifyClass(element, className);\n\nexport { addClass };\n\nconst removeClass = (element, className) => modifyClass(element, className, true);\n\nexport { removeClass };\n\nconst hasClass = (element, className) => getClassNames(element).indexOf(sanitize(className)) > -1;\n\nexport { hasClass };\n","const ACTIONS = [\n '[tabindex]:not([tabindex=\"-1\"])',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst ACTIONS_SELECTOR = ACTIONS.join();\n\nexport const queryActions = (element) => {\n return element.querySelectorAll(ACTIONS_SELECTOR);\n};\n","let counter = 0;\n\nexport const uniqueId = (id) => {\n if (!document.getElementById(id)) return id;\n let element = true;\n const base = id;\n while (element) {\n counter++;\n id = `${base}-${counter}`;\n element = document.getElementById(id);\n }\n return id;\n};\n","import { addClass, hasClass, removeClass } from './classes.js';\nimport { queryParentSelector, querySelectorAllArray } from './query-selector.js';\nimport { queryActions } from './actions';\nimport { uniqueId } from './id';\nimport { dispatch } from './dispatch.js';\n\nconst dom = {\n addClass: addClass,\n hasClass: hasClass,\n removeClass: removeClass,\n queryParentSelector: queryParentSelector,\n querySelectorAllArray: querySelectorAllArray,\n queryActions: queryActions,\n uniqueId: uniqueId,\n dispatch: dispatch\n};\n\nexport default dom;\n","import { DataURISVG } from './data-uri-svg';\n\nconst image = {\n DataURISVG: DataURISVG\n};\n\nexport default image;\n","class DataURISVG {\n constructor (width = 0, height = 0) {\n this._width = width;\n this._height = height;\n this._content = '';\n }\n\n get width () {\n return this._width;\n }\n\n set width (value) {\n this._width = value;\n }\n\n get height () {\n return this._height;\n }\n\n set height (value) {\n this._height = value;\n }\n\n get content () {\n return this._content;\n }\n\n set content (value) {\n this._content = value;\n }\n\n getDataURI (isLegacy = false) {\n let svg = `${this._content}`;\n\n svg = svg.replace(/#/gi, '%23');\n if (isLegacy) {\n svg = svg.replace(//gi, '%3E');\n svg = svg.replace(/\"/gi, '\\'');\n svg = svg.replace(/{/gi, '%7B');\n svg = svg.replace(/}/gi, '%7D');\n }\n return `data:image/svg+xml;charset=utf8,${svg}`;\n }\n}\n\nexport { DataURISVG };\n","import { supportLocalStorage, supportAspectRatio } from './browser-support.js';\n\nconst support = {\n supportLocalStorage: supportLocalStorage,\n supportAspectRatio: supportAspectRatio\n};\n\nexport default support;\n","const supportLocalStorage = () => {\n try {\n return 'localStorage' in window && window.localStorage !== null;\n } catch (e) {\n return false;\n }\n};\n\nconst supportAspectRatio = () => {\n if (!window.CSS) return false;\n return CSS.supports('aspect-ratio: 16 / 9');\n};\n\nexport { supportLocalStorage, supportAspectRatio };\n","import { TransitionSelector } from './transition-selector';\n\nconst selector = {\n TransitionSelector: TransitionSelector\n};\n\nexport default selector;\n","import ns from '../namespace.js';\n\nexport const TransitionSelector = {\n NONE: ns.selector('transition-none')\n};\n","/**\n * Copy properties from multiple sources including accessors.\n * source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#copier_des_accesseurs\n *\n * @param {object} [target] - Target object to copy into\n * @param {...objects} [sources] - Multiple objects\n * @return {object} A new object\n *\n * @example\n *\n * const obj1 = {\n * key: 'value'\n * };\n * const obj2 = {\n * get function01 () {\n * return a-value;\n * }\n * set function01 () {\n * return a-value;\n * }\n * };\n * completeAssign(obj1, obj2)\n */\nconst completeAssign = (target, ...sources) => {\n sources.forEach(source => {\n const descriptors = Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {});\n\n Object.getOwnPropertySymbols(source).forEach(sym => {\n const descriptor = Object.getOwnPropertyDescriptor(source, sym);\n if (descriptor.enumerable) {\n descriptors[sym] = descriptor;\n }\n });\n Object.defineProperties(target, descriptors);\n });\n return target;\n};\n\nexport { completeAssign };\n","import { completeAssign } from './complete-assign';\n\nconst property = {\n completeAssign: completeAssign\n};\n\nexport default property;\n","import state from './state.js';\nimport engine from './engine.js';\nimport options from './options/options.js';\nimport dom from './utilities/dom/index';\nimport image from './utilities/image/index';\nimport ns from './utilities/namespace.js';\nimport support from './utilities/support/index';\nimport motion from './utilities/motion/index';\nimport property from './utilities/property/index';\nimport searchParams from './utilities/search-params/index.js';\n\nconst internals = {};\nconst legacy = {};\n\nObject.defineProperty(legacy, 'isLegacy', {\n get: () => state.isLegacy\n});\n\nlegacy.setLegacy = () => {\n state.isLegacy = true;\n};\n\ninternals.legacy = legacy;\ninternals.dom = dom;\ninternals.image = image;\ninternals.support = support;\ninternals.motion = motion;\ninternals.property = property;\ninternals.ns = ns;\ninternals.register = engine.register;\ninternals.state = state;\ninternals.query = searchParams(window.location);\n\nObject.defineProperty(internals, 'preventManipulation', {\n get: () => options.preventManipulation\n});\nObject.defineProperty(internals, 'stage', {\n get: () => state.getModule('stage')\n});\n\nexport default internals;\n","/**\n * Return an object of query params or null\n *\n * @method\n * @name searchParams\n * @param {string} url - an url\n * @returns {Object} object of query params or null\n */\n\nconst searchParams = (url) => {\n if (url && url.search) {\n const params = new URLSearchParams(window.location.search);\n const entries = params.entries();\n return Object.fromEntries(entries);\n }\n return null;\n};\n\nexport default searchParams;\n","import state from './state.js';\nimport options from './options/options.js';\nimport { Modes } from './options/modes.js';\nimport config from '../../config.js';\nimport engine from './engine.js';\nimport inspector from './inspect/inspector.js';\nimport colors from './utilities/colors/colors.js';\nimport internals from './internals.js';\n\nconst api = (node) => {\n const stage = state.getModule('stage');\n return stage.getProxy(node);\n};\n\napi.version = config.version;\napi.prefix = config.prefix;\napi.organisation = config.organisation;\napi.Modes = Modes;\n\nObject.defineProperty(api, 'mode', {\n set: (value) => { options.mode = value; },\n get: () => options.mode\n});\n\napi.internals = internals;\napi.version = config.version;\n\napi.start = engine.start;\napi.stop = engine.stop;\n\napi.inspector = inspector;\napi.colors = colors;\n\nconst configuration = window[config.namespace];\napi.internals.configuration = configuration;\n\noptions.configure(configuration, api.start, api.internals.query);\n\nwindow[config.namespace] = api;\nexport default api;\n","class Emitter {\n constructor () {\n this.emissions = {};\n }\n\n add (type, closure) {\n if (typeof closure !== 'function') throw new Error('closure must be a function');\n if (!this.emissions[type]) this.emissions[type] = [];\n this.emissions[type].push(closure);\n }\n\n remove (type, closure) {\n if (!this.emissions[type]) return;\n if (!closure) delete this.emissions[type];\n else {\n const index = this.emissions[type].indexOf(closure);\n if (index > -1) this.emissions[type].splice(index);\n }\n }\n\n emit (type, data) {\n if (!this.emissions[type]) return [];\n const response = [];\n for (const closure of this.emissions[type]) if (closure) response.push(closure(data));\n return response;\n }\n\n dispose () {\n this.emissions = null;\n }\n}\n\nexport { Emitter };\n","import api from '../../api';\n\nclass FocusManager {\n constructor () {\n this._activeElements = [];\n window.document.addEventListener('focusin', this._onFocusIn.bind(this));\n }\n\n _onFocusIn (e) {\n this._activeElements.push(e.target);\n }\n\n get index () {\n return this._activeElements.length - 1;\n }\n\n focus (index) {\n const element = this._activeElements[index];\n switch (true) {\n case index < 0:\n case this._activeElements.length === 0:\n this.focusOnLogo();\n return;\n case !element:\n case !document.documentElement.contains(element):\n case !this._isDisplayed(element):\n this.focus(index - 1);\n return;\n }\n\n element.focus();\n }\n\n focusOnLogo () {\n const logo = document.querySelector(api.header.HeaderSelector.BRAND_LINK);\n if (logo) logo.focus();\n }\n\n _isDisplayed (element) {\n while (element && element !== document.documentElement) {\n if (element === document.body) return true;\n const style = window.getComputedStyle(element);\n if (style.display === 'none' || style.visibility === 'hidden') return false;\n element = element.parentElement;\n }\n return true;\n }\n}\n\nconst focusManager = new FocusManager();\n\nexport default focusManager;\n","class Breakpoint {\n constructor (id, minWidth) {\n this.id = id;\n this.minWidth = minWidth;\n }\n\n test () {\n return window.matchMedia(`(min-width: ${this.minWidth}em)`).matches;\n }\n}\n\nexport const Breakpoints = {\n XS: new Breakpoint('xs', 0),\n SM: new Breakpoint('sm', 36),\n MD: new Breakpoint('md', 48),\n LG: new Breakpoint('lg', 62),\n XL: new Breakpoint('xl', 78)\n};\n","import ns from '../../utilities/namespace.js';\n\nconst InstanceEvent = {\n CLICK: ns.event('click')\n};\n\nexport { InstanceEvent };\n","import { Emitter } from '../../utilities/emitter.js';\nimport state from '../../state.js';\nimport inspector from '../../inspect/inspector.js';\nimport focusManager from './focus-manager';\nimport { Breakpoints } from './breakpoints.js';\nimport { addClass, removeClass, hasClass, getClassNames } from '../../utilities/dom/classes.js';\nimport { dispatch } from '../../utilities/dom/dispatch.js';\nimport { uniqueId } from '../../utilities/dom/id';\nimport { completeAssign } from '../../utilities/property/complete-assign.js';\nimport { queryParentSelector, querySelectorAllArray } from '../../utilities/dom/query-selector.js';\nimport { queryActions } from '../../utilities/dom/actions.js';\nimport { InstanceEvent } from './Instance-event.js';\n\nclass Instance {\n constructor (jsAttribute = true) {\n this.jsAttribute = jsAttribute;\n this._isRendering = false;\n this._isResizing = false;\n this._isScrollLocked = false;\n this._isLoading = false;\n this._isSwappingFont = false;\n this._isEnabled = true;\n this._isDisposed = false;\n this._listeners = {};\n this._handlingClick = this._handleClick.bind(this);\n this._hashes = [];\n this._hash = '';\n this._keyListenerTypes = [];\n this._keys = [];\n this.handlingKey = this.handleKey.bind(this);\n this._emitter = new Emitter();\n this._ascent = new Emitter();\n this._descent = new Emitter();\n this._registrations = [];\n this._nexts = [];\n }\n\n static get instanceClassName () {\n return 'Instance';\n }\n\n _config (element, registration) {\n this.element = element;\n this.registration = registration;\n this.node = element.node;\n this.id = element.node.id;\n if (this.jsAttribute) this.setAttribute(registration.attribute, true);\n this.init();\n }\n\n init () {}\n\n get proxy () {\n const scope = this;\n const proxy = {\n render: () => scope.render(),\n resize: () => scope.resize()\n };\n\n const proxyAccessors = {\n get node () {\n return scope.node;\n },\n get isEnabled () {\n return scope.isEnabled;\n },\n set isEnabled (value) {\n scope.isEnabled = value;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n\n log (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.log.apply(inspector, values);\n }\n\n debug (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.debug.apply(inspector, values);\n }\n\n info (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.info.apply(inspector, values);\n }\n\n warn (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.warn.apply(inspector, values);\n }\n\n error (...values) {\n values.unshift(`${this.registration.instanceClassName} #${this.id} - `);\n inspector.error.apply(inspector, values);\n }\n\n register (selector, InstanceClass) {\n const registration = state.getModule('register').register(selector, InstanceClass, this);\n this._registrations.push(registration);\n }\n\n getRegisteredInstances (instanceClassName) {\n for (const registration of this._registrations) if (registration.hasInstanceClassName(instanceClassName)) return registration.instances.collection;\n return [];\n }\n\n dispatch (type, detail = null, bubbles = true, cancelable = false) {\n dispatch(this.node, type, detail, bubbles, cancelable);\n }\n\n // TODO v2 => listener au niveau des éléments qui redistribuent aux instances.\n listen (type, closure, options) {\n if (!this._listeners[type]) this._listeners[type] = [];\n const listeners = this._listeners[type];\n // if (listeners.some(listener => listener.closure === closure)) return;\n const listener = new Listener(this.node, type, closure, options);\n listeners.push(listener);\n listener.listen();\n }\n\n unlisten (type, closure, options) {\n if (!type) {\n for (const type in this._listeners) this.unlisten(type);\n return;\n }\n\n const listeners = this._listeners[type];\n\n if (!listeners) return;\n\n if (!closure) {\n listeners.forEach(listener => this.unlisten(type, listener.closure));\n return;\n }\n\n const removal = listeners.filter(listener => listener.closure === closure && listener.matchOptions(options));\n removal.forEach(listener => listener.unlisten());\n this._listeners[type] = listeners.filter(listener => removal.indexOf(listener) === -1);\n }\n\n listenClick (options) {\n this.listen('click', this._handlingClick, options);\n }\n\n unlistenClick (options) {\n this.unlisten('click', this._handlingClick, options);\n }\n\n _handleClick (e) {\n this.handleClick(e);\n this.dispatch(InstanceEvent.CLICK, this);\n }\n\n handleClick (e) {}\n\n set hash (value) {\n state.getModule('hash').hash = value;\n }\n\n get hash () {\n return state.getModule('hash').hash;\n }\n\n listenHash (hash, add) {\n if (!this._hashes) return;\n if (this._hashes.length === 0) state.add('hash', this);\n const action = new HashAction(hash, add);\n this._hashes = this._hashes.filter(action => action.hash !== hash);\n this._hashes.push(action);\n }\n\n unlistenHash (hash) {\n if (!this._hashes) return;\n this._hashes = this._hashes.filter(action => action.hash !== hash);\n if (this._hashes.length === 0) state.remove('hash', this);\n }\n\n handleHash (hash, e) {\n if (!this._hashes) return;\n for (const action of this._hashes) action.handle(hash, e);\n }\n\n listenKey (keyCode, closure, preventDefault = false, stopPropagation = false, type = 'down') {\n if (this._keyListenerTypes.indexOf(type) === -1) {\n this.listen(`key${type}`, this.handlingKey);\n this._keyListenerTypes.push(type);\n }\n\n this._keys.push(new KeyAction(type, keyCode, closure, preventDefault, stopPropagation));\n }\n\n unlistenKey (code, closure) {\n this._keys = this._keys.filter((key) => key.code !== code || key.closure !== closure);\n\n this._keyListenerTypes.forEach(type => {\n if (!this._keys.some(key => key.type === type)) this.unlisten(`key${type}`, this.handlingKey);\n });\n }\n\n handleKey (e) {\n for (const key of this._keys) key.handle(e);\n }\n\n get isEnabled () { return this._isEnabled; }\n\n set isEnabled (value) {\n this._isEnabled = value;\n }\n\n get isRendering () { return this._isRendering; }\n\n set isRendering (value) {\n if (this._isRendering === value) return;\n if (value) state.add('render', this);\n else state.remove('render', this);\n this._isRendering = value;\n }\n\n render () {}\n\n request (closure) {\n this._nexts.push(closure);\n state.getModule('render').request(this);\n }\n\n next () {\n const nexts = this._nexts.slice();\n this._nexts.length = 0;\n for (const closure of nexts) if (closure) closure();\n }\n\n get isResizing () { return this._isResizing; }\n\n set isResizing (value) {\n if (this._isResizing === value) return;\n if (value) {\n state.add('resize', this);\n this.resize();\n } else state.remove('resize', this);\n this._isResizing = value;\n }\n\n resize () {}\n\n isBreakpoint (breakpoint) {\n switch (true) {\n case typeof breakpoint === 'string':\n return Breakpoints[breakpoint.toUpperCase()].test();\n\n default:\n return breakpoint.test();\n }\n }\n\n get isScrollLocked () {\n return this._isScrollLocked;\n }\n\n set isScrollLocked (value) {\n if (this._isScrollLocked === value) return;\n if (value) state.add('lock', this);\n else state.remove('lock', this);\n this._isScrollLocked = value;\n }\n\n get isLoading () {\n return this._isLoading;\n }\n\n set isLoading (value) {\n if (this._isLoading === value) return;\n if (value) state.add('load', this);\n else state.remove('load', this);\n this._isLoading = value;\n }\n\n load () {}\n\n get isSwappingFont () {\n return this._isSwappingFont;\n }\n\n set isSwappingFont (value) {\n if (this._isSwappingFont === value) return;\n if (value) state.add('font-swap', this);\n else state.remove('font-swap', this);\n this._isSwappingFont = value;\n }\n\n swapFont () {}\n\n get isMouseMoving () { return this._isMouseMoving; }\n\n set isMouseMoving (value) {\n if (this._isMouseMoving === value) return;\n if (value) {\n state.add('mouse-move', this);\n } else {\n state.remove('mouse-move', this);\n }\n this._isMouseMoving = value;\n }\n\n mouseMove (point) {}\n\n examine (attributeNames) {\n if (!this.node.matches(this.registration.selector)) {\n this._dispose();\n return;\n }\n\n this.mutate(attributeNames);\n }\n\n mutate (attributeNames) {}\n\n retrieveNodeId (node, append) {\n if (node.id) return node.id;\n const id = uniqueId(`${this.id}-${append}`);\n this.warn(`add id '${id}' to ${append}`);\n node.setAttribute('id', id);\n return id;\n }\n\n get isDisposed () {\n return this._isDisposed;\n }\n\n _dispose () {\n this.debug(`dispose instance of ${this.registration.instanceClassName} on element [${this.element.id}]`);\n this.removeAttribute(this.registration.attribute);\n this.unlisten();\n state.remove('hash', this);\n this._hashes = null;\n this._keys = null;\n this.isRendering = false;\n this.isResizing = false;\n this._nexts = null;\n state.getModule('render').nexts.remove(this);\n this.isScrollLocked = false;\n this.isLoading = false;\n this.isSwappingFont = false;\n this.isMouseMoving = false;\n this._emitter.dispose();\n this._emitter = null;\n this._ascent.dispose();\n this._ascent = null;\n this._descent.dispose();\n this._descent = null;\n this.element.remove(this);\n for (const registration of this._registrations) state.remove('register', registration);\n this._registrations = null;\n this.registration.remove(this);\n this._isDisposed = true;\n this.dispose();\n }\n\n dispose () {}\n\n emit (type, data) {\n return this.element.emit(type, data);\n }\n\n addEmission (type, closure) {\n this._emitter.add(type, closure);\n }\n\n removeEmission (type, closure) {\n this._emitter.remove(type, closure);\n }\n\n ascend (type, data) {\n return this.element.ascend(type, data);\n }\n\n addAscent (type, closure) {\n this._ascent.add(type, closure);\n }\n\n removeAscent (type, closure) {\n this._ascent.remove(type, closure);\n }\n\n descend (type, data) {\n return this.element.descend(type, data);\n }\n\n addDescent (type, closure) {\n this._descent.add(type, closure);\n }\n\n removeDescent (type, closure) {\n this._descent.remove(type, closure);\n }\n\n get style () {\n return this.node.style;\n }\n\n addClass (className) {\n addClass(this.node, className);\n }\n\n removeClass (className) {\n removeClass(this.node, className);\n }\n\n hasClass (className) {\n return hasClass(this.node, className);\n }\n\n get classNames () {\n return getClassNames(this.node);\n }\n\n remove () {\n this.node.parentNode.removeChild(this.node);\n }\n\n setAttribute (attributeName, value) {\n this.node.setAttribute(attributeName, value);\n }\n\n getAttribute (attributeName) {\n return this.node.getAttribute(attributeName);\n }\n\n hasAttribute (attributeName) {\n return this.node.hasAttribute(attributeName);\n }\n\n removeAttribute (attributeName) {\n this.node.removeAttribute(attributeName);\n }\n\n setProperty (propertyName, value) {\n this.node.style.setProperty(propertyName, value);\n }\n\n removeProperty (propertyName) {\n this.node.style.removeProperty(propertyName);\n }\n\n focus () {\n this.node.focus();\n }\n\n blur () {\n this.node.blur();\n }\n\n retainFocus () {\n this._focusIndex = focusManager.index;\n }\n\n focusBack () {\n focusManager.focus(this._focusIndex);\n }\n\n focusClosest () {\n const closest = this._focusClosest(this.node.parentNode);\n if (closest) closest.focus();\n }\n\n _focusClosest (parent) {\n if (!parent) return null;\n const actions = [...queryActions(parent)];\n if (actions.length <= 1) {\n return this._focusClosest(parent.parentNode);\n } else {\n const index = actions.indexOf(this.node);\n return actions[index + (index < actions.length - 1 ? 1 : -1)];\n }\n }\n\n get hasFocus () {\n return this.node === document.activeElement;\n }\n\n scrollIntoView () {\n const rect = this.getRect();\n\n const scroll = state.getModule('lock');\n\n if (rect.top < 0) {\n scroll.move(rect.top - 50);\n }\n\n if (rect.bottom > window.innerHeight) {\n scroll.move(rect.bottom - window.innerHeight + 50);\n }\n }\n\n matches (selectors) {\n return this.node.matches(selectors);\n }\n\n querySelector (selectors) {\n return this.node.querySelector(selectors);\n }\n\n querySelectorAll (selectors) {\n return querySelectorAllArray(this.node, selectors);\n }\n\n queryParentSelector (selectors) {\n return queryParentSelector(this.node, selectors);\n }\n\n getRect () {\n const rect = this.node.getBoundingClientRect();\n rect.center = rect.left + rect.width * 0.5;\n rect.middle = rect.top + rect.height * 0.5;\n return rect;\n }\n\n get isLegacy () {\n return state.isLegacy;\n }\n}\n\nclass KeyAction {\n constructor (type, keyCode, closure, preventDefault, stopPropagation) {\n this.type = type;\n this.eventType = `key${type}`;\n this.keyCode = keyCode;\n this.closure = closure;\n this.preventDefault = preventDefault === true;\n this.stopPropagation = stopPropagation === true;\n }\n\n handle (e) {\n if (e.type !== this.eventType) return;\n if (e.keyCode === this.keyCode.value) {\n this.closure(e);\n if (this.preventDefault) {\n e.preventDefault();\n }\n if (this.stopPropagation) {\n e.stopPropagation();\n }\n }\n }\n}\n\nclass Listener {\n constructor (node, type, closure, options) {\n this._node = node;\n this._type = type;\n this._closure = closure;\n this._options = options;\n }\n\n get closure () {\n return this._closure;\n }\n\n listen () {\n this._node.addEventListener(this._type, this._closure, this._options);\n }\n\n matchOptions (options = null) {\n switch (true) {\n case options === null:\n case typeof this._options === 'boolean' && typeof options === 'boolean' && this._options === options:\n return true;\n\n case Object.keys(this._options).length !== Object.keys(options).length:\n return false;\n\n case Object.keys(options).every(key => this._options[key] === options[key]):\n return true;\n }\n\n return false;\n }\n\n unlisten () {\n this._node.removeEventListener(this._type, this._closure, this._options);\n }\n}\n\nclass HashAction {\n constructor (hash, add) {\n this.hash = hash;\n this.add = add;\n }\n\n handle (hash, e) {\n if (this.hash === hash) this.add(e);\n }\n}\n\nexport { Instance };\n","import ns from '../api/utilities/namespace.js';\n\nconst DisclosureEvent = {\n DISCLOSE: ns.event('disclose'),\n CONCEAL: ns.event('conceal'),\n CURRENT: ns.event('current')\n};\n\nexport { DisclosureEvent };\n","import ns from '../api/utilities/namespace.js';\n\nconst DisclosureEmission = {\n RESET: ns.emission('disclosure', 'reset'),\n ADDED: ns.emission('disclosure', 'added'),\n RETRIEVE: ns.emission('disclosure', 'retrieve'),\n REMOVED: ns.emission('disclosure', 'removed'),\n GROUP: ns.emission('disclosure', 'group'),\n UNGROUP: ns.emission('disclosure', 'ungroup'),\n SPOTLIGHT: ns.emission('disclosure', 'spotlight')\n};\n\nexport { DisclosureEmission };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { DisclosureEvent } from './disclosure-event.js';\nimport { DisclosureEmission } from './disclosure-emission.js';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\n\nclass Disclosure extends Instance {\n constructor (type, selector, DisclosureButtonInstanceClass, disclosuresGroupInstanceClassName) {\n super();\n this.type = type;\n this._selector = selector;\n this.DisclosureButtonInstanceClass = DisclosureButtonInstanceClass;\n this.disclosuresGroupInstanceClassName = disclosuresGroupInstanceClassName;\n this.modifier = this._selector + '--' + this.type.id;\n this._isPristine = true;\n this._isActive = true;\n this._isRetrievingPrimaries = false;\n this._hasRetrieved = false;\n this._primaryButtons = [];\n }\n\n static get instanceClassName () {\n return 'Disclosure';\n }\n\n init () {\n this.addDescent(DisclosureEmission.RESET, this.reset.bind(this));\n this.addDescent(DisclosureEmission.GROUP, this.update.bind(this));\n this.addDescent(DisclosureEmission.UNGROUP, this.update.bind(this));\n this.addAscent(DisclosureEmission.SPOTLIGHT, this.disclose.bind(this));\n this.register(`[aria-controls=\"${this.id}\"]`, this.DisclosureButtonInstanceClass);\n this.ascend(DisclosureEmission.ADDED);\n this.listenHash(this.id, this._spotlight.bind(this));\n this.update();\n }\n\n get isEnabled () { return super.isEnabled; }\n\n set isEnabled (value) {\n if (this.isEnabled === value) return;\n super.isEnabled = value;\n if (value) this.ascend(DisclosureEmission.ADDED);\n else this.ascend(DisclosureEmission.REMOVED);\n }\n\n get isActive () {\n return this._isActive;\n }\n\n set isActive (value) {\n if (this._isActive === value) return;\n this._isActive = value;\n if (value) this.ascend(DisclosureEmission.ADDED);\n else {\n this.ascend(DisclosureEmission.REMOVED);\n if (this.isDisclosed) this.conceal();\n }\n }\n\n get isPristine () {\n return this._isPristine;\n }\n\n get proxy () {\n const scope = this;\n const proxy = Object.assign(super.proxy, {\n disclose: scope.disclose.bind(scope),\n focus: scope.focus.bind(scope)\n });\n\n if (this.type.canConceal) proxy.conceal = scope.conceal.bind(scope);\n\n const proxyAccessors = {\n get buttons () {\n return scope.buttons.map((button) => button.proxy);\n },\n get group () {\n const group = scope.group;\n return group ? group.proxy : null;\n },\n get isDisclosed () {\n return scope.isDisclosed;\n },\n get isEnabled () {\n return scope.isEnabled;\n },\n get isActive () {\n return scope.isActive;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n\n get buttons () {\n return this.getRegisteredInstances(this.DisclosureButtonInstanceClass.instanceClassName);\n }\n\n update () {\n this.getGroup();\n this.retrievePrimaries();\n }\n\n getGroup () {\n if (!this.disclosuresGroupInstanceClassName) {\n this._group = null;\n return;\n }\n\n const group = this.element.getAscendantInstance(this.disclosuresGroupInstanceClassName, this.constructor.instanceClassName);\n if (!group || !group.validate(this)) {\n this._group = null;\n return;\n }\n\n this._group = group;\n }\n\n get group () {\n return this._group;\n }\n\n disclose (withhold) {\n if (this.isDisclosed === true || !this.isEnabled || !this._isActive) return false;\n this.retainFocus();\n this._isPristine = false;\n this.isDisclosed = true;\n if (!withhold && this.group) this.group.current = this;\n return true;\n }\n\n conceal (withhold, preventFocus = true) {\n if (this.isDisclosed === false) return false;\n if (!this.type.canConceal && this.group && this.group.current === this) return false;\n this.isDisclosed = false;\n if (!withhold && this.group && this.group.current === this) this.group.current = null;\n if (!preventFocus) this.focus();\n if (!this._isPristine) this.descend(DisclosureEmission.RESET);\n return true;\n }\n\n get isDisclosed () {\n return this._isDisclosed;\n }\n\n set isDisclosed (value) {\n if (this._isDisclosed === value || (!this.isEnabled && value === true)) return;\n if (!this._isPristine) this.dispatch(value ? DisclosureEvent.DISCLOSE : DisclosureEvent.CONCEAL, this);\n this._isDisclosed = value;\n if (value) this.addClass(this.modifier);\n else this.removeClass(this.modifier);\n for (let i = 0; i < this.buttons.length; i++) this.buttons[i].apply(value);\n }\n\n get isInitiallyDisclosed () {\n return this.primaryButtons.some(button => button.isInitiallyDisclosed);\n }\n\n hasRetrieved () {\n return this._hasRetrieved;\n }\n\n reset () {}\n\n toggle (canDisclose) {\n if (!this.type.canConceal) this.disclose();\n else {\n switch (true) {\n case !canDisclose:\n case this.isDisclosed:\n this.conceal(false, false);\n break;\n\n default:\n this.disclose();\n }\n }\n }\n\n get buttonHasFocus () {\n return this.buttons.some((button) => { return button.hasFocus; });\n }\n\n get hasFocus () {\n if (super.hasFocus) return true;\n if (this.buttonHasFocus) return true;\n return this.querySelectorAll(':focus').length > 0;\n }\n\n focus () {\n if (this._primaryButtons.length > 0) this._primaryButtons[0].focus();\n else this.focusBack();\n }\n\n get primaryButtons () {\n return this._primaryButtons;\n }\n\n retrievePrimaries () {\n if (this._isRetrievingPrimaries) return;\n this._isRetrievingPrimaries = true;\n this.request(this._retrievePrimaries.bind(this));\n }\n\n _retrievePrimaries () {\n this._isRetrievingPrimaries = false;\n this._primaryButtons = this._electPrimaries(this.buttons);\n\n if (this._hasRetrieved || (this._primaryButtons.length === 0 && this.type.requirePrimary)) return;\n this.retrieved();\n this._hasRetrieved = true;\n\n this.applyAbility(true);\n\n if (this.group) {\n this.group.retrieve();\n return;\n }\n\n if (this._isPristine && this.isEnabled && this.isActive && !this.group) {\n switch (true) {\n case this.hash === this.id:\n this._spotlight();\n break;\n\n case this.isInitiallyDisclosed:\n this.disclose();\n break;\n }\n }\n }\n\n retrieved () {}\n\n _spotlight () {\n this.disclose();\n this.request(() => { this.ascend(DisclosureEmission.SPOTLIGHT); });\n }\n\n _electPrimaries (candidates) {\n return candidates.filter(button => button.canDisclose && !this.node.contains(button.node));\n }\n\n applyAbility (withhold = false) {\n const isEnabled = !this.type.requirePrimary || this._primaryButtons.some(button => !button.isDisabled);\n\n if (this.isEnabled === isEnabled) return;\n\n this.isEnabled = isEnabled;\n\n if (withhold) return;\n\n if (!this.isEnabled && this.isDisclosed) {\n if (this.group) this.ascend(DisclosureEmission.REMOVED);\n else if (this.type.canConceal) this.conceal();\n }\n\n if (this.isEnabled) {\n if (this.group) this.ascend(DisclosureEmission.ADDED);\n if (this.hash === this.id) {\n this._spotlight();\n }\n }\n }\n\n dispose () {\n this._group = null;\n this._primaryButtons = null;\n super.dispose();\n this.ascend(DisclosureEmission.REMOVED);\n }\n}\n\nexport { Disclosure };\n","import { Instance } from '../api/modules/register/instance';\nimport ns from '../api/utilities/namespace.js';\n\nclass DisclosureButton extends Instance {\n constructor (type) {\n super();\n this.type = type;\n this.attributeName = type.ariaState ? 'aria-' + type.id : ns.attr(type.id);\n this._canDisclose = false;\n }\n\n static get instanceClassName () {\n return 'DisclosureButton';\n }\n\n get isPrimary () {\n return this.registration.creator.primaryButtons.includes(this);\n }\n\n get canDisclose () {\n return this._canDisclose;\n }\n\n get isDisabled () {\n return this.type.canDisable && this.hasAttribute('disabled');\n }\n\n init () {\n this._canDisclose = this.hasAttribute(this.attributeName);\n this._isInitiallyDisclosed = this.isDisclosed;\n this._isContained = this.registration.creator.node.contains(this.node);\n this.controlsId = this.getAttribute('aria-controls');\n this.registration.creator.retrievePrimaries();\n this.listenClick();\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n focus: scope.focus.bind(scope)\n });\n }\n\n handleClick (e) {\n if (this.registration.creator) this.registration.creator.toggle(this.canDisclose);\n }\n\n mutate (attributeNames) {\n this._canDisclose = this.hasAttribute(this.attributeName);\n this.registration.creator.applyAbility();\n if (!this._isApplying && this.isPrimary && attributeNames.indexOf(this.attributeName) > -1 && this.registration.creator) {\n if (this.isDisclosed) this.registration.creator.disclose();\n else if (this.type.canConceal) this.registration.creator.conceal();\n }\n }\n\n apply (value) {\n if (!this.canDisclose) return;\n this._isApplying = true;\n this.setAttribute(this.attributeName, value);\n this.request(() => { this._isApplying = false; });\n }\n\n get isDisclosed () {\n return this.getAttribute(this.attributeName) === 'true';\n }\n\n get isInitiallyDisclosed () {\n return this._isInitiallyDisclosed;\n }\n\n focus () {\n super.focus();\n this.scrollIntoView();\n }\n\n measure (rect) {\n const buttonRect = this.rect;\n this._dx = rect.x - buttonRect.x;\n this._dy = rect.y - buttonRect.y;\n }\n\n get dx () {\n return this._dx;\n }\n\n get dy () {\n return this._dy;\n }\n}\n\nexport { DisclosureButton };\n","import ns from '../api/utilities/namespace.js';\n\nexport const DisclosureSelector = {\n PREVENT_CONCEAL: ns.attr.selector('prevent-conceal'),\n GROUP: ns.attr('group')\n};\n","import { Instance } from '../api/modules/register/instance.js';\nimport { DisclosureEvent } from './disclosure-event.js';\nimport { DisclosureEmission } from './disclosure-emission.js';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\nimport { DisclosureSelector } from './disclosure-selector.js';\n\nclass DisclosuresGroup extends Instance {\n constructor (disclosureInstanceClassName, jsAttribute) {\n super(jsAttribute);\n this.disclosureInstanceClassName = disclosureInstanceClassName;\n this._members = [];\n this._index = -1;\n this._isRetrieving = false;\n this._hasRetrieved = false;\n this._isGrouped = true;\n }\n\n static get instanceClassName () {\n return 'DisclosuresGroup';\n }\n\n init () {\n this.addAscent(DisclosureEmission.ADDED, this.update.bind(this));\n this.addAscent(DisclosureEmission.RETRIEVE, this.retrieve.bind(this));\n this.addAscent(DisclosureEmission.REMOVED, this.update.bind(this));\n this.descend(DisclosureEmission.GROUP);\n this._isGrouped = this.getAttribute(DisclosureSelector.GROUP) !== 'false';\n this.update();\n }\n\n get proxy () {\n const scope = this;\n\n const proxyAccessors = {\n set index (value) {\n scope.index = value;\n },\n get index () {\n return scope.index;\n },\n get length () {\n return scope.length;\n },\n get current () {\n const current = scope.current;\n return current ? current.proxy : null;\n },\n get members () {\n return scope.members.map((member) => member.proxy);\n },\n get hasFocus () {\n return scope.hasFocus;\n },\n set isGrouped (value) {\n scope.isGrouped = value;\n },\n get isGrouped () {\n return scope.isGrouped;\n }\n };\n\n return completeAssign(super.proxy, proxyAccessors);\n }\n\n validate (member) {\n return true;\n }\n\n getMembers () {\n const members = this.element.getDescendantInstances(this.disclosureInstanceClassName, this.constructor.instanceClassName, true);\n this._members = members.filter(this.validate.bind(this)).filter(member => member.isEnabled && member.isActive);\n const invalids = members.filter(member => !this._members.includes(member));\n invalids.forEach(invalid => invalid.conceal());\n }\n\n retrieve (bypassPrevention = false) {\n if (this._isRetrieving || (this._hasRetrieved && !bypassPrevention)) return;\n this._isRetrieving = true;\n this.request(this._retrieve.bind(this));\n }\n\n _retrieve () {\n this.getMembers();\n this._isRetrieving = false;\n this._hasRetrieved = true;\n\n if (!this.isGrouped) {\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (member.isInitiallyDisclosed) {\n member.disclose(true);\n }\n }\n return;\n }\n\n if (this.hash) {\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (this.hash === member.id) {\n this.index = i;\n this.request(() => { this.ascend(DisclosureEmission.SPOTLIGHT); });\n return i;\n }\n }\n }\n\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (member.isInitiallyDisclosed) {\n this.index = i;\n return i;\n }\n }\n\n return this.getIndex();\n }\n\n update () {\n this.getMembers();\n if (this._hasRetrieved) {\n if (this.isGrouped) this.getIndex();\n }\n }\n\n get members () {\n return this._members;\n }\n\n get length () {\n return this.members ? this.members.length : 0;\n }\n\n getIndex (defaultIndex = -1) {\n this._index = undefined;\n let index = defaultIndex;\n for (let i = 0; i < this.length; i++) {\n if (this.members[i].isDisclosed) {\n index = i;\n break;\n }\n }\n\n this.index = index;\n return index;\n }\n\n get index () {\n return this._index;\n }\n\n set index (value) {\n if (value < -1 || value >= this.length || value === this._index) return;\n this._index = value;\n for (let i = 0; i < this.length; i++) {\n const member = this.members[i];\n if (value === i) {\n if (!member.isDisclosed) member.disclose(true);\n } else {\n if ((this.isGrouped || !this.canUngroup) && member.isDisclosed !== false) member.conceal(true);\n }\n }\n this.apply();\n this.dispatch(DisclosureEvent.CURRENT, this.current);\n }\n\n get current () {\n if (this._index === -1 || isNaN(this._index)) return null;\n return this._members[this._index] || null;\n }\n\n set current (member) {\n this.index = this.members.indexOf(member);\n }\n\n get hasFocus () {\n const current = this.current;\n if (current) return current.hasFocus;\n return false;\n }\n\n set isGrouped (value) {\n const isGrouped = !!value;\n if (this._isGrouped === isGrouped) return;\n this._isGrouped = isGrouped;\n this.setAttribute(DisclosureSelector.GROUP, !!value);\n this.update();\n }\n\n get isGrouped () {\n return this._isGrouped;\n }\n\n get canUngroup () {\n return false;\n }\n\n mutate (attributesNames) {\n if (attributesNames.includes(DisclosureSelector.GROUP)) {\n this.isGrouped = this.getAttribute(DisclosureSelector.GROUP) !== 'false';\n }\n }\n\n apply () {}\n\n dispose () {\n super.dispose();\n this.descend(DisclosureEmission.UNGROUP);\n this._members = null;\n }\n}\n\nexport { DisclosuresGroup };\n","export const DisclosureType = {\n EXPAND: {\n id: 'expanded',\n ariaState: true,\n ariaControls: true,\n canConceal: true,\n canDisable: true,\n requirePrimary: true\n },\n SELECT: {\n id: 'selected',\n ariaState: true,\n ariaControls: true,\n canConceal: false,\n canDisable: true,\n requirePrimary: true\n },\n OPENED: {\n id: 'opened',\n ariaState: false,\n ariaControls: true,\n canConceal: true,\n canDisable: false,\n requirePrimary: false\n }\n};\n","import { DisclosureType } from '../disclosure/disclosure-type.js';\nimport { DisclosureButton } from '../disclosure/disclosure-button.js';\n\nclass CollapseButton extends DisclosureButton {\n constructor () {\n super(DisclosureType.EXPAND);\n }\n\n static get instanceClassName () {\n return 'CollapseButton';\n }\n}\n\nexport { CollapseButton };\n","import ns from '../api/utilities/namespace.js';\n\nexport const CollapseSelector = {\n COLLAPSE: ns.selector('collapse'),\n COLLAPSING: ns.selector('collapsing')\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const EquisizedEmission = {\n CHANGE: ns('equisized', 'change')\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const InjectSvgSelector = {\n INJECT_SVG: `[${ns.attr('inject-svg')}]`\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const ArtworkSelector = {\n ARTWORK_USE: `${ns.selector('artwork')} use`\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const AssessSelector = {\n ASSESS_FILE: `${ns.attr.selector('assess-file')}`,\n DETAIL: `${ns.attr.selector('assess-file')} [class$=\"__detail\"], ${ns.attr.selector('assess-file')} [class*=\"__detail \"]`\n};\n","import ns from '../api/utilities/namespace.js';\n\nconst AssessEmission = {\n UPDATE: ns.emission('assess', 'update'),\n ADDED: ns.emission('assess', 'added')\n};\n\nexport { AssessEmission };\n","import ns from '../api/utilities/namespace.js';\n\nconst ratiosImg = ['32x9', '16x9', '3x2', '4x3', '1x1', '3x4', '2x3'];\nconst ratiosVid = ['16x9', '4x3', '1x1'];\n\nconst ratioSelector = (name, modifiers) => {\n return modifiers.map(modifier => ns.selector(`${name}--${modifier}`)).join(',');\n};\n\nconst deprecatedRatioSelector = `${ns.selector('responsive-img')}, ${ratioSelector('responsive-img', ratiosImg)}, ${ns.selector('responsive-vid')}, ${ratioSelector('responsive-vid', ratiosVid)}`;\n\nexport const RatioSelector = {\n RATIO: `${ns.selector('ratio')}, ${ratioSelector('ratio', ratiosImg)}, ${deprecatedRatioSelector}`\n};\n","import config from './config.js';\nconst api = window[config.namespace];\nexport default api;\n","import ns from '../api/utilities/namespace.js';\n\nexport const PlaceSelector = {\n TOP: ns.selector('placement--top'),\n RIGHT: ns.selector('placement--right'),\n BOTTOM: ns.selector('placement--bottom'),\n LEFT: ns.selector('placement--left')\n};\n","import ns from '../api/utilities/namespace.js';\n\nexport const AlignSelector = {\n START: ns.selector('placement--start'),\n CENTER: ns.selector('placement--center'),\n END: ns.selector('placement--end')\n};\n","export const PlacementPosition = {\n TOP: 'place_top',\n RIGHT: 'place_right',\n BOTTOM: 'place_bottom',\n LEFT: 'place_left'\n};\n","export const PlacementAlign = {\n START: 'align_start',\n CENTER: 'align_center',\n END: 'align_end'\n};\n","export const PlacementMode = {\n AUTO: 'placement_auto',\n MANUAL: 'placement_manual'\n};\n","import api from './script/api/api';\n\nimport { Instance } from './script/api/modules/register/instance.js';\nimport { KeyCodes } from './script/api/modules/register/key-codes.js';\nimport { Breakpoints } from './script/api/modules/register/breakpoints';\nimport { Disclosure } from './script/disclosure/disclosure.js';\nimport { DisclosureButton } from './script/disclosure/disclosure-button.js';\nimport { DisclosuresGroup } from './script/disclosure/disclosures-group.js';\nimport { DisclosureType } from './script/disclosure/disclosure-type.js';\nimport { DisclosureEvent } from './script/disclosure/disclosure-event.js';\nimport { DisclosureSelector } from './script/disclosure/disclosure-selector.js';\nimport { DisclosureEmission } from './script/disclosure/disclosure-emission.js';\nimport { CollapseButton } from './script/collapse/collapse-button.js';\nimport { Collapse } from './script/collapse/collapse.js';\nimport { CollapsesGroup } from './script/collapse/collapses-group.js';\nimport { CollapseSelector } from './script/collapse/collapse-selector.js';\nimport { Equisized } from './script/equisized/equisized.js';\nimport { EquisizedsGroup } from './script/equisized/equisizeds-group.js';\nimport { EquisizedEmission } from './script/equisized/equisized-emission.js';\nimport { Toggle } from './script/action/toggle/toggle';\nimport { RootSelector } from './script/api/modules/stage/root-selector.js';\nimport { RootEmission } from './script/api/modules/stage/root-emission.js';\nimport { InjectSvg } from './script/inject/inject-svg';\nimport { InjectSvgSelector } from './script/inject/inject-svg-selector';\nimport { Artwork } from './script/artwork/artwork';\nimport { ArtworkSelector } from './script/artwork/artwork-selector';\nimport { AssessSelector } from './script/assess/assess-selector';\nimport { AssessFile } from './script/assess/assess-file';\nimport { AssessDetail } from './script/assess/assess-detail';\nimport { AssessEmission } from './script/assess/assess-emission';\nimport { RatioSelector } from './script/ratio/ratio-selector.js';\nimport { Ratio } from './script/ratio/ratio.js';\nimport { Placement } from './script/placement/placement.js';\nimport { PlacementReferent } from './script/placement/placement-referent';\nimport { PlacementAlign } from './script/placement/placement-align';\nimport { PlacementPosition } from './script/placement/placement-position';\nimport { PlacementMode } from './script/placement/placement-mode';\n\napi.core = {\n Instance: Instance,\n Breakpoints: Breakpoints,\n KeyCodes: KeyCodes,\n Disclosure: Disclosure,\n DisclosureButton: DisclosureButton,\n DisclosuresGroup: DisclosuresGroup,\n DisclosureType: DisclosureType,\n DisclosureEvent: DisclosureEvent,\n DisclosureSelector: DisclosureSelector,\n DisclosureEmission: DisclosureEmission,\n Collapse: Collapse,\n CollapseButton: CollapseButton,\n CollapsesGroup: CollapsesGroup,\n CollapseSelector: CollapseSelector,\n RootSelector: RootSelector,\n RootEmission: RootEmission,\n Equisized: Equisized,\n EquisizedEmission: EquisizedEmission,\n Toggle: Toggle,\n EquisizedsGroup: EquisizedsGroup,\n InjectSvg: InjectSvg,\n InjectSvgSelector: InjectSvgSelector,\n Artwork: Artwork,\n ArtworkSelector: ArtworkSelector,\n AssessFile: AssessFile,\n AssessDetail: AssessDetail,\n AssessEmission: AssessEmission,\n AssessSelector: AssessSelector,\n Ratio: Ratio,\n RatioSelector: RatioSelector,\n Placement: Placement,\n PlacementReferent: PlacementReferent,\n PlacementAlign: PlacementAlign,\n PlacementPosition: PlacementPosition,\n PlacementMode: PlacementMode\n};\n\nexport default api;\n","import { Disclosure } from '../disclosure/disclosure.js';\nimport { CollapseSelector } from './collapse-selector.js';\nimport { DisclosureType } from '../disclosure/disclosure-type.js';\nimport { CollapseButton } from './collapse-button.js';\n\n/**\n * Tab coorespond au panel d'un élement Tabs (tab panel)\n * Tab étend disclosure qui ajoute/enleve le modifier --selected,\n * et ajoute/eleve l'attribut hidden, sur le panel\n */\nclass Collapse extends Disclosure {\n constructor () {\n super(DisclosureType.EXPAND, CollapseSelector.COLLAPSE, CollapseButton, 'CollapsesGroup');\n }\n\n static get instanceClassName () {\n return 'Collapse';\n }\n\n init () {\n super.init();\n this.listen('transitionend', this.endCollapsing.bind(this));\n }\n\n endCollapsing (e) {\n if (!this._isCollpasing) return;\n if (this._timeout) clearTimeout(this._timeout);\n this._timeout = null;\n this._isCollpasing = false;\n this.removeClass(CollapseSelector.COLLAPSING);\n if (!this.isDisclosed) {\n if (this.isLegacy) this.style.maxHeight = '';\n }\n }\n\n unbound () {\n if (this.isLegacy) this.style.maxHeight = 'none';\n }\n\n disclose (withhold) {\n if (this.isDisclosed === true || !this.isEnabled) return false;\n this.unbound();\n this.collapsing(() => super.disclose(withhold));\n }\n\n conceal (withhold, preventFocus) {\n if (this.isDisclosed === false) return false;\n this.collapsing(() => super.conceal(withhold, preventFocus));\n }\n\n collapsing (request) {\n this._isCollpasing = true;\n if (this._timeout) clearTimeout(this._timeout);\n this.addClass(CollapseSelector.COLLAPSING);\n this.adjust();\n this.request(() => {\n request();\n this._timeout = setTimeout(this.endCollapsing.bind(this), 500);\n });\n }\n\n adjust () {\n this.setProperty('--collapser', 'none');\n const height = this.node.offsetHeight;\n this.setProperty('--collapse', -height + 'px');\n this.setProperty('--collapser', '');\n }\n\n reset () {\n if (!this.isPristine) this.isDisclosed = false;\n }\n\n _electPrimaries (candidates) {\n const primary = this.element.parent.instances.map(instance => instance.collapsePrimary).filter(button => button !== undefined && candidates.indexOf(button) > -1);\n if (primary.length === 1) return primary;\n candidates = super._electPrimaries(candidates);\n if (candidates.length === 1) return candidates;\n const before = candidates.filter(candidate => candidate.dy >= 0);\n if (before.length > 0) candidates = before;\n if (candidates.length === 1) return candidates;\n const min = Math.min(...candidates.map(candidate => candidate.dy));\n const mins = candidates.filter(candidate => candidate.dy === min);\n if (mins.length > 0) candidates = mins;\n if (candidates.length === 1) return candidates;\n candidates.sort((a, b) => Math.abs(b.dx) - Math.abs(a.dx));\n return candidates;\n }\n}\n\nexport { Collapse };\n","import { DisclosuresGroup } from '../disclosure/disclosures-group.js';\n\nclass CollapsesGroup extends DisclosuresGroup {\n constructor () {\n super('Collapse');\n }\n\n static get instanceClassName () {\n return 'CollapsesGroup';\n }\n\n get canUngroup () {\n return true;\n }\n}\n\nexport { CollapsesGroup };\n","export const RootSelector = {\n ROOT: ':root'\n};\n","import { Instance } from '../api/modules/register/instance.js';\nimport { EquisizedEmission } from './equisized-emission.js';\n\nclass Equisized extends Instance {\n static get instanceClassName () {\n return 'Equisized';\n }\n\n init () {\n this.ascend(EquisizedEmission.CHANGE);\n }\n\n measure () {\n if (this.isLegacy) this.style.width = 'auto';\n return this.getRect().width;\n }\n\n adjust (width) {\n if (this.isLegacy) this.style.width = `${width}px`;\n }\n\n dispose () {\n this.ascend(EquisizedEmission.CHANGE);\n }\n}\n\nexport { Equisized };\n","import { Instance } from '../../api/modules/register/instance.js';\nimport { completeAssign } from '../../api/utilities/property/complete-assign.js';\n\nclass Toggle extends Instance {\n static get instanceClassName () {\n return 'Toggle';\n }\n\n init () {\n this.pressed = this.pressed === 'true';\n this.listenClick();\n }\n\n handleClick () {\n this.toggle();\n }\n\n toggle () {\n this.pressed = this.pressed !== 'true';\n }\n\n get pressed () {\n return this.getAttribute('aria-pressed');\n }\n\n set pressed (value) {\n this.setAttribute('aria-pressed', value ? 'true' : 'false');\n }\n\n get proxy () {\n const scope = this;\n const proxy = Object.assign(super.proxy, {\n toggle: scope.toggle.bind(scope)\n });\n\n const proxyAccessors = {\n get pressed () {\n return scope.pressed;\n },\n set pressed (value) {\n scope.pressed = value;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n}\n\nexport { Toggle };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { EquisizedEmission } from './equisized-emission.js';\n\nclass EquisizedsGroup extends Instance {\n static get instanceClassName () {\n return 'EquisizedsGroup';\n }\n\n init () {\n this.isResizing = true;\n this.isLoading = true;\n this.addAscent(EquisizedEmission.CHANGE, this.resize.bind(this));\n }\n\n load () {\n this.resize();\n }\n\n resize () {\n const equisizeds = this.element.getDescendantInstances('Equisized');\n if (!this.isLegacy) this.style.setProperty('--equisized-width', 'auto');\n\n const width = Math.max(...equisizeds.map(equisized => equisized.measure()));\n if (this.isLegacy) equisizeds.forEach(equisized => equisized.adjust(width));\n else this.style.setProperty('--equisized-width', `${width}px`);\n }\n}\n\nexport { EquisizedsGroup };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { setAttributes } from '../api/utilities/attribute';\n\nclass InjectSvg extends Instance {\n static get instanceClassName () {\n return 'InjectSvg';\n }\n\n init () {\n if (this.node) {\n this.img = this.node.querySelector('img');\n }\n\n if (!this.isLegacy) {\n this.replace();\n }\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n replace: scope.replace.bind(scope),\n restore: scope.restore.bind(scope)\n });\n }\n\n fetch () {\n if (this.img) {\n this.imgID = this.img.getAttribute('id');\n this.imgClass = this.img.getAttribute('class');\n this.imgURL = this.img.getAttribute('src');\n\n fetch(this.imgURL)\n .then(data => data.text())\n .then(response => {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(response, 'text/html');\n this.svg = xmlDoc.querySelector('svg');\n\n if (this.svg) {\n this.replace();\n }\n });\n }\n }\n\n replace () {\n if (!this.svg) {\n this.fetch();\n return;\n }\n\n if (this.imgID && typeof this.imgID !== 'undefined') {\n this.svg.setAttribute('id', this.imgID);\n }\n\n // gestion de la dépréciation\n let name = this.imgURL.match(/[ \\w-]+\\./)[0];\n if (name) {\n name = name.slice(0, -1);\n\n if (['dark', 'light', 'system'].includes(name)) {\n this.svg.innerHTML = this.svg.innerHTML.replaceAll('id=\"artwork-', `id=\"${name}-artwork-`);\n this.svg.innerHTML = this.svg.innerHTML.replaceAll('\"#artwork-', `\"#${name}-artwork-`);\n }\n }\n\n if (this.imgClass && typeof this.imgClass !== 'undefined') {\n this.svg.setAttribute('class', this.imgClass);\n }\n\n if (this.svg.hasAttribute('xmlns:a')) {\n this.svg.removeAttribute('xmlns:a');\n }\n\n this.node.setAttribute('data-fr-inject-svg', true);\n const svgAttributes = {\n 'aria-hidden': true,\n focusable: false\n };\n setAttributes(this.svg, svgAttributes);\n this.node.replaceChild(this.svg, this.img);\n }\n\n restore () {\n if (this.img && this.svg) {\n this.node.setAttribute('data-fr-inject-svg', false);\n this.node.replaceChild(this.img, this.svg);\n }\n }\n}\n\nexport { InjectSvg };\n","const setAttributes = (el, attrs) => {\n Object.keys(attrs).forEach(key => el.setAttribute(key, attrs[key]));\n};\n\nexport { setAttributes };\n","import { Instance } from '../api/modules/register/instance.js';\n\nclass Artwork extends Instance {\n static get instanceClassName () {\n return 'Artwork';\n }\n\n init () {\n if (this.isLegacy) {\n this.replace();\n }\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n replace: scope.replace.bind(scope)\n });\n }\n\n fetch () {\n this.xlink = this.node.getAttribute('href');\n const splitUrl = this.xlink.split('#');\n this.svgUrl = splitUrl[0];\n this.svgName = splitUrl[1];\n\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n const parser = new DOMParser();\n const xmlDoc = parser.parseFromString(xhr.responseText, 'text/html');\n this.realSvgContent = xmlDoc.getElementById(this.svgName);\n if (this.realSvgContent) {\n if (this.realSvgContent.tagName === 'symbol') {\n this.use = xmlDoc.querySelector('use[href=\"#' + this.svgName + '\"]');\n if (this.use) this.node.parentNode.insertBefore(this.use, this.node);\n } else {\n // deprecated svg structure\n this.realSvgContent.classList.add(this.node.classList);\n }\n\n this.replace();\n }\n };\n xhr.open('GET', this.svgUrl);\n xhr.send();\n }\n\n replace () {\n if (!this.realSvgContent) {\n this.fetch();\n return;\n }\n\n this.node.parentNode.replaceChild(this.realSvgContent, this.node);\n }\n}\n\nexport { Artwork };\n","import ns from '../api/utilities/namespace.js';\nimport { Instance } from '../api/modules/register/instance.js';\nimport { AssessEmission } from './assess-emission';\nimport inspector from '../api/inspect/inspector.js';\n\nclass AssessFile extends Instance {\n static get instanceClassName () {\n return 'AssessFile';\n }\n\n init () {\n this.lang = this.getLang(this.node);\n this.href = this.getAttribute('href');\n this.hreflang = this.getAttribute('hreflang');\n this.file = {};\n this.gather();\n this.addAscent(AssessEmission.ADDED, this.update.bind(this));\n this.addDescent(AssessEmission.ADDED, this.update.bind(this));\n }\n\n getFileLength () {\n if (this.href === undefined) {\n this.length = -1;\n return;\n }\n\n fetch(this.href, { method: 'HEAD', mode: 'cors' }).then(response => {\n if (response.ok) {\n this.length = response.headers.get('content-length') || -1;\n if (this.length && this.length === -1) {\n throw new Error('File size unknown' + '\\n Unable to get HTTP header: \"content-length\"');\n }\n this.gather();\n } else {\n throw new Error('Unable to access the resource : Status ' + response.status);\n }\n }).catch((error) => {\n this.length = -1;\n this.gather();\n inspector.warn('Fetch error on assess file : ' + this.href + '\\n ' + error);\n });\n }\n\n mutate (attributeNames) {\n if (attributeNames.indexOf('href') !== -1) {\n this.href = this.getAttribute('href');\n this.getFileLength();\n }\n\n if (attributeNames.indexOf('hreflang') !== -1) {\n this.hreflang = this.getAttribute('hreflang');\n this.gather();\n }\n }\n\n gather () {\n // TODO V2: implémenter async\n if (this.isLegacy) this.length = -1;\n\n if (!this.length) {\n this.getFileLength();\n }\n\n this.details = [];\n\n if (this.href) {\n const extension = this.parseExtension(this.href);\n if (extension) this.details.push(extension.toUpperCase());\n }\n\n if (this.length && this.length !== -1) {\n this.details.push(this.bytesToSize(this.length));\n }\n\n if (this.hreflang) {\n this.details.push(this.getLangDisplayName(this.hreflang));\n }\n\n this.update();\n }\n\n update () {\n if (!this.details) return;\n this.descend(AssessEmission.UPDATE, this.details);\n this.ascend(AssessEmission.UPDATE, this.details);\n }\n\n getLang (elem) {\n // todo: ajouter un listener global de changement de langue\n if (elem.lang) return elem.lang;\n if (document.documentElement === elem) return window.navigator.language;\n return this.getLang(elem.parentElement);\n }\n\n parseExtension (url) {\n const regexExtension = /\\.(\\w{1,9})(?:$|[?#])/;\n return url.match(regexExtension)[0].replace('.', '');\n }\n\n getLangDisplayName (locale) {\n if (this.isLegacy) return locale;\n const displayNames = new Intl.DisplayNames([this.lang], { type: 'language' });\n const name = displayNames.of(locale);\n return name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n bytesToSize (bytes) {\n if (bytes === -1) return null;\n\n let sizeUnits = ['octets', 'ko', 'Mo', 'Go', 'To'];\n if (this.getAttribute(ns.attr('assess-file')) === 'bytes') {\n sizeUnits = ['bytes', 'KB', 'MB', 'GB', 'TB'];\n }\n\n const i = parseInt(Math.floor(Math.log(bytes) / Math.log(1000)), 10);\n if (i === 0) return `${bytes} ${sizeUnits[i]}`;\n\n const size = bytes / (1000 ** i);\n const roundedSize = Math.round((size + Number.EPSILON) * 100) / 100; // arrondi a 2 décimal\n const stringSize = String(roundedSize).replace('.', ',');\n\n return `${stringSize} ${sizeUnits[i]}`;\n }\n}\n\nexport { AssessFile };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { AssessEmission } from './assess-emission';\n\nclass AssessDetail extends Instance {\n static get instanceClassName () {\n return 'AssessDetail';\n }\n\n init () {\n this.addDescent(AssessEmission.UPDATE, this.update.bind(this));\n this.ascend(AssessEmission.ADDED);\n }\n\n update (details) {\n this.node.innerHTML = details.join(' - ');\n }\n}\n\nexport { AssessDetail };\n","import { Instance } from '../api/modules/register/instance.js';\nimport api from '../../api.js';\n\nclass Ratio extends Instance {\n static get instanceClassName () {\n return 'Ratio';\n }\n\n init () {\n if (!api.internals.support.supportAspectRatio()) {\n this.ratio = 16 / 9;\n for (const className in this.classNames) {\n if (this.registration.selector.indexOf(this.classNames[className]) > 0) {\n const ratio = this.classNames[className].split('ratio-');\n if (ratio[1]) {\n this.ratio = ratio[1].split('x')[0] / ratio[1].split('x')[1];\n }\n }\n }\n this.isRendering = true;\n this.update();\n }\n }\n\n render () {\n const width = this.getRect().width;\n if (width !== this.currentWidth) this.update();\n }\n\n update () {\n this.currentWidth = this.getRect().width;\n this.style.height = this.currentWidth / this.ratio + 'px';\n }\n}\n\nexport { Ratio };\n","import { Instance } from '../api/modules/register/instance.js';\nimport { PlaceSelector } from './place-selector';\nimport { AlignSelector } from './align-selector';\nimport { completeAssign } from '../api/utilities/property/complete-assign.js';\nimport { PlacementPosition } from './placement-position';\nimport { PlacementAlign } from './placement-align';\nimport { PlacementMode } from './placement-mode';\n\nclass Placement extends Instance {\n constructor (mode = PlacementMode.AUTO, places = [PlacementPosition.BOTTOM, PlacementPosition.TOP, PlacementPosition.LEFT, PlacementPosition.RIGHT], aligns = [PlacementAlign.CENTER, PlacementAlign.START, PlacementAlign.END], safeAreaMargin = 16) {\n super();\n this._mode = mode;\n this._places = places;\n this._aligns = aligns;\n this._safeAreaMargin = safeAreaMargin;\n this._isShown = false;\n this._x = this._y = 0;\n }\n\n static get instanceClassName () {\n return 'Placement';\n }\n\n init () {\n this.isResizing = true;\n }\n\n get proxy () {\n const scope = this;\n const proxy = Object.assign(super.proxy, {\n show: scope.show.bind(scope),\n hide: scope.hide.bind(scope)\n });\n\n const proxyAccessors = {\n get mode () {\n return scope.mode;\n },\n set mode (value) {\n scope.mode = value;\n },\n get place () {\n return scope.place;\n },\n set place (value) {\n scope.place = value;\n },\n get align () {\n return scope.align;\n },\n set align (value) {\n scope.align = value;\n },\n get isShown () {\n return scope.isShown;\n },\n set isShown (value) {\n scope.isShown = value;\n }\n };\n\n return completeAssign(proxy, proxyAccessors);\n }\n\n get mode () {\n return this._mode;\n }\n\n set mode (value) {\n this._mode = value;\n }\n\n get place () {\n return this._place;\n }\n\n set place (value) {\n if (this._place === value) return;\n switch (this._place) {\n case PlacementPosition.TOP:\n this.removeClass(PlaceSelector.TOP);\n break;\n\n case PlacementPosition.RIGHT:\n this.removeClass(PlaceSelector.RIGHT);\n break;\n\n case PlacementPosition.BOTTOM:\n this.removeClass(PlaceSelector.BOTTOM);\n break;\n\n case PlacementPosition.LEFT:\n this.removeClass(PlaceSelector.LEFT);\n break;\n }\n this._place = value;\n switch (this._place) {\n case PlacementPosition.TOP:\n this.addClass(PlaceSelector.TOP);\n break;\n\n case PlacementPosition.RIGHT:\n this.addClass(PlaceSelector.RIGHT);\n break;\n\n case PlacementPosition.BOTTOM:\n this.addClass(PlaceSelector.BOTTOM);\n break;\n\n case PlacementPosition.LEFT:\n this.addClass(PlaceSelector.LEFT);\n break;\n }\n }\n\n get align () {\n return this._align;\n }\n\n set align (value) {\n if (this._align === value) return;\n switch (this._align) {\n case PlacementAlign.START:\n this.removeClass(AlignSelector.START);\n break;\n\n case PlacementAlign.CENTER:\n this.removeClass(AlignSelector.CENTER);\n break;\n\n case PlacementAlign.END:\n this.removeClass(AlignSelector.END);\n break;\n }\n this._align = value;\n switch (this._align) {\n case PlacementAlign.START:\n this.addClass(AlignSelector.START);\n break;\n\n case PlacementAlign.CENTER:\n this.addClass(AlignSelector.CENTER);\n break;\n\n case PlacementAlign.END:\n this.addClass(AlignSelector.END);\n break;\n }\n }\n\n show () {\n this.isShown = true;\n }\n\n hide () {\n this.isShown = false;\n }\n\n get isShown () {\n return this._isShown;\n }\n\n set isShown (value) {\n if (this._isShown === value || !this.isEnabled) return;\n this.isRendering = value;\n this._isShown = value;\n }\n\n setReferent (referent) {\n this._referent = referent;\n }\n\n render () {\n if (!this._referent) return;\n this.referentRect = this._referent.getRect();\n this.rect = this.getRect();\n this.safeArea = this.getSafeArea();\n\n if (this.mode === PlacementMode.AUTO) {\n this.place = this.getPlace();\n switch (this.place) {\n case PlacementPosition.TOP:\n case PlacementPosition.BOTTOM:\n this.align = this.getHorizontalAlign();\n break;\n\n case PlacementPosition.LEFT:\n case PlacementPosition.RIGHT:\n this.align = this.getVerticalAlign();\n }\n }\n\n let x, y;\n\n switch (this.place) {\n case PlacementPosition.TOP:\n y = this.referentRect.top - this.rect.top - this.rect.height;\n break;\n\n case PlacementPosition.RIGHT:\n x = this.referentRect.left - this.rect.left + this.referentRect.width;\n break;\n\n case PlacementPosition.BOTTOM:\n y = this.referentRect.top - this.rect.top + this.referentRect.height;\n break;\n\n case PlacementPosition.LEFT:\n x = this.referentRect.left - this.rect.left - this.rect.width;\n break;\n }\n\n switch (this.place) {\n case PlacementPosition.TOP:\n case PlacementPosition.BOTTOM:\n switch (this.align) {\n case PlacementAlign.CENTER:\n x = this.referentRect.left - this.rect.left + this.referentRect.width * 0.5 - this.rect.width * 0.5;\n break;\n\n case PlacementAlign.START:\n x = this.referentRect.left - this.rect.left;\n break;\n\n case PlacementAlign.END:\n x = this.referentRect.left - this.rect.left + this.referentRect.width - this.rect.width;\n break;\n }\n break;\n\n case PlacementPosition.RIGHT:\n case PlacementPosition.LEFT:\n switch (this.align) {\n case PlacementAlign.CENTER:\n y = this.referentRect.top - this.rect.top + this.referentRect.height * 0.5 - this.rect.height * 0.5;\n break;\n\n case PlacementAlign.START:\n y = this.referentRect.top - this.rect.top;\n break;\n\n case PlacementAlign.END:\n y = this.referentRect.top - this.rect.top - this.rect.height;\n break;\n }\n break;\n }\n\n this._x += (x + 0.5) | 0;\n this._y += (y + 0.5) | 0;\n this.node.style.transform = `translate(${this._x}px,${this._y}px)`;\n }\n\n getPlace () {\n for (const place of this._places) {\n switch (place) {\n case PlacementPosition.TOP:\n if (this.referentRect.top - this.rect.height > this.safeArea.top) return PlacementPosition.TOP;\n break;\n\n case PlacementPosition.RIGHT:\n if (this.referentRect.right + this.rect.width < this.safeArea.right) return PlacementPosition.RIGHT;\n break;\n\n case PlacementPosition.BOTTOM:\n if (this.referentRect.bottom + this.rect.height < this.safeArea.bottom) return PlacementPosition.BOTTOM;\n break;\n\n case PlacementPosition.LEFT:\n if (this.referentRect.left - this.rect.width > this.safeArea.left) return PlacementPosition.LEFT;\n break;\n }\n }\n\n return this._places[0];\n }\n\n getHorizontalAlign () {\n for (const align of this._aligns) {\n switch (align) {\n case PlacementAlign.CENTER:\n if (this.referentRect.center - this.rect.width * 0.5 > this.safeArea.left && this.referentRect.center + this.rect.width * 0.5 < this.safeArea.right) return PlacementAlign.CENTER;\n break;\n\n case PlacementAlign.START:\n if (this.referentRect.left + this.rect.width < this.safeArea.right) return PlacementAlign.START;\n break;\n\n case PlacementAlign.END:\n if (this.referentRect.right - this.rect.width > this.safeArea.left) return PlacementAlign.END;\n break;\n }\n }\n\n return this._aligns[0];\n }\n\n getVerticalAlign () {\n for (const align of this._aligns) {\n switch (align) {\n case PlacementAlign.CENTER:\n if (this.referentRect.middle - this.rect.height * 0.5 > this.safeArea.top && this.referentRect.middle + this.rect.height * 0.5 < this.safeArea.bottom) return PlacementAlign.CENTER;\n break;\n\n case PlacementAlign.START:\n if (this.referentRect.top + this.rect.height < this.safeArea.bottom) return PlacementAlign.START;\n break;\n\n case PlacementAlign.END:\n if (this.referentRect.bottom - this.rect.height > this.safeArea.top) return PlacementAlign.END;\n break;\n }\n }\n\n return this._aligns[0];\n }\n\n getSafeArea () {\n let element = this.node;\n let isX, isY;\n let top = this._safeAreaMargin;\n let right = window.innerWidth - this._safeAreaMargin;\n let bottom = window.innerHeight - this._safeAreaMargin;\n let left = this._safeAreaMargin;\n\n while (element) {\n if (element === document.body) break;\n element = element.parentElement;\n const style = window.getComputedStyle(element);\n\n const overflow = /(visible|(\\w+))(\\s(visible|(\\w+)))?/.exec(style.overflow);\n isX = overflow[2] !== undefined;\n isY = overflow[3] !== undefined ? overflow[5] !== undefined : overflow[2] !== undefined;\n\n if (!isX && !isY) continue;\n const rect = element.getBoundingClientRect();\n\n if (isX) {\n if (rect.left > left) left = rect.left;\n if (rect.right < right) right = rect.right;\n }\n if (isY) {\n if (rect.top > top) top = rect.top;\n if (rect.bottom < bottom) bottom = rect.bottom;\n }\n }\n\n return {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n center: left + (right - left) * 0.5,\n middle: top + (bottom - top) * 0.5\n };\n }\n\n dispose () {\n this._referent = null;\n super.dispose();\n }\n}\n\nexport { Placement };\n","import { Instance } from '../api/modules/register/instance.js';\n\nclass PlacementReferent extends Instance {\n constructor () {\n super();\n this._isShown = false;\n }\n\n static get instanceClassName () {\n return 'PlacementReferent';\n }\n\n init () {\n this.registration.creator.setReferent(this);\n this._placement = this.registration.creator;\n }\n\n get placement () {\n return this._placement;\n }\n\n get isShown () {\n return this._isShown;\n }\n\n set isShown (value) {\n if (this._isShown === value || !this.isEnabled) return;\n this._isShown = value;\n if (value) this.registration.creator.show();\n else this.registration.creator.hide();\n }\n\n show () {\n this.isShown = true;\n }\n\n hide () {\n this.isShown = false;\n }\n}\n\nexport { PlacementReferent };\n","import api from './index.js';\n\napi.internals.register(api.core.CollapseSelector.COLLAPSE, api.core.Collapse);\napi.internals.register(api.core.InjectSvgSelector.INJECT_SVG, api.core.InjectSvg);\napi.internals.register(api.core.RatioSelector.RATIO, api.core.Ratio);\napi.internals.register(api.core.AssessSelector.ASSESS_FILE, api.core.AssessFile);\napi.internals.register(api.core.AssessSelector.DETAIL, api.core.AssessDetail);\n\nexport default api;\n","export const SchemeValue = {\n SYSTEM: 'system',\n LIGHT: 'light',\n DARK: 'dark'\n};\n","import api from '../../api';\n\nexport const SchemeAttribute = {\n THEME: api.internals.ns.attr('theme'),\n SCHEME: api.internals.ns.attr('scheme'),\n TRANSITION: api.internals.ns.attr('transition')\n};\n","export const SchemeTheme = {\n LIGHT: 'light',\n DARK: 'dark'\n};\n","import api from '../../api';\n\nexport const SchemeEmission = {\n SCHEME: api.internals.ns.emission('scheme', 'scheme'),\n THEME: api.internals.ns.emission('scheme', 'theme'),\n ASK: api.internals.ns.emission('scheme', 'ask')\n};\n","import api from '../../api.js';\n\nconst SchemeEvent = {\n SCHEME: api.internals.ns.event('scheme'),\n THEME: api.internals.ns.event('theme')\n};\n\nexport { SchemeEvent };\n","import api from '../../api.js';\nimport { SchemeValue } from './scheme-value.js';\nimport { SchemeAttribute } from './scheme-attribute.js';\nimport { SchemeTheme } from './scheme-theme.js';\nimport { SchemeEmission } from './scheme-emission.js';\nimport { SchemeEvent } from './scheme-event.js';\n\nclass Scheme extends api.core.Instance {\n constructor () {\n super(false);\n }\n\n static get instanceClassName () {\n return 'Scheme';\n }\n\n init () {\n this.changing = this.change.bind(this);\n\n if (this.hasAttribute(SchemeAttribute.TRANSITION)) {\n this.removeAttribute(SchemeAttribute.TRANSITION);\n this.request(this.restoreTransition.bind(this));\n }\n\n const scheme = api.internals.support.supportLocalStorage() ? localStorage.getItem('scheme') : '';\n const schemeAttr = this.getAttribute(SchemeAttribute.SCHEME);\n\n switch (scheme) {\n case SchemeValue.DARK:\n case SchemeValue.LIGHT:\n case SchemeValue.SYSTEM:\n this.scheme = scheme;\n break;\n\n default:\n switch (schemeAttr) {\n case SchemeValue.DARK:\n this.scheme = SchemeValue.DARK;\n break;\n\n case SchemeValue.LIGHT:\n this.scheme = SchemeValue.LIGHT;\n break;\n\n default:\n this.scheme = SchemeValue.SYSTEM;\n }\n }\n\n this.addAscent(SchemeEmission.ASK, this.ask.bind(this));\n this.addAscent(SchemeEmission.SCHEME, this.apply.bind(this));\n }\n\n get proxy () {\n const scope = this;\n\n const proxyAccessors = {\n get scheme () {\n return scope.scheme;\n },\n set scheme (value) {\n scope.scheme = value;\n }\n };\n\n return api.internals.property.completeAssign(super.proxy, proxyAccessors);\n }\n\n restoreTransition () {\n this.setAttribute(SchemeAttribute.TRANSITION, '');\n }\n\n ask () {\n this.descend(SchemeEmission.SCHEME, this.scheme);\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value) return;\n this._scheme = value;\n switch (value) {\n case SchemeValue.SYSTEM:\n this.listenPreferences();\n break;\n\n case SchemeValue.DARK:\n this.unlistenPreferences();\n this.theme = SchemeTheme.DARK;\n break;\n\n case SchemeValue.LIGHT:\n this.unlistenPreferences();\n this.theme = SchemeTheme.LIGHT;\n break;\n\n default:\n this.scheme = SchemeValue.SYSTEM;\n return;\n }\n\n this.descend(SchemeEmission.SCHEME, value);\n if (api.internals.support.supportLocalStorage()) {\n localStorage.setItem('scheme', value);\n }\n this.setAttribute(SchemeAttribute.SCHEME, value);\n this.dispatch(SchemeEvent.SCHEME, { scheme: this._scheme }, false);\n }\n\n get theme () {\n return this._theme;\n }\n\n set theme (value) {\n if (this._theme === value) return;\n switch (value) {\n case SchemeTheme.LIGHT:\n case SchemeTheme.DARK:\n this._theme = value;\n this.setAttribute(SchemeAttribute.THEME, value);\n this.descend(SchemeEmission.THEME, value);\n this.dispatch(SchemeEvent.THEME, { theme: this._theme }, false);\n document.documentElement.style.colorScheme = value === SchemeTheme.DARK ? 'dark' : '';\n break;\n }\n }\n\n listenPreferences () {\n if (this.isListening) return;\n this.isListening = true;\n this.mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n if (this.mediaQuery.addEventListener) this.mediaQuery.addEventListener('change', this.changing);\n this.change();\n }\n\n unlistenPreferences () {\n if (!this.isListening) return;\n this.isListening = false;\n this.mediaQuery.removeEventListener('change', this.changing);\n this.mediaQuery = null;\n }\n\n change () {\n if (!this.isListening) return;\n this.theme = this.mediaQuery.matches ? SchemeTheme.DARK : SchemeTheme.LIGHT;\n }\n\n mutate (attributeNames) {\n if (attributeNames.indexOf(SchemeAttribute.SCHEME) > -1) this.scheme = this.getAttribute(SchemeAttribute.SCHEME);\n if (attributeNames.indexOf(SchemeAttribute.THEME) > -1) this.theme = this.getAttribute(SchemeAttribute.THEME);\n }\n\n dispose () {\n this.unlistenPreferences();\n }\n}\n\nexport { Scheme };\n","import api from '../../api.js';\n\nexport const SchemeSelector = {\n SCHEME: `:root${api.internals.ns.attr.selector('theme')}, :root${api.internals.ns.attr.selector('scheme')}`,\n SWITCH_THEME: api.internals.ns.selector('switch-theme'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`\n};\n","import api from './api.js';\nimport { Scheme } from './script/scheme/scheme.js';\nimport { SchemeValue } from './script/scheme/scheme-value.js';\nimport { SchemeSelector } from './script/scheme/scheme-selector.js';\nimport { SchemeEmission } from './script/scheme/scheme-emission.js';\nimport { SchemeTheme } from './script/scheme/scheme-theme.js';\nimport { SchemeEvent } from './script/scheme/scheme-event';\n\napi.scheme = {\n Scheme: Scheme,\n SchemeValue: SchemeValue,\n SchemeSelector: SchemeSelector,\n SchemeEmission: SchemeEmission,\n SchemeTheme: SchemeTheme,\n SchemeEvent: SchemeEvent\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.scheme.SchemeSelector.SCHEME, api.scheme.Scheme);\n\nexport default api;\n","import api from '../../api.js';\n\nconst ACCORDION = api.internals.ns.selector('accordion');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const AccordionSelector = {\n GROUP: api.internals.ns.selector('accordions-group'),\n ACCORDION: ACCORDION,\n COLLAPSE: `${ACCORDION} > ${COLLAPSE}, ${ACCORDION} > *:not(${ACCORDION}):not(${COLLAPSE}) > ${COLLAPSE}, ${ACCORDION} > *:not(${ACCORDION}):not(${COLLAPSE}) > *:not(${ACCORDION}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ACCORDION} ${COLLAPSE}`,\n BUTTON: `${ACCORDION}__btn`\n};\n","import api from '../../api.js';\nimport { AccordionSelector } from './accordion-selector';\n\nclass Accordion extends api.core.Instance {\n static get instanceClassName () {\n return 'Accordion';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(AccordionSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { Accordion };\n","import api from '../../api.js';\nimport { AccordionSelector } from './accordion-selector.js';\n\nclass AccordionsGroup extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'AccordionsGroup';\n }\n\n validate (member) {\n const match = member.node.matches(api.internals.legacy.isLegacy ? AccordionSelector.COLLAPSE_LEGACY : AccordionSelector.COLLAPSE);\n return super.validate(member) && match;\n }\n}\n\nexport { AccordionsGroup };\n","import api from './api.js';\nimport { Accordion } from './script/accordion/accordion';\nimport { AccordionsGroup } from './script/accordion/accordions-group.js';\nimport { AccordionSelector } from './script/accordion/accordion-selector.js';\n\napi.accordion = {\n Accordion: Accordion,\n AccordionSelector: AccordionSelector,\n AccordionsGroup: AccordionsGroup\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.accordion.AccordionSelector.GROUP, api.accordion.AccordionsGroup);\napi.internals.register(api.accordion.AccordionSelector.ACCORDION, api.accordion.Accordion);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const ButtonSelector = {\n EQUISIZED_BUTTON: `${api.internals.ns.selector('btns-group--equisized')} ${api.internals.ns.selector('btn')}`,\n EQUISIZED_GROUP: api.internals.ns.selector('btns-group--equisized')\n};\n","import api from './api.js';\nimport { ButtonSelector } from './script/button/button-selector';\n\napi.button = {\n ButtonSelector: ButtonSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.button.ButtonSelector.EQUISIZED_BUTTON, api.core.Equisized);\napi.internals.register(api.button.ButtonSelector.EQUISIZED_GROUP, api.core.EquisizedsGroup);\n\nexport default api;\n","import api from '../../api.js';\n\nclass CardDownload extends api.core.Instance {\n static get instanceClassName () {\n return 'CardDownload';\n }\n\n init () {\n this.addAscent(api.core.AssessEmission.UPDATE, details => {\n this.descend(api.core.AssessEmission.UPDATE, details);\n });\n this.addAscent(api.core.AssessEmission.ADDED, () => {\n this.descend(api.core.AssessEmission.ADDED);\n });\n }\n}\n\nexport { CardDownload };\n","import api from '../../api.js';\n\nexport const CardSelector = {\n DOWNLOAD: api.internals.ns.selector('card--download'),\n DOWNLOAD_DETAIL: `${api.internals.ns.selector('card--download')} ${api.internals.ns.selector('card__end')} ${api.internals.ns.selector('card__detail')}`\n};\n","import api from './api.js';\nimport { CardDownload } from './script/card/card-download.js';\nimport { CardSelector } from './script/card/card-selector.js';\n\napi.card = {\n CardSelector: CardSelector,\n CardDownload: CardDownload\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.card.CardSelector.DOWNLOAD, api.card.CardDownload);\napi.internals.register(api.card.CardSelector.DOWNLOAD_DETAIL, api.core.AssessDetail);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const CheckboxSelector = {\n INPUT: `${api.internals.ns.selector('checkbox-group')} input[type=\"checkbox\"]`\n};\n","import api from '../../api.js';\n\nconst CheckboxEmission = {\n CHANGE: api.internals.ns.emission('checkbox', 'change'),\n RETRIEVE: api.internals.ns.emission('checkbox', 'retrieve')\n};\n\nexport { CheckboxEmission };\n","import api from '../../api.js';\nimport { CheckboxEmission } from './checkbox-emission.js';\n\nclass CheckboxInput extends api.core.Instance {\n static get instanceClassName () {\n return 'CheckboxInput';\n }\n\n constructor () {\n super();\n this._handlingChange = this.handleChange.bind(this);\n }\n\n init () {\n this.node.addEventListener('change', this._handlingChange);\n this.addDescent(CheckboxEmission.RETRIEVE, this._handlingChange);\n this.handleChange();\n }\n\n get isChecked () {\n return this.node.checked;\n }\n\n handleChange () {\n this.ascend(CheckboxEmission.CHANGE, this.node);\n }\n}\n\nexport { CheckboxInput };\n","import api from './api.js';\nimport { CheckboxSelector } from './script/checkbox/checkbox-selector';\nimport { CheckboxEmission } from './script/checkbox/checkbox-emission.js';\nimport { CheckboxInput } from './script/checkbox/checkbox-input.js';\n\napi.checkbox = {\n CheckboxSelector: CheckboxSelector,\n CheckboxEmission: CheckboxEmission,\n CheckboxInput: CheckboxInput\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.checkbox.CheckboxSelector.INPUT, api.checkbox.CheckboxInput);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const SegmentedSelector = {\n SEGMENTED: api.internals.ns.selector('segmented'),\n SEGMENTED_ELEMENTS: api.internals.ns.selector('segmented__elements'),\n SEGMENTED_ELEMENT: api.internals.ns.selector('segmented__element input'),\n SEGMENTED_LEGEND: api.internals.ns.selector('segmented__legend')\n};\n","import api from '../../api.js';\n\nconst SegmentedEmission = {\n ADDED: api.internals.ns.emission('segmented', 'added'),\n REMOVED: api.internals.ns.emission('segmented', 'removed')\n};\n\nexport { SegmentedEmission };\n","import api from '../../api.js';\nimport { SegmentedSelector } from './segmented-selector.js';\nimport { SegmentedEmission } from './segmented-emission.js';\n\nclass Segmented extends api.core.Instance {\n static get instanceClassName () {\n return 'Segmented';\n }\n\n init () {\n this.elements = this.node.querySelector(SegmentedSelector.SEGMENTED_ELEMENTS);\n this.legend = this.node.querySelector(SegmentedSelector.SEGMENTED_LEGEND);\n this.addAscent(SegmentedEmission.ADDED, this.resize.bind(this));\n this.addAscent(SegmentedEmission.REMOVED, this.resize.bind(this));\n this._isLegendInline = this.legend && this.legend.classList.contains(`${api.prefix}-segmented__legend--inline`);\n this.isResizing = true;\n }\n\n resize () {\n const SEGMENTED_VERTICAL = `${api.prefix}-segmented--vertical`;\n const LEGEND_INLINE = `${api.prefix}-segmented__legend--inline`;\n const gapOffset = 16;\n\n this.removeClass(SEGMENTED_VERTICAL);\n\n if (this._isLegendInline) {\n this.legend.classList.add(LEGEND_INLINE);\n\n if (this.node.offsetWidth > this.node.parentNode.offsetWidth || (this.elements.scrollWidth + this.legend.offsetWidth + gapOffset) > this.node.parentNode.offsetWidth) {\n this.legend.classList.remove(LEGEND_INLINE);\n }\n }\n\n if (this.elements.offsetWidth > this.node.parentNode.offsetWidth || this.elements.scrollWidth > this.node.parentNode.offsetWidth) {\n this.addClass(SEGMENTED_VERTICAL);\n } else {\n this.removeClass(SEGMENTED_VERTICAL);\n }\n }\n}\n\nexport { Segmented };\n","import api from '../../api.js';\nimport { SegmentedEmission } from './segmented-emission.js';\n\nclass SegmentedElement extends api.core.Instance {\n static get instanceClassName () {\n return 'SegmentedElement';\n }\n\n init () {\n this.ascend(SegmentedEmission.ADDED);\n }\n\n dispose () {\n this.ascend(SegmentedEmission.REMOVED);\n }\n}\n\nexport { SegmentedElement };\n","import api from './api.js';\nimport { Segmented } from './script/segmented/segmented.js';\nimport { SegmentedElement } from './script/segmented/segmented-element.js';\nimport { SegmentedSelector } from './script/segmented/segmented-selector.js';\nimport { SegmentedEmission } from './script/segmented/segmented-emission.js';\n\napi.segmented = {\n SegmentedSelector: SegmentedSelector,\n SegmentedEmission: SegmentedEmission,\n SegmentedElement: SegmentedElement,\n Segmented: Segmented\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.segmented.SegmentedSelector.SEGMENTED, api.segmented.Segmented);\napi.internals.register(api.segmented.SegmentedSelector.SEGMENTED_ELEMENT, api.segmented.SegmentedElement);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const BreadcrumbSelector = {\n BREADCRUMB: api.internals.ns.selector('breadcrumb'),\n BUTTON: api.internals.ns.selector('breadcrumb__button')\n};\n","import api from '../../api.js';\nimport { BreadcrumbSelector } from './breadcrumb-selector.js';\n\nclass Breadcrumb extends api.core.Instance {\n constructor () {\n super();\n this.count = 0;\n this.focusing = this.focus.bind(this);\n }\n\n static get instanceClassName () {\n return 'Breadcrumb';\n }\n\n init () {\n this.getCollapse();\n this.isResizing = true;\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n focus: scope.focus.bind(scope),\n disclose: scope.collapse.disclose.bind(scope.collapse)\n });\n }\n\n getCollapse () {\n const collapse = this.collapse;\n if (collapse) {\n collapse.listen(api.core.DisclosureEvent.DISCLOSE, this.focusing);\n } else {\n this.addAscent(api.core.DisclosureEmission.ADDED, this.getCollapse.bind(this));\n }\n }\n\n resize () {\n const collapse = this.collapse;\n const links = this.links;\n if (!collapse || !links.length) return;\n\n if (this.isBreakpoint(api.core.Breakpoints.MD)) {\n if (collapse.buttonHasFocus) links[0].focus();\n } else {\n if (links.indexOf(document.activeElement) > -1) collapse.focus();\n }\n }\n\n get links () {\n return [...this.querySelectorAll('a[href]')];\n }\n\n get collapse () {\n return this.element.getDescendantInstances(api.core.Collapse.instanceClassName, null, true)[0];\n }\n\n focus () {\n this.count = 0;\n this._focus();\n }\n\n _focus () {\n const link = this.links[0];\n if (!link) return;\n link.focus();\n this.request(this.verify.bind(this));\n }\n\n verify () {\n this.count++;\n if (this.count > 100) return;\n const link = this.links[0];\n if (!link) return;\n if (document.activeElement !== link) this._focus();\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(BreadcrumbSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { Breadcrumb };\n","import api from './api.js';\nimport { Breadcrumb } from './script/breadcrumb/breadcrumb.js';\nimport { BreadcrumbSelector } from './script/breadcrumb/breadcrumb-selector.js';\n\napi.breadcrumb = {\n BreadcrumbSelector: BreadcrumbSelector,\n Breadcrumb: Breadcrumb\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.breadcrumb.BreadcrumbSelector.BREADCRUMB, api.breadcrumb.Breadcrumb);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TooltipSelector = {\n TOOLTIP: api.internals.ns.selector('tooltip'),\n SHOWN: api.internals.ns.selector('tooltip--shown'),\n HIDDING: api.internals.ns.selector('tooltip--hidding'),\n BUTTON: api.internals.ns.selector('btn--tooltip')\n};\n","import api from '../../api.js';\nimport { TooltipSelector } from './tooltip-selector';\n\nconst TooltipReferentState = {\n FOCUS: 1 << 0,\n HOVER: 1 << 1\n};\n\nclass TooltipReferent extends api.core.PlacementReferent {\n constructor () {\n super();\n this._state = 0;\n }\n\n static get instanceClassName () {\n return 'TooltipReferent';\n }\n\n init () {\n super.init();\n this.listen('focusin', this.focusIn.bind(this));\n this.listen('focusout', this.focusOut.bind(this));\n if (!this.matches(TooltipSelector.BUTTON)) {\n const mouseover = this.mouseover.bind(this);\n this.listen('mouseover', mouseover);\n this.placement.listen('mouseover', mouseover);\n const mouseout = this.mouseout.bind(this);\n this.listen('mouseout', mouseout);\n this.placement.listen('mouseout', mouseout);\n }\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n this.listen('click', this._click.bind(this));\n this.addEmission(api.core.RootEmission.CLICK, this._clickOut.bind(this));\n }\n\n _click () {\n this.focusIn();\n }\n\n _clickOut (target) {\n if (!this.node.contains(target)) this.blur();\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n this.close();\n break;\n }\n }\n\n close () {\n this.state = 0;\n }\n\n get state () {\n return this._state;\n }\n\n set state (value) {\n if (this._state === value) return;\n this.isShown = value > 0;\n this._state = value;\n }\n\n focusIn () {\n this.state |= TooltipReferentState.FOCUS;\n }\n\n focusOut () {\n this.state &= ~TooltipReferentState.FOCUS;\n }\n\n mouseover () {\n this.state |= TooltipReferentState.HOVER;\n }\n\n mouseout () {\n this.state &= ~TooltipReferentState.HOVER;\n }\n}\n\nexport { TooltipReferent };\n","import ns from '../../../../core/script/api/utilities/namespace.js';\n\nconst TooltipEvent = {\n SHOW: ns.event('show'),\n HIDE: ns.event('hide')\n};\n\nexport { TooltipEvent };\n","import api from '../../api.js';\nimport { TooltipReferent } from './tooltip-referent';\nimport { TooltipSelector } from './tooltip-selector';\nimport { TooltipEvent } from './tooltip-event.js';\n\nconst TooltipState = {\n HIDDEN: 'hidden',\n SHOWN: 'shown',\n HIDING: 'hiding'\n};\n\nclass Tooltip extends api.core.Placement {\n constructor () {\n super(api.core.PlacementMode.AUTO, [api.core.PlacementPosition.TOP, api.core.PlacementPosition.BOTTOM], [api.core.PlacementAlign.CENTER, api.core.PlacementAlign.START, api.core.PlacementAlign.END]);\n this.modifier = '';\n this._state = TooltipState.HIDDEN;\n }\n\n static get instanceClassName () {\n return 'Tooltip';\n }\n\n init () {\n super.init();\n this.register(`[aria-describedby=\"${this.id}\"]`, TooltipReferent);\n this.listen('transitionend', this.transitionEnd.bind(this));\n }\n\n transitionEnd () {\n if (this._state === TooltipState.HIDING) {\n this.removeClass(TooltipSelector.SHOWN);\n this.removeClass(TooltipSelector.HIDDING);\n this._state = TooltipState.HIDDEN;\n this.isShown = false;\n }\n }\n\n get isShown () {\n return super.isShown;\n }\n\n set isShown (value) {\n if (!this.isEnabled) return;\n switch (true) {\n case value:\n this._state = TooltipState.SHOWN;\n this.addClass(TooltipSelector.SHOWN);\n this.removeClass(TooltipSelector.HIDDING);\n this.dispatch(TooltipEvent.SHOW);\n super.isShown = true;\n break;\n\n case this.isShown && !value && this._state === TooltipState.SHOWN:\n this._state = TooltipState.HIDING;\n this.addClass(TooltipSelector.HIDDING);\n break;\n\n case this.isShown && !value && this._state === TooltipState.HIDDEN:\n this.dispatch(TooltipEvent.HIDE);\n this.removeClass(TooltipSelector.HIDDING);\n super.isShown = false;\n break;\n }\n }\n\n render () {\n super.render();\n this.rect = this.getRect();\n let x = this.referentRect.center - this.rect.center;\n const limit = this.rect.width * 0.5 - 8;\n if (x < -limit) x = -limit;\n if (x > limit) x = limit;\n this.setProperty('--arrow-x', `${x.toFixed(2)}px`);\n }\n}\n\nexport { Tooltip };\n","import api from './api.js';\nimport { Tooltip } from './script/tooltip/tooltip.js';\nimport { TooltipSelector } from './script/tooltip/tooltip-selector.js';\nimport { TooltipEvent } from './script/tooltip/tooltip-event';\n\napi.tooltip = {\n Tooltip: Tooltip,\n TooltipSelector: TooltipSelector,\n TooltipEvent: TooltipEvent\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tooltip.TooltipSelector.TOOLTIP, api.tooltip.Tooltip);\n\nexport default api;\n","import api from '../../api.js';\n\nclass ToggleInput extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleInput';\n }\n\n get isChecked () {\n return this.node.checked;\n }\n}\n\nexport { ToggleInput };\n","import api from '../../api.js';\nimport { ToggleInput } from './toggle-input.js';\n\nclass ToggleStatusLabel extends api.core.Instance {\n static get instanceClassName () {\n return 'ToggleStatusLabel';\n }\n\n init () {\n this.register(`input[id=\"${this.getAttribute('for')}\"]`, ToggleInput);\n this.update();\n this.isSwappingFont = true;\n }\n\n get proxy () {\n const scope = this;\n return Object.assign(super.proxy, {\n update: scope.update.bind(scope)\n });\n }\n\n get input () {\n return this.getRegisteredInstances('ToggleInput')[0];\n }\n\n update () {\n this.node.style.removeProperty('--toggle-status-width');\n const checked = this.input.isChecked;\n\n const style = getComputedStyle(this.node, ':before');\n let maxWidth = parseFloat(style.width);\n this.input.node.checked = !checked;\n\n const style2 = getComputedStyle(this.node, ':before');\n const width = parseFloat(style2.width);\n if (width > maxWidth) maxWidth = width;\n this.input.node.checked = checked;\n\n this.node.style.setProperty('--toggle-status-width', (maxWidth / 16) + 'rem');\n }\n\n swapFont (families) {\n this.update();\n }\n}\n\nexport { ToggleStatusLabel };\n","import api from '../../api.js';\n\nexport const ToggleSelector = {\n STATUS_LABEL: `${api.internals.ns.selector('toggle__label')}${api.internals.ns.attr.selector('checked-label')}${api.internals.ns.attr.selector('unchecked-label')}`\n};\n","import api from './api.js';\nimport { ToggleStatusLabel } from './script/toggle/toggle-status-label.js';\nimport { ToggleSelector } from './script/toggle/toggle-selector.js';\n// import { ToggleInput } from './script/toggle/toggle-input.js';\n\napi.toggle = {\n ToggleStatusLabel: ToggleStatusLabel,\n ToggleSelector: ToggleSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.toggle.ToggleSelector.STATUS_LABEL, api.toggle.ToggleStatusLabel);\n\nexport default api;\n","import api from '../../api.js';\n\nconst ITEM = api.internals.ns.selector('sidemenu__item');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const SidemenuSelector = {\n LIST: api.internals.ns.selector('sidemenu__list'),\n COLLAPSE: `${ITEM} > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ITEM} ${COLLAPSE}`,\n ITEM: api.internals.ns.selector('sidemenu__item'),\n BUTTON: api.internals.ns.selector('sidemenu__btn')\n};\n","import api from '../../api.js';\nimport { SidemenuSelector } from './sidemenu-selector.js';\n\nclass SidemenuList extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'SidemenuList';\n }\n\n validate (member) {\n return super.validate(member) && member.node.matches(api.internals.legacy.isLegacy ? SidemenuSelector.COLLAPSE_LEGACY : SidemenuSelector.COLLAPSE);\n }\n}\n\nexport { SidemenuList };\n","import api from '../../api.js';\nimport { SidemenuSelector } from './sidemenu-selector.js';\n\nclass SidemenuItem extends api.core.Instance {\n static get instanceClassName () {\n return 'SidemenuItem';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(SidemenuSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { SidemenuItem };\n","import api from './api.js';\nimport { SidemenuList } from './script/sidemenu/sidemenu-list.js';\nimport { SidemenuSelector } from './script/sidemenu/sidemenu-selector.js';\nimport { SidemenuItem } from './script/sidemenu/sidemenu-item';\n\napi.sidemenu = {\n SidemenuList: SidemenuList,\n SidemenuItem: SidemenuItem,\n SidemenuSelector: SidemenuSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.sidemenu.SidemenuSelector.LIST, api.sidemenu.SidemenuList);\napi.internals.register(api.sidemenu.SidemenuSelector.ITEM, api.sidemenu.SidemenuItem);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const ModalSelector = {\n MODAL: api.internals.ns.selector('modal'),\n SCROLL_DIVIDER: api.internals.ns.selector('scroll-divider'),\n BODY: api.internals.ns.selector('modal__body'),\n TITLE: api.internals.ns.selector('modal__title')\n};\n","import api from '../../api.js';\n\nclass ModalButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.OPENED);\n }\n\n static get instanceClassName () {\n return 'ModalButton';\n }\n}\n\nexport { ModalButton };\n","import api from '../../api';\n\nexport const ModalAttribute = {\n CONCEALING_BACKDROP: api.internals.ns.attr('concealing-backdrop')\n};\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\nimport { ModalButton } from './modal-button.js';\nimport { ModalAttribute } from './modal-attribute';\n\nclass Modal extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.OPENED, ModalSelector.MODAL, ModalButton, 'ModalsGroup');\n this._isDecorated = false;\n this.scrolling = this.resize.bind(this, false);\n this.resizing = this.resize.bind(this, true);\n }\n\n static get instanceClassName () {\n return 'Modal';\n }\n\n init () {\n super.init();\n this._isDialog = this.node.tagName === 'DIALOG';\n this.listenClick();\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n this._escape();\n break;\n }\n }\n\n // TODO v2 : passer les tagName d'action en constante\n _escape () {\n const tagName = document.activeElement ? document.activeElement.tagName : undefined;\n const isTooltipReferent = document.activeElement ? document.activeElement.hasAttribute('data-fr-js-tooltip-referent') : false;\n\n if (isTooltipReferent) return;\n\n switch (tagName) {\n case 'INPUT':\n case 'LABEL':\n case 'TEXTAREA':\n case 'SELECT':\n case 'AUDIO':\n case 'VIDEO':\n break;\n\n default:\n if (this.isDisclosed) {\n this.conceal();\n this.focus();\n }\n }\n }\n\n retrieved () {\n this._ensureAccessibleName();\n }\n\n get body () {\n return this.element.getDescendantInstances('ModalBody', 'Modal')[0];\n }\n\n handleClick (e) {\n if (e.target === this.node && this.getAttribute(ModalAttribute.CONCEALING_BACKDROP) !== 'false') this.conceal();\n }\n\n disclose (withhold) {\n if (!super.disclose(withhold)) return false;\n if (this.body) {\n this.body.isResizing = true;\n this.body.resize();\n }\n this.isScrollLocked = true;\n this.setAttribute('aria-modal', 'true');\n this.setAttribute('open', 'true');\n if (!this._isDialog) {\n this.decorateDialog();\n }\n return true;\n }\n\n conceal (withhold, preventFocus) {\n if (!super.conceal(withhold, preventFocus)) return false;\n this.isScrollLocked = false;\n this.removeAttribute('aria-modal');\n this.removeAttribute('open');\n if (this.body) this.body.isResizing = false;\n if (!this._isDialog) {\n this.stripDialog();\n }\n return true;\n }\n\n get isDialog () {\n return this._isDialog;\n }\n\n set isDialog (value) {\n this._isDialog = value;\n }\n\n get isActive () {\n return super.isActive;\n }\n\n set isActive (value) {\n super.isActive = value;\n if (value) this._ensureAccessibleName();\n }\n\n decorateDialog () {\n if (this._isDecorated) return;\n this._isDecorated = true;\n this._hasDialogRole = this.getAttribute('role') === 'dialog';\n if (!this._hasDialogRole) this.setAttribute('role', 'dialog');\n }\n\n stripDialog () {\n if (!this._isDecorated) return;\n this._isDecorated = false;\n if (!this._hasDialogRole) this.removeAttribute('role');\n }\n\n _setAccessibleName (node, append) {\n const id = this.retrieveNodeId(node, append);\n this.warn(`add reference to ${append} for accessible name (aria-labelledby)`);\n this.setAttribute('aria-labelledby', id);\n }\n\n _ensureAccessibleName () {\n if (!this.isActive || !this.isEnabled || (this.isEnabled && (this.hasAttribute('aria-labelledby') || this.hasAttribute('aria-label')))) return;\n this.warn('missing accessible name');\n const title = this.node.querySelector(ModalSelector.TITLE);\n const primary = this.primaryButtons[0];\n\n switch (true) {\n case title !== null:\n this._setAccessibleName(title, 'title');\n break;\n\n case primary !== undefined:\n this.warn('missing required title, fallback to primary button');\n this._setAccessibleName(primary, 'primary');\n break;\n }\n }\n}\n\nexport { Modal };\n","import api from '../../api.js';\n\nconst unordereds = [\n '[tabindex=\"0\"]',\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'details>summary:first-of-type',\n 'details',\n 'iframe'\n];\n\nconst UNORDEREDS = unordereds.join();\n\nconst ordereds = [\n '[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])'\n];\n\nconst ORDEREDS = ordereds.join();\n\nconst IS_STUNNING = false;\n\nconst isFocusable = (element, container) => {\n if (!(element instanceof Element)) return false;\n const windowElement = window.frameElement ? window.frameElement.contentWindow : window;\n const style = windowElement.getComputedStyle(element);\n if (!style) return false;\n if (style.visibility === 'hidden') return false;\n if (container === undefined) container = element;\n\n while (container.contains(element)) {\n if (style.display === 'none') return false;\n element = element.parentElement;\n }\n\n return true;\n};\n\nclass FocusTrap {\n constructor (onTrap, onUntrap) {\n this.element = null;\n this.activeElement = null;\n this.onTrap = onTrap;\n this.onUntrap = onUntrap;\n this.waiting = this.wait.bind(this);\n this.handling = this.handle.bind(this);\n this.focusing = this.maintainFocus.bind(this);\n this.current = null;\n this.window = window.frameElement ? window.frameElement.contentWindow : window;\n }\n\n get trapped () { return this.element !== null; }\n\n trap (element) {\n if (this.trapped) this.untrap();\n\n this.element = element;\n this.isTrapping = true;\n this.wait();\n\n if (this.onTrap) this.onTrap();\n }\n\n wait () {\n if (!isFocusable(this.element)) {\n this.window.requestAnimationFrame(this.waiting);\n return;\n }\n\n this.trapping();\n }\n\n trapping () {\n if (!this.isTrapping) return;\n this.isTrapping = false;\n const focusables = this.focusables;\n if (focusables.length && focusables.indexOf(this.window.document.activeElement) === -1) focusables[0].focus();\n this.element.setAttribute('aria-modal', true);\n this.window.addEventListener('keydown', this.handling);\n this.window.document.body.addEventListener('focus', this.focusing, true);\n\n if (IS_STUNNING) {\n this.stunneds = [];\n this.stun(this.window.document.body);\n }\n }\n\n stun (node) {\n for (const child of node.children) {\n if (child === this.element) continue;\n if (child.contains(this.element)) {\n this.stun(child);\n continue;\n }\n this.stunneds.push(new Stunned(child));\n }\n }\n\n maintainFocus (event) {\n if (!this.element.contains(event.target)) {\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n const first = focusables[0];\n event.preventDefault();\n first.focus();\n }\n }\n\n handle (e) {\n if (e.keyCode !== 9) return;\n\n const focusables = this.focusables;\n if (focusables.length === 0) return;\n\n const first = focusables[0];\n const last = focusables[focusables.length - 1];\n\n const index = focusables.indexOf(this.window.document.activeElement);\n\n if (e.shiftKey) {\n if (!this.element.contains(this.window.document.activeElement) || index < 1) {\n e.preventDefault();\n last.focus();\n } else if (this.window.document.activeElement.tabIndex > 0 || focusables[index - 1].tabIndex > 0) {\n e.preventDefault();\n focusables[index - 1].focus();\n }\n } else {\n if (!this.element.contains(this.window.document.activeElement) || index === focusables.length - 1 || index === -1) {\n e.preventDefault();\n first.focus();\n } else if (this.window.document.activeElement.tabIndex > 0) {\n e.preventDefault();\n focusables[index + 1].focus();\n }\n }\n }\n\n get focusables () {\n let unordereds = api.internals.dom.querySelectorAllArray(this.element, UNORDEREDS);\n\n /**\n * filtrage des radiobutttons de même name (la navigations d'un groupe de radio se fait à la flèche et non pas au tab\n **/\n const radios = api.internals.dom.querySelectorAllArray(this.window.document.documentElement, 'input[type=\"radio\"]');\n\n if (radios.length) {\n const groups = {};\n\n for (const radio of radios) {\n const name = radio.getAttribute('name');\n if (groups[name] === undefined) groups[name] = new RadioButtonGroup(name);\n groups[name].push(radio);\n }\n\n unordereds = unordereds.filter((unordered) => {\n if (unordered.tagName.toLowerCase() !== 'input' || (unordered.getAttribute('type') && unordered.getAttribute('type').toLowerCase() !== 'radio')) return true;\n const name = unordered.getAttribute('name');\n return groups[name].keep(unordered);\n });\n }\n\n const ordereds = api.internals.dom.querySelectorAllArray(this.element, ORDEREDS);\n\n ordereds.sort((a, b) => a.tabIndex - b.tabIndex);\n\n const noDuplicates = unordereds.filter((element) => ordereds.indexOf(element) === -1);\n const concateneds = ordereds.concat(noDuplicates);\n return concateneds.filter((element) => element.tabIndex !== '-1' && isFocusable(element, this.element));\n }\n\n untrap () {\n if (!this.trapped) return;\n this.isTrapping = false;\n\n this.element.removeAttribute('aria-modal');\n this.window.removeEventListener('keydown', this.handling);\n this.window.document.body.removeEventListener('focus', this.focusing, true);\n\n this.element = null;\n\n if (IS_STUNNING) {\n for (const stunned of this.stunneds) stunned.unstun();\n this.stunneds = [];\n }\n\n if (this.onUntrap) this.onUntrap();\n }\n\n dispose () {\n this.untrap();\n }\n}\n\nclass Stunned {\n constructor (element) {\n this.element = element;\n // this.hidden = element.getAttribute('aria-hidden');\n this.inert = element.getAttribute('inert');\n\n // this.element.setAttribute('aria-hidden', true);\n this.element.setAttribute('inert', '');\n }\n\n unstun () {\n /*\n if (this.hidden === null) this.element.removeAttribute('aria-hidden');\n else this.element.setAttribute('aria-hidden', this.hidden);\n */\n\n if (this.inert === null) this.element.removeAttribute('inert');\n else this.element.setAttribute('inert', this.inert);\n }\n}\n\nclass RadioButtonGroup {\n constructor (name) {\n this.name = name;\n this.buttons = [];\n }\n\n push (button) {\n this.buttons.push(button);\n const windowElement = window.frameElement ? window.frameElement.contentWindow : window;\n if (button === windowElement.document.activeElement || button.checked || this.selected === undefined) this.selected = button;\n }\n\n keep (button) {\n return this.selected === button;\n }\n}\n\nexport { FocusTrap };\n","import api from '../../api.js';\nimport { FocusTrap } from './focus-trap.js';\n\nclass ModalsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('Modal', false);\n this.focusTrap = new FocusTrap();\n }\n\n static get instanceClassName () {\n return 'ModalsGroup';\n }\n\n apply (value, initial) {\n super.apply(value, initial);\n if (this.current === null) this.focusTrap.untrap();\n else this.focusTrap.trap(this.current.node);\n }\n}\n\nexport { ModalsGroup };\n","import api from '../../api.js';\nimport { ModalSelector } from './modal-selector.js';\n\nconst OFFSET = 32; // 32px => 8v => 2rem\n\nclass ModalBody extends api.core.Instance {\n static get instanceClassName () {\n return 'ModalBody';\n }\n\n init () {\n this.listen('scroll', this.divide.bind(this));\n }\n\n divide () {\n if (this.node.scrollHeight > this.node.clientHeight) {\n if (this.node.offsetHeight + this.node.scrollTop >= this.node.scrollHeight) {\n this.removeClass(ModalSelector.SCROLL_DIVIDER);\n } else {\n this.addClass(ModalSelector.SCROLL_DIVIDER);\n }\n } else {\n this.removeClass(ModalSelector.SCROLL_DIVIDER);\n }\n }\n\n resize () {\n this.adjust();\n this.request(this.adjust.bind(this));\n }\n\n adjust () {\n const iframe = window.frameElement;\n const windowElement = iframe ? iframe.contentWindow : window;\n const offset = OFFSET * (this.isBreakpoint(api.core.Breakpoints.MD) ? 2 : 1);\n if (this.isLegacy) this.style.maxHeight = `${windowElement.innerHeight - offset}px`;\n else this.style.setProperty('--modal-max-height', `${windowElement.innerHeight - offset}px`);\n this.divide();\n }\n}\n\nexport { ModalBody };\n","import api from './api.js';\n\nimport { Modal } from './script/modal/modal.js';\nimport { ModalButton } from './script/modal/modal-button.js';\nimport { ModalsGroup } from './script/modal/modals-group.js';\nimport { ModalBody } from './script/modal/modal-body.js';\nimport { ModalSelector } from './script/modal/modal-selector.js';\n\napi.modal = {\n Modal: Modal,\n ModalButton: ModalButton,\n ModalBody: ModalBody,\n ModalsGroup: ModalsGroup,\n ModalSelector: ModalSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.modal.ModalSelector.MODAL, api.modal.Modal);\napi.internals.register(api.modal.ModalSelector.BODY, api.modal.ModalBody);\napi.internals.register(api.core.RootSelector.ROOT, api.modal.ModalsGroup);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const PasswordEmission = {\n TOGGLE: api.internals.ns.emission('password', 'toggle'),\n ADJUST: api.internals.ns.emission('password', 'adjust')\n};\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass PasswordToggle extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordToggle';\n }\n\n init () {\n this.listenClick();\n this.ascend(PasswordEmission.ADJUST, this.width);\n this.isSwappingFont = true;\n this._isChecked = this.isChecked;\n }\n\n get width () {\n const style = getComputedStyle(this.node.parentNode);\n return parseInt(style.width);\n }\n\n get isChecked () {\n return this.node.checked;\n }\n\n set isChecked (value) {\n this._isChecked = value;\n this.ascend(PasswordEmission.TOGGLE, value);\n }\n\n handleClick () {\n this.isChecked = !this._isChecked;\n }\n\n swapFont (families) {\n this.ascend(PasswordEmission.ADJUST, this.width);\n }\n}\n\nexport { PasswordToggle };\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass Password extends api.core.Instance {\n static get instanceClassName () {\n return 'Password';\n }\n\n init () {\n this.addAscent(PasswordEmission.TOGGLE, this.toggle.bind(this));\n this.addAscent(PasswordEmission.ADJUST, this.adjust.bind(this));\n }\n\n toggle (value) {\n this.descend(PasswordEmission.TOGGLE, value);\n }\n\n adjust (value) {\n this.descend(PasswordEmission.ADJUST, value);\n }\n}\n\nexport { Password };\n","import api from '../../api.js';\n\nexport const PasswordSelector = {\n PASSWORD: api.internals.ns.selector('password'),\n INPUT: api.internals.ns.selector('password__input'),\n LABEL: api.internals.ns.selector('password__label'),\n TOOGLE: `${api.internals.ns.selector('password__checkbox')} input[type=\"checkbox\"]`\n};\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass PasswordInput extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordInput';\n }\n\n init () {\n this.addDescent(PasswordEmission.TOGGLE, this.toggle.bind(this));\n this._isRevealed = this.hasAttribute('type') === 'password';\n this.listen('keydown', this.capslock.bind(this)); // for capslock enabled\n this.listen('keyup', this.capslock.bind(this)); // for capslock desabled\n }\n\n toggle (value) {\n this.isRevealed = value;\n this.setAttribute('type', value ? 'text' : 'password');\n }\n\n get isRevealed () {\n return this._isRevealed;\n }\n\n capslock (event) {\n if (event && typeof event.getModifierState !== 'function') return;\n if (event.getModifierState('CapsLock')) {\n this.node.parentNode.setAttribute(api.internals.ns.attr('capslock'), '');\n } else {\n this.node.parentNode.removeAttribute(api.internals.ns.attr('capslock'));\n }\n }\n\n set isRevealed (value) {\n this._isRevealed = value;\n this.setAttribute('type', value ? 'text' : 'password');\n }\n}\n\nexport { PasswordInput };\n","import api from '../../api.js';\nimport { PasswordEmission } from './password-emission.js';\n\nclass PasswordLabel extends api.core.Instance {\n static get instanceClassName () {\n return 'PasswordLabel';\n }\n\n init () {\n this.addDescent(PasswordEmission.ADJUST, this.adjust.bind(this));\n }\n\n adjust (value) {\n const valueREM = Math.ceil(value / 16);\n this.node.style.paddingRight = valueREM + 'rem';\n }\n}\n\nexport { PasswordLabel };\n","import api from './api.js';\nimport { PasswordToggle } from './script/password/password-toggle.js';\nimport { Password } from './script/password/password.js';\nimport { PasswordSelector } from './script/password/password-selector.js';\nimport { PasswordInput } from './script/password/password-input.js';\nimport { PasswordLabel } from './script/password/password-label.js';\n\napi.password = {\n Password: Password,\n PasswordToggle: PasswordToggle,\n PasswordSelector: PasswordSelector,\n PasswordInput: PasswordInput,\n PasswordLabel: PasswordLabel\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.password.PasswordSelector.INPUT, api.password.PasswordInput);\napi.internals.register(api.password.PasswordSelector.PASSWORD, api.password.Password);\napi.internals.register(api.password.PasswordSelector.TOOGLE, api.password.PasswordToggle);\napi.internals.register(api.password.PasswordSelector.LABEL, api.password.PasswordLabel);\n\nexport default api;\n","import api from '../../api.js';\n\nconst ITEM = api.internals.ns.selector('nav__item');\nconst COLLAPSE = api.internals.ns.selector('collapse');\n\nexport const NavigationSelector = {\n NAVIGATION: api.internals.ns.selector('nav'),\n COLLAPSE: `${ITEM} > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}, ${ITEM} > *:not(${ITEM}):not(${COLLAPSE}) > *:not(${ITEM}):not(${COLLAPSE}) > ${COLLAPSE}`,\n COLLAPSE_LEGACY: `${ITEM} ${COLLAPSE}`,\n ITEM: ITEM,\n ITEM_RIGHT: `${ITEM}--align-right`,\n MENU: api.internals.ns.selector('menu'),\n BUTTON: api.internals.ns.selector('nav__btn'),\n TRANSLATE_BUTTON: api.internals.ns.selector('translate__btn')\n};\n","import api from '../../api.js';\nimport { NavigationSelector } from './navigation-selector.js';\n\nclass NavigationItem extends api.core.Instance {\n constructor () {\n super();\n this._isRightAligned = false;\n }\n\n static get instanceClassName () {\n return 'NavigationItem';\n }\n\n init () {\n this.addAscent(api.core.DisclosureEmission.ADDED, this.calculate.bind(this));\n this.addAscent(api.core.DisclosureEmission.REMOVED, this.calculate.bind(this));\n this.isResizing = true;\n this.calculate();\n }\n\n resize () {\n this.calculate();\n }\n\n calculate () {\n const collapse = this.element.getDescendantInstances(api.core.Collapse.instanceClassName, null, true)[0];\n if (collapse && this.isBreakpoint(api.core.Breakpoints.LG) && collapse.element.node.matches(NavigationSelector.MENU)) {\n const right = this.element.node.parentElement.getBoundingClientRect().right; // todo: ne fonctionne que si la nav fait 100% du container\n const width = collapse.element.node.getBoundingClientRect().width;\n const left = this.element.node.getBoundingClientRect().left;\n this.isRightAligned = left + width > right;\n } else this.isRightAligned = false;\n }\n\n get isRightAligned () {\n return this._isRightAligned;\n }\n\n set isRightAligned (value) {\n if (this._isRightAligned === value) return;\n this._isRightAligned = value;\n if (value) api.internals.dom.addClass(this.element.node, NavigationSelector.ITEM_RIGHT);\n else api.internals.dom.removeClass(this.element.node, NavigationSelector.ITEM_RIGHT);\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && (button.hasClass(NavigationSelector.BUTTON) || button.hasClass(NavigationSelector.TRANSLATE_BUTTON)));\n return buttons[0];\n }\n}\n\nexport { NavigationItem };\n","export const NavigationMousePosition = {\n NONE: -1,\n INSIDE: 0,\n OUTSIDE: 1\n};\n","import api from '../../api.js';\nimport { NavigationSelector } from './navigation-selector.js';\nimport { NavigationMousePosition } from './navigation-mouse-position.js';\n\nclass Navigation extends api.core.CollapsesGroup {\n static get instanceClassName () {\n return 'Navigation';\n }\n\n init () {\n super.init();\n this.clicked = false;\n this.out = false;\n this.addEmission(api.core.RootEmission.CLICK, this._handleRootClick.bind(this));\n this.listen('mousedown', this.handleMouseDown.bind(this));\n this.addEmission(api.core.RootEmission.KEYDOWN, this._keydown.bind(this));\n this.listenClick({ capture: true });\n this.isResizing = true;\n }\n\n validate (member) {\n return super.validate(member) && member.element.node.matches(api.internals.legacy.isLegacy ? NavigationSelector.COLLAPSE_LEGACY : NavigationSelector.COLLAPSE);\n }\n\n get hasOpenedMenu () {\n return this.isBreakpoint(api.core.Breakpoints.LG) && this.index > -1;\n }\n\n _keydown (keyCode) {\n switch (keyCode) {\n case api.core.KeyCodes.ESCAPE:\n if (!this.hasOpenedMenu) return;\n this.index = -1;\n break;\n\n case api.core.KeyCodes.TAB:\n if (!this.hasOpenedMenu) return;\n this.request(() => {\n if (this.current.node.contains(document.activeElement)) return;\n this.index = -1;\n });\n break;\n }\n }\n\n handleMouseDown (e) {\n if (!this.hasOpenedMenu) return;\n this.position = this.current.node.contains(e.target) ? NavigationMousePosition.INSIDE : NavigationMousePosition.OUTSIDE;\n this.requestPosition();\n }\n\n handleClick (e) {\n if (e.target.matches('a, button') && !e.target.matches('[aria-controls]') && !e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)) {\n this.index = -1;\n }\n }\n\n _handleRootClick (target) {\n if (!this.isBreakpoint(api.core.Breakpoints.LG)) return;\n if (!this.node.contains(target)) {\n this.out = true;\n this.requestPosition();\n }\n }\n\n requestPosition () {\n if (this.isRequesting) return;\n this.isRequesting = true;\n this.request(this.getPosition.bind(this));\n }\n\n getPosition () {\n if (this.out) {\n switch (this.position) {\n case NavigationMousePosition.OUTSIDE:\n this.index = -1;\n break;\n\n case NavigationMousePosition.INSIDE:\n if (this.current && !this.current.node.contains(document.activeElement)) this.current.focus();\n break;\n\n default:\n if (this.index > -1 && !this.current.hasFocus) this.index = -1;\n }\n }\n\n this.request(this.requested.bind(this));\n }\n\n requested () {\n this.position = NavigationMousePosition.NONE;\n this.out = false;\n this.isRequesting = false;\n }\n\n get index () { return super.index; }\n\n set index (value) {\n if (value === -1 && this.current && this.current.hasFocus) this.current.focus();\n super.index = value;\n }\n\n get canUngroup () {\n return !this.isBreakpoint(api.core.Breakpoints.LG);\n }\n\n resize () {\n this.update();\n }\n}\n\nexport { Navigation };\n","import api from './api.js';\nimport { NavigationItem } from './script/navigation/navigation-item.js';\nimport { Navigation } from './script/navigation/navigation.js';\nimport { NavigationSelector } from './script/navigation/navigation-selector.js';\nimport { NavigationMousePosition } from './script/navigation/navigation-mouse-position.js';\n\napi.navigation = {\n Navigation: Navigation,\n NavigationItem: NavigationItem,\n NavigationMousePosition: NavigationMousePosition,\n NavigationSelector: NavigationSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.navigation.NavigationSelector.NAVIGATION, api.navigation.Navigation);\napi.internals.register(api.navigation.NavigationSelector.ITEM, api.navigation.NavigationItem);\n\nexport default api;\n","import api from '../../api.js';\n\n/**\n * TabButton correspond au bouton cliquable qui change le panel\n * TabButton étend de DisclosureButton qui ajoute/enelve l'attribut aria-selected,\n * Et change l'attributte tabindex a 0 si le boutton est actif (value=true), -1 s'il n'est pas actif (value=false)\n */\nclass TabButton extends api.core.DisclosureButton {\n constructor () {\n super(api.core.DisclosureType.SELECT);\n }\n\n static get instanceClassName () {\n return 'TabButton';\n }\n\n handleClick (e) {\n super.handleClick(e);\n this.focus();\n }\n\n apply (value) {\n super.apply(value);\n if (this.isPrimary) {\n this.setAttribute('tabindex', value ? '0' : '-1');\n if (value) {\n if (this.list) this.list.focalize(this);\n }\n }\n }\n\n get list () {\n return this.element.getAscendantInstance('TabsList', 'TabsGroup');\n }\n}\n\nexport { TabButton };\n","import api from '../../api.js';\n\nexport const TabSelector = {\n TAB: api.internals.ns.selector('tabs__tab'),\n GROUP: api.internals.ns.selector('tabs'),\n PANEL: api.internals.ns.selector('tabs__panel'),\n LIST: api.internals.ns.selector('tabs__list'),\n SHADOW: api.internals.ns.selector('tabs__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('tabs__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('tabs__shadow--right'),\n PANEL_START: api.internals.ns.selector('tabs__panel--direction-start'),\n PANEL_END: api.internals.ns.selector('tabs__panel--direction-end')\n};\n","export const TabPanelDirection = {\n START: 'direction-start',\n END: 'direction-end',\n NONE: 'none'\n};\n","import api from '../../api.js';\nimport { TabButton } from './tab-button.js';\nimport { TabSelector } from './tab-selector.js';\nimport { TabPanelDirection } from './tab-panel-direction.js';\n\n/**\n * Tab coorespond au panel d'un élement Tabs (tab panel)\n * Tab étend disclosure qui ajoute/enleve le modifier --selected,\n * et ajoute/eleve l'attribut hidden, sur le panel\n */\nclass TabPanel extends api.core.Disclosure {\n constructor () {\n super(api.core.DisclosureType.SELECT, TabSelector.PANEL, TabButton, 'TabsGroup');\n this._direction = TabPanelDirection.NONE;\n this._isPreventingTransition = false;\n }\n\n static get instanceClassName () {\n return 'TabPanel';\n }\n\n get direction () {\n return this._direction;\n }\n\n set direction (value) {\n if (value === this._direction) return;\n switch (this._direction) {\n case TabPanelDirection.START:\n this.removeClass(TabSelector.PANEL_START);\n break;\n\n case TabPanelDirection.END:\n this.removeClass(TabSelector.PANEL_END);\n break;\n\n case TabPanelDirection.NONE:\n break;\n\n default:\n return;\n }\n\n this._direction = value;\n\n switch (this._direction) {\n case TabPanelDirection.START:\n this.addClass(TabSelector.PANEL_START);\n break;\n\n case TabPanelDirection.END:\n this.addClass(TabSelector.PANEL_END);\n break;\n }\n }\n\n get isPreventingTransition () {\n return this._isPreventingTransition;\n }\n\n set isPreventingTransition (value) {\n if (this._isPreventingTransition === value) return;\n if (value) this.addClass(api.internals.motion.TransitionSelector.NONE);\n else this.removeClass(api.internals.motion.TransitionSelector.NONE);\n this._isPreventingTransition = value === true;\n }\n\n translate (direction, initial) {\n this.isPreventingTransition = initial;\n this.direction = direction;\n }\n\n reset () {\n if (this.group) this.group.retrieve(true);\n }\n\n _electPrimaries (candidates) {\n if (!this.group || !this.group.list) return [];\n return super._electPrimaries(candidates).filter(candidate => this.group.list.node.contains(candidate.node));\n }\n}\n\nexport { TabPanel };\n","export const TabKeys = {\n LEFT: 'tab_keys_left',\n RIGHT: 'tab_keys_right',\n HOME: 'tab_keys_home',\n END: 'tab_keys_end'\n};\n","import api from '../../api.js';\n\nexport const TabEmission = {\n PRESS_KEY: api.internals.ns.emission('tab', 'press_key'),\n LIST_HEIGHT: api.internals.ns.emission('tab', 'list_height')\n};\n","import api from '../../api.js';\nimport { TabPanelDirection } from './tab-panel-direction.js';\nimport { TabKeys } from './tab-keys';\nimport { TabEmission } from './tab-emission';\n\n/**\n* TabGroup est la classe étendue de DiscosuresGroup\n* Correspond à un objet Tabs avec plusieurs tab-button & Tab (panel)\n*/\nclass TabsGroup extends api.core.DisclosuresGroup {\n constructor () {\n super('TabPanel');\n }\n\n static get instanceClassName () {\n return 'TabsGroup';\n }\n\n init () {\n super.init();\n\n this.listen('transitionend', this.transitionend.bind(this));\n this.addAscent(TabEmission.PRESS_KEY, this.pressKey.bind(this));\n this.addAscent(TabEmission.LIST_HEIGHT, this.setListHeight.bind(this));\n this.isRendering = true;\n }\n\n getIndex (defaultIndex = 0) {\n super.getIndex(defaultIndex);\n }\n\n get list () {\n return this.element.getDescendantInstances('TabsList', 'TabsGroup', true)[0];\n }\n\n setListHeight (value) {\n this.listHeight = value;\n }\n\n transitionend (e) {\n this.isPreventingTransition = true;\n }\n\n get buttonHasFocus () {\n return this.members.some(member => member.buttonHasFocus);\n }\n\n pressKey (key) {\n switch (key) {\n case TabKeys.LEFT:\n this.pressLeft();\n break;\n\n case TabKeys.RIGHT:\n this.pressRight();\n break;\n\n case TabKeys.HOME:\n this.pressHome();\n break;\n\n case TabKeys.END:\n this.pressEnd();\n break;\n }\n }\n\n /**\n * Selectionne l'element suivant de la liste si on est sur un bouton\n * Si on est à la fin on retourne au début\n */\n pressRight () {\n if (this.buttonHasFocus) {\n if (this.index < this.length - 1) {\n this.index++;\n } else {\n this.index = 0;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne l'element précédent de la liste si on est sur un bouton\n * Si on est au debut retourne a la fin\n */\n pressLeft () {\n if (this.buttonHasFocus) {\n if (this.index > 0) {\n this.index--;\n } else {\n this.index = this.length - 1;\n }\n\n this.focus();\n }\n };\n\n /**\n * Selectionne le permier element de la liste si on est sur un bouton\n */\n pressHome () {\n if (this.buttonHasFocus) {\n this.index = 0;\n this.focus();\n }\n };\n\n /**\n * Selectionne le dernier element de la liste si on est sur un bouton\n */\n pressEnd () {\n if (this.buttonHasFocus) {\n this.index = this.length - 1;\n this.focus();\n }\n };\n\n focus () {\n if (this.current) {\n this.current.focus();\n }\n }\n\n apply () {\n for (let i = 0; i < this._index; i++) this.members[i].translate(TabPanelDirection.START);\n if (this.current) this.current.translate(TabPanelDirection.NONE);\n for (let i = this._index + 1; i < this.length; i++) this.members[i].translate(TabPanelDirection.END);\n this.isPreventingTransition = false;\n }\n\n get isPreventingTransition () {\n return this._isPreventingTransition;\n }\n\n set isPreventingTransition (value) {\n if (this._isPreventingTransition === value) return;\n if (value) this.addClass(api.internals.motion.TransitionSelector.NONE);\n else this.removeClass(api.internals.motion.TransitionSelector.NONE);\n this._isPreventingTransition = value === true;\n }\n\n render () {\n if (this.current === null) return;\n this.node.scrollTop = 0;\n this.node.scrollLeft = 0;\n const paneHeight = Math.round(this.current.node.offsetHeight);\n if (this.panelHeight === paneHeight) return;\n this.panelHeight = paneHeight;\n const offsetNegativeMargin = 4;\n this.style.setProperty('--tabs-height', (this.panelHeight + this.listHeight - offsetNegativeMargin) + 'px');\n }\n}\n\nexport { TabsGroup };\n","import api from '../../api.js';\nimport { TabSelector } from './tab-selector';\nimport { TabKeys } from './tab-keys';\nimport { TabEmission } from './tab-emission';\n\nconst FOCALIZE_OFFSET = 16;\nconst SCROLL_OFFSET = 16; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TabsList extends api.core.Instance {\n static get instanceClassName () {\n return 'TabsList';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.listenKey(api.core.KeyCodes.RIGHT, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.RIGHT), true, true);\n this.listenKey(api.core.KeyCodes.LEFT, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.LEFT), true, true);\n this.listenKey(api.core.KeyCodes.HOME, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.HOME), true, true);\n this.listenKey(api.core.KeyCodes.END, this.ascend.bind(this, TabEmission.PRESS_KEY, TabKeys.END), true, true);\n this.isResizing = true;\n }\n\n focalize (btn) {\n const btnRect = btn.getRect();\n const listRect = this.getRect();\n const actualScroll = this.node.scrollLeft;\n if (btnRect.left < listRect.left) this.node.scrollTo(actualScroll - listRect.left + btnRect.left - FOCALIZE_OFFSET, 0);\n else if (btnRect.right > listRect.right) this.node.scrollTo(actualScroll - listRect.right + btnRect.right + FOCALIZE_OFFSET, 0);\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n this.apply();\n }\n\n apply () {\n if (this._isScrolling) {\n this.addClass(TabSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TabSelector.SHADOW_RIGHT);\n this.removeClass(TabSelector.SHADOW_LEFT);\n this.removeClass(TabSelector.SHADOW);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const scrollLeft = Math.abs(this.node.scrollLeft);\n const isMin = scrollLeft <= SCROLL_OFFSET;\n const max = this.node.scrollWidth - this.node.clientWidth - SCROLL_OFFSET;\n const isMax = Math.abs(scrollLeft) >= max;\n const isRtl = getComputedStyle(this.node).direction === 'rtl';\n const minSelector = isRtl ? TabSelector.SHADOW_RIGHT : TabSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TabSelector.SHADOW_LEFT : TabSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.node.scrollWidth > this.node.clientWidth + SCROLL_OFFSET;\n const height = this.getRect().height;\n this.setProperty('--tabs-list-height', `${height}px`);\n this.ascend(TabEmission.LIST_HEIGHT, height);\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nexport { TabsList };\n","import api from './api.js';\nimport { TabPanel } from './script/tab/tab-panel.js';\nimport { TabButton } from './script/tab/tab-button.js';\nimport { TabsGroup } from './script/tab/tabs-group.js';\nimport { TabsList } from './script/tab/tabs-list.js';\nimport { TabSelector } from './script/tab/tab-selector.js';\nimport { TabEmission } from './script/tab/tab-emission.js';\n\napi.tab = {\n TabPanel: TabPanel,\n TabButton: TabButton,\n TabsGroup: TabsGroup,\n TabsList: TabsList,\n TabSelector: TabSelector,\n TabEmission: TabEmission\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tab.TabSelector.PANEL, api.tab.TabPanel);\napi.internals.register(api.tab.TabSelector.GROUP, api.tab.TabsGroup);\napi.internals.register(api.tab.TabSelector.LIST, api.tab.TabsList);\n\nexport default api;\n","import api from '../../api.js';\n\nconst TagEvent = {\n DISMISS: api.internals.ns.event('dismiss')\n};\n\nexport { TagEvent };\n","import api from '../../api.js';\nimport { TagEvent } from './tag-event';\n\nclass TagDismissible extends api.core.Instance {\n static get instanceClassName () {\n return 'TagDismissible';\n }\n\n init () {\n this.listenClick();\n }\n\n handleClick () {\n this.focusClosest();\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n this.request(this.verify.bind(this));\n break;\n\n default:\n this.remove();\n }\n\n this.dispatch(TagEvent.DISMISS);\n }\n\n verify () {\n if (document.body.contains(this.node)) this.warn(`a TagDismissible has just been dismissed and should be removed from the dom. In ${api.mode} mode, the api doesn't handle dom modification. An event ${TagEvent.DISMISS} is dispatched by the element to trigger the removal`);\n }\n}\n\nexport { TagDismissible };\n","import api from '../../api.js';\n\nexport const TagSelector = {\n PRESSABLE: `${api.internals.ns.selector('tag')}[aria-pressed]`,\n DISMISSIBLE: `${api.internals.ns.selector('tag--dismiss')}`\n};\n","import api from './api.js';\nimport { TagDismissible } from './script/tag/tag-dismissible';\nimport { TagSelector } from './script/tag/tag-selector';\nimport { TagEvent } from './script/tag/tag-event';\n\napi.tag = {\n TagDismissible: TagDismissible,\n TagSelector: TagSelector,\n TagEvent: TagEvent\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tag.TagSelector.PRESSABLE, api.core.Toggle);\napi.internals.register(api.tag.TagSelector.DISMISSIBLE, api.tag.TagDismissible);\n\nexport default api;\n","import api from '../../api.js';\n\nconst TRANSCRIPTION = api.internals.ns.selector('transcription');\n\nexport const TranscriptionSelector = {\n TRANSCRIPTION: TRANSCRIPTION,\n BUTTON: `${TRANSCRIPTION}__btn`\n};\n","import api from '../../api.js';\nimport { TranscriptionSelector } from './transcription-selector';\n\nclass Transcription extends api.core.Instance {\n static get instanceClassName () {\n return 'Transcription';\n }\n\n get collapsePrimary () {\n const buttons = this.element.children.map(child => child.getInstance('CollapseButton')).filter(button => button !== null && button.hasClass(TranscriptionSelector.BUTTON));\n return buttons[0];\n }\n}\n\nexport { Transcription };\n","import api from './api.js';\nimport { Transcription } from './script/accordion/transcription';\nimport { TranscriptionSelector } from './script/accordion/transcription-selector.js';\n\napi.transcription = {\n Transcription: Transcription,\n TranscriptionSelector: TranscriptionSelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.transcription.TranscriptionSelector.TRANSCRIPTION, api.transcription.Transcription);\n\nexport default api;\n","import api from '../../api.js';\n\nclass TileDownload extends api.core.Instance {\n static get instanceClassName () {\n return 'TileDownload';\n }\n\n init () {\n this.addAscent(api.core.AssessEmission.UPDATE, details => {\n this.descend(api.core.AssessEmission.UPDATE, details);\n });\n this.addAscent(api.core.AssessEmission.ADDED, () => {\n this.descend(api.core.AssessEmission.ADDED);\n });\n }\n}\n\nexport { TileDownload };\n","import api from '../../api.js';\n\nexport const TileSelector = {\n DOWNLOAD: api.internals.ns.selector('tile--download'),\n DOWNLOAD_DETAIL: `${api.internals.ns.selector('tile--download')} ${api.internals.ns.selector('tile__detail')}`\n};\n","import api from './api.js';\nimport { TileDownload } from './script/tile/tile-download.js';\nimport { TileSelector } from './script/tile/tile-selector.js';\n\napi.tile = {\n TileSelector: TileSelector,\n TileDownload: TileDownload\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.tile.TileSelector.DOWNLOAD, api.tile.TileDownload);\napi.internals.register(api.tile.TileSelector.DOWNLOAD_DETAIL, api.core.AssessDetail);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const RangeSelector = {\n RANGE: api.internals.ns.selector('range'),\n RANGE_SM: api.internals.ns.selector('range--sm'),\n RANGE_STEP: api.internals.ns.selector('range--step'),\n RANGE_DOUBLE: api.internals.ns.selector('range--double'),\n RANGE_DOUBLE_STEP: api.internals.ns.selector('range--double') + api.internals.ns.selector('range--step'),\n RANGE_INPUT: api.internals.ns.selector('range input[type=range]:nth-of-type(1)'),\n RANGE_INPUT2: `${api.internals.ns.selector('range--double')} input[type=range]:nth-of-type(2)`,\n RANGE_OUTPUT: api.internals.ns.selector('range__output'),\n RANGE_MIN: api.internals.ns.selector('range__min'),\n RANGE_MAX: api.internals.ns.selector('range__max'),\n RANGE_PREFIX: api.internals.ns.attr('prefix'),\n RANGE_SUFFIX: api.internals.ns.attr('suffix')\n};\n","import api from '../../api.js';\n\nexport const RangeEmission = {\n VALUE: api.internals.ns.emission('range', 'value'),\n VALUE2: api.internals.ns.emission('range', 'value2'),\n OUTPUT: api.internals.ns.emission('range', 'output'),\n CONSTRAINTS: api.internals.ns.emission('range', 'constraints'),\n MIN: api.internals.ns.emission('range', 'min'),\n MAX: api.internals.ns.emission('range', 'max'),\n STEP: api.internals.ns.emission('range', 'step'),\n PREFIX: api.internals.ns.emission('range', 'prefix'),\n SUFFIX: api.internals.ns.emission('range', 'suffix'),\n DISABLED: api.internals.ns.emission('range', 'disabled'),\n ENABLE_POINTER: api.internals.ns.emission('range', 'enable_pointer')\n};\n","class RangeModel {\n constructor () {\n this._width = 0;\n this._min = 0;\n this._max = 0;\n this._value = 0;\n this._thumbSize = 24;\n this._innerWidth = 0;\n this._prefix = '';\n this._suffix = '';\n this._background = {};\n }\n\n configure (model) {\n if (!model) return;\n this._prefix = model._prefix;\n this._suffix = model._suffix;\n this._width = model.width;\n this.setConstraints(model._constraints);\n this.value = model.value;\n this.update();\n }\n\n setPrefix (value) {\n this._prefix = value !== null ? value : '';\n }\n\n setSuffix (value) {\n this._suffix = value !== null ? value : '';\n }\n\n _decorate (value) {\n return `${this._prefix}${value}${this._suffix}`;\n }\n\n get width () {\n return this._width;\n }\n\n set width (value) {\n this._width = value;\n }\n\n get isSm () {\n return this._isSm;\n }\n\n set isSm (value) {\n if (this._isSm === value) return;\n this._isSm = value;\n this.setThumbSize(value ? 16 : 24);\n this.update();\n }\n\n setThumbSize (value, mult = 1) {\n this._thumbSize = value;\n this._innerPadding = value * mult;\n }\n\n get textValue () {\n return this._decorate(this._value);\n }\n\n get value () {\n return this._value;\n }\n\n set value (value) {\n this._value = value;\n }\n\n get outputX () {\n return this._outputX;\n }\n\n setConstraints (constraints) {\n this._constraints = constraints;\n this._min = constraints.min;\n this._max = constraints.max;\n this._step = constraints.step;\n this._rangeWidth = constraints.rangeWidth;\n }\n\n get min () {\n return this._min;\n }\n\n get textMin () {\n return this._decorate(this._min);\n }\n\n get max () {\n return this._max;\n }\n\n get textMax () {\n return this._decorate(this._max);\n }\n\n get step () {\n return this._step;\n }\n\n get output () {\n return {\n text: this.textValue,\n transform: `translateX(${this._translateX}px) translateX(-${this._centerPercent}%)`\n };\n }\n\n _getRatio (value) {\n return (value - this._min) / this._rangeWidth;\n }\n\n get progress () {\n return this._progress;\n }\n\n update () {\n this._update();\n }\n\n _update () {\n this._innerWidth = this._width - this._innerPadding;\n const ratio = this._getRatio(this._value);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n this._progress = {\n right: `${(this._innerWidth * ratio + this._innerPadding * 0.5).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelStep extends RangeModel {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n if (this._stepWidth < 1 || !isFinite(this._stepWidth)) this._stepWidth = 4;\n while (this._stepWidth < 4) this._stepWidth *= 2;\n }\n}\n\nclass RangeModelDouble extends RangeModel {\n get value2 () {\n return this._value;\n }\n\n set value2 (value) {\n if (this._value2 === value) return;\n this._value2 = value;\n this.update();\n }\n\n get textValue () {\n return `${this._decorate(this._value)} - ${this._decorate(this._value2)}`;\n }\n\n setThumbSize (value) {\n super.setThumbSize(value, 2);\n }\n\n _update () {\n super._update();\n const ratio = this._getRatio((this._value + this._value2) * 0.5);\n this._translateX = ratio * this._width;\n this._centerPercent = ratio * 100;\n const ratio1 = this._getRatio(this._value);\n const ratio2 = this._getRatio(this._value2);\n this._progress = {\n left: `${(this._innerWidth * ratio1 + this._innerPadding * 0.25).toFixed(2)}px`,\n right: `${(this._innerWidth * ratio2 + this._innerPadding * 0.75).toFixed(2)}px`\n };\n }\n}\n\nclass RangeModelDoubleStep extends RangeModelDouble {\n get stepWidth () {\n return `${this._stepWidth.toFixed(3)}px`;\n }\n\n _update () {\n super._update();\n const steps = this._rangeWidth / this._step;\n this._stepWidth = this._innerWidth / steps;\n if (this._stepWidth < 4) this._stepWidth *= Math.ceil(4 / this._stepWidth);\n }\n}\n\nexport { RangeModel, RangeModelStep, RangeModelDouble, RangeModelDoubleStep };\n","import api from '../../api.js';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeSelector } from './range-selector.js';\nimport { RangeModel, RangeModelStep, RangeModelDouble, RangeModelDoubleStep } from './range-model';\n\nconst RangeTypes = {\n STEP: 'step',\n DOUBLE: 'double',\n DOUBLE_STEP: 'double-step',\n DEFAULT: 'default'\n};\n\nclass Range extends api.core.Instance {\n static get instanceClassName () {\n return 'Range';\n }\n\n init () {\n this._retrieveType();\n this._retrieveSize();\n if (this.isLegacy) {\n this.isResizing = true;\n this.isMouseMoving = true;\n } else {\n this._observer = new ResizeObserver(this.resize.bind(this));\n this._observer.observe(this.node);\n }\n\n this.addAscent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addAscent(RangeEmission.VALUE, this.setValue.bind(this));\n this.addAscent(RangeEmission.VALUE2, this.setValue2.bind(this));\n if (this.getAttribute(RangeSelector.RANGE_PREFIX)) this.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n if (this.getAttribute(RangeSelector.RANGE_SUFFIX)) this.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n }\n\n _retrieveType () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_DOUBLE_STEP):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_DOUBLE):\n this.type = RangeTypes.DOUBLE;\n break;\n\n case this.matches(RangeSelector.RANGE_STEP):\n this.type = RangeTypes.STEP;\n break;\n\n default:\n this.type = RangeTypes.DEFAULT;\n }\n }\n\n set type (value) {\n if (this._type === value) return;\n this._type = value;\n\n const oldModel = this._model;\n\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n this._model = new RangeModelDoubleStep();\n break;\n\n case RangeTypes.DOUBLE:\n this._model = new RangeModelDouble();\n break;\n\n case RangeTypes.STEP:\n this._model = new RangeModelStep();\n break;\n\n default:\n this._model = new RangeModel();\n }\n\n this._model.configure(oldModel);\n }\n\n get type () {\n return this._type;\n }\n\n _retrieveSize () {\n this._model.isSm = this.matches(RangeSelector.RANGE_SM);\n }\n\n resize () {\n this._retrieveWidth();\n this.update();\n }\n\n _retrieveWidth () {\n this._model.width = this.getRect().width;\n }\n\n setValue (value) {\n this._model.value = value;\n switch (this._type) {\n case RangeTypes.DOUBLE_STEP:\n case RangeTypes.DOUBLE:\n this.descend(RangeEmission.VALUE, value);\n break;\n }\n this.update();\n }\n\n setValue2 (value) {\n this._model.value2 = value;\n this.descend(RangeEmission.VALUE2, value);\n this.update();\n }\n\n setConstraints (constraints) {\n this._model.setConstraints(constraints);\n this.update();\n this.descend(RangeEmission.CONSTRAINTS, constraints);\n }\n\n setPrefix (value) {\n this._model.setPrefix(value);\n this.update();\n }\n\n setSuffix (value) {\n this._model.setSuffix(value);\n this.update();\n }\n\n mutate (attributesNames) {\n switch (true) {\n case attributesNames.includes('class'):\n this._retrieveType();\n this._retrieveSize();\n break;\n\n case attributesNames.includes(RangeSelector.RANGE_PREFIX):\n case attributesNames.includes(RangeSelector.RANGE_SUFFIX):\n this._model.setPrefix(this.getAttribute(RangeSelector.RANGE_PREFIX));\n this._model.setSuffix(this.getAttribute(RangeSelector.RANGE_SUFFIX));\n this.update();\n break;\n }\n }\n\n update () {\n this._model.update();\n this.descend(RangeEmission.OUTPUT, this._model.output);\n this.descend(RangeEmission.MIN, this._model.textMin);\n this.descend(RangeEmission.MAX, this._model.textMax);\n const progress = this._model.progress;\n if (progress.left) {\n this.style.setProperty('--progress-left', progress.left);\n } else {\n this.style.removeProperty('--progress-left');\n }\n if (progress.right) {\n this.style.setProperty('--progress-right', progress.right);\n if (this.isLegacy) {\n if (progress.left) {\n this.style.setProperty('background-position-x', progress.left);\n this.style.setProperty('background-size', `${parseFloat(progress.right) - parseFloat(progress.left)}px ${this._model.isSm ? '8px' : '12px'}`);\n }\n }\n } else {\n this.style.removeProperty('--progress-right');\n if (this.isLegacy) {\n this.style.removeProperty('background-size');\n this.style.removeProperty('background-position-x');\n }\n }\n if (this._model.stepWidth) this.style.setProperty('--step-width', this._model.stepWidth);\n else this.style.removeProperty('--step-width');\n }\n\n mouseMove (point) {\n if (this._type !== RangeTypes.DOUBLE && this._type !== RangeTypes.DOUBLE_STEP) return;\n const x = point.x - this.getRect().left;\n this.descend(RangeEmission.ENABLE_POINTER, (parseFloat(this._model.progress.right) - parseFloat(this._model.progress.left)) / 2 + parseFloat(this._model.progress.left) < x ? 2 : 1);\n }\n\n dispose () {\n this._observer.disconnect();\n }\n}\n\nexport { Range };\n","class RangeConstraints {\n constructor (node) {\n this._min = isNaN(node.min) ? 0 : node.min;\n this._max = isNaN(node.max) ? 100 : node.max;\n this._step = isNaN(node.step) ? 1 : node.step;\n this._rangeWidth = this._max - this._min;\n }\n\n get min () {\n return this._min;\n }\n\n get max () {\n return this._max;\n }\n\n get step () {\n return this._step;\n }\n\n get rangeWidth () {\n return this._rangeWidth;\n }\n\n test (min, max, step) {\n return this._min === min && this._max === max && this._step === step;\n }\n}\n\nexport { RangeConstraints };\n","import api from '../../api.js';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeConstraints } from './range-constraints';\n\nclass RangeInput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeInput';\n }\n\n init () {\n this._init();\n this._value = parseFloat(this.node.getAttribute('value'));\n if (this.isLegacy) this.addDescent(RangeEmission.ENABLE_POINTER, this._enablePointer.bind(this));\n this.isRendering = true;\n this.change();\n }\n\n _init () {\n this._pointerId = 1;\n this.request(() => {\n if (!this.hasAttribute('min')) this.setAttribute('min', 0);\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.ascend(RangeEmission.DISABLED, this.node.disabled);\n });\n\n this.addDescent(RangeEmission.VALUE2, this.setValue.bind(this));\n }\n\n get proxy () {\n const scope = this;\n\n const proxyAccessors = {\n get value () {\n return scope.value;\n },\n set value (value) {\n scope.value = value;\n }\n };\n\n return api.internals.property.completeAssign(super.proxy, proxyAccessors);\n }\n\n _enablePointer (pointerId) {\n const isEnabled = pointerId === this._pointerId;\n if (this._isPointerEnabled === isEnabled) return;\n this._isPointerEnabled = isEnabled;\n if (isEnabled) this.style.removeProperty('pointer-events');\n else this.style.setProperty('pointer-events', 'none');\n }\n\n get value () {\n return parseFloat(this.node.value);\n }\n\n set value (value) {\n const parsedValue = parseFloat(value);\n if (parsedValue === this._value) return;\n this._value = parsedValue;\n this.node.value = parsedValue;\n this.dispatch('change');\n this.change();\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) > value) {\n this.value = value;\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE, this._value);\n }\n\n render () {\n const parsedValue = parseFloat(this.node.value);\n if (parsedValue !== this._value) this.value = parsedValue;\n }\n\n mutate (attributesNames) {\n if (attributesNames.includes('disabled')) this.ascend(RangeEmission.DISABLED, this.node.disabled);\n if (attributesNames.includes('min') || attributesNames.includes('max') || attributesNames.includes('step')) {\n this.ascend(RangeEmission.CONSTRAINTS, new RangeConstraints(this.node));\n this.change();\n }\n }\n\n dispose () {\n if (this._listenerType) this.unlisten(this._listenerType, this._changing);\n }\n}\n\nexport { RangeInput };\n","import api from '../../../api';\nimport { RangeEmission } from './range-emission.js';\n\nclass RangeOutput extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeOutput';\n }\n\n init () {\n this.addDescent(RangeEmission.OUTPUT, this.change.bind(this));\n }\n\n change (data) {\n this.node.innerText = data.text;\n this.node.style.transform = data.transform;\n }\n}\n\nexport { RangeOutput };\n","import api from '../../../api';\nimport { RangeEmission } from './range-emission.js';\nimport { RangeSelector } from './range-selector.js';\n\nclass RangeLimit extends api.core.Instance {\n static get instanceClassName () {\n return 'RangeLimit';\n }\n\n init () {\n switch (true) {\n case this.matches(RangeSelector.RANGE_MIN):\n this.addDescent(RangeEmission.MIN, this.change.bind(this));\n break;\n\n case this.matches(RangeSelector.RANGE_MAX):\n this.addDescent(RangeEmission.MAX, this.change.bind(this));\n break;\n }\n }\n\n change (text) {\n this.node.innerText = text;\n }\n}\n\nexport { RangeLimit };\n","import api from './api.js';\nimport { RangeSelector } from './script/range/range-selector.js';\nimport { RangeEmission } from './script/range/range-emission.js';\nimport { Range } from './script/range/range.js';\nimport { RangeInput } from './script/range/range-input.js';\nimport { RangeInput2 } from './script/range/range-input2.js';\nimport { RangeOutput } from './script/range/range-output.js';\nimport { RangeLimit } from './script/range/range-limit.js';\n\napi.range = {\n Range: Range,\n RangeInput: RangeInput,\n RangeInput2: RangeInput2,\n RangeOutput: RangeOutput,\n RangeLimit: RangeLimit,\n RangeEmission: RangeEmission,\n RangeSelector: RangeSelector\n};\n\nexport default api;\n","import { RangeInput } from './range-input.js';\nimport { RangeEmission } from './range-emission';\n\nclass RangeInput2 extends RangeInput {\n static get instanceClassName () {\n return 'RangeInput2';\n }\n\n _init () {\n this._pointerId = 2;\n this.addDescent(RangeEmission.CONSTRAINTS, this.setConstraints.bind(this));\n this.addDescent(RangeEmission.VALUE, this.setValue.bind(this));\n }\n\n setValue (value) {\n if (parseFloat(this.node.value) < value) {\n this.value = value;\n }\n }\n\n change () {\n this.ascend(RangeEmission.VALUE2, parseFloat(this.node.value));\n }\n\n setConstraints (constraints) {\n this.node.min = constraints.min;\n this.node.max = constraints.max;\n this.node.step = constraints.step;\n this.change();\n }\n\n mutate (attributesNames) {}\n}\n\nexport { RangeInput2 };\n","import api from './index.js';\n\napi.internals.register(api.range.RangeSelector.RANGE, api.range.Range);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT, api.range.RangeInput);\napi.internals.register(api.range.RangeSelector.RANGE_INPUT2, api.range.RangeInput2);\napi.internals.register(api.range.RangeSelector.RANGE_OUTPUT, api.range.RangeOutput);\napi.internals.register(api.range.RangeSelector.RANGE_MIN, api.range.RangeLimit);\napi.internals.register(api.range.RangeSelector.RANGE_MAX, api.range.RangeLimit);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const HeaderSelector = {\n HEADER: api.internals.ns.selector('header'),\n BRAND_LINK: api.internals.ns.selector('header__brand a'),\n TOOLS_LINKS: api.internals.ns.selector('header__tools-links'),\n MENU_LINKS: api.internals.ns.selector('header__menu-links'),\n BUTTONS: `${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('btns-group')}, ${api.internals.ns.selector('header__tools-links')} ${api.internals.ns.selector('links-group')}`,\n MODALS: `${api.internals.ns.selector('header__search')}${api.internals.ns.selector('modal')}, ${api.internals.ns.selector('header__menu')}${api.internals.ns.selector('modal')}`\n};\n","import api from '../../api.js';\nimport { HeaderSelector } from './header-selector.js';\n\nclass HeaderLinks extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderLinks';\n }\n\n init () {\n const header = this.queryParentSelector(HeaderSelector.HEADER);\n this.toolsLinks = header.querySelector(HeaderSelector.TOOLS_LINKS);\n this.menuLinks = header.querySelector(HeaderSelector.MENU_LINKS);\n const copySuffix = '-mobile';\n\n const toolsHtml = this.toolsLinks.innerHTML.replace(/ +/g, ' ');\n const menuHtml = this.menuLinks.innerHTML.replace(/ +/g, ' ');\n // Pour éviter de dupliquer des id, on ajoute un suffixe aux id et aria-controls duppliqués.\n let toolsHtmlIdList = toolsHtml.match(/id=\"(.*?)\"/gm) || [];\n\n // on a besoin d'échapper les backslash dans la chaine de caractère\n // eslint-disable-next-line no-useless-escape\n toolsHtmlIdList = toolsHtmlIdList.map(element => element.replace('id=\\\"', '').replace('\\\"', ''));\n\n const dupplicateAttributes = ['aria-controls', 'aria-describedby', 'aria-labelledby'];\n\n let toolsHtmlDuplicateId = toolsHtml.replace(/id=\"(.*?)\"/gm, `id=\"$1${copySuffix}\"`);\n\n for (const attribute of dupplicateAttributes) {\n const toolsHtmlAttributeList = toolsHtml.match(new RegExp(`${attribute}=\"(.*?)\"`, 'gm'));\n if (toolsHtmlAttributeList) {\n for (const element of toolsHtmlAttributeList) {\n const attributeValue = element.replace(`${attribute}=\"`, '').replace('\"', '');\n if (toolsHtmlIdList.includes(attributeValue)) {\n toolsHtmlDuplicateId = toolsHtmlDuplicateId.replace(`${attribute}=\"${attributeValue}\"`, `${attribute}=\"${attributeValue + copySuffix}\"`);\n };\n }\n }\n }\n\n if (toolsHtmlDuplicateId === menuHtml) return;\n\n switch (api.mode) {\n case api.Modes.ANGULAR:\n case api.Modes.REACT:\n case api.Modes.VUE:\n this.warn(`header__tools-links content is different from header__menu-links content.\nAs you're using a dynamic framework, you should handle duplication of this content yourself, please refer to documentation:\n${api.header.doc}`);\n break;\n\n default:\n this.menuLinks.innerHTML = toolsHtmlDuplicateId;\n }\n }\n}\n\nexport { HeaderLinks };\n","import api from '../../api.js';\n\nclass HeaderModal extends api.core.Instance {\n static get instanceClassName () {\n return 'HeaderModal';\n }\n\n init () {\n this.storeAria();\n this.isResizing = true;\n }\n\n resize () {\n if (this.isBreakpoint(api.core.Breakpoints.LG)) this.deactivateModal();\n else this.activateModal();\n }\n\n activateModal () {\n const modal = this.element.getInstance('Modal');\n if (!modal) {\n this.request(this.activateModal.bind(this));\n return;\n }\n this.restoreAria();\n modal.isActive = true;\n this.listenClick({ capture: true });\n }\n\n deactivateModal () {\n const modal = this.element.getInstance('Modal');\n if (!modal) {\n this.request(this.deactivateModal.bind(this));\n return;\n }\n modal.conceal();\n modal.isActive = false;\n this.storeAria();\n this.unlistenClick({ capture: true });\n }\n\n storeAria () {\n if (this.hasAttribute('aria-labelledby')) this._ariaLabelledby = this.getAttribute('aria-labelledby');\n if (this.hasAttribute('aria-label')) this._ariaLabel = this.getAttribute('aria-label');\n this.removeAttribute('aria-labelledby');\n this.removeAttribute('aria-label');\n }\n\n restoreAria () {\n if (this._ariaLabelledby) this.setAttribute('aria-labelledby', this._ariaLabelledby);\n if (this._ariaLabel) this.setAttribute('aria-label', this._ariaLabel);\n }\n\n handleClick (e) {\n if (e.target.matches('a, button') && !e.target.matches('[aria-controls]') && !e.target.matches(api.core.DisclosureSelector.PREVENT_CONCEAL)) {\n const modal = this.element.getInstance('Modal');\n modal.conceal();\n }\n }\n}\n\nexport { HeaderModal };\n","import api from './api.js';\nimport { HeaderLinks } from './script/header/header-links.js';\nimport { HeaderModal } from './script/header/header-modal.js';\nimport { HeaderSelector } from './script/header/header-selector.js';\n\napi.header = {\n HeaderLinks: HeaderLinks,\n HeaderModal: HeaderModal,\n HeaderSelector: HeaderSelector,\n doc: 'https://www.systeme-de-design.gouv.fr/version-courante/fr/composants/en-tete'\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.header.HeaderSelector.TOOLS_LINKS, api.header.HeaderLinks);\napi.internals.register(api.header.HeaderSelector.MODALS, api.header.HeaderModal);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const DisplaySelector = {\n DISPLAY: api.internals.ns.selector('display'),\n RADIO_BUTTONS: `input[name=\"${api.internals.ns('radios-theme')}\"]`,\n FIELDSET: api.internals.ns.selector('fieldset')\n};\n","import api from '../../api.js';\nimport { DisplaySelector } from './display-selector.js';\n\nclass Display extends api.core.Instance {\n static get instanceClassName () {\n return 'Display';\n }\n\n init () {\n this.radios = this.querySelectorAll(DisplaySelector.RADIO_BUTTONS);\n\n if (api.scheme) {\n this.changing = this.change.bind(this);\n for (const radio of this.radios) radio.addEventListener('change', this.changing);\n this.addDescent(api.scheme.SchemeEmission.SCHEME, this.apply.bind(this));\n this.ascend(api.scheme.SchemeEmission.ASK);\n } else {\n this.querySelector(DisplaySelector.FIELDSET).setAttribute('disabled', '');\n }\n }\n\n get scheme () {\n return this._scheme;\n }\n\n set scheme (value) {\n if (this._scheme === value || !api.scheme) return;\n switch (value) {\n case api.scheme.SchemeValue.SYSTEM:\n case api.scheme.SchemeValue.LIGHT:\n case api.scheme.SchemeValue.DARK:\n this._scheme = value;\n for (const radio of this.radios) {\n radio.checked = radio.value === value;\n }\n this.ascend(api.scheme.SchemeEmission.SCHEME, value);\n break;\n }\n }\n\n change () {\n for (const radio of this.radios) {\n if (radio.checked) {\n this.scheme = radio.value;\n return;\n }\n }\n }\n\n apply (value) {\n this.scheme = value;\n }\n\n dispose () {\n for (const radio of this.radios) radio.removeEventListener('change', this.changing);\n }\n}\n\nexport { Display };\n","import api from './api.js';\nimport { Display } from './script/display/display.js';\nimport { DisplaySelector } from './script/display/display-selector.js';\n\napi.display = {\n Display: Display,\n DisplaySelector: DisplaySelector\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.display.DisplaySelector.DISPLAY, api.display.Display);\n\nexport default api;\n","import api from '../../api.js';\n\nexport const TableEmission = {\n SCROLLABLE: api.internals.ns.emission('table', 'scrollable'),\n CHANGE: api.internals.ns.emission('table', 'change'),\n CAPTION_HEIGHT: api.internals.ns.emission('table', 'captionheight'),\n CAPTION_WIDTH: api.internals.ns.emission('table', 'captionwidth')\n};\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nclass Table extends api.core.Instance {\n static get instanceClassName () {\n return 'Table';\n }\n\n init () {\n this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n }\n\n setCaptionHeight (value) {\n this.setProperty('--table-offset', value);\n }\n}\n\nexport { Table };\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nclass TableWrapper extends api.core.Instance {\n static get instanceClassName () {\n return 'TableWrapper';\n }\n\n init () {\n this.addAscent(TableEmission.CAPTION_HEIGHT, this.setCaptionHeight.bind(this));\n }\n\n setCaptionHeight (value) {\n requestAnimationFrame(() => this.ascend(TableEmission.CAPTION_HEIGHT, 0));\n this.setProperty('--table-offset', value);\n }\n}\n\nexport { TableWrapper };\n","import api from '../../api.js';\n\nexport const TableSelector = {\n TABLE: api.internals.ns.selector('table'),\n TABLE_WRAPPER: [`${api.internals.ns.selector('table')} ${api.internals.ns.selector('table__wrapper')}`],\n SHADOW: api.internals.ns.selector('table__shadow'),\n SHADOW_LEFT: api.internals.ns.selector('table__shadow--left'),\n SHADOW_RIGHT: api.internals.ns.selector('table__shadow--right'),\n ELEMENT: [`${api.internals.ns.selector('table')}:not(${api.internals.ns.selector('table--no-scroll')}) table`],\n CAPTION: `${api.internals.ns.selector('table')} table caption`,\n ROW: `${api.internals.ns.selector('table')} tbody tr`,\n COL: `${api.internals.ns.selector('table')} thead th`\n};\n","import api from '../../api.js';\nimport { TableSelector } from './table-selector.js';\n\nconst SCROLL_OFFSET = 0; // valeur en px du scroll avant laquelle le shadow s'active ou se desactive\n\nclass TableElement extends api.core.Instance {\n static get instanceClassName () {\n return 'TableElement';\n }\n\n init () {\n this.listen('scroll', this.scroll.bind(this));\n this.content = this.querySelector('tbody');\n this.tableOffsetHeight = 0;\n this.isResizing = true;\n }\n\n get isScrolling () {\n return this._isScrolling;\n }\n\n set isScrolling (value) {\n if (this._isScrolling === value) return;\n this._isScrolling = value;\n\n if (value) {\n this.addClass(TableSelector.SHADOW);\n this.scroll();\n } else {\n this.removeClass(TableSelector.SHADOW);\n this.removeClass(TableSelector.SHADOW_LEFT);\n this.removeClass(TableSelector.SHADOW_RIGHT);\n }\n }\n\n /* ajoute la classe fr-table__shadow-left ou fr-table__shadow-right sur fr-table en fonction d'une valeur de scroll et du sens (right, left) */\n scroll () {\n const isMin = this.node.scrollLeft <= SCROLL_OFFSET;\n const max = this.content.offsetWidth - this.node.offsetWidth - SCROLL_OFFSET;\n const isMax = Math.abs(this.node.scrollLeft) >= max;\n const isRtl = document.documentElement.getAttribute('dir') === 'rtl';\n const minSelector = isRtl ? TableSelector.SHADOW_RIGHT : TableSelector.SHADOW_LEFT;\n const maxSelector = isRtl ? TableSelector.SHADOW_LEFT : TableSelector.SHADOW_RIGHT;\n\n if (isMin) {\n this.removeClass(minSelector);\n } else {\n this.addClass(minSelector);\n }\n\n if (isMax) {\n this.removeClass(maxSelector);\n } else {\n this.addClass(maxSelector);\n }\n }\n\n resize () {\n this.isScrolling = this.content.offsetWidth > this.node.offsetWidth;\n }\n\n dispose () {\n this.isScrolling = false;\n }\n}\n\nexport { TableElement };\n","import api from '../../api.js';\nimport { TableEmission } from './table-emission.js';\n\nconst PADDING = '1rem'; // padding de 4v sur le caption\nclass TableCaption extends api.core.Instance {\n static get instanceClassName () {\n return 'TableCaption';\n }\n\n init () {\n this.height = 0;\n this.isResizing = true;\n }\n\n resize () {\n const height = this.getRect().height;\n if (this.height === height) return;\n this.height = height;\n this.ascend(TableEmission.CAPTION_HEIGHT, `calc(${height}px + ${PADDING})`);\n }\n}\n\nexport { TableCaption };\n","import api from '../../api.js';\nimport { CheckboxEmission } from '../../../checkbox/script/checkbox/checkbox-emission.js';\n\nclass TableRow extends api.core.Instance {\n static get instanceClassName () {\n return 'TableRow';\n }\n\n init () {\n if (api.checkbox) {\n this.addAscent(CheckboxEmission.CHANGE, this._handleCheckboxChange.bind(this));\n this.descend(CheckboxEmission.RETRIEVE);\n }\n }\n\n _handleCheckboxChange (node) {\n if (node.name === 'row-select' ||\n node.getAttribute(api.internals.ns.attr('row-select')) === 'true') {\n this.isSelected = node.checked === true;\n }\n }\n\n render () {\n const height = this.getRect().height + 2;\n if (this._height === height) return;\n this._height = height;\n this.setProperty('--row-height', `${this._height}px`);\n }\n\n get isSelected () {\n return this._isSelected;\n }\n\n set isSelected (value) {\n if (this._isSelected === value) return;\n this.isRendering = value;\n this._isSelected = value;\n this.setAttribute('aria-selected', value);\n }\n}\n\nexport { TableRow };\n","import api from './api.js';\nimport { Table } from './script/table/table.js';\nimport { TableWrapper } from './script/table/table-wrapper.js';\nimport { TableElement } from './script/table/table-element.js';\nimport { TableSelector } from './script/table/table-selector.js';\nimport { TableCaption } from './script/table/table-caption.js';\nimport { TableRow } from './script/table/table-row.js';\n\napi.table = {\n Table: Table,\n TableWrapper: TableWrapper,\n TableElement: TableElement,\n TableCaption: TableCaption,\n TableSelector: TableSelector,\n TableRow: TableRow\n};\n\nexport default api;\n","import api from './index.js';\n\napi.internals.register(api.table.TableSelector.TABLE, api.table.Table);\napi.internals.register(api.table.TableSelector.TABLE_WRAPPER, api.table.TableWrapper);\napi.internals.register(api.table.TableSelector.ELEMENT, api.table.TableElement);\napi.internals.register(api.table.TableSelector.CAPTION, api.table.TableCaption);\napi.internals.register(api.table.TableSelector.ROW, api.table.TableRow);\n\nexport default api;\n"],"names":["state","constructor","this","modules","create","ModuleClass","module","type","getModule","add","item","remove","isActive","_isActive","value","values","Object","keys","map","e","activate","deactivate","isLegacy","_isLegacy","config","LogLevel","level","light","dark","logger","console","warn","error","log","message","Message","print","setColor","color","apply","getMessage","window","matchMedia","matches","domain","inputs","styles","objects","push","join","LEVELS","debug","info","inspector","id","msgs","bind","tree","stage","_branch","root","element","space","branch","indent","i","html","child","children","startAtDomContentLoaded","callback","document","readyState","requestAnimationFrame","addEventListener","Modes","AUTO","MANUAL","RUNTIME","LOADED","VUE","ANGULAR","REACT","dispatch","node","detail","bubbles","cancelable","options","event","CustomEvent","dispatchEvent","rootDispatch","documentElement","ns","name","selector","notation","undefined","attr","result","emission","RootEvent","READY","START","STOP","RENDER","RESIZE","BREAKPOINT","SCROLL_LOCK","SCROLL_UNLOCK","_mode","isStarted","starting","start","preventManipulation","configure","settings","query","startCallback","isProduction","production","isNaN","Number","verbose","mode","Collection","_collection","forEach","length","collectable","indexOf","onAdd","onPopulate","index","splice","onRemove","onEmpty","execute","args","clear","clone","slice","collection","Module","super","querySelectorAllArray","selectors","Array","prototype","call","querySelectorAll","queryParentSelector","parent","parentElement","Registration","InstanceClass","creator","instances","isIntroduced","_instanceClassName","instanceClassName","_instanceClassNames","getInstanceClassNames","_property","substring","toLowerCase","dashed","replace","_attribute","getPrototypeOf","hasInstanceClassName","introduce","parse","nonRecursive","nodes","querySelector","instance","dispose","_dispose","instanceClassNames","property","attribute","Register","register","registration","count","Element","attributeNames","_children","_parent","_projects","proxy","scope","_proxy","outerHTML","end","project","populate","projects","hasInstance","_config","ascendants","descendants","addChild","removeChild","emit","data","elements","response","_emit","_emitter","ascend","_ascend","_ascent","descend","_descend","_descent","getInstance","getDescendantInstances","stopAtInstanceClassName","stopAtFirstInstance","getAscendantInstance","prepare","attributeName","examine","RootEmission","CLICK","KEYDOWN","KEYUP","KeyCodes","TAB","ESCAPE","END","HOME","LEFT","UP","RIGHT","DOWN","getKeyCode","keyCode","filter","entry","Root","setAttribute","listen","click","capture","keydown","keyup","target","Stage","observer","MutationObserver","mutate","modifications","willModify","modifying","modify","hasElement","getElement","getProxy","put","position","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINS","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_PRECEDING","observe","childList","subtree","attributes","disconnect","mutations","examinations","mutation","removedNodes","addedNodes","descendant","targets","contains","disposables","disposable","registrations","creations","n","Renderer","rendering","render","nexts","request","next","Resizer","requireResize","resizing","resize","requesting","fonts","ready","then","ScrollLocker","_isLocked","_scrollY","lock","unlock","isLocked","scrollY","scrollBarGap","innerWidth","clientWidth","body","style","top","behavior","getComputedStyle","getPropertyValue","scrollBehavior","setProperty","removeAttribute","scrollTo","removeProperty","move","Load","loading","load","FONT_FAMILIES","FontSwap","swapping","swap","families","family","check","swapFont","MouseMove","requireMove","_isMoving","moving","unlisten","removeEventListener","point","x","clientX","y","clientY","mouseMove","Hash","handling","handle","getLocationHash","_sanitize","hash","charAt","_hash","location","handleHash","engine","registerModule","stop","getOption","hover","active","colors","getColor","context","use","tint","decision","trim","sanitize","className","substr","getClassNames","split","baseVal","modifyClass","classNames","addClass","removeClass","hasClass","ACTIONS_SELECTOR","queryActions","counter","uniqueId","getElementById","base","dom","image","DataURISVG","width","height","_width","_height","_content","content","getDataURI","svg","support","supportLocalStorage","localStorage","supportAspectRatio","CSS","supports","TransitionSelector","NONE","completeAssign","sources","source","descriptors","reduce","key","getOwnPropertyDescriptor","getOwnPropertySymbols","sym","descriptor","enumerable","defineProperties","internals","legacy","defineProperty","get","setLegacy","motion","url","search","entries","URLSearchParams","fromEntries","searchParams","api","version","prefix","organisation","set","configuration","Emitter","emissions","closure","Error","focusManager","_activeElements","_onFocusIn","focus","focusOnLogo","_isDisplayed","logo","header","HeaderSelector","BRAND_LINK","display","visibility","Breakpoint","minWidth","test","Breakpoints","XS","SM","MD","LG","XL","InstanceEvent","Instance","jsAttribute","_isRendering","_isResizing","_isScrollLocked","_isLoading","_isSwappingFont","_isEnabled","_isDisposed","_listeners","_handlingClick","_handleClick","_hashes","_keyListenerTypes","_keys","handlingKey","handleKey","_registrations","_nexts","init","isEnabled","unshift","getRegisteredInstances","listeners","listener","Listener","removal","matchOptions","listenClick","unlistenClick","handleClick","listenHash","action","HashAction","unlistenHash","listenKey","preventDefault","stopPropagation","KeyAction","unlistenKey","code","some","isRendering","isResizing","isBreakpoint","breakpoint","toUpperCase","isScrollLocked","isLoading","isSwappingFont","isMouseMoving","_isMouseMoving","retrieveNodeId","append","isDisposed","addEmission","removeEmission","addAscent","removeAscent","addDescent","removeDescent","parentNode","getAttribute","hasAttribute","propertyName","blur","retainFocus","_focusIndex","focusBack","focusClosest","closest","_focusClosest","actions","hasFocus","activeElement","scrollIntoView","rect","getRect","scroll","bottom","innerHeight","getBoundingClientRect","center","left","middle","eventType","_node","_type","_closure","_options","every","DisclosureEvent","DISCLOSE","CONCEAL","CURRENT","DisclosureEmission","RESET","ADDED","RETRIEVE","REMOVED","GROUP","UNGROUP","SPOTLIGHT","Disclosure","DisclosureButtonInstanceClass","disclosuresGroupInstanceClassName","_selector","modifier","_isPristine","_isRetrievingPrimaries","_hasRetrieved","_primaryButtons","reset","update","disclose","_spotlight","isDisclosed","conceal","isPristine","assign","canConceal","buttons","button","group","getGroup","retrievePrimaries","_group","validate","withhold","current","preventFocus","_isDisclosed","isInitiallyDisclosed","primaryButtons","hasRetrieved","toggle","canDisclose","buttonHasFocus","_retrievePrimaries","_electPrimaries","requirePrimary","retrieved","applyAbility","retrieve","candidates","isDisabled","DisclosureButton","ariaState","_canDisclose","isPrimary","includes","canDisable","_isInitiallyDisclosed","_isContained","controlsId","_isApplying","measure","buttonRect","_dx","_dy","dx","dy","DisclosureSelector","PREVENT_CONCEAL","DisclosuresGroup","disclosureInstanceClassName","_members","_index","_isRetrieving","_isGrouped","proxyAccessors","members","member","isGrouped","getMembers","invalid","bypassPrevention","_retrieve","getIndex","defaultIndex","canUngroup","attributesNames","DisclosureType","EXPAND","ariaControls","SELECT","OPENED","CollapseButton","CollapseSelector","COLLAPSE","COLLAPSING","EquisizedEmission","CHANGE","InjectSvgSelector","INJECT_SVG","ArtworkSelector","ARTWORK_USE","AssessSelector","ASSESS_FILE","DETAIL","AssessEmission","UPDATE","ratiosImg","ratioSelector","modifiers","deprecatedRatioSelector","RatioSelector","RATIO","PlaceSelector","TOP","BOTTOM","AlignSelector","CENTER","PlacementPosition","PlacementAlign","PlacementMode","core","Collapse","endCollapsing","_isCollpasing","_timeout","clearTimeout","maxHeight","unbound","collapsing","adjust","setTimeout","offsetHeight","primary","collapsePrimary","before","candidate","min","Math","mins","sort","a","b","abs","CollapsesGroup","RootSelector","ROOT","Equisized","Toggle","pressed","EquisizedsGroup","equisizeds","max","equisized","InjectSvg","img","restore","fetch","imgID","imgClass","imgURL","text","xmlDoc","DOMParser","parseFromString","match","innerHTML","replaceAll","el","attrs","focusable","replaceChild","Artwork","xlink","splitUrl","svgUrl","svgName","xhr","XMLHttpRequest","onload","responseText","realSvgContent","tagName","insertBefore","classList","open","send","AssessFile","lang","getLang","href","hreflang","file","gather","getFileLength","method","ok","status","headers","catch","details","extension","parseExtension","bytesToSize","getLangDisplayName","elem","navigator","language","locale","Intl","DisplayNames","of","bytes","sizeUnits","parseInt","floor","size","roundedSize","round","EPSILON","String","AssessDetail","Ratio","ratio","currentWidth","Placement","places","aligns","safeAreaMargin","_places","_aligns","_safeAreaMargin","_isShown","_x","_y","show","hide","place","align","isShown","_place","_align","setReferent","referent","_referent","referentRect","safeArea","getSafeArea","getPlace","getHorizontalAlign","getVerticalAlign","transform","right","isX","isY","overflow","exec","PlacementReferent","_placement","placement","SchemeValue","SYSTEM","LIGHT","DARK","SchemeAttribute","THEME","SCHEME","TRANSITION","SchemeTheme","SchemeEmission","ASK","SchemeEvent","Scheme","changing","change","restoreTransition","scheme","getItem","schemeAttr","ask","_scheme","listenPreferences","unlistenPreferences","theme","setItem","_theme","colorScheme","isListening","mediaQuery","SchemeSelector","SWITCH_THEME","RADIO_BUTTONS","ACCORDION","AccordionSelector","COLLAPSE_LEGACY","BUTTON","Accordion","AccordionsGroup","accordion","ButtonSelector","EQUISIZED_BUTTON","EQUISIZED_GROUP","CardDownload","CardSelector","DOWNLOAD","DOWNLOAD_DETAIL","card","CheckboxSelector","INPUT","CheckboxEmission","CheckboxInput","_handlingChange","handleChange","isChecked","checked","checkbox","SegmentedSelector","SEGMENTED","SEGMENTED_ELEMENTS","SEGMENTED_ELEMENT","SEGMENTED_LEGEND","SegmentedEmission","Segmented","legend","_isLegendInline","SEGMENTED_VERTICAL","LEGEND_INLINE","offsetWidth","scrollWidth","SegmentedElement","segmented","BreadcrumbSelector","BREADCRUMB","Breadcrumb","focusing","getCollapse","collapse","links","_focus","link","verify","breadcrumb","TooltipSelector","TOOLTIP","SHOWN","HIDDING","TooltipReferentState","TooltipReferent","_state","focusIn","focusOut","mouseover","mouseout","_keydown","_click","_clickOut","close","TooltipEvent","SHOW","HIDE","TooltipState","Tooltip","transitionEnd","limit","toFixed","tooltip","ToggleInput","ToggleStatusLabel","input","maxWidth","parseFloat","style2","ToggleSelector","STATUS_LABEL","ITEM","SidemenuSelector","LIST","SidemenuList","SidemenuItem","sidemenu","ModalSelector","MODAL","SCROLL_DIVIDER","BODY","TITLE","ModalButton","ModalAttribute","CONCEALING_BACKDROP","Modal","_isDecorated","scrolling","_isDialog","_escape","_ensureAccessibleName","decorateDialog","stripDialog","isDialog","_hasDialogRole","_setAccessibleName","title","UNORDEREDS","ORDEREDS","isFocusable","container","frameElement","contentWindow","FocusTrap","onTrap","onUntrap","waiting","wait","maintainFocus","trapped","trap","untrap","isTrapping","trapping","focusables","stun","stunneds","Stunned","first","last","shiftKey","tabIndex","unordereds","radios","groups","radio","RadioButtonGroup","unordered","keep","ordereds","noDuplicates","concat","inert","unstun","selected","ModalsGroup","focusTrap","initial","ModalBody","divide","scrollHeight","clientHeight","scrollTop","iframe","windowElement","offset","modal","PasswordEmission","TOGGLE","ADJUST","PasswordToggle","_isChecked","Password","PasswordSelector","PASSWORD","LABEL","TOOGLE","PasswordInput","_isRevealed","capslock","isRevealed","getModifierState","PasswordLabel","valueREM","ceil","paddingRight","password","NavigationSelector","NAVIGATION","ITEM_RIGHT","MENU","TRANSLATE_BUTTON","NavigationItem","_isRightAligned","calculate","isRightAligned","NavigationMousePosition","INSIDE","OUTSIDE","Navigation","clicked","out","_handleRootClick","handleMouseDown","hasOpenedMenu","requestPosition","isRequesting","getPosition","requested","navigation","TabButton","list","focalize","TabSelector","PANEL","SHADOW","SHADOW_LEFT","SHADOW_RIGHT","PANEL_START","PANEL_END","TabPanelDirection","TabPanel","_direction","_isPreventingTransition","direction","isPreventingTransition","translate","TabKeys","TabEmission","PRESS_KEY","LIST_HEIGHT","TabsGroup","transitionend","pressKey","setListHeight","listHeight","pressLeft","pressRight","pressHome","pressEnd","scrollLeft","paneHeight","panelHeight","TabsList","btn","btnRect","listRect","actualScroll","isScrolling","_isScrolling","isMin","isMax","isRtl","minSelector","maxSelector","tab","TagEvent","DISMISS","TagDismissible","TagSelector","PRESSABLE","DISMISSIBLE","tag","TRANSCRIPTION","TranscriptionSelector","Transcription","transcription","TileDownload","TileSelector","tile","RangeSelector","RANGE","RANGE_SM","RANGE_STEP","RANGE_DOUBLE","RANGE_DOUBLE_STEP","RANGE_INPUT","RANGE_INPUT2","RANGE_OUTPUT","RANGE_MIN","RANGE_MAX","RANGE_PREFIX","RANGE_SUFFIX","RangeEmission","VALUE","VALUE2","OUTPUT","CONSTRAINTS","MIN","MAX","STEP","PREFIX","SUFFIX","DISABLED","ENABLE_POINTER","RangeModel","_min","_max","_value","_thumbSize","_innerWidth","_prefix","_suffix","_background","model","setConstraints","_constraints","setPrefix","setSuffix","_decorate","isSm","_isSm","setThumbSize","mult","_innerPadding","textValue","outputX","_outputX","constraints","_step","step","_rangeWidth","rangeWidth","textMin","textMax","output","_translateX","_centerPercent","_getRatio","progress","_progress","_update","RangeModelStep","stepWidth","_stepWidth","steps","isFinite","RangeModelDouble","value2","_value2","ratio1","ratio2","RangeModelDoubleStep","RangeTypes","Range","_retrieveType","_retrieveSize","_observer","ResizeObserver","setValue","setValue2","oldModel","_model","_retrieveWidth","RangeConstraints","RangeInput","_init","_enablePointer","_pointerId","disabled","pointerId","_isPointerEnabled","parsedValue","_listenerType","_changing","RangeOutput","innerText","RangeLimit","range","RangeInput2","HEADER","TOOLS_LINKS","MENU_LINKS","BUTTONS","MODALS","HeaderLinks","toolsLinks","menuLinks","copySuffix","toolsHtml","menuHtml","toolsHtmlIdList","dupplicateAttributes","toolsHtmlDuplicateId","toolsHtmlAttributeList","RegExp","attributeValue","doc","HeaderModal","storeAria","deactivateModal","activateModal","restoreAria","_ariaLabelledby","_ariaLabel","DisplaySelector","DISPLAY","FIELDSET","Display","TableEmission","SCROLLABLE","CAPTION_HEIGHT","CAPTION_WIDTH","Table","setCaptionHeight","TableWrapper","TableSelector","TABLE","TABLE_WRAPPER","ELEMENT","CAPTION","ROW","COL","TableElement","tableOffsetHeight","TableCaption","TableRow","_handleCheckboxChange","isSelected","_isSelected","table"],"mappings":";AAqDA,MAAMA,EAAQ,IArDd,MACE,WAAAC,GACEC,KAAKC,QAAU,EAChB,CAED,MAAAC,CAAQC,GACN,MAAMC,EAAS,IAAID,EACnBH,KAAKC,QAAQG,EAAOC,MAAQD,CAC7B,CAED,SAAAE,CAAWD,GACT,OAAOL,KAAKC,QAAQI,EACrB,CAED,GAAAE,CAAKF,EAAMG,GACTR,KAAKC,QAAQI,GAAME,IAAIC,EACxB,CAED,MAAAC,CAAQJ,EAAMG,GACZR,KAAKC,QAAQI,GAAMI,OAAOD,EAC3B,CAED,YAAIE,GACF,OAAOV,KAAKW,SACb,CAED,YAAID,CAAUE,GACZ,GAAIA,IAAUZ,KAAKW,UAAW,OAC9BX,KAAKW,UAAYC,EACjB,MAAMC,EAASC,OAAOC,KAAKf,KAAKC,SAASe,IAAKC,GACrCjB,KAAKC,QAAQgB,IAEtB,GAAIL,EACF,IAAK,MAAMR,KAAUS,EACnBT,EAAOc,gBAGT,IAAK,MAAMd,KAAUS,EACnBT,EAAOe,YAGZ,CAED,YAAIC,GACF,OAAOpB,KAAKqB,SACb,CAED,YAAID,CAAUR,GACRA,IAAUZ,KAAKqB,YACnBrB,KAAKqB,UAAYT,EAClB,GClDGU,EACI,KADJA,EAEO,OAFPA,EAGU,UAHVA,EAIK,SCDX,MAAMC,EACJ,WAAAxB,CAAayB,EAAOC,EAAOC,EAAMC,GAK/B,OAJA3B,KAAKwB,MAAQA,EACbxB,KAAKyB,MAAQA,EACbzB,KAAK0B,KAAOA,EAEJC,GACN,IAAK,OACH3B,KAAK2B,OAASC,QAAQC,KACtB,MAEF,IAAK,QACH7B,KAAK2B,OAASC,QAAQE,MACtB,MAEF,QACE9B,KAAK2B,OAASC,QAAQG,IAE3B,CAED,GAAAA,IAAQlB,GACN,MAAMmB,EAAU,IAAIC,EAAQX,GAC5B,IAAK,MAAMV,KAASC,EAAQmB,EAAQzB,IAAIK,GACxCZ,KAAKkC,MAAMF,EACZ,CAED,KAAAE,CAAOF,GACLA,EAAQG,SAASnC,KAAKoC,OACtBpC,KAAK2B,OAAOU,MAAMT,QAASI,EAAQM,aACpC,CAED,SAAIF,GACF,OAAOG,OAAOC,WAAW,gCAAgCC,QAAUzC,KAAK0B,KAAO1B,KAAKyB,KACrF,EAGH,MAAMQ,EACJ,WAAAlC,CAAa2C,GACX1C,KAAK2C,OAAS,CAAC,MACf3C,KAAK4C,OAAS,CAAC,uBAAwB,oBACvC5C,KAAK6C,QAAU,GAEXH,GAAQ1C,KAAKO,IAAI,GAAGmC,MACzB,CAED,GAAAnC,CAAKK,GACH,cAAeA,GACb,IAAK,SACL,IAAK,WACHZ,KAAK2C,OAAOG,KAAK,OACjB9C,KAAK6C,QAAQC,KAAKlC,GAClB,MAEF,QACEZ,KAAK2C,OAAOG,KAAK,GAAGlC,MAEzB,CAED,QAAAuB,CAAUC,GACRpC,KAAK4C,OAAOE,KAAK,SAASV,IAC3B,CAED,UAAAE,GACE,MAAO,CAACtC,KAAK2C,OAAOI,KAAK,IAAK/C,KAAK4C,OAAOG,KAAK,QAAS/C,KAAK6C,QAC9D,EAGH,MAAMG,EAAS,CACbjB,IAAK,IAAIR,EAAS,EAAG,UAAW,WAChC0B,MAAO,IAAI1B,EAAS,EAAG,UAAW,WAClC2B,KAAM,IAAI3B,EAAS,EAAG,UAAW,WACjCM,KAAM,IAAIN,EAAS,EAAG,UAAW,UAAW,QAC5CO,MAAO,IAAIP,EAAS,EAAG,UAAW,UAAW,UA8C/C,MAAM4B,EAAY,IA3ClB,MACE,WAAApD,GACEC,KAAKwB,MAAQ,EAEb,IAAK,MAAM4B,KAAMJ,EAAQ,CACvB,MAAMxB,EAAQwB,EAAOI,GACrBpD,KAAKoD,GAAM,IAAIC,KACTrD,KAAKwB,OAASA,EAAMA,OAAOA,EAAMO,IAAIM,MAAMb,EAAO6B,IAExDrD,KAAKoD,GAAIlB,MAAQV,EAAMU,MAAMoB,KAAK9B,EACnC,CACF,CAED,KAAA1B,GACE,MAAMkC,EAAU,IAAIC,EACpBD,EAAQzB,IAAIT,GACZE,KAAK+B,IAAIG,MAAMF,EAChB,CAED,IAAAuB,GACE,MAAMC,EAAQ1D,EAAMQ,UAAU,SAC9B,IAAKkD,EAAO,OACZ,MAAMxB,EAAU,IAAIC,EACpBjC,KAAKyD,QAAQD,EAAME,KAAM,EAAG1B,GAC5BhC,KAAK+B,IAAIG,MAAMF,EAChB,CAED,OAAAyB,CAASE,EAASC,EAAO5B,GACvB,IAAI6B,EAAS,GACb,GAAID,EAAQ,EAAG,CACb,IAAIE,EAAS,GACb,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAOG,IAAKD,GAAU,OAE1CD,GAAUC,EAAS,KACpB,CACDD,GAAU,IAAIF,EAAQP,OAAOO,EAAQK,OACrChC,EAAQzB,IAAIsD,GACZ7B,EAAQzB,IAAI,CAAE,IAAKoD,IACnB3B,EAAQzB,IAAI,MACZ,IAAK,MAAM0D,KAASN,EAAQO,SAAUL,GAAU7D,KAAKyD,QAAQQ,EAAOL,EAAQ,EAAG5B,EAChF,GCtHUmC,EAA2BC,IACV,YAAxBC,SAASC,WAA0B/B,OAAOgC,sBAAsBH,GAC/DC,SAASG,iBAAiB,mBAAoBJ,ICFxCK,EAAQ,CACnBC,KAAM,OACNC,OAAQ,SACRC,QAAS,UACTC,OAAQ,SACRC,IAAK,MACLC,QAAS,UACTC,MAAO,SCPHC,EAAW,CAACC,EAAM7E,EAAM8E,EAAS,KAAMC,GAAU,EAAMC,GAAa,KACxE,MAAMC,EAAU,CAAEF,SAAqB,IAAZA,EAAkBC,YAA2B,IAAfA,GACrDF,IAAQG,EAAQH,OAASA,GAC7B,MAAMI,EAAQ,IAAIC,YAAYnF,EAAMiF,GACpCJ,EAAKO,cAAcF,IAGfG,EAAe,CAACrF,EAAM8E,EAAS,KAAMC,GAAU,EAAOC,GAAa,IAAUJ,EAASZ,SAASsB,gBAAiBtF,EAAM8E,EAAQC,EAASC,GCLvIO,EAAKC,GAAQ,GAAGvE,KAAiBuE,IAEvCD,EAAGE,SAAW,CAACD,EAAME,UACFC,IAAbD,IAAwBA,EAAW,KAChC,GAAGA,IAAWH,EAAGC,OAG1BD,EAAGK,KAAQJ,GAAS,QAAQD,EAAGC,MAEvBC,SAAW,CAACD,EAAMjF,KACxB,IAAIsF,EAASN,EAAGK,KAAKJ,GAErB,YADcG,IAAVpF,IAAqBsF,GAAU,KAAKtF,MACjC,IAAIsF,MAGbN,EAAGL,MAASlF,GAAS,GAAGiB,KAAoBjB,IAE5CuF,EAAGO,SAAW,CAACzD,EAAQrC,IAAS,YAAYqC,KAAUrC,ICjBtD,MAAM+F,EAAY,CAChBC,MAAOT,EAAGL,MAAM,SAChBe,MAAOV,EAAGL,MAAM,SAChBgB,KAAMX,EAAGL,MAAM,QACfiB,OAAQZ,EAAGL,MAAM,UACjBkB,OAAQb,EAAGL,MAAM,UACjBmB,WAAYd,EAAGL,MAAM,cACrBoB,YAAaf,EAAGL,MAAM,eACtBqB,cAAehB,EAAGL,MAAM,kBCkF1B,MAAMD,EAAU,IArFhB,MACE,WAAAvF,GACEC,KAAK6G,MAAQpC,EAAMC,KACnB1E,KAAK8G,WAAY,EACjB9G,KAAK+G,SAAW/G,KAAKgH,MAAM1D,KAAKtD,MAChCA,KAAKiH,qBAAsB,CAC5B,CAED,SAAAC,CAAWC,EAAW,GAAIH,EAAOI,GAC/BpH,KAAKqH,cAAgBL,EACrB,MAAMM,EAAeH,EAASI,cAAgBH,GAA8B,UAArBA,EAAMG,YAC7D,QAAQ,GACN,KAAKH,IAAUI,MAAMJ,EAAM5F,OACzB2B,EAAU3B,MAAQiG,OAAOL,EAAM5F,OAC/B,MAEF,KAAK4F,GAASA,EAAMM,UAA8B,SAAlBN,EAAMM,SAAwC,IAAlBN,EAAMM,SAChEvE,EAAU3B,MAAQ,EAClB,MAEF,KAAK8F,EACHnE,EAAU3B,MAAQ,IAClB,MAEF,KAAK2F,EAASO,QACZvE,EAAU3B,MAAQ,EAGtB2B,EAAUD,KAAK,WAAW5B,KAC1BoE,EAAaU,EAAUC,OACvBrG,KAAK2H,KAAOR,EAASQ,MAAQlD,EAAMC,IACpC,CAED,QAAIiD,CAAM/G,GACR,OAAQA,GACN,KAAK6D,EAAMC,KACT1E,KAAKiH,qBAAsB,ELtCT7C,EKuCRpE,KAAK+G,SLrCrB5C,EAAwBC,GKsClB,MAEF,KAAKK,EAAMI,OACT7E,KAAKiH,qBAAsB,EAC3B9C,EAAwBnE,KAAK+G,UAC7B,MAEF,KAAKtC,EAAMG,QACT5E,KAAKiH,qBAAsB,EAC3BjH,KAAKgH,QACL,MAEF,KAAKvC,EAAME,OACT3E,KAAKiH,qBAAsB,EAC3B,MAEF,KAAKxC,EAAMK,IAIX,KAAKL,EAAMM,QAIX,KAAKN,EAAMO,MACThF,KAAKiH,qBAAsB,EAC3B,MAEF,QAEE,YADA9D,EAAUrB,MAAM,gBLrEC,IAACsC,EKyEtBpE,KAAK6G,MAAQjG,EACbuC,EAAUD,KAAK,eAAetC,IAC/B,CAED,QAAI+G,GACF,OAAO3H,KAAK6G,KACb,CAED,KAAAG,GACE7D,EAAUD,KAAK,SACflD,KAAKqH,eACN,GCzFH,MAAMO,EACJ,WAAA7H,GACEC,KAAK6H,YAAc,EACpB,CAED,OAAAC,CAAS1D,GACPpE,KAAK6H,YAAYC,QAAQ1D,EAC1B,CAED,GAAApD,CAAKoD,GACH,OAAOpE,KAAK6H,YAAY7G,IAAIoD,EAC7B,CAED,UAAI2D,GACF,OAAO/H,KAAK6H,YAAYE,MACzB,CAED,GAAAxH,CAAKyH,GACH,QAAIhI,KAAK6H,YAAYI,QAAQD,IAAgB,KAC7ChI,KAAK6H,YAAY/E,KAAKkF,GAClBhI,KAAKkI,OAAOlI,KAAKkI,QACjBlI,KAAKmI,YAA0C,IAA5BnI,KAAK6H,YAAYE,QAAc/H,KAAKmI,cACpD,EACR,CAED,MAAA1H,CAAQuH,GACN,MAAMI,EAAQpI,KAAK6H,YAAYI,QAAQD,GACvC,IAAe,IAAXI,EAAc,OAAO,EACzBpI,KAAK6H,YAAYQ,OAAOD,EAAO,GAC3BpI,KAAKsI,UAAUtI,KAAKsI,WACpBtI,KAAKuI,SAAuC,IAA5BvI,KAAK6H,YAAYE,QAAc/H,KAAKuI,SACzD,CAED,OAAAC,IAAYC,GACV,IAAK,MAAMT,KAAehI,KAAK6H,YAAiBG,GAAaA,EAAY3F,MAAM,KAAMoG,EACtF,CAED,KAAAC,GACE1I,KAAK6H,YAAYE,OAAS,CAC3B,CAED,KAAAY,GACE,MAAMA,EAAQ,IAAIf,EAElB,OADAe,EAAMd,YAAc7H,KAAK6H,YAAYe,QAC9BD,CACR,CAED,cAAIE,GACF,OAAO7I,KAAK6H,WACb,EC/CH,MAAMiB,UAAelB,EACnB,WAAA7H,CAAaM,GACX0I,QACA/I,KAAKK,KAAOA,EACZL,KAAKU,UAAW,CACjB,CAED,QAAAQ,GAAc,CACd,UAAAC,GAAgB,ECVX,MAAM6H,EAAwB,CAACrF,EAASsF,IAAcC,MAAMC,UAAUP,MAAMQ,KAAKzF,EAAQ0F,iBAAiBJ,IAEpGK,EAAsB,CAAC3F,EAASsF,KAC3C,MAAMM,EAAS5F,EAAQ6F,cACvB,OAAID,EAAO9G,QAAQwG,GAAmBM,EAClCA,IAAWlF,SAASsB,gBAAwB,KACzC2D,EAAoBC,EAAQN,ICDrC,MAAMQ,EACJ,WAAA1J,CAAa+F,EAAU4D,EAAeC,GACpC3J,KAAK8F,SAAWA,EAChB9F,KAAK0J,cAAgBA,EACrB1J,KAAK2J,QAAUA,EACf3J,KAAK4J,UAAY,IAAIhC,EACrB5H,KAAK6J,cAAe,EACpB7J,KAAK8J,mBAAqB9J,KAAK0J,cAAcK,kBAC7C/J,KAAKgK,oBAAsBhK,KAAKiK,sBAAsBjK,KAAK0J,eAC3D1J,KAAKkK,UAAYlK,KAAK8J,mBAAmBK,UAAU,EAAG,GAAGC,cAAgBpK,KAAK8J,mBAAmBK,UAAU,GAC3G,MAAME,EAASrK,KAAK8J,mBACjBQ,QAAQ,iBAAkB,KAC1BA,QAAQ,wBAAyB,SACjCA,QAAQ,kBAAmB,SAC3BA,QAAQ,mBAAoB,SAC5BA,QAAQ,mBAAoB,SAC5BF,cACHpK,KAAKuK,WAAa3E,EAAGK,KAAK,MAAMoE,IACjC,CAED,qBAAAJ,CAAuBP,GACrB,MAAMP,EAAYrI,OAAO0J,eAAed,GACxC,OAAKP,GAA6C,aAAhCA,EAAUY,kBACrB,IAAI/J,KAAKiK,sBAAsBd,GAAYO,EAAcK,mBADK,CAACL,EAAcK,kBAErF,CAED,oBAAAU,CAAsBV,GACpB,OAAO/J,KAAKgK,oBAAoB/B,QAAQ8B,IAAsB,CAC/D,CAED,SAAAW,GACM1K,KAAK6J,eACT7J,KAAK6J,cAAe,EACpB/J,EAAMQ,UAAU,SAASqK,MAAMtG,SAASsB,gBAAiB3F,MAC1D,CAED,KAAA2K,CAAOzF,EAAM0F,GACX,MAAMC,EAAQ,GAId,OAHI3F,EAAKzC,SAAWyC,EAAKzC,QAAQzC,KAAK8F,WAAW+E,EAAM/H,KAAKoC,IAEvD0F,GAAgB1F,EAAKmE,kBAAoBnE,EAAK4F,cAAc9K,KAAK8F,WAAW+E,EAAM/H,KAAKT,MAAMwI,EAAO7B,EAAsB9D,EAAMlF,KAAK8F,WACnI+E,CACR,CAED,MAAA3K,CAAQyD,GACN,IAAKA,EAAQuB,KAAKzC,QAAQzC,KAAK8F,UAAW,OAC1C,MAAMiF,EAAW,IAAI/K,KAAK0J,cAE1B,OADA1J,KAAK4J,UAAUrJ,IAAIwK,GACZA,CACR,CAED,MAAAtK,CAAQsK,GACN/K,KAAK4J,UAAUnJ,OAAOsK,EACvB,CAED,OAAAC,GACE,MAAMpB,EAAY5J,KAAK4J,UAAUf,WACjC,IAAK,IAAI9E,EAAI6F,EAAU7B,OAAS,EAAGhE,GAAK,EAAGA,IAAK6F,EAAU7F,GAAGkH,WAC7DjL,KAAK2J,QAAU,IAChB,CAED,qBAAII,GACF,OAAO/J,KAAK8J,kBACb,CAED,sBAAIoB,GACF,OAAOlL,KAAKgK,mBACb,CAED,YAAImB,GACF,OAAOnL,KAAKkK,SACb,CAED,aAAIkB,GACF,OAAOpL,KAAKuK,UACb,EC5EH,MAAMc,UAAiBvC,EACrB,WAAA/I,GACEgJ,MAAM,WACP,CAED,QAAAuC,CAAUxF,EAAU4D,EAAeC,GACjC,MAAM4B,EAAe,IAAI9B,EAAa3D,EAAU4D,EAAeC,GAG/D,OAFA3J,KAAKO,IAAIgL,GACLzL,EAAMY,UAAU6K,EAAab,YAC1Ba,CACR,CAED,QAAArK,GACE,IAAK,MAAMqK,KAAgBvL,KAAK6I,WAAY0C,EAAab,WAC1D,CAED,MAAAjK,CAAQ8K,GACNA,EAAaP,UACbjC,MAAMtI,OAAO8K,EACd,ECpBH,IAAIC,EAAQ,EAEZ,MAAMC,EACJ,WAAA1L,CAAamF,EAAM9B,GACZA,EAGEpD,KAAKoD,GAAKA,GAFfoI,IACAxL,KAAKoD,GAAKoI,GAEZxL,KAAKkF,KAAOA,EACZlF,KAAK0L,eAAiB,GACtB1L,KAAK4J,UAAY,GACjB5J,KAAK2L,UAAY,GACjB3L,KAAK4L,QAAU,KACf5L,KAAK6L,UAAY,EAClB,CAED,SAAIC,GACF,MAAMC,EAAQ/L,KACd,IAAKA,KAAKgM,OAAQ,CAChBhM,KAAKgM,OAAS,CACZ5I,GAAIpD,KAAKoD,GACT,UAAImG,GACF,OAAOwC,EAAMxC,OAASwC,EAAMxC,OAAOuC,MAAQ,IAC5C,EACD,YAAI5H,GACF,OAAO6H,EAAM7H,SAASlD,IAAKiD,GAAUA,EAAM6H,MAC5C,GAGH,IAAK,MAAMf,KAAY/K,KAAK4J,UAAW5J,KAAKgM,OAAOjB,EAASQ,aAAaJ,UAAYJ,EAASe,KAC/F,CACD,OAAO9L,KAAKgM,MACb,CAED,QAAIhI,GACF,IAAKhE,KAAKkF,OAASlF,KAAKkF,KAAK+G,UAAW,MAAO,GAC/C,MAAMC,EAAMlM,KAAKkF,KAAK+G,UAAUhE,QAAQ,KACxC,OAAOjI,KAAKkF,KAAK+G,UAAU9B,UAAU,EAAG+B,EAAM,EAC/C,CAED,OAAAC,CAASZ,IACuC,IAA1CvL,KAAK6L,UAAU5D,QAAQsD,IAAsBvL,KAAK6L,UAAU/I,KAAKyI,EACtE,CAED,QAAAa,GACE,MAAMC,EAAWrM,KAAK6L,UAAUjD,QAChC5I,KAAK6L,UAAU9D,OAAS,EACxB,IAAK,MAAMwD,KAAgBc,EAAUrM,KAAKE,OAAOqL,EAClD,CAED,MAAArL,CAAQqL,GACN,GAAIvL,KAAKsM,YAAYf,EAAaxB,mBAEhC,OAEF5G,EAAUF,MAAM,sBAAsBsI,EAAaxB,iCAAiC/J,KAAKoD,OACzF,MAAM2H,EAAWQ,EAAarL,OAAOF,MACrCA,KAAK4J,UAAU9G,KAAKiI,GACpBA,EAASwB,QAAQvM,KAAMuL,GACnBvL,KAAKgM,SAAQhM,KAAKgM,OAAOT,EAAaJ,UAAYJ,EAASe,MAChE,CAED,MAAArL,CAAQsK,GACN,MAAM3C,EAAQpI,KAAK4J,UAAU3B,QAAQ8C,GACjC3C,GAAS,GAAGpI,KAAK4J,UAAUvB,OAAOD,EAAO,GACzCpI,KAAKgM,eAAehM,KAAKgM,OAAOjB,EAASQ,aAAaJ,SAC3D,CAED,UAAI5B,GACF,OAAOvJ,KAAK4L,OACb,CAED,cAAIY,GACF,MAAO,CAACxM,KAAKuJ,UAAWvJ,KAAKuJ,OAAOiD,WACrC,CAED,YAAItI,GACF,OAAOlE,KAAK2L,SACb,CAED,eAAIc,GACF,MAAMA,EAAc,IAAIzM,KAAK2L,WAE7B,OADA3L,KAAK2L,UAAU7D,QAAQ7D,GAASwI,EAAY3J,QAAQmB,EAAMwI,cACnDA,CACR,CAID,QAAAC,CAAUzI,EAAOmE,GACf,OAAIpI,KAAK2L,UAAU1D,QAAQhE,IAAU,EAAU,MAC/CA,EAAM2H,QAAU5L,MACXwH,MAAMY,IAAUA,GAAS,GAAKA,EAAQpI,KAAK2L,UAAU5D,OAAQ/H,KAAK2L,UAAUtD,OAAOD,EAAO,EAAGnE,GAC7FjE,KAAK2L,UAAU7I,KAAKmB,GAClBA,EACR,CAED,WAAA0I,CAAa1I,GACX,MAAMmE,EAAQpI,KAAK2L,UAAU1D,QAAQhE,GACrC,IAAe,IAAXmE,EAAc,OAAO,KACzBnE,EAAM2H,QAAU,KAChB5L,KAAK2L,UAAUtD,OAAOD,EAAO,EAC9B,CAED,IAAAwE,CAAMvM,EAAMwM,GACV,MAAMC,EAAWhN,EAAMQ,UAAU,SAASuI,WACpCkE,EAAW,GACjB,IAAK,MAAMpJ,KAAWmJ,EAAUC,EAASjK,QAAQa,EAAQqJ,MAAM3M,EAAMwM,IACrE,OAAOE,CACR,CAED,KAAAC,CAAO3M,EAAMwM,GACX,MAAME,EAAW,GACjB,IAAK,MAAMhC,KAAY/K,KAAK4J,UAAWmD,EAASjK,QAAQiI,EAASkC,SAASL,KAAKvM,EAAMwM,IACrF,OAAOE,CACR,CAED,MAAAG,CAAQ7M,EAAMwM,GACZ,OAAI7M,KAAK4L,QAAgB5L,KAAK4L,QAAQuB,QAAQ9M,EAAMwM,GAC7C,EACR,CAED,OAAAM,CAAS9M,EAAMwM,GACb,MAAME,EAAW,GACjB,IAAK,MAAMhC,KAAY/K,KAAK4J,UAAWmD,EAASjK,QAAQiI,EAASqC,QAAQR,KAAKvM,EAAMwM,IAEpF,OADI7M,KAAK4L,SAASmB,EAASjK,QAAQ9C,KAAK4L,QAAQuB,QAAQ9M,EAAMwM,IACvDE,CACR,CAED,OAAAM,CAAShN,EAAMwM,GACb,MAAME,EAAW,GACjB,IAAK,MAAM9I,KAASjE,KAAK2L,UAAWoB,EAASjK,QAAQmB,EAAMqJ,SAASjN,EAAMwM,IAC1E,OAAOE,CACR,CAED,QAAAO,CAAUjN,EAAMwM,GACd,MAAME,EAAW,GACjB,IAAK,MAAMhC,KAAY/K,KAAK4J,UAAWmD,EAASjK,QAAQiI,EAASwC,SAASX,KAAKvM,EAAMwM,IACrF,IAAK,MAAM5I,KAASjE,KAAK2L,UAAWoB,EAASjK,QAAQmB,EAAMqJ,SAASjN,EAAMwM,IAC1E,OAAOE,CACR,CAED,WAAAS,CAAazD,GACX,IAAK,MAAMgB,KAAY/K,KAAK4J,UAAW,GAAImB,EAASQ,aAAad,qBAAqBV,GAAoB,OAAOgB,EACjH,OAAO,IACR,CAED,WAAAuB,CAAavC,GACX,OAA+C,OAAxC/J,KAAKwN,YAAYzD,EACzB,CAED,sBAAA0D,CAAwB1D,EAAmB2D,EAAyBC,GAClE,IAAK5D,EAAmB,MAAO,GAC/B,MAAMH,EAAY,GAClB,IAAK,MAAM3F,KAASjE,KAAK2L,UAAW,CAClC,MAAMZ,EAAW9G,EAAMuJ,YAAYzD,GAC/BgB,IACFnB,EAAU9G,KAAKiI,GACX4C,KAEAD,GAA4BzJ,EAAMqI,YAAYoB,KAA6BzJ,EAAMC,SAAS6D,QAAQ6B,EAAU9G,KAAKT,MAAMuH,EAAW3F,EAAMwJ,uBAAuB1D,EAAmB2D,EAAyBC,IAClN,CACD,OAAO/D,CACR,CAED,oBAAAgE,CAAsB7D,EAAmB2D,GACvC,IAAK3D,IAAsB/J,KAAK4L,QAAS,OAAO,KAChD,MAAMb,EAAW/K,KAAK4L,QAAQ4B,YAAYzD,GAC1C,OAAIgB,IACA2C,GAA2B1N,KAAK4L,QAAQU,YAAYoB,GAAiC,KAClF1N,KAAK4L,QAAQgC,qBAAqB7D,EAAmB2D,GAC7D,CAED,OAAA1C,GACE,IAAK,IAAIjH,EAAI/D,KAAK4J,UAAU7B,OAAS,EAAGhE,GAAK,EAAGA,IAAK,CACnD,MAAMgH,EAAW/K,KAAK4J,UAAU7F,GAC5BgH,GAAUA,EAASE,UACxB,CACDjL,KAAK4J,UAAU7B,OAAS,EACxBjI,EAAMW,OAAO,QAAST,MACtBA,KAAKuJ,OAAOoD,YAAY3M,MACxBA,KAAK2L,UAAU5D,OAAS,EACxB5E,EAAUF,MAAM,mBAAmBjD,KAAKoD,OAAOpD,KAAKgE,OACrD,CAED,OAAA6J,CAASC,IAC6C,IAAhD9N,KAAK0L,eAAezD,QAAQ6F,IAAuB9N,KAAK0L,eAAe5I,KAAKgL,EACjF,CAED,OAAAC,GACE,MAAMrC,EAAiB1L,KAAK0L,eAAe9C,QAC3C5I,KAAK0L,eAAe3D,OAAS,EAC7B,IAAK,IAAIhE,EAAI/D,KAAK4J,UAAU7B,OAAS,EAAGhE,GAAK,EAAGA,IAAK/D,KAAK4J,UAAU7F,GAAGgK,QAAQrC,EAChF,ECjMI,MAAMsC,EAAe,CAC1BC,MAAOrI,EAAGO,SAAS,OAAQ,SAC3B+H,QAAStI,EAAGO,SAAS,OAAQ,WAC7BgI,MAAOvI,EAAGO,SAAS,OAAQ,UCLhBiI,EAAW,CACtBC,IAAK,CACHjL,GAAI,MACJxC,MAAO,GAET0N,OAAQ,CACNlL,GAAI,SACJxC,MAAO,IAET2N,IAAK,CACHnL,GAAI,MACJxC,MAAO,IAET4N,KAAM,CACJpL,GAAI,OACJxC,MAAO,IAET6N,KAAM,CACJrL,GAAI,OACJxC,MAAO,IAET8N,GAAI,CACFtL,GAAI,KACJxC,MAAO,IAET+N,MAAO,CACLvL,GAAI,QACJxC,MAAO,IAETgO,KAAM,CACJxL,GAAI,OACJxC,MAAO,KAIEiO,EAAcC,GAAYhO,OAAOD,OAAOuN,GAAUW,OAAOC,GAASA,EAAMpO,QAAUkO,GAAS,GC9BxG,MAAMG,UAAaxD,EACjB,WAAA1L,GACEgJ,MAAM1E,SAASsB,gBAAiB,QAChC3F,KAAKkF,KAAKgK,aAAatJ,EAAGK,KAAK,OAAO,GACtCjG,KAAKmP,QACN,CAED,MAAAA,GAEE9K,SAASsB,gBAAgBnB,iBAAiB,QAASxE,KAAKoP,MAAM9L,KAAKtD,MAAO,CAAEqP,SAAS,IACrFhL,SAASsB,gBAAgBnB,iBAAiB,UAAWxE,KAAKsP,QAAQhM,KAAKtD,MAAO,CAAEqP,SAAS,IACzFhL,SAASsB,gBAAgBnB,iBAAiB,QAASxE,KAAKuP,MAAMjM,KAAKtD,MAAO,CAAEqP,SAAS,GACtF,CAED,KAAAD,CAAOnO,GACLjB,KAAK4M,KAAKoB,EAAaC,MAAOhN,EAAEuO,OACjC,CAED,OAAAF,CAASrO,GACPjB,KAAK4M,KAAKoB,EAAaE,QAASW,EAAW5N,EAAE6N,SAC9C,CAED,KAAAS,CAAOtO,GACLjB,KAAK4M,KAAKoB,EAAaG,MAAOU,EAAW5N,EAAE6N,SAC5C,ECvBH,MAAMW,UAAc3G,EAClB,WAAA/I,GACEgJ,MAAM,SACN/I,KAAK0D,KAAO,IAAIuL,EAChBlG,MAAMxI,IAAIP,KAAK0D,MACf1D,KAAK0P,SAAW,IAAIC,iBAAiB3P,KAAK4P,OAAOtM,KAAKtD,OACtDA,KAAK6P,cAAgB,GACrB7P,KAAK8P,YAAa,EAClB9P,KAAK+P,UAAY/P,KAAKgQ,OAAO1M,KAAKtD,KACnC,CAED,UAAAiQ,CAAY/K,GACV,IAAK,MAAMvB,KAAW3D,KAAK6I,WAAY,GAAIlF,EAAQuB,OAASA,EAAM,OAAO,EACzE,OAAO,CACR,CAED,UAAAgL,CAAYhL,GACV,IAAK,MAAMvB,KAAW3D,KAAK6I,WAAY,GAAIlF,EAAQuB,OAASA,EAAM,OAAOvB,EACzE,MAAMA,EAAU,IAAI8H,EAAQvG,GAG5B,OAFAlF,KAAKO,IAAIoD,GACTR,EAAUF,MAAM,gBAAgBU,EAAQP,OAAOO,EAAQK,QAChDL,CACR,CAED,QAAAwM,CAAUjL,GACR,IAAKlF,KAAKiQ,WAAW/K,GAAO,OAAO,KAEnC,OADgBlF,KAAKkQ,WAAWhL,GACjB4G,KAChB,CAED,GAAAvL,CAAKoD,GACHoF,MAAMxI,IAAIoD,GACV3D,KAAKoQ,IAAIzM,EAAS3D,KAAK0D,KACxB,CAED,GAAA0M,CAAKzM,EAASE,GACZ,IAAIuE,EAAQ,EACZ,IAAK,IAAIrE,EAAIF,EAAOK,SAAS6D,OAAS,EAAGhE,GAAK,EAAGA,IAAK,CACpD,MAAME,EAAQJ,EAAOK,SAASH,GACxBsM,EAAW1M,EAAQuB,KAAKoL,wBAAwBrM,EAAMiB,MAC5D,GAAImL,EAAWE,KAAKC,2BAElB,YADAxQ,KAAKoQ,IAAIzM,EAASM,GAEb,GAAIoM,EAAWE,KAAKE,+BACzB5M,EAAO8I,YAAY1I,GACnBN,EAAQ+I,SAASzI,EAAO,QACnB,GAAIoM,EAAWE,KAAKG,4BAA6B,CACtDtI,EAAQrE,EAAI,EACZ,KACD,CACF,CAEDF,EAAO6I,SAAS/I,EAASyE,EAC1B,CAED,QAAAlH,GACElB,KAAK0P,SAASiB,QAAQtM,SAASsB,gBAAiB,CAAEiL,WAAW,EAAMC,SAAS,EAAMC,YAAY,GAC/F,CAED,UAAA3P,GACEnB,KAAK0P,SAASqB,YACf,CAED,MAAAnB,CAAQoB,GACN,MAAMC,EAAe,GACrBD,EAAUlJ,QAASoJ,IACjB,OAAQA,EAAS7Q,MACf,IAAK,YACH6Q,EAASC,aAAarJ,QAAS5C,GAASlF,KAAKgL,QAAQ9F,IACrDgM,EAASE,WAAWtJ,QAAS5C,GAASlF,KAAK2K,MAAMzF,IACjD,MAEF,IAAK,aACH,GAAIlF,KAAKiQ,WAAWiB,EAAS1B,QAAS,CACpC,MAAM7L,EAAU3D,KAAKkQ,WAAWgB,EAAS1B,QACzC7L,EAAQkK,QAAQqD,EAASpD,gBACc,IAAnCmD,EAAahJ,QAAQtE,IAAiBsN,EAAanO,KAAKa,GAC5D,IAAK,MAAM0N,KAAc1N,EAAQ8I,aAAuD,IAAtCwE,EAAahJ,QAAQoJ,IAAoBJ,EAAanO,KAAKuO,EAC9G,EACoD,IAAjDrR,KAAK6P,cAAc5H,QAAQiJ,EAAS1B,SAAgBxP,KAAK6P,cAAc/M,KAAKoO,EAAS1B,WAK/FyB,EAAanJ,QAAQnE,GAAWA,EAAQoK,WACpC/N,KAAK6P,cAAc9H,SAAW/H,KAAK8P,aACrC9P,KAAK8P,YAAa,EAClBvN,OAAOgC,sBAAsBvE,KAAK+P,WAErC,CAED,MAAAC,GACEhQ,KAAK8P,YAAa,EAClB,MAAMwB,EAAUtR,KAAK6P,cAAcjH,QACnC5I,KAAK6P,cAAc9H,OAAS,EAC5B,IAAK,MAAMyH,KAAU8B,EAAajN,SAASsB,gBAAgB4L,SAAS/B,IAASxP,KAAK2K,MAAM6E,EACzF,CAED,OAAAxE,CAAS9F,GACP,MAAMsM,EAAc,GACpBxR,KAAK8H,QAASnE,IACRuB,EAAKqM,SAAS5N,EAAQuB,OAAOsM,EAAY1O,KAAKa,KAGpD,IAAK,MAAM8N,KAAcD,EACvBC,EAAWzG,UACXhL,KAAKS,OAAOgR,EAEf,CAED,KAAA9G,CAAOzF,EAAMqG,EAAcX,GACzB,MAAM8G,EAAgBnG,EAAe,CAACA,GAAgBzL,EAAMQ,UAAU,YAAYuI,WAC5E8I,EAAY,GAElB,IAAK,MAAMpG,KAAgBmG,EAAe,CACxC,MAAM7G,EAAQU,EAAaZ,MAAMzF,EAAM0F,GAEvC,IAAK,MAAMgH,KAAK/G,EAAO,CACrB,MAAMlH,EAAU3D,KAAKkQ,WAAW0B,GAChCjO,EAAQwI,QAAQZ,IACoB,IAAhCoG,EAAU1J,QAAQtE,IAAiBgO,EAAU7O,KAAKa,EACvD,CACF,CAED,IAAK,MAAMA,KAAWgO,EAAWhO,EAAQyI,UAC1C,EC7HH,MAAMyF,UAAiB/I,EACrB,WAAA/I,GACEgJ,MAAM,UACN/I,KAAK8R,UAAY9R,KAAK+R,OAAOzO,KAAKtD,MAClCA,KAAKgS,MAAQ,IAAIpK,CAClB,CAED,QAAA1G,GACEqB,OAAOgC,sBAAsBvE,KAAK8R,UACnC,CAED,OAAAG,CAASlH,GACP/K,KAAKgS,MAAMzR,IAAIwK,EAChB,CAED,MAAAgH,GACE,IAAKjS,EAAMY,SAAU,OAGrB,GAFA6B,OAAOgC,sBAAsBvE,KAAK8R,WAClC9R,KAAK8H,QAASiD,GAAaA,EAASgH,WAC/B/R,KAAKgS,MAAMjK,OAAQ,OACxB,MAAMiK,EAAQhS,KAAKgS,MAAMrJ,QACzB3I,KAAKgS,MAAMtJ,QACXsJ,EAAMlK,QAASiD,GAAaA,EAASmH,QACrCxM,EAAaU,EAAUI,OACxB,EC1BH,MAAM2L,UAAgBrJ,EACpB,WAAA/I,GACEgJ,MAAM,UACN/I,KAAKoS,eAAgB,EACrBpS,KAAKqS,SAAWrS,KAAKsS,OAAOhP,KAAKtD,MACjC,MAAMuS,EAAavS,KAAKiS,QAAQ3O,KAAKtD,MACjCqE,SAASmO,OACXnO,SAASmO,MAAMC,MAAMC,KAAKH,GAE5BhQ,OAAOiC,iBAAiB,SAAU+N,GAClChQ,OAAOiC,iBAAiB,oBAAqB+N,EAC9C,CAED,QAAArR,GACElB,KAAKiS,SACN,CAED,OAAAA,GACMjS,KAAKoS,gBACTpS,KAAKoS,eAAgB,EACrB7P,OAAOgC,sBAAsBvE,KAAKqS,UACnC,CAED,MAAAC,GACOtS,KAAKoS,gBACVpS,KAAK8H,QAASiD,GAAaA,EAASuH,UACpCtS,KAAKoS,eAAgB,EACrB1M,EAAaU,EAAUK,QACxB,EC3BH,MAAMkM,UAAqB7J,EACzB,WAAA/I,GACEgJ,MAAM,QACN/I,KAAK4S,WAAY,EACjB5S,KAAK6S,SAAW,EAChB7S,KAAKmI,WAAanI,KAAK8S,KAAKxP,KAAKtD,MACjCA,KAAKuI,QAAUvI,KAAK+S,OAAOzP,KAAKtD,KACjC,CAED,YAAIgT,GACF,OAAOhT,KAAK4S,SACb,CAED,IAAAE,GACE,IAAK9S,KAAK4S,UAAW,CACnB5S,KAAK4S,WAAY,EACjB5S,KAAK6S,SAAWtQ,OAAO0Q,QACvB,MAAMC,EAAe3Q,OAAO4Q,WAAa9O,SAASsB,gBAAgByN,YAClE/O,SAASsB,gBAAgBuJ,aAAatJ,EAAGK,KAAK,aAAc,SAC5D5B,SAASgP,KAAKC,MAAMC,KAAUvT,KAAK6S,SAAT,KAC1B7S,KAAKwT,SAAWC,iBAAiBpP,SAASsB,iBAAiB+N,iBAAiB,mBACtD,WAAlB1T,KAAKwT,WAAuBnP,SAASsB,gBAAgB2N,MAAMK,eAAiB,QAC5ET,EAAe,GACjB7O,SAASsB,gBAAgB2N,MAAMM,YAAY,oBAAqB,GAAGV,OAErExN,EAAaU,EAAUO,YACxB,CACF,CAED,MAAAoM,GACM/S,KAAK4S,YACP5S,KAAK4S,WAAY,EACjBvO,SAASsB,gBAAgBkO,gBAAgBjO,EAAGK,KAAK,cACjD5B,SAASgP,KAAKC,MAAMC,IAAM,GAC1BhR,OAAOuR,SAAS,EAAG9T,KAAK6S,UACF,WAAlB7S,KAAKwT,UAAuBnP,SAASsB,gBAAgB2N,MAAMS,eAAe,mBAC9E1P,SAASsB,gBAAgB2N,MAAMS,eAAe,qBAC9CrO,EAAaU,EAAUQ,eAE1B,CAED,IAAAoN,CAAMpT,GACAZ,KAAK4S,WACP5S,KAAK6S,UAAYjS,EACjByD,SAASgP,KAAKC,MAAMC,KAAUvT,KAAK6S,SAAT,MAE1BtQ,OAAOuR,SAAS,EAAGvR,OAAO0Q,QAAUrS,EAEvC,ECnDH,MAAMqT,UAAanL,EACjB,WAAA/I,GACEgJ,MAAM,QACN/I,KAAKkU,QAAUlU,KAAKmU,KAAK7Q,KAAKtD,KAC/B,CAED,QAAAkB,GACEqB,OAAOiC,iBAAiB,OAAQxE,KAAKkU,QACtC,CAED,IAAAC,GACEnU,KAAK8H,QAASiD,GAAaA,EAASoJ,OACrC,ECZH,MAAMC,EAAgB,CAAC,WAAY,YAEnC,MAAMC,UAAiBvL,EACrB,WAAA/I,GACEgJ,MAAM,aACN/I,KAAKsU,SAAWtU,KAAKuU,KAAKjR,KAAKtD,KAChC,CAED,QAAAkB,GACMmD,SAASmO,OACXnO,SAASmO,MAAMhO,iBAAiB,cAAexE,KAAKsU,SAEvD,CAED,IAAAC,GACE,MAAMC,EAAWJ,EAAcrF,OAAO0F,GAAUpQ,SAASmO,MAAMkC,MAAM,QAAQD,MAE7EzU,KAAK8H,QAASiD,GAAaA,EAAS4J,SAASH,GAC9C,EClBH,MAAMI,UAAkB9L,EACtB,WAAA/I,GACEgJ,MAAM,cACN/I,KAAK6U,aAAc,EACnB7U,KAAK8U,WAAY,EACjB9U,KAAK+U,OAAS/U,KAAKgU,KAAK1Q,KAAKtD,MAC7BA,KAAKuS,WAAavS,KAAKiS,QAAQ3O,KAAKtD,MACpCA,KAAKmI,WAAanI,KAAKmP,OAAO7L,KAAKtD,MACnCA,KAAKuI,QAAUvI,KAAKgV,SAAS1R,KAAKtD,KACnC,CAED,MAAAmP,GACMnP,KAAK8U,YACT9U,KAAK8U,WAAY,EACjB9U,KAAK6U,aAAc,EACnBxQ,SAASsB,gBAAgBnB,iBAAiB,YAAaxE,KAAKuS,YAC7D,CAED,QAAAyC,GACOhV,KAAK8U,YACV9U,KAAK8U,WAAY,EACjB9U,KAAK6U,aAAc,EACnBxQ,SAASsB,gBAAgBsP,oBAAoB,YAAajV,KAAKuS,YAChE,CAED,OAAAN,CAAShR,GACFjB,KAAK8U,YACV9U,KAAKkV,MAAQ,CAAEC,EAAGlU,EAAEmU,QAASC,EAAGpU,EAAEqU,SAC9BtV,KAAK6U,cACT7U,KAAK6U,aAAc,EACnBtS,OAAOgC,sBAAsBvE,KAAK+U,SACnC,CAED,IAAAf,GACOhU,KAAK6U,cACV7U,KAAK8H,QAASiD,GAAaA,EAASwK,UAAUvV,KAAKkV,QACnDlV,KAAK6U,aAAc,EACpB,ECrCH,MAAMW,UAAa1M,EACjB,WAAA/I,GACEgJ,MAAM,QACN/I,KAAKyV,SAAWzV,KAAK0V,OAAOpS,KAAKtD,MACjCA,KAAK2V,iBACN,CAED,QAAAzU,GACEqB,OAAOiC,iBAAiB,aAAcxE,KAAKyV,SAC5C,CAED,UAAAtU,GACEoB,OAAO0S,oBAAoB,aAAcjV,KAAKyV,SAC/C,CAED,SAAAG,CAAWC,GACT,MAAuB,MAAnBA,EAAKC,OAAO,GAAmBD,EAAK1L,UAAU,GAC3C0L,CACR,CAED,QAAIA,CAAMjV,GACR,MAAMiV,EAAO7V,KAAK4V,UAAUhV,GACxBZ,KAAK+V,QAAUF,IAAMtT,OAAOyT,SAASH,KAAOA,EACjD,CAED,QAAIA,GACF,OAAO7V,KAAK+V,KACb,CAED,eAAAJ,GACE,MAAME,EAAOtT,OAAOyT,SAASH,KAC7B7V,KAAK+V,MAAQ/V,KAAK4V,UAAUC,EAC7B,CAED,MAAAH,CAAQzU,GACNjB,KAAK2V,kBACL3V,KAAK8H,QAASiD,GAAaA,EAASkL,WAAWjW,KAAK+V,MAAO9U,GAC5D,ECQH,MAAMiV,EAAS,IAjCf,MACE,WAAAnW,GACED,EAAMI,OAAOmL,GACbvL,EAAMI,OAAOuP,GACb3P,EAAMI,OAAO2R,GACb/R,EAAMI,OAAOiS,GACbrS,EAAMI,OAAOyS,GACb7S,EAAMI,OAAO+T,GACbnU,EAAMI,OAAOmU,GACbvU,EAAMI,OAAO0U,GACb9U,EAAMI,OAAOsV,GAEb,MAAMW,EAAiBrW,EAAMQ,UAAU,YACvCN,KAAKsL,SAAW6K,EAAe7K,SAAShI,KAAK6S,EAC9C,CAED,YAAIzV,GACF,OAAOZ,EAAMY,QACd,CAED,KAAAsG,GACE7D,EAAUF,MAAM,SAChBnD,EAAMY,UAAW,EACjBgF,EAAaU,EAAUE,MACxB,CAED,IAAA8P,GACEjT,EAAUF,MAAM,QAChBnD,EAAMY,UAAW,EACjBgF,EAAaU,EAAUG,KACxB,GCpCH,MAAM8P,EAAa/Q,IACjB,QAAQ,GACN,KAAKA,EAAQgR,MACX,MAAO,SACT,KAAKhR,EAAQiR,OACX,MAAO,UACT,QACE,MAAO,KAIPC,EAAS,IAnBf,MACE,QAAAC,CAAUC,EAASC,EAAKC,EAAMtR,EAAU,CAAA,GACtC,MACMuR,EAAW,KAAKH,KAAWC,KAAOC,IADzBP,EAAU/Q,KAEzB,OAAOmO,iBAAiBpP,SAASsB,iBAAiB+N,iBAAiBmD,GAAUC,QAAU,IACxF,GCLGC,EAAYC,GAAsC,MAAxBA,EAAUlB,OAAO,GAAakB,EAAUC,OAAO,GAAKD,EAE9EE,EAAiBvT,IACrB,QAAQ,GACN,KAAMA,EAAQqT,UACZ,MAAO,GAET,IAAkC,iBAAtBrT,EAAQqT,UAClB,OAAOrT,EAAQqT,UAAUG,MAAM,KAEjC,IAA0C,iBAA9BxT,EAAQqT,UAAUI,QAC5B,OAAOzT,EAAQqT,UAAUI,QAAQD,MAAM,KAG3C,MAAO,IAKHE,EAAc,CAAC1T,EAASqT,EAAWvW,KACvCuW,EAAYD,EAASC,GACrB,MAAMM,EAAaJ,EAAcvT,GAC3ByE,EAAQkP,EAAWrP,QAAQ+O,IAClB,IAAXvW,EACE2H,GAAS,GAAGkP,EAAWjP,OAAOD,EAAO,IACrB,IAAXA,GAAckP,EAAWxU,KAAKkU,GACzCrT,EAAQqT,UAAYM,EAAWvU,KAAK,MAGhCwU,EAAW,CAAC5T,EAASqT,IAAcK,EAAY1T,EAASqT,GAIxDQ,EAAc,CAAC7T,EAASqT,IAAcK,EAAY1T,EAASqT,GAAW,GAItES,EAAW,CAAC9T,EAASqT,IAAcE,EAAcvT,GAASsE,QAAQ8O,EAASC,KAAe,ECtB1FU,EAfU,CACd,kCACA,UACA,yBACA,wBACA,yBACA,2BACA,kBACA,kBACA,mDACA,gCACA,UACA,UAG+B3U,OAEpB4U,EAAgBhU,GACpBA,EAAQ0F,iBAAiBqO,GClBlC,IAAIE,EAAU,EAEP,MAAMC,EAAYzU,IACvB,IAAKiB,SAASyT,eAAe1U,GAAK,OAAOA,EACzC,IAAIO,GAAU,EACd,MAAMoU,EAAO3U,EACb,KAAOO,GACLiU,IACAxU,EAAK,GAAG2U,KAAQH,IAChBjU,EAAUU,SAASyT,eAAe1U,GAEpC,OAAOA,GCLH4U,EAAM,CACVT,SAAUA,EACVE,SAAUA,EACVD,YAAaA,EACblO,oBAAqBA,EACrBN,sBAAuBA,EACvB2O,aAAcA,EACdE,SAAUA,EACV5S,SAAUA,GCZZ,MAAMgT,EAAQ,CACZC,WCHF,MACE,WAAAnY,CAAaoY,EAAQ,EAAGC,EAAS,GAC/BpY,KAAKqY,OAASF,EACdnY,KAAKsY,QAAUF,EACfpY,KAAKuY,SAAW,EACjB,CAED,SAAIJ,GACF,OAAOnY,KAAKqY,MACb,CAED,SAAIF,CAAOvX,GACTZ,KAAKqY,OAASzX,CACf,CAED,UAAIwX,GACF,OAAOpY,KAAKsY,OACb,CAED,UAAIF,CAAQxX,GACVZ,KAAKsY,QAAU1X,CAChB,CAED,WAAI4X,GACF,OAAOxY,KAAKuY,QACb,CAED,WAAIC,CAAS5X,GACXZ,KAAKuY,SAAW3X,CACjB,CAED,UAAA6X,CAAYrX,GAAW,GACrB,IAAIsX,EAAM,wDAAwD1Y,KAAKqY,UAAUrY,KAAKsY,mBAAmBtY,KAAKqY,qBAAqBrY,KAAKsY,cAActY,KAAKuY,iBAU3J,OARAG,EAAMA,EAAIpO,QAAQ,MAAO,OACrBlJ,IACFsX,EAAMA,EAAIpO,QAAQ,MAAO,OACzBoO,EAAMA,EAAIpO,QAAQ,MAAO,OACzBoO,EAAMA,EAAIpO,QAAQ,MAAO,KACzBoO,EAAMA,EAAIpO,QAAQ,MAAO,OACzBoO,EAAMA,EAAIpO,QAAQ,MAAO,QAEpB,mCAAmCoO,GAC3C,ICzCGC,EAAU,CACdC,oBCH0B,KAC1B,IACE,MAAO,iBAAkBrW,QAAkC,OAAxBA,OAAOsW,YAC3C,CAAC,MAAO5X,GACP,OAAO,CACR,GDDD6X,mBCIyB,MACpBvW,OAAOwW,KACLA,IAAIC,SAAS,yBCRhBlT,EAAW,CACfmT,mBCDgC,CAChCC,KAAMtT,EAAGE,SAAS,qBCoBdqT,GAAiB,CAAC3J,KAAW4J,KACjCA,EAAQtR,QAAQuR,IACd,MAAMC,EAAcxY,OAAOC,KAAKsY,GAAQE,OAAO,CAACD,EAAaE,KAC3DF,EAAYE,GAAO1Y,OAAO2Y,yBAAyBJ,EAAQG,GACpDF,GACN,CAAE,GAELxY,OAAO4Y,sBAAsBL,GAAQvR,QAAQ6R,IAC3C,MAAMC,EAAa9Y,OAAO2Y,yBAAyBJ,EAAQM,GACvDC,EAAWC,aACbP,EAAYK,GAAOC,KAGvB9Y,OAAOgZ,iBAAiBtK,EAAQ8J,KAE3B9J,GCpCHrE,GAAW,CACfgO,eAAgBA,ICQZY,GAAY,CAAA,EACZC,GAAS,CAAA,EAEflZ,OAAOmZ,eAAeD,GAAQ,WAAY,CACxCE,IAAK,IAAMpa,EAAMsB,WAGnB4Y,GAAOG,UAAY,KACjBra,EAAMsB,UAAW,GAGnB2Y,GAAUC,OAASA,GACnBD,GAAU/B,IAAMA,EAChB+B,GAAU9B,MAAQA,EAClB8B,GAAUpB,QAAUA,EACpBoB,GAAUK,OAASA,EACnBL,GAAU5O,SAAWA,GACrB4O,GAAUnU,GAAKA,EACfmU,GAAUzO,SAAW4K,EAAO5K,SAC5ByO,GAAUja,MAAQA,EAClBia,GAAU3S,MCtBW,CAACiT,IACpB,GAAIA,GAAOA,EAAIC,OAAQ,CACrB,MACMC,EADS,IAAIC,gBAAgBjY,OAAOyT,SAASsE,QAC5BC,UACvB,OAAOzZ,OAAO2Z,YAAYF,EAC3B,CACD,OAAO,MDgBSG,CAAanY,OAAOyT,UAEtClV,OAAOmZ,eAAeF,GAAW,sBAAuB,CACtDG,IAAK,IAAM5U,EAAQ2B,sBAErBnG,OAAOmZ,eAAeF,GAAW,QAAS,CACxCG,IAAK,IAAMpa,EAAMQ,UAAU,WE5B7B,MAAMqa,GAAOzV,GACGpF,EAAMQ,UAAU,SACjB6P,SAASjL,GAGxByV,GAAIC,QAAUtZ,EACdqZ,GAAIE,OAASvZ,EACbqZ,GAAIG,aAAexZ,EACnBqZ,GAAIlW,MAAQA,EAEZ3D,OAAOmZ,eAAeU,GAAK,OAAQ,CACjCI,IAAMna,IAAY0E,EAAQqC,KAAO/G,GACjCsZ,IAAK,IAAM5U,EAAQqC,OAGrBgT,GAAIZ,UAAYA,GAChBY,GAAIC,QAAUtZ,EAEdqZ,GAAI3T,MAAQkP,EAAOlP,MACnB2T,GAAIvE,KAAOF,EAAOE,KAElBuE,GAAIxX,UAAYA,EAChBwX,GAAInE,OAASA,EAEb,MAAMwE,GAAgBzY,OAAOjB,GAC7BqZ,GAAIZ,UAAUiB,cAAgBA,GAE9B1V,EAAQ4B,UAAU8T,GAAeL,GAAI3T,MAAO2T,GAAIZ,UAAU3S,OAE1D7E,OAAOjB,GAAoBqZ,GCtC3B,MAAMM,GACJ,WAAAlb,GACEC,KAAKkb,UAAY,EAClB,CAED,GAAA3a,CAAKF,EAAM8a,GACT,GAAuB,mBAAZA,EAAwB,MAAM,IAAIC,MAAM,8BAC9Cpb,KAAKkb,UAAU7a,KAAOL,KAAKkb,UAAU7a,GAAQ,IAClDL,KAAKkb,UAAU7a,GAAMyC,KAAKqY,EAC3B,CAED,MAAA1a,CAAQJ,EAAM8a,GACZ,GAAKnb,KAAKkb,UAAU7a,GACpB,GAAK8a,EACA,CACH,MAAM/S,EAAQpI,KAAKkb,UAAU7a,GAAM4H,QAAQkT,GACvC/S,GAAS,GAAGpI,KAAKkb,UAAU7a,GAAMgI,OAAOD,EAC7C,aAJoBpI,KAAKkb,UAAU7a,EAKrC,CAED,IAAAuM,CAAMvM,EAAMwM,GACV,IAAK7M,KAAKkb,UAAU7a,GAAO,MAAO,GAClC,MAAM0M,EAAW,GACjB,IAAK,MAAMoO,KAAWnb,KAAKkb,UAAU7a,GAAW8a,GAASpO,EAASjK,KAAKqY,EAAQtO,IAC/E,OAAOE,CACR,CAED,OAAA/B,GACEhL,KAAKkb,UAAY,IAClB,ECoBH,MAAMG,GAAe,IA/CrB,MACE,WAAAtb,GACEC,KAAKsb,gBAAkB,GACvB/Y,OAAO8B,SAASG,iBAAiB,UAAWxE,KAAKub,WAAWjY,KAAKtD,MAClE,CAED,UAAAub,CAAYta,GACVjB,KAAKsb,gBAAgBxY,KAAK7B,EAAEuO,OAC7B,CAED,SAAIpH,GACF,OAAOpI,KAAKsb,gBAAgBvT,OAAS,CACtC,CAED,KAAAyT,CAAOpT,GACL,MAAMzE,EAAU3D,KAAKsb,gBAAgBlT,GACrC,QAAQ,GACN,KAAKA,EAAQ,EACb,KAAqC,IAAhCpI,KAAKsb,gBAAgBvT,OAExB,YADA/H,KAAKyb,cAEP,KAAM9X,EACN,KAAMU,SAASsB,gBAAgB4L,SAAS5N,GACxC,KAAM3D,KAAK0b,aAAa/X,GAEtB,YADA3D,KAAKwb,MAAMpT,EAAQ,GAIvBzE,EAAQ6X,OACT,CAED,WAAAC,GACE,MAAME,EAAOtX,SAASyG,cAAc6P,GAAIiB,OAAOC,eAAeC,YAC1DH,GAAMA,EAAKH,OAChB,CAED,YAAAE,CAAc/X,GACZ,KAAOA,GAAWA,IAAYU,SAASsB,iBAAiB,CACtD,GAAIhC,IAAYU,SAASgP,KAAM,OAAO,EACtC,MAAMC,EAAQ/Q,OAAOkR,iBAAiB9P,GACtC,GAAsB,SAAlB2P,EAAMyI,SAA2C,WAArBzI,EAAM0I,WAAyB,OAAO,EACtErY,EAAUA,EAAQ6F,aACnB,CACD,OAAO,CACR,GC9CH,MAAMyS,GACJ,WAAAlc,CAAaqD,EAAI8Y,GACflc,KAAKoD,GAAKA,EACVpD,KAAKkc,SAAWA,CACjB,CAED,IAAAC,GACE,OAAO5Z,OAAOC,WAAW,eAAexC,KAAKkc,eAAezZ,OAC7D,EAGI,MAAM2Z,GAAc,CACzBC,GAAI,IAAIJ,GAAW,KAAM,GACzBK,GAAI,IAAIL,GAAW,KAAM,IACzBM,GAAI,IAAIN,GAAW,KAAM,IACzBO,GAAI,IAAIP,GAAW,KAAM,IACzBQ,GAAI,IAAIR,GAAW,KAAM,KCdrBS,GAAgB,CACpBzO,MAAOrI,EAAGL,MAAM,UCUlB,MAAMoX,GACJ,WAAA5c,CAAa6c,GAAc,GACzB5c,KAAK4c,YAAcA,EACnB5c,KAAK6c,cAAe,EACpB7c,KAAK8c,aAAc,EACnB9c,KAAK+c,iBAAkB,EACvB/c,KAAKgd,YAAa,EAClBhd,KAAKid,iBAAkB,EACvBjd,KAAKkd,YAAa,EAClBld,KAAKmd,aAAc,EACnBnd,KAAKod,WAAa,GAClBpd,KAAKqd,eAAiBrd,KAAKsd,aAAaha,KAAKtD,MAC7CA,KAAKud,QAAU,GACfvd,KAAK+V,MAAQ,GACb/V,KAAKwd,kBAAoB,GACzBxd,KAAKyd,MAAQ,GACbzd,KAAK0d,YAAc1d,KAAK2d,UAAUra,KAAKtD,MACvCA,KAAKiN,SAAW,IAAIgO,GACpBjb,KAAKoN,QAAU,IAAI6N,GACnBjb,KAAKuN,SAAW,IAAI0N,GACpBjb,KAAK4d,eAAiB,GACtB5d,KAAK6d,OAAS,EACf,CAED,4BAAW9T,GACT,MAAO,UACR,CAED,OAAAwC,CAAS5I,EAAS4H,GAChBvL,KAAK2D,QAAUA,EACf3D,KAAKuL,aAAeA,EACpBvL,KAAKkF,KAAOvB,EAAQuB,KACpBlF,KAAKoD,GAAKO,EAAQuB,KAAK9B,GACnBpD,KAAK4c,aAAa5c,KAAKkP,aAAa3D,EAAaH,WAAW,GAChEpL,KAAK8d,MACN,CAED,IAAAA,GAAU,CAEV,SAAIhS,GACF,MAAMC,EAAQ/L,KAkBd,OAAOmZ,GAjBO,CACZpH,OAAQ,IAAMhG,EAAMgG,SACpBO,OAAQ,IAAMvG,EAAMuG,UAGC,CACrB,QAAIpN,GACF,OAAO6G,EAAM7G,IACd,EACD,aAAI6Y,GACF,OAAOhS,EAAMgS,SACd,EACD,aAAIA,CAAWnd,GACbmL,EAAMgS,UAAYnd,CACnB,GAIJ,CAED,GAAAmB,IAAQlB,GACNA,EAAOmd,QAAQ,GAAGhe,KAAKuL,aAAaxB,sBAAsB/J,KAAKoD,SAC/DD,EAAUpB,IAAIM,MAAMc,EAAWtC,EAChC,CAED,KAAAoC,IAAUpC,GACRA,EAAOmd,QAAQ,GAAGhe,KAAKuL,aAAaxB,sBAAsB/J,KAAKoD,SAC/DD,EAAUF,MAAMZ,MAAMc,EAAWtC,EAClC,CAED,IAAAqC,IAASrC,GACPA,EAAOmd,QAAQ,GAAGhe,KAAKuL,aAAaxB,sBAAsB/J,KAAKoD,SAC/DD,EAAUD,KAAKb,MAAMc,EAAWtC,EACjC,CAED,IAAAgB,IAAShB,GACPA,EAAOmd,QAAQ,GAAGhe,KAAKuL,aAAaxB,sBAAsB/J,KAAKoD,SAC/DD,EAAUtB,KAAKQ,MAAMc,EAAWtC,EACjC,CAED,KAAAiB,IAAUjB,GACRA,EAAOmd,QAAQ,GAAGhe,KAAKuL,aAAaxB,sBAAsB/J,KAAKoD,SAC/DD,EAAUrB,MAAMO,MAAMc,EAAWtC,EAClC,CAED,QAAAyK,CAAUxF,EAAU4D,GAClB,MAAM6B,EAAezL,EAAMQ,UAAU,YAAYgL,SAASxF,EAAU4D,EAAe1J,MACnFA,KAAK4d,eAAe9a,KAAKyI,EAC1B,CAED,sBAAA0S,CAAwBlU,GACtB,IAAK,MAAMwB,KAAgBvL,KAAK4d,eAAgB,GAAIrS,EAAad,qBAAqBV,GAAoB,OAAOwB,EAAa3B,UAAUf,WACxI,MAAO,EACR,CAED,QAAA5D,CAAU5E,EAAM8E,EAAS,KAAMC,GAAU,EAAMC,GAAa,GAC1DJ,EAASjF,KAAKkF,KAAM7E,EAAM8E,EAAQC,EAASC,EAC5C,CAGD,MAAA8J,CAAQ9O,EAAM8a,EAAS7V,GAChBtF,KAAKod,WAAW/c,KAAOL,KAAKod,WAAW/c,GAAQ,IACpD,MAAM6d,EAAYle,KAAKod,WAAW/c,GAE5B8d,EAAW,IAAIC,GAASpe,KAAKkF,KAAM7E,EAAM8a,EAAS7V,GACxD4Y,EAAUpb,KAAKqb,GACfA,EAAShP,QACV,CAED,QAAA6F,CAAU3U,EAAM8a,EAAS7V,GACvB,IAAKjF,EAAM,CACT,IAAK,MAAMA,KAAQL,KAAKod,WAAYpd,KAAKgV,SAAS3U,GAClD,MACD,CAED,MAAM6d,EAAYle,KAAKod,WAAW/c,GAElC,IAAK6d,EAAW,OAEhB,IAAK/C,EAEH,YADA+C,EAAUpW,QAAQqW,GAAYne,KAAKgV,SAAS3U,EAAM8d,EAAShD,UAI7D,MAAMkD,EAAUH,EAAUnP,OAAOoP,GAAYA,EAAShD,UAAYA,GAAWgD,EAASG,aAAahZ,IACnG+Y,EAAQvW,QAAQqW,GAAYA,EAASnJ,YACrChV,KAAKod,WAAW/c,GAAQ6d,EAAUnP,OAAOoP,IAA2C,IAA/BE,EAAQpW,QAAQkW,GACtE,CAED,WAAAI,CAAajZ,GACXtF,KAAKmP,OAAO,QAASnP,KAAKqd,eAAgB/X,EAC3C,CAED,aAAAkZ,CAAelZ,GACbtF,KAAKgV,SAAS,QAAShV,KAAKqd,eAAgB/X,EAC7C,CAED,YAAAgY,CAAcrc,GACZjB,KAAKye,YAAYxd,GACjBjB,KAAKiF,SAASyX,GAAczO,MAAOjO,KACpC,CAED,WAAAye,CAAaxd,GAAK,CAElB,QAAI4U,CAAMjV,GACRd,EAAMQ,UAAU,QAAQuV,KAAOjV,CAChC,CAED,QAAIiV,GACF,OAAO/V,EAAMQ,UAAU,QAAQuV,IAChC,CAED,UAAA6I,CAAY7I,EAAMtV,GAChB,IAAKP,KAAKud,QAAS,OACS,IAAxBvd,KAAKud,QAAQxV,QAAcjI,EAAMS,IAAI,OAAQP,MACjD,MAAM2e,EAAS,IAAIC,GAAW/I,EAAMtV,GACpCP,KAAKud,QAAUvd,KAAKud,QAAQxO,OAAO4P,GAAUA,EAAO9I,OAASA,GAC7D7V,KAAKud,QAAQza,KAAK6b,EACnB,CAED,YAAAE,CAAchJ,GACP7V,KAAKud,UACVvd,KAAKud,QAAUvd,KAAKud,QAAQxO,OAAO4P,GAAUA,EAAO9I,OAASA,GACjC,IAAxB7V,KAAKud,QAAQxV,QAAcjI,EAAMW,OAAO,OAAQT,MACrD,CAED,UAAAiW,CAAYJ,EAAM5U,GAChB,GAAKjB,KAAKud,QACV,IAAK,MAAMoB,KAAU3e,KAAKud,QAASoB,EAAOjJ,OAAOG,EAAM5U,EACxD,CAED,SAAA6d,CAAWhQ,EAASqM,EAAS4D,GAAiB,EAAOC,GAAkB,EAAO3e,EAAO,SACrC,IAA1CL,KAAKwd,kBAAkBvV,QAAQ5H,KACjCL,KAAKmP,OAAO,MAAM9O,IAAQL,KAAK0d,aAC/B1d,KAAKwd,kBAAkB1a,KAAKzC,IAG9BL,KAAKyd,MAAM3a,KAAK,IAAImc,GAAU5e,EAAMyO,EAASqM,EAAS4D,EAAgBC,GACvE,CAED,WAAAE,CAAaC,EAAMhE,GACjBnb,KAAKyd,MAAQzd,KAAKyd,MAAM1O,OAAQyK,GAAQA,EAAI2F,OAASA,GAAQ3F,EAAI2B,UAAYA,GAE7Enb,KAAKwd,kBAAkB1V,QAAQzH,IACxBL,KAAKyd,MAAM2B,KAAK5F,GAAOA,EAAInZ,OAASA,IAAOL,KAAKgV,SAAS,MAAM3U,IAAQL,KAAK0d,cAEpF,CAED,SAAAC,CAAW1c,GACT,IAAK,MAAMuY,KAAOxZ,KAAKyd,MAAOjE,EAAI9D,OAAOzU,EAC1C,CAED,aAAI8c,GAAe,OAAO/d,KAAKkd,UAAa,CAE5C,aAAIa,CAAWnd,GACbZ,KAAKkd,WAAatc,CACnB,CAED,eAAIye,GAAiB,OAAOrf,KAAK6c,YAAe,CAEhD,eAAIwC,CAAaze,GACXZ,KAAK6c,eAAiBjc,IACtBA,EAAOd,EAAMS,IAAI,SAAUP,MAC1BF,EAAMW,OAAO,SAAUT,MAC5BA,KAAK6c,aAAejc,EACrB,CAED,MAAAmR,GAAY,CAEZ,OAAAE,CAASkJ,GACPnb,KAAK6d,OAAO/a,KAAKqY,GACjBrb,EAAMQ,UAAU,UAAU2R,QAAQjS,KACnC,CAED,IAAAkS,GACE,MAAMF,EAAQhS,KAAK6d,OAAOjV,QAC1B5I,KAAK6d,OAAO9V,OAAS,EACrB,IAAK,MAAMoT,KAAWnJ,EAAWmJ,GAASA,GAC3C,CAED,cAAImE,GAAgB,OAAOtf,KAAK8c,WAAc,CAE9C,cAAIwC,CAAY1e,GACVZ,KAAK8c,cAAgBlc,IACrBA,GACFd,EAAMS,IAAI,SAAUP,MACpBA,KAAKsS,UACAxS,EAAMW,OAAO,SAAUT,MAC9BA,KAAK8c,YAAclc,EACpB,CAED,MAAA0R,GAAY,CAEZ,YAAAiN,CAAcC,GACZ,OAAQ,IACqB,iBAAfA,GACHpD,GAAYoD,EAAWC,eAAetD,OAGtCqD,EAAWrD,MAEvB,CAED,kBAAIuD,GACF,OAAO1f,KAAK+c,eACb,CAED,kBAAI2C,CAAgB9e,GACdZ,KAAK+c,kBAAoBnc,IACzBA,EAAOd,EAAMS,IAAI,OAAQP,MACxBF,EAAMW,OAAO,OAAQT,MAC1BA,KAAK+c,gBAAkBnc,EACxB,CAED,aAAI+e,GACF,OAAO3f,KAAKgd,UACb,CAED,aAAI2C,CAAW/e,GACTZ,KAAKgd,aAAepc,IACpBA,EAAOd,EAAMS,IAAI,OAAQP,MACxBF,EAAMW,OAAO,OAAQT,MAC1BA,KAAKgd,WAAapc,EACnB,CAED,IAAAuT,GAAU,CAEV,kBAAIyL,GACF,OAAO5f,KAAKid,eACb,CAED,kBAAI2C,CAAgBhf,GACdZ,KAAKid,kBAAoBrc,IACzBA,EAAOd,EAAMS,IAAI,YAAaP,MAC7BF,EAAMW,OAAO,YAAaT,MAC/BA,KAAKid,gBAAkBrc,EACxB,CAED,QAAA+T,GAAc,CAEd,iBAAIkL,GAAmB,OAAO7f,KAAK8f,cAAiB,CAEpD,iBAAID,CAAejf,GACbZ,KAAK8f,iBAAmBlf,IACxBA,EACFd,EAAMS,IAAI,aAAcP,MAExBF,EAAMW,OAAO,aAAcT,MAE7BA,KAAK8f,eAAiBlf,EACvB,CAED,SAAA2U,CAAWL,GAAS,CAEpB,OAAAnH,CAASrC,GACF1L,KAAKkF,KAAKzC,QAAQzC,KAAKuL,aAAazF,UAKzC9F,KAAK4P,OAAOlE,GAJV1L,KAAKiL,UAKR,CAED,MAAA2E,CAAQlE,GAAkB,CAE1B,cAAAqU,CAAgB7a,EAAM8a,GACpB,GAAI9a,EAAK9B,GAAI,OAAO8B,EAAK9B,GACzB,MAAMA,EAAKyU,EAAS,GAAG7X,KAAKoD,MAAM4c,KAGlC,OAFAhgB,KAAK6B,KAAK,WAAWuB,SAAU4c,KAC/B9a,EAAKgK,aAAa,KAAM9L,GACjBA,CACR,CAED,cAAI6c,GACF,OAAOjgB,KAAKmd,WACb,CAED,QAAAlS,GACEjL,KAAKiD,MAAM,uBAAuBjD,KAAKuL,aAAaxB,iCAAiC/J,KAAK2D,QAAQP,OAClGpD,KAAK6T,gBAAgB7T,KAAKuL,aAAaH,WACvCpL,KAAKgV,WACLlV,EAAMW,OAAO,OAAQT,MACrBA,KAAKud,QAAU,KACfvd,KAAKyd,MAAQ,KACbzd,KAAKqf,aAAc,EACnBrf,KAAKsf,YAAa,EAClBtf,KAAK6d,OAAS,KACd/d,EAAMQ,UAAU,UAAU0R,MAAMvR,OAAOT,MACvCA,KAAK0f,gBAAiB,EACtB1f,KAAK2f,WAAY,EACjB3f,KAAK4f,gBAAiB,EACtB5f,KAAK6f,eAAgB,EACrB7f,KAAKiN,SAASjC,UACdhL,KAAKiN,SAAW,KAChBjN,KAAKoN,QAAQpC,UACbhL,KAAKoN,QAAU,KACfpN,KAAKuN,SAASvC,UACdhL,KAAKuN,SAAW,KAChBvN,KAAK2D,QAAQlD,OAAOT,MACpB,IAAK,MAAMuL,KAAgBvL,KAAK4d,eAAgB9d,EAAMW,OAAO,WAAY8K,GACzEvL,KAAK4d,eAAiB,KACtB5d,KAAKuL,aAAa9K,OAAOT,MACzBA,KAAKmd,aAAc,EACnBnd,KAAKgL,SACN,CAED,OAAAA,GAAa,CAEb,IAAA4B,CAAMvM,EAAMwM,GACV,OAAO7M,KAAK2D,QAAQiJ,KAAKvM,EAAMwM,EAChC,CAED,WAAAqT,CAAa7f,EAAM8a,GACjBnb,KAAKiN,SAAS1M,IAAIF,EAAM8a,EACzB,CAED,cAAAgF,CAAgB9f,EAAM8a,GACpBnb,KAAKiN,SAASxM,OAAOJ,EAAM8a,EAC5B,CAED,MAAAjO,CAAQ7M,EAAMwM,GACZ,OAAO7M,KAAK2D,QAAQuJ,OAAO7M,EAAMwM,EAClC,CAED,SAAAuT,CAAW/f,EAAM8a,GACfnb,KAAKoN,QAAQ7M,IAAIF,EAAM8a,EACxB,CAED,YAAAkF,CAAchgB,EAAM8a,GAClBnb,KAAKoN,QAAQ3M,OAAOJ,EAAM8a,EAC3B,CAED,OAAA9N,CAAShN,EAAMwM,GACb,OAAO7M,KAAK2D,QAAQ0J,QAAQhN,EAAMwM,EACnC,CAED,UAAAyT,CAAYjgB,EAAM8a,GAChBnb,KAAKuN,SAAShN,IAAIF,EAAM8a,EACzB,CAED,aAAAoF,CAAelgB,EAAM8a,GACnBnb,KAAKuN,SAAS9M,OAAOJ,EAAM8a,EAC5B,CAED,SAAI7H,GACF,OAAOtT,KAAKkF,KAAKoO,KAClB,CAED,QAAAiE,CAAUP,GACRO,EAASvX,KAAKkF,KAAM8R,EACrB,CAED,WAAAQ,CAAaR,GACXQ,EAAYxX,KAAKkF,KAAM8R,EACxB,CAED,QAAAS,CAAUT,GACR,OAAOS,EAASzX,KAAKkF,KAAM8R,EAC5B,CAED,cAAIM,GACF,OAAOJ,EAAclX,KAAKkF,KAC3B,CAED,MAAAzE,GACET,KAAKkF,KAAKsb,WAAW7T,YAAY3M,KAAKkF,KACvC,CAED,YAAAgK,CAAcpB,EAAelN,GAC3BZ,KAAKkF,KAAKgK,aAAapB,EAAelN,EACvC,CAED,YAAA6f,CAAc3S,GACZ,OAAO9N,KAAKkF,KAAKub,aAAa3S,EAC/B,CAED,YAAA4S,CAAc5S,GACZ,OAAO9N,KAAKkF,KAAKwb,aAAa5S,EAC/B,CAED,eAAA+F,CAAiB/F,GACf9N,KAAKkF,KAAK2O,gBAAgB/F,EAC3B,CAED,WAAA8F,CAAa+M,EAAc/f,GACzBZ,KAAKkF,KAAKoO,MAAMM,YAAY+M,EAAc/f,EAC3C,CAED,cAAAmT,CAAgB4M,GACd3gB,KAAKkF,KAAKoO,MAAMS,eAAe4M,EAChC,CAED,KAAAnF,GACExb,KAAKkF,KAAKsW,OACX,CAED,IAAAoF,GACE5gB,KAAKkF,KAAK0b,MACX,CAED,WAAAC,GACE7gB,KAAK8gB,YAAczF,GAAajT,KACjC,CAED,SAAA2Y,GACE1F,GAAaG,MAAMxb,KAAK8gB,YACzB,CAED,YAAAE,GACE,MAAMC,EAAUjhB,KAAKkhB,cAAclhB,KAAKkF,KAAKsb,YACzCS,GAASA,EAAQzF,OACtB,CAED,aAAA0F,CAAe3X,GACb,IAAKA,EAAQ,OAAO,KACpB,MAAM4X,EAAU,IAAIxJ,EAAapO,IACjC,GAAI4X,EAAQpZ,QAAU,EACpB,OAAO/H,KAAKkhB,cAAc3X,EAAOiX,YAC5B,CACL,MAAMpY,EAAQ+Y,EAAQlZ,QAAQjI,KAAKkF,MACnC,OAAOic,EAAQ/Y,GAASA,EAAQ+Y,EAAQpZ,OAAS,EAAI,GAAK,GAC3D,CACF,CAED,YAAIqZ,GACF,OAAOphB,KAAKkF,OAASb,SAASgd,aAC/B,CAED,cAAAC,GACE,MAAMC,EAAOvhB,KAAKwhB,UAEZC,EAAS3hB,EAAMQ,UAAU,QAE3BihB,EAAKhO,IAAM,GACbkO,EAAOzN,KAAKuN,EAAKhO,IAAM,IAGrBgO,EAAKG,OAASnf,OAAOof,aACvBF,EAAOzN,KAAKuN,EAAKG,OAASnf,OAAOof,YAAc,GAElD,CAED,OAAAlf,CAASwG,GACP,OAAOjJ,KAAKkF,KAAKzC,QAAQwG,EAC1B,CAED,aAAA6B,CAAe7B,GACb,OAAOjJ,KAAKkF,KAAK4F,cAAc7B,EAChC,CAED,gBAAAI,CAAkBJ,GAChB,OAAOD,EAAsBhJ,KAAKkF,KAAM+D,EACzC,CAED,mBAAAK,CAAqBL,GACnB,OAAOK,EAAoBtJ,KAAKkF,KAAM+D,EACvC,CAED,OAAAuY,GACE,MAAMD,EAAOvhB,KAAKkF,KAAK0c,wBAGvB,OAFAL,EAAKM,OAASN,EAAKO,KAAoB,GAAbP,EAAKpJ,MAC/BoJ,EAAKQ,OAASR,EAAKhO,IAAoB,GAAdgO,EAAKnJ,OACvBmJ,CACR,CAED,YAAIngB,GACF,OAAOtB,EAAMsB,QACd,EAGH,MAAM6d,GACJ,WAAAlf,CAAaM,EAAMyO,EAASqM,EAAS4D,EAAgBC,GACnDhf,KAAKK,KAAOA,EACZL,KAAKgiB,UAAY,MAAM3hB,IACvBL,KAAK8O,QAAUA,EACf9O,KAAKmb,QAAUA,EACfnb,KAAK+e,gBAAoC,IAAnBA,EACtB/e,KAAKgf,iBAAsC,IAApBA,CACxB,CAED,MAAAtJ,CAAQzU,GACFA,EAAEZ,OAASL,KAAKgiB,WAChB/gB,EAAE6N,UAAY9O,KAAK8O,QAAQlO,QAC7BZ,KAAKmb,QAAQla,GACTjB,KAAK+e,gBACP9d,EAAE8d,iBAEA/e,KAAKgf,iBACP/d,EAAE+d,kBAGP,EAGH,MAAMZ,GACJ,WAAAre,CAAamF,EAAM7E,EAAM8a,EAAS7V,GAChCtF,KAAKiiB,MAAQ/c,EACblF,KAAKkiB,MAAQ7hB,EACbL,KAAKmiB,SAAWhH,EAChBnb,KAAKoiB,SAAW9c,CACjB,CAED,WAAI6V,GACF,OAAOnb,KAAKmiB,QACb,CAED,MAAAhT,GACEnP,KAAKiiB,MAAMzd,iBAAiBxE,KAAKkiB,MAAOliB,KAAKmiB,SAAUniB,KAAKoiB,SAC7D,CAED,YAAA9D,CAAchZ,EAAU,MACtB,QAAQ,GACN,KAAiB,OAAZA,EACL,IAA8B,kBAAlBtF,KAAKoiB,UAA6C,kBAAZ9c,GAAyBtF,KAAKoiB,WAAa9c,EAC3F,OAAO,EAET,KAAKxE,OAAOC,KAAKf,KAAKoiB,UAAUra,SAAWjH,OAAOC,KAAKuE,GAASyC,OAC9D,OAAO,EAET,KAAKjH,OAAOC,KAAKuE,GAAS+c,MAAM7I,GAAOxZ,KAAKoiB,SAAS5I,KAASlU,EAAQkU,IACpE,OAAO,EAGX,OAAO,CACR,CAED,QAAAxE,GACEhV,KAAKiiB,MAAMhN,oBAAoBjV,KAAKkiB,MAAOliB,KAAKmiB,SAAUniB,KAAKoiB,SAChE,EAGH,MAAMxD,GACJ,WAAA7e,CAAa8V,EAAMtV,GACjBP,KAAK6V,KAAOA,EACZ7V,KAAKO,IAAMA,CACZ,CAED,MAAAmV,CAAQG,EAAM5U,GACRjB,KAAK6V,OAASA,GAAM7V,KAAKO,IAAIU,EAClC,EC/kBH,MAAMqhB,GAAkB,CACtBC,SAAU3c,EAAGL,MAAM,YACnBid,QAAS5c,EAAGL,MAAM,WAClBkd,QAAS7c,EAAGL,MAAM,YCHdmd,GAAqB,CACzBC,MAAO/c,EAAGO,SAAS,aAAc,SACjCyc,MAAOhd,EAAGO,SAAS,aAAc,SACjC0c,SAAUjd,EAAGO,SAAS,aAAc,YACpC2c,QAASld,EAAGO,SAAS,aAAc,WACnC4c,MAAOnd,EAAGO,SAAS,aAAc,SACjC6c,QAASpd,EAAGO,SAAS,aAAc,WACnC8c,UAAWrd,EAAGO,SAAS,aAAc,cCJvC,MAAM+c,WAAmBvG,GACvB,WAAA5c,CAAaM,EAAMyF,EAAUqd,EAA+BC,GAC1Dra,QACA/I,KAAKK,KAAOA,EACZL,KAAKqjB,UAAYvd,EACjB9F,KAAKmjB,8BAAgCA,EACrCnjB,KAAKojB,kCAAoCA,EACzCpjB,KAAKsjB,SAAWtjB,KAAKqjB,UAAY,KAAOrjB,KAAKK,KAAK+C,GAClDpD,KAAKujB,aAAc,EACnBvjB,KAAKW,WAAY,EACjBX,KAAKwjB,wBAAyB,EAC9BxjB,KAAKyjB,eAAgB,EACrBzjB,KAAK0jB,gBAAkB,EACxB,CAED,4BAAW3Z,GACT,MAAO,YACR,CAED,IAAA+T,GACE9d,KAAKsgB,WAAWoC,GAAmBC,MAAO3iB,KAAK2jB,MAAMrgB,KAAKtD,OAC1DA,KAAKsgB,WAAWoC,GAAmBK,MAAO/iB,KAAK4jB,OAAOtgB,KAAKtD,OAC3DA,KAAKsgB,WAAWoC,GAAmBM,QAAShjB,KAAK4jB,OAAOtgB,KAAKtD,OAC7DA,KAAKogB,UAAUsC,GAAmBO,UAAWjjB,KAAK6jB,SAASvgB,KAAKtD,OAChEA,KAAKsL,SAAS,mBAAmBtL,KAAKoD,OAAQpD,KAAKmjB,+BACnDnjB,KAAKkN,OAAOwV,GAAmBE,OAC/B5iB,KAAK0e,WAAW1e,KAAKoD,GAAIpD,KAAK8jB,WAAWxgB,KAAKtD,OAC9CA,KAAK4jB,QACN,CAED,aAAI7F,GAAe,OAAOhV,MAAMgV,SAAY,CAE5C,aAAIA,CAAWnd,GACTZ,KAAK+d,YAAcnd,IACvBmI,MAAMgV,UAAYnd,EACdA,EAAOZ,KAAKkN,OAAOwV,GAAmBE,OACrC5iB,KAAKkN,OAAOwV,GAAmBI,SACrC,CAED,YAAIpiB,GACF,OAAOV,KAAKW,SACb,CAED,YAAID,CAAUE,GACRZ,KAAKW,YAAcC,IACvBZ,KAAKW,UAAYC,EACbA,EAAOZ,KAAKkN,OAAOwV,GAAmBE,QAExC5iB,KAAKkN,OAAOwV,GAAmBI,SAC3B9iB,KAAK+jB,aAAa/jB,KAAKgkB,WAE9B,CAED,cAAIC,GACF,OAAOjkB,KAAKujB,WACb,CAED,SAAIzX,GACF,MAAMC,EAAQ/L,KACR8L,EAAQhL,OAAOojB,OAAOnb,MAAM+C,MAAO,CACvC+X,SAAU9X,EAAM8X,SAASvgB,KAAKyI,GAC9ByP,MAAOzP,EAAMyP,MAAMlY,KAAKyI,KAGtB/L,KAAKK,KAAK8jB,aAAYrY,EAAMkY,QAAUjY,EAAMiY,QAAQ1gB,KAAKyI,IAqB7D,OAAOoN,GAAerN,EAnBC,CACrB,WAAIsY,GACF,OAAOrY,EAAMqY,QAAQpjB,IAAKqjB,GAAWA,EAAOvY,MAC7C,EACD,SAAIwY,GACF,MAAMA,EAAQvY,EAAMuY,MACpB,OAAOA,EAAQA,EAAMxY,MAAQ,IAC9B,EACD,eAAIiY,GACF,OAAOhY,EAAMgY,WACd,EACD,aAAIhG,GACF,OAAOhS,EAAMgS,SACd,EACD,YAAIrd,GACF,OAAOqL,EAAMrL,QACd,GAIJ,CAED,WAAI0jB,GACF,OAAOpkB,KAAKie,uBAAuBje,KAAKmjB,8BAA8BpZ,kBACvE,CAED,MAAA6Z,GACE5jB,KAAKukB,WACLvkB,KAAKwkB,mBACN,CAED,QAAAD,GACE,IAAKvkB,KAAKojB,kCAER,YADApjB,KAAKykB,OAAS,MAIhB,MAAMH,EAAQtkB,KAAK2D,QAAQiK,qBAAqB5N,KAAKojB,kCAAmCpjB,KAAKD,YAAYgK,mBACpGua,GAAUA,EAAMI,SAAS1kB,MAK9BA,KAAKykB,OAASH,EAJZtkB,KAAKykB,OAAS,IAKjB,CAED,SAAIH,GACF,OAAOtkB,KAAKykB,MACb,CAED,QAAAZ,CAAUc,GACR,SAAyB,IAArB3kB,KAAK+jB,cAAyB/jB,KAAK+d,YAAc/d,KAAKW,aAC1DX,KAAK6gB,cACL7gB,KAAKujB,aAAc,EACnBvjB,KAAK+jB,aAAc,GACdY,GAAY3kB,KAAKskB,QAAOtkB,KAAKskB,MAAMM,QAAU5kB,OAC3C,EACR,CAED,OAAAgkB,CAASW,EAAUE,GAAe,GAChC,OAAyB,IAArB7kB,KAAK+jB,iBACJ/jB,KAAKK,KAAK8jB,YAAcnkB,KAAKskB,OAAStkB,KAAKskB,MAAMM,UAAY5kB,QAClEA,KAAK+jB,aAAc,GACdY,GAAY3kB,KAAKskB,OAAStkB,KAAKskB,MAAMM,UAAY5kB,OAAMA,KAAKskB,MAAMM,QAAU,MAC5EC,GAAc7kB,KAAKwb,QACnBxb,KAAKujB,aAAavjB,KAAKqN,QAAQqV,GAAmBC,QAChD,GACR,CAED,eAAIoB,GACF,OAAO/jB,KAAK8kB,YACb,CAED,eAAIf,CAAanjB,GACf,GAAIZ,KAAK8kB,eAAiBlkB,IAAWZ,KAAK+d,YAAuB,IAAVnd,GAAvD,CACKZ,KAAKujB,aAAavjB,KAAKiF,SAASrE,EAAQ0hB,GAAgBC,SAAWD,GAAgBE,QAASxiB,MACjGA,KAAK8kB,aAAelkB,EAChBA,EAAOZ,KAAKuX,SAASvX,KAAKsjB,UACzBtjB,KAAKwX,YAAYxX,KAAKsjB,UAC3B,IAAK,IAAIvf,EAAI,EAAGA,EAAI/D,KAAKokB,QAAQrc,OAAQhE,IAAK/D,KAAKokB,QAAQrgB,GAAG1B,MAAMzB,EALW,CAMhF,CAED,wBAAImkB,GACF,OAAO/kB,KAAKglB,eAAe5F,KAAKiF,GAAUA,EAAOU,qBAClD,CAED,YAAAE,GACE,OAAOjlB,KAAKyjB,aACb,CAED,KAAAE,GAAW,CAEX,MAAAuB,CAAQC,GACN,GAAKnlB,KAAKK,KAAK8jB,WAEb,QAAQ,GACN,KAAMgB,EACN,KAAKnlB,KAAK+jB,YACR/jB,KAAKgkB,SAAQ,GAAO,GACpB,MAEF,QACEhkB,KAAK6jB,gBATgB7jB,KAAK6jB,UAYjC,CAED,kBAAIuB,GACF,OAAOplB,KAAKokB,QAAQhF,KAAMiF,GAAoBA,EAAOjD,SACtD,CAED,YAAIA,GACF,QAAIrY,MAAMqY,aACNphB,KAAKolB,gBACFplB,KAAKqJ,iBAAiB,UAAUtB,OAAS,EACjD,CAED,KAAAyT,GACMxb,KAAK0jB,gBAAgB3b,OAAS,EAAG/H,KAAK0jB,gBAAgB,GAAGlI,QACxDxb,KAAK+gB,WACX,CAED,kBAAIiE,GACF,OAAOhlB,KAAK0jB,eACb,CAED,iBAAAc,GACMxkB,KAAKwjB,yBACTxjB,KAAKwjB,wBAAyB,EAC9BxjB,KAAKiS,QAAQjS,KAAKqlB,mBAAmB/hB,KAAKtD,OAC3C,CAED,kBAAAqlB,GAIE,GAHArlB,KAAKwjB,wBAAyB,EAC9BxjB,KAAK0jB,gBAAkB1jB,KAAKslB,gBAAgBtlB,KAAKokB,WAE7CpkB,KAAKyjB,eAAkD,IAAhCzjB,KAAK0jB,gBAAgB3b,QAAgB/H,KAAKK,KAAKklB,gBAM1E,GALAvlB,KAAKwlB,YACLxlB,KAAKyjB,eAAgB,EAErBzjB,KAAKylB,cAAa,GAEdzlB,KAAKskB,MACPtkB,KAAKskB,MAAMoB,gBAIb,GAAI1lB,KAAKujB,aAAevjB,KAAK+d,WAAa/d,KAAKU,WAAaV,KAAKskB,MAC/D,QAAQ,GACN,KAAKtkB,KAAK6V,OAAS7V,KAAKoD,GACtBpD,KAAK8jB,aACL,MAEF,KAAK9jB,KAAK+kB,qBACR/kB,KAAK6jB,WAIZ,CAED,SAAA2B,GAAe,CAEf,UAAA1B,GACE9jB,KAAK6jB,WACL7jB,KAAKiS,QAAQ,KAAQjS,KAAKkN,OAAOwV,GAAmBO,YACrD,CAED,eAAAqC,CAAiBK,GACf,OAAOA,EAAW5W,OAAOsV,GAAUA,EAAOc,cAAgBnlB,KAAKkF,KAAKqM,SAAS8S,EAAOnf,MACrF,CAED,YAAAugB,CAAcd,GAAW,GACvB,MAAM5G,GAAa/d,KAAKK,KAAKklB,gBAAkBvlB,KAAK0jB,gBAAgBtE,KAAKiF,IAAWA,EAAOuB,YAEvF5lB,KAAK+d,YAAcA,IAEvB/d,KAAK+d,UAAYA,EAEb4G,KAEC3kB,KAAK+d,WAAa/d,KAAK+jB,cACtB/jB,KAAKskB,MAAOtkB,KAAKkN,OAAOwV,GAAmBI,SACtC9iB,KAAKK,KAAK8jB,YAAYnkB,KAAKgkB,WAGlChkB,KAAK+d,YACH/d,KAAKskB,OAAOtkB,KAAKkN,OAAOwV,GAAmBE,OAC3C5iB,KAAK6V,OAAS7V,KAAKoD,IACrBpD,KAAK8jB,eAGV,CAED,OAAA9Y,GACEhL,KAAKykB,OAAS,KACdzkB,KAAK0jB,gBAAkB,KACvB3a,MAAMiC,UACNhL,KAAKkN,OAAOwV,GAAmBI,QAChC,EC1QH,MAAM+C,WAAyBlJ,GAC7B,WAAA5c,CAAaM,GACX0I,QACA/I,KAAKK,KAAOA,EACZL,KAAK8N,cAAgBzN,EAAKylB,UAAY,QAAUzlB,EAAK+C,GAAKwC,EAAGK,KAAK5F,EAAK+C,IACvEpD,KAAK+lB,cAAe,CACrB,CAED,4BAAWhc,GACT,MAAO,kBACR,CAED,aAAIic,GACF,OAAOhmB,KAAKuL,aAAa5B,QAAQqb,eAAeiB,SAASjmB,KAC1D,CAED,eAAImlB,GACF,OAAOnlB,KAAK+lB,YACb,CAED,cAAIH,GACF,OAAO5lB,KAAKK,KAAK6lB,YAAclmB,KAAK0gB,aAAa,WAClD,CAED,IAAA5C,GACE9d,KAAK+lB,aAAe/lB,KAAK0gB,aAAa1gB,KAAK8N,eAC3C9N,KAAKmmB,sBAAwBnmB,KAAK+jB,YAClC/jB,KAAKomB,aAAepmB,KAAKuL,aAAa5B,QAAQzE,KAAKqM,SAASvR,KAAKkF,MACjElF,KAAKqmB,WAAarmB,KAAKygB,aAAa,iBACpCzgB,KAAKuL,aAAa5B,QAAQ6a,oBAC1BxkB,KAAKue,aACN,CAED,SAAIzS,GAEF,OAAOhL,OAAOojB,OAAOnb,MAAM+C,MAAO,CAChC0P,MAFYxb,KAECwb,MAAMlY,KAFPtD,OAIf,CAED,WAAAye,CAAaxd,GACPjB,KAAKuL,aAAa5B,SAAS3J,KAAKuL,aAAa5B,QAAQub,OAAOllB,KAAKmlB,YACtE,CAED,MAAAvV,CAAQlE,GACN1L,KAAK+lB,aAAe/lB,KAAK0gB,aAAa1gB,KAAK8N,eAC3C9N,KAAKuL,aAAa5B,QAAQ8b,gBACrBzlB,KAAKsmB,aAAetmB,KAAKgmB,WAAata,EAAezD,QAAQjI,KAAK8N,gBAAkB,GAAK9N,KAAKuL,aAAa5B,UAC1G3J,KAAK+jB,YAAa/jB,KAAKuL,aAAa5B,QAAQka,WACvC7jB,KAAKK,KAAK8jB,YAAYnkB,KAAKuL,aAAa5B,QAAQqa,UAE5D,CAED,KAAA3hB,CAAOzB,GACAZ,KAAKmlB,cACVnlB,KAAKsmB,aAAc,EACnBtmB,KAAKkP,aAAalP,KAAK8N,cAAelN,GACtCZ,KAAKiS,QAAQ,KAAQjS,KAAKsmB,aAAc,IACzC,CAED,eAAIvC,GACF,MAAiD,SAA1C/jB,KAAKygB,aAAazgB,KAAK8N,cAC/B,CAED,wBAAIiX,GACF,OAAO/kB,KAAKmmB,qBACb,CAED,KAAA3K,GACEzS,MAAMyS,QACNxb,KAAKshB,gBACN,CAED,OAAAiF,CAAShF,GACP,MAAMiF,EAAaxmB,KAAKuhB,KACxBvhB,KAAKymB,IAAMlF,EAAKpM,EAAIqR,EAAWrR,EAC/BnV,KAAK0mB,IAAMnF,EAAKlM,EAAImR,EAAWnR,CAChC,CAED,MAAIsR,GACF,OAAO3mB,KAAKymB,GACb,CAED,MAAIG,GACF,OAAO5mB,KAAK0mB,GACb,ECtFI,MAAMG,GAAqB,CAChCC,gBAAiBlhB,EAAGK,KAAKH,SAAS,mBAClCid,MAAOnd,EAAGK,KAAK,UCEjB,MAAM8gB,WAAyBpK,GAC7B,WAAA5c,CAAainB,EAA6BpK,GACxC7T,MAAM6T,GACN5c,KAAKgnB,4BAA8BA,EACnChnB,KAAKinB,SAAW,GAChBjnB,KAAKknB,QAAU,EACflnB,KAAKmnB,eAAgB,EACrBnnB,KAAKyjB,eAAgB,EACrBzjB,KAAKonB,YAAa,CACnB,CAED,4BAAWrd,GACT,MAAO,kBACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUsC,GAAmBE,MAAO5iB,KAAK4jB,OAAOtgB,KAAKtD,OAC1DA,KAAKogB,UAAUsC,GAAmBG,SAAU7iB,KAAK0lB,SAASpiB,KAAKtD,OAC/DA,KAAKogB,UAAUsC,GAAmBI,QAAS9iB,KAAK4jB,OAAOtgB,KAAKtD,OAC5DA,KAAKqN,QAAQqV,GAAmBK,OAChC/iB,KAAKonB,WAA6D,UAAhDpnB,KAAKygB,aAAaoG,GAAmB9D,OACvD/iB,KAAK4jB,QACN,CAED,SAAI9X,GACF,MAAMC,EAAQ/L,KAERqnB,EAAiB,CACrB,SAAIjf,CAAOxH,GACTmL,EAAM3D,MAAQxH,CACf,EACD,SAAIwH,GACF,OAAO2D,EAAM3D,KACd,EACD,UAAIL,GACF,OAAOgE,EAAMhE,MACd,EACD,WAAI6c,GACF,MAAMA,EAAU7Y,EAAM6Y,QACtB,OAAOA,EAAUA,EAAQ9Y,MAAQ,IAClC,EACD,WAAIwb,GACF,OAAOvb,EAAMub,QAAQtmB,IAAKumB,GAAWA,EAAOzb,MAC7C,EACD,YAAIsV,GACF,OAAOrV,EAAMqV,QACd,EACD,aAAIoG,CAAW5mB,GACbmL,EAAMyb,UAAY5mB,CACnB,EACD,aAAI4mB,GACF,OAAOzb,EAAMyb,SACd,GAGH,OAAOrO,GAAepQ,MAAM+C,MAAOub,EACpC,CAED,QAAA3C,CAAU6C,GACR,OAAO,CACR,CAED,UAAAE,GACE,MAAMH,EAAUtnB,KAAK2D,QAAQ8J,uBAAuBzN,KAAKgnB,4BAA6BhnB,KAAKD,YAAYgK,mBAAmB,GAC1H/J,KAAKinB,SAAWK,EAAQvY,OAAO/O,KAAK0kB,SAASphB,KAAKtD,OAAO+O,OAAOwY,GAAUA,EAAOxJ,WAAawJ,EAAO7mB,UACpF4mB,EAAQvY,OAAOwY,IAAWvnB,KAAKinB,SAAShB,SAASsB,IACzDzf,QAAQ4f,GAAWA,EAAQ1D,UACrC,CAED,QAAA0B,CAAUiC,GAAmB,GACvB3nB,KAAKmnB,eAAkBnnB,KAAKyjB,gBAAkBkE,IAClD3nB,KAAKmnB,eAAgB,EACrBnnB,KAAKiS,QAAQjS,KAAK4nB,UAAUtkB,KAAKtD,OAClC,CAED,SAAA4nB,GAKE,GAJA5nB,KAAKynB,aACLznB,KAAKmnB,eAAgB,EACrBnnB,KAAKyjB,eAAgB,EAEhBzjB,KAAKwnB,UAAV,CAUA,GAAIxnB,KAAK6V,KACP,IAAK,IAAI9R,EAAI,EAAGA,EAAI/D,KAAK+H,OAAQhE,IAAK,CACpC,MAAMwjB,EAASvnB,KAAKsnB,QAAQvjB,GAC5B,GAAI/D,KAAK6V,OAAS0R,EAAOnkB,GAGvB,OAFApD,KAAKoI,MAAQrE,EACb/D,KAAKiS,QAAQ,KAAQjS,KAAKkN,OAAOwV,GAAmBO,aAC7Clf,CAEV,CAGH,IAAK,IAAIA,EAAI,EAAGA,EAAI/D,KAAK+H,OAAQhE,IAAK,CAEpC,GADe/D,KAAKsnB,QAAQvjB,GACjBghB,qBAET,OADA/kB,KAAKoI,MAAQrE,EACNA,CAEV,CAED,OAAO/D,KAAK6nB,UArBX,CAPC,IAAK,IAAI9jB,EAAI,EAAGA,EAAI/D,KAAK+H,OAAQhE,IAAK,CACpC,MAAMwjB,EAASvnB,KAAKsnB,QAAQvjB,GACxBwjB,EAAOxC,sBACTwC,EAAO1D,UAAS,EAEnB,CAwBJ,CAED,MAAAD,GACE5jB,KAAKynB,aACDznB,KAAKyjB,eACHzjB,KAAKwnB,WAAWxnB,KAAK6nB,UAE5B,CAED,WAAIP,GACF,OAAOtnB,KAAKinB,QACb,CAED,UAAIlf,GACF,OAAO/H,KAAKsnB,QAAUtnB,KAAKsnB,QAAQvf,OAAS,CAC7C,CAED,QAAA8f,CAAUC,GAAe,GACvB9nB,KAAKknB,YAASlhB,EACd,IAAIoC,EAAQ0f,EACZ,IAAK,IAAI/jB,EAAI,EAAGA,EAAI/D,KAAK+H,OAAQhE,IAC/B,GAAI/D,KAAKsnB,QAAQvjB,GAAGggB,YAAa,CAC/B3b,EAAQrE,EACR,KACD,CAIH,OADA/D,KAAKoI,MAAQA,EACNA,CACR,CAED,SAAIA,GACF,OAAOpI,KAAKknB,MACb,CAED,SAAI9e,CAAOxH,GACT,KAAIA,GAAS,GAAKA,GAASZ,KAAK+H,QAAUnH,IAAUZ,KAAKknB,QAAzD,CACAlnB,KAAKknB,OAAStmB,EACd,IAAK,IAAImD,EAAI,EAAGA,EAAI/D,KAAK+H,OAAQhE,IAAK,CACpC,MAAMwjB,EAASvnB,KAAKsnB,QAAQvjB,GACxBnD,IAAUmD,EACPwjB,EAAOxD,aAAawD,EAAO1D,UAAS,IAEpC7jB,KAAKwnB,WAAcxnB,KAAK+nB,aAAsC,IAAvBR,EAAOxD,aAAuBwD,EAAOvD,SAAQ,EAE5F,CACDhkB,KAAKqC,QACLrC,KAAKiF,SAASqd,GAAgBG,QAASziB,KAAK4kB,QAX4B,CAYzE,CAED,WAAIA,GACF,OAAqB,IAAjB5kB,KAAKknB,QAAiB1f,MAAMxH,KAAKknB,QAAgB,KAC9ClnB,KAAKinB,SAASjnB,KAAKknB,SAAW,IACtC,CAED,WAAItC,CAAS2C,GACXvnB,KAAKoI,MAAQpI,KAAKsnB,QAAQrf,QAAQsf,EACnC,CAED,YAAInG,GACF,MAAMwD,EAAU5kB,KAAK4kB,QACrB,QAAIA,GAAgBA,EAAQxD,QAE7B,CAED,aAAIoG,CAAW5mB,GACb,MAAM4mB,IAAc5mB,EAChBZ,KAAKonB,aAAeI,IACxBxnB,KAAKonB,WAAaI,EAClBxnB,KAAKkP,aAAa2X,GAAmB9D,QAASniB,GAC9CZ,KAAK4jB,SACN,CAED,aAAI4D,GACF,OAAOxnB,KAAKonB,UACb,CAED,cAAIW,GACF,OAAO,CACR,CAED,MAAAnY,CAAQoY,GACFA,EAAgB/B,SAASY,GAAmB9D,SAC9C/iB,KAAKwnB,UAA4D,UAAhDxnB,KAAKygB,aAAaoG,GAAmB9D,OAEzD,CAED,KAAA1gB,GAAW,CAEX,OAAA2I,GACEjC,MAAMiC,UACNhL,KAAKqN,QAAQqV,GAAmBM,SAChChjB,KAAKinB,SAAW,IACjB,ECjNI,MAAMgB,GAAiB,CAC5BC,OAAQ,CACN9kB,GAAI,WACJ0iB,WAAW,EACXqC,cAAc,EACdhE,YAAY,EACZ+B,YAAY,EACZX,gBAAgB,GAElB6C,OAAQ,CACNhlB,GAAI,WACJ0iB,WAAW,EACXqC,cAAc,EACdhE,YAAY,EACZ+B,YAAY,EACZX,gBAAgB,GAElB8C,OAAQ,CACNjlB,GAAI,SACJ0iB,WAAW,EACXqC,cAAc,EACdhE,YAAY,EACZ+B,YAAY,EACZX,gBAAgB,ICpBpB,MAAM+C,WAAuBzC,GAC3B,WAAA9lB,GACEgJ,MAAMkf,GAAeC,OACtB,CAED,4BAAWne,GACT,MAAO,gBACR,ECRI,MAAMwe,GAAmB,CAC9BC,SAAU5iB,EAAGE,SAAS,YACtB2iB,WAAY7iB,EAAGE,SAAS,eCFnB,MAAM4iB,GAAoB,CAC/BC,OAAQ/iB,EAAG,cCDN,MAAMgjB,GAAoB,CAC/BC,WAAY,IAAIjjB,EAAGK,KAAK,kBCDnB,MAAM6iB,GAAkB,CAC7BC,YAAa,GAAGnjB,EAAGE,SAAS,kBCDjBkjB,GAAiB,CAC5BC,YAAa,GAAGrjB,EAAGK,KAAKH,SAAS,iBACjCojB,OAAQ,GAAGtjB,EAAGK,KAAKH,SAAS,uCAAuCF,EAAGK,KAAKH,SAAS,uCCFhFqjB,GAAiB,CACrBC,OAAQxjB,EAAGO,SAAS,SAAU,UAC9Byc,MAAOhd,EAAGO,SAAS,SAAU,UCF/B,MAAMkjB,GAAY,CAAC,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,OAGzDC,GAAgB,CAACzjB,EAAM0jB,IACpBA,EAAUvoB,IAAIsiB,GAAY1d,EAAGE,SAAS,GAAGD,MAASyd,MAAavgB,KAAK,KAGvEymB,GAA0B,GAAG5jB,EAAGE,SAAS,sBAAsBwjB,GAAc,iBAAkBD,QAAezjB,EAAGE,SAAS,sBAAsBwjB,GAAc,iBANlJ,CAAC,OAAQ,MAAO,UAQrBG,GAAgB,CAC3BC,MAAO,GAAG9jB,EAAGE,SAAS,aAAawjB,GAAc,QAASD,QAAeG,MCXrE7O,GAAMpY,OAAOjB,GCCZ,MAAMqoB,GAAgB,CAC3BC,IAAKhkB,EAAGE,SAAS,kBACjB6I,MAAO/I,EAAGE,SAAS,oBACnB+jB,OAAQjkB,EAAGE,SAAS,qBACpB2I,KAAM7I,EAAGE,SAAS,oBCJPgkB,GAAgB,CAC3BxjB,MAAOV,EAAGE,SAAS,oBACnBikB,OAAQnkB,EAAGE,SAAS,qBACpByI,IAAK3I,EAAGE,SAAS,mBCLNkkB,GAAoB,CAC/BJ,IAAK,YACLjb,MAAO,cACPkb,OAAQ,eACRpb,KAAM,cCJKwb,GAAiB,CAC5B3jB,MAAO,cACPyjB,OAAQ,eACRxb,IAAK,aCHM2b,GAAgB,CAC3BxlB,KAAM,iBACNC,OAAQ,oBCoCVgW,GAAIwP,KAAO,CACTxN,SAAUA,GACVP,YAAaA,GACbhO,SAAUA,EACV8U,WAAYA,GACZ2C,iBAAkBA,GAClBkB,iBAAkBA,GAClBkB,eAAgBA,GAChB3F,gBAAiBA,GACjBuE,mBAAoBA,GACpBnE,mBAAoBA,GACpB0H,SCvCF,cAAuBlH,GACrB,WAAAnjB,GACEgJ,MAAMkf,GAAeC,OAAQK,GAAiBC,SAAUF,GAAgB,iBACzE,CAED,4BAAWve,GACT,MAAO,UACR,CAED,IAAA+T,GACE/U,MAAM+U,OACN9d,KAAKmP,OAAO,gBAAiBnP,KAAKqqB,cAAc/mB,KAAKtD,MACtD,CAED,aAAAqqB,CAAeppB,GACRjB,KAAKsqB,gBACNtqB,KAAKuqB,UAAUC,aAAaxqB,KAAKuqB,UACrCvqB,KAAKuqB,SAAW,KAChBvqB,KAAKsqB,eAAgB,EACrBtqB,KAAKwX,YAAY+Q,GAAiBE,YAC7BzoB,KAAK+jB,aACJ/jB,KAAKoB,WAAUpB,KAAKsT,MAAMmX,UAAY,IAE7C,CAED,OAAAC,GACM1qB,KAAKoB,WAAUpB,KAAKsT,MAAMmX,UAAY,OAC3C,CAED,QAAA5G,CAAUc,GACR,IAAyB,IAArB3kB,KAAK+jB,cAAyB/jB,KAAK+d,UAAW,OAAO,EACzD/d,KAAK0qB,UACL1qB,KAAK2qB,WAAW,IAAM5hB,MAAM8a,SAASc,GACtC,CAED,OAAAX,CAASW,EAAUE,GACjB,IAAyB,IAArB7kB,KAAK+jB,YAAuB,OAAO,EACvC/jB,KAAK2qB,WAAW,IAAM5hB,MAAMib,QAAQW,EAAUE,GAC/C,CAED,UAAA8F,CAAY1Y,GACVjS,KAAKsqB,eAAgB,EACjBtqB,KAAKuqB,UAAUC,aAAaxqB,KAAKuqB,UACrCvqB,KAAKuX,SAASgR,GAAiBE,YAC/BzoB,KAAK4qB,SACL5qB,KAAKiS,QAAQ,KACXA,IACAjS,KAAKuqB,SAAWM,WAAW7qB,KAAKqqB,cAAc/mB,KAAKtD,MAAO,MAE7D,CAED,MAAA4qB,GACE5qB,KAAK4T,YAAY,cAAe,QAChC,MAAMwE,EAASpY,KAAKkF,KAAK4lB,aACzB9qB,KAAK4T,YAAY,cAAewE,EAAS,MACzCpY,KAAK4T,YAAY,cAAe,GACjC,CAED,KAAA+P,GACO3jB,KAAKikB,aAAYjkB,KAAK+jB,aAAc,EAC1C,CAED,eAAAuB,CAAiBK,GACf,MAAMoF,EAAU/qB,KAAK2D,QAAQ4F,OAAOK,UAAU5I,IAAI+J,GAAYA,EAASigB,iBAAiBjc,OAAOsV,QAAqBre,IAAXqe,GAAwBsB,EAAW1d,QAAQoc,IAAW,GAC/J,GAAuB,IAAnB0G,EAAQhjB,OAAc,OAAOgjB,EAEjC,GAA0B,KAD1BpF,EAAa5c,MAAMuc,gBAAgBK,IACpB5d,OAAc,OAAO4d,EACpC,MAAMsF,EAAStF,EAAW5W,OAAOmc,GAAaA,EAAUtE,IAAM,GAE9D,GADIqE,EAAOljB,OAAS,IAAG4d,EAAasF,GACV,IAAtBtF,EAAW5d,OAAc,OAAO4d,EACpC,MAAMwF,EAAMC,KAAKD,OAAOxF,EAAW3kB,IAAIkqB,GAAaA,EAAUtE,KACxDyE,EAAO1F,EAAW5W,OAAOmc,GAAaA,EAAUtE,KAAOuE,GAE7D,OADIE,EAAKtjB,OAAS,IAAG4d,EAAa0F,GACR,IAAtB1F,EAAW5d,QACf4d,EAAW2F,KAAK,CAACC,EAAGC,IAAMJ,KAAKK,IAAID,EAAE7E,IAAMyE,KAAKK,IAAIF,EAAE5E,KADlBhB,CAGrC,GDpCD2C,eAAgBA,GAChBoD,eEjDF,cAA6B3E,GAC3B,WAAAhnB,GACEgJ,MAAM,WACP,CAED,4BAAWgB,GACT,MAAO,gBACR,CAED,cAAIge,GACF,OAAO,CACR,GFuCDQ,iBAAkBA,GAClBoD,aGrD0B,CAC1BC,KAAM,SHqDN5d,aAAcA,EACd6d,UIpDF,cAAwBlP,GACtB,4BAAW5S,GACT,MAAO,WACR,CAED,IAAA+T,GACE9d,KAAKkN,OAAOwb,GAAkBC,OAC/B,CAED,OAAApC,GAEE,OADIvmB,KAAKoB,WAAUpB,KAAKsT,MAAM6E,MAAQ,QAC/BnY,KAAKwhB,UAAUrJ,KACvB,CAED,MAAAyS,CAAQzS,GACFnY,KAAKoB,WAAUpB,KAAKsT,MAAM6E,MAAQ,GAAGA,MAC1C,CAED,OAAAnN,GACEhL,KAAKkN,OAAOwb,GAAkBC,OAC/B,GJiCDD,kBAAmBA,GACnBoD,OKtDF,cAAqBnP,GACnB,4BAAW5S,GACT,MAAO,QACR,CAED,IAAA+T,GACE9d,KAAK+rB,QAA2B,SAAjB/rB,KAAK+rB,QACpB/rB,KAAKue,aACN,CAED,WAAAE,GACEze,KAAKklB,QACN,CAED,MAAAA,GACEllB,KAAK+rB,QAA2B,SAAjB/rB,KAAK+rB,OACrB,CAED,WAAIA,GACF,OAAO/rB,KAAKygB,aAAa,eAC1B,CAED,WAAIsL,CAASnrB,GACXZ,KAAKkP,aAAa,eAAgBtO,EAAQ,OAAS,QACpD,CAED,SAAIkL,GACF,MAAMC,EAAQ/L,KACR8L,EAAQhL,OAAOojB,OAAOnb,MAAM+C,MAAO,CACvCoZ,OAAQnZ,EAAMmZ,OAAO5hB,KAAKyI,KAY5B,OAAOoN,GAAerN,EATC,CACrB,WAAIigB,GACF,OAAOhgB,EAAMggB,OACd,EACD,WAAIA,CAASnrB,GACXmL,EAAMggB,QAAUnrB,CACjB,GAIJ,GLaDorB,gBMvDF,cAA8BrP,GAC5B,4BAAW5S,GACT,MAAO,iBACR,CAED,IAAA+T,GACE9d,KAAKsf,YAAa,EAClBtf,KAAK2f,WAAY,EACjB3f,KAAKogB,UAAUsI,GAAkBC,OAAQ3oB,KAAKsS,OAAOhP,KAAKtD,MAC3D,CAED,IAAAmU,GACEnU,KAAKsS,QACN,CAED,MAAAA,GACE,MAAM2Z,EAAajsB,KAAK2D,QAAQ8J,uBAAuB,aAClDzN,KAAKoB,UAAUpB,KAAKsT,MAAMM,YAAY,oBAAqB,QAEhE,MAAMuE,EAAQiT,KAAKc,OAAOD,EAAWjrB,IAAImrB,GAAaA,EAAU5F,YAC5DvmB,KAAKoB,SAAU6qB,EAAWnkB,QAAQqkB,GAAaA,EAAUvB,OAAOzS,IAC/DnY,KAAKsT,MAAMM,YAAY,oBAAqB,GAAGuE,MACrD,GNkCDiU,UOxDF,cAAwBzP,GACtB,4BAAW5S,GACT,MAAO,WACR,CAED,IAAA+T,GACM9d,KAAKkF,OACPlF,KAAKqsB,IAAMrsB,KAAKkF,KAAK4F,cAAc,QAGhC9K,KAAKoB,UACRpB,KAAKsK,SAER,CAED,SAAIwB,GACF,MAAMC,EAAQ/L,KACd,OAAOc,OAAOojB,OAAOnb,MAAM+C,MAAO,CAChCxB,QAASyB,EAAMzB,QAAQhH,KAAKyI,GAC5BugB,QAASvgB,EAAMugB,QAAQhpB,KAAKyI,IAE/B,CAED,KAAAwgB,GACMvsB,KAAKqsB,MACPrsB,KAAKwsB,MAAQxsB,KAAKqsB,IAAI5L,aAAa,MACnCzgB,KAAKysB,SAAWzsB,KAAKqsB,IAAI5L,aAAa,SACtCzgB,KAAK0sB,OAAS1sB,KAAKqsB,IAAI5L,aAAa,OAEpC8L,MAAMvsB,KAAK0sB,QACRha,KAAK7F,GAAQA,EAAK8f,QAClBja,KAAK3F,IACJ,MACM6f,GADS,IAAIC,WACGC,gBAAgB/f,EAAU,aAChD/M,KAAK0Y,IAAMkU,EAAO9hB,cAAc,OAE5B9K,KAAK0Y,KACP1Y,KAAKsK,YAId,CAED,OAAAA,GACE,IAAKtK,KAAK0Y,IAER,YADA1Y,KAAKusB,QAIHvsB,KAAKwsB,YAA+B,IAAfxsB,KAAKwsB,OAC5BxsB,KAAK0Y,IAAIxJ,aAAa,KAAMlP,KAAKwsB,OAInC,IAAI3mB,EAAO7F,KAAK0sB,OAAOK,MAAM,aAAa,GACtClnB,IACFA,EAAOA,EAAK+C,MAAM,GAAI,GAElB,CAAC,OAAQ,QAAS,UAAUqd,SAASpgB,KACvC7F,KAAK0Y,IAAIsU,UAAYhtB,KAAK0Y,IAAIsU,UAAUC,WAAW,eAAgB,OAAOpnB,cAC1E7F,KAAK0Y,IAAIsU,UAAYhtB,KAAK0Y,IAAIsU,UAAUC,WAAW,aAAc,KAAKpnB,gBAItE7F,KAAKysB,eAAqC,IAAlBzsB,KAAKysB,UAC/BzsB,KAAK0Y,IAAIxJ,aAAa,QAASlP,KAAKysB,UAGlCzsB,KAAK0Y,IAAIgI,aAAa,YACxB1gB,KAAK0Y,IAAI7E,gBAAgB,WAG3B7T,KAAKkF,KAAKgK,aAAa,sBAAsB,GC3E3B,IAACge,EAAIC,EAAJD,EDgFLltB,KAAK0Y,IChFIyU,ED4ED,CACpB,eAAe,EACfC,WAAW,GC7EftsB,OAAOC,KAAKosB,GAAOrlB,QAAQ0R,GAAO0T,EAAGhe,aAAasK,EAAK2T,EAAM3T,KDgF3DxZ,KAAKkF,KAAKmoB,aAAartB,KAAK0Y,IAAK1Y,KAAKqsB,IACvC,CAED,OAAAC,GACMtsB,KAAKqsB,KAAOrsB,KAAK0Y,MACnB1Y,KAAKkF,KAAKgK,aAAa,sBAAsB,GAC7ClP,KAAKkF,KAAKmoB,aAAartB,KAAKqsB,IAAKrsB,KAAK0Y,KAEzC,GP7BDkQ,kBAAmBA,GACnB0E,QS3DF,cAAsB3Q,GACpB,4BAAW5S,GACT,MAAO,SACR,CAED,IAAA+T,GACM9d,KAAKoB,UACPpB,KAAKsK,SAER,CAED,SAAIwB,GAEF,OAAOhL,OAAOojB,OAAOnb,MAAM+C,MAAO,CAChCxB,QAFYtK,KAEGsK,QAAQhH,KAFXtD,OAIf,CAED,KAAAusB,GACEvsB,KAAKutB,MAAQvtB,KAAKkF,KAAKub,aAAa,QACpC,MAAM+M,EAAWxtB,KAAKutB,MAAMpW,MAAM,KAClCnX,KAAKytB,OAASD,EAAS,GACvBxtB,KAAK0tB,QAAUF,EAAS,GAExB,MAAMG,EAAM,IAAIC,eAChBD,EAAIE,OAAS,KACX,MACMjB,GADS,IAAIC,WACGC,gBAAgBa,EAAIG,aAAc,aACxD9tB,KAAK+tB,eAAiBnB,EAAO9U,eAAe9X,KAAK0tB,SAC7C1tB,KAAK+tB,iBAC6B,WAAhC/tB,KAAK+tB,eAAeC,SACtBhuB,KAAK2W,IAAMiW,EAAO9hB,cAAc,cAAgB9K,KAAK0tB,QAAU,MAC3D1tB,KAAK2W,KAAK3W,KAAKkF,KAAKsb,WAAWyN,aAAajuB,KAAK2W,IAAK3W,KAAKkF,OAG/DlF,KAAK+tB,eAAeG,UAAU3tB,IAAIP,KAAKkF,KAAKgpB,WAG9CluB,KAAKsK,YAGTqjB,EAAIQ,KAAK,MAAOnuB,KAAKytB,QACrBE,EAAIS,MACL,CAED,OAAA9jB,GACOtK,KAAK+tB,eAKV/tB,KAAKkF,KAAKsb,WAAW6M,aAAartB,KAAK+tB,eAAgB/tB,KAAKkF,MAJ1DlF,KAAKusB,OAKR,GTQDzD,gBAAiBA,GACjBuF,WU1DF,cAAyB1R,GACvB,4BAAW5S,GACT,MAAO,YACR,CAED,IAAA+T,GACE9d,KAAKsuB,KAAOtuB,KAAKuuB,QAAQvuB,KAAKkF,MAC9BlF,KAAKwuB,KAAOxuB,KAAKygB,aAAa,QAC9BzgB,KAAKyuB,SAAWzuB,KAAKygB,aAAa,YAClCzgB,KAAK0uB,KAAO,GACZ1uB,KAAK2uB,SACL3uB,KAAKogB,UAAU+I,GAAevG,MAAO5iB,KAAK4jB,OAAOtgB,KAAKtD,OACtDA,KAAKsgB,WAAW6I,GAAevG,MAAO5iB,KAAK4jB,OAAOtgB,KAAKtD,MACxD,CAED,aAAA4uB,QACoB5oB,IAAdhG,KAAKwuB,KAKTjC,MAAMvsB,KAAKwuB,KAAM,CAAEK,OAAQ,OAAQlnB,KAAM,SAAU+K,KAAK3F,IACtD,IAAIA,EAAS+hB,GAOX,MAAM,IAAI1T,MAAM,0CAA4CrO,EAASgiB,QALrE,GADA/uB,KAAK+H,OAASgF,EAASiiB,QAAQ9U,IAAI,oBAAsB,EACrDla,KAAK+H,SAA2B,IAAjB/H,KAAK+H,OACtB,MAAM,IAAIqT,MAAM,mEAElBpb,KAAK2uB,WAINM,MAAOntB,IACR9B,KAAK+H,QAAU,EACf/H,KAAK2uB,SACLxrB,EAAUtB,KAAK,gCAAkC7B,KAAKwuB,KAAO,MAAQ1sB,KAjBrE9B,KAAK+H,QAAU,CAmBlB,CAED,MAAA6H,CAAQlE,IACkC,IAApCA,EAAezD,QAAQ,UACzBjI,KAAKwuB,KAAOxuB,KAAKygB,aAAa,QAC9BzgB,KAAK4uB,kBAGqC,IAAxCljB,EAAezD,QAAQ,cACzBjI,KAAKyuB,SAAWzuB,KAAKygB,aAAa,YAClCzgB,KAAK2uB,SAER,CAED,MAAAA,GAUE,GARI3uB,KAAKoB,WAAUpB,KAAK+H,QAAU,GAE7B/H,KAAK+H,QACR/H,KAAK4uB,gBAGP5uB,KAAKkvB,QAAU,GAEXlvB,KAAKwuB,KAAM,CACb,MAAMW,EAAYnvB,KAAKovB,eAAepvB,KAAKwuB,MACvCW,GAAWnvB,KAAKkvB,QAAQpsB,KAAKqsB,EAAU1P,cAC5C,CAEGzf,KAAK+H,SAA2B,IAAjB/H,KAAK+H,QACtB/H,KAAKkvB,QAAQpsB,KAAK9C,KAAKqvB,YAAYrvB,KAAK+H,SAGtC/H,KAAKyuB,UACPzuB,KAAKkvB,QAAQpsB,KAAK9C,KAAKsvB,mBAAmBtvB,KAAKyuB,WAGjDzuB,KAAK4jB,QACN,CAED,MAAAA,GACO5jB,KAAKkvB,UACVlvB,KAAKqN,QAAQ8b,GAAeC,OAAQppB,KAAKkvB,SACzClvB,KAAKkN,OAAOic,GAAeC,OAAQppB,KAAKkvB,SACzC,CAED,OAAAX,CAASgB,GAEP,OAAIA,EAAKjB,KAAaiB,EAAKjB,KACvBjqB,SAASsB,kBAAoB4pB,EAAahtB,OAAOitB,UAAUC,SACxDzvB,KAAKuuB,QAAQgB,EAAK/lB,cAC1B,CAED,cAAA4lB,CAAgB/U,GAEd,OAAOA,EAAI0S,MADY,yBACU,GAAGziB,QAAQ,IAAK,GAClD,CAED,kBAAAglB,CAAoBI,GAClB,GAAI1vB,KAAKoB,SAAU,OAAOsuB,EAC1B,MACM7pB,EADe,IAAI8pB,KAAKC,aAAa,CAAC5vB,KAAKsuB,MAAO,CAAEjuB,KAAM,aACtCwvB,GAAGH,GAC7B,OAAO7pB,EAAKiQ,OAAO,GAAG2J,cAAgB5Z,EAAK+C,MAAM,EAClD,CAED,WAAAymB,CAAaS,GACX,IAAe,IAAXA,EAAc,OAAO,KAEzB,IAAIC,EAAY,CAAC,SAAU,KAAM,KAAM,KAAM,MACK,UAA9C/vB,KAAKygB,aAAa7a,EAAGK,KAAK,kBAC5B8pB,EAAY,CAAC,QAAS,KAAM,KAAM,KAAM,OAG1C,MAAMhsB,EAAIisB,SAAS5E,KAAK6E,MAAM7E,KAAKrpB,IAAI+tB,GAAS1E,KAAKrpB,IAAI,MAAQ,IACjE,GAAU,IAANgC,EAAS,MAAO,GAAG+rB,KAASC,EAAUhsB,KAE1C,MAAMmsB,EAAOJ,EAAS,KAAQ/rB,EACxBosB,EAAc/E,KAAKgF,MAAgC,KAAzBF,EAAOzoB,OAAO4oB,UAAkB,IAGhE,MAAO,GAFYC,OAAOH,GAAa7lB,QAAQ,IAAK,QAE5BylB,EAAUhsB,IACnC,GV1DDwsB,aW7DF,cAA2B5T,GACzB,4BAAW5S,GACT,MAAO,cACR,CAED,IAAA+T,GACE9d,KAAKsgB,WAAW6I,GAAeC,OAAQppB,KAAK4jB,OAAOtgB,KAAKtD,OACxDA,KAAKkN,OAAOic,GAAevG,MAC5B,CAED,MAAAgB,CAAQsL,GACNlvB,KAAKkF,KAAK8nB,UAAYkC,EAAQnsB,KAAK,MACpC,GXkDDomB,eAAgBA,GAChBH,eAAgBA,GAChBwH,MYhEF,cAAoB7T,GAClB,4BAAW5S,GACT,MAAO,OACR,CAED,IAAA+T,GACE,IAAKnD,GAAIZ,UAAUpB,QAAQG,qBAAsB,CAC/C9Y,KAAKywB,MAAQ,GAAK,EAClB,IAAK,MAAMzZ,KAAahX,KAAKsX,WAC3B,GAAItX,KAAKuL,aAAazF,SAASmC,QAAQjI,KAAKsX,WAAWN,IAAc,EAAG,CACtE,MAAMyZ,EAAQzwB,KAAKsX,WAAWN,GAAWG,MAAM,UAC3CsZ,EAAM,KACRzwB,KAAKywB,MAAQA,EAAM,GAAGtZ,MAAM,KAAK,GAAKsZ,EAAM,GAAGtZ,MAAM,KAAK,GAE7D,CAEHnX,KAAKqf,aAAc,EACnBrf,KAAK4jB,QACN,CACF,CAED,MAAA7R,GACgB/R,KAAKwhB,UAAUrJ,QACfnY,KAAK0wB,cAAc1wB,KAAK4jB,QACvC,CAED,MAAAA,GACE5jB,KAAK0wB,aAAe1wB,KAAKwhB,UAAUrJ,MACnCnY,KAAKsT,MAAM8E,OAASpY,KAAK0wB,aAAe1wB,KAAKywB,MAAQ,IACtD,GZoCDhH,cAAeA,GACfkH,Ua7DF,cAAwBhU,GACtB,WAAA5c,CAAa4H,EAAOuiB,GAAcxlB,KAAMksB,EAAS,CAAC5G,GAAkBH,OAAQG,GAAkBJ,IAAKI,GAAkBvb,KAAMub,GAAkBrb,OAAQkiB,EAAS,CAAC5G,GAAeF,OAAQE,GAAe3jB,MAAO2jB,GAAe1b,KAAMuiB,EAAiB,IAChP/nB,QACA/I,KAAK6G,MAAQc,EACb3H,KAAK+wB,QAAUH,EACf5wB,KAAKgxB,QAAUH,EACf7wB,KAAKixB,gBAAkBH,EACvB9wB,KAAKkxB,UAAW,EAChBlxB,KAAKmxB,GAAKnxB,KAAKoxB,GAAK,CACrB,CAED,4BAAWrnB,GACT,MAAO,WACR,CAED,IAAA+T,GACE9d,KAAKsf,YAAa,CACnB,CAED,SAAIxT,GACF,MAAMC,EAAQ/L,KACR8L,EAAQhL,OAAOojB,OAAOnb,MAAM+C,MAAO,CACvCulB,KAAMtlB,EAAMslB,KAAK/tB,KAAKyI,GACtBulB,KAAMvlB,EAAMulB,KAAKhuB,KAAKyI,KA8BxB,OAAOoN,GAAerN,EA3BC,CACrB,QAAInE,GACF,OAAOoE,EAAMpE,IACd,EACD,QAAIA,CAAM/G,GACRmL,EAAMpE,KAAO/G,CACd,EACD,SAAI2wB,GACF,OAAOxlB,EAAMwlB,KACd,EACD,SAAIA,CAAO3wB,GACTmL,EAAMwlB,MAAQ3wB,CACf,EACD,SAAI4wB,GACF,OAAOzlB,EAAMylB,KACd,EACD,SAAIA,CAAO5wB,GACTmL,EAAMylB,MAAQ5wB,CACf,EACD,WAAI6wB,GACF,OAAO1lB,EAAM0lB,OACd,EACD,WAAIA,CAAS7wB,GACXmL,EAAM0lB,QAAU7wB,CACjB,GAIJ,CAED,QAAI+G,GACF,OAAO3H,KAAK6G,KACb,CAED,QAAIc,CAAM/G,GACRZ,KAAK6G,MAAQjG,CACd,CAED,SAAI2wB,GACF,OAAOvxB,KAAK0xB,MACb,CAED,SAAIH,CAAO3wB,GACT,GAAIZ,KAAK0xB,SAAW9wB,EAApB,CACA,OAAQZ,KAAK0xB,QACX,KAAK1H,GAAkBJ,IACrB5pB,KAAKwX,YAAYmS,GAAcC,KAC/B,MAEF,KAAKI,GAAkBrb,MACrB3O,KAAKwX,YAAYmS,GAAchb,OAC/B,MAEF,KAAKqb,GAAkBH,OACrB7pB,KAAKwX,YAAYmS,GAAcE,QAC/B,MAEF,KAAKG,GAAkBvb,KACrBzO,KAAKwX,YAAYmS,GAAclb,MAInC,OADAzO,KAAK0xB,OAAS9wB,EACNZ,KAAK0xB,QACX,KAAK1H,GAAkBJ,IACrB5pB,KAAKuX,SAASoS,GAAcC,KAC5B,MAEF,KAAKI,GAAkBrb,MACrB3O,KAAKuX,SAASoS,GAAchb,OAC5B,MAEF,KAAKqb,GAAkBH,OACrB7pB,KAAKuX,SAASoS,GAAcE,QAC5B,MAEF,KAAKG,GAAkBvb,KACrBzO,KAAKuX,SAASoS,GAAclb,MAjCE,CAoCnC,CAED,SAAI+iB,GACF,OAAOxxB,KAAK2xB,MACb,CAED,SAAIH,CAAO5wB,GACT,GAAIZ,KAAK2xB,SAAW/wB,EAApB,CACA,OAAQZ,KAAK2xB,QACX,KAAK1H,GAAe3jB,MAClBtG,KAAKwX,YAAYsS,GAAcxjB,OAC/B,MAEF,KAAK2jB,GAAeF,OAClB/pB,KAAKwX,YAAYsS,GAAcC,QAC/B,MAEF,KAAKE,GAAe1b,IAClBvO,KAAKwX,YAAYsS,GAAcvb,KAInC,OADAvO,KAAK2xB,OAAS/wB,EACNZ,KAAK2xB,QACX,KAAK1H,GAAe3jB,MAClBtG,KAAKuX,SAASuS,GAAcxjB,OAC5B,MAEF,KAAK2jB,GAAeF,OAClB/pB,KAAKuX,SAASuS,GAAcC,QAC5B,MAEF,KAAKE,GAAe1b,IAClBvO,KAAKuX,SAASuS,GAAcvb,KAzBE,CA4BnC,CAED,IAAA8iB,GACErxB,KAAKyxB,SAAU,CAChB,CAED,IAAAH,GACEtxB,KAAKyxB,SAAU,CAChB,CAED,WAAIA,GACF,OAAOzxB,KAAKkxB,QACb,CAED,WAAIO,CAAS7wB,GACPZ,KAAKkxB,WAAatwB,GAAUZ,KAAK+d,YACrC/d,KAAKqf,YAAcze,EACnBZ,KAAKkxB,SAAWtwB,EACjB,CAED,WAAAgxB,CAAaC,GACX7xB,KAAK8xB,UAAYD,CAClB,CAED,MAAA9f,GACE,IAAK/R,KAAK8xB,UAAW,OAKrB,GAJA9xB,KAAK+xB,aAAe/xB,KAAK8xB,UAAUtQ,UACnCxhB,KAAKuhB,KAAOvhB,KAAKwhB,UACjBxhB,KAAKgyB,SAAWhyB,KAAKiyB,cAEjBjyB,KAAK2H,OAASuiB,GAAcxlB,KAE9B,OADA1E,KAAKuxB,MAAQvxB,KAAKkyB,WACVlyB,KAAKuxB,OACX,KAAKvH,GAAkBJ,IACvB,KAAKI,GAAkBH,OACrB7pB,KAAKwxB,MAAQxxB,KAAKmyB,qBAClB,MAEF,KAAKnI,GAAkBvb,KACvB,KAAKub,GAAkBrb,MACrB3O,KAAKwxB,MAAQxxB,KAAKoyB,mBAIxB,IAAIjd,EAAGE,EAEP,OAAQrV,KAAKuxB,OACX,KAAKvH,GAAkBJ,IACrBvU,EAAIrV,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKhO,IAAMvT,KAAKuhB,KAAKnJ,OACtD,MAEF,KAAK4R,GAAkBrb,MACrBwG,EAAInV,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKO,KAAO9hB,KAAK+xB,aAAa5Z,MAChE,MAEF,KAAK6R,GAAkBH,OACrBxU,EAAIrV,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKhO,IAAMvT,KAAK+xB,aAAa3Z,OAC9D,MAEF,KAAK4R,GAAkBvb,KACrB0G,EAAInV,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKO,KAAO9hB,KAAKuhB,KAAKpJ,MAI5D,OAAQnY,KAAKuxB,OACX,KAAKvH,GAAkBJ,IACvB,KAAKI,GAAkBH,OACrB,OAAQ7pB,KAAKwxB,OACX,KAAKvH,GAAeF,OAClB5U,EAAInV,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKO,KAAiC,GAA1B9hB,KAAK+xB,aAAa5Z,MAAgC,GAAlBnY,KAAKuhB,KAAKpJ,MACxF,MAEF,KAAK8R,GAAe3jB,MAClB6O,EAAInV,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKO,KACvC,MAEF,KAAKmI,GAAe1b,IAClB4G,EAAInV,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKO,KAAO9hB,KAAK+xB,aAAa5Z,MAAQnY,KAAKuhB,KAAKpJ,MAGtF,MAEF,KAAK6R,GAAkBrb,MACvB,KAAKqb,GAAkBvb,KACrB,OAAQzO,KAAKwxB,OACX,KAAKvH,GAAeF,OAClB1U,EAAIrV,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKhO,IAAiC,GAA3BvT,KAAK+xB,aAAa3Z,OAAkC,GAAnBpY,KAAKuhB,KAAKnJ,OACvF,MAEF,KAAK6R,GAAe3jB,MAClB+O,EAAIrV,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKhO,IACtC,MAEF,KAAK0W,GAAe1b,IAClB8G,EAAIrV,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKhO,IAAMvT,KAAKuhB,KAAKnJ,QAM9DpY,KAAKmxB,IAAOhc,EAAI,GAAO,EACvBnV,KAAKoxB,IAAO/b,EAAI,GAAO,EACvBrV,KAAKkF,KAAKoO,MAAM+e,UAAY,aAAaryB,KAAKmxB,QAAQnxB,KAAKoxB,OAC5D,CAED,QAAAc,GACE,IAAK,MAAMX,KAASvxB,KAAK+wB,QACvB,OAAQQ,GACN,KAAKvH,GAAkBJ,IACrB,GAAI5pB,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKnJ,OAASpY,KAAKgyB,SAASze,IAAK,OAAOyW,GAAkBJ,IAC3F,MAEF,KAAKI,GAAkBrb,MACrB,GAAI3O,KAAK+xB,aAAaO,MAAQtyB,KAAKuhB,KAAKpJ,MAAQnY,KAAKgyB,SAASM,MAAO,OAAOtI,GAAkBrb,MAC9F,MAEF,KAAKqb,GAAkBH,OACrB,GAAI7pB,KAAK+xB,aAAarQ,OAAS1hB,KAAKuhB,KAAKnJ,OAASpY,KAAKgyB,SAAStQ,OAAQ,OAAOsI,GAAkBH,OACjG,MAEF,KAAKG,GAAkBvb,KACrB,GAAIzO,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKpJ,MAAQnY,KAAKgyB,SAASlQ,KAAM,OAAOkI,GAAkBvb,KAKlG,OAAOzO,KAAK+wB,QAAQ,EACrB,CAED,kBAAAoB,GACE,IAAK,MAAMX,KAASxxB,KAAKgxB,QACvB,OAAQQ,GACN,KAAKvH,GAAeF,OAClB,GAAI/pB,KAAK+xB,aAAalQ,OAA2B,GAAlB7hB,KAAKuhB,KAAKpJ,MAAcnY,KAAKgyB,SAASlQ,MAAQ9hB,KAAK+xB,aAAalQ,OAA2B,GAAlB7hB,KAAKuhB,KAAKpJ,MAAcnY,KAAKgyB,SAASM,MAAO,OAAOrI,GAAeF,OAC3K,MAEF,KAAKE,GAAe3jB,MAClB,GAAItG,KAAK+xB,aAAajQ,KAAO9hB,KAAKuhB,KAAKpJ,MAAQnY,KAAKgyB,SAASM,MAAO,OAAOrI,GAAe3jB,MAC1F,MAEF,KAAK2jB,GAAe1b,IAClB,GAAIvO,KAAK+xB,aAAaO,MAAQtyB,KAAKuhB,KAAKpJ,MAAQnY,KAAKgyB,SAASlQ,KAAM,OAAOmI,GAAe1b,IAKhG,OAAOvO,KAAKgxB,QAAQ,EACrB,CAED,gBAAAoB,GACE,IAAK,MAAMZ,KAASxxB,KAAKgxB,QACvB,OAAQQ,GACN,KAAKvH,GAAeF,OAClB,GAAI/pB,KAAK+xB,aAAahQ,OAA4B,GAAnB/hB,KAAKuhB,KAAKnJ,OAAepY,KAAKgyB,SAASze,KAAOvT,KAAK+xB,aAAahQ,OAA4B,GAAnB/hB,KAAKuhB,KAAKnJ,OAAepY,KAAKgyB,SAAStQ,OAAQ,OAAOuI,GAAeF,OAC7K,MAEF,KAAKE,GAAe3jB,MAClB,GAAItG,KAAK+xB,aAAaxe,IAAMvT,KAAKuhB,KAAKnJ,OAASpY,KAAKgyB,SAAStQ,OAAQ,OAAOuI,GAAe3jB,MAC3F,MAEF,KAAK2jB,GAAe1b,IAClB,GAAIvO,KAAK+xB,aAAarQ,OAAS1hB,KAAKuhB,KAAKnJ,OAASpY,KAAKgyB,SAASze,IAAK,OAAO0W,GAAe1b,IAKjG,OAAOvO,KAAKgxB,QAAQ,EACrB,CAED,WAAAiB,GACE,IACIM,EAAKC,EADL7uB,EAAU3D,KAAKkF,KAEfqO,EAAMvT,KAAKixB,gBACXqB,EAAQ/vB,OAAO4Q,WAAanT,KAAKixB,gBACjCvP,EAASnf,OAAOof,YAAc3hB,KAAKixB,gBACnCnP,EAAO9hB,KAAKixB,gBAEhB,KAAOttB,GACDA,IAAYU,SAASgP,MADX,CAEd1P,EAAUA,EAAQ6F,cAClB,MAAM8J,EAAQ/Q,OAAOkR,iBAAiB9P,GAEhC8uB,EAAW,sCAAsCC,KAAKpf,EAAMmf,UAIlE,GAHAF,OAAsBvsB,IAAhBysB,EAAS,GACfD,OAAsBxsB,IAAhBysB,EAAS,QAAmCzsB,IAAhBysB,EAAS,QAAmCzsB,IAAhBysB,EAAS,IAElEF,IAAQC,EAAK,SAClB,MAAMjR,EAAO5d,EAAQie,wBAEjB2Q,IACEhR,EAAKO,KAAOA,IAAMA,EAAOP,EAAKO,MAC9BP,EAAK+Q,MAAQA,IAAOA,EAAQ/Q,EAAK+Q,QAEnCE,IACEjR,EAAKhO,IAAMA,IAAKA,EAAMgO,EAAKhO,KAC3BgO,EAAKG,OAASA,IAAQA,EAASH,EAAKG,QAE3C,CAED,MAAO,CACLnO,IAAKA,EACL+e,MAAOA,EACP5Q,OAAQA,EACRI,KAAMA,EACND,OAAQC,EAAwB,IAAhBwQ,EAAQxQ,GACxBC,OAAQxO,EAAuB,IAAhBmO,EAASnO,GAE3B,CAED,OAAAvI,GACEhL,KAAK8xB,UAAY,KACjB/oB,MAAMiC,SACP,GblSD2nB,kBcpEF,cAAgChW,GAC9B,WAAA5c,GACEgJ,QACA/I,KAAKkxB,UAAW,CACjB,CAED,4BAAWnnB,GACT,MAAO,mBACR,CAED,IAAA+T,GACE9d,KAAKuL,aAAa5B,QAAQioB,YAAY5xB,MACtCA,KAAK4yB,WAAa5yB,KAAKuL,aAAa5B,OACrC,CAED,aAAIkpB,GACF,OAAO7yB,KAAK4yB,UACb,CAED,WAAInB,GACF,OAAOzxB,KAAKkxB,QACb,CAED,WAAIO,CAAS7wB,GACPZ,KAAKkxB,WAAatwB,GAAUZ,KAAK+d,YACrC/d,KAAKkxB,SAAWtwB,EACZA,EAAOZ,KAAKuL,aAAa5B,QAAQ0nB,OAChCrxB,KAAKuL,aAAa5B,QAAQ2nB,OAChC,CAED,IAAAD,GACErxB,KAAKyxB,SAAU,CAChB,CAED,IAAAH,GACEtxB,KAAKyxB,SAAU,CAChB,GdiCDxH,eAAgBA,GAChBD,kBAAmBA,GACnBE,cAAeA,IevEjBvP,GAAIZ,UAAUzO,SAASqP,GAAIwP,KAAK5B,iBAAiBC,SAAU7N,GAAIwP,KAAKC,UACpEzP,GAAIZ,UAAUzO,SAASqP,GAAIwP,KAAKvB,kBAAkBC,WAAYlO,GAAIwP,KAAKiC,WACvEzR,GAAIZ,UAAUzO,SAASqP,GAAIwP,KAAKV,cAAcC,MAAO/O,GAAIwP,KAAKqG,OAC9D7V,GAAIZ,UAAUzO,SAASqP,GAAIwP,KAAKnB,eAAeC,YAAatO,GAAIwP,KAAKkE,YACrE1T,GAAIZ,UAAUzO,SAASqP,GAAIwP,KAAKnB,eAAeE,OAAQvO,GAAIwP,KAAKoG,cCNzD,MAAMuC,GAAc,CACzBC,OAAQ,SACRC,MAAO,QACPC,KAAM,QCDKC,GAAkB,CAC7BC,MAAOxY,GAAIZ,UAAUnU,GAAGK,KAAK,SAC7BmtB,OAAQzY,GAAIZ,UAAUnU,GAAGK,KAAK,UAC9BotB,WAAY1Y,GAAIZ,UAAUnU,GAAGK,KAAK,eCLvBqtB,GAAc,CACzBN,MAAO,QACPC,KAAM,QCAKM,GAAiB,CAC5BH,OAAQzY,GAAIZ,UAAUnU,GAAGO,SAAS,SAAU,UAC5CgtB,MAAOxY,GAAIZ,UAAUnU,GAAGO,SAAS,SAAU,SAC3CqtB,IAAK7Y,GAAIZ,UAAUnU,GAAGO,SAAS,SAAU,QCHrCstB,GAAc,CAClBL,OAAQzY,GAAIZ,UAAUnU,GAAGL,MAAM,UAC/B4tB,MAAOxY,GAAIZ,UAAUnU,GAAGL,MAAM,UCGhC,MAAMmuB,WAAe/Y,GAAIwP,KAAKxN,SAC5B,WAAA5c,GACEgJ,OAAM,EACP,CAED,4BAAWgB,GACT,MAAO,QACR,CAED,IAAA+T,GACE9d,KAAK2zB,SAAW3zB,KAAK4zB,OAAOtwB,KAAKtD,MAE7BA,KAAK0gB,aAAawS,GAAgBG,cACpCrzB,KAAK6T,gBAAgBqf,GAAgBG,YACrCrzB,KAAKiS,QAAQjS,KAAK6zB,kBAAkBvwB,KAAKtD,QAG3C,MAAM8zB,EAASnZ,GAAIZ,UAAUpB,QAAQC,sBAAwBC,aAAakb,QAAQ,UAAY,GACxFC,EAAah0B,KAAKygB,aAAayS,GAAgBE,QAErD,OAAQU,GACN,KAAKhB,GAAYG,KACjB,KAAKH,GAAYE,MACjB,KAAKF,GAAYC,OACf/yB,KAAK8zB,OAASA,EACd,MAEF,QACE,OAAQE,GACN,KAAKlB,GAAYG,KACfjzB,KAAK8zB,OAAShB,GAAYG,KAC1B,MAEF,KAAKH,GAAYE,MACfhzB,KAAK8zB,OAAShB,GAAYE,MAC1B,MAEF,QACEhzB,KAAK8zB,OAAShB,GAAYC,QAIlC/yB,KAAKogB,UAAUmT,GAAeC,IAAKxzB,KAAKi0B,IAAI3wB,KAAKtD,OACjDA,KAAKogB,UAAUmT,GAAeH,OAAQpzB,KAAKqC,MAAMiB,KAAKtD,MACvD,CAED,SAAI8L,GACF,MAAMC,EAAQ/L,KAERqnB,EAAiB,CACrB,UAAIyM,GACF,OAAO/nB,EAAM+nB,MACd,EACD,UAAIA,CAAQlzB,GACVmL,EAAM+nB,OAASlzB,CAChB,GAGH,OAAO+Z,GAAIZ,UAAU5O,SAASgO,eAAepQ,MAAM+C,MAAOub,EAC3D,CAED,iBAAAwM,GACE7zB,KAAKkP,aAAagkB,GAAgBG,WAAY,GAC/C,CAED,GAAAY,GACEj0B,KAAKqN,QAAQkmB,GAAeH,OAAQpzB,KAAK8zB,OAC1C,CAED,KAAAzxB,CAAOzB,GACLZ,KAAK8zB,OAASlzB,CACf,CAED,UAAIkzB,GACF,OAAO9zB,KAAKk0B,OACb,CAED,UAAIJ,CAAQlzB,GACV,GAAIZ,KAAKk0B,UAAYtzB,EAArB,CAEA,OADAZ,KAAKk0B,QAAUtzB,EACPA,GACN,KAAKkyB,GAAYC,OACf/yB,KAAKm0B,oBACL,MAEF,KAAKrB,GAAYG,KACfjzB,KAAKo0B,sBACLp0B,KAAKq0B,MAAQf,GAAYL,KACzB,MAEF,KAAKH,GAAYE,MACfhzB,KAAKo0B,sBACLp0B,KAAKq0B,MAAQf,GAAYN,MACzB,MAEF,QAEE,YADAhzB,KAAK8zB,OAAShB,GAAYC,QAI9B/yB,KAAKqN,QAAQkmB,GAAeH,OAAQxyB,GAChC+Z,GAAIZ,UAAUpB,QAAQC,uBACxBC,aAAayb,QAAQ,SAAU1zB,GAEjCZ,KAAKkP,aAAagkB,GAAgBE,OAAQxyB,GAC1CZ,KAAKiF,SAASwuB,GAAYL,OAAQ,CAAEU,OAAQ9zB,KAAKk0B,UAAW,EA3BzB,CA4BpC,CAED,SAAIG,GACF,OAAOr0B,KAAKu0B,MACb,CAED,SAAIF,CAAOzzB,GACT,GAAIZ,KAAKu0B,SAAW3zB,EACpB,OAAQA,GACN,KAAK0yB,GAAYN,MACjB,KAAKM,GAAYL,KACfjzB,KAAKu0B,OAAS3zB,EACdZ,KAAKkP,aAAagkB,GAAgBC,MAAOvyB,GACzCZ,KAAKqN,QAAQkmB,GAAeJ,MAAOvyB,GACnCZ,KAAKiF,SAASwuB,GAAYN,MAAO,CAAEkB,MAAOr0B,KAAKu0B,SAAU,GACzDlwB,SAASsB,gBAAgB2N,MAAMkhB,YAAc5zB,IAAU0yB,GAAYL,KAAO,OAAS,GAGxF,CAED,iBAAAkB,GACMn0B,KAAKy0B,cACTz0B,KAAKy0B,aAAc,EACnBz0B,KAAK00B,WAAanyB,OAAOC,WAAW,gCAChCxC,KAAK00B,WAAWlwB,kBAAkBxE,KAAK00B,WAAWlwB,iBAAiB,SAAUxE,KAAK2zB,UACtF3zB,KAAK4zB,SACN,CAED,mBAAAQ,GACOp0B,KAAKy0B,cACVz0B,KAAKy0B,aAAc,EACnBz0B,KAAK00B,WAAWzf,oBAAoB,SAAUjV,KAAK2zB,UACnD3zB,KAAK00B,WAAa,KACnB,CAED,MAAAd,GACO5zB,KAAKy0B,cACVz0B,KAAKq0B,MAAQr0B,KAAK00B,WAAWjyB,QAAU6wB,GAAYL,KAAOK,GAAYN,MACvE,CAED,MAAApjB,CAAQlE,GACFA,EAAezD,QAAQirB,GAAgBE,SAAW,IAAGpzB,KAAK8zB,OAAS9zB,KAAKygB,aAAayS,GAAgBE,SACrG1nB,EAAezD,QAAQirB,GAAgBC,QAAU,IAAGnzB,KAAKq0B,MAAQr0B,KAAKygB,aAAayS,GAAgBC,OACxG,CAED,OAAAnoB,GACEhL,KAAKo0B,qBACN,EC9JI,MAAMO,GAAiB,CAC5BvB,OAAQ,QAAQzY,GAAIZ,UAAUnU,GAAGK,KAAKH,SAAS,kBAAkB6U,GAAIZ,UAAUnU,GAAGK,KAAKH,SAAS,YAChG8uB,aAAcja,GAAIZ,UAAUnU,GAAGE,SAAS,gBACxC+uB,cAAe,eAAela,GAAIZ,UAAUnU,GAAG,qBCGjD+U,GAAImZ,OAAS,CACXJ,OAAQA,GACRZ,YAAaA,GACb6B,eAAgBA,GAChBpB,eAAgBA,GAChBD,YAAaA,GACbG,YAAaA,ICZf9Y,GAAIZ,UAAUzO,SAASqP,GAAImZ,OAAOa,eAAevB,OAAQzY,GAAImZ,OAAOJ,QCApE,MAAMoB,GAAYna,GAAIZ,UAAUnU,GAAGE,SAAS,aACtC0iB,GAAW7N,GAAIZ,UAAUnU,GAAGE,SAAS,YAE9BivB,GAAoB,CAC/BhS,MAAOpI,GAAIZ,UAAUnU,GAAGE,SAAS,oBACjCgvB,UAAWA,GACXtM,SAAU,GAAGsM,QAAetM,OAAasM,cAAqBA,WAAkBtM,SAAeA,OAAasM,cAAqBA,WAAkBtM,eAAqBsM,WAAkBtM,SAAeA,KACzMwM,gBAAiB,GAAGF,MAAatM,KACjCyM,OAAQ,GAAGH,WCPb,MAAMI,WAAkBva,GAAIwP,KAAKxN,SAC/B,4BAAW5S,GACT,MAAO,WACR,CAED,mBAAIihB,GAEF,OADgBhrB,KAAK2D,QAAQO,SAASlD,IAAIiD,GAASA,EAAMuJ,YAAY,mBAAmBuB,OAAOsV,GAAqB,OAAXA,GAAmBA,EAAO5M,SAASsd,GAAkBE,SAC/I,EAChB,ECRH,MAAME,WAAwBxa,GAAIwP,KAAKuB,eACrC,4BAAW3hB,GACT,MAAO,iBACR,CAED,QAAA2a,CAAU6C,GACR,MAAMwF,EAAQxF,EAAOriB,KAAKzC,QAAQkY,GAAIZ,UAAUC,OAAO5Y,SAAW2zB,GAAkBC,gBAAkBD,GAAkBvM,UACxH,OAAOzf,MAAM2b,SAAS6C,IAAWwF,CAClC,ECNHpS,GAAIya,UAAY,CACdF,UAAWA,GACXH,kBAAmBA,GACnBI,gBAAiBA,ICNnBxa,GAAIZ,UAAUzO,SAASqP,GAAIya,UAAUL,kBAAkBhS,MAAOpI,GAAIya,UAAUD,iBAC5Exa,GAAIZ,UAAUzO,SAASqP,GAAIya,UAAUL,kBAAkBD,UAAWna,GAAIya,UAAUF,WCDzE,MAAMG,GAAiB,CAC5BC,iBAAkB,GAAG3a,GAAIZ,UAAUnU,GAAGE,SAAS,4BAA4B6U,GAAIZ,UAAUnU,GAAGE,SAAS,SACrGyvB,gBAAiB5a,GAAIZ,UAAUnU,GAAGE,SAAS,0BCD7C6U,GAAI0J,OAAS,CACXgR,eAAgBA,ICFlB1a,GAAIZ,UAAUzO,SAASqP,GAAI0J,OAAOgR,eAAeC,iBAAkB3a,GAAIwP,KAAK0B,WAC5ElR,GAAIZ,UAAUzO,SAASqP,GAAI0J,OAAOgR,eAAeE,gBAAiB5a,GAAIwP,KAAK6B,iBCD3E,MAAMwJ,WAAqB7a,GAAIwP,KAAKxN,SAClC,4BAAW5S,GACT,MAAO,cACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUzF,GAAIwP,KAAKhB,eAAeC,OAAQ8F,IAC7ClvB,KAAKqN,QAAQsN,GAAIwP,KAAKhB,eAAeC,OAAQ8F,KAE/ClvB,KAAKogB,UAAUzF,GAAIwP,KAAKhB,eAAevG,MAAO,KAC5C5iB,KAAKqN,QAAQsN,GAAIwP,KAAKhB,eAAevG,QAExC,ECZI,MAAM6S,GAAe,CAC1BC,SAAU/a,GAAIZ,UAAUnU,GAAGE,SAAS,kBACpC6vB,gBAAiB,GAAGhb,GAAIZ,UAAUnU,GAAGE,SAAS,qBAAqB6U,GAAIZ,UAAUnU,GAAGE,SAAS,gBAAgB6U,GAAIZ,UAAUnU,GAAGE,SAAS,mBCAzI6U,GAAIib,KAAO,CACTH,aAAcA,GACdD,aAAcA,ICJhB7a,GAAIZ,UAAUzO,SAASqP,GAAIib,KAAKH,aAAaC,SAAU/a,GAAIib,KAAKJ,cAChE7a,GAAIZ,UAAUzO,SAASqP,GAAIib,KAAKH,aAAaE,gBAAiBhb,GAAIwP,KAAKoG,cCDhE,MAAMsF,GAAmB,CAC9BC,MAAO,GAAGnb,GAAIZ,UAAUnU,GAAGE,SAAS,4CCDhCiwB,GAAmB,CACvBpN,OAAQhO,GAAIZ,UAAUnU,GAAGO,SAAS,WAAY,UAC9C0c,SAAUlI,GAAIZ,UAAUnU,GAAGO,SAAS,WAAY,aCDlD,MAAM6vB,WAAsBrb,GAAIwP,KAAKxN,SACnC,4BAAW5S,GACT,MAAO,eACR,CAED,WAAAhK,GACEgJ,QACA/I,KAAKi2B,gBAAkBj2B,KAAKk2B,aAAa5yB,KAAKtD,KAC/C,CAED,IAAA8d,GACE9d,KAAKkF,KAAKV,iBAAiB,SAAUxE,KAAKi2B,iBAC1Cj2B,KAAKsgB,WAAWyV,GAAiBlT,SAAU7iB,KAAKi2B,iBAChDj2B,KAAKk2B,cACN,CAED,aAAIC,GACF,OAAOn2B,KAAKkF,KAAKkxB,OAClB,CAED,YAAAF,GACEl2B,KAAKkN,OAAO6oB,GAAiBpN,OAAQ3oB,KAAKkF,KAC3C,ECpBHyV,GAAI0b,SAAW,CACbR,iBAAkBA,GAClBE,iBAAkBA,GAClBC,cAAeA,ICNjBrb,GAAIZ,UAAUzO,SAASqP,GAAI0b,SAASR,iBAAiBC,MAAOnb,GAAI0b,SAASL,eCAlE,MAAMM,GAAoB,CAC/BC,UAAW5b,GAAIZ,UAAUnU,GAAGE,SAAS,aACrC0wB,mBAAoB7b,GAAIZ,UAAUnU,GAAGE,SAAS,uBAC9C2wB,kBAAmB9b,GAAIZ,UAAUnU,GAAGE,SAAS,4BAC7C4wB,iBAAkB/b,GAAIZ,UAAUnU,GAAGE,SAAS,sBCJxC6wB,GAAoB,CACxB/T,MAAOjI,GAAIZ,UAAUnU,GAAGO,SAAS,YAAa,SAC9C2c,QAASnI,GAAIZ,UAAUnU,GAAGO,SAAS,YAAa,YCAlD,MAAMywB,WAAkBjc,GAAIwP,KAAKxN,SAC/B,4BAAW5S,GACT,MAAO,WACR,CAED,IAAA+T,GACE9d,KAAK8M,SAAW9M,KAAKkF,KAAK4F,cAAcwrB,GAAkBE,oBAC1Dx2B,KAAK62B,OAAS72B,KAAKkF,KAAK4F,cAAcwrB,GAAkBI,kBACxD12B,KAAKogB,UAAUuW,GAAkB/T,MAAO5iB,KAAKsS,OAAOhP,KAAKtD,OACzDA,KAAKogB,UAAUuW,GAAkB7T,QAAS9iB,KAAKsS,OAAOhP,KAAKtD,OAC3DA,KAAK82B,gBAAkB92B,KAAK62B,QAAU72B,KAAK62B,OAAO3I,UAAU3c,SAAS,GAAGoJ,GAAIE,oCAC5E7a,KAAKsf,YAAa,CACnB,CAED,MAAAhN,GACE,MAAMykB,EAAqB,GAAGpc,GAAIE,6BAC5Bmc,EAAgB,GAAGrc,GAAIE,mCAG7B7a,KAAKwX,YAAYuf,GAEb/2B,KAAK82B,kBACP92B,KAAK62B,OAAO3I,UAAU3tB,IAAIy2B,IAEtBh3B,KAAKkF,KAAK+xB,YAAcj3B,KAAKkF,KAAKsb,WAAWyW,aAAgBj3B,KAAK8M,SAASoqB,YAAcl3B,KAAK62B,OAAOI,YAPzF,GAOoHj3B,KAAKkF,KAAKsb,WAAWyW,cACvJj3B,KAAK62B,OAAO3I,UAAUztB,OAAOu2B,IAI7Bh3B,KAAK8M,SAASmqB,YAAcj3B,KAAKkF,KAAKsb,WAAWyW,aAAej3B,KAAK8M,SAASoqB,YAAcl3B,KAAKkF,KAAKsb,WAAWyW,YACnHj3B,KAAKuX,SAASwf,GAEd/2B,KAAKwX,YAAYuf,EAEpB,ECnCH,MAAMI,WAAyBxc,GAAIwP,KAAKxN,SACtC,4BAAW5S,GACT,MAAO,kBACR,CAED,IAAA+T,GACE9d,KAAKkN,OAAOypB,GAAkB/T,MAC/B,CAED,OAAA5X,GACEhL,KAAKkN,OAAOypB,GAAkB7T,QAC/B,ECRHnI,GAAIyc,UAAY,CACdd,kBAAmBA,GACnBK,kBAAmBA,GACnBQ,iBAAkBA,GAClBP,UAAWA,ICRbjc,GAAIZ,UAAUzO,SAASqP,GAAIyc,UAAUd,kBAAkBC,UAAW5b,GAAIyc,UAAUR,WAChFjc,GAAIZ,UAAUzO,SAASqP,GAAIyc,UAAUd,kBAAkBG,kBAAmB9b,GAAIyc,UAAUD,kBCDjF,MAAME,GAAqB,CAChCC,WAAY3c,GAAIZ,UAAUnU,GAAGE,SAAS,cACtCmvB,OAAQta,GAAIZ,UAAUnU,GAAGE,SAAS,uBCDpC,MAAMyxB,WAAmB5c,GAAIwP,KAAKxN,SAChC,WAAA5c,GACEgJ,QACA/I,KAAKwL,MAAQ,EACbxL,KAAKw3B,SAAWx3B,KAAKwb,MAAMlY,KAAKtD,KACjC,CAED,4BAAW+J,GACT,MAAO,YACR,CAED,IAAA+T,GACE9d,KAAKy3B,cACLz3B,KAAKsf,YAAa,CACnB,CAED,SAAIxT,GACF,MAAMC,EAAQ/L,KACd,OAAOc,OAAOojB,OAAOnb,MAAM+C,MAAO,CAChC0P,MAAOzP,EAAMyP,MAAMlY,KAAKyI,GACxB8X,SAAU9X,EAAM2rB,SAAS7T,SAASvgB,KAAKyI,EAAM2rB,WAEhD,CAED,WAAAD,GACE,MAAMC,EAAW13B,KAAK03B,SAClBA,EACFA,EAASvoB,OAAOwL,GAAIwP,KAAK7H,gBAAgBC,SAAUviB,KAAKw3B,UAExDx3B,KAAKogB,UAAUzF,GAAIwP,KAAKzH,mBAAmBE,MAAO5iB,KAAKy3B,YAAYn0B,KAAKtD,MAE3E,CAED,MAAAsS,GACE,MAAMolB,EAAW13B,KAAK03B,SAChBC,EAAQ33B,KAAK23B,MACdD,GAAaC,EAAM5vB,SAEpB/H,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYG,IACrCmb,EAAStS,gBAAgBuS,EAAM,GAAGnc,QAElCmc,EAAM1vB,QAAQ5D,SAASgd,gBAAkB,GAAGqW,EAASlc,QAE5D,CAED,SAAImc,GACF,MAAO,IAAI33B,KAAKqJ,iBAAiB,WAClC,CAED,YAAIquB,GACF,OAAO13B,KAAK2D,QAAQ8J,uBAAuBkN,GAAIwP,KAAKC,SAASrgB,kBAAmB,MAAM,GAAM,EAC7F,CAED,KAAAyR,GACExb,KAAKwL,MAAQ,EACbxL,KAAK43B,QACN,CAED,MAAAA,GACE,MAAMC,EAAO73B,KAAK23B,MAAM,GACnBE,IACLA,EAAKrc,QACLxb,KAAKiS,QAAQjS,KAAK83B,OAAOx0B,KAAKtD,OAC/B,CAED,MAAA83B,GAEE,GADA93B,KAAKwL,QACDxL,KAAKwL,MAAQ,IAAK,OACtB,MAAMqsB,EAAO73B,KAAK23B,MAAM,GACnBE,GACDxzB,SAASgd,gBAAkBwW,GAAM73B,KAAK43B,QAC3C,CAED,mBAAI5M,GAEF,OADgBhrB,KAAK2D,QAAQO,SAASlD,IAAIiD,GAASA,EAAMuJ,YAAY,mBAAmBuB,OAAOsV,GAAqB,OAAXA,GAAmBA,EAAO5M,SAAS4f,GAAmBpC,SAChJ,EAChB,EC3EHta,GAAIod,WAAa,CACfV,mBAAoBA,GACpBE,WAAYA,ICJd5c,GAAIZ,UAAUzO,SAASqP,GAAIod,WAAWV,mBAAmBC,WAAY3c,GAAIod,WAAWR,YCA7E,MAAMS,GAAkB,CAC7BC,QAAStd,GAAIZ,UAAUnU,GAAGE,SAAS,WACnCoyB,MAAOvd,GAAIZ,UAAUnU,GAAGE,SAAS,kBACjCqyB,QAASxd,GAAIZ,UAAUnU,GAAGE,SAAS,oBACnCmvB,OAAQta,GAAIZ,UAAUnU,GAAGE,SAAS,iBCH9BsyB,GACG,EADHA,GAEG,EAGT,MAAMC,WAAwB1d,GAAIwP,KAAKwI,kBACrC,WAAA5yB,GACEgJ,QACA/I,KAAKs4B,OAAS,CACf,CAED,4BAAWvuB,GACT,MAAO,iBACR,CAED,IAAA+T,GAIE,GAHA/U,MAAM+U,OACN9d,KAAKmP,OAAO,UAAWnP,KAAKu4B,QAAQj1B,KAAKtD,OACzCA,KAAKmP,OAAO,WAAYnP,KAAKw4B,SAASl1B,KAAKtD,QACtCA,KAAKyC,QAAQu1B,GAAgB/C,QAAS,CACzC,MAAMwD,EAAYz4B,KAAKy4B,UAAUn1B,KAAKtD,MACtCA,KAAKmP,OAAO,YAAaspB,GACzBz4B,KAAK6yB,UAAU1jB,OAAO,YAAaspB,GACnC,MAAMC,EAAW14B,KAAK04B,SAASp1B,KAAKtD,MACpCA,KAAKmP,OAAO,WAAYupB,GACxB14B,KAAK6yB,UAAU1jB,OAAO,WAAYupB,EACnC,CACD14B,KAAKkgB,YAAYvF,GAAIwP,KAAKnc,aAAaE,QAASlO,KAAK24B,SAASr1B,KAAKtD,OACnEA,KAAKmP,OAAO,QAASnP,KAAK44B,OAAOt1B,KAAKtD,OACtCA,KAAKkgB,YAAYvF,GAAIwP,KAAKnc,aAAaC,MAAOjO,KAAK64B,UAAUv1B,KAAKtD,MACnE,CAED,MAAA44B,GACE54B,KAAKu4B,SACN,CAED,SAAAM,CAAWrpB,GACJxP,KAAKkF,KAAKqM,SAAS/B,IAASxP,KAAK4gB,MACvC,CAED,QAAA+X,CAAU7pB,GACR,GAAQA,IACD6L,GAAIwP,KAAK/b,SAASE,OACrBtO,KAAK84B,OAGV,CAED,KAAAA,GACE94B,KAAKF,MAAQ,CACd,CAED,SAAIA,GACF,OAAOE,KAAKs4B,MACb,CAED,SAAIx4B,CAAOc,GACLZ,KAAKs4B,SAAW13B,IACpBZ,KAAKyxB,QAAU7wB,EAAQ,EACvBZ,KAAKs4B,OAAS13B,EACf,CAED,OAAA23B,GACEv4B,KAAKF,OAASs4B,EACf,CAED,QAAAI,GACEx4B,KAAKF,QAAUs4B,EAChB,CAED,SAAAK,GACEz4B,KAAKF,OAASs4B,EACf,CAED,QAAAM,GACE14B,KAAKF,QAAUs4B,EAChB,EC7EH,MAAMW,GAAe,CACnBC,KAAMpzB,EAAGL,MAAM,QACf0zB,KAAMrzB,EAAGL,MAAM,SCCX2zB,GACI,SADJA,GAEG,QAFHA,GAGI,SAGV,MAAMC,WAAgBxe,GAAIwP,KAAKwG,UAC7B,WAAA5wB,GACEgJ,MAAM4R,GAAIwP,KAAKD,cAAcxlB,KAAM,CAACiW,GAAIwP,KAAKH,kBAAkBJ,IAAKjP,GAAIwP,KAAKH,kBAAkBH,QAAS,CAAClP,GAAIwP,KAAKF,eAAeF,OAAQpP,GAAIwP,KAAKF,eAAe3jB,MAAOqU,GAAIwP,KAAKF,eAAe1b,MAChMvO,KAAKsjB,SAAW,GAChBtjB,KAAKs4B,OAASY,EACf,CAED,4BAAWnvB,GACT,MAAO,SACR,CAED,IAAA+T,GACE/U,MAAM+U,OACN9d,KAAKsL,SAAS,sBAAsBtL,KAAKoD,OAAQi1B,IACjDr4B,KAAKmP,OAAO,gBAAiBnP,KAAKo5B,cAAc91B,KAAKtD,MACtD,CAED,aAAAo5B,GACMp5B,KAAKs4B,SAAWY,KAClBl5B,KAAKwX,YAAYwgB,GAAgBE,OACjCl4B,KAAKwX,YAAYwgB,GAAgBG,SACjCn4B,KAAKs4B,OAASY,GACdl5B,KAAKyxB,SAAU,EAElB,CAED,WAAIA,GACF,OAAO1oB,MAAM0oB,OACd,CAED,WAAIA,CAAS7wB,GACX,GAAKZ,KAAK+d,UACV,QAAQ,GACN,KAAKnd,EACHZ,KAAKs4B,OAASY,GACdl5B,KAAKuX,SAASygB,GAAgBE,OAC9Bl4B,KAAKwX,YAAYwgB,GAAgBG,SACjCn4B,KAAKiF,SAAS8zB,GAAaC,MAC3BjwB,MAAM0oB,SAAU,EAChB,MAEF,KAAKzxB,KAAKyxB,UAAY7wB,GAASZ,KAAKs4B,SAAWY,GAC7Cl5B,KAAKs4B,OAASY,GACdl5B,KAAKuX,SAASygB,GAAgBG,SAC9B,MAEF,KAAKn4B,KAAKyxB,UAAY7wB,GAASZ,KAAKs4B,SAAWY,GAC7Cl5B,KAAKiF,SAAS8zB,GAAaE,MAC3Bj5B,KAAKwX,YAAYwgB,GAAgBG,SACjCpvB,MAAM0oB,SAAU,EAGrB,CAED,MAAA1f,GACEhJ,MAAMgJ,SACN/R,KAAKuhB,KAAOvhB,KAAKwhB,UACjB,IAAIrM,EAAInV,KAAK+xB,aAAalQ,OAAS7hB,KAAKuhB,KAAKM,OAC7C,MAAMwX,EAA0B,GAAlBr5B,KAAKuhB,KAAKpJ,MAAc,EAClChD,GAAKkkB,IAAOlkB,GAAKkkB,GACjBlkB,EAAIkkB,IAAOlkB,EAAIkkB,GACnBr5B,KAAK4T,YAAY,YAAa,GAAGuB,EAAEmkB,QAAQ,OAC5C,ECpEH3e,GAAI4e,QAAU,CACZJ,QAASA,GACTnB,gBAAiBA,GACjBe,aAAcA,ICNhBpe,GAAIZ,UAAUzO,SAASqP,GAAI4e,QAAQvB,gBAAgBC,QAAStd,GAAI4e,QAAQJ,SCAxE,MAAMK,WAAoB7e,GAAIwP,KAAKxN,SACjC,4BAAW5S,GACT,MAAO,aACR,CAED,aAAIosB,GACF,OAAOn2B,KAAKkF,KAAKkxB,OAClB,ECNH,MAAMqD,WAA0B9e,GAAIwP,KAAKxN,SACvC,4BAAW5S,GACT,MAAO,mBACR,CAED,IAAA+T,GACE9d,KAAKsL,SAAS,aAAatL,KAAKygB,aAAa,WAAY+Y,IACzDx5B,KAAK4jB,SACL5jB,KAAK4f,gBAAiB,CACvB,CAED,SAAI9T,GAEF,OAAOhL,OAAOojB,OAAOnb,MAAM+C,MAAO,CAChC8X,OAFY5jB,KAEE4jB,OAAOtgB,KAFTtD,OAIf,CAED,SAAI05B,GACF,OAAO15B,KAAKie,uBAAuB,eAAe,EACnD,CAED,MAAA2F,GACE5jB,KAAKkF,KAAKoO,MAAMS,eAAe,yBAC/B,MAAMqiB,EAAUp2B,KAAK05B,MAAMvD,UAErB7iB,EAAQG,iBAAiBzT,KAAKkF,KAAM,WAC1C,IAAIy0B,EAAWC,WAAWtmB,EAAM6E,OAChCnY,KAAK05B,MAAMx0B,KAAKkxB,SAAWA,EAE3B,MAAMyD,EAASpmB,iBAAiBzT,KAAKkF,KAAM,WACrCiT,EAAQyhB,WAAWC,EAAO1hB,OAC5BA,EAAQwhB,IAAUA,EAAWxhB,GACjCnY,KAAK05B,MAAMx0B,KAAKkxB,QAAUA,EAE1Bp2B,KAAKkF,KAAKoO,MAAMM,YAAY,wBAA0B+lB,EAAW,GAAM,MACxE,CAED,QAAAhlB,CAAUH,GACRxU,KAAK4jB,QACN,ECzCI,MAAMkW,GAAiB,CAC5BC,aAAc,GAAGpf,GAAIZ,UAAUnU,GAAGE,SAAS,mBAAmB6U,GAAIZ,UAAUnU,GAAGK,KAAKH,SAAS,mBAAmB6U,GAAIZ,UAAUnU,GAAGK,KAAKH,SAAS,sBCEjJ6U,GAAIuK,OAAS,CACXuU,kBAAmBA,GACnBK,eAAgBA,ICLlBnf,GAAIZ,UAAUzO,SAASqP,GAAIuK,OAAO4U,eAAeC,aAAcpf,GAAIuK,OAAOuU,mBCA1E,MAAMO,GAAOrf,GAAIZ,UAAUnU,GAAGE,SAAS,kBACjC0iB,GAAW7N,GAAIZ,UAAUnU,GAAGE,SAAS,YAE9Bm0B,GAAmB,CAC9BC,KAAMvf,GAAIZ,UAAUnU,GAAGE,SAAS,kBAChC0iB,SAAU,GAAGwR,QAAUxR,OAAawR,cAAgBA,WAAaxR,SAAeA,OAAawR,cAAgBA,WAAaxR,eAAqBwR,WAAaxR,SAAeA,KAC3KwM,gBAAiB,GAAGgF,MAAQxR,KAC5BwR,KAAMrf,GAAIZ,UAAUnU,GAAGE,SAAS,kBAChCmvB,OAAQta,GAAIZ,UAAUnU,GAAGE,SAAS,kBCPpC,MAAMq0B,WAAqBxf,GAAIwP,KAAKuB,eAClC,4BAAW3hB,GACT,MAAO,cACR,CAED,QAAA2a,CAAU6C,GACR,OAAOxe,MAAM2b,SAAS6C,IAAWA,EAAOriB,KAAKzC,QAAQkY,GAAIZ,UAAUC,OAAO5Y,SAAW64B,GAAiBjF,gBAAkBiF,GAAiBzR,SAC1I,ECPH,MAAM4R,WAAqBzf,GAAIwP,KAAKxN,SAClC,4BAAW5S,GACT,MAAO,cACR,CAED,mBAAIihB,GAEF,OADgBhrB,KAAK2D,QAAQO,SAASlD,IAAIiD,GAASA,EAAMuJ,YAAY,mBAAmBuB,OAAOsV,GAAqB,OAAXA,GAAmBA,EAAO5M,SAASwiB,GAAiBhF,SAC9I,EAChB,ECNHta,GAAI0f,SAAW,CACbF,aAAcA,GACdC,aAAcA,GACdH,iBAAkBA,ICNpBtf,GAAIZ,UAAUzO,SAASqP,GAAI0f,SAASJ,iBAAiBC,KAAMvf,GAAI0f,SAASF,cACxExf,GAAIZ,UAAUzO,SAASqP,GAAI0f,SAASJ,iBAAiBD,KAAMrf,GAAI0f,SAASD,cCDjE,MAAME,GAAgB,CAC3BC,MAAO5f,GAAIZ,UAAUnU,GAAGE,SAAS,SACjC00B,eAAgB7f,GAAIZ,UAAUnU,GAAGE,SAAS,kBAC1C20B,KAAM9f,GAAIZ,UAAUnU,GAAGE,SAAS,eAChC40B,MAAO/f,GAAIZ,UAAUnU,GAAGE,SAAS,iBCJnC,MAAM60B,WAAoBhgB,GAAIwP,KAAKtE,iBACjC,WAAA9lB,GACEgJ,MAAM4R,GAAIwP,KAAKlC,eAAeI,OAC/B,CAED,4BAAWte,GACT,MAAO,aACR,ECPI,MAAM6wB,GAAiB,CAC5BC,oBAAqBlgB,GAAIZ,UAAUnU,GAAGK,KAAK,wBCE7C,MAAM60B,WAAcngB,GAAIwP,KAAKjH,WAC3B,WAAAnjB,GACEgJ,MAAM4R,GAAIwP,KAAKlC,eAAeI,OAAQiS,GAAcC,MAAOI,GAAa,eACxE36B,KAAK+6B,cAAe,EACpB/6B,KAAKg7B,UAAYh7B,KAAKsS,OAAOhP,KAAKtD,MAAM,GACxCA,KAAKqS,SAAWrS,KAAKsS,OAAOhP,KAAKtD,MAAM,EACxC,CAED,4BAAW+J,GACT,MAAO,OACR,CAED,IAAA+T,GACE/U,MAAM+U,OACN9d,KAAKi7B,UAAkC,WAAtBj7B,KAAKkF,KAAK8oB,QAC3BhuB,KAAKue,cACLve,KAAKkgB,YAAYvF,GAAIwP,KAAKnc,aAAaE,QAASlO,KAAK24B,SAASr1B,KAAKtD,MACpE,CAED,QAAA24B,CAAU7pB,GACR,GAAQA,IACD6L,GAAIwP,KAAK/b,SAASE,OACrBtO,KAAKk7B,SAGV,CAGD,OAAAA,GACE,MAAMlN,EAAU3pB,SAASgd,cAAgBhd,SAASgd,cAAc2M,aAAUhoB,EAG1E,OAF0B3B,SAASgd,eAAgBhd,SAASgd,cAAcX,aAAa,gCAIvF,OAAQsN,GACN,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,SACL,IAAK,QACL,IAAK,QACH,MAEF,QACMhuB,KAAK+jB,cACP/jB,KAAKgkB,UACLhkB,KAAKwb,SAGZ,CAED,SAAAgK,GACExlB,KAAKm7B,uBACN,CAED,QAAI9nB,GACF,OAAOrT,KAAK2D,QAAQ8J,uBAAuB,YAAa,SAAS,EAClE,CAED,WAAAgR,CAAaxd,GACPA,EAAEuO,SAAWxP,KAAKkF,MAAkE,UAA1DlF,KAAKygB,aAAama,GAAeC,sBAAkC76B,KAAKgkB,SACvG,CAED,QAAAH,CAAUc,GACR,QAAK5b,MAAM8a,SAASc,KAChB3kB,KAAKqT,OACPrT,KAAKqT,KAAKiM,YAAa,EACvBtf,KAAKqT,KAAKf,UAEZtS,KAAK0f,gBAAiB,EACtB1f,KAAKkP,aAAa,aAAc,QAChClP,KAAKkP,aAAa,OAAQ,QACrBlP,KAAKi7B,WACRj7B,KAAKo7B,kBAEA,EACR,CAED,OAAApX,CAASW,EAAUE,GACjB,QAAK9b,MAAMib,QAAQW,EAAUE,KAC7B7kB,KAAK0f,gBAAiB,EACtB1f,KAAK6T,gBAAgB,cACrB7T,KAAK6T,gBAAgB,QACjB7T,KAAKqT,OAAMrT,KAAKqT,KAAKiM,YAAa,GACjCtf,KAAKi7B,WACRj7B,KAAKq7B,eAEA,EACR,CAED,YAAIC,GACF,OAAOt7B,KAAKi7B,SACb,CAED,YAAIK,CAAU16B,GACZZ,KAAKi7B,UAAYr6B,CAClB,CAED,YAAIF,GACF,OAAOqI,MAAMrI,QACd,CAED,YAAIA,CAAUE,GACZmI,MAAMrI,SAAWE,EACbA,GAAOZ,KAAKm7B,uBACjB,CAED,cAAAC,GACMp7B,KAAK+6B,eACT/6B,KAAK+6B,cAAe,EACpB/6B,KAAKu7B,eAA+C,WAA9Bv7B,KAAKygB,aAAa,QACnCzgB,KAAKu7B,gBAAgBv7B,KAAKkP,aAAa,OAAQ,UACrD,CAED,WAAAmsB,GACOr7B,KAAK+6B,eACV/6B,KAAK+6B,cAAe,EACf/6B,KAAKu7B,gBAAgBv7B,KAAK6T,gBAAgB,QAChD,CAED,kBAAA2nB,CAAoBt2B,EAAM8a,GACxB,MAAM5c,EAAKpD,KAAK+f,eAAe7a,EAAM8a,GACrChgB,KAAK6B,KAAK,oBAAoBme,2CAC9BhgB,KAAKkP,aAAa,kBAAmB9L,EACtC,CAED,qBAAA+3B,GACE,IAAKn7B,KAAKU,WAAaV,KAAK+d,WAAc/d,KAAK+d,YAAc/d,KAAK0gB,aAAa,oBAAsB1gB,KAAK0gB,aAAa,eAAiB,OACxI1gB,KAAK6B,KAAK,2BACV,MAAM45B,EAAQz7B,KAAKkF,KAAK4F,cAAcwvB,GAAcI,OAC9C3P,EAAU/qB,KAAKglB,eAAe,GAEpC,QAAQ,GACN,KAAe,OAAVyW,EACHz7B,KAAKw7B,mBAAmBC,EAAO,SAC/B,MAEF,UAAiBz1B,IAAZ+kB,EACH/qB,KAAK6B,KAAK,sDACV7B,KAAKw7B,mBAAmBzQ,EAAS,WAGtC,ECjJH,MAeM2Q,GAfa,CACjB,iBACA,UACA,yBACA,wBACA,yBACA,2BACA,kBACA,kBACA,mDACA,gCACA,UACA,UAG4B34B,OAMxB44B,GAJW,CACf,uDAGwB54B,OAIpB64B,GAAc,CAACj4B,EAASk4B,KAC5B,KAAMl4B,aAAmB8H,SAAU,OAAO,EAC1C,MACM6H,GADgB/Q,OAAOu5B,aAAev5B,OAAOu5B,aAAaC,cAAgBx5B,QACpDkR,iBAAiB9P,GAC7C,IAAK2P,EAAO,OAAO,EACnB,GAAyB,WAArBA,EAAM0I,WAAyB,OAAO,EAG1C,SAFkBhW,IAAd61B,IAAyBA,EAAYl4B,GAElCk4B,EAAUtqB,SAAS5N,IAAU,CAClC,GAAsB,SAAlB2P,EAAMyI,QAAoB,OAAO,EACrCpY,EAAUA,EAAQ6F,aACnB,CAED,OAAO,GAGT,MAAMwyB,GACJ,WAAAj8B,CAAak8B,EAAQC,GACnBl8B,KAAK2D,QAAU,KACf3D,KAAKqhB,cAAgB,KACrBrhB,KAAKi8B,OAASA,EACdj8B,KAAKk8B,SAAWA,EAChBl8B,KAAKm8B,QAAUn8B,KAAKo8B,KAAK94B,KAAKtD,MAC9BA,KAAKyV,SAAWzV,KAAK0V,OAAOpS,KAAKtD,MACjCA,KAAKw3B,SAAWx3B,KAAKq8B,cAAc/4B,KAAKtD,MACxCA,KAAK4kB,QAAU,KACf5kB,KAAKuC,OAASA,OAAOu5B,aAAev5B,OAAOu5B,aAAaC,cAAgBx5B,MACzE,CAED,WAAI+5B,GAAa,OAAwB,OAAjBt8B,KAAK2D,OAAmB,CAEhD,IAAA44B,CAAM54B,GACA3D,KAAKs8B,SAASt8B,KAAKw8B,SAEvBx8B,KAAK2D,QAAUA,EACf3D,KAAKy8B,YAAa,EAClBz8B,KAAKo8B,OAEDp8B,KAAKi8B,QAAQj8B,KAAKi8B,QACvB,CAED,IAAAG,GACOR,GAAY57B,KAAK2D,SAKtB3D,KAAK08B,WAJH18B,KAAKuC,OAAOgC,sBAAsBvE,KAAKm8B,QAK1C,CAED,QAAAO,GACE,IAAK18B,KAAKy8B,WAAY,OACtBz8B,KAAKy8B,YAAa,EAClB,MAAME,EAAa38B,KAAK28B,WACpBA,EAAW50B,SAAsE,IAA5D40B,EAAW10B,QAAQjI,KAAKuC,OAAO8B,SAASgd,gBAAuBsb,EAAW,GAAGnhB,QACtGxb,KAAK2D,QAAQuL,aAAa,cAAc,GACxClP,KAAKuC,OAAOiC,iBAAiB,UAAWxE,KAAKyV,UAC7CzV,KAAKuC,OAAO8B,SAASgP,KAAK7O,iBAAiB,QAASxE,KAAKw3B,UAAU,EAMpE,CAED,IAAAoF,CAAM13B,GACJ,IAAK,MAAMjB,KAASiB,EAAKhB,SACnBD,IAAUjE,KAAK2D,UACfM,EAAMsN,SAASvR,KAAK2D,SACtB3D,KAAK48B,KAAK34B,GAGZjE,KAAK68B,SAAS/5B,KAAK,IAAIg6B,GAAQ74B,IAElC,CAED,aAAAo4B,CAAe92B,GACb,IAAKvF,KAAK2D,QAAQ4N,SAAShM,EAAMiK,QAAS,CACxC,MAAMmtB,EAAa38B,KAAK28B,WACxB,GAA0B,IAAtBA,EAAW50B,OAAc,OAC7B,MAAMg1B,EAAQJ,EAAW,GACzBp3B,EAAMwZ,iBACNge,EAAMvhB,OACP,CACF,CAED,MAAA9F,CAAQzU,GACN,GAAkB,IAAdA,EAAE6N,QAAe,OAErB,MAAM6tB,EAAa38B,KAAK28B,WACxB,GAA0B,IAAtBA,EAAW50B,OAAc,OAE7B,MAAMg1B,EAAQJ,EAAW,GACnBK,EAAOL,EAAWA,EAAW50B,OAAS,GAEtCK,EAAQu0B,EAAW10B,QAAQjI,KAAKuC,OAAO8B,SAASgd,eAElDpgB,EAAEg8B,UACCj9B,KAAK2D,QAAQ4N,SAASvR,KAAKuC,OAAO8B,SAASgd,gBAAkBjZ,EAAQ,GACxEnH,EAAE8d,iBACFie,EAAKxhB,UACIxb,KAAKuC,OAAO8B,SAASgd,cAAc6b,SAAW,GAAKP,EAAWv0B,EAAQ,GAAG80B,SAAW,KAC7Fj8B,EAAE8d,iBACF4d,EAAWv0B,EAAQ,GAAGoT,SAGnBxb,KAAK2D,QAAQ4N,SAASvR,KAAKuC,OAAO8B,SAASgd,gBAAkBjZ,IAAUu0B,EAAW50B,OAAS,IAAgB,IAAXK,EAG1FpI,KAAKuC,OAAO8B,SAASgd,cAAc6b,SAAW,IACvDj8B,EAAE8d,iBACF4d,EAAWv0B,EAAQ,GAAGoT,UAJtBva,EAAE8d,iBACFge,EAAMvhB,QAMX,CAED,cAAImhB,GACF,IAAIQ,EAAaxiB,GAAIZ,UAAU/B,IAAIhP,sBAAsBhJ,KAAK2D,QAAS+3B,IAKvE,MAAM0B,EAASziB,GAAIZ,UAAU/B,IAAIhP,sBAAsBhJ,KAAKuC,OAAO8B,SAASsB,gBAAiB,uBAE7F,GAAIy3B,EAAOr1B,OAAQ,CACjB,MAAMs1B,EAAS,CAAA,EAEf,IAAK,MAAMC,KAASF,EAAQ,CAC1B,MAAMv3B,EAAOy3B,EAAM7c,aAAa,aACXza,IAAjBq3B,EAAOx3B,KAAqBw3B,EAAOx3B,GAAQ,IAAI03B,GAAiB13B,IACpEw3B,EAAOx3B,GAAM/C,KAAKw6B,EACnB,CAEDH,EAAaA,EAAWpuB,OAAQyuB,IAC9B,GAAwC,UAApCA,EAAUxP,QAAQ5jB,eAA8BozB,EAAU/c,aAAa,SAA4D,UAAjD+c,EAAU/c,aAAa,QAAQrW,cAA4B,OAAO,EACxJ,MAAMvE,EAAO23B,EAAU/c,aAAa,QACpC,OAAO4c,EAAOx3B,GAAM43B,KAAKD,IAE5B,CAED,MAAME,EAAW/iB,GAAIZ,UAAU/B,IAAIhP,sBAAsBhJ,KAAK2D,QAASg4B,IAEvE+B,EAASpS,KAAK,CAACC,EAAGC,IAAMD,EAAE2R,SAAW1R,EAAE0R,UAEvC,MAAMS,EAAeR,EAAWpuB,OAAQpL,IAA2C,IAA/B+5B,EAASz1B,QAAQtE,IAErE,OADoB+5B,EAASE,OAAOD,GACjB5uB,OAAQpL,GAAiC,OAArBA,EAAQu5B,UAAqBtB,GAAYj4B,EAAS3D,KAAK2D,SAC/F,CAED,MAAA64B,GACOx8B,KAAKs8B,UACVt8B,KAAKy8B,YAAa,EAElBz8B,KAAK2D,QAAQkQ,gBAAgB,cAC7B7T,KAAKuC,OAAO0S,oBAAoB,UAAWjV,KAAKyV,UAChDzV,KAAKuC,OAAO8B,SAASgP,KAAK4B,oBAAoB,QAASjV,KAAKw3B,UAAU,GAEtEx3B,KAAK2D,QAAU,KAOX3D,KAAKk8B,UAAUl8B,KAAKk8B,WACzB,CAED,OAAAlxB,GACEhL,KAAKw8B,QACN,EAGH,MAAMM,GACJ,WAAA/8B,CAAa4D,GACX3D,KAAK2D,QAAUA,EAEf3D,KAAK69B,MAAQl6B,EAAQ8c,aAAa,SAGlCzgB,KAAK2D,QAAQuL,aAAa,QAAS,GACpC,CAED,MAAA4uB,GAMqB,OAAf99B,KAAK69B,MAAgB79B,KAAK2D,QAAQkQ,gBAAgB,SACjD7T,KAAK2D,QAAQuL,aAAa,QAASlP,KAAK69B,MAC9C,EAGH,MAAMN,GACJ,WAAAx9B,CAAa8F,GACX7F,KAAK6F,KAAOA,EACZ7F,KAAKokB,QAAU,EAChB,CAED,IAAAthB,CAAMuhB,GACJrkB,KAAKokB,QAAQthB,KAAKuhB,IAEdA,KADkB9hB,OAAOu5B,aAAev5B,OAAOu5B,aAAaC,cAAgBx5B,QACnD8B,SAASgd,eAAiBgD,EAAO+R,cAA6BpwB,IAAlBhG,KAAK+9B,YAAwB/9B,KAAK+9B,SAAW1Z,EACvH,CAED,IAAAoZ,CAAMpZ,GACJ,OAAOrkB,KAAK+9B,WAAa1Z,CAC1B,ECvOH,MAAM2Z,WAAoBrjB,GAAIwP,KAAKpD,iBACjC,WAAAhnB,GACEgJ,MAAM,SAAS,GACf/I,KAAKi+B,UAAY,IAAIjC,EACtB,CAED,4BAAWjyB,GACT,MAAO,aACR,CAED,KAAA1H,CAAOzB,EAAOs9B,GACZn1B,MAAM1G,MAAMzB,EAAOs9B,GACE,OAAjBl+B,KAAK4kB,QAAkB5kB,KAAKi+B,UAAUzB,SACrCx8B,KAAKi+B,UAAU1B,KAAKv8B,KAAK4kB,QAAQ1f,KACvC,ECZH,MAAMi5B,WAAkBxjB,GAAIwP,KAAKxN,SAC/B,4BAAW5S,GACT,MAAO,WACR,CAED,IAAA+T,GACE9d,KAAKmP,OAAO,SAAUnP,KAAKo+B,OAAO96B,KAAKtD,MACxC,CAED,MAAAo+B,GACMp+B,KAAKkF,KAAKm5B,aAAer+B,KAAKkF,KAAKo5B,aACjCt+B,KAAKkF,KAAK4lB,aAAe9qB,KAAKkF,KAAKq5B,WAAav+B,KAAKkF,KAAKm5B,aAC5Dr+B,KAAKwX,YAAY8iB,GAAcE,gBAE/Bx6B,KAAKuX,SAAS+iB,GAAcE,gBAG9Bx6B,KAAKwX,YAAY8iB,GAAcE,eAElC,CAED,MAAAloB,GACEtS,KAAK4qB,SACL5qB,KAAKiS,QAAQjS,KAAK4qB,OAAOtnB,KAAKtD,MAC/B,CAED,MAAA4qB,GACE,MAAM4T,EAASj8B,OAAOu5B,aAChB2C,EAAgBD,EAASA,EAAOzC,cAAgBx5B,OAChDm8B,EA/BK,IA+Bc1+B,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYG,IAAM,EAAI,GACtEvc,KAAKoB,SAAUpB,KAAKsT,MAAMmX,UAAegU,EAAc9c,YAAc+c,EAA/B,KACrC1+B,KAAKsT,MAAMM,YAAY,qBAAyB6qB,EAAc9c,YAAc+c,EAA/B,MAClD1+B,KAAKo+B,QACN,EC9BHzjB,GAAIgkB,MAAQ,CACV7D,MAAOA,GACPH,YAAaA,GACbwD,UAAWA,GACXH,YAAaA,GACb1D,cAAeA,ICXjB3f,GAAIZ,UAAUzO,SAASqP,GAAIgkB,MAAMrE,cAAcC,MAAO5f,GAAIgkB,MAAM7D,OAChEngB,GAAIZ,UAAUzO,SAASqP,GAAIgkB,MAAMrE,cAAcG,KAAM9f,GAAIgkB,MAAMR,WAC/DxjB,GAAIZ,UAAUzO,SAASqP,GAAIwP,KAAKwB,aAAaC,KAAMjR,GAAIgkB,MAAMX,aCFtD,MAAMY,GAAmB,CAC9BC,OAAQlkB,GAAIZ,UAAUnU,GAAGO,SAAS,WAAY,UAC9C24B,OAAQnkB,GAAIZ,UAAUnU,GAAGO,SAAS,WAAY,WCDhD,MAAM44B,WAAuBpkB,GAAIwP,KAAKxN,SACpC,4BAAW5S,GACT,MAAO,gBACR,CAED,IAAA+T,GACE9d,KAAKue,cACLve,KAAKkN,OAAO0xB,GAAiBE,OAAQ9+B,KAAKmY,OAC1CnY,KAAK4f,gBAAiB,EACtB5f,KAAKg/B,WAAah/B,KAAKm2B,SACxB,CAED,SAAIhe,GACF,MAAM7E,EAAQG,iBAAiBzT,KAAKkF,KAAKsb,YACzC,OAAOwP,SAAS1c,EAAM6E,MACvB,CAED,aAAIge,GACF,OAAOn2B,KAAKkF,KAAKkxB,OAClB,CAED,aAAID,CAAWv1B,GACbZ,KAAKg/B,WAAap+B,EAClBZ,KAAKkN,OAAO0xB,GAAiBC,OAAQj+B,EACtC,CAED,WAAA6d,GACEze,KAAKm2B,WAAan2B,KAAKg/B,UACxB,CAED,QAAArqB,CAAUH,GACRxU,KAAKkN,OAAO0xB,GAAiBE,OAAQ9+B,KAAKmY,MAC3C,EChCH,MAAM8mB,WAAiBtkB,GAAIwP,KAAKxN,SAC9B,4BAAW5S,GACT,MAAO,UACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUwe,GAAiBC,OAAQ7+B,KAAKklB,OAAO5hB,KAAKtD,OACzDA,KAAKogB,UAAUwe,GAAiBE,OAAQ9+B,KAAK4qB,OAAOtnB,KAAKtD,MAC1D,CAED,MAAAklB,CAAQtkB,GACNZ,KAAKqN,QAAQuxB,GAAiBC,OAAQj+B,EACvC,CAED,MAAAgqB,CAAQhqB,GACNZ,KAAKqN,QAAQuxB,GAAiBE,OAAQl+B,EACvC,ECjBI,MAAMs+B,GAAmB,CAC9BC,SAAUxkB,GAAIZ,UAAUnU,GAAGE,SAAS,YACpCgwB,MAAOnb,GAAIZ,UAAUnU,GAAGE,SAAS,mBACjCs5B,MAAOzkB,GAAIZ,UAAUnU,GAAGE,SAAS,mBACjCu5B,OAAQ,GAAG1kB,GAAIZ,UAAUnU,GAAGE,SAAS,gDCHvC,MAAMw5B,WAAsB3kB,GAAIwP,KAAKxN,SACnC,4BAAW5S,GACT,MAAO,eACR,CAED,IAAA+T,GACE9d,KAAKsgB,WAAWse,GAAiBC,OAAQ7+B,KAAKklB,OAAO5hB,KAAKtD,OAC1DA,KAAKu/B,YAA4C,aAA9Bv/B,KAAK0gB,aAAa,QACrC1gB,KAAKmP,OAAO,UAAWnP,KAAKw/B,SAASl8B,KAAKtD,OAC1CA,KAAKmP,OAAO,QAASnP,KAAKw/B,SAASl8B,KAAKtD,MACzC,CAED,MAAAklB,CAAQtkB,GACNZ,KAAKy/B,WAAa7+B,EAClBZ,KAAKkP,aAAa,OAAQtO,EAAQ,OAAS,WAC5C,CAED,cAAI6+B,GACF,OAAOz/B,KAAKu/B,WACb,CAED,QAAAC,CAAUj6B,GACJA,GAA2C,mBAA3BA,EAAMm6B,mBACtBn6B,EAAMm6B,iBAAiB,YACzB1/B,KAAKkF,KAAKsb,WAAWtR,aAAayL,GAAIZ,UAAUnU,GAAGK,KAAK,YAAa,IAErEjG,KAAKkF,KAAKsb,WAAW3M,gBAAgB8G,GAAIZ,UAAUnU,GAAGK,KAAK,aAE9D,CAED,cAAIw5B,CAAY7+B,GACdZ,KAAKu/B,YAAc3+B,EACnBZ,KAAKkP,aAAa,OAAQtO,EAAQ,OAAS,WAC5C,ECjCH,MAAM++B,WAAsBhlB,GAAIwP,KAAKxN,SACnC,4BAAW5S,GACT,MAAO,eACR,CAED,IAAA+T,GACE9d,KAAKsgB,WAAWse,GAAiBE,OAAQ9+B,KAAK4qB,OAAOtnB,KAAKtD,MAC3D,CAED,MAAA4qB,CAAQhqB,GACN,MAAMg/B,EAAWxU,KAAKyU,KAAKj/B,EAAQ,IACnCZ,KAAKkF,KAAKoO,MAAMwsB,aAAeF,EAAW,KAC3C,ECRHjlB,GAAIolB,SAAW,CACbd,SAAUA,GACVF,eAAgBA,GAChBG,iBAAkBA,GAClBI,cAAeA,GACfK,cAAeA,ICVjBhlB,GAAIZ,UAAUzO,SAASqP,GAAIolB,SAASb,iBAAiBpJ,MAAOnb,GAAIolB,SAAST,eACzE3kB,GAAIZ,UAAUzO,SAASqP,GAAIolB,SAASb,iBAAiBC,SAAUxkB,GAAIolB,SAASd,UAC5EtkB,GAAIZ,UAAUzO,SAASqP,GAAIolB,SAASb,iBAAiBG,OAAQ1kB,GAAIolB,SAAShB,gBAC1EpkB,GAAIZ,UAAUzO,SAASqP,GAAIolB,SAASb,iBAAiBE,MAAOzkB,GAAIolB,SAASJ,eCHzE,MAAM3F,GAAOrf,GAAIZ,UAAUnU,GAAGE,SAAS,aACjC0iB,GAAW7N,GAAIZ,UAAUnU,GAAGE,SAAS,YAE9Bk6B,GAAqB,CAChCC,WAAYtlB,GAAIZ,UAAUnU,GAAGE,SAAS,OACtC0iB,SAAU,GAAGwR,QAAUxR,OAAawR,cAAgBA,WAAaxR,SAAeA,OAAawR,cAAgBA,WAAaxR,eAAqBwR,WAAaxR,SAAeA,KAC3KwM,gBAAiB,GAAGgF,MAAQxR,KAC5BwR,KAAMA,GACNkG,WAAY,GAAGlG,kBACfmG,KAAMxlB,GAAIZ,UAAUnU,GAAGE,SAAS,QAChCmvB,OAAQta,GAAIZ,UAAUnU,GAAGE,SAAS,YAClCs6B,iBAAkBzlB,GAAIZ,UAAUnU,GAAGE,SAAS,mBCV9C,MAAMu6B,WAAuB1lB,GAAIwP,KAAKxN,SACpC,WAAA5c,GACEgJ,QACA/I,KAAKsgC,iBAAkB,CACxB,CAED,4BAAWv2B,GACT,MAAO,gBACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUzF,GAAIwP,KAAKzH,mBAAmBE,MAAO5iB,KAAKugC,UAAUj9B,KAAKtD,OACtEA,KAAKogB,UAAUzF,GAAIwP,KAAKzH,mBAAmBI,QAAS9iB,KAAKugC,UAAUj9B,KAAKtD,OACxEA,KAAKsf,YAAa,EAClBtf,KAAKugC,WACN,CAED,MAAAjuB,GACEtS,KAAKugC,WACN,CAED,SAAAA,GACE,MAAM7I,EAAW13B,KAAK2D,QAAQ8J,uBAAuBkN,GAAIwP,KAAKC,SAASrgB,kBAAmB,MAAM,GAAM,GACtG,GAAI2tB,GAAY13B,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYI,KAAOkb,EAAS/zB,QAAQuB,KAAKzC,QAAQu9B,GAAmBG,MAAO,CACpH,MAAM7N,EAAQtyB,KAAK2D,QAAQuB,KAAKsE,cAAcoY,wBAAwB0Q,MAChEna,EAAQuf,EAAS/zB,QAAQuB,KAAK0c,wBAAwBzJ,MACtD2J,EAAO9hB,KAAK2D,QAAQuB,KAAK0c,wBAAwBE,KACvD9hB,KAAKwgC,eAAiB1e,EAAO3J,EAAQma,CAC3C,MAAWtyB,KAAKwgC,gBAAiB,CAC9B,CAED,kBAAIA,GACF,OAAOxgC,KAAKsgC,eACb,CAED,kBAAIE,CAAgB5/B,GACdZ,KAAKsgC,kBAAoB1/B,IAC7BZ,KAAKsgC,gBAAkB1/B,EACnBA,EAAO+Z,GAAIZ,UAAU/B,IAAIT,SAASvX,KAAK2D,QAAQuB,KAAM86B,GAAmBE,YACvEvlB,GAAIZ,UAAU/B,IAAIR,YAAYxX,KAAK2D,QAAQuB,KAAM86B,GAAmBE,YAC1E,CAED,mBAAIlV,GAEF,OADgBhrB,KAAK2D,QAAQO,SAASlD,IAAIiD,GAASA,EAAMuJ,YAAY,mBAAmBuB,OAAOsV,GAAqB,OAAXA,IAAoBA,EAAO5M,SAASuoB,GAAmB/K,SAAW5Q,EAAO5M,SAASuoB,GAAmBI,oBAC/L,EAChB,EChDI,MAAMK,GAA0B,CACrCvnB,MAAO,EACPwnB,OAAQ,EACRC,QAAS,GCCX,MAAMC,WAAmBjmB,GAAIwP,KAAKuB,eAChC,4BAAW3hB,GACT,MAAO,YACR,CAED,IAAA+T,GACE/U,MAAM+U,OACN9d,KAAK6gC,SAAU,EACf7gC,KAAK8gC,KAAM,EACX9gC,KAAKkgB,YAAYvF,GAAIwP,KAAKnc,aAAaC,MAAOjO,KAAK+gC,iBAAiBz9B,KAAKtD,OACzEA,KAAKmP,OAAO,YAAanP,KAAKghC,gBAAgB19B,KAAKtD,OACnDA,KAAKkgB,YAAYvF,GAAIwP,KAAKnc,aAAaE,QAASlO,KAAK24B,SAASr1B,KAAKtD,OACnEA,KAAKue,YAAY,CAAElP,SAAS,IAC5BrP,KAAKsf,YAAa,CACnB,CAED,QAAAoF,CAAU6C,GACR,OAAOxe,MAAM2b,SAAS6C,IAAWA,EAAO5jB,QAAQuB,KAAKzC,QAAQkY,GAAIZ,UAAUC,OAAO5Y,SAAW4+B,GAAmBhL,gBAAkBgL,GAAmBxX,SACtJ,CAED,iBAAIyY,GACF,OAAOjhC,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYI,KAAOxc,KAAKoI,OAAS,CACpE,CAED,QAAAuwB,CAAU7pB,GACR,OAAQA,GACN,KAAK6L,GAAIwP,KAAK/b,SAASE,OACrB,IAAKtO,KAAKihC,cAAe,OACzBjhC,KAAKoI,OAAS,EACd,MAEF,KAAKuS,GAAIwP,KAAK/b,SAASC,IACrB,IAAKrO,KAAKihC,cAAe,OACzBjhC,KAAKiS,QAAQ,KACPjS,KAAK4kB,QAAQ1f,KAAKqM,SAASlN,SAASgd,iBACxCrhB,KAAKoI,OAAS,KAIrB,CAED,eAAA44B,CAAiB//B,GACVjB,KAAKihC,gBACVjhC,KAAKqQ,SAAWrQ,KAAK4kB,QAAQ1f,KAAKqM,SAAStQ,EAAEuO,QAAUixB,GAAwBC,OAASD,GAAwBE,QAChH3gC,KAAKkhC,kBACN,CAED,WAAAziB,CAAaxd,IACPA,EAAEuO,OAAO/M,QAAQ,cAAiBxB,EAAEuO,OAAO/M,QAAQ,oBAAuBxB,EAAEuO,OAAO/M,QAAQkY,GAAIwP,KAAKtD,mBAAmBC,mBACzH9mB,KAAKoI,OAAS,EAEjB,CAED,gBAAA24B,CAAkBvxB,GACXxP,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYI,MACvCxc,KAAKkF,KAAKqM,SAAS/B,KACtBxP,KAAK8gC,KAAM,EACX9gC,KAAKkhC,mBAER,CAED,eAAAA,GACMlhC,KAAKmhC,eACTnhC,KAAKmhC,cAAe,EACpBnhC,KAAKiS,QAAQjS,KAAKohC,YAAY99B,KAAKtD,OACpC,CAED,WAAAohC,GACE,GAAIphC,KAAK8gC,IACP,OAAQ9gC,KAAKqQ,UACX,KAAKowB,GAAwBE,QAC3B3gC,KAAKoI,OAAS,EACd,MAEF,KAAKq4B,GAAwBC,OACvB1gC,KAAK4kB,UAAY5kB,KAAK4kB,QAAQ1f,KAAKqM,SAASlN,SAASgd,gBAAgBrhB,KAAK4kB,QAAQpJ,QACtF,MAEF,QACMxb,KAAKoI,OAAS,IAAMpI,KAAK4kB,QAAQxD,WAAUphB,KAAKoI,OAAS,GAInEpI,KAAKiS,QAAQjS,KAAKqhC,UAAU/9B,KAAKtD,MAClC,CAED,SAAAqhC,GACErhC,KAAKqQ,SAAWowB,GAAwBvnB,KACxClZ,KAAK8gC,KAAM,EACX9gC,KAAKmhC,cAAe,CACrB,CAED,SAAI/4B,GAAW,OAAOW,MAAMX,KAAQ,CAEpC,SAAIA,CAAOxH,IACM,IAAXA,GAAgBZ,KAAK4kB,SAAW5kB,KAAK4kB,QAAQxD,UAAUphB,KAAK4kB,QAAQpJ,QACxEzS,MAAMX,MAAQxH,CACf,CAED,cAAImnB,GACF,OAAQ/nB,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYI,GAChD,CAED,MAAAlK,GACEtS,KAAK4jB,QACN,ECvGHjJ,GAAI2mB,WAAa,CACfV,WAAYA,GACZP,eAAgBA,GAChBI,wBAAyBA,GACzBT,mBAAoBA,ICRtBrlB,GAAIZ,UAAUzO,SAASqP,GAAI2mB,WAAWtB,mBAAmBC,WAAYtlB,GAAI2mB,WAAWV,YACpFjmB,GAAIZ,UAAUzO,SAASqP,GAAI2mB,WAAWtB,mBAAmBhG,KAAMrf,GAAI2mB,WAAWjB,gBCI9E,MAAMkB,WAAkB5mB,GAAIwP,KAAKtE,iBAC/B,WAAA9lB,GACEgJ,MAAM4R,GAAIwP,KAAKlC,eAAeG,OAC/B,CAED,4BAAWre,GACT,MAAO,WACR,CAED,WAAA0U,CAAaxd,GACX8H,MAAM0V,YAAYxd,GAClBjB,KAAKwb,OACN,CAED,KAAAnZ,CAAOzB,GACLmI,MAAM1G,MAAMzB,GACRZ,KAAKgmB,YACPhmB,KAAKkP,aAAa,WAAYtO,EAAQ,IAAM,MACxCA,GACEZ,KAAKwhC,MAAMxhC,KAAKwhC,KAAKC,SAASzhC,MAGvC,CAED,QAAIwhC,GACF,OAAOxhC,KAAK2D,QAAQiK,qBAAqB,WAAY,YACtD,EC/BI,MAAM8zB,GAAc,CACzBrzB,IAAKsM,GAAIZ,UAAUnU,GAAGE,SAAS,aAC/Bid,MAAOpI,GAAIZ,UAAUnU,GAAGE,SAAS,QACjC67B,MAAOhnB,GAAIZ,UAAUnU,GAAGE,SAAS,eACjCo0B,KAAMvf,GAAIZ,UAAUnU,GAAGE,SAAS,cAChC87B,OAAQjnB,GAAIZ,UAAUnU,GAAGE,SAAS,gBAClC+7B,YAAalnB,GAAIZ,UAAUnU,GAAGE,SAAS,sBACvCg8B,aAAcnnB,GAAIZ,UAAUnU,GAAGE,SAAS,uBACxCi8B,YAAapnB,GAAIZ,UAAUnU,GAAGE,SAAS,gCACvCk8B,UAAWrnB,GAAIZ,UAAUnU,GAAGE,SAAS,+BCX1Bm8B,GACJ,kBADIA,GAEN,gBAFMA,GAGL,OCOR,MAAMC,WAAiBvnB,GAAIwP,KAAKjH,WAC9B,WAAAnjB,GACEgJ,MAAM4R,GAAIwP,KAAKlC,eAAeG,OAAQsZ,GAAYC,MAAOJ,GAAW,aACpEvhC,KAAKmiC,WAAaF,GAClBjiC,KAAKoiC,yBAA0B,CAChC,CAED,4BAAWr4B,GACT,MAAO,UACR,CAED,aAAIs4B,GACF,OAAOriC,KAAKmiC,UACb,CAED,aAAIE,CAAWzhC,GACb,GAAIA,IAAUZ,KAAKmiC,WAAnB,CACA,OAAQniC,KAAKmiC,YACX,KAAKF,GACHjiC,KAAKwX,YAAYkqB,GAAYK,aAC7B,MAEF,KAAKE,GACHjiC,KAAKwX,YAAYkqB,GAAYM,WAC7B,MAEF,KAAKC,GACH,MAEF,QACE,OAKJ,OAFAjiC,KAAKmiC,WAAavhC,EAEVZ,KAAKmiC,YACX,KAAKF,GACHjiC,KAAKuX,SAASmqB,GAAYK,aAC1B,MAEF,KAAKE,GACHjiC,KAAKuX,SAASmqB,GAAYM,WAzBQ,CA4BvC,CAED,0BAAIM,GACF,OAAOtiC,KAAKoiC,uBACb,CAED,0BAAIE,CAAwB1hC,GACtBZ,KAAKoiC,0BAA4BxhC,IACjCA,EAAOZ,KAAKuX,SAASoD,GAAIZ,UAAUK,OAAOnB,mBAAmBC,MAC5DlZ,KAAKwX,YAAYmD,GAAIZ,UAAUK,OAAOnB,mBAAmBC,MAC9DlZ,KAAKoiC,yBAAoC,IAAVxhC,EAChC,CAED,SAAA2hC,CAAWF,EAAWnE,GACpBl+B,KAAKsiC,uBAAyBpE,EAC9Bl+B,KAAKqiC,UAAYA,CAClB,CAED,KAAA1e,GACM3jB,KAAKskB,OAAOtkB,KAAKskB,MAAMoB,UAAS,EACrC,CAED,eAAAJ,CAAiBK,GACf,OAAK3lB,KAAKskB,OAAUtkB,KAAKskB,MAAMkd,KACxBz4B,MAAMuc,gBAAgBK,GAAY5W,OAAOmc,GAAalrB,KAAKskB,MAAMkd,KAAKt8B,KAAKqM,SAAS2Z,EAAUhmB,OADzD,EAE7C,EC/EI,MAAMs9B,GACL,gBADKA,GAEJ,iBAFIA,GAGL,gBAHKA,GAIN,eCFMC,GAAc,CACzBC,UAAW/nB,GAAIZ,UAAUnU,GAAGO,SAAS,MAAO,aAC5Cw8B,YAAahoB,GAAIZ,UAAUnU,GAAGO,SAAS,MAAO,gBCKhD,MAAMy8B,WAAkBjoB,GAAIwP,KAAKpD,iBAC/B,WAAAhnB,GACEgJ,MAAM,WACP,CAED,4BAAWgB,GACT,MAAO,WACR,CAED,IAAA+T,GACE/U,MAAM+U,OAEN9d,KAAKmP,OAAO,gBAAiBnP,KAAK6iC,cAAcv/B,KAAKtD,OACrDA,KAAKogB,UAAUqiB,GAAYC,UAAW1iC,KAAK8iC,SAASx/B,KAAKtD,OACzDA,KAAKogB,UAAUqiB,GAAYE,YAAa3iC,KAAK+iC,cAAcz/B,KAAKtD,OAChEA,KAAKqf,aAAc,CACpB,CAED,QAAAwI,CAAUC,EAAe,GACvB/e,MAAM8e,SAASC,EAChB,CAED,QAAI0Z,GACF,OAAOxhC,KAAK2D,QAAQ8J,uBAAuB,WAAY,aAAa,GAAM,EAC3E,CAED,aAAAs1B,CAAeniC,GACbZ,KAAKgjC,WAAapiC,CACnB,CAED,aAAAiiC,CAAe5hC,GACbjB,KAAKsiC,wBAAyB,CAC/B,CAED,kBAAIld,GACF,OAAOplB,KAAKsnB,QAAQlI,KAAKmI,GAAUA,EAAOnC,eAC3C,CAED,QAAA0d,CAAUtpB,GACR,OAAQA,GACN,KAAKgpB,GACHxiC,KAAKijC,YACL,MAEF,KAAKT,GACHxiC,KAAKkjC,aACL,MAEF,KAAKV,GACHxiC,KAAKmjC,YACL,MAEF,KAAKX,GACHxiC,KAAKojC,WAGV,CAMD,UAAAF,GACMljC,KAAKolB,iBACHplB,KAAKoI,MAAQpI,KAAK+H,OAAS,EAC7B/H,KAAKoI,QAELpI,KAAKoI,MAAQ,EAGfpI,KAAKwb,QAER,CAMD,SAAAynB,GACMjjC,KAAKolB,iBACHplB,KAAKoI,MAAQ,EACfpI,KAAKoI,QAELpI,KAAKoI,MAAQpI,KAAK+H,OAAS,EAG7B/H,KAAKwb,QAER,CAKD,SAAA2nB,GACMnjC,KAAKolB,iBACPplB,KAAKoI,MAAQ,EACbpI,KAAKwb,QAER,CAKD,QAAA4nB,GACMpjC,KAAKolB,iBACPplB,KAAKoI,MAAQpI,KAAK+H,OAAS,EAC3B/H,KAAKwb,QAER,CAED,KAAAA,GACMxb,KAAK4kB,SACP5kB,KAAK4kB,QAAQpJ,OAEhB,CAED,KAAAnZ,GACE,IAAK,IAAI0B,EAAI,EAAGA,EAAI/D,KAAKknB,OAAQnjB,IAAK/D,KAAKsnB,QAAQvjB,GAAGw+B,UAAUN,IAC5DjiC,KAAK4kB,SAAS5kB,KAAK4kB,QAAQ2d,UAAUN,IACzC,IAAK,IAAIl+B,EAAI/D,KAAKknB,OAAS,EAAGnjB,EAAI/D,KAAK+H,OAAQhE,IAAK/D,KAAKsnB,QAAQvjB,GAAGw+B,UAAUN,IAC9EjiC,KAAKsiC,wBAAyB,CAC/B,CAED,0BAAIA,GACF,OAAOtiC,KAAKoiC,uBACb,CAED,0BAAIE,CAAwB1hC,GACtBZ,KAAKoiC,0BAA4BxhC,IACjCA,EAAOZ,KAAKuX,SAASoD,GAAIZ,UAAUK,OAAOnB,mBAAmBC,MAC5DlZ,KAAKwX,YAAYmD,GAAIZ,UAAUK,OAAOnB,mBAAmBC,MAC9DlZ,KAAKoiC,yBAAoC,IAAVxhC,EAChC,CAED,MAAAmR,GACE,GAAqB,OAAjB/R,KAAK4kB,QAAkB,OAC3B5kB,KAAKkF,KAAKq5B,UAAY,EACtBv+B,KAAKkF,KAAKm+B,WAAa,EACvB,MAAMC,EAAalY,KAAKgF,MAAMpwB,KAAK4kB,QAAQ1f,KAAK4lB,cAChD,GAAI9qB,KAAKujC,cAAgBD,EAAY,OACrCtjC,KAAKujC,YAAcD,EAEnBtjC,KAAKsT,MAAMM,YAAY,gBAAkB5T,KAAKujC,YAAcvjC,KAAKgjC,WADpC,EACyE,KACvG,EChJH,MAAMQ,WAAiB7oB,GAAIwP,KAAKxN,SAC9B,4BAAW5S,GACT,MAAO,UACR,CAED,IAAA+T,GACE9d,KAAKmP,OAAO,SAAUnP,KAAKyhB,OAAOne,KAAKtD,OACvCA,KAAK8e,UAAUnE,GAAIwP,KAAK/b,SAASO,MAAO3O,KAAKkN,OAAO5J,KAAKtD,KAAMyiC,GAAYC,UAAWF,KAAgB,GAAM,GAC5GxiC,KAAK8e,UAAUnE,GAAIwP,KAAK/b,SAASK,KAAMzO,KAAKkN,OAAO5J,KAAKtD,KAAMyiC,GAAYC,UAAWF,KAAe,GAAM,GAC1GxiC,KAAK8e,UAAUnE,GAAIwP,KAAK/b,SAASI,KAAMxO,KAAKkN,OAAO5J,KAAKtD,KAAMyiC,GAAYC,UAAWF,KAAe,GAAM,GAC1GxiC,KAAK8e,UAAUnE,GAAIwP,KAAK/b,SAASG,IAAKvO,KAAKkN,OAAO5J,KAAKtD,KAAMyiC,GAAYC,UAAWF,KAAc,GAAM,GACxGxiC,KAAKsf,YAAa,CACnB,CAED,QAAAmiB,CAAUgC,GACR,MAAMC,EAAUD,EAAIjiB,UACdmiB,EAAW3jC,KAAKwhB,UAChBoiB,EAAe5jC,KAAKkF,KAAKm+B,WAC3BK,EAAQ5hB,KAAO6hB,EAAS7hB,KAAM9hB,KAAKkF,KAAK4O,SAAS8vB,EAAeD,EAAS7hB,KAAO4hB,EAAQ5hB,KArBxE,GAqBgG,GAC3G4hB,EAAQpR,MAAQqR,EAASrR,OAAOtyB,KAAKkF,KAAK4O,SAAS8vB,EAAeD,EAASrR,MAAQoR,EAAQpR,MAtBhF,GAsByG,EAC9H,CAED,eAAIuR,GACF,OAAO7jC,KAAK8jC,YACb,CAED,eAAID,CAAajjC,GACXZ,KAAK8jC,eAAiBljC,IAC1BZ,KAAK8jC,aAAeljC,EACpBZ,KAAKqC,QACN,CAED,KAAAA,GACMrC,KAAK8jC,cACP9jC,KAAKuX,SAASmqB,GAAYE,QAC1B5hC,KAAKyhB,WAELzhB,KAAKwX,YAAYkqB,GAAYI,cAC7B9hC,KAAKwX,YAAYkqB,GAAYG,aAC7B7hC,KAAKwX,YAAYkqB,GAAYE,QAEhC,CAGD,MAAAngB,GACE,MAAM4hB,EAAajY,KAAKK,IAAIzrB,KAAKkF,KAAKm+B,YAChCU,EAAQV,GAhDI,GAiDZnX,EAAMlsB,KAAKkF,KAAKgyB,YAAcl3B,KAAKkF,KAAKkO,YAjD5B,GAkDZ4wB,EAAQ5Y,KAAKK,IAAI4X,IAAenX,EAChC+X,EAAkD,QAA1CxwB,iBAAiBzT,KAAKkF,MAAMm9B,UACpC6B,EAAcD,EAAQvC,GAAYI,aAAeJ,GAAYG,YAC7DsC,EAAcF,EAAQvC,GAAYG,YAAcH,GAAYI,aAE9DiC,EACF/jC,KAAKwX,YAAY0sB,GAEjBlkC,KAAKuX,SAAS2sB,GAGZF,EACFhkC,KAAKwX,YAAY2sB,GAEjBnkC,KAAKuX,SAAS4sB,EAEjB,CAED,MAAA7xB,GACEtS,KAAK6jC,YAAc7jC,KAAKkF,KAAKgyB,YAAcl3B,KAAKkF,KAAKkO,YArEnC,GAsElB,MAAMgF,EAASpY,KAAKwhB,UAAUpJ,OAC9BpY,KAAK4T,YAAY,qBAAsB,GAAGwE,OAC1CpY,KAAKkN,OAAOu1B,GAAYE,YAAavqB,EACtC,CAED,OAAApN,GACEhL,KAAK6jC,aAAc,CACpB,EC3EHlpB,GAAIypB,IAAM,CACRlC,SAAUA,GACVX,UAAWA,GACXqB,UAAWA,GACXY,SAAUA,GACV9B,YAAaA,GACbe,YAAaA,ICZf9nB,GAAIZ,UAAUzO,SAASqP,GAAIypB,IAAI1C,YAAYC,MAAOhnB,GAAIypB,IAAIlC,UAC1DvnB,GAAIZ,UAAUzO,SAASqP,GAAIypB,IAAI1C,YAAY3e,MAAOpI,GAAIypB,IAAIxB,WAC1DjoB,GAAIZ,UAAUzO,SAASqP,GAAIypB,IAAI1C,YAAYxH,KAAMvf,GAAIypB,IAAIZ,UCFzD,MAAMa,GAAW,CACfC,QAAS3pB,GAAIZ,UAAUnU,GAAGL,MAAM,YCAlC,MAAMg/B,WAAuB5pB,GAAIwP,KAAKxN,SACpC,4BAAW5S,GACT,MAAO,gBACR,CAED,IAAA+T,GACE9d,KAAKue,aACN,CAED,WAAAE,GAGE,OAFAze,KAAKghB,eAEGrG,GAAIhT,MACV,KAAKgT,GAAIlW,MAAMM,QACf,KAAK4V,GAAIlW,MAAMO,MACf,KAAK2V,GAAIlW,MAAMK,IACb9E,KAAKiS,QAAQjS,KAAK83B,OAAOx0B,KAAKtD,OAC9B,MAEF,QACEA,KAAKS,SAGTT,KAAKiF,SAASo/B,GAASC,QACxB,CAED,MAAAxM,GACMzzB,SAASgP,KAAK9B,SAASvR,KAAKkF,OAAOlF,KAAK6B,KAAK,mFAAmF8Y,GAAIhT,gEAAgE08B,GAASC,8DAClN,EC7BI,MAAME,GAAc,CACzBC,UAAW,GAAG9pB,GAAIZ,UAAUnU,GAAGE,SAAS,uBACxC4+B,YAAa,GAAG/pB,GAAIZ,UAAUnU,GAAGE,SAAS,mBCC5C6U,GAAIgqB,IAAM,CACRJ,eAAgBA,GAChBC,YAAaA,GACbH,SAAUA,ICNZ1pB,GAAIZ,UAAUzO,SAASqP,GAAIgqB,IAAIH,YAAYC,UAAW9pB,GAAIwP,KAAK2B,QAC/DnR,GAAIZ,UAAUzO,SAASqP,GAAIgqB,IAAIH,YAAYE,YAAa/pB,GAAIgqB,IAAIJ,gBCDhE,MAAMK,GAAgBjqB,GAAIZ,UAAUnU,GAAGE,SAAS,iBAEnC++B,GAAwB,CACnCD,cAAeA,GACf3P,OAAQ,GAAG2P,WCHb,MAAME,WAAsBnqB,GAAIwP,KAAKxN,SACnC,4BAAW5S,GACT,MAAO,eACR,CAED,mBAAIihB,GAEF,OADgBhrB,KAAK2D,QAAQO,SAASlD,IAAIiD,GAASA,EAAMuJ,YAAY,mBAAmBuB,OAAOsV,GAAqB,OAAXA,GAAmBA,EAAO5M,SAASotB,GAAsB5P,SACnJ,EAChB,ECPHta,GAAIoqB,cAAgB,CAClBD,cAAeA,GACfD,sBAAuBA,ICJzBlqB,GAAIZ,UAAUzO,SAASqP,GAAIoqB,cAAcF,sBAAsBD,cAAejqB,GAAIoqB,cAAcD,eCAhG,MAAME,WAAqBrqB,GAAIwP,KAAKxN,SAClC,4BAAW5S,GACT,MAAO,cACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUzF,GAAIwP,KAAKhB,eAAeC,OAAQ8F,IAC7ClvB,KAAKqN,QAAQsN,GAAIwP,KAAKhB,eAAeC,OAAQ8F,KAE/ClvB,KAAKogB,UAAUzF,GAAIwP,KAAKhB,eAAevG,MAAO,KAC5C5iB,KAAKqN,QAAQsN,GAAIwP,KAAKhB,eAAevG,QAExC,ECZI,MAAMqiB,GAAe,CAC1BvP,SAAU/a,GAAIZ,UAAUnU,GAAGE,SAAS,kBACpC6vB,gBAAiB,GAAGhb,GAAIZ,UAAUnU,GAAGE,SAAS,qBAAqB6U,GAAIZ,UAAUnU,GAAGE,SAAS,mBCA/F6U,GAAIuqB,KAAO,CACTD,aAAcA,GACdD,aAAcA,ICJhBrqB,GAAIZ,UAAUzO,SAASqP,GAAIuqB,KAAKD,aAAavP,SAAU/a,GAAIuqB,KAAKF,cAChErqB,GAAIZ,UAAUzO,SAASqP,GAAIuqB,KAAKD,aAAatP,gBAAiBhb,GAAIwP,KAAKoG,cCDhE,MAAM4U,GAAgB,CAC3BC,MAAOzqB,GAAIZ,UAAUnU,GAAGE,SAAS,SACjCu/B,SAAU1qB,GAAIZ,UAAUnU,GAAGE,SAAS,aACpCw/B,WAAY3qB,GAAIZ,UAAUnU,GAAGE,SAAS,eACtCy/B,aAAc5qB,GAAIZ,UAAUnU,GAAGE,SAAS,iBACxC0/B,kBAAmB7qB,GAAIZ,UAAUnU,GAAGE,SAAS,iBAAmB6U,GAAIZ,UAAUnU,GAAGE,SAAS,eAC1F2/B,YAAa9qB,GAAIZ,UAAUnU,GAAGE,SAAS,0CACvC4/B,aAAc,GAAG/qB,GAAIZ,UAAUnU,GAAGE,SAAS,oDAC3C6/B,aAAchrB,GAAIZ,UAAUnU,GAAGE,SAAS,iBACxC8/B,UAAWjrB,GAAIZ,UAAUnU,GAAGE,SAAS,cACrC+/B,UAAWlrB,GAAIZ,UAAUnU,GAAGE,SAAS,cACrCggC,aAAcnrB,GAAIZ,UAAUnU,GAAGK,KAAK,UACpC8/B,aAAcprB,GAAIZ,UAAUnU,GAAGK,KAAK,WCZzB+/B,GAAgB,CAC3BC,MAAOtrB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,SAC1C+/B,OAAQvrB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,UAC3CggC,OAAQxrB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,UAC3CigC,YAAazrB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,eAChDkgC,IAAK1rB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,OACxCmgC,IAAK3rB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,OACxCogC,KAAM5rB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,QACzCqgC,OAAQ7rB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,UAC3CsgC,OAAQ9rB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,UAC3CugC,SAAU/rB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,YAC7CwgC,eAAgBhsB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,mBCbrD,MAAMygC,GACJ,WAAA7mC,GACEC,KAAKqY,OAAS,EACdrY,KAAK6mC,KAAO,EACZ7mC,KAAK8mC,KAAO,EACZ9mC,KAAK+mC,OAAS,EACd/mC,KAAKgnC,WAAa,GAClBhnC,KAAKinC,YAAc,EACnBjnC,KAAKknC,QAAU,GACflnC,KAAKmnC,QAAU,GACfnnC,KAAKonC,YAAc,EACpB,CAED,SAAAlgC,CAAWmgC,GACJA,IACLrnC,KAAKknC,QAAUG,EAAMH,QACrBlnC,KAAKmnC,QAAUE,EAAMF,QACrBnnC,KAAKqY,OAASgvB,EAAMlvB,MACpBnY,KAAKsnC,eAAeD,EAAME,cAC1BvnC,KAAKY,MAAQymC,EAAMzmC,MACnBZ,KAAK4jB,SACN,CAED,SAAA4jB,CAAW5mC,GACTZ,KAAKknC,QAAoB,OAAVtmC,EAAiBA,EAAQ,EACzC,CAED,SAAA6mC,CAAW7mC,GACTZ,KAAKmnC,QAAoB,OAAVvmC,EAAiBA,EAAQ,EACzC,CAED,SAAA8mC,CAAW9mC,GACT,MAAO,GAAGZ,KAAKknC,UAAUtmC,IAAQZ,KAAKmnC,SACvC,CAED,SAAIhvB,GACF,OAAOnY,KAAKqY,MACb,CAED,SAAIF,CAAOvX,GACTZ,KAAKqY,OAASzX,CACf,CAED,QAAI+mC,GACF,OAAO3nC,KAAK4nC,KACb,CAED,QAAID,CAAM/mC,GACJZ,KAAK4nC,QAAUhnC,IACnBZ,KAAK4nC,MAAQhnC,EACbZ,KAAK6nC,aAAajnC,EAAQ,GAAK,IAC/BZ,KAAK4jB,SACN,CAED,YAAAikB,CAAcjnC,EAAOknC,EAAO,GAC1B9nC,KAAKgnC,WAAapmC,EAClBZ,KAAK+nC,cAAgBnnC,EAAQknC,CAC9B,CAED,aAAIE,GACF,OAAOhoC,KAAK0nC,UAAU1nC,KAAK+mC,OAC5B,CAED,SAAInmC,GACF,OAAOZ,KAAK+mC,MACb,CAED,SAAInmC,CAAOA,GACTZ,KAAK+mC,OAASnmC,CACf,CAED,WAAIqnC,GACF,OAAOjoC,KAAKkoC,QACb,CAED,cAAAZ,CAAgBa,GACdnoC,KAAKunC,aAAeY,EACpBnoC,KAAK6mC,KAAOsB,EAAYhd,IACxBnrB,KAAK8mC,KAAOqB,EAAYjc,IACxBlsB,KAAKooC,MAAQD,EAAYE,KACzBroC,KAAKsoC,YAAcH,EAAYI,UAChC,CAED,OAAIpd,GACF,OAAOnrB,KAAK6mC,IACb,CAED,WAAI2B,GACF,OAAOxoC,KAAK0nC,UAAU1nC,KAAK6mC,KAC5B,CAED,OAAI3a,GACF,OAAOlsB,KAAK8mC,IACb,CAED,WAAI2B,GACF,OAAOzoC,KAAK0nC,UAAU1nC,KAAK8mC,KAC5B,CAED,QAAIuB,GACF,OAAOroC,KAAKooC,KACb,CAED,UAAIM,GACF,MAAO,CACL/b,KAAM3sB,KAAKgoC,UACX3V,UAAW,cAAcryB,KAAK2oC,8BAA8B3oC,KAAK4oC,mBAEpE,CAED,SAAAC,CAAWjoC,GACT,OAAQA,EAAQZ,KAAK6mC,MAAQ7mC,KAAKsoC,WACnC,CAED,YAAIQ,GACF,OAAO9oC,KAAK+oC,SACb,CAED,MAAAnlB,GACE5jB,KAAKgpC,SACN,CAED,OAAAA,GACEhpC,KAAKinC,YAAcjnC,KAAKqY,OAASrY,KAAK+nC,cACtC,MAAMtX,EAAQzwB,KAAK6oC,UAAU7oC,KAAK+mC,QAClC/mC,KAAK2oC,YAAclY,EAAQzwB,KAAKqY,OAChCrY,KAAK4oC,eAAyB,IAARnY,EACtBzwB,KAAK+oC,UAAY,CACfzW,MAAO,IAAItyB,KAAKinC,YAAcxW,EAA6B,GAArBzwB,KAAK+nC,eAAqBzO,QAAQ,OAE3E,EAGH,MAAM2P,WAAuBrC,GAC3B,aAAIsC,GACF,MAAO,GAAGlpC,KAAKmpC,WAAW7P,QAAQ,MACnC,CAED,OAAA0P,GACEjgC,MAAMigC,UACN,MAAMI,EAAQppC,KAAKsoC,YAActoC,KAAKooC,MAGtC,IAFApoC,KAAKmpC,WAAanpC,KAAKinC,YAAcmC,GACjCppC,KAAKmpC,WAAa,IAAME,SAASrpC,KAAKmpC,eAAanpC,KAAKmpC,WAAa,GAClEnpC,KAAKmpC,WAAa,GAAGnpC,KAAKmpC,YAAc,CAChD,EAGH,MAAMG,WAAyB1C,GAC7B,UAAI2C,GACF,OAAOvpC,KAAK+mC,MACb,CAED,UAAIwC,CAAQ3oC,GACNZ,KAAKwpC,UAAY5oC,IACrBZ,KAAKwpC,QAAU5oC,EACfZ,KAAK4jB,SACN,CAED,aAAIokB,GACF,MAAO,GAAGhoC,KAAK0nC,UAAU1nC,KAAK+mC,aAAa/mC,KAAK0nC,UAAU1nC,KAAKwpC,UAChE,CAED,YAAA3B,CAAcjnC,GACZmI,MAAM8+B,aAAajnC,EAAO,EAC3B,CAED,OAAAooC,GACEjgC,MAAMigC,UACN,MAAMvY,EAAQzwB,KAAK6oC,UAAyC,IAA9B7oC,KAAK+mC,OAAS/mC,KAAKwpC,UACjDxpC,KAAK2oC,YAAclY,EAAQzwB,KAAKqY,OAChCrY,KAAK4oC,eAAyB,IAARnY,EACtB,MAAMgZ,EAASzpC,KAAK6oC,UAAU7oC,KAAK+mC,QAC7B2C,EAAS1pC,KAAK6oC,UAAU7oC,KAAKwpC,SACnCxpC,KAAK+oC,UAAY,CACfjnB,KAAM,IAAI9hB,KAAKinC,YAAcwC,EAA8B,IAArBzpC,KAAK+nC,eAAsBzO,QAAQ,OACzEhH,MAAO,IAAItyB,KAAKinC,YAAcyC,EAA8B,IAArB1pC,KAAK+nC,eAAsBzO,QAAQ,OAE7E,EAGH,MAAMqQ,WAA6BL,GACjC,aAAIJ,GACF,MAAO,GAAGlpC,KAAKmpC,WAAW7P,QAAQ,MACnC,CAED,OAAA0P,GACEjgC,MAAMigC,UACN,MAAMI,EAAQppC,KAAKsoC,YAActoC,KAAKooC,MACtCpoC,KAAKmpC,WAAanpC,KAAKinC,YAAcmC,EACjCppC,KAAKmpC,WAAa,IAAGnpC,KAAKmpC,YAAc/d,KAAKyU,KAAK,EAAI7/B,KAAKmpC,YAChE,ECzLH,MAAMS,GACE,OADFA,GAEI,SAFJA,GAGS,cAHTA,GAIK,UAGX,MAAMC,WAAclvB,GAAIwP,KAAKxN,SAC3B,4BAAW5S,GACT,MAAO,OACR,CAED,IAAA+T,GACE9d,KAAK8pC,gBACL9pC,KAAK+pC,gBACD/pC,KAAKoB,UACPpB,KAAKsf,YAAa,EAClBtf,KAAK6f,eAAgB,IAErB7f,KAAKgqC,UAAY,IAAIC,eAAejqC,KAAKsS,OAAOhP,KAAKtD,OACrDA,KAAKgqC,UAAUr5B,QAAQ3Q,KAAKkF,OAG9BlF,KAAKogB,UAAU4lB,GAAcI,YAAapmC,KAAKsnC,eAAehkC,KAAKtD,OACnEA,KAAKogB,UAAU4lB,GAAcC,MAAOjmC,KAAKkqC,SAAS5mC,KAAKtD,OACvDA,KAAKogB,UAAU4lB,GAAcE,OAAQlmC,KAAKmqC,UAAU7mC,KAAKtD,OACrDA,KAAKygB,aAAa0kB,GAAcW,eAAe9lC,KAAKwnC,UAAUxnC,KAAKygB,aAAa0kB,GAAcW,eAC9F9lC,KAAKygB,aAAa0kB,GAAcY,eAAe/lC,KAAKynC,UAAUznC,KAAKygB,aAAa0kB,GAAcY,eAClG/lC,KAAK4jB,QACN,CAED,aAAAkmB,GACE,QAAQ,GACN,KAAK9pC,KAAKyC,QAAQ0iC,GAAcK,mBAIhC,KAAKxlC,KAAKyC,QAAQ0iC,GAAcI,cAC9BvlC,KAAKK,KAAOupC,GACZ,MAEF,KAAK5pC,KAAKyC,QAAQ0iC,GAAcG,YAC9BtlC,KAAKK,KAAOupC,GACZ,MAEF,QACE5pC,KAAKK,KAAOupC,GAEjB,CAED,QAAIvpC,CAAMO,GACR,GAAIZ,KAAKkiB,QAAUthB,EAAO,OAC1BZ,KAAKkiB,MAAQthB,EAEb,MAAMwpC,EAAWpqC,KAAKqqC,OAEtB,OAAQrqC,KAAKkiB,OACX,KAAK0nB,GACH5pC,KAAKqqC,OAAS,IAAIV,GAClB,MAEF,KAAKC,GACH5pC,KAAKqqC,OAAS,IAAIf,GAClB,MAEF,KAAKM,GACH5pC,KAAKqqC,OAAS,IAAIpB,GAClB,MAEF,QACEjpC,KAAKqqC,OAAS,IAAIzD,GAGtB5mC,KAAKqqC,OAAOnjC,UAAUkjC,EACvB,CAED,QAAI/pC,GACF,OAAOL,KAAKkiB,KACb,CAED,aAAA6nB,GACE/pC,KAAKqqC,OAAO1C,KAAO3nC,KAAKyC,QAAQ0iC,GAAcE,SAC/C,CAED,MAAA/yB,GACEtS,KAAKsqC,iBACLtqC,KAAK4jB,QACN,CAED,cAAA0mB,GACEtqC,KAAKqqC,OAAOlyB,MAAQnY,KAAKwhB,UAAUrJ,KACpC,CAED,QAAA+xB,CAAUtpC,GAER,OADAZ,KAAKqqC,OAAOzpC,MAAQA,EACZZ,KAAKkiB,OACX,KAAK0nB,GACL,KAAKA,GACH5pC,KAAKqN,QAAQ24B,GAAcC,MAAOrlC,GAGtCZ,KAAK4jB,QACN,CAED,SAAAumB,CAAWvpC,GACTZ,KAAKqqC,OAAOd,OAAS3oC,EACrBZ,KAAKqN,QAAQ24B,GAAcE,OAAQtlC,GACnCZ,KAAK4jB,QACN,CAED,cAAA0jB,CAAgBa,GACdnoC,KAAKqqC,OAAO/C,eAAea,GAC3BnoC,KAAK4jB,SACL5jB,KAAKqN,QAAQ24B,GAAcI,YAAa+B,EACzC,CAED,SAAAX,CAAW5mC,GACTZ,KAAKqqC,OAAO7C,UAAU5mC,GACtBZ,KAAK4jB,QACN,CAED,SAAA6jB,CAAW7mC,GACTZ,KAAKqqC,OAAO5C,UAAU7mC,GACtBZ,KAAK4jB,QACN,CAED,MAAAhU,CAAQoY,GACN,QAAQ,GACN,KAAKA,EAAgB/B,SAAS,SAC5BjmB,KAAK8pC,gBACL9pC,KAAK+pC,gBACL,MAEF,KAAK/hB,EAAgB/B,SAASkf,GAAcW,cAC5C,KAAK9d,EAAgB/B,SAASkf,GAAcY,cAC1C/lC,KAAKqqC,OAAO7C,UAAUxnC,KAAKygB,aAAa0kB,GAAcW,eACtD9lC,KAAKqqC,OAAO5C,UAAUznC,KAAKygB,aAAa0kB,GAAcY,eACtD/lC,KAAK4jB,SAGV,CAED,MAAAA,GACE5jB,KAAKqqC,OAAOzmB,SACZ5jB,KAAKqN,QAAQ24B,GAAcG,OAAQnmC,KAAKqqC,OAAO3B,QAC/C1oC,KAAKqN,QAAQ24B,GAAcK,IAAKrmC,KAAKqqC,OAAO7B,SAC5CxoC,KAAKqN,QAAQ24B,GAAcM,IAAKtmC,KAAKqqC,OAAO5B,SAC5C,MAAMK,EAAW9oC,KAAKqqC,OAAOvB,SACzBA,EAAShnB,KACX9hB,KAAKsT,MAAMM,YAAY,kBAAmBk1B,EAAShnB,MAEnD9hB,KAAKsT,MAAMS,eAAe,mBAExB+0B,EAASxW,OACXtyB,KAAKsT,MAAMM,YAAY,mBAAoBk1B,EAASxW,OAChDtyB,KAAKoB,UACH0nC,EAAShnB,OACX9hB,KAAKsT,MAAMM,YAAY,wBAAyBk1B,EAAShnB,MACzD9hB,KAAKsT,MAAMM,YAAY,kBAAmB,GAAGgmB,WAAWkP,EAASxW,OAASsH,WAAWkP,EAAShnB,WAAW9hB,KAAKqqC,OAAO1C,KAAO,MAAQ,aAIxI3nC,KAAKsT,MAAMS,eAAe,oBACtB/T,KAAKoB,WACPpB,KAAKsT,MAAMS,eAAe,mBAC1B/T,KAAKsT,MAAMS,eAAe,2BAG1B/T,KAAKqqC,OAAOnB,UAAWlpC,KAAKsT,MAAMM,YAAY,eAAgB5T,KAAKqqC,OAAOnB,WACzElpC,KAAKsT,MAAMS,eAAe,eAChC,CAED,SAAAwB,CAAWL,GACT,GAAIlV,KAAKkiB,QAAU0nB,IAAqB5pC,KAAKkiB,QAAU0nB,GAAwB,OAC/E,MAAMz0B,EAAID,EAAMC,EAAInV,KAAKwhB,UAAUM,KACnC9hB,KAAKqN,QAAQ24B,GAAcW,gBAAiB/M,WAAW55B,KAAKqqC,OAAOvB,SAASxW,OAASsH,WAAW55B,KAAKqqC,OAAOvB,SAAShnB,OAAS,EAAI8X,WAAW55B,KAAKqqC,OAAOvB,SAAShnB,MAAQ3M,EAAI,EAAI,EACnL,CAED,OAAAnK,GACEhL,KAAKgqC,UAAUj5B,YAChB,ECzLH,MAAMw5B,GACJ,WAAAxqC,CAAamF,GACXlF,KAAK6mC,KAAOr/B,MAAMtC,EAAKimB,KAAO,EAAIjmB,EAAKimB,IACvCnrB,KAAK8mC,KAAOt/B,MAAMtC,EAAKgnB,KAAO,IAAMhnB,EAAKgnB,IACzClsB,KAAKooC,MAAQ5gC,MAAMtC,EAAKmjC,MAAQ,EAAInjC,EAAKmjC,KACzCroC,KAAKsoC,YAActoC,KAAK8mC,KAAO9mC,KAAK6mC,IACrC,CAED,OAAI1b,GACF,OAAOnrB,KAAK6mC,IACb,CAED,OAAI3a,GACF,OAAOlsB,KAAK8mC,IACb,CAED,QAAIuB,GACF,OAAOroC,KAAKooC,KACb,CAED,cAAIG,GACF,OAAOvoC,KAAKsoC,WACb,CAED,IAAAnsB,CAAMgP,EAAKe,EAAKmc,GACd,OAAOroC,KAAK6mC,OAAS1b,GAAOnrB,KAAK8mC,OAAS5a,GAAOlsB,KAAKooC,QAAUC,CACjE,ECtBH,MAAMmC,WAAmB7vB,GAAIwP,KAAKxN,SAChC,4BAAW5S,GACT,MAAO,YACR,CAED,IAAA+T,GACE9d,KAAKyqC,QACLzqC,KAAK+mC,OAASnN,WAAW55B,KAAKkF,KAAKub,aAAa,UAC5CzgB,KAAKoB,UAAUpB,KAAKsgB,WAAW0lB,GAAcW,eAAgB3mC,KAAK0qC,eAAepnC,KAAKtD,OAC1FA,KAAKqf,aAAc,EACnBrf,KAAK4zB,QACN,CAED,KAAA6W,GACEzqC,KAAK2qC,WAAa,EAClB3qC,KAAKiS,QAAQ,KACNjS,KAAK0gB,aAAa,QAAQ1gB,KAAKkP,aAAa,MAAO,GACxDlP,KAAKkN,OAAO84B,GAAcI,YAAa,IAAImE,GAAiBvqC,KAAKkF,OACjElF,KAAKkN,OAAO84B,GAAcU,SAAU1mC,KAAKkF,KAAK0lC,YAGhD5qC,KAAKsgB,WAAW0lB,GAAcE,OAAQlmC,KAAKkqC,SAAS5mC,KAAKtD,MAC1D,CAED,SAAI8L,GACF,MAAMC,EAAQ/L,KAERqnB,EAAiB,CACrB,SAAIzmB,GACF,OAAOmL,EAAMnL,KACd,EACD,SAAIA,CAAOA,GACTmL,EAAMnL,MAAQA,CACf,GAGH,OAAO+Z,GAAIZ,UAAU5O,SAASgO,eAAepQ,MAAM+C,MAAOub,EAC3D,CAED,cAAAqjB,CAAgBG,GACd,MAAM9sB,EAAY8sB,IAAc7qC,KAAK2qC,WACjC3qC,KAAK8qC,oBAAsB/sB,IAC/B/d,KAAK8qC,kBAAoB/sB,EACrBA,EAAW/d,KAAKsT,MAAMS,eAAe,kBACpC/T,KAAKsT,MAAMM,YAAY,iBAAkB,QAC/C,CAED,SAAIhT,GACF,OAAOg5B,WAAW55B,KAAKkF,KAAKtE,MAC7B,CAED,SAAIA,CAAOA,GACT,MAAMmqC,EAAcnR,WAAWh5B,GAC3BmqC,IAAgB/qC,KAAK+mC,SACzB/mC,KAAK+mC,OAASgE,EACd/qC,KAAKkF,KAAKtE,MAAQmqC,EAClB/qC,KAAKiF,SAAS,UACdjF,KAAK4zB,SACN,CAED,QAAAsW,CAAUtpC,GACJg5B,WAAW55B,KAAKkF,KAAKtE,OAASA,IAChCZ,KAAKY,MAAQA,EAEhB,CAED,MAAAgzB,GACE5zB,KAAKkN,OAAO84B,GAAcC,MAAOjmC,KAAK+mC,OACvC,CAED,MAAAh1B,GACE,MAAMg5B,EAAcnR,WAAW55B,KAAKkF,KAAKtE,OACrCmqC,IAAgB/qC,KAAK+mC,SAAQ/mC,KAAKY,MAAQmqC,EAC/C,CAED,MAAAn7B,CAAQoY,GACFA,EAAgB/B,SAAS,aAAajmB,KAAKkN,OAAO84B,GAAcU,SAAU1mC,KAAKkF,KAAK0lC,WACpF5iB,EAAgB/B,SAAS,QAAU+B,EAAgB/B,SAAS,QAAU+B,EAAgB/B,SAAS,WACjGjmB,KAAKkN,OAAO84B,GAAcI,YAAa,IAAImE,GAAiBvqC,KAAKkF,OACjElF,KAAK4zB,SAER,CAED,OAAA5oB,GACMhL,KAAKgrC,eAAehrC,KAAKgV,SAAShV,KAAKgrC,cAAehrC,KAAKirC,UAChE,ECtFH,MAAMC,WAAoBvwB,GAAIwP,KAAKxN,SACjC,4BAAW5S,GACT,MAAO,aACR,CAED,IAAA+T,GACE9d,KAAKsgB,WAAW0lB,GAAcG,OAAQnmC,KAAK4zB,OAAOtwB,KAAKtD,MACxD,CAED,MAAA4zB,CAAQ/mB,GACN7M,KAAKkF,KAAKimC,UAAYt+B,EAAK8f,KAC3B3sB,KAAKkF,KAAKoO,MAAM+e,UAAYxlB,EAAKwlB,SAClC,ECXH,MAAM+Y,WAAmBzwB,GAAIwP,KAAKxN,SAChC,4BAAW5S,GACT,MAAO,YACR,CAED,IAAA+T,GACE,QAAQ,GACN,KAAK9d,KAAKyC,QAAQ0iC,GAAcS,WAC9B5lC,KAAKsgB,WAAW0lB,GAAcK,IAAKrmC,KAAK4zB,OAAOtwB,KAAKtD,OACpD,MAEF,KAAKA,KAAKyC,QAAQ0iC,GAAcU,WAC9B7lC,KAAKsgB,WAAW0lB,GAAcM,IAAKtmC,KAAK4zB,OAAOtwB,KAAKtD,OAGzD,CAED,MAAA4zB,CAAQjH,GACN3sB,KAAKkF,KAAKimC,UAAYxe,CACvB,ECdHhS,GAAI0wB,MAAQ,CACVxB,MAAOA,GACPW,WAAYA,GACZc,YCTF,cAA0Bd,GACxB,4BAAWzgC,GACT,MAAO,aACR,CAED,KAAA0gC,GACEzqC,KAAK2qC,WAAa,EAClB3qC,KAAKsgB,WAAW0lB,GAAcI,YAAapmC,KAAKsnC,eAAehkC,KAAKtD,OACpEA,KAAKsgB,WAAW0lB,GAAcC,MAAOjmC,KAAKkqC,SAAS5mC,KAAKtD,MACzD,CAED,QAAAkqC,CAAUtpC,GACJg5B,WAAW55B,KAAKkF,KAAKtE,OAASA,IAChCZ,KAAKY,MAAQA,EAEhB,CAED,MAAAgzB,GACE5zB,KAAKkN,OAAO84B,GAAcE,OAAQtM,WAAW55B,KAAKkF,KAAKtE,OACxD,CAED,cAAA0mC,CAAgBa,GACdnoC,KAAKkF,KAAKimB,IAAMgd,EAAYhd,IAC5BnrB,KAAKkF,KAAKgnB,IAAMic,EAAYjc,IAC5BlsB,KAAKkF,KAAKmjC,KAAOF,EAAYE,KAC7BroC,KAAK4zB,QACN,CAED,MAAAhkB,CAAQoY,GAAmB,GDlB3BkjB,YAAaA,GACbE,WAAYA,GACZpF,cAAeA,GACfb,cAAeA,IEdjBxqB,GAAIZ,UAAUzO,SAASqP,GAAI0wB,MAAMlG,cAAcC,MAAOzqB,GAAI0wB,MAAMxB,OAChElvB,GAAIZ,UAAUzO,SAASqP,GAAI0wB,MAAMlG,cAAcM,YAAa9qB,GAAI0wB,MAAMb,YACtE7vB,GAAIZ,UAAUzO,SAASqP,GAAI0wB,MAAMlG,cAAcO,aAAc/qB,GAAI0wB,MAAMC,aACvE3wB,GAAIZ,UAAUzO,SAASqP,GAAI0wB,MAAMlG,cAAcQ,aAAchrB,GAAI0wB,MAAMH,aACvEvwB,GAAIZ,UAAUzO,SAASqP,GAAI0wB,MAAMlG,cAAcS,UAAWjrB,GAAI0wB,MAAMD,YACpEzwB,GAAIZ,UAAUzO,SAASqP,GAAI0wB,MAAMlG,cAAcU,UAAWlrB,GAAI0wB,MAAMD,YCL7D,MAAMvvB,GAAiB,CAC5B0vB,OAAQ5wB,GAAIZ,UAAUnU,GAAGE,SAAS,UAClCgW,WAAYnB,GAAIZ,UAAUnU,GAAGE,SAAS,mBACtC0lC,YAAa7wB,GAAIZ,UAAUnU,GAAGE,SAAS,uBACvC2lC,WAAY9wB,GAAIZ,UAAUnU,GAAGE,SAAS,sBACtC4lC,QAAS,GAAG/wB,GAAIZ,UAAUnU,GAAGE,SAAS,0BAA0B6U,GAAIZ,UAAUnU,GAAGE,SAAS,kBAAkB6U,GAAIZ,UAAUnU,GAAGE,SAAS,0BAA0B6U,GAAIZ,UAAUnU,GAAGE,SAAS,iBAC1L6lC,OAAQ,GAAGhxB,GAAIZ,UAAUnU,GAAGE,SAAS,oBAAoB6U,GAAIZ,UAAUnU,GAAGE,SAAS,aAAa6U,GAAIZ,UAAUnU,GAAGE,SAAS,kBAAkB6U,GAAIZ,UAAUnU,GAAGE,SAAS,YCLxK,MAAM8lC,WAAoBjxB,GAAIwP,KAAKxN,SACjC,4BAAW5S,GACT,MAAO,aACR,CAED,IAAA+T,GACE,MAAMlC,EAAS5b,KAAKsJ,oBAAoBuS,GAAe0vB,QACvDvrC,KAAK6rC,WAAajwB,EAAO9Q,cAAc+Q,GAAe2vB,aACtDxrC,KAAK8rC,UAAYlwB,EAAO9Q,cAAc+Q,GAAe4vB,YACrD,MAAMM,EAAa,UAEbC,EAAYhsC,KAAK6rC,WAAW7e,UAAU1iB,QAAQ,OAAQ,KACtD2hC,EAAWjsC,KAAK8rC,UAAU9e,UAAU1iB,QAAQ,OAAQ,KAE1D,IAAI4hC,EAAkBF,EAAUjf,MAAM,iBAAmB,GAIzDmf,EAAkBA,EAAgBlrC,IAAI2C,GAAWA,EAAQ2G,QAAQ,OAAS,IAAIA,QAAQ,IAAM,KAE5F,MAAM6hC,EAAuB,CAAC,gBAAiB,mBAAoB,mBAEnE,IAAIC,EAAuBJ,EAAU1hC,QAAQ,eAAgB,SAASyhC,MAEtE,IAAK,MAAM3gC,KAAa+gC,EAAsB,CAC5C,MAAME,EAAyBL,EAAUjf,MAAM,IAAIuf,OAAO,GAAGlhC,YAAqB,OAClF,GAAIihC,EACF,IAAK,MAAM1oC,KAAW0oC,EAAwB,CAC5C,MAAME,EAAiB5oC,EAAQ2G,QAAQ,GAAGc,MAAe,IAAId,QAAQ,IAAK,IACtE4hC,EAAgBjmB,SAASsmB,KAC3BH,EAAuBA,EAAqB9hC,QAAQ,GAAGc,MAAcmhC,KAAmB,GAAGnhC,MAAcmhC,EAAiBR,MAE7H,CAEJ,CAED,GAAIK,IAAyBH,EAE7B,OAAQtxB,GAAIhT,MACV,KAAKgT,GAAIlW,MAAMM,QACf,KAAK4V,GAAIlW,MAAMO,MACf,KAAK2V,GAAIlW,MAAMK,IACb9E,KAAK6B,KAAK,2MAEhB8Y,GAAIiB,OAAO4wB,OACL,MAEF,QACExsC,KAAK8rC,UAAU9e,UAAYof,EAEhC,ECnDH,MAAMK,WAAoB9xB,GAAIwP,KAAKxN,SACjC,4BAAW5S,GACT,MAAO,aACR,CAED,IAAA+T,GACE9d,KAAK0sC,YACL1sC,KAAKsf,YAAa,CACnB,CAED,MAAAhN,GACMtS,KAAKuf,aAAa5E,GAAIwP,KAAK/N,YAAYI,IAAKxc,KAAK2sC,kBAChD3sC,KAAK4sC,eACX,CAED,aAAAA,GACE,MAAMjO,EAAQ3+B,KAAK2D,QAAQ6J,YAAY,SAClCmxB,GAIL3+B,KAAK6sC,cACLlO,EAAMj+B,UAAW,EACjBV,KAAKue,YAAY,CAAElP,SAAS,KAL1BrP,KAAKiS,QAAQjS,KAAK4sC,cAActpC,KAAKtD,MAMxC,CAED,eAAA2sC,GACE,MAAMhO,EAAQ3+B,KAAK2D,QAAQ6J,YAAY,SAClCmxB,GAILA,EAAM3a,UACN2a,EAAMj+B,UAAW,EACjBV,KAAK0sC,YACL1sC,KAAKwe,cAAc,CAAEnP,SAAS,KAN5BrP,KAAKiS,QAAQjS,KAAK2sC,gBAAgBrpC,KAAKtD,MAO1C,CAED,SAAA0sC,GACM1sC,KAAK0gB,aAAa,qBAAoB1gB,KAAK8sC,gBAAkB9sC,KAAKygB,aAAa,oBAC/EzgB,KAAK0gB,aAAa,gBAAe1gB,KAAK+sC,WAAa/sC,KAAKygB,aAAa,eACzEzgB,KAAK6T,gBAAgB,mBACrB7T,KAAK6T,gBAAgB,aACtB,CAED,WAAAg5B,GACM7sC,KAAK8sC,iBAAiB9sC,KAAKkP,aAAa,kBAAmBlP,KAAK8sC,iBAChE9sC,KAAK+sC,YAAY/sC,KAAKkP,aAAa,aAAclP,KAAK+sC,WAC3D,CAED,WAAAtuB,CAAaxd,GACX,GAAIA,EAAEuO,OAAO/M,QAAQ,eAAiBxB,EAAEuO,OAAO/M,QAAQ,qBAAuBxB,EAAEuO,OAAO/M,QAAQkY,GAAIwP,KAAKtD,mBAAmBC,iBAAkB,CAC7H9mB,KAAK2D,QAAQ6J,YAAY,SACjCwW,SACP,CACF,ECpDHrJ,GAAIiB,OAAS,CACXgwB,YAAaA,GACba,YAAaA,GACb5wB,eAAgBA,GAChB2wB,IAAK,gFCPP7xB,GAAIZ,UAAUzO,SAASqP,GAAIiB,OAAOC,eAAe2vB,YAAa7wB,GAAIiB,OAAOgwB,aACzEjxB,GAAIZ,UAAUzO,SAASqP,GAAIiB,OAAOC,eAAe8vB,OAAQhxB,GAAIiB,OAAO6wB,aCD7D,MAAMO,GAAkB,CAC7BC,QAAStyB,GAAIZ,UAAUnU,GAAGE,SAAS,WACnC+uB,cAAe,eAAela,GAAIZ,UAAUnU,GAAG,oBAC/CsnC,SAAUvyB,GAAIZ,UAAUnU,GAAGE,SAAS,aCFtC,MAAMqnC,WAAgBxyB,GAAIwP,KAAKxN,SAC7B,4BAAW5S,GACT,MAAO,SACR,CAED,IAAA+T,GAGE,GAFA9d,KAAKo9B,OAASp9B,KAAKqJ,iBAAiB2jC,GAAgBnY,eAEhDla,GAAImZ,OAAQ,CACd9zB,KAAK2zB,SAAW3zB,KAAK4zB,OAAOtwB,KAAKtD,MACjC,IAAK,MAAMs9B,KAASt9B,KAAKo9B,OAAQE,EAAM94B,iBAAiB,SAAUxE,KAAK2zB,UACvE3zB,KAAKsgB,WAAW3F,GAAImZ,OAAOP,eAAeH,OAAQpzB,KAAKqC,MAAMiB,KAAKtD,OAClEA,KAAKkN,OAAOyN,GAAImZ,OAAOP,eAAeC,IAC5C,MACMxzB,KAAK8K,cAAckiC,GAAgBE,UAAUh+B,aAAa,WAAY,GAEzE,CAED,UAAI4kB,GACF,OAAO9zB,KAAKk0B,OACb,CAED,UAAIJ,CAAQlzB,GACV,GAAIZ,KAAKk0B,UAAYtzB,GAAU+Z,GAAImZ,OACnC,OAAQlzB,GACN,KAAK+Z,GAAImZ,OAAOhB,YAAYC,OAC5B,KAAKpY,GAAImZ,OAAOhB,YAAYE,MAC5B,KAAKrY,GAAImZ,OAAOhB,YAAYG,KAC1BjzB,KAAKk0B,QAAUtzB,EACf,IAAK,MAAM08B,KAASt9B,KAAKo9B,OACvBE,EAAMlH,QAAUkH,EAAM18B,QAAUA,EAElCZ,KAAKkN,OAAOyN,GAAImZ,OAAOP,eAAeH,OAAQxyB,GAGnD,CAED,MAAAgzB,GACE,IAAK,MAAM0J,KAASt9B,KAAKo9B,OACvB,GAAIE,EAAMlH,QAER,YADAp2B,KAAK8zB,OAASwJ,EAAM18B,MAIzB,CAED,KAAAyB,CAAOzB,GACLZ,KAAK8zB,OAASlzB,CACf,CAED,OAAAoK,GACE,IAAK,MAAMsyB,KAASt9B,KAAKo9B,OAAQE,EAAMroB,oBAAoB,SAAUjV,KAAK2zB,SAC3E,ECnDHhZ,GAAIoB,QAAU,CACZoxB,QAASA,GACTH,gBAAiBA,ICJnBryB,GAAIZ,UAAUzO,SAASqP,GAAIoB,QAAQixB,gBAAgBC,QAAStyB,GAAIoB,QAAQoxB,SCAjE,MAAMC,GAAgB,CAC3BC,WAAY1yB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,cAC/CwiB,OAAQhO,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,UAC3CmnC,eAAgB3yB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,iBACnDonC,cAAe5yB,GAAIZ,UAAUnU,GAAGO,SAAS,QAAS,iBCHpD,MAAMqnC,WAAc7yB,GAAIwP,KAAKxN,SAC3B,4BAAW5S,GACT,MAAO,OACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUgtB,GAAcE,eAAgBttC,KAAKytC,iBAAiBnqC,KAAKtD,MACzE,CAED,gBAAAytC,CAAkB7sC,GAChBZ,KAAK4T,YAAY,iBAAkBhT,EACpC,ECXH,MAAM8sC,WAAqB/yB,GAAIwP,KAAKxN,SAClC,4BAAW5S,GACT,MAAO,cACR,CAED,IAAA+T,GACE9d,KAAKogB,UAAUgtB,GAAcE,eAAgBttC,KAAKytC,iBAAiBnqC,KAAKtD,MACzE,CAED,gBAAAytC,CAAkB7sC,GAChB2D,sBAAsB,IAAMvE,KAAKkN,OAAOkgC,GAAcE,eAAgB,IACtEttC,KAAK4T,YAAY,iBAAkBhT,EACpC,ECbI,MAAM+sC,GAAgB,CAC3BC,MAAOjzB,GAAIZ,UAAUnU,GAAGE,SAAS,SACjC+nC,cAAe,CAAC,GAAGlzB,GAAIZ,UAAUnU,GAAGE,SAAS,YAAY6U,GAAIZ,UAAUnU,GAAGE,SAAS,qBACnF87B,OAAQjnB,GAAIZ,UAAUnU,GAAGE,SAAS,iBAClC+7B,YAAalnB,GAAIZ,UAAUnU,GAAGE,SAAS,uBACvCg8B,aAAcnnB,GAAIZ,UAAUnU,GAAGE,SAAS,wBACxCgoC,QAAS,CAAC,GAAGnzB,GAAIZ,UAAUnU,GAAGE,SAAS,gBAAgB6U,GAAIZ,UAAUnU,GAAGE,SAAS,8BACjFioC,QAAS,GAAGpzB,GAAIZ,UAAUnU,GAAGE,SAAS,yBACtCkoC,IAAK,GAAGrzB,GAAIZ,UAAUnU,GAAGE,SAAS,oBAClCmoC,IAAK,GAAGtzB,GAAIZ,UAAUnU,GAAGE,SAAS,qBCNpC,MAAMooC,WAAqBvzB,GAAIwP,KAAKxN,SAClC,4BAAW5S,GACT,MAAO,cACR,CAED,IAAA+T,GACE9d,KAAKmP,OAAO,SAAUnP,KAAKyhB,OAAOne,KAAKtD,OACvCA,KAAKwY,QAAUxY,KAAK8K,cAAc,SAClC9K,KAAKmuC,kBAAoB,EACzBnuC,KAAKsf,YAAa,CACnB,CAED,eAAIukB,GACF,OAAO7jC,KAAK8jC,YACb,CAED,eAAID,CAAajjC,GACXZ,KAAK8jC,eAAiBljC,IAC1BZ,KAAK8jC,aAAeljC,EAEhBA,GACFZ,KAAKuX,SAASo2B,GAAc/L,QAC5B5hC,KAAKyhB,WAELzhB,KAAKwX,YAAYm2B,GAAc/L,QAC/B5hC,KAAKwX,YAAYm2B,GAAc9L,aAC/B7hC,KAAKwX,YAAYm2B,GAAc7L,eAElC,CAGD,MAAArgB,GACE,MAAMsiB,EAAQ/jC,KAAKkF,KAAKm+B,YAlCN,EAmCZnX,EAAMlsB,KAAKwY,QAAQye,YAAcj3B,KAAKkF,KAAK+xB,YAnC/B,EAoCZ+M,EAAQ5Y,KAAKK,IAAIzrB,KAAKkF,KAAKm+B,aAAenX,EAC1C+X,EAAyD,QAAjD5/B,SAASsB,gBAAgB8a,aAAa,OAC9CyjB,EAAcD,EAAQ0J,GAAc7L,aAAe6L,GAAc9L,YACjEsC,EAAcF,EAAQ0J,GAAc9L,YAAc8L,GAAc7L,aAElEiC,EACF/jC,KAAKwX,YAAY0sB,GAEjBlkC,KAAKuX,SAAS2sB,GAGZF,EACFhkC,KAAKwX,YAAY2sB,GAEjBnkC,KAAKuX,SAAS4sB,EAEjB,CAED,MAAA7xB,GACEtS,KAAK6jC,YAAc7jC,KAAKwY,QAAQye,YAAcj3B,KAAKkF,KAAK+xB,WACzD,CAED,OAAAjsB,GACEhL,KAAK6jC,aAAc,CACpB,EC3DH,MAAMuK,WAAqBzzB,GAAIwP,KAAKxN,SAClC,4BAAW5S,GACT,MAAO,cACR,CAED,IAAA+T,GACE9d,KAAKoY,OAAS,EACdpY,KAAKsf,YAAa,CACnB,CAED,MAAAhN,GACE,MAAM8F,EAASpY,KAAKwhB,UAAUpJ,OAC1BpY,KAAKoY,SAAWA,IACpBpY,KAAKoY,OAASA,EACdpY,KAAKkN,OAAOkgC,GAAcE,eAAgB,QAAQl1B,eACnD,EChBH,MAAMi2B,WAAiB1zB,GAAIwP,KAAKxN,SAC9B,4BAAW5S,GACT,MAAO,UACR,CAED,IAAA+T,GACMnD,GAAI0b,WACNr2B,KAAKogB,UAAU2V,GAAiBpN,OAAQ3oB,KAAKsuC,sBAAsBhrC,KAAKtD,OACxEA,KAAKqN,QAAQ0oB,GAAiBlT,UAEjC,CAED,qBAAAyrB,CAAuBppC,GACH,eAAdA,EAAKW,MACoD,SAA3DX,EAAKub,aAAa9F,GAAIZ,UAAUnU,GAAGK,KAAK,iBACxCjG,KAAKuuC,YAA8B,IAAjBrpC,EAAKkxB,QAE1B,CAED,MAAArkB,GACE,MAAMqG,EAASpY,KAAKwhB,UAAUpJ,OAAS,EACnCpY,KAAKsY,UAAYF,IACrBpY,KAAKsY,QAAUF,EACfpY,KAAK4T,YAAY,eAAgB,GAAG5T,KAAKsY,aAC1C,CAED,cAAIi2B,GACF,OAAOvuC,KAAKwuC,WACb,CAED,cAAID,CAAY3tC,GACVZ,KAAKwuC,cAAgB5tC,IACzBZ,KAAKqf,YAAcze,EACnBZ,KAAKwuC,YAAc5tC,EACnBZ,KAAKkP,aAAa,gBAAiBtO,GACpC,EC9BH+Z,GAAI8zB,MAAQ,CACVjB,MAAOA,GACPE,aAAcA,GACdQ,aAAcA,GACdE,aAAcA,GACdT,cAAeA,GACfU,SAAUA,ICZZ1zB,GAAIZ,UAAUzO,SAASqP,GAAI8zB,MAAMd,cAAcC,MAAOjzB,GAAI8zB,MAAMjB,OAChE7yB,GAAIZ,UAAUzO,SAASqP,GAAI8zB,MAAMd,cAAcE,cAAelzB,GAAI8zB,MAAMf,cACxE/yB,GAAIZ,UAAUzO,SAASqP,GAAI8zB,MAAMd,cAAcG,QAASnzB,GAAI8zB,MAAMP,cAClEvzB,GAAIZ,UAAUzO,SAASqP,GAAI8zB,MAAMd,cAAcI,QAASpzB,GAAI8zB,MAAML,cAClEzzB,GAAIZ,UAAUzO,SAASqP,GAAI8zB,MAAMd,cAAcK,IAAKrzB,GAAI8zB,MAAMJ"}