{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/event-handler.js","../../js/src/dom/data.js","../../js/src/base-component.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/util/swipe.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/util/scrollbar.js","../../js/src/util/backdrop.js","../../js/src/util/focustrap.js","../../js/src/modal.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["TRANSITION_END","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","document","querySelector","getElementFromSelector","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","jquery","nodeType","getElement","length","typeCheckConfig","componentName","config","configTypes","property","Object","keys","expectedTypes","value","valueType","prototype","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","getClientRects","getComputedStyle","getPropertyValue","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","parentNode","noop","reflow","offsetHeight","getjQuery","jQuery","window","body","DOMContentLoadedCallbacks","isRTL","dir","defineJQueryPlugin","plugin","callback","$","name","NAME","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","addEventListener","push","execute","executeAfterTransition","transitionElement","waitForTransition","emulatedDuration","transitionDuration","transitionDelay","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","getTransitionDurationFromElement","called","handler","target","removeEventListener","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","index","indexOf","listLength","Math","max","min","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","customEventsRegex","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","delegationSelector","uidEventList","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","getTypeEvent","has","addHandler","oneOff","wrapFn","relatedTarget","delegateTarget","this","handlers","previousFn","replace","domElements","querySelectorAll","i","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","on","one","inNamespace","isNamespace","elementEvent","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","key","defineProperty","get","preventDefault","elementMap","Map","Data","set","instance","instanceMap","size","console","error","Array","from","remove","delete","BaseComponent","constructor","_element","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","static","getInstance","VERSION","Error","enableDismissTrigger","component","method","clickEvent","tagName","closest","getOrCreateInstance","Alert","close","_destroyElement","each","data","undefined","SELECTOR_DATA_TOGGLE","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","pageYOffset","left","pageXOffset","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","findOne","children","child","matches","parents","ancestor","prev","previous","previousElementSibling","next","nextElementSibling","focusableChildren","focusables","map","join","el","Default","leftCallback","rightCallback","endCallback","DefaultType","Swipe","isSupported","_config","_getConfig","_deltaX","_supportPointerEvents","PointerEvent","_initEvents","_start","_eventIsPointerPenTouch","clientX","touches","_end","_handleSwipe","_move","absDeltaX","abs","direction","add","pointerType","navigator","maxTouchPoints","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLID","CLASS_NAME_ACTIVE","SELECTOR_ACTIVE_ITEM","KEY_TO_DIRECTION","ArrowLeft","ArrowRight","interval","keyboard","slide","pause","wrap","touch","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_swipeHelper","_indicatorsElement","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","activeIndex","_getItemIndex","order","_keydown","_addTouchEventListeners","itemImg","swipeConfig","clearTimeout","_getItemByOrder","isNext","_triggerSlideEvent","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","indicator","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","triggerSlidEvent","completeCallBack","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","carousel","CLASS_NAME_SHOW","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElem","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","style","scrollSize","selected","triggerArray","isOpen","selectorElements","ESCAPE_KEY","SPACE_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","REGEXP_KEYDOWN","EVENT_CLICK_DATA_API","EVENT_KEYDOWN_DATA_API","SELECTOR_MENU","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","display","popperConfig","autoClose","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","getParentFromElement","_createPopper","focus","_completeHide","destroy","update","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","_getPlacement","parentDropdown","isEnd","_getOffset","popperData","defaultBsPopperConfig","placement","options","_selectMenuItem","items","toggles","context","composedPath","isMenuTarget","isActive","stopPropagation","getToggleButton","clearMenus","dataApiKeydownHandler","SELECTOR_FIXED_CONTENT","SELECTOR_STICKY_CONTENT","ScrollBarHelper","getWidth","documentWidth","clientWidth","innerWidth","width","_disableOverFlow","_setElementAttributes","calculatedValue","reset","_resetElementAttributes","isOverflowing","_saveInitialAttribute","overflow","styleProp","scrollbarWidth","_applyManipulationCallback","actualValue","removeProperty","callBack","sel","EVENT_MOUSEDOWN","className","rootElement","clickCallback","Backdrop","_isAppended","_append","_getElement","_emulateAnimation","backdrop","createElement","append","TAB_NAV_BACKWARD","trapElement","autofocus","FocusTrap","_isActive","_lastTabNavDirection","activate","_handleFocusin","_handleKeydown","deactivate","elements","shiftKey","EVENT_HIDDEN","EVENT_SHOW","EVENT_RESIZE","EVENT_CLICK_DISMISS","EVENT_KEYDOWN_DISMISS","EVENT_MOUSEDOWN_DISMISS","CLASS_NAME_OPEN","CLASS_NAME_STATIC","Modal","_dialog","_backdrop","_initializeBackDrop","_focustrap","_initializeFocusTrap","_ignoreBackdropClick","_scrollBar","_isAnimated","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","_hideModal","htmlElement","handleUpdate","modalBody","scrollTop","_triggerBackdropTransition","_resetAdjustments","currentTarget","scrollHeight","isModalOverflowing","clientHeight","overflowY","isBodyOverflowing","paddingLeft","paddingRight","showEvent","allReadyOpen","OPEN_SELECTOR","scroll","Offcanvas","visibility","blur","alreadyOpen","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","innerHTML","DISALLOWED_ATTRIBUTES","CLASS_NAME_FADE","HOVER_STATE_SHOW","HOVER_STATE_OUT","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","template","title","delay","html","container","fallbackPlacements","customClass","sanitize","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","click","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","_disposePopper","isWithContent","shadowRoot","isInTheDom","ownerDocument","getTitle","tipId","prefix","floor","random","getElementById","getUID","attachment","_getAttachment","_addAttachmentClass","_resolvePossibleFunction","prevHoverState","_cleanTipClass","setContent","_sanitizeAndSetContent","content","templateElement","setElementContent","textContent","updateAttachment","_getDelegateConfig","phase","_handlePopperPlacementChange","onFirstUpdate","_getBasicClassPrefix","triggers","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","basicClassPrefixRegex","tabClass","tClass","token","state","popper","Popover","_getContent","SELECTOR_LINK_ITEMS","METHOD_POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","height","item","sort","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","listGroup","navItem","activeNodes","node","spy","SELECTOR_ACTIVE","SELECTOR_ACTIVE_UL","Tab","listElement","itemSelector","hideEvent","complete","active","isTransitioning","_transitionComplete","dropdownChild","dropdownElement","dropdown","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","_onInteraction","isInteracting"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): 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// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`\n  }\n\n  return Object.prototype.toString.call(obj).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 getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttr = 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 (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n  }\n\n  return selector\n}\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element)\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null\n  }\n\n  return null\n}\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element)\n\n  return selector ? document.querySelector(selector) : null\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 = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0]\n  }\n\n  return typeof obj.nodeType !== 'undefined'\n}\n\nconst getElement = obj => {\n  // it's a jQuery object or a node element\n  if (isElement(obj)) {\n    return obj.jquery ? obj[0] : obj\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj)\n  }\n\n  return null\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  for (const property of Object.keys(configTypes)) {\n    const expectedTypes = configTypes[property]\n    const value = config[property]\n    const valueType = value && isElement(value) ? 'element' : toType(value)\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(\n        `${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n      )\n    }\n  }\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible'\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  const { jQuery } = window\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return 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 = callback => {\n  if (typeof callback === 'function') {\n    callback()\n  }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\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  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0]\n  }\n\n  const listLength = list.length\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  getElementFromSelector,\n  getjQuery,\n  getNextActiveElement,\n  getSelectorFromElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\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}\nconst customEventsRegex = /^(mouseenter|mouseleave)/i\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 getUidEvent(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(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    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 (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          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    // To please ESLint\n    return null\n  }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events)\n\n  for (const uidEvent of uidEventList) {\n    const event = events[uidEvent]\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event\n    }\n  }\n\n  return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string'\n  const originalHandler = delegation ? delegationFn : handler\n  let typeEvent = getTypeEvent(originalTypeEvent)\n  const isNative = nativeEvents.has(typeEvent)\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  if (!handler) {\n    handler = delegationFn\n    delegationFn = null\n  }\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 (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = 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    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn)\n    } else {\n      handler = wrapFn(handler)\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n  const events = getEvent(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff\n\n    return\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = delegation ?\n    bootstrapDelegationHandler(element, handler, delegationFn) :\n    bootstrapHandler(element, handler)\n\n  fn.delegationSelector = delegation ? handler : null\n  fn.originalHandler = originalHandler\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const handlerKey of Object.keys(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey]\n      removeHandler(element, events, typeEvent, event.originalHandler, 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, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false)\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getEvent(element)\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? 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    const storeElementEvent = events[typeEvent] || {}\n    for (const keyHandlers of Object.keys(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers]\n        removeHandler(element, events, typeEvent, event.originalHandler, 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    const isNative = nativeEvents.has(typeEvent)\n\n    let jQueryEvent\n    let bubbles = true\n    let nativeDispatch = true\n    let defaultPrevented = false\n    let evt = null\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    if (isNative) {\n      evt = document.createEvent('HTMLEvents')\n      evt.initEvent(typeEvent, bubbles, true)\n    } else {\n      evt = new CustomEvent(event, { bubbles, cancelable: true })\n    }\n\n    // merge custom information in our event\n    if (typeof args !== 'undefined') {\n      for (const key of Object.keys(args)) {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key]\n          }\n        })\n      }\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault()\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt)\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault()\n    }\n\n    return evt\n  }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): 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.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\nimport {\n  executeAfterTransition,\n  getElement\n} from './util/index'\nimport EventHandler from './dom/event-handler'\n\n/**\n * Constants\n */\n\nconst VERSION = '5.1.3'\n\n/**\n * Class definition\n */\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element)\n\n    if (!element) {\n      return\n    }\n\n    this._element = element\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  // 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 NAME() {\n    throw new Error('You have to implement the static method \"NAME\" for each component!')\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\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nexport {\n  enableDismissTrigger\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this)\n\n      if (config === 'toggle') {\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true\n  }\n\n  if (val === 'false') {\n    return false\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val)\n  }\n\n  if (val === '' || val === 'null') {\n    return null\n  }\n\n  return val\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect()\n\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    }\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    }\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible } from '../util/index'\n\n/**\n * Constants\n */\n\nconst NODE_TEXT = 3\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\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor)\n      }\n\n      ancestor = ancestor.parentNode\n    }\n\n    return parents\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  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\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, typeCheckConfig } from './index'\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  leftCallback: null,\n  rightCallback: null,\n  endCallback: null\n}\n\nconst DefaultType = {\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  endCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe {\n  constructor(element, config) {\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  // 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  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\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.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  getNextActiveElement,\n  isRTL,\n  isVisible,\n  reflow,\n  triggerTransitionEnd,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst Default = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n}\n\nconst DefaultType = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._items = null\n    this._interval = null\n    this._activeElement = null\n    this._isPaused = false\n    this._isSliding = false\n    this.touchTimeout = null\n    this._swipeHelper = null\n\n    this._config = this._getConfig(config)\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this._slide(ORDER_NEXT)\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV)\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element)\n      this.cycle(true)\n    }\n\n    clearInterval(this._interval)\n    this._interval = null\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval()\n\n      this._interval = setInterval(\n        (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n        this._config.interval\n      )\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeIndex = this._getItemIndex(this._activeElement)\n\n    if (index > this._items.length - 1 || index < 0) {\n      return\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n      return\n    }\n\n    if (activeIndex === index) {\n      this.pause()\n      this.cycle()\n      return\n    }\n\n    const order = index > activeIndex ?\n      ORDER_NEXT :\n      ORDER_PREV\n\n    this._slide(order, this._items[index])\n  }\n\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n    }\n\n    if (this._config.touch && Swipe.isSupported()) {\n      this._addTouchEventListeners()\n    }\n  }\n\n  _addTouchEventListeners() {\n    for (const itemImg of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n      EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault())\n    }\n\n    const endCallBack = () => {\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n\n        this.pause()\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout)\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n      }\n    }\n\n    const swipeConfig = {\n      leftCallback: () => this._slide(DIRECTION_LEFT),\n      rightCallback: () => this._slide(DIRECTION_RIGHT),\n      endCallback: endCallBack\n    }\n\n    this._swipeHelper = new Swipe(this._element, swipeConfig)\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._slide(direction)\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ?\n      SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n      []\n\n    return this._items.indexOf(element)\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap)\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget)\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    })\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n      activeIndicator.removeAttribute('aria-current')\n\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n      for (const indicator of indicators) {\n        if (Number.parseInt(indicator.getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicator.classList.add(CLASS_NAME_ACTIVE)\n          indicator.setAttribute('aria-current', 'true')\n          break\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n    if (!element) {\n      return\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n      this._config.interval = elementInterval\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder)\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const activeElementIndex = this._getItemIndex(activeElement)\n    const nextElement = element || this._getItemByOrder(order, activeElement)\n\n    const nextElementIndex = this._getItemIndex(nextElement)\n    const isCycling = Boolean(this._interval)\n\n    const isNext = order === ORDER_NEXT\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n    const eventDirectionName = this._orderToDirection(order)\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n      this._isSliding = false\n      return\n    }\n\n    if (this._isSliding) {\n      return\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return\n    }\n\n    this._isSliding = true\n\n    if (isCycling) {\n      this.pause()\n    }\n\n    this._setActiveIndicatorElement(nextElement)\n    this._activeElement = nextElement\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n    }\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName)\n\n      reflow(nextElement)\n\n      activeElement.classList.add(directionalClassName)\n      nextElement.classList.add(directionalClassName)\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName)\n        nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n        activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n        this._isSliding = false\n\n        setTimeout(triggerSlidEvent, 0)\n      }\n\n      this._queueCallback(completeCallBack, activeElement, true)\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE)\n      nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n      this._isSliding = false\n      triggerSlidEvent()\n    }\n\n    if (isCycling) {\n      this.cycle()\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n  }\n\n  // Static\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config)\n\n    let { _config } = data\n    if (typeof config === 'object') {\n      _config = {\n        ..._config,\n        ...config\n      }\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide\n\n    if (typeof config === 'number') {\n      data.to(config)\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`)\n      }\n\n      data[action]()\n    } else if (_config.interval && _config.ride) {\n      data.pause()\n      data.cycle()\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config)\n    })\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this)\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return\n    }\n\n    const config = {\n      ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    }\n    const slideIndex = this.getAttribute('data-bs-slide-to')\n\n    if (slideIndex) {\n      config.interval = false\n    }\n\n    Carousel.carouselInterface(target, config)\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex)\n    }\n\n    event.preventDefault()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n  for (const carousel of carousels) {\n    Carousel.carouselInterface(carousel, Carousel.getInstance(carousel))\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getSelectorFromElement,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  toggle: true,\n  parent: null\n}\n\nconst DefaultType = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._isTransitioning = false\n    this._config = this._getConfig(config)\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElem => foundElem === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const elem = getElementFromSelector(trigger)\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(elem => !children.includes(elem))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const elem of triggerArray) {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED)\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED)\n      }\n\n      elem.setAttribute('aria-expanded', isOpen)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {}\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  const selector = getSelectorFromElement(this)\n  const selectorElements = SelectorEngine.find(selector)\n\n  for (const element of selectorElements) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getElementFromSelector,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n}\n\nconst DefaultType = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n}\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._popper = null\n    this._config = this._getConfig(config)\n    this._menu = this._getMenuElement()\n    this._inNavbar = this._detectNavbar()\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  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element)\n    // Totally disable Popper for Dropdowns in Navbar\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n    } else {\n      this._createPopper(parent)\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const elem of [].concat(...document.body.children)) {\n        EventHandler.on(elem, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus()\n    this._element.setAttribute('aria-expanded', true)\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    super.dispose()\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar()\n    if (this._popper) {\n      this._popper.update()\n    }\n  }\n\n  // Private\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const elem of [].concat(...document.body.children)) {\n        EventHandler.off(elem, 'mouseover', noop)\n      }\n    }\n\n    if (this._popper) {\n      this._popper.destroy()\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'popper')\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = {\n      ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    const popperConfig = this._getPopperConfig()\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT\n    }\n\n    // We need to trim the value because custom properties can also include spaces\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      },\n      {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }\n\n    // Disable Popper if we have a static display\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }]\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _selectMenuItem({ key, target }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(el => isVisible(el))\n\n    if (!items.length) {\n      return\n    }\n\n    // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY))) {\n      return\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const toggle of toggles) {\n      const context = Dropdown.getInstance(toggle)\n      if (!context || context._config.autoClose === false) {\n        continue\n      }\n\n      if (!context._isShown()) {\n        continue\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      }\n\n      if (event) {\n        const composedPath = event.composedPath()\n        const isMenuTarget = composedPath.includes(context._menu)\n        if (\n          composedPath.includes(context._element) ||\n          (context._config.autoClose === 'inside' && !isMenuTarget) ||\n          (context._config.autoClose === 'outside' && isMenuTarget)\n        ) {\n          continue\n        }\n\n        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n        if (context._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event\n        }\n      }\n\n      context._completeHide(relatedTarget)\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ?\n      event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n      ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n        event.target.closest(SELECTOR_MENU))) :\n      !REGEXP_KEYDOWN.test(event.key)) {\n      return\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n    if (!isActive && event.key === ESCAPE_KEY) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n    const instance = Dropdown.getOrCreateInstance(getToggleButton)\n\n    if (event.key === ESCAPE_KEY) {\n      instance.hide()\n      return\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show()\n      }\n\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Dropdown.getOrCreateInstance(this).toggle()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\nimport { isElement } from './index'\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body\n  }\n\n  // Public\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth\n    return Math.abs(window.innerWidth - documentWidth)\n  }\n\n  hide() {\n    const width = this.getWidth()\n    this._disableOverFlow()\n    // give padding to element to balance the hidden scrollbar width\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width)\n    // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow')\n    this._resetElementAttributes(this._element, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0\n  }\n\n  // Private\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow')\n    this._element.style.overflow = 'hidden'\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth()\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return\n      }\n\n      this._saveInitialAttribute(element, styleProp)\n      const calculatedValue = window.getComputedStyle(element)[styleProp]\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp]\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue)\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp)\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp)\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp)\n        element.style[styleProp] = value\n      }\n    }\n\n    this._applyManipulationCallback(selector, manipulationCallBack)\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector)\n    } else {\n      for (const sel of SelectorEngine.find(selector, this._element)) {\n        callBack(sel)\n      }\n    }\n  }\n}\n\nexport default ScrollBarHelper\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow, typeCheckConfig } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n  className: 'modal-backdrop',\n  isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body', // give the choice to place backdrop under different elements\n  clickCallback: null\n}\n\nconst DefaultType = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isAppended = false\n    this._element = null\n  }\n\n  // Public\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._append()\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement())\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      execute(callback)\n    })\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback)\n      return\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n    this._emulateAnimation(() => {\n      this.dispose()\n      execute(callback)\n    })\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n    this._element.remove()\n    this._isAppended = false\n  }\n\n  // Private\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div')\n      backdrop.className = this._config.className\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE)\n      }\n\n      this._element = backdrop\n    }\n\n    return this._element\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n\n    // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n    config.rootElement = getElement(config.rootElement)\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return\n    }\n\n    this._config.rootElement.append(this._getElement())\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback)\n    })\n\n    this._isAppended = true\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n  }\n}\n\nexport default Backdrop\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport { typeCheckConfig } from './index'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n  trapElement: null, // The element to trap focus inside of\n  autofocus: true\n}\n\nconst DefaultType = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config)\n    this._isActive = false\n    this._lastTabNavDirection = null\n  }\n\n  // Public\n  activate() {\n    const { trapElement, autofocus } = this._config\n\n    if (this._isActive) {\n      return\n    }\n\n    if (autofocus) {\n      trapElement.focus()\n    }\n\n    EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n    EventHandler.on(document, EVENT_FOCUSIN, event => this._handleFocusin(event))\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event))\n\n    this._isActive = true\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return\n    }\n\n    this._isActive = false\n    EventHandler.off(document, EVENT_KEY)\n  }\n\n  // Private\n  _handleFocusin(event) {\n    const { target } = event\n    const { trapElement } = this._config\n\n    if (target === document || target === trapElement || trapElement.contains(target)) {\n      return\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement)\n\n    if (elements.length === 0) {\n      trapElement.focus()\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus()\n    } else {\n      elements[0].focus()\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n}\n\nexport default FocusTrap\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isRTL,\n  isVisible,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport ScrollBarHelper from './util/scrollbar'\nimport BaseComponent from './base-component'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst OPEN_SELECTOR = '.modal.show'\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._isShown = false\n    this._ignoreBackdropClick = false\n    this._isTransitioning = false\n    this._scrollBar = new ScrollBarHelper()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget\n    })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true\n    }\n\n    this._scrollBar.hide()\n\n    document.body.classList.add(CLASS_NAME_OPEN)\n\n    this._adjustDialog()\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true\n        }\n      })\n    })\n\n    this._showBackdrop(() => this._showElement(relatedTarget))\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = false\n    const isAnimated = this._isAnimated()\n\n    if (isAnimated) {\n      this._isTransitioning = true\n    }\n\n    this._setEscapeEvent()\n    this._setResizeEvent()\n\n    this._focustrap.deactivate()\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated)\n  }\n\n  dispose() {\n    for (const htmlElement of [window, this._dialog]) {\n      EventHandler.off(htmlElement, EVENT_KEY)\n    }\n\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  handleUpdate() {\n    this._adjustDialog()\n  }\n\n  // Private\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop), // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated()\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element)\n    }\n\n    this._element.style.display = 'block'\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.scrollTop = 0\n\n    if (modalBody) {\n      modalBody.scrollTop = 0\n    }\n\n    if (isAnimated) {\n      reflow(this._element)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate()\n      }\n\n      this._isTransitioning = false\n      EventHandler.trigger(this._element, EVENT_SHOWN, {\n        relatedTarget\n      })\n    }\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated)\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          event.preventDefault()\n          this.hide()\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n          this._triggerBackdropTransition()\n        }\n      })\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n    } else {\n      EventHandler.off(window, EVENT_RESIZE)\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none'\n    this._element.setAttribute('aria-hidden', true)\n    this._element.removeAttribute('aria-modal')\n    this._element.removeAttribute('role')\n    this._isTransitioning = false\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN)\n      this._resetAdjustments()\n      this._scrollBar.reset()\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    })\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false\n        return\n      }\n\n      if (event.target !== event.currentTarget) {\n        return\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide()\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n      }\n    })\n\n    this._backdrop.show(callback)\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const { classList, scrollHeight, style } = this._element\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight\n\n    // return if the following background transition hasn't yet completed\n    if ((!isModalOverflowing && style.overflowY === 'hidden') || classList.contains(CLASS_NAME_STATIC)) {\n      return\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden'\n    }\n\n    classList.add(CLASS_NAME_STATIC)\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC)\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = ''\n        }, this._dialog)\n      }\n    }, this._dialog)\n\n    this._element.focus()\n  }\n\n  /**\n   * The following methods are used to handle overflowing modals\n   */\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n    const scrollbarWidth = this._scrollBar.getWidth()\n    const isBodyOverflowing = scrollbarWidth > 0\n\n    if ((!isBodyOverflowing && isModalOverflowing && !isRTL()) || (isBodyOverflowing && !isModalOverflowing && isRTL())) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`\n    }\n\n    if ((isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!isBodyOverflowing && isModalOverflowing && isRTL())) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = ''\n    this._element.style.paddingRight = ''\n  }\n\n  // Static\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](relatedTarget)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus()\n      }\n    })\n  })\n\n  // avoid conflict when clicking moddal toggler while another one is open\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (allReadyOpen) {\n    Modal.getInstance(allReadyOpen).hide()\n  }\n\n  const data = Modal.getOrCreateInstance(target)\n\n  data.toggle(this)\n})\n\nenableDismissTrigger(Modal)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  isVisible,\n  typeCheckConfig\n} from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._isShown = false\n    this._backdrop = this._initializeBackDrop()\n    this._focustrap = this._initializeFocusTrap()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  // Public\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isShown = true\n    this._element.style.visibility = 'visible'\n\n    this._backdrop.show()\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide()\n    }\n\n    this._element.removeAttribute('aria-hidden')\n    this._element.setAttribute('aria-modal', true)\n    this._element.setAttribute('role', 'dialog')\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate()\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n    }\n\n    this._queueCallback(completeCallBack, this._element, true)\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._focustrap.deactivate()\n    this._element.blur()\n    this._isShown = false\n    this._element.classList.remove(CLASS_NAME_SHOW)\n    this._backdrop.hide()\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true)\n      this._element.removeAttribute('aria-modal')\n      this._element.removeAttribute('role')\n      this._element.style.visibility = 'hidden'\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset()\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._queueCallback(completeCallback, this._element, true)\n  }\n\n  dispose() {\n    this._backdrop.dispose()\n    this._focustrap.deactivate()\n    super.dispose()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    }\n    typeCheckConfig(NAME, config, DefaultType)\n    return config\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    })\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    })\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide()\n      }\n    })\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config](this)\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus()\n    }\n  })\n\n  // avoid conflict when clicking a toggler of an offcanvas, while another is open\n  const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n  if (alreadyOpen && alreadyOpen !== target) {\n    Offcanvas.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const el of SelectorEngine.find(OPEN_SELECTOR)) {\n    Offcanvas.getOrCreateInstance(el).show()\n  }\n})\n\nenableDismissTrigger(Offcanvas)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n\n      continue\n    }\n\n    const attributeList = [].concat(...element.attributes)\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || [])\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\nimport {\n  defineJQueryPlugin,\n  findShadowRoot,\n  getElement,\n  getUID,\n  isElement,\n  isRTL,\n  noop,\n  typeCheckConfig\n} from './util/index'\nimport { DefaultAllowlist, sanitizeHtml } from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n              '<div class=\"tooltip-arrow\"></div>' +\n              '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n}\n\nconst DefaultType = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n    }\n\n    super(element)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._hoverState = ''\n    this._activeTrigger = {}\n    this._popper = null\n\n    // Protected\n    this._config = this._getConfig(config)\n    this.tip = null\n\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event)\n\n      context._activeTrigger.click = !context._activeTrigger.click\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context)\n      } else {\n        context._leave(null, context)\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n        this._leave(null, this)\n        return\n      }\n\n      this._enter(null, this)\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this.tip) {\n      this.tip.remove()\n    }\n\n    this._disposePopper()\n    super.dispose()\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = shadowRoot === null ?\n      this._element.ownerDocument.documentElement.contains(this._element) :\n      shadowRoot.contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return\n    }\n\n    // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n    // This will be removed later in favor of a `setContent` method\n    if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n      this._disposePopper()\n      this.tip.remove()\n      this.tip = null\n    }\n\n    const tip = this.getTipElement()\n    const tipId = getUID(this.constructor.NAME)\n\n    tip.setAttribute('id', tipId)\n    this._element.setAttribute('aria-describedby', tipId)\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    const placement = typeof this._config.placement === 'function' ?\n      this._config.placement.call(this, tip, this._element) :\n      this._config.placement\n\n    const attachment = this._getAttachment(placement)\n    this._addAttachmentClass(attachment)\n\n    const { container } = this._config\n    Data.set(tip, this.constructor.DATA_KEY, this)\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n    }\n\n    if (this._popper) {\n      this._popper.update()\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass)\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '))\n    }\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState\n\n      this._hoverState = null\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this)\n      }\n    }\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n  }\n\n  hide() {\n    if (!this._popper) {\n      return\n    }\n\n    const tip = this.getTipElement()\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove()\n      }\n\n      this._cleanTipClass()\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n      this._disposePopper()\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of [].concat(...document.body.children)) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(complete, this.tip, isAnimated)\n    this._hoverState = ''\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update()\n    }\n  }\n\n  // Protected\n  isWithContent() {\n    return Boolean(this.getTitle())\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip\n    }\n\n    const element = document.createElement('div')\n    element.innerHTML = this._config.template\n\n    const tip = element.children[0]\n    this.setContent(tip)\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n\n    this.tip = tip\n    return this.tip\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER)\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!content && templateElement) {\n      templateElement.remove()\n      return\n    }\n\n    // we use append for html objects to maintain js events\n    this.setElementContent(templateElement, content)\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return\n    }\n\n    if (isElement(content)) {\n      content = getElement(content)\n\n      // content is a DOM node or a jQuery\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = ''\n          element.append(content)\n        }\n      } else {\n        element.textContent = content.textContent\n      }\n\n      return\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn)\n      }\n\n      element.innerHTML = content // lgtm [js/xss-through-dom]\n    } else {\n      element.textContent = content\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title\n\n    return this._resolvePossibleFunction(title)\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end'\n    }\n\n    if (attachment === 'left') {\n      return 'start'\n    }\n\n    return attachment\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10))\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element)\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [\n        {\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        },\n        {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        },\n        {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        },\n        {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        },\n        {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }\n      ],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data)\n        }\n      }\n    }\n\n    return {\n      ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    }\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`)\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()]\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event))\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSEENTER :\n          this.constructor.Event.FOCUSIN\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.Event.MOUSELEAVE :\n          this.constructor.Event.FOCUSOUT\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event))\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event))\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._config.selector) {\n      this._config = {\n        ...this._config,\n        trigger: 'manual',\n        selector: ''\n      }\n    } else {\n      this._fixTitle()\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '')\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title)\n      }\n\n      this._element.setAttribute('title', '')\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = true\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_SHOW\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show()\n      }\n    }, context._config.delay.show)\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context)\n\n    if (event) {\n      context._activeTrigger[\n        event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n      ] = context._element.contains(event.relatedTarget)\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return\n    }\n\n    clearTimeout(context._timeout)\n\n    context._hoverState = HOVER_STATE_OUT\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide()\n      return\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide()\n      }\n    }, context._config.delay.hide)\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttr of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    config = {\n      ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString()\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key]\n      }\n    }\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement()\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g')\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex)\n    if (tabClass !== null && tabClass.length > 0) {\n      for (const tClass of tabClass.map(token => token.trim())) {\n        tip.classList.remove(tClass)\n      }\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const { state } = popperData\n\n    if (!state) {\n      return\n    }\n\n    this.tip = state.elements.popper\n    this._cleanTipClass()\n    this._addAttachmentClass(this._getAttachment(state.placement))\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy()\n      this._popper = null\n    }\n  }\n\n  // Static\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Tooltip from './tooltip'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\nconst Default = {\n  ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n              '<div class=\"popover-arrow\"></div>' +\n              '<h3 class=\"popover-header\"></h3>' +\n              '<div class=\"popover-body\"></div>' +\n            '</div>'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n}\n\nconst Event = {\n  HIDE: `hide${EVENT_KEY}`,\n  HIDDEN: `hidden${EVENT_KEY}`,\n  SHOW: `show${EVENT_KEY}`,\n  SHOWN: `shown${EVENT_KEY}`,\n  INSERTED: `inserted${EVENT_KEY}`,\n  CLICK: `click${EVENT_KEY}`,\n  FOCUSIN: `focusin${EVENT_KEY}`,\n  FOCUSOUT: `focusout${EVENT_KEY}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  static get Event() {\n    return Event\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  // Overrides\n  isWithContent() {\n    return this.getTitle() || this._getContent()\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE)\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT)\n  }\n\n  // Private\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElement,\n  getSelectorFromElement,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\nconst Default = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n}\n\nconst DefaultType = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n    this._config = this._getConfig(config)\n    this._offsets = []\n    this._targets = []\n    this._activeTarget = null\n    this._scrollHeight = 0\n\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n    this.refresh()\n    this._process()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ?\n      METHOD_OFFSET :\n      METHOD_POSITION\n\n    const offsetMethod = this._config.method === 'auto' ?\n      autoMethod :\n      this._config.method\n\n    const offsetBase = offsetMethod === METHOD_POSITION ?\n      this._getScrollTop() :\n      0\n\n    this._offsets = []\n    this._targets = []\n    this._scrollHeight = this._getScrollHeight()\n\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .map(element => {\n        const targetSelector = getSelectorFromElement(element)\n        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect()\n          if (targetBCR.width || targetBCR.height) {\n            return [\n              Manipulator[offsetMethod](target).top + offsetBase,\n              targetSelector\n            ]\n          }\n        }\n\n        return null\n      })\n        .filter(item => item)\n        .sort((a, b) => a[0] - b[0])\n\n    for (const item of targets) {\n      this._offsets.push(item[0])\n      this._targets.push(item[1])\n    }\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY)\n    super.dispose()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    config.target = getElement(config.target) || document.documentElement\n\n    typeCheckConfig(NAME, config, DefaultType)\n\n    return config\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ?\n      this._scrollElement.pageYOffset :\n      this._scrollElement.scrollTop\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(\n      document.body.scrollHeight,\n      document.documentElement.scrollHeight\n    )\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ?\n      window.innerHeight :\n      this._scrollElement.getBoundingClientRect().height\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset\n    const scrollHeight = this._getScrollHeight()\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh()\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1]\n\n      if (this._activeTarget !== target) {\n        this._activate(target)\n      }\n\n      return\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null\n      this._clear()\n      return\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] &&\n          scrollTop >= this._offsets[i] &&\n          (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i])\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target\n\n    this._clear()\n\n    const queries = SELECTOR_LINK_ITEMS.split(',')\n      .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target)\n\n    link.classList.add(CLASS_NAME_ACTIVE)\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n        .classList.add(CLASS_NAME_ACTIVE)\n    } else {\n      for (const listGroup of SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)) {\n        // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n        for (const item of SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`)) {\n          item.classList.add(CLASS_NAME_ACTIVE)\n        }\n\n        // Handle special case when .nav-link is inside .nav-item\n        for (const navItem of SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS)) {\n          for (const item of SelectorEngine.children(navItem, SELECTOR_NAV_LINKS)) {\n            item.classList.add(CLASS_NAME_ACTIVE)\n          }\n        }\n      }\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    })\n  }\n\n  _clear() {\n    const activeNodes = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target)\n      .filter(node => node.classList.contains(CLASS_NAME_ACTIVE))\n\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    new ScrollSpy(spy) // eslint-disable-line no-new\n  }\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(ScrollSpy)\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  getElementFromSelector,\n  isDisabled,\n  reflow\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active'\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    if ((this._element.parentNode &&\n      this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n      this._element.classList.contains(CLASS_NAME_ACTIVE))) {\n      return\n    }\n\n    let previous\n    const target = getElementFromSelector(this._element)\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP)\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE\n      previous = SelectorEngine.find(itemSelector, listElement)\n      previous = previous[previous.length - 1]\n    }\n\n    const hideEvent = previous ?\n      EventHandler.trigger(previous, EVENT_HIDE, { relatedTarget: this._element }) :\n      null\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n      relatedTarget: previous\n    })\n\n    if (showEvent.defaultPrevented || (hideEvent !== null && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._activate(this._element, listElement)\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN, { relatedTarget: this._element })\n      EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget: previous })\n    }\n\n    if (target) {\n      this._activate(target, target.parentNode, complete)\n    } else {\n      complete()\n    }\n  }\n\n  // Private\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ?\n      SelectorEngine.find(SELECTOR_ACTIVE_UL, container) :\n      SelectorEngine.children(container, SELECTOR_ACTIVE)\n\n    const active = activeElements[0]\n    const isTransitioning = callback && (active && active.classList.contains(CLASS_NAME_FADE))\n\n    const complete = () => this._transitionComplete(element, active, callback)\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW)\n      this._queueCallback(complete, element, true)\n    } else {\n      complete()\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode)\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE)\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false)\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true)\n    }\n\n    reflow(element)\n\n    if (element.classList.contains(CLASS_NAME_FADE)) {\n      element.classList.add(CLASS_NAME_SHOW)\n    }\n\n    let parent = element.parentNode\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN)\n\n      if (dropdownElement) {\n        for (const dropdown of SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement)) {\n          dropdown.classList.add(CLASS_NAME_ACTIVE)\n        }\n      }\n\n      element.setAttribute('aria-expanded', true)\n    }\n\n    if (callback) {\n      callback()\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config]()\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  const data = Tab.getOrCreateInstance(this)\n  data.show()\n})\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  defineJQueryPlugin,\n  reflow,\n  typeCheckConfig\n} from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element)\n\n    this._config = this._getConfig(config)\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get Default() {\n    return Default\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      this._element.classList.remove(CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _getConfig(config) {\n    config = {\n      ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    }\n\n    typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n    return config\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting\n        break\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting\n        break\n      default:\n        break\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config)\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`)\n        }\n\n        data[config](this)\n      }\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): index.umd.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Alert from './src/alert'\nimport Button from './src/button'\nimport Carousel from './src/carousel'\nimport Collapse from './src/collapse'\nimport Dropdown from './src/dropdown'\nimport Modal from './src/modal'\nimport Offcanvas from './src/offcanvas'\nimport Popover from './src/popover'\nimport ScrollSpy from './src/scrollspy'\nimport Tab from './src/tab'\nimport Toast from './src/toast'\nimport Tooltip from './src/tooltip'\n\nexport default {\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Offcanvas,\n  Popover,\n  ScrollSpy,\n  Tab,\n  Toast,\n  Tooltip\n}\n"]}