{"version":3,"names":["TRANSITION_END","parseSelector","selector","window","CSS","escape","replace","match","id","triggerTransitionEnd","element","dispatchEvent","Event","isElement","object","jquery","nodeType","getElement","length","document","querySelector","isVisible","getClientRects","elementIsVisible","getComputedStyle","getPropertyValue","closedDetails","closest","summary","parentNode","getjQuery","jQuery","body","hasAttribute","DOMContentLoadedCallbacks","isRTL","documentElement","dir","execute","possibleCallback","args","defaultValue","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","findHandler","events","callable","delegationSelector","Object","values","find","event","normalizeParameters","originalTypeEvent","handler","delegationFunction","isDelegated","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFunction","fn","relatedTarget","delegateTarget","contains","call","this","handlers","previousFunction","domElements","querySelectorAll","target","domElement","hydrateObj","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","keys","slice","keyHandlers","trigger","$","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","evt","cancelable","preventDefault","obj","meta","key","value","defineProperty","configurable","get","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","getSelector","hrefAttribute","split","trim","SelectorEngine","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","Node","ELEMENT_NODE","classList","disabled","isDisabled","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","endCallback","leftCallback","rightCallback","Swipe","super","_element","isSupported","_config","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","dispose","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","Math","abs","direction","add","pointerType","static","navigator","maxTouchPoints","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","DATA_KEY","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","callback","isAnimated","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","setTimeout","executeAfterTransition","getInstance","VERSION","name","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_DRAG_START","EVENT_LOAD_DATA_API","EVENT_CLICK_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_ACTIVE","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","pause","ride","touch","wrap","Carousel","_interval","_activeElement","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","cycle","_slide","nextWhenVisible","hidden","_clearInterval","_updateInterval","setInterval","_maybeEnableCycle","to","index","items","_getItems","activeIndex","_getItemIndex","_getActive","order","defaultInterval","_keydown","_addTouchEventListeners","img","swipeConfig","_directionToOrder","clearTimeout","tagName","indexOf","_setActiveIndicatorElement","activeIndicator","newActiveIndicator","elementInterval","parseInt","duration","activeElement","isNext","nextElement","list","shouldGetNext","isCycleAllowed","listLength","max","min","getNextActiveElement","nextElementIndex","triggerEvent","eventName","_orderToDirection","video","play","isCycling","directionalClassName","orderClassName","offsetHeight","reflow","load","_isAnimated","SELECTOR_ACTIVE","clearInterval","each","data","getOrCreateInstance","undefined","plugin","carousel","slideIndex","carousels","JQUERY_NO_CONFLICT","jQueryInterface","Constructor","noConflict","readyState"],"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/util/config.js","../../js/src/util/swipe.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/carousel.js","../../js/index.umd.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n }\n\n return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0]\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object))\n }\n\n return null\n}\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery\n }\n\n return null\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n defineJQueryPlugin,\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getjQuery,\n getNextActiveElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n parseSelector,\n reflow,\n triggerTransitionEnd,\n toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index.js'\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, { delegateTarget: element })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue\n }\n\n hydrateObj(event, { delegateTarget: target })\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events)\n .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'\n // todo: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n let typeEvent = getTypeEvent(originalTypeEvent)\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent\n }\n\n return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n return fn.call(this, event)\n }\n }\n }\n\n callable = wrapFunction(callable)\n }\n\n const events = getElementEvents(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n return\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = isDelegated ?\n bootstrapDelegationHandler(element, handler, callable) :\n bootstrapHandler(element, callable)\n\n fn.delegationSelector = isDelegated ? handler : null\n fn.callable = callable\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '')\n return customEvents[event] || event\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false)\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getElementEvents(element)\n const storeElementEvent = events[typeEvent] || {}\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n return\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n }\n }\n\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = getTypeEvent(event)\n const inNamespace = event !== typeEvent\n\n let jQueryEvent = null\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n let evt = new Event(event, { bubbles, cancelable: true })\n evt = hydrateObj(evt, args)\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value\n } catch {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value\n }\n })\n }\n }\n\n return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true\n }\n\n if (value === 'false') {\n return false\n }\n\n if (value === Number(value).toString()) {\n return Number(value)\n }\n\n if (value === '' || value === 'null') {\n return null\n }\n\n if (typeof value !== 'string') {\n return value\n }\n\n try {\n return JSON.parse(decodeURIComponent(value))\n } catch {\n return value\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-abra-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-abra-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('abra') && !key.startsWith('abraConfig'))\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^abra/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n }\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-abra-${normalizeDataKey(key)}`))\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-abra-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return parseSelector(selector)\n}\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n let ancestor = element.parentNode.closest(selector)\n\n while (ancestor) {\n parents.push(ancestor)\n ancestor = ancestor.parentNode.closest(selector)\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n },\n\n focusableChildren(element) {\n const focusables = [\n 'a',\n 'button',\n 'input',\n 'textarea',\n 'select',\n 'details',\n '[tabindex]',\n '[contenteditable=\"true\"]'\n ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n },\n\n getSelectorFromElement(element) {\n const selector = getSelector(element)\n\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null\n }\n\n return null\n },\n\n getElementFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.findOne(selector) : null\n },\n\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element)\n\n return selector ? SelectorEngine.find(selector) : []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index.js'\nimport Manipulator from '../dom/manipulator.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n )\n }\n }\n }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Config from './config.js'\nimport EventHandler from '../dom/event-handler.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n}\n\nconst DefaultType = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super()\n this._element = element\n\n if (!element || !Swipe.isSupported()) {\n return\n }\n\n this._config = this._getConfig(config)\n this._deltaX = 0\n this._supportPointerEvents = Boolean(window.PointerEvent)\n this._initEvents()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX\n\n return\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX\n }\n\n this._handleSwipe()\n execute(this._config.endCallback)\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this._deltaX\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX)\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltaX / this._deltaX\n\n this._deltaX = 0\n\n if (!direction) {\n return\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super()\n\n element = getElement(element)\n if (!element) {\n return\n }\n\n this._element = element\n this._config = this._getConfig(config)\n\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated)\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY)\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n }\n\n static get VERSION() {\n return VERSION\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`\n }\n}\n\nexport default BaseComponent\n","/**\r\n * --------------------------------------------------------------------------\r\n * Bootstrap (v5.3.0-alpha1): carousel.js\r\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\r\n * --------------------------------------------------------------------------\r\n * \r\n * Fork for Abra Carousel\r\n */\r\n\r\nimport\r\n {\r\n defineJQueryPlugin,\r\n getNextActiveElement,\r\n isRTL,\r\n isVisible,\r\n reflow,\r\n triggerTransitionEnd\r\n } from './util/index.js'\r\nimport EventHandler from './dom/event-handler.js'\r\nimport Manipulator from './dom/manipulator.js'\r\nimport SelectorEngine from './dom/selector-engine.js'\r\nimport Swipe from './util/swipe.js'\r\nimport BaseComponent from './base-component.js'\r\n\r\n/**\r\n * Constants\r\n */\r\n\r\nconst NAME = 'carousel'\r\nconst DATA_KEY = 'abra.carousel'\r\nconst EVENT_KEY = `.${DATA_KEY}`\r\nconst DATA_API_KEY = '.data-api'\r\n\r\nconst ARROW_LEFT_KEY = 'ArrowLeft'\r\nconst ARROW_RIGHT_KEY = 'ArrowRight'\r\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\r\n\r\nconst ORDER_NEXT = 'next'\r\nconst ORDER_PREV = 'prev'\r\nconst DIRECTION_LEFT = 'left'\r\nconst DIRECTION_RIGHT = 'right'\r\n\r\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\r\nconst EVENT_SLID = `slid${EVENT_KEY}`\r\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\r\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\r\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\r\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\r\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\r\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\r\n\r\nconst CLASS_NAME_CAROUSEL = 'carousel'\r\nconst CLASS_NAME_ACTIVE = 'active'\r\nconst CLASS_NAME_SLIDE = 'slide'\r\nconst CLASS_NAME_END = 'carousel-item-end'\r\nconst CLASS_NAME_START = 'carousel-item-start'\r\nconst CLASS_NAME_NEXT = 'carousel-item-next'\r\nconst CLASS_NAME_PREV = 'carousel-item-prev'\r\n\r\nconst SELECTOR_ACTIVE = '.active'\r\nconst SELECTOR_ITEM = '.carousel-item'\r\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\r\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\r\nconst SELECTOR_INDICATORS = '.carousel-indicators'\r\nconst SELECTOR_DATA_SLIDE = '[data-abra-slide], [data-abra-slide-to]'\r\nconst SELECTOR_DATA_RIDE = '[data-abra-ride=\"carousel\"]'\r\n\r\nconst KEY_TO_DIRECTION =\r\n{\r\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\r\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT\r\n}\r\n\r\nconst Default =\r\n{\r\n interval: 5000,\r\n keyboard: true,\r\n pause: 'hover',\r\n ride: false,\r\n touch: true,\r\n wrap: true\r\n}\r\n\r\nconst DefaultType =\r\n{\r\n interval: '(number|boolean)', // TODO:v6 remove boolean support\r\n keyboard: 'boolean',\r\n pause: '(string|boolean)',\r\n ride: '(boolean|string)',\r\n touch: 'boolean',\r\n wrap: 'boolean'\r\n}\r\n\r\n/**\r\n * Class definition\r\n */\r\nclass Carousel extends BaseComponent\r\n{\r\n constructor(element, config)\r\n {\r\n super(element, config)\r\n\r\n this._interval = null\r\n this._activeElement = null\r\n this._isSliding = false\r\n this.touchTimeout = null\r\n this._swipeHelper = null\r\n\r\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\r\n this._addEventListeners()\r\n\r\n if (this._config.ride === CLASS_NAME_CAROUSEL)\r\n this.cycle()\r\n }\r\n\r\n // Getters\r\n static get Default()\r\n {\r\n return Default\r\n }\r\n\r\n static get DefaultType()\r\n {\r\n return DefaultType\r\n }\r\n\r\n static get NAME()\r\n {\r\n return NAME\r\n }\r\n\r\n // Public\r\n next()\r\n {\r\n this._slide(ORDER_NEXT)\r\n }\r\n\r\n nextWhenVisible()\r\n {\r\n // FIXME TODO use `document.visibilityState`\r\n // Don't call next when the page isn't visible\r\n // or the carousel or its parent isn't visible\r\n if (!document.hidden && isVisible(this._element))\r\n this.next()\r\n }\r\n\r\n prev()\r\n {\r\n this._slide(ORDER_PREV)\r\n }\r\n\r\n pause()\r\n {\r\n if (this._isSliding)\r\n triggerTransitionEnd(this._element)\r\n\r\n this._clearInterval()\r\n }\r\n\r\n cycle()\r\n {\r\n this._clearInterval()\r\n this._updateInterval()\r\n\r\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\r\n }\r\n\r\n _maybeEnableCycle()\r\n {\r\n if (!this._config.ride)\r\n return\r\n\r\n if (this._isSliding)\r\n {\r\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\r\n\r\n return\r\n }\r\n\r\n this.cycle()\r\n }\r\n\r\n to(index)\r\n {\r\n const items = this._getItems()\r\n\r\n if (index > items.length - 1 || index < 0)\r\n return\r\n\r\n if (this._isSliding)\r\n {\r\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\r\n\r\n return\r\n }\r\n\r\n const activeIndex = this._getItemIndex(this._getActive())\r\n\r\n if (activeIndex === index)\r\n return\r\n\r\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\r\n\r\n this._slide(order, items[index])\r\n }\r\n\r\n dispose()\r\n {\r\n if (this._swipeHelper)\r\n this._swipeHelper.dispose()\r\n\r\n super.dispose()\r\n }\r\n\r\n // Private\r\n _configAfterMerge(config)\r\n {\r\n config.defaultInterval = config.interval\r\n\r\n return config\r\n }\r\n\r\n _addEventListeners()\r\n {\r\n if (this._config.keyboard)\r\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\r\n\r\n if (this._config.pause === 'hover')\r\n {\r\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\r\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\r\n }\r\n\r\n if (this._config.touch && Swipe.isSupported())\r\n this._addTouchEventListeners()\r\n }\r\n\r\n _addTouchEventListeners()\r\n {\r\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element))\r\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault())\r\n\r\n const endCallBack = () =>\r\n {\r\n if (this._config.pause !== 'hover')\r\n return\r\n\r\n // If it's a touch-enabled device, mouseenter/leave are fired as\r\n // part of the mouse compatibility events on first tap - the carousel\r\n // would stop cycling until user tapped out of it;\r\n // here, we listen for touchend, explicitly pause the carousel\r\n // (as if it's the second time we tap on it, mouseenter compat event\r\n // is NOT fired) and after a timeout (to allow for mouse compatibility\r\n // events to fire) we explicitly restart cycling\r\n\r\n this.pause()\r\n\r\n if (this.touchTimeout)\r\n clearTimeout(this.touchTimeout)\r\n\r\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\r\n }\r\n\r\n const swipeConfig =\r\n {\r\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\r\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\r\n endCallback: endCallBack\r\n }\r\n\r\n this._swipeHelper = new Swipe(this._element, swipeConfig)\r\n }\r\n\r\n _keydown(event)\r\n {\r\n if (/input|textarea/i.test(event.target.tagName))\r\n return\r\n\r\n const direction = KEY_TO_DIRECTION[event.key]\r\n\r\n if (direction)\r\n {\r\n event.preventDefault()\r\n\r\n this._slide(this._directionToOrder(direction))\r\n }\r\n }\r\n\r\n _getItemIndex(element)\r\n {\r\n return this._getItems().indexOf(element)\r\n }\r\n\r\n _setActiveIndicatorElement(index)\r\n {\r\n if (!this._indicatorsElement)\r\n return\r\n\r\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\r\n\r\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\r\n activeIndicator.removeAttribute('aria-current')\r\n\r\n const newActiveIndicator = SelectorEngine.findOne(`[data-abra-slide-to=\"${index}\"]`, this._indicatorsElement)\r\n\r\n if (newActiveIndicator)\r\n {\r\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\r\n newActiveIndicator.setAttribute('aria-current', 'true')\r\n }\r\n }\r\n\r\n _updateInterval()\r\n {\r\n const element = this._activeElement || this._getActive()\r\n\r\n if (!element)\r\n return\r\n\r\n var elementInterval = Number.parseInt(element.getAttribute('data-abra-interval'), 10);\r\n\r\n if(element.classList.contains(\"carousel-item-video\"))\r\n elementInterval = Number.parseInt(element.querySelector(\":scope video\").duration) * 1000;\r\n\r\n this._config.interval = elementInterval || this._config.defaultInterval\r\n }\r\n\r\n _slide(order, element = null)\r\n {\r\n if (this._isSliding)\r\n return\r\n\r\n const activeElement = this._getActive()\r\n const isNext = order === ORDER_NEXT\r\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\r\n\r\n if (nextElement === activeElement)\r\n return\r\n\r\n const nextElementIndex = this._getItemIndex(nextElement)\r\n\r\n const triggerEvent = eventName =>\r\n {\r\n return EventHandler.trigger(this._element, eventName,\r\n {\r\n relatedTarget: nextElement,\r\n direction: this._orderToDirection(order),\r\n from: this._getItemIndex(activeElement),\r\n to: nextElementIndex\r\n })\r\n }\r\n\r\n if(nextElement.classList.contains(\"carousel-item-video\"))\r\n {\r\n var video = nextElement.querySelector(\":scope video\");\r\n\r\n if(video)\r\n {\r\n //video.currentTime = 0.05;\r\n video.play();\r\n }\r\n }\r\n\r\n const slideEvent = triggerEvent(EVENT_SLIDE)\r\n\r\n if (slideEvent.defaultPrevented)\r\n return\r\n\r\n if (!activeElement || !nextElement)\r\n {\r\n // Some weirdness is happening, so we bail\r\n // todo: change tests that use empty divs to avoid this check\r\n return\r\n }\r\n\r\n const isCycling = Boolean(this._interval)\r\n\r\n this.pause()\r\n\r\n this._isSliding = true\r\n\r\n this._setActiveIndicatorElement(nextElementIndex)\r\n this._activeElement = nextElement\r\n\r\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\r\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\r\n\r\n nextElement.classList.add(orderClassName)\r\n\r\n reflow(nextElement)\r\n\r\n activeElement.classList.add(directionalClassName)\r\n nextElement.classList.add(directionalClassName)\r\n\r\n const completeCallBack = () =>\r\n {\r\n nextElement.classList.remove(directionalClassName, orderClassName)\r\n nextElement.classList.add(CLASS_NAME_ACTIVE)\r\n\r\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\r\n\r\n if(activeElement.classList.contains(\"carousel-item-video\"))\r\n {\r\n var video = activeElement.querySelector(\":scope video\");\r\n\r\n if(video)\r\n {\r\n video.pause();\r\n \r\n video.load(); // preload for next time\r\n }\r\n }\r\n\r\n this._isSliding = false\r\n\r\n triggerEvent(EVENT_SLID)\r\n }\r\n\r\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\r\n\r\n if (isCycling)\r\n this.cycle()\r\n }\r\n\r\n _isAnimated()\r\n {\r\n return this._element.classList.contains(CLASS_NAME_SLIDE)\r\n }\r\n\r\n _getActive()\r\n {\r\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\r\n }\r\n\r\n _getItems()\r\n {\r\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\r\n }\r\n\r\n _clearInterval()\r\n {\r\n if (this._interval)\r\n {\r\n clearInterval(this._interval)\r\n\r\n this._interval = null\r\n }\r\n }\r\n\r\n _directionToOrder(direction)\r\n {\r\n if (isRTL())\r\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\r\n\r\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\r\n }\r\n\r\n _orderToDirection(order)\r\n {\r\n if (isRTL())\r\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\r\n\r\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\r\n }\r\n\r\n // Static\r\n static jQueryInterface(config)\r\n {\r\n return this.each(function ()\r\n {\r\n const data = Carousel.getOrCreateInstance(this, config)\r\n\r\n if (typeof config === 'number')\r\n {\r\n data.to(config)\r\n\r\n return\r\n }\r\n\r\n if (typeof config === 'string')\r\n {\r\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor')\r\n throw new TypeError(`No method named \"${config}\"`)\r\n\r\n data[config]()\r\n }\r\n })\r\n }\r\n}\r\n\r\n/**\r\n * Data API implementation\r\n */\r\n\r\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event)\r\n{\r\n const target = SelectorEngine.getElementFromSelector(this)\r\n\r\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL))\r\n return\r\n\r\n event.preventDefault()\r\n\r\n const carousel = Carousel.getOrCreateInstance(target)\r\n const slideIndex = this.getAttribute('data-abra-slide-to')\r\n\r\n if (slideIndex)\r\n {\r\n carousel.to(slideIndex)\r\n carousel._maybeEnableCycle()\r\n\r\n return\r\n }\r\n\r\n if (Manipulator.getDataAttribute(this, 'slide') === 'next')\r\n {\r\n carousel.next()\r\n carousel._maybeEnableCycle()\r\n\r\n return\r\n }\r\n\r\n carousel.prev()\r\n carousel._maybeEnableCycle()\r\n})\r\n\r\nEventHandler.on(window, EVENT_LOAD_DATA_API, () =>\r\n{\r\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\r\n\r\n for (const carousel of carousels)\r\n Carousel.getOrCreateInstance(carousel)\r\n})\r\n\r\n/**\r\n * jQuery\r\n */\r\n\r\ndefineJQueryPlugin(Carousel)\r\n\r\nexport default Carousel","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.3.0-alpha1): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Carousel from './src/carousel.js'\n\nexport default\n{\n Carousel\n}\n"],"mappings":";;;;;;0OAQA,MACMA,EAAiB,gBAOjBC,EAAgBC,IAChBA,GAAYC,OAAOC,KAAOD,OAAOC,IAAIC,SAEvCH,EAAWA,EAASI,QAAQ,iBAAiB,CAACC,EAAOC,IAAQ,IAAGJ,IAAIC,OAAOG,QAGtEN,GA+CHO,EAAuBC,IAC3BA,EAAQC,cAAc,IAAIC,MAAMZ,GAAgB,EAG5Ca,EAAYC,MACXA,GAA4B,iBAAXA,UAIO,IAAlBA,EAAOC,SAChBD,EAASA,EAAO,SAGgB,IAApBA,EAAOE,UAGjBC,EAAaH,GAEbD,EAAUC,GACLA,EAAOC,OAASD,EAAO,GAAKA,EAGf,iBAAXA,GAAuBA,EAAOI,OAAS,EACzCC,SAASC,cAAcnB,EAAca,IAGvC,KAGHO,EAAYX,IAChB,IAAKG,EAAUH,IAAgD,IAApCA,EAAQY,iBAAiBJ,OAClD,OAAO,EAGT,MAAMK,EAAgF,YAA7DC,iBAAiBd,GAASe,iBAAiB,cAE9DC,EAAgBhB,EAAQiB,QAAQ,uBAEtC,IAAKD,EACH,OAAOH,EAGT,GAAIG,IAAkBhB,EAAS,CAC7B,MAAMkB,EAAUlB,EAAQiB,QAAQ,WAChC,GAAIC,GAAWA,EAAQC,aAAeH,EACpC,OAAO,EAGT,GAAgB,OAAZE,EACF,OAAO,CAEX,CAEA,OAAOL,CAAgB,EAwDnBO,EAAY,IACZ3B,OAAO4B,SAAWZ,SAASa,KAAKC,aAAa,qBACxC9B,OAAO4B,OAGT,KAGHG,EAA4B,GAmB5BC,EAAQ,IAAuC,QAAjChB,SAASiB,gBAAgBC,IAmBvCC,EAAU,CAACC,EAAkBC,EAAO,GAAIC,EAAeF,IACxB,mBAArBA,EAAkCA,KAAoBC,GAAQC,ECpNxEC,EAAiB,qBACjBC,EAAiB,OACjBC,EAAgB,SAChBC,EAAgB,GACtB,IAAIC,EAAW,EACf,MAAMC,EAAe,CACnBC,WAAY,YACZC,WAAY,YAGRC,EAAe,IAAIC,IAAI,CAC3B,QACA,WACA,UACA,YACA,cACA,aACA,iBACA,YACA,WACA,YACA,cACA,YACA,UACA,WACA,QACA,oBACA,aACA,YACA,WACA,cACA,cACA,cACA,YACA,eACA,gBACA,eACA,gBACA,aACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,SACA,eACA,SACA,OACA,mBACA,mBACA,QACA,QACA,WAOF,SAASC,EAAa1C,EAAS2C,GAC7B,OAAQA,GAAQ,GAAEA,MAAQP,OAAiBpC,EAAQoC,UAAYA,GACjE,CAEA,SAASQ,EAAiB5C,GACxB,MAAM2C,EAAMD,EAAa1C,GAKzB,OAHAA,EAAQoC,SAAWO,EACnBR,EAAcQ,GAAOR,EAAcQ,IAAQ,GAEpCR,EAAcQ,EACvB,CAoCA,SAASE,EAAYC,EAAQC,EAAUC,EAAqB,MAC1D,OAAOC,OAAOC,OAAOJ,GAClBK,MAAKC,GAASA,EAAML,WAAaA,GAAYK,EAAMJ,qBAAuBA,GAC/E,CAEA,SAASK,EAAoBC,EAAmBC,EAASC,GACvD,MAAMC,EAAiC,iBAAZF,EAErBR,EAAWU,EAAcD,EAAsBD,GAAWC,EAChE,IAAIE,EAAYC,EAAaL,GAM7B,OAJKd,EAAaoB,IAAIF,KACpBA,EAAYJ,GAGP,CAACG,EAAaV,EAAUW,EACjC,CAEA,SAASG,EAAW7D,EAASsD,EAAmBC,EAASC,EAAoBM,GAC3E,GAAiC,iBAAtBR,IAAmCtD,EAC5C,OAGF,IAAKyD,EAAaV,EAAUW,GAAaL,EAAoBC,EAAmBC,EAASC,GAIzF,GAAIF,KAAqBjB,EAAc,CACrC,MAAM0B,EAAeC,GACZ,SAAUZ,GACf,IAAKA,EAAMa,eAAkBb,EAAMa,gBAAkBb,EAAMc,iBAAmBd,EAAMc,eAAeC,SAASf,EAAMa,eAChH,OAAOD,EAAGI,KAAKC,KAAMjB,E,EAK3BL,EAAWgB,EAAahB,EAC1B,CAEA,MAAMD,EAASF,EAAiB5C,GAC1BsE,EAAWxB,EAAOY,KAAeZ,EAAOY,GAAa,IACrDa,EAAmB1B,EAAYyB,EAAUvB,EAAUU,EAAcF,EAAU,MAEjF,GAAIgB,EAGF,YAFAA,EAAiBT,OAASS,EAAiBT,QAAUA,GAKvD,MAAMnB,EAAMD,EAAaK,EAAUO,EAAkB1D,QAAQoC,EAAgB,KACvEgC,EAAKP,EAxEb,SAAoCzD,EAASR,EAAUwE,GACrD,OAAO,SAAST,EAAQH,GACtB,MAAMoB,EAAcxE,EAAQyE,iBAAiBjF,GAE7C,IAAK,IAAIkF,OAAEA,GAAWtB,EAAOsB,GAAUA,IAAWL,KAAMK,EAASA,EAAOvD,WACtE,IAAK,MAAMwD,KAAcH,EACvB,GAAIG,IAAeD,EAUnB,OANAE,EAAWxB,EAAO,CAAEc,eAAgBQ,IAEhCnB,EAAQO,QACVe,EAAaC,IAAI9E,EAASoD,EAAM2B,KAAMvF,EAAUwE,GAG3CA,EAAGgB,MAAMN,EAAQ,CAACtB,G,CAIjC,CAqDI6B,CAA2BjF,EAASuD,EAASR,GArFjD,SAA0B/C,EAASgE,GACjC,OAAO,SAAST,EAAQH,GAOtB,OANAwB,EAAWxB,EAAO,CAAEc,eAAgBlE,IAEhCuD,EAAQO,QACVe,EAAaC,IAAI9E,EAASoD,EAAM2B,KAAMf,GAGjCA,EAAGgB,MAAMhF,EAAS,CAACoD,G,CAE9B,CA4EI8B,CAAiBlF,EAAS+C,GAE5BiB,EAAGhB,mBAAqBS,EAAcF,EAAU,KAChDS,EAAGjB,SAAWA,EACdiB,EAAGF,OAASA,EACZE,EAAG5B,SAAWO,EACd2B,EAAS3B,GAAOqB,EAEhBhE,EAAQmF,iBAAiBzB,EAAWM,EAAIP,EAC1C,CAEA,SAAS2B,EAAcpF,EAAS8C,EAAQY,EAAWH,EAASP,GAC1D,MAAMgB,EAAKnB,EAAYC,EAAOY,GAAYH,EAASP,GAE9CgB,IAILhE,EAAQqF,oBAAoB3B,EAAWM,EAAIsB,QAAQtC,WAC5CF,EAAOY,GAAWM,EAAG5B,UAC9B,CAEA,SAASmD,EAAyBvF,EAAS8C,EAAQY,EAAW8B,GAC5D,MAAMC,EAAoB3C,EAAOY,IAAc,GAE/C,IAAK,MAAOgC,EAAYtC,KAAUH,OAAO0C,QAAQF,GAC3CC,EAAWE,SAASJ,IACtBJ,EAAcpF,EAAS8C,EAAQY,EAAWN,EAAML,SAAUK,EAAMJ,mBAGtE,CAEA,SAASW,EAAaP,GAGpB,OADAA,EAAQA,EAAMxD,QAAQqC,EAAgB,IAC/BI,EAAae,IAAUA,CAChC,CAEA,MAAMyB,EAAe,CACnBgB,GAAG7F,EAASoD,EAAOG,EAASC,GAC1BK,EAAW7D,EAASoD,EAAOG,EAASC,GAAoB,E,EAG1DsC,IAAI9F,EAASoD,EAAOG,EAASC,GAC3BK,EAAW7D,EAASoD,EAAOG,EAASC,GAAoB,E,EAG1DsB,IAAI9E,EAASsD,EAAmBC,EAASC,GACvC,GAAiC,iBAAtBF,IAAmCtD,EAC5C,OAGF,MAAOyD,EAAaV,EAAUW,GAAaL,EAAoBC,EAAmBC,EAASC,GACrFuC,EAAcrC,IAAcJ,EAC5BR,EAASF,EAAiB5C,GAC1ByF,EAAoB3C,EAAOY,IAAc,GACzCsC,EAAc1C,EAAkB2C,WAAW,KAEjD,QAAwB,IAAblD,EAAX,CAUA,GAAIiD,EACF,IAAK,MAAME,KAAgBjD,OAAOkD,KAAKrD,GACrCyC,EAAyBvF,EAAS8C,EAAQoD,EAAc5C,EAAkB8C,MAAM,IAIpF,IAAK,MAAOC,EAAajD,KAAUH,OAAO0C,QAAQF,GAAoB,CACpE,MAAMC,EAAaW,EAAYzG,QAAQsC,EAAe,IAEjD6D,IAAezC,EAAkBsC,SAASF,IAC7CN,EAAcpF,EAAS8C,EAAQY,EAAWN,EAAML,SAAUK,EAAMJ,mBAEpE,CAdA,KARA,CAEE,IAAKC,OAAOkD,KAAKV,GAAmBjF,OAClC,OAGF4E,EAAcpF,EAAS8C,EAAQY,EAAWX,EAAUU,EAAcF,EAAU,KAE9E,C,EAiBF+C,QAAQtG,EAASoD,EAAOtB,GACtB,GAAqB,iBAAVsB,IAAuBpD,EAChC,OAAO,KAGT,MAAMuG,EAAInF,IAIV,IAAIoF,EAAc,KACdC,GAAU,EACVC,GAAiB,EACjBC,GAAmB,EALHvD,IADFO,EAAaP,IAQZmD,IACjBC,EAAcD,EAAErG,MAAMkD,EAAOtB,GAE7ByE,EAAEvG,GAASsG,QAAQE,GACnBC,GAAWD,EAAYI,uBACvBF,GAAkBF,EAAYK,gCAC9BF,EAAmBH,EAAYM,sBAGjC,IAAIC,EAAM,IAAI7G,MAAMkD,EAAO,CAAEqD,UAASO,YAAY,IAelD,OAdAD,EAAMnC,EAAWmC,EAAKjF,GAElB6E,GACFI,EAAIE,iBAGFP,GACF1G,EAAQC,cAAc8G,GAGpBA,EAAIJ,kBAAoBH,GAC1BA,EAAYS,iBAGPF,CACT,GAGF,SAASnC,EAAWsC,EAAKC,EAAO,IAC9B,IAAK,MAAOC,EAAKC,KAAUpE,OAAO0C,QAAQwB,GACxC,IACED,EAAIE,GAAOC,CAQb,CAPE,MACApE,OAAOqE,eAAeJ,EAAKE,EAAK,CAC9BG,cAAc,EACdC,IAAG,IACMH,GAGb,CAGF,OAAOH,CACT,CCpTA,SAASO,EAAcJ,GACrB,GAAc,SAAVA,EACF,OAAO,EAGT,GAAc,UAAVA,EACF,OAAO,EAGT,GAAIA,IAAUK,OAAOL,GAAOM,WAC1B,OAAOD,OAAOL,GAGhB,GAAc,KAAVA,GAA0B,SAAVA,EAClB,OAAO,KAGT,GAAqB,iBAAVA,EACT,OAAOA,EAGT,IACE,OAAOO,KAAKC,MAAMC,mBAAmBT,GAGvC,CAFE,MACA,OAAOA,CACT,CACF,CAEA,SAASU,EAAiBX,GACxB,OAAOA,EAAIxH,QAAQ,UAAUoI,GAAQ,IAAGA,EAAIC,iBAC9C,CAEA,MAAMC,EAAc,CAClBC,iBAAiBnI,EAASoH,EAAKC,GAC7BrH,EAAQoI,aAAc,aAAYL,EAAiBX,KAAQC,E,EAG7DgB,oBAAoBrI,EAASoH,GAC3BpH,EAAQsI,gBAAiB,aAAYP,EAAiBX,K,EAGxDmB,kBAAkBvI,GAChB,IAAKA,EACH,MAAO,GAGT,MAAMwI,EAAa,GACbC,EAASxF,OAAOkD,KAAKnG,EAAQ0I,SAASC,QAAOvB,GAAOA,EAAInB,WAAW,UAAYmB,EAAInB,WAAW,gBAEpG,IAAK,MAAMmB,KAAOqB,EAAQ,CACxB,IAAIG,EAAUxB,EAAIxH,QAAQ,QAAS,IACnCgJ,EAAUA,EAAQC,OAAO,GAAGZ,cAAgBW,EAAQxC,MAAM,EAAGwC,EAAQpI,QACrEgI,EAAWI,GAAWnB,EAAczH,EAAQ0I,QAAQtB,GACtD,CAEA,OAAOoB,C,EAGTM,iBAAgB,CAAC9I,EAASoH,IACjBK,EAAczH,EAAQ+I,aAAc,aAAYhB,EAAiBX,QCzDtE4B,EAAchJ,IAClB,IAAIR,EAAWQ,EAAQ+I,aAAa,oBAEpC,IAAKvJ,GAAyB,MAAbA,EAAkB,CACjC,IAAIyJ,EAAgBjJ,EAAQ+I,aAAa,QAMzC,IAAKE,IAAmBA,EAAcrD,SAAS,OAASqD,EAAchD,WAAW,KAC/E,OAAO,KAILgD,EAAcrD,SAAS,OAASqD,EAAchD,WAAW,OAC3DgD,EAAiB,IAAGA,EAAcC,MAAM,KAAK,MAG/C1J,EAAWyJ,GAAmC,MAAlBA,EAAwBA,EAAcE,OAAS,IAC7E,CAEA,OAAO5J,EAAcC,EAAS,EAG1B4J,EAAiB,CACrBjG,KAAI,CAAC3D,EAAUQ,EAAUS,SAASiB,kBACzB,GAAG2H,UAAUC,QAAQC,UAAU9E,iBAAiBL,KAAKpE,EAASR,IAGvEgK,QAAO,CAAChK,EAAUQ,EAAUS,SAASiB,kBAC5B4H,QAAQC,UAAU7I,cAAc0D,KAAKpE,EAASR,GAGvDiK,SAAQ,CAACzJ,EAASR,IACT,GAAG6J,UAAUrJ,EAAQyJ,UAAUd,QAAOe,GAASA,EAAMC,QAAQnK,KAGtEoK,QAAQ5J,EAASR,GACf,MAAMoK,EAAU,GAChB,IAAIC,EAAW7J,EAAQmB,WAAWF,QAAQzB,GAE1C,KAAOqK,GACLD,EAAQE,KAAKD,GACbA,EAAWA,EAAS1I,WAAWF,QAAQzB,GAGzC,OAAOoK,C,EAGTG,KAAK/J,EAASR,GACZ,IAAIwK,EAAWhK,EAAQiK,uBAEvB,KAAOD,GAAU,CACf,GAAIA,EAASL,QAAQnK,GACnB,MAAO,CAACwK,GAGVA,EAAWA,EAASC,sBACtB,CAEA,MAAO,E,EAGTC,KAAKlK,EAASR,GACZ,IAAI0K,EAAOlK,EAAQmK,mBAEnB,KAAOD,GAAM,CACX,GAAIA,EAAKP,QAAQnK,GACf,MAAO,CAAC0K,GAGVA,EAAOA,EAAKC,kBACd,CAEA,MAAO,E,EAGTC,kBAAkBpK,GAChB,MAAMqK,EAAa,CACjB,IACA,SACA,QACA,WACA,SACA,UACA,aACA,4BACAC,KAAI9K,GAAa,GAAEA,2BAAiC+K,KAAK,KAE3D,OAAOlG,KAAKlB,KAAKkH,EAAYrK,GAAS2I,QAAO6B,IH0B9BxK,KACZA,GAAWA,EAAQM,WAAamK,KAAKC,gBAItC1K,EAAQ2K,UAAUxG,SAAS,mBAIC,IAArBnE,EAAQ4K,SACV5K,EAAQ4K,SAGV5K,EAAQuB,aAAa,aAAoD,UAArCvB,EAAQ+I,aAAa,aGvCV8B,CAAWL,IAAO7J,EAAU6J,I,EAGlFM,uBAAuB9K,GACrB,MAAMR,EAAWwJ,EAAYhJ,GAE7B,OAAIR,GACK4J,EAAeI,QAAQhK,GAAYA,EAGrC,I,EAGTuL,uBAAuB/K,GACrB,MAAMR,EAAWwJ,EAAYhJ,GAE7B,OAAOR,EAAW4J,EAAeI,QAAQhK,GAAY,I,EAGvDwL,gCAAgChL,GAC9B,MAAMR,EAAWwJ,EAAYhJ,GAE7B,OAAOR,EAAW4J,EAAejG,KAAK3D,GAAY,EACpD,GC5GF,MAAMyL,EAEOC,qBACT,MAAO,EACT,CAEWC,yBACT,MAAO,EACT,CAEWC,kBACT,MAAM,IAAIC,MAAM,sEAClB,CAEAC,WAAWC,GAIT,OAHAA,EAASlH,KAAKmH,gBAAgBD,GAC9BA,EAASlH,KAAKoH,kBAAkBF,GAChClH,KAAKqH,iBAAiBH,GACfA,CACT,CAEAE,kBAAkBF,GAChB,OAAOA,CACT,CAEAC,gBAAgBD,EAAQvL,GACtB,MAAM2L,EAAaxL,EAAUH,GAAWkI,EAAYY,iBAAiB9I,EAAS,UAAY,GAE1F,MAAO,IACFqE,KAAKuH,YAAYV,WACM,iBAAfS,EAA0BA,EAAa,MAC9CxL,EAAUH,GAAWkI,EAAYK,kBAAkBvI,GAAW,MAC5C,iBAAXuL,EAAsBA,EAAS,GAE9C,CAEAG,iBAAiBH,EAAQM,EAAcxH,KAAKuH,YAAYT,aACtD,IAAK,MAAOW,EAAUC,KAAkB9I,OAAO0C,QAAQkG,GAAc,CACnE,MAAMxE,EAAQkE,EAAOO,GACfE,EAAY7L,EAAUkH,GAAS,UJ1BrCjH,OADSA,EI2B+CiH,GJzBlD,GAAEjH,IAGL6C,OAAOsG,UAAU5B,SAASvD,KAAKhE,GAAQP,MAAM,eAAe,GAAGoI,cIwBlE,IAAK,IAAIgE,OAAOF,GAAeG,KAAKF,GAClC,MAAM,IAAIG,UACP,GAAE9H,KAAKuH,YAAYR,KAAKgB,0BAA0BN,qBAA4BE,yBAAiCD,MAGtH,CJlCW3L,KImCb,EC9CF,MAYM8K,EAAU,CACdmB,YAAa,KACbC,aAAc,KACdC,cAAe,MAGXpB,EAAc,CAClBkB,YAAa,kBACbC,aAAc,kBACdC,cAAe,mBAOjB,MAAMC,UAAcvB,EAClBW,YAAY5L,EAASuL,GACnBkB,QACApI,KAAKqI,SAAW1M,EAEXA,GAAYwM,EAAMG,gBAIvBtI,KAAKuI,QAAUvI,KAAKiH,WAAWC,GAC/BlH,KAAKwI,QAAU,EACfxI,KAAKyI,sBAAwBxH,QAAQ7F,OAAOsN,cAC5C1I,KAAK2I,cACP,CAGW9B,qBACT,OAAOA,CACT,CAEWC,yBACT,OAAOA,CACT,CAEWC,kBACT,MArDS,OAsDX,CAGA6B,UACEpI,EAAaC,IAAIT,KAAKqI,SAzDR,YA0DhB,CAGAQ,OAAO9J,GACAiB,KAAKyI,sBAMNzI,KAAK8I,wBAAwB/J,KAC/BiB,KAAKwI,QAAUzJ,EAAMgK,SANrB/I,KAAKwI,QAAUzJ,EAAMiK,QAAQ,GAAGD,OAQpC,CAEAE,KAAKlK,GACCiB,KAAK8I,wBAAwB/J,KAC/BiB,KAAKwI,QAAUzJ,EAAMgK,QAAU/I,KAAKwI,SAGtCxI,KAAKkJ,eACL3L,EAAQyC,KAAKuI,QAAQP,YACvB,CAEAmB,MAAMpK,GACJiB,KAAKwI,QAAUzJ,EAAMiK,SAAWjK,EAAMiK,QAAQ7M,OAAS,EACrD,EACA4C,EAAMiK,QAAQ,GAAGD,QAAU/I,KAAKwI,OACpC,CAEAU,eACE,MAAME,EAAYC,KAAKC,IAAItJ,KAAKwI,SAEhC,GAAIY,GAlFgB,GAmFlB,OAGF,MAAMG,EAAYH,EAAYpJ,KAAKwI,QAEnCxI,KAAKwI,QAAU,EAEVe,GAILhM,EAAQgM,EAAY,EAAIvJ,KAAKuI,QAAQL,cAAgBlI,KAAKuI,QAAQN,aACpE,CAEAU,cACM3I,KAAKyI,uBACPjI,EAAagB,GAAGxB,KAAKqI,SAxGA,wBAwG6BtJ,GAASiB,KAAK6I,OAAO9J,KACvEyB,EAAagB,GAAGxB,KAAKqI,SAxGF,sBAwG6BtJ,GAASiB,KAAKiJ,KAAKlK,KAEnEiB,KAAKqI,SAAS/B,UAAUkD,IAvGG,mBAyG3BhJ,EAAagB,GAAGxB,KAAKqI,SAhHD,uBAgH6BtJ,GAASiB,KAAK6I,OAAO9J,KACtEyB,EAAagB,GAAGxB,KAAKqI,SAhHF,sBAgH6BtJ,GAASiB,KAAKmJ,MAAMpK,KACpEyB,EAAagB,GAAGxB,KAAKqI,SAhHH,qBAgH6BtJ,GAASiB,KAAKiJ,KAAKlK,KAEtE,CAEA+J,wBAAwB/J,GACtB,OAAOiB,KAAKyI,wBAjHS,QAiHiB1J,EAAM0K,aAlHrB,UAkHyD1K,EAAM0K,YACxF,CAGAC,qBACE,MAAO,iBAAkBtN,SAASiB,iBAAmBsM,UAAUC,eAAiB,CAClF,ECnIF,MAAMC,EAAa,IAAIC,IAEvBC,EAAe,CACbC,IAAIrO,EAASoH,EAAKkH,GACXJ,EAAWtK,IAAI5D,IAClBkO,EAAWG,IAAIrO,EAAS,IAAImO,KAG9B,MAAMI,EAAcL,EAAW1G,IAAIxH,GAI9BuO,EAAY3K,IAAIwD,IAA6B,IAArBmH,EAAYC,KAMzCD,EAAYF,IAAIjH,EAAKkH,GAJnBG,QAAQC,MAAO,+EAA8EC,MAAMC,KAAKL,EAAYpI,QAAQ,M,EAOhIqB,IAAG,CAACxH,EAASoH,IACP8G,EAAWtK,IAAI5D,IACVkO,EAAW1G,IAAIxH,GAASwH,IAAIJ,IAG9B,KAGTyH,OAAO7O,EAASoH,GACd,IAAK8G,EAAWtK,IAAI5D,GAClB,OAGF,MAAMuO,EAAcL,EAAW1G,IAAIxH,GAEnCuO,EAAYO,OAAO1H,GAGM,IAArBmH,EAAYC,MACdN,EAAWY,OAAO9O,EAEtB,GC/BF,MAAM+O,UAAsB9D,EAC1BW,YAAY5L,EAASuL,GACnBkB,SAEAzM,EAAUO,EAAWP,MAKrBqE,KAAKqI,SAAW1M,EAChBqE,KAAKuI,QAAUvI,KAAKiH,WAAWC,GAE/B6C,EAAKC,IAAIhK,KAAKqI,SAAUrI,KAAKuH,YAAYoD,SAAU3K,MACrD,CAGA4I,UACEmB,EAAKS,OAAOxK,KAAKqI,SAAUrI,KAAKuH,YAAYoD,UAC5CnK,EAAaC,IAAIT,KAAKqI,SAAUrI,KAAKuH,YAAYqD,WAEjD,IAAK,MAAMC,KAAgBjM,OAAOkM,oBAAoB9K,MACpDA,KAAK6K,GAAgB,IAEzB,CAEAE,eAAeC,EAAUrP,EAASsP,GAAa,GPqLlB,EAACD,EAAUE,EAAmBC,GAAoB,KAC/E,IAAKA,EAEH,YADA5N,EAAQyN,GAIV,MACMI,EA7LiCzP,KACvC,IAAKA,EACH,OAAO,EAIT,IAAI0P,mBAAEA,EAAkBC,gBAAEA,GAAoBlQ,OAAOqB,iBAAiBd,GAEtE,MAAM4P,EAA0BlI,OAAOmI,WAAWH,GAC5CI,EAAuBpI,OAAOmI,WAAWF,GAG/C,OAAKC,GAA4BE,GAKjCJ,EAAqBA,EAAmBxG,MAAM,KAAK,GACnDyG,EAAkBA,EAAgBzG,MAAM,KAAK,GAxDf,KA0DtBxB,OAAOmI,WAAWH,GAAsBhI,OAAOmI,WAAWF,KAPzD,CAOoG,EAyKpFI,CAAiCR,GADlC,EAGxB,IAAIS,GAAS,EAEb,MAAMzM,EAAU,EAAGmB,aACbA,IAAW6K,IAIfS,GAAS,EACTT,EAAkBlK,oBAAoB/F,EAAgBiE,GACtD3B,EAAQyN,GAAS,EAGnBE,EAAkBpK,iBAAiB7F,EAAgBiE,GACnD0M,YAAW,KACJD,GACHjQ,EAAqBwP,EACvB,GACCE,EAAiB,EO9MlBS,CAAuBb,EAAUrP,EAASsP,EAC5C,CAEAhE,WAAWC,GAIT,OAHAA,EAASlH,KAAKmH,gBAAgBD,EAAQlH,KAAKqI,UAC3CnB,EAASlH,KAAKoH,kBAAkBF,GAChClH,KAAKqH,iBAAiBH,GACfA,CACT,CAGAwC,mBAAmB/N,GACjB,OAAOoO,EAAK5G,IAAIjH,EAAWP,GAAUqE,KAAK2K,SAC5C,CAEAjB,2BAA2B/N,EAASuL,EAAS,IAC3C,OAAOlH,KAAK8L,YAAYnQ,IAAY,IAAIqE,KAAKrE,EAA2B,iBAAXuL,EAAsBA,EAAS,KAC9F,CAEW6E,qBACT,MApDY,cAqDd,CAEWpB,sBACT,MAAQ,MAAK3K,KAAK+G,MACpB,CAEW6D,uBACT,MAAQ,IAAG5K,KAAK2K,UAClB,CAEAjB,iBAAiBsC,GACf,MAAQ,GAAEA,IAAOhM,KAAK4K,WACxB,ECrDF,MAEMA,EAAa,iBAObqB,EAAa,OACbC,EAAa,OACbC,EAAiB,OACjBC,EAAkB,QAElBC,EAAe,QAAOzB,IACtB0B,EAAc,OAAM1B,IACpB2B,EAAiB,UAAS3B,IAC1B4B,EAAoB,aAAY5B,IAChC6B,EAAoB,aAAY7B,IAChC8B,EAAoB,YAAW9B,IAC/B+B,EAAuB,OAAM/B,aAC7BgC,EAAwB,QAAOhC,aAE/BiC,EAAsB,WACtBC,EAAoB,SAepBC,GACN,CACIC,UAAkBZ,EAClBa,WAAmBd,GAGjBtF,GACN,CACIqG,SAAU,IACVC,UAAU,EACVC,MAAO,QACPC,MAAM,EACNC,OAAO,EACPC,MAAM,GAGJzG,GACN,CACIoG,SAAU,mBACVC,SAAU,UACVC,MAAO,mBACPC,KAAM,mBACNC,MAAO,UACPC,KAAM,WAMV,MAAMC,WAAiB9C,EAEnBnD,YAAY5L,EAASuL,GAEjBkB,MAAMzM,EAASuL,GAEflH,KAAKyN,UAAY,KACjBzN,KAAK0N,eAAiB,KACtB1N,KAAK2N,YAAa,EAClB3N,KAAK4N,aAAe,KACpB5N,KAAK6N,aAAe,KAEpB7N,KAAK8N,mBAAqB/I,EAAeI,QA7CrB,uBA6CkDnF,KAAKqI,UAC3ErI,KAAK+N,qBAED/N,KAAKuI,QAAQ8E,OAASR,GACtB7M,KAAKgO,OACb,CAGWnH,qBAEP,OAAOA,EACX,CAEWC,yBAEP,OAAOA,EACX,CAEWC,kBAEP,MApGK,UAqGT,CAGAlB,OAEI7F,KAAKiO,OAAOhC,EAChB,CAEAiC,mBAKS9R,SAAS+R,QAAU7R,EAAU0D,KAAKqI,WACnCrI,KAAK6F,MACb,CAEAH,OAEI1F,KAAKiO,OAAO/B,EAChB,CAEAkB,QAEQpN,KAAK2N,YACLjS,EAAqBsE,KAAKqI,UAE9BrI,KAAKoO,gBACT,CAEAJ,QAEIhO,KAAKoO,iBACLpO,KAAKqO,kBAELrO,KAAKyN,UAAYa,aAAY,IAAMtO,KAAKkO,mBAAmBlO,KAAKuI,QAAQ2E,SAC5E,CAEAqB,oBAESvO,KAAKuI,QAAQ8E,OAGdrN,KAAK2N,WAELnN,EAAaiB,IAAIzB,KAAKqI,SAAUiE,GAAY,IAAMtM,KAAKgO,UAK3DhO,KAAKgO,QACT,CAEAQ,GAAGC,GAEC,MAAMC,EAAQ1O,KAAK2O,YAEnB,GAAIF,EAAQC,EAAMvS,OAAS,GAAKsS,EAAQ,EACpC,OAEJ,GAAIzO,KAAK2N,WAIL,YAFAnN,EAAaiB,IAAIzB,KAAKqI,SAAUiE,GAAY,IAAMtM,KAAKwO,GAAGC,KAK9D,MAAMG,EAAc5O,KAAK6O,cAAc7O,KAAK8O,cAE5C,GAAIF,IAAgBH,EAChB,OAEJ,MAAMM,EAAQN,EAAQG,EAAc3C,EAAaC,EAEjDlM,KAAKiO,OAAOc,EAAOL,EAAMD,GAC7B,CAEA7F,UAEQ5I,KAAK6N,cACL7N,KAAK6N,aAAajF,UAEtBR,MAAMQ,SACV,CAGAxB,kBAAkBF,GAId,OAFAA,EAAO8H,gBAAkB9H,EAAOgG,SAEzBhG,CACX,CAEA6G,qBAEQ/N,KAAKuI,QAAQ4E,UACb3M,EAAagB,GAAGxB,KAAKqI,SAAUkE,GAAexN,GAASiB,KAAKiP,SAASlQ,KAE9C,UAAvBiB,KAAKuI,QAAQ6E,QAEb5M,EAAagB,GAAGxB,KAAKqI,SAAUmE,GAAkB,IAAMxM,KAAKoN,UAC5D5M,EAAagB,GAAGxB,KAAKqI,SAAUoE,GAAkB,IAAMzM,KAAKuO,uBAG5DvO,KAAKuI,QAAQ+E,OAASnF,EAAMG,eAC5BtI,KAAKkP,yBACb,CAEAA,0BAEI,IAAK,MAAMC,KAAOpK,EAAejG,KAjLf,qBAiLuCkB,KAAKqI,UAC1D7H,EAAagB,GAAG2N,EAAKzC,GAAkB3N,GAASA,EAAM6D,mBAE1D,MAqBMwM,EACN,CACInH,aAAc,IAAMjI,KAAKiO,OAAOjO,KAAKqP,kBAAkBlD,IACvDjE,cAAe,IAAMlI,KAAKiO,OAAOjO,KAAKqP,kBAAkBjD,IACxDpE,YAzBgB,KAEW,UAAvBhI,KAAKuI,QAAQ6E,QAWjBpN,KAAKoN,QAEDpN,KAAK4N,cACL0B,aAAatP,KAAK4N,cAEtB5N,KAAK4N,aAAehC,YAAW,IAAM5L,KAAKuO,qBAjOvB,IAiOqEvO,KAAKuI,QAAQ2E,UAAS,GAUlHlN,KAAK6N,aAAe,IAAI1F,EAAMnI,KAAKqI,SAAU+G,EACjD,CAEAH,SAASlQ,GAEL,GAAI,kBAAkB8I,KAAK9I,EAAMsB,OAAOkP,SACpC,OAEJ,MAAMhG,EAAYwD,GAAiBhO,EAAMgE,KAErCwG,IAEAxK,EAAM6D,iBAEN5C,KAAKiO,OAAOjO,KAAKqP,kBAAkB9F,IAE3C,CAEAsF,cAAclT,GAEV,OAAOqE,KAAK2O,YAAYa,QAAQ7T,EACpC,CAEA8T,2BAA2BhB,GAEvB,IAAKzO,KAAK8N,mBACN,OAEJ,MAAM4B,EAAkB3K,EAAeI,QA/OvB,UA+OgDnF,KAAK8N,oBAErE4B,EAAgBpJ,UAAUkE,OAAOsC,GACjC4C,EAAgBzL,gBAAgB,gBAEhC,MAAM0L,EAAqB5K,EAAeI,QAAS,wBAAuBsJ,MAAWzO,KAAK8N,oBAEtF6B,IAEAA,EAAmBrJ,UAAUkD,IAAIsD,GACjC6C,EAAmB5L,aAAa,eAAgB,QAExD,CAEAsK,kBAEI,MAAM1S,EAAUqE,KAAK0N,gBAAkB1N,KAAK8O,aAE5C,GAAKnT,EAAL,CAGA,IAAIiU,EAAkBvM,OAAOwM,SAASlU,EAAQ+I,aAAa,sBAAuB,IAE/E/I,EAAQ2K,UAAUxG,SAAS,yBAC1B8P,EAAoF,IAAlEvM,OAAOwM,SAASlU,EAAQU,cAAc,gBAAgByT,WAE5E9P,KAAKuI,QAAQ2E,SAAW0C,GAAmB5P,KAAKuI,QAAQyG,eAPpD,CAQR,CAEAf,OAAOc,EAAOpT,EAAU,MAEpB,GAAIqE,KAAK2N,WACL,OAEJ,MAAMoC,EAAgB/P,KAAK8O,aACrBkB,EAASjB,IAAU9C,EACnBgE,EAActU,GRpEC,EAACuU,EAAMH,EAAeI,EAAeC,KAChE,MAAMC,EAAaH,EAAK/T,OACxB,IAAIsS,EAAQyB,EAAKV,QAAQO,GAIzB,OAAe,IAAXtB,GACM0B,GAAiBC,EAAiBF,EAAKG,EAAa,GAAKH,EAAK,IAGxEzB,GAAS0B,EAAgB,GAAK,EAE1BC,IACF3B,GAASA,EAAQ4B,GAAcA,GAG1BH,EAAK7G,KAAKiH,IAAI,EAAGjH,KAAKkH,IAAI9B,EAAO4B,EAAa,KAAI,EQoDpBG,CAAqBxQ,KAAK2O,YAAaoB,EAAeC,EAAQhQ,KAAKuI,QAAQgF,MAE1G,GAAI0C,IAAgBF,EAChB,OAEJ,MAAMU,EAAmBzQ,KAAK6O,cAAcoB,GAEtCS,EAAeC,GAEVnQ,EAAayB,QAAQjC,KAAKqI,SAAUsI,EAC3C,CACI/Q,cAAeqQ,EACf1G,UAAWvJ,KAAK4Q,kBAAkB7B,GAClCxE,KAAMvK,KAAK6O,cAAckB,GACzBvB,GAAIiC,IAIZ,GAAGR,EAAY3J,UAAUxG,SAAS,uBAClC,CACI,IAAI+Q,EAAQZ,EAAY5T,cAAc,gBAEnCwU,GAGCA,EAAMC,MAEd,CAIA,GAFmBJ,EAAarE,GAEjB/J,iBACX,OAEJ,IAAKyN,IAAkBE,EAInB,OAGJ,MAAMc,EAAY9P,QAAQjB,KAAKyN,WAE/BzN,KAAKoN,QAELpN,KAAK2N,YAAa,EAElB3N,KAAKyP,2BAA2BgB,GAChCzQ,KAAK0N,eAAiBuC,EAEtB,MAAMe,EAAuBhB,EAzUZ,sBADF,oBA2UTiB,EAAiBjB,EAzUP,qBACA,qBA0UhBC,EAAY3J,UAAUkD,IAAIyH,GRrNnBtV,KACbA,EAAQuV,YAAY,EQsNdC,CAAOlB,GAEPF,EAAczJ,UAAUkD,IAAIwH,GAC5Bf,EAAY3J,UAAUkD,IAAIwH,GA0B1BhR,KAAK+K,gBAxBoB,KAOrB,GALAkF,EAAY3J,UAAUkE,OAAOwG,EAAsBC,GACnDhB,EAAY3J,UAAUkD,IAAIsD,GAE1BiD,EAAczJ,UAAUkE,OAAOsC,EAAmBmE,EAAgBD,GAE/DjB,EAAczJ,UAAUxG,SAAS,uBACpC,CACI,IAAI+Q,EAAQd,EAAc1T,cAAc,gBAErCwU,IAECA,EAAMzD,QAENyD,EAAMO,OAEd,CAEApR,KAAK2N,YAAa,EAElB+C,EAAapE,EAAW,GAGUyD,EAAe/P,KAAKqR,eAEtDN,GACA/Q,KAAKgO,OACb,CAEAqD,cAEI,OAAOrR,KAAKqI,SAAS/B,UAAUxG,SArXd,QAsXrB,CAEAgP,aAEI,OAAO/J,EAAeI,QAlXDmM,wBAkX+BtR,KAAKqI,SAC7D,CAEAsG,YAEI,OAAO5J,EAAejG,KAxXR,iBAwX4BkB,KAAKqI,SACnD,CAEA+F,iBAEQpO,KAAKyN,YAEL8D,cAAcvR,KAAKyN,WAEnBzN,KAAKyN,UAAY,KAEzB,CAEA4B,kBAAkB9F,GAEd,OAAInM,IACOmM,IAAc4C,EAAiBD,EAAaD,EAEhD1C,IAAc4C,EAAiBF,EAAaC,CACvD,CAEA0E,kBAAkB7B,GAEd,OAAI3R,IACO2R,IAAU7C,EAAaC,EAAiBC,EAE5C2C,IAAU7C,EAAaE,EAAkBD,CACpD,CAGAzC,uBAAuBxC,GAEnB,OAAOlH,KAAKwR,MAAK,WAEb,MAAMC,EAAOjE,GAASkE,oBAAoB1R,KAAMkH,GAEhD,GAAsB,iBAAXA,GAOX,GAAsB,iBAAXA,EACX,CACI,QAAqByK,IAAjBF,EAAKvK,IAAyBA,EAAOtF,WAAW,MAAmB,gBAAXsF,EACxD,MAAM,IAAIY,UAAW,oBAAmBZ,MAE5CuK,EAAKvK,IACT,OAXIuK,EAAKjD,GAAGtH,EAYhB,GACJ,ERxRuB0K,OAnBA5G,G,OQkT3BxK,EAAagB,GAAGpF,SAAUwQ,EA9aE,2CA8ayC,SAAU7N,GAE3E,MAAMsB,EAAS0E,EAAe2B,uBAAuB1G,MAErD,IAAKK,IAAWA,EAAOiG,UAAUxG,SAAS+M,GACtC,OAEJ9N,EAAM6D,iBAEN,MAAMiP,EAAWrE,GAASkE,oBAAoBrR,GACxCyR,EAAa9R,KAAK0E,aAAa,sBAErC,OAAIoN,GAEAD,EAASrD,GAAGsD,QACZD,EAAStD,qBAKuC,SAAhD1K,EAAYY,iBAAiBzE,KAAM,UAEnC6R,EAAShM,YACTgM,EAAStD,sBAKbsD,EAASnM,YACTmM,EAAStD,oBACb,IAEA/N,EAAagB,GAAGpG,OAAQuR,GAAqB,KAEzC,MAAMoF,EAAYhN,EAAejG,KA/cV,+BAidvB,IAAK,MAAM+S,KAAYE,EACnBvE,GAASkE,oBAAoBG,EAAS,IRpUnBD,GQ2URpE,GR9VQxC,GAoBN,KACjB,MAAM9I,EAAInF,IAEV,GAAImF,EAAG,CACL,MAAM8J,EAAO4F,GAAO7K,KACdiL,EAAqB9P,EAAEvC,GAAGqM,GAChC9J,EAAEvC,GAAGqM,GAAQ4F,GAAOK,gBACpB/P,EAAEvC,GAAGqM,GAAMkG,YAAcN,GACzB1P,EAAEvC,GAAGqM,GAAMmG,WAAa,KACtBjQ,EAAEvC,GAAGqM,GAAQgG,EACNJ,GAAOK,gBAElB,GA/B0B,YAAxB7V,SAASgW,YAENjV,EAA0BhB,QAC7BC,SAAS0E,iBAAiB,oBAAoB,KAC5C,IAAK,MAAMkK,KAAY7N,EACrB6N,GACF,IAIJ7N,EAA0BsI,KAAKuF,KAE/BA,KS/LJ,CACEwC,Y"}