/*!
 * Bootstrap v5.0.1 (https://getbootstrap.com/)
 * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
 */
! function (t, e) {
  "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = "undefined" != typeof globalThis ? globalThis : t || self).bootstrap = e()
}(this, (function () {
  "use strict";
  const t = {
      find: (t, e = document.documentElement) => [].concat(...Element.prototype.querySelectorAll.call(e, t)),
      findOne: (t, e = document.documentElement) => Element.prototype.querySelector.call(e, t),
      children: (t, e) => [].concat(...t.children).filter(t => t.matches(e)),
      parents(t, e) {
        const i = [];
        let n = t.parentNode;
        for (; n && n.nodeType === Node.ELEMENT_NODE && 3 !== n.nodeType;) n.matches(e) && i.push(n), n = n.parentNode;
        return i
      },
      prev(t, e) {
        let i = t.previousElementSibling;
        for (; i;) {
          if (i.matches(e)) return [i];
          i = i.previousElementSibling
        }
        return []
      },
      next(t, e) {
        let i = t.nextElementSibling;
        for (; i;) {
          if (i.matches(e)) return [i];
          i = i.nextElementSibling
        }
        return []
      }
    },
    e = t => {
      do {
        t += Math.floor(1e6 * Math.random())
      } while (document.getElementById(t));
      return t
    },
    i = t => {
      let e = t.getAttribute("data-bs-target");
      if (!e || "#" === e) {
        let i = t.getAttribute("href");
        if (!i || !i.includes("#") && !i.startsWith(".")) return null;
        i.includes("#") && !i.startsWith("#") && (i = "#" + i.split("#")[1]), e = i && "#" !== i ? i.trim() : null
      }
      return e
    },
    n = t => {
      const e = i(t);
      return e && document.querySelector(e) ? e : null
    },
    s = t => {
      const e = i(t);
      return e ? document.querySelector(e) : null
    },
    o = t => {
      if (!t) return 0;
      let {
        transitionDuration: e,
        transitionDelay: i
      } = window.getComputedStyle(t);
      const n = Number.parseFloat(e),
        s = Number.parseFloat(i);
      return n || s ? (e = e.split(",")[0], i = i.split(",")[0], 1e3 * (Number.parseFloat(e) + Number.parseFloat(i))) : 0
    },
    r = t => {
      t.dispatchEvent(new Event("transitionend"))
    },
    a = t => !(!t || "object" != typeof t) && (void 0 !== t.jquery && (t = t[0]), void 0 !== t.nodeType),
    l = e => a(e) ? e.jquery ? e[0] : e : "string" == typeof e && e.length > 0 ? t.findOne(e) : null,
    c = (t, e) => {
      let i = !1;
      const n = e + 5;
      t.addEventListener("transitionend", (function e() {
        i = !0, t.removeEventListener("transitionend", e)
      })), setTimeout(() => {
        i || r(t)
      }, n)
    },
    d = (t, e, i) => {
      Object.keys(i).forEach(n => {
        const s = i[n],
          o = e[n],
          r = o && a(o) ? "element" : null == (l = o) ? "" + l : {}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();
        var l;
        if (!new RegExp(s).test(r)) throw new TypeError(`${t.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)
      })
    },
    h = t => {
      if (!t) return !1;
      if (t.style && t.parentNode && t.parentNode.style) {
        const e = getComputedStyle(t),
          i = getComputedStyle(t.parentNode);
        return "none" !== e.display && "none" !== i.display && "hidden" !== e.visibility
      }
      return !1
    },
    u = t => !t || t.nodeType !== Node.ELEMENT_NODE || !!t.classList.contains("disabled") || (void 0 !== t.disabled ? t.disabled : t.hasAttribute("disabled") && "false" !== t.getAttribute("disabled")),
    f = t => {
      if (!document.documentElement.attachShadow) return null;
      if ("function" == typeof t.getRootNode) {
        const e = t.getRootNode();
        return e instanceof ShadowRoot ? e : null
      }
      return t instanceof ShadowRoot ? t : t.parentNode ? f(t.parentNode) : null
    },
    p = () => {},
    m = t => t.offsetHeight,
    g = () => {
      const {
        jQuery: t
      } = window;
      return t && !document.body.hasAttribute("data-bs-no-jquery") ? t : null
    },
    _ = () => "rtl" === document.documentElement.dir,
    b = t => {
      var e;
      e = () => {
        const e = g();
        if (e) {
          const i = t.NAME,
            n = e.fn[i];
          e.fn[i] = t.jQueryInterface, e.fn[i].Constructor = t, e.fn[i].noConflict = () => (e.fn[i] = n, t.jQueryInterface)
        }
      }, "loading" === document.readyState ? document.addEventListener("DOMContentLoaded", e) : e()
    },
    v = t => {
      "function" == typeof t && t()
    },
    y = new Map;
  var w = {
    set(t, e, i) {
      y.has(t) || y.set(t, new Map);
      const n = y.get(t);
      n.has(e) || 0 === n.size ? n.set(e, i) : console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)
    },
    get: (t, e) => y.has(t) && y.get(t).get(e) || null,
    remove(t, e) {
      if (!y.has(t)) return;
      const i = y.get(t);
      i.delete(e), 0 === i.size && y.delete(t)
    }
  };
  const E = /[^.]*(?=\..*)\.|.*/,
    T = /\..*/,
    A = /::\d+$/,
    L = {};
  let O = 1;
  const k = {
      mouseenter: "mouseover",
      mouseleave: "mouseout"
    },
    C = /^(mouseenter|mouseleave)/i,
    x = new Set(["click", "dblclick", "mouseup", "mousedown", "contextmenu", "mousewheel", "DOMMouseScroll", "mouseover", "mouseout", "mousemove", "selectstart", "selectend", "keydown", "keypress", "keyup", "orientationchange", "touchstart", "touchmove", "touchend", "touchcancel", "pointerdown", "pointermove", "pointerup", "pointerleave", "pointercancel", "gesturestart", "gesturechange", "gestureend", "focus", "blur", "change", "reset", "select", "submit", "focusin", "focusout", "load", "unload", "beforeunload", "resize", "move", "DOMContentLoaded", "readystatechange", "error", "abort", "scroll"]);

  function D(t, e) {
    return e && `${e}::${O++}` || t.uidEvent || O++
  }

  function N(t) {
    const e = D(t);
    return t.uidEvent = e, L[e] = L[e] || {}, L[e]
  }

  function S(t, e, i = null) {
    const n = Object.keys(t);
    for (let s = 0, o = n.length; s < o; s++) {
      const o = t[n[s]];
      if (o.originalHandler === e && o.delegationSelector === i) return o
    }
    return null
  }

  function I(t, e, i) {
    const n = "string" == typeof e,
      s = n ? i : e;
    let o = M(t);
    return x.has(o) || (o = t), [n, s, o]
  }

  function j(t, e, i, n, s) {
    if ("string" != typeof e || !t) return;
    if (i || (i = n, n = null), C.test(e)) {
      const t = t => function (e) {
        if (!e.relatedTarget || e.relatedTarget !== e.delegateTarget && !e.delegateTarget.contains(e.relatedTarget)) return t.call(this, e)
      };
      n ? n = t(n) : i = t(i)
    }
    const [o, r, a] = I(e, i, n), l = N(t), c = l[a] || (l[a] = {}), d = S(c, r, o ? i : null);
    if (d) return void(d.oneOff = d.oneOff && s);
    const h = D(r, e.replace(E, "")),
      u = o ? function (t, e, i) {
        return function n(s) {
          const o = t.querySelectorAll(e);
          for (let {
              target: r
            } = s; r && r !== this; r = r.parentNode)
            for (let a = o.length; a--;)
              if (o[a] === r) return s.delegateTarget = r, n.oneOff && H.off(t, s.type, e, i), i.apply(r, [s]);
          return null
        }
      }(t, i, n) : function (t, e) {
        return function i(n) {
          return n.delegateTarget = t, i.oneOff && H.off(t, n.type, e), e.apply(t, [n])
        }
      }(t, i);
    u.delegationSelector = o ? i : null, u.originalHandler = r, u.oneOff = s, u.uidEvent = h, c[h] = u, t.addEventListener(a, u, o)
  }

  function P(t, e, i, n, s) {
    const o = S(e[i], n, s);
    o && (t.removeEventListener(i, o, Boolean(s)), delete e[i][o.uidEvent])
  }

  function M(t) {
    return t = t.replace(T, ""), k[t] || t
  }
  const H = {
    on(t, e, i, n) {
      j(t, e, i, n, !1)
    },
    one(t, e, i, n) {
      j(t, e, i, n, !0)
    },
    off(t, e, i, n) {
      if ("string" != typeof e || !t) return;
      const [s, o, r] = I(e, i, n), a = r !== e, l = N(t), c = e.startsWith(".");
      if (void 0 !== o) {
        if (!l || !l[r]) return;
        return void P(t, l, r, o, s ? i : null)
      }
      c && Object.keys(l).forEach(i => {
        ! function (t, e, i, n) {
          const s = e[i] || {};
          Object.keys(s).forEach(o => {
            if (o.includes(n)) {
              const n = s[o];
              P(t, e, i, n.originalHandler, n.delegationSelector)
            }
          })
        }(t, l, i, e.slice(1))
      });
      const d = l[r] || {};
      Object.keys(d).forEach(i => {
        const n = i.replace(A, "");
        if (!a || e.includes(n)) {
          const e = d[i];
          P(t, l, r, e.originalHandler, e.delegationSelector)
        }
      })
    },
    trigger(t, e, i) {
      if ("string" != typeof e || !t) return null;
      const n = g(),
        s = M(e),
        o = e !== s,
        r = x.has(s);
      let a, l = !0,
        c = !0,
        d = !1,
        h = null;
      return o && n && (a = n.Event(e, i), n(t).trigger(a), l = !a.isPropagationStopped(), c = !a.isImmediatePropagationStopped(), d = a.isDefaultPrevented()), r ? (h = document.createEvent("HTMLEvents"), h.initEvent(s, l, !0)) : h = new CustomEvent(e, {
        bubbles: l,
        cancelable: !0
      }), void 0 !== i && Object.keys(i).forEach(t => {
        Object.defineProperty(h, t, {
          get: () => i[t]
        })
      }), d && h.preventDefault(), c && t.dispatchEvent(h), h.defaultPrevented && void 0 !== a && a.preventDefault(), h
    }
  };
  class R {
    constructor(t) {
      (t = l(t)) && (this._element = t, w.set(this._element, this.constructor.DATA_KEY, this))
    }
    dispose() {
      w.remove(this._element, this.constructor.DATA_KEY), H.off(this._element, this.constructor.EVENT_KEY), Object.getOwnPropertyNames(this).forEach(t => {
        this[t] = null
      })
    }
    _queueCallback(t, e, i = !0) {
      if (!i) return void v(t);
      const n = o(e);
      H.one(e, "transitionend", () => v(t)), c(e, n)
    }
    static getInstance(t) {
      return w.get(t, this.DATA_KEY)
    }
    static get VERSION() {
      return "5.0.1"
    }
    static get NAME() {
      throw new Error('You have to implement the static method "NAME", for each component!')
    }
    static get DATA_KEY() {
      return "bs." + this.NAME
    }
    static get EVENT_KEY() {
      return "." + this.DATA_KEY
    }
  }
  class B extends R {
    static get NAME() {
      return "alert"
    }
    close(t) {
      const e = t ? this._getRootElement(t) : this._element,
        i = this._triggerCloseEvent(e);
      null === i || i.defaultPrevented || this._removeElement(e)
    }
    _getRootElement(t) {
      return s(t) || t.closest(".alert")
    }
    _triggerCloseEvent(t) {
      return H.trigger(t, "close.bs.alert")
    }
    _removeElement(t) {
      t.classList.remove("show");
      const e = t.classList.contains("fade");
      this._queueCallback(() => this._destroyElement(t), t, e)
    }
    _destroyElement(t) {
      t.parentNode && t.parentNode.removeChild(t), H.trigger(t, "closed.bs.alert")
    }
    static jQueryInterface(t) {
      return this.each((function () {
        let e = w.get(this, "bs.alert");
        e || (e = new B(this)), "close" === t && e[t](this)
      }))
    }
    static handleDismiss(t) {
      return function (e) {
        e && e.preventDefault(), t.close(this)
      }
    }
  }
  H.on(document, "click.bs.alert.data-api", '[data-bs-dismiss="alert"]', B.handleDismiss(new B)), b(B);
  class W extends R {
    static get NAME() {
      return "button"
    }
    toggle() {
      this._element.setAttribute("aria-pressed", this._element.classList.toggle("active"))
    }
    static jQueryInterface(t) {
      return this.each((function () {
        let e = w.get(this, "bs.button");
        e || (e = new W(this)), "toggle" === t && e[t]()
      }))
    }
  }

  function q(t) {
    return "true" === t || "false" !== t && (t === Number(t).toString() ? Number(t) : "" === t || "null" === t ? null : t)
  }

  function z(t) {
    return t.replace(/[A-Z]/g, t => "-" + t.toLowerCase())
  }
  H.on(document, "click.bs.button.data-api", '[data-bs-toggle="button"]', t => {
    t.preventDefault();
    const e = t.target.closest('[data-bs-toggle="button"]');
    let i = w.get(e, "bs.button");
    i || (i = new W(e)), i.toggle()
  }), b(W);
  const U = {
      setDataAttribute(t, e, i) {
        t.setAttribute("data-bs-" + z(e), i)
      },
      removeDataAttribute(t, e) {
        t.removeAttribute("data-bs-" + z(e))
      },
      getDataAttributes(t) {
        if (!t) return {};
        const e = {};
        return Object.keys(t.dataset).filter(t => t.startsWith("bs")).forEach(i => {
          let n = i.replace(/^bs/, "");
          n = n.charAt(0).toLowerCase() + n.slice(1, n.length), e[n] = q(t.dataset[i])
        }), e
      },
      getDataAttribute: (t, e) => q(t.getAttribute("data-bs-" + z(e))),
      offset(t) {
        const e = t.getBoundingClientRect();
        return {
          top: e.top + document.body.scrollTop,
          left: e.left + document.body.scrollLeft
        }
      },
      position: t => ({
        top: t.offsetTop,
        left: t.offsetLeft
      })
    },
    $ = {
      interval: 5e3,
      keyboard: !0,
      slide: !1,
      pause: "hover",
      wrap: !0,
      touch: !0
    },
    F = {
      interval: "(number|boolean)",
      keyboard: "boolean",
      slide: "(boolean|string)",
      pause: "(string|boolean)",
      wrap: "boolean",
      touch: "boolean"
    },
    V = "next",
    K = "prev",
    X = "left",
    Y = "right";
  class Q extends R {
    constructor(e, i) {
      super(e), this._items = null, this._interval = null, this._activeElement = null, this._isPaused = !1, this._isSliding = !1, this.touchTimeout = null, this.touchStartX = 0, this.touchDeltaX = 0, this._config = this._getConfig(i), this._indicatorsElement = t.findOne(".carousel-indicators", this._element), this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0, this._pointerEvent = Boolean(window.PointerEvent), this._addEventListeners()
    }
    static get Default() {
      return $
    }
    static get NAME() {
      return "carousel"
    }
    next() {
      this._isSliding || this._slide(V)
    }
    nextWhenVisible() {
      !document.hidden && h(this._element) && this.next()
    }
    prev() {
      this._isSliding || this._slide(K)
    }
    pause(e) {
      e || (this._isPaused = !0), t.findOne(".carousel-item-next, .carousel-item-prev", this._element) && (r(this._element), this.cycle(!0)), clearInterval(this._interval), this._interval = null
    }
    cycle(t) {
      t || (this._isPaused = !1), this._interval && (clearInterval(this._interval), this._interval = null), this._config && this._config.interval && !this._isPaused && (this._updateInterval(), this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval))
    }
    to(e) {
      this._activeElement = t.findOne(".active.carousel-item", this._element);
      const i = this._getItemIndex(this._activeElement);
      if (e > this._items.length - 1 || e < 0) return;
      if (this._isSliding) return void H.one(this._element, "slid.bs.carousel", () => this.to(e));
      if (i === e) return this.pause(), void this.cycle();
      const n = e > i ? V : K;
      this._slide(n, this._items[e])
    }
    _getConfig(t) {
      return t = {
        ...$,
        ...t
      }, d("carousel", t, F), t
    }
    _handleSwipe() {
      const t = Math.abs(this.touchDeltaX);
      if (t <= 40) return;
      const e = t / this.touchDeltaX;
      this.touchDeltaX = 0, e && this._slide(e > 0 ? Y : X)
    }
    _addEventListeners() {
      this._config.keyboard && H.on(this._element, "keydown.bs.carousel", t => this._keydown(t)), "hover" === this._config.pause && (H.on(this._element, "mouseenter.bs.carousel", t => this.pause(t)), H.on(this._element, "mouseleave.bs.carousel", t => this.cycle(t))), this._config.touch && this._touchSupported && this._addTouchEventListeners()
    }
    _addTouchEventListeners() {
      const e = t => {
          !this._pointerEvent || "pen" !== t.pointerType && "touch" !== t.pointerType ? this._pointerEvent || (this.touchStartX = t.touches[0].clientX) : this.touchStartX = t.clientX
        },
        i = t => {
          this.touchDeltaX = t.touches && t.touches.length > 1 ? 0 : t.touches[0].clientX - this.touchStartX
        },
        n = t => {
          !this._pointerEvent || "pen" !== t.pointerType && "touch" !== t.pointerType || (this.touchDeltaX = t.clientX - this.touchStartX), this._handleSwipe(), "hover" === this._config.pause && (this.pause(), this.touchTimeout && clearTimeout(this.touchTimeout), this.touchTimeout = setTimeout(t => this.cycle(t), 500 + this._config.interval))
        };
      t.find(".carousel-item img", this._element).forEach(t => {
        H.on(t, "dragstart.bs.carousel", t => t.preventDefault())
      }), this._pointerEvent ? (H.on(this._element, "pointerdown.bs.carousel", t => e(t)), H.on(this._element, "pointerup.bs.carousel", t => n(t)), this._element.classList.add("pointer-event")) : (H.on(this._element, "touchstart.bs.carousel", t => e(t)), H.on(this._element, "touchmove.bs.carousel", t => i(t)), H.on(this._element, "touchend.bs.carousel", t => n(t)))
    }
    _keydown(t) {
      /input|textarea/i.test(t.target.tagName) || ("ArrowLeft" === t.key ? (t.preventDefault(), this._slide(Y)) : "ArrowRight" === t.key && (t.preventDefault(), this._slide(X)))
    }
    _getItemIndex(e) {
      return this._items = e && e.parentNode ? t.find(".carousel-item", e.parentNode) : [], this._items.indexOf(e)
    }
    _getItemByOrder(t, e) {
      const i = t === V,
        n = t === K,
        s = this._getItemIndex(e),
        o = this._items.length - 1;
      if ((n && 0 === s || i && s === o) && !this._config.wrap) return e;
      const r = (s + (n ? -1 : 1)) % this._items.length;
      return -1 === r ? this._items[this._items.length - 1] : this._items[r]
    }
    _triggerSlideEvent(e, i) {
      const n = this._getItemIndex(e),
        s = this._getItemIndex(t.findOne(".active.carousel-item", this._element));
      return H.trigger(this._element, "slide.bs.carousel", {
        relatedTarget: e,
        direction: i,
        from: s,
        to: n
      })
    }
    _setActiveIndicatorElement(e) {
      if (this._indicatorsElement) {
        const i = t.findOne(".active", this._indicatorsElement);
        i.classList.remove("active"), i.removeAttribute("aria-current");
        const n = t.find("[data-bs-target]", this._indicatorsElement);
        for (let t = 0; t < n.length; t++)
          if (Number.parseInt(n[t].getAttribute("data-bs-slide-to"), 10) === this._getItemIndex(e)) {
            n[t].classList.add("active"), n[t].setAttribute("aria-current", "true");
            break
          }
      }
    }
    _updateInterval() {
      const e = this._activeElement || t.findOne(".active.carousel-item", this._element);
      if (!e) return;
      const i = Number.parseInt(e.getAttribute("data-bs-interval"), 10);
      i ? (this._config.defaultInterval = this._config.defaultInterval || this._config.interval, this._config.interval = i) : this._config.interval = this._config.defaultInterval || this._config.interval
    }
    _slide(e, i) {
      const n = this._directionToOrder(e),
        s = t.findOne(".active.carousel-item", this._element),
        o = this._getItemIndex(s),
        r = i || this._getItemByOrder(n, s),
        a = this._getItemIndex(r),
        l = Boolean(this._interval),
        c = n === V,
        d = c ? "carousel-item-start" : "carousel-item-end",
        h = c ? "carousel-item-next" : "carousel-item-prev",
        u = this._orderToDirection(n);
      if (r && r.classList.contains("active")) return void(this._isSliding = !1);
      if (this._triggerSlideEvent(r, u).defaultPrevented) return;
      if (!s || !r) return;
      this._isSliding = !0, l && this.pause(), this._setActiveIndicatorElement(r), this._activeElement = r;
      const f = () => {
        H.trigger(this._element, "slid.bs.carousel", {
          relatedTarget: r,
          direction: u,
          from: o,
          to: a
        })
      };
      if (this._element.classList.contains("slide")) {
        r.classList.add(h), m(r), s.classList.add(d), r.classList.add(d);
        const t = () => {
          r.classList.remove(d, h), r.classList.add("active"), s.classList.remove("active", h, d), this._isSliding = !1, setTimeout(f, 0)
        };
        this._queueCallback(t, s, !0)
      } else s.classList.remove("active"), r.classList.add("active"), this._isSliding = !1, f();
      l && this.cycle()
    }
    _directionToOrder(t) {
      return [Y, X].includes(t) ? _() ? t === X ? K : V : t === X ? V : K : t
    }
    _orderToDirection(t) {
      return [V, K].includes(t) ? _() ? t === K ? X : Y : t === K ? Y : X : t
    }
    static carouselInterface(t, e) {
      let i = w.get(t, "bs.carousel"),
        n = {
          ...$,
          ...U.getDataAttributes(t)
        };
      "object" == typeof e && (n = {
        ...n,
        ...e
      });
      const s = "string" == typeof e ? e : n.slide;
      if (i || (i = new Q(t, n)), "number" == typeof e) i.to(e);
      else if ("string" == typeof s) {
        if (void 0 === i[s]) throw new TypeError(`No method named "${s}"`);
        i[s]()
      } else n.interval && n.ride && (i.pause(), i.cycle())
    }
    static jQueryInterface(t) {
      return this.each((function () {
        Q.carouselInterface(this, t)
      }))
    }
    static dataApiClickHandler(t) {
      const e = s(this);
      if (!e || !e.classList.contains("carousel")) return;
      const i = {
          ...U.getDataAttributes(e),
          ...U.getDataAttributes(this)
        },
        n = this.getAttribute("data-bs-slide-to");
      n && (i.interval = !1), Q.carouselInterface(e, i), n && w.get(e, "bs.carousel").to(n), t.preventDefault()
    }
  }
  H.on(document, "click.bs.carousel.data-api", "[data-bs-slide], [data-bs-slide-to]", Q.dataApiClickHandler), H.on(window, "load.bs.carousel.data-api", () => {
    const e = t.find('[data-bs-ride="carousel"]');
    for (let t = 0, i = e.length; t < i; t++) Q.carouselInterface(e[t], w.get(e[t], "bs.carousel"))
  }), b(Q);
  const G = {
      toggle: !0,
      parent: ""
    },
    Z = {
      toggle: "boolean",
      parent: "(string|element)"
    };
  class J extends R {
    constructor(e, i) {
      super(e), this._isTransitioning = !1, this._config = this._getConfig(i), this._triggerArray = t.find(`[data-bs-toggle="collapse"][href="#${this._element.id}"],[data-bs-toggle="collapse"][data-bs-target="#${this._element.id}"]`);
      const s = t.find('[data-bs-toggle="collapse"]');
      for (let e = 0, i = s.length; e < i; e++) {
        const i = s[e],
          o = n(i),
          r = t.find(o).filter(t => t === this._element);
        null !== o && r.length && (this._selector = o, this._triggerArray.push(i))
      }
      this._parent = this._config.parent ? this._getParent() : null, this._config.parent || this._addAriaAndCollapsedClass(this._element, this._triggerArray), this._config.toggle && this.toggle()
    }
    static get Default() {
      return G
    }
    static get NAME() {
      return "collapse"
    }
    toggle() {
      this._element.classList.contains("show") ? this.hide() : this.show()
    }
    show() {
      if (this._isTransitioning || this._element.classList.contains("show")) return;
      let e, i;
      this._parent && (e = t.find(".show, .collapsing", this._parent).filter(t => "string" == typeof this._config.parent ? t.getAttribute("data-bs-parent") === this._config.parent : t.classList.contains("collapse")), 0 === e.length && (e = null));
      const n = t.findOne(this._selector);
      if (e) {
        const t = e.find(t => n !== t);
        if (i = t ? w.get(t, "bs.collapse") : null, i && i._isTransitioning) return
      }
      if (H.trigger(this._element, "show.bs.collapse").defaultPrevented) return;
      e && e.forEach(t => {
        n !== t && J.collapseInterface(t, "hide"), i || w.set(t, "bs.collapse", null)
      });
      const s = this._getDimension();
      this._element.classList.remove("collapse"), this._element.classList.add("collapsing"), this._element.style[s] = 0, this._triggerArray.length && this._triggerArray.forEach(t => {
        t.classList.remove("collapsed"), t.setAttribute("aria-expanded", !0)
      }), this.setTransitioning(!0);
      const o = "scroll" + (s[0].toUpperCase() + s.slice(1));
      this._queueCallback(() => {
        this._element.classList.remove("collapsing"), this._element.classList.add("collapse", "show"), this._element.style[s] = "", this.setTransitioning(!1), H.trigger(this._element, "shown.bs.collapse")
      }, this._element, !0), this._element.style[s] = this._element[o] + "px"
    }
    hide() {
      if (this._isTransitioning || !this._element.classList.contains("show")) return;
      if (H.trigger(this._element, "hide.bs.collapse").defaultPrevented) return;
      const t = this._getDimension();
      this._element.style[t] = this._element.getBoundingClientRect()[t] + "px", m(this._element), this._element.classList.add("collapsing"), this._element.classList.remove("collapse", "show");
      const e = this._triggerArray.length;
      if (e > 0)
        for (let t = 0; t < e; t++) {
          const e = this._triggerArray[t],
            i = s(e);
          i && !i.classList.contains("show") && (e.classList.add("collapsed"), e.setAttribute("aria-expanded", !1))
        }
      this.setTransitioning(!0), this._element.style[t] = "", this._queueCallback(() => {
        this.setTransitioning(!1), this._element.classList.remove("collapsing"), this._element.classList.add("collapse"), H.trigger(this._element, "hidden.bs.collapse")
      }, this._element, !0)
    }
    setTransitioning(t) {
      this._isTransitioning = t
    }
    _getConfig(t) {
      return (t = {
        ...G,
        ...t
      }).toggle = Boolean(t.toggle), d("collapse", t, Z), t
    }
    _getDimension() {
      return this._element.classList.contains("width") ? "width" : "height"
    }
    _getParent() {
      let {
        parent: e
      } = this._config;
      e = l(e);
      const i = `[data-bs-toggle="collapse"][data-bs-parent="${e}"]`;
      return t.find(i, e).forEach(t => {
        const e = s(t);
        this._addAriaAndCollapsedClass(e, [t])
      }), e
    }
    _addAriaAndCollapsedClass(t, e) {
      if (!t || !e.length) return;
      const i = t.classList.contains("show");
      e.forEach(t => {
        i ? t.classList.remove("collapsed") : t.classList.add("collapsed"), t.setAttribute("aria-expanded", i)
      })
    }
    static collapseInterface(t, e) {
      let i = w.get(t, "bs.collapse");
      const n = {
        ...G,
        ...U.getDataAttributes(t),
        ..."object" == typeof e && e ? e : {}
      };
      if (!i && n.toggle && "string" == typeof e && /show|hide/.test(e) && (n.toggle = !1), i || (i = new J(t, n)), "string" == typeof e) {
        if (void 0 === i[e]) throw new TypeError(`No method named "${e}"`);
        i[e]()
      }
    }
    static jQueryInterface(t) {
      return this.each((function () {
        J.collapseInterface(this, t)
      }))
    }
  }
  H.on(document, "click.bs.collapse.data-api", '[data-bs-toggle="collapse"]', (function (e) {
    ("A" === e.target.tagName || e.delegateTarget && "A" === e.delegateTarget.tagName) && e.preventDefault();
    const i = U.getDataAttributes(this),
      s = n(this);
    t.find(s).forEach(t => {
      const e = w.get(t, "bs.collapse");
      let n;
      e ? (null === e._parent && "string" == typeof i.parent && (e._config.parent = i.parent, e._parent = e._getParent()), n = "toggle") : n = i, J.collapseInterface(t, n)
    })
  })), b(J);
  var tt = "top",
    et = "bottom",
    it = "right",
    nt = "left",
    st = [tt, et, it, nt],
    ot = st.reduce((function (t, e) {
      return t.concat([e + "-start", e + "-end"])
    }), []),
    rt = [].concat(st, ["auto"]).reduce((function (t, e) {
      return t.concat([e, e + "-start", e + "-end"])
    }), []),
    at = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"];

  function lt(t) {
    return t ? (t.nodeName || "").toLowerCase() : null
  }

  function ct(t) {
    if (null == t) return window;
    if ("[object Window]" !== t.toString()) {
      var e = t.ownerDocument;
      return e && e.defaultView || window
    }
    return t
  }

  function dt(t) {
    return t instanceof ct(t).Element || t instanceof Element
  }

  function ht(t) {
    return t instanceof ct(t).HTMLElement || t instanceof HTMLElement
  }

  function ut(t) {
    return "undefined" != typeof ShadowRoot && (t instanceof ct(t).ShadowRoot || t instanceof ShadowRoot)
  }
  var ft = {
    name: "applyStyles",
    enabled: !0,
    phase: "write",
    fn: function (t) {
      var e = t.state;
      Object.keys(e.elements).forEach((function (t) {
        var i = e.styles[t] || {},
          n = e.attributes[t] || {},
          s = e.elements[t];
        ht(s) && lt(s) && (Object.assign(s.style, i), Object.keys(n).forEach((function (t) {
          var e = n[t];
          !1 === e ? s.removeAttribute(t) : s.setAttribute(t, !0 === e ? "" : e)
        })))
      }))
    },
    effect: function (t) {
      var e = t.state,
        i = {
          popper: {
            position: e.options.strategy,
            left: "0",
            top: "0",
            margin: "0"
          },
          arrow: {
            position: "absolute"
          },
          reference: {}
        };
      return Object.assign(e.elements.popper.style, i.popper), e.styles = i, e.elements.arrow && Object.assign(e.elements.arrow.style, i.arrow),
        function () {
          Object.keys(e.elements).forEach((function (t) {
            var n = e.elements[t],
              s = e.attributes[t] || {},
              o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce((function (t, e) {
                return t[e] = "", t
              }), {});
            ht(n) && lt(n) && (Object.assign(n.style, o), Object.keys(s).forEach((function (t) {
              n.removeAttribute(t)
            })))
          }))
        }
    },
    requires: ["computeStyles"]
  };

  function pt(t) {
    return t.split("-")[0]
  }

  function mt(t) {
    var e = t.getBoundingClientRect();
    return {
      width: e.width,
      height: e.height,
      top: e.top,
      right: e.right,
      bottom: e.bottom,
      left: e.left,
      x: e.left,
      y: e.top
    }
  }

  function gt(t) {
    var e = mt(t),
      i = t.offsetWidth,
      n = t.offsetHeight;
    return Math.abs(e.width - i) <= 1 && (i = e.width), Math.abs(e.height - n) <= 1 && (n = e.height), {
      x: t.offsetLeft,
      y: t.offsetTop,
      width: i,
      height: n
    }
  }

  function _t(t, e) {
    var i = e.getRootNode && e.getRootNode();
    if (t.contains(e)) return !0;
    if (i && ut(i)) {
      var n = e;
      do {
        if (n && t.isSameNode(n)) return !0;
        n = n.parentNode || n.host
      } while (n)
    }
    return !1
  }

  function bt(t) {
    return ct(t).getComputedStyle(t)
  }

  function vt(t) {
    return ["table", "td", "th"].indexOf(lt(t)) >= 0
  }

  function yt(t) {
    return ((dt(t) ? t.ownerDocument : t.document) || window.document).documentElement
  }

  function wt(t) {
    return "html" === lt(t) ? t : t.assignedSlot || t.parentNode || (ut(t) ? t.host : null) || yt(t)
  }

  function Et(t) {
    return ht(t) && "fixed" !== bt(t).position ? t.offsetParent : null
  }

  function Tt(t) {
    for (var e = ct(t), i = Et(t); i && vt(i) && "static" === bt(i).position;) i = Et(i);
    return i && ("html" === lt(i) || "body" === lt(i) && "static" === bt(i).position) ? e : i || function (t) {
      var e = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox");
      if (-1 !== navigator.userAgent.indexOf("Trident") && ht(t) && "fixed" === bt(t).position) return null;
      for (var i = wt(t); ht(i) && ["html", "body"].indexOf(lt(i)) < 0;) {
        var n = bt(i);
        if ("none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || -1 !== ["transform", "perspective"].indexOf(n.willChange) || e && "filter" === n.willChange || e && n.filter && "none" !== n.filter) return i;
        i = i.parentNode
      }
      return null
    }(t) || e
  }

  function At(t) {
    return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y"
  }
  var Lt = Math.max,
    Ot = Math.min,
    kt = Math.round;

  function Ct(t, e, i) {
    return Lt(t, Ot(e, i))
  }

  function xt(t) {
    return Object.assign({}, {
      top: 0,
      right: 0,
      bottom: 0,
      left: 0
    }, t)
  }

  function Dt(t, e) {
    return e.reduce((function (e, i) {
      return e[i] = t, e
    }), {})
  }
  var Nt = {
      name: "arrow",
      enabled: !0,
      phase: "main",
      fn: function (t) {
        var e, i = t.state,
          n = t.name,
          s = t.options,
          o = i.elements.arrow,
          r = i.modifiersData.popperOffsets,
          a = pt(i.placement),
          l = At(a),
          c = [nt, it].indexOf(a) >= 0 ? "height" : "width";
        if (o && r) {
          var d = function (t, e) {
              return xt("number" != typeof (t = "function" == typeof t ? t(Object.assign({}, e.rects, {
                placement: e.placement
              })) : t) ? t : Dt(t, st))
            }(s.padding, i),
            h = gt(o),
            u = "y" === l ? tt : nt,
            f = "y" === l ? et : it,
            p = i.rects.reference[c] + i.rects.reference[l] - r[l] - i.rects.popper[c],
            m = r[l] - i.rects.reference[l],
            g = Tt(o),
            _ = g ? "y" === l ? g.clientHeight || 0 : g.clientWidth || 0 : 0,
            b = p / 2 - m / 2,
            v = d[u],
            y = _ - h[c] - d[f],
            w = _ / 2 - h[c] / 2 + b,
            E = Ct(v, w, y),
            T = l;
          i.modifiersData[n] = ((e = {})[T] = E, e.centerOffset = E - w, e)
        }
      },
      effect: function (t) {
        var e = t.state,
          i = t.options.element,
          n = void 0 === i ? "[data-popper-arrow]" : i;
        null != n && ("string" != typeof n || (n = e.elements.popper.querySelector(n))) && _t(e.elements.popper, n) && (e.elements.arrow = n)
      },
      requires: ["popperOffsets"],
      requiresIfExists: ["preventOverflow"]
    },
    St = {
      top: "auto",
      right: "auto",
      bottom: "auto",
      left: "auto"
    };

  function It(t) {
    var e, i = t.popper,
      n = t.popperRect,
      s = t.placement,
      o = t.offsets,
      r = t.position,
      a = t.gpuAcceleration,
      l = t.adaptive,
      c = t.roundOffsets,
      d = !0 === c ? function (t) {
        var e = t.x,
          i = t.y,
          n = window.devicePixelRatio || 1;
        return {
          x: kt(kt(e * n) / n) || 0,
          y: kt(kt(i * n) / n) || 0
        }
      }(o) : "function" == typeof c ? c(o) : o,
      h = d.x,
      u = void 0 === h ? 0 : h,
      f = d.y,
      p = void 0 === f ? 0 : f,
      m = o.hasOwnProperty("x"),
      g = o.hasOwnProperty("y"),
      _ = nt,
      b = tt,
      v = window;
    if (l) {
      var y = Tt(i),
        w = "clientHeight",
        E = "clientWidth";
      y === ct(i) && "static" !== bt(y = yt(i)).position && (w = "scrollHeight", E = "scrollWidth"), y = y, s === tt && (b = et, p -= y[w] - n.height, p *= a ? 1 : -1), s === nt && (_ = it, u -= y[E] - n.width, u *= a ? 1 : -1)
    }
    var T, A = Object.assign({
      position: r
    }, l && St);
    return a ? Object.assign({}, A, ((T = {})[b] = g ? "0" : "", T[_] = m ? "0" : "", T.transform = (v.devicePixelRatio || 1) < 2 ? "translate(" + u + "px, " + p + "px)" : "translate3d(" + u + "px, " + p + "px, 0)", T)) : Object.assign({}, A, ((e = {})[b] = g ? p + "px" : "", e[_] = m ? u + "px" : "", e.transform = "", e))
  }
  var jt = {
      name: "computeStyles",
      enabled: !0,
      phase: "beforeWrite",
      fn: function (t) {
        var e = t.state,
          i = t.options,
          n = i.gpuAcceleration,
          s = void 0 === n || n,
          o = i.adaptive,
          r = void 0 === o || o,
          a = i.roundOffsets,
          l = void 0 === a || a,
          c = {
            placement: pt(e.placement),
            popper: e.elements.popper,
            popperRect: e.rects.popper,
            gpuAcceleration: s
          };
        null != e.modifiersData.popperOffsets && (e.styles.popper = Object.assign({}, e.styles.popper, It(Object.assign({}, c, {
          offsets: e.modifiersData.popperOffsets,
          position: e.options.strategy,
          adaptive: r,
          roundOffsets: l
        })))), null != e.modifiersData.arrow && (e.styles.arrow = Object.assign({}, e.styles.arrow, It(Object.assign({}, c, {
          offsets: e.modifiersData.arrow,
          position: "absolute",
          adaptive: !1,
          roundOffsets: l
        })))), e.attributes.popper = Object.assign({}, e.attributes.popper, {
          "data-popper-placement": e.placement
        })
      },
      data: {}
    },
    Pt = {
      passive: !0
    },
    Mt = {
      name: "eventListeners",
      enabled: !0,
      phase: "write",
      fn: function () {},
      effect: function (t) {
        var e = t.state,
          i = t.instance,
          n = t.options,
          s = n.scroll,
          o = void 0 === s || s,
          r = n.resize,
          a = void 0 === r || r,
          l = ct(e.elements.popper),
          c = [].concat(e.scrollParents.reference, e.scrollParents.popper);
        return o && c.forEach((function (t) {
            t.addEventListener("scroll", i.update, Pt)
          })), a && l.addEventListener("resize", i.update, Pt),
          function () {
            o && c.forEach((function (t) {
              t.removeEventListener("scroll", i.update, Pt)
            })), a && l.removeEventListener("resize", i.update, Pt)
          }
      },
      data: {}
    },
    Ht = {
      left: "right",
      right: "left",
      bottom: "top",
      top: "bottom"
    };

  function Rt(t) {
    return t.replace(/left|right|bottom|top/g, (function (t) {
      return Ht[t]
    }))
  }
  var Bt = {
    start: "end",
    end: "start"
  };

  function Wt(t) {
    return t.replace(/start|end/g, (function (t) {
      return Bt[t]
    }))
  }

  function qt(t) {
    var e = ct(t);
    return {
      scrollLeft: e.pageXOffset,
      scrollTop: e.pageYOffset
    }
  }

  function zt(t) {
    return mt(yt(t)).left + qt(t).scrollLeft
  }

  function Ut(t) {
    var e = bt(t),
      i = e.overflow,
      n = e.overflowX,
      s = e.overflowY;
    return /auto|scroll|overlay|hidden/.test(i + s + n)
  }

  function $t(t, e) {
    var i;
    void 0 === e && (e = []);
    var n = function t(e) {
        return ["html", "body", "#document"].indexOf(lt(e)) >= 0 ? e.ownerDocument.body : ht(e) && Ut(e) ? e : t(wt(e))
      }(t),
      s = n === (null == (i = t.ownerDocument) ? void 0 : i.body),
      o = ct(n),
      r = s ? [o].concat(o.visualViewport || [], Ut(n) ? n : []) : n,
      a = e.concat(r);
    return s ? a : a.concat($t(wt(r)))
  }

  function Ft(t) {
    return Object.assign({}, t, {
      left: t.x,
      top: t.y,
      right: t.x + t.width,
      bottom: t.y + t.height
    })
  }

  function Vt(t, e) {
    return "viewport" === e ? Ft(function (t) {
      var e = ct(t),
        i = yt(t),
        n = e.visualViewport,
        s = i.clientWidth,
        o = i.clientHeight,
        r = 0,
        a = 0;
      return n && (s = n.width, o = n.height, /^((?!chrome|android).)*safari/i.test(navigator.userAgent) || (r = n.offsetLeft, a = n.offsetTop)), {
        width: s,
        height: o,
        x: r + zt(t),
        y: a
      }
    }(t)) : ht(e) ? function (t) {
      var e = mt(t);
      return e.top = e.top + t.clientTop, e.left = e.left + t.clientLeft, e.bottom = e.top + t.clientHeight, e.right = e.left + t.clientWidth, e.width = t.clientWidth, e.height = t.clientHeight, e.x = e.left, e.y = e.top, e
    }(e) : Ft(function (t) {
      var e, i = yt(t),
        n = qt(t),
        s = null == (e = t.ownerDocument) ? void 0 : e.body,
        o = Lt(i.scrollWidth, i.clientWidth, s ? s.scrollWidth : 0, s ? s.clientWidth : 0),
        r = Lt(i.scrollHeight, i.clientHeight, s ? s.scrollHeight : 0, s ? s.clientHeight : 0),
        a = -n.scrollLeft + zt(t),
        l = -n.scrollTop;
      return "rtl" === bt(s || i).direction && (a += Lt(i.clientWidth, s ? s.clientWidth : 0) - o), {
        width: o,
        height: r,
        x: a,
        y: l
      }
    }(yt(t)))
  }

  function Kt(t) {
    return t.split("-")[1]
  }

  function Xt(t) {
    var e, i = t.reference,
      n = t.element,
      s = t.placement,
      o = s ? pt(s) : null,
      r = s ? Kt(s) : null,
      a = i.x + i.width / 2 - n.width / 2,
      l = i.y + i.height / 2 - n.height / 2;
    switch (o) {
      case tt:
        e = {
          x: a,
          y: i.y - n.height
        };
        break;
      case et:
        e = {
          x: a,
          y: i.y + i.height
        };
        break;
      case it:
        e = {
          x: i.x + i.width,
          y: l
        };
        break;
      case nt:
        e = {
          x: i.x - n.width,
          y: l
        };
        break;
      default:
        e = {
          x: i.x,
          y: i.y
        }
    }
    var c = o ? At(o) : null;
    if (null != c) {
      var d = "y" === c ? "height" : "width";
      switch (r) {
        case "start":
          e[c] = e[c] - (i[d] / 2 - n[d] / 2);
          break;
        case "end":
          e[c] = e[c] + (i[d] / 2 - n[d] / 2)
      }
    }
    return e
  }

  function Yt(t, e) {
    void 0 === e && (e = {});
    var i = e,
      n = i.placement,
      s = void 0 === n ? t.placement : n,
      o = i.boundary,
      r = void 0 === o ? "clippingParents" : o,
      a = i.rootBoundary,
      l = void 0 === a ? "viewport" : a,
      c = i.elementContext,
      d = void 0 === c ? "popper" : c,
      h = i.altBoundary,
      u = void 0 !== h && h,
      f = i.padding,
      p = void 0 === f ? 0 : f,
      m = xt("number" != typeof p ? p : Dt(p, st)),
      g = "popper" === d ? "reference" : "popper",
      _ = t.elements.reference,
      b = t.rects.popper,
      v = t.elements[u ? g : d],
      y = function (t, e, i) {
        var n = "clippingParents" === e ? function (t) {
            var e = $t(wt(t)),
              i = ["absolute", "fixed"].indexOf(bt(t).position) >= 0 && ht(t) ? Tt(t) : t;
            return dt(i) ? e.filter((function (t) {
              return dt(t) && _t(t, i) && "body" !== lt(t)
            })) : []
          }(t) : [].concat(e),
          s = [].concat(n, [i]),
          o = s[0],
          r = s.reduce((function (e, i) {
            var n = Vt(t, i);
            return e.top = Lt(n.top, e.top), e.right = Ot(n.right, e.right), e.bottom = Ot(n.bottom, e.bottom), e.left = Lt(n.left, e.left), e
          }), Vt(t, o));
        return r.width = r.right - r.left, r.height = r.bottom - r.top, r.x = r.left, r.y = r.top, r
      }(dt(v) ? v : v.contextElement || yt(t.elements.popper), r, l),
      w = mt(_),
      E = Xt({
        reference: w,
        element: b,
        strategy: "absolute",
        placement: s
      }),
      T = Ft(Object.assign({}, b, E)),
      A = "popper" === d ? T : w,
      L = {
        top: y.top - A.top + m.top,
        bottom: A.bottom - y.bottom + m.bottom,
        left: y.left - A.left + m.left,
        right: A.right - y.right + m.right
      },
      O = t.modifiersData.offset;
    if ("popper" === d && O) {
      var k = O[s];
      Object.keys(L).forEach((function (t) {
        var e = [it, et].indexOf(t) >= 0 ? 1 : -1,
          i = [tt, et].indexOf(t) >= 0 ? "y" : "x";
        L[t] += k[i] * e
      }))
    }
    return L
  }

  function Qt(t, e) {
    void 0 === e && (e = {});
    var i = e,
      n = i.placement,
      s = i.boundary,
      o = i.rootBoundary,
      r = i.padding,
      a = i.flipVariations,
      l = i.allowedAutoPlacements,
      c = void 0 === l ? rt : l,
      d = Kt(n),
      h = d ? a ? ot : ot.filter((function (t) {
        return Kt(t) === d
      })) : st,
      u = h.filter((function (t) {
        return c.indexOf(t) >= 0
      }));
    0 === u.length && (u = h);
    var f = u.reduce((function (e, i) {
      return e[i] = Yt(t, {
        placement: i,
        boundary: s,
        rootBoundary: o,
        padding: r
      })[pt(i)], e
    }), {});
    return Object.keys(f).sort((function (t, e) {
      return f[t] - f[e]
    }))
  }
  var Gt = {
    name: "flip",
    enabled: !0,
    phase: "main",
    fn: function (t) {
      var e = t.state,
        i = t.options,
        n = t.name;
      if (!e.modifiersData[n]._skip) {
        for (var s = i.mainAxis, o = void 0 === s || s, r = i.altAxis, a = void 0 === r || r, l = i.fallbackPlacements, c = i.padding, d = i.boundary, h = i.rootBoundary, u = i.altBoundary, f = i.flipVariations, p = void 0 === f || f, m = i.allowedAutoPlacements, g = e.options.placement, _ = pt(g), b = l || (_ !== g && p ? function (t) {
            if ("auto" === pt(t)) return [];
            var e = Rt(t);
            return [Wt(t), e, Wt(e)]
          }(g) : [Rt(g)]), v = [g].concat(b).reduce((function (t, i) {
            return t.concat("auto" === pt(i) ? Qt(e, {
              placement: i,
              boundary: d,
              rootBoundary: h,
              padding: c,
              flipVariations: p,
              allowedAutoPlacements: m
            }) : i)
          }), []), y = e.rects.reference, w = e.rects.popper, E = new Map, T = !0, A = v[0], L = 0; L < v.length; L++) {
          var O = v[L],
            k = pt(O),
            C = "start" === Kt(O),
            x = [tt, et].indexOf(k) >= 0,
            D = x ? "width" : "height",
            N = Yt(e, {
              placement: O,
              boundary: d,
              rootBoundary: h,
              altBoundary: u,
              padding: c
            }),
            S = x ? C ? it : nt : C ? et : tt;
          y[D] > w[D] && (S = Rt(S));
          var I = Rt(S),
            j = [];
          if (o && j.push(N[k] <= 0), a && j.push(N[S] <= 0, N[I] <= 0), j.every((function (t) {
              return t
            }))) {
            A = O, T = !1;
            break
          }
          E.set(O, j)
        }
        if (T)
          for (var P = function (t) {
              var e = v.find((function (e) {
                var i = E.get(e);
                if (i) return i.slice(0, t).every((function (t) {
                  return t
                }))
              }));
              if (e) return A = e, "break"
            }, M = p ? 3 : 1; M > 0 && "break" !== P(M); M--);
        e.placement !== A && (e.modifiersData[n]._skip = !0, e.placement = A, e.reset = !0)
      }
    },
    requiresIfExists: ["offset"],
    data: {
      _skip: !1
    }
  };

  function Zt(t, e, i) {
    return void 0 === i && (i = {
      x: 0,
      y: 0
    }), {
      top: t.top - e.height - i.y,
      right: t.right - e.width + i.x,
      bottom: t.bottom - e.height + i.y,
      left: t.left - e.width - i.x
    }
  }

  function Jt(t) {
    return [tt, it, et, nt].some((function (e) {
      return t[e] >= 0
    }))
  }
  var te = {
      name: "hide",
      enabled: !0,
      phase: "main",
      requiresIfExists: ["preventOverflow"],
      fn: function (t) {
        var e = t.state,
          i = t.name,
          n = e.rects.reference,
          s = e.rects.popper,
          o = e.modifiersData.preventOverflow,
          r = Yt(e, {
            elementContext: "reference"
          }),
          a = Yt(e, {
            altBoundary: !0
          }),
          l = Zt(r, n),
          c = Zt(a, s, o),
          d = Jt(l),
          h = Jt(c);
        e.modifiersData[i] = {
          referenceClippingOffsets: l,
          popperEscapeOffsets: c,
          isReferenceHidden: d,
          hasPopperEscaped: h
        }, e.attributes.popper = Object.assign({}, e.attributes.popper, {
          "data-popper-reference-hidden": d,
          "data-popper-escaped": h
        })
      }
    },
    ee = {
      name: "offset",
      enabled: !0,
      phase: "main",
      requires: ["popperOffsets"],
      fn: function (t) {
        var e = t.state,
          i = t.options,
          n = t.name,
          s = i.offset,
          o = void 0 === s ? [0, 0] : s,
          r = rt.reduce((function (t, i) {
            return t[i] = function (t, e, i) {
              var n = pt(t),
                s = [nt, tt].indexOf(n) >= 0 ? -1 : 1,
                o = "function" == typeof i ? i(Object.assign({}, e, {
                  placement: t
                })) : i,
                r = o[0],
                a = o[1];
              return r = r || 0, a = (a || 0) * s, [nt, it].indexOf(n) >= 0 ? {
                x: a,
                y: r
              } : {
                x: r,
                y: a
              }
            }(i, e.rects, o), t
          }), {}),
          a = r[e.placement],
          l = a.x,
          c = a.y;
        null != e.modifiersData.popperOffsets && (e.modifiersData.popperOffsets.x += l, e.modifiersData.popperOffsets.y += c), e.modifiersData[n] = r
      }
    },
    ie = {
      name: "popperOffsets",
      enabled: !0,
      phase: "read",
      fn: function (t) {
        var e = t.state,
          i = t.name;
        e.modifiersData[i] = Xt({
          reference: e.rects.reference,
          element: e.rects.popper,
          strategy: "absolute",
          placement: e.placement
        })
      },
      data: {}
    },
    ne = {
      name: "preventOverflow",
      enabled: !0,
      phase: "main",
      fn: function (t) {
        var e = t.state,
          i = t.options,
          n = t.name,
          s = i.mainAxis,
          o = void 0 === s || s,
          r = i.altAxis,
          a = void 0 !== r && r,
          l = i.boundary,
          c = i.rootBoundary,
          d = i.altBoundary,
          h = i.padding,
          u = i.tether,
          f = void 0 === u || u,
          p = i.tetherOffset,
          m = void 0 === p ? 0 : p,
          g = Yt(e, {
            boundary: l,
            rootBoundary: c,
            padding: h,
            altBoundary: d
          }),
          _ = pt(e.placement),
          b = Kt(e.placement),
          v = !b,
          y = At(_),
          w = "x" === y ? "y" : "x",
          E = e.modifiersData.popperOffsets,
          T = e.rects.reference,
          A = e.rects.popper,
          L = "function" == typeof m ? m(Object.assign({}, e.rects, {
            placement: e.placement
          })) : m,
          O = {
            x: 0,
            y: 0
          };
        if (E) {
          if (o || a) {
            var k = "y" === y ? tt : nt,
              C = "y" === y ? et : it,
              x = "y" === y ? "height" : "width",
              D = E[y],
              N = E[y] + g[k],
              S = E[y] - g[C],
              I = f ? -A[x] / 2 : 0,
              j = "start" === b ? T[x] : A[x],
              P = "start" === b ? -A[x] : -T[x],
              M = e.elements.arrow,
              H = f && M ? gt(M) : {
                width: 0,
                height: 0
              },
              R = e.modifiersData["arrow#persistent"] ? e.modifiersData["arrow#persistent"].padding : {
                top: 0,
                right: 0,
                bottom: 0,
                left: 0
              },
              B = R[k],
              W = R[C],
              q = Ct(0, T[x], H[x]),
              z = v ? T[x] / 2 - I - q - B - L : j - q - B - L,
              U = v ? -T[x] / 2 + I + q + W + L : P + q + W + L,
              $ = e.elements.arrow && Tt(e.elements.arrow),
              F = $ ? "y" === y ? $.clientTop || 0 : $.clientLeft || 0 : 0,
              V = e.modifiersData.offset ? e.modifiersData.offset[e.placement][y] : 0,
              K = E[y] + z - V - F,
              X = E[y] + U - V;
            if (o) {
              var Y = Ct(f ? Ot(N, K) : N, D, f ? Lt(S, X) : S);
              E[y] = Y, O[y] = Y - D
            }
            if (a) {
              var Q = "x" === y ? tt : nt,
                G = "x" === y ? et : it,
                Z = E[w],
                J = Z + g[Q],
                st = Z - g[G],
                ot = Ct(f ? Ot(J, K) : J, Z, f ? Lt(st, X) : st);
              E[w] = ot, O[w] = ot - Z
            }
          }
          e.modifiersData[n] = O
        }
      },
      requiresIfExists: ["offset"]
    };

  function se(t, e, i) {
    void 0 === i && (i = !1);
    var n, s, o = yt(e),
      r = mt(t),
      a = ht(e),
      l = {
        scrollLeft: 0,
        scrollTop: 0
      },
      c = {
        x: 0,
        y: 0
      };
    return (a || !a && !i) && (("body" !== lt(e) || Ut(o)) && (l = (n = e) !== ct(n) && ht(n) ? {
      scrollLeft: (s = n).scrollLeft,
      scrollTop: s.scrollTop
    } : qt(n)), ht(e) ? ((c = mt(e)).x += e.clientLeft, c.y += e.clientTop) : o && (c.x = zt(o))), {
      x: r.left + l.scrollLeft - c.x,
      y: r.top + l.scrollTop - c.y,
      width: r.width,
      height: r.height
    }
  }
  var oe = {
    placement: "bottom",
    modifiers: [],
    strategy: "absolute"
  };

  function re() {
    for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i];
    return !e.some((function (t) {
      return !(t && "function" == typeof t.getBoundingClientRect)
    }))
  }

  function ae(t) {
    void 0 === t && (t = {});
    var e = t,
      i = e.defaultModifiers,
      n = void 0 === i ? [] : i,
      s = e.defaultOptions,
      o = void 0 === s ? oe : s;
    return function (t, e, i) {
      void 0 === i && (i = o);
      var s, r, a = {
          placement: "bottom",
          orderedModifiers: [],
          options: Object.assign({}, oe, o),
          modifiersData: {},
          elements: {
            reference: t,
            popper: e
          },
          attributes: {},
          styles: {}
        },
        l = [],
        c = !1,
        d = {
          state: a,
          setOptions: function (i) {
            h(), a.options = Object.assign({}, o, a.options, i), a.scrollParents = {
              reference: dt(t) ? $t(t) : t.contextElement ? $t(t.contextElement) : [],
              popper: $t(e)
            };
            var s, r, c = function (t) {
              var e = function (t) {
                var e = new Map,
                  i = new Set,
                  n = [];
                return t.forEach((function (t) {
                  e.set(t.name, t)
                })), t.forEach((function (t) {
                  i.has(t.name) || function t(s) {
                    i.add(s.name), [].concat(s.requires || [], s.requiresIfExists || []).forEach((function (n) {
                      if (!i.has(n)) {
                        var s = e.get(n);
                        s && t(s)
                      }
                    })), n.push(s)
                  }(t)
                })), n
              }(t);
              return at.reduce((function (t, i) {
                return t.concat(e.filter((function (t) {
                  return t.phase === i
                })))
              }), [])
            }((s = [].concat(n, a.options.modifiers), r = s.reduce((function (t, e) {
              var i = t[e.name];
              return t[e.name] = i ? Object.assign({}, i, e, {
                options: Object.assign({}, i.options, e.options),
                data: Object.assign({}, i.data, e.data)
              }) : e, t
            }), {}), Object.keys(r).map((function (t) {
              return r[t]
            }))));
            return a.orderedModifiers = c.filter((function (t) {
              return t.enabled
            })), a.orderedModifiers.forEach((function (t) {
              var e = t.name,
                i = t.options,
                n = void 0 === i ? {} : i,
                s = t.effect;
              if ("function" == typeof s) {
                var o = s({
                  state: a,
                  name: e,
                  instance: d,
                  options: n
                });
                l.push(o || function () {})
              }
            })), d.update()
          },
          forceUpdate: function () {
            if (!c) {
              var t = a.elements,
                e = t.reference,
                i = t.popper;
              if (re(e, i)) {
                a.rects = {
                  reference: se(e, Tt(i), "fixed" === a.options.strategy),
                  popper: gt(i)
                }, a.reset = !1, a.placement = a.options.placement, a.orderedModifiers.forEach((function (t) {
                  return a.modifiersData[t.name] = Object.assign({}, t.data)
                }));
                for (var n = 0; n < a.orderedModifiers.length; n++)
                  if (!0 !== a.reset) {
                    var s = a.orderedModifiers[n],
                      o = s.fn,
                      r = s.options,
                      l = void 0 === r ? {} : r,
                      h = s.name;
                    "function" == typeof o && (a = o({
                      state: a,
                      options: l,
                      name: h,
                      instance: d
                    }) || a)
                  } else a.reset = !1, n = -1
              }
            }
          },
          update: (s = function () {
            return new Promise((function (t) {
              d.forceUpdate(), t(a)
            }))
          }, function () {
            return r || (r = new Promise((function (t) {
              Promise.resolve().then((function () {
                r = void 0, t(s())
              }))
            }))), r
          }),
          destroy: function () {
            h(), c = !0
          }
        };
      if (!re(t, e)) return d;

      function h() {
        l.forEach((function (t) {
          return t()
        })), l = []
      }
      return d.setOptions(i).then((function (t) {
        !c && i.onFirstUpdate && i.onFirstUpdate(t)
      })), d
    }
  }
  var le = ae(),
    ce = ae({
      defaultModifiers: [Mt, ie, jt, ft]
    }),
    de = ae({
      defaultModifiers: [Mt, ie, jt, ft, ee, Gt, ne, Nt, te]
    }),
    he = Object.freeze({
      __proto__: null,
      popperGenerator: ae,
      detectOverflow: Yt,
      createPopperBase: le,
      createPopper: de,
      createPopperLite: ce,
      top: tt,
      bottom: et,
      right: it,
      left: nt,
      auto: "auto",
      basePlacements: st,
      start: "start",
      end: "end",
      clippingParents: "clippingParents",
      viewport: "viewport",
      popper: "popper",
      reference: "reference",
      variationPlacements: ot,
      placements: rt,
      beforeRead: "beforeRead",
      read: "read",
      afterRead: "afterRead",
      beforeMain: "beforeMain",
      main: "main",
      afterMain: "afterMain",
      beforeWrite: "beforeWrite",
      write: "write",
      afterWrite: "afterWrite",
      modifierPhases: at,
      applyStyles: ft,
      arrow: Nt,
      computeStyles: jt,
      eventListeners: Mt,
      flip: Gt,
      hide: te,
      offset: ee,
      popperOffsets: ie,
      preventOverflow: ne
    });
  const ue = new RegExp("ArrowUp|ArrowDown|Escape"),
    fe = _() ? "top-end" : "top-start",
    pe = _() ? "top-start" : "top-end",
    me = _() ? "bottom-end" : "bottom-start",
    ge = _() ? "bottom-start" : "bottom-end",
    _e = _() ? "left-start" : "right-start",
    be = _() ? "right-start" : "left-start",
    ve = {
      offset: [0, 2],
      boundary: "clippingParents",
      reference: "toggle",
      display: "dynamic",
      popperConfig: null,
      autoClose: !0
    },
    ye = {
      offset: "(array|string|function)",
      boundary: "(string|element)",
      reference: "(string|element|object)",
      display: "string",
      popperConfig: "(null|object|function)",
      autoClose: "(boolean|string)"
    };
  class we extends R {
    constructor(t, e) {
      super(t), this._popper = null, this._config = this._getConfig(e), this._menu = this._getMenuElement(), this._inNavbar = this._detectNavbar(), this._addEventListeners()
    }
    static get Default() {
      return ve
    }
    static get DefaultType() {
      return ye
    }
    static get NAME() {
      return "dropdown"
    }
    toggle() {
      u(this._element) || (this._element.classList.contains("show") ? this.hide() : this.show())
    }
    show() {
      if (u(this._element) || this._menu.classList.contains("show")) return;
      const t = we.getParentFromElement(this._element),
        e = {
          relatedTarget: this._element
        };
      if (!H.trigger(this._element, "show.bs.dropdown", e).defaultPrevented) {
        if (this._inNavbar) U.setDataAttribute(this._menu, "popper", "none");
        else {
          if (void 0 === he) throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
          let e = this._element;
          "parent" === this._config.reference ? e = t : a(this._config.reference) ? e = l(this._config.reference) : "object" == typeof this._config.reference && (e = this._config.reference);
          const i = this._getPopperConfig(),
            n = i.modifiers.find(t => "applyStyles" === t.name && !1 === t.enabled);
          this._popper = de(e, this._menu, i), n && U.setDataAttribute(this._menu, "popper", "static")
        }
        "ontouchstart" in document.documentElement && !t.closest(".navbar-nav") && [].concat(...document.body.children).forEach(t => H.on(t, "mouseover", p)), this._element.focus(), this._element.setAttribute("aria-expanded", !0), this._menu.classList.toggle("show"), this._element.classList.toggle("show"), H.trigger(this._element, "shown.bs.dropdown", e)
      }
    }
    hide() {
      if (u(this._element) || !this._menu.classList.contains("show")) return;
      const t = {
        relatedTarget: this._element
      };
      this._completeHide(t)
    }
    dispose() {
      this._popper && this._popper.destroy(), super.dispose()
    }
    update() {
      this._inNavbar = this._detectNavbar(), this._popper && this._popper.update()
    }
    _addEventListeners() {
      H.on(this._element, "click.bs.dropdown", t => {
        t.preventDefault(), this.toggle()
      })
    }
    _completeHide(t) {
      H.trigger(this._element, "hide.bs.dropdown", t).defaultPrevented || ("ontouchstart" in document.documentElement && [].concat(...document.body.children).forEach(t => H.off(t, "mouseover", p)), this._popper && this._popper.destroy(), this._menu.classList.remove("show"), this._element.classList.remove("show"), this._element.setAttribute("aria-expanded", "false"), U.removeDataAttribute(this._menu, "popper"), H.trigger(this._element, "hidden.bs.dropdown", t))
    }
    _getConfig(t) {
      if (t = {
          ...this.constructor.Default,
          ...U.getDataAttributes(this._element),
          ...t
        }, d("dropdown", t, this.constructor.DefaultType), "object" == typeof t.reference && !a(t.reference) && "function" != typeof t.reference.getBoundingClientRect) throw new TypeError("dropdown".toUpperCase() + ': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');
      return t
    }
    _getMenuElement() {
      return t.next(this._element, ".dropdown-menu")[0]
    }
    _getPlacement() {
      const t = this._element.parentNode;
      if (t.classList.contains("dropend")) return _e;
      if (t.classList.contains("dropstart")) return be;
      const e = "end" === getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();
      return t.classList.contains("dropup") ? e ? pe : fe : e ? ge : me
    }
    _detectNavbar() {
      return null !== this._element.closest(".navbar")
    }
    _getOffset() {
      const {
        offset: t
      } = this._config;
      return "string" == typeof t ? t.split(",").map(t => Number.parseInt(t, 10)) : "function" == typeof t ? e => t(e, this._element) : t
    }
    _getPopperConfig() {
      const t = {
        placement: this._getPlacement(),
        modifiers: [{
          name: "preventOverflow",
          options: {
            boundary: this._config.boundary
          }
        }, {
          name: "offset",
          options: {
            offset: this._getOffset()
          }
        }]
      };
      return "static" === this._config.display && (t.modifiers = [{
        name: "applyStyles",
        enabled: !1
      }]), {
        ...t,
        ..."function" == typeof this._config.popperConfig ? this._config.popperConfig(t) : this._config.popperConfig
      }
    }
    _selectMenuItem(e) {
      const i = t.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)", this._menu).filter(h);
      if (!i.length) return;
      let n = i.indexOf(e.target);
      "ArrowUp" === e.key && n > 0 && n--, "ArrowDown" === e.key && n < i.length - 1 && n++, n = -1 === n ? 0 : n, i[n].focus()
    }
    static dropdownInterface(t, e) {
      let i = w.get(t, "bs.dropdown");
      if (i || (i = new we(t, "object" == typeof e ? e : null)), "string" == typeof e) {
        if (void 0 === i[e]) throw new TypeError(`No method named "${e}"`);
        i[e]()
      }
    }
    static jQueryInterface(t) {
      return this.each((function () {
        we.dropdownInterface(this, t)
      }))
    }
    static clearMenus(e) {
      if (e && (2 === e.button || "keyup" === e.type && "Tab" !== e.key)) return;
      const i = t.find('[data-bs-toggle="dropdown"]');
      for (let t = 0, n = i.length; t < n; t++) {
        const n = w.get(i[t], "bs.dropdown");
        if (!n || !1 === n._config.autoClose) continue;
        if (!n._element.classList.contains("show")) continue;
        const s = {
          relatedTarget: n._element
        };
        if (e) {
          const t = e.composedPath(),
            i = t.includes(n._menu);
          if (t.includes(n._element) || "inside" === n._config.autoClose && !i || "outside" === n._config.autoClose && i) continue;
          if (n._menu.contains(e.target) && ("keyup" === e.type && "Tab" === e.key || /input|select|option|textarea|form/i.test(e.target.tagName))) continue;
          "click" === e.type && (s.clickEvent = e)
        }
        n._completeHide(s)
      }
    }
    static getParentFromElement(t) {
      return s(t) || t.parentNode
    }
    static dataApiKeydownHandler(e) {
      if (/input|textarea/i.test(e.target.tagName) ? "Space" === e.key || "Escape" !== e.key && ("ArrowDown" !== e.key && "ArrowUp" !== e.key || e.target.closest(".dropdown-menu")) : !ue.test(e.key)) return;
      const i = this.classList.contains("show");
      if (!i && "Escape" === e.key) return;
      if (e.preventDefault(), e.stopPropagation(), u(this)) return;
      const n = () => this.matches('[data-bs-toggle="dropdown"]') ? this : t.prev(this, '[data-bs-toggle="dropdown"]')[0];
      if ("Escape" === e.key) return n().focus(), void we.clearMenus();
      i || "ArrowUp" !== e.key && "ArrowDown" !== e.key ? i && "Space" !== e.key ? we.getInstance(n())._selectMenuItem(e) : we.clearMenus() : n().click()
    }
  }
  H.on(document, "keydown.bs.dropdown.data-api", '[data-bs-toggle="dropdown"]', we.dataApiKeydownHandler), H.on(document, "keydown.bs.dropdown.data-api", ".dropdown-menu", we.dataApiKeydownHandler), H.on(document, "click.bs.dropdown.data-api", we.clearMenus), H.on(document, "keyup.bs.dropdown.data-api", we.clearMenus), H.on(document, "click.bs.dropdown.data-api", '[data-bs-toggle="dropdown"]', (function (t) {
    t.preventDefault(), we.dropdownInterface(this)
  })), b(we);
  const Ee = () => {
      const t = document.documentElement.clientWidth;
      return Math.abs(window.innerWidth - t)
    },
    Te = (t = Ee()) => {
      Ae(), Le("body", "paddingRight", e => e + t), Le(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", "paddingRight", e => e + t), Le(".sticky-top", "marginRight", e => e - t)
    },
    Ae = () => {
      const t = document.body.style.overflow;
      t && U.setDataAttribute(document.body, "overflow", t), document.body.style.overflow = "hidden"
    },
    Le = (e, i, n) => {
      const s = Ee();
      t.find(e).forEach(t => {
        if (t !== document.body && window.innerWidth > t.clientWidth + s) return;
        const e = t.style[i],
          o = window.getComputedStyle(t)[i];
        U.setDataAttribute(t, i, e), t.style[i] = n(Number.parseFloat(o)) + "px"
      })
    },
    Oe = () => {
      ke("body", "overflow"), ke("body", "paddingRight"), ke(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top", "paddingRight"), ke(".sticky-top", "marginRight")
    },
    ke = (e, i) => {
      t.find(e).forEach(t => {
        const e = U.getDataAttribute(t, i);
        void 0 === e ? t.style.removeProperty(i) : (U.removeDataAttribute(t, i), t.style[i] = e)
      })
    },
    Ce = {
      isVisible: !0,
      isAnimated: !1,
      rootElement: document.body,
      clickCallback: null
    },
    xe = {
      isVisible: "boolean",
      isAnimated: "boolean",
      rootElement: "element",
      clickCallback: "(function|null)"
    };
  class De {
    constructor(t) {
      this._config = this._getConfig(t), this._isAppended = !1, this._element = null
    }
    show(t) {
      this._config.isVisible ? (this._append(), this._config.isAnimated && m(this._getElement()), this._getElement().classList.add("show"), this._emulateAnimation(() => {
        v(t)
      })) : v(t)
    }
    hide(t) {
      this._config.isVisible ? (this._getElement().classList.remove("show"), this._emulateAnimation(() => {
        this.dispose(), v(t)
      })) : v(t)
    }
    _getElement() {
      if (!this._element) {
        const t = document.createElement("div");
        t.className = "modal-backdrop", this._config.isAnimated && t.classList.add("fade"), this._element = t
      }
      return this._element
    }
    _getConfig(t) {
      return (t = {
        ...Ce,
        ..."object" == typeof t ? t : {}
      }).rootElement = t.rootElement || document.body, d("backdrop", t, xe), t
    }
    _append() {
      this._isAppended || (this._config.rootElement.appendChild(this._getElement()), H.on(this._getElement(), "mousedown.bs.backdrop", () => {
        v(this._config.clickCallback)
      }), this._isAppended = !0)
    }
    dispose() {
      this._isAppended && (H.off(this._element, "mousedown.bs.backdrop"), this._getElement().parentNode.removeChild(this._element), this._isAppended = !1)
    }
    _emulateAnimation(t) {
      if (!this._config.isAnimated) return void v(t);
      const e = o(this._getElement());
      H.one(this._getElement(), "transitionend", () => v(t)), c(this._getElement(), e)
    }
  }
  const Ne = {
      backdrop: !0,
      keyboard: !0,
      focus: !0
    },
    Se = {
      backdrop: "(boolean|string)",
      keyboard: "boolean",
      focus: "boolean"
    };
  class Ie extends R {
    constructor(e, i) {
      super(e), this._config = this._getConfig(i), this._dialog = t.findOne(".modal-dialog", this._element), this._backdrop = this._initializeBackDrop(), this._isShown = !1, this._ignoreBackdropClick = !1, this._isTransitioning = !1
    }
    static get Default() {
      return Ne
    }
    static get NAME() {
      return "modal"
    }
    toggle(t) {
      return this._isShown ? this.hide() : this.show(t)
    }
    show(t) {
      if (this._isShown || this._isTransitioning) return;
      this._isAnimated() && (this._isTransitioning = !0);
      const e = H.trigger(this._element, "show.bs.modal", {
        relatedTarget: t
      });
      this._isShown || e.defaultPrevented || (this._isShown = !0, Te(), document.body.classList.add("modal-open"), this._adjustDialog(), this._setEscapeEvent(), this._setResizeEvent(), H.on(this._element, "click.dismiss.bs.modal", '[data-bs-dismiss="modal"]', t => this.hide(t)), H.on(this._dialog, "mousedown.dismiss.bs.modal", () => {
        H.one(this._element, "mouseup.dismiss.bs.modal", t => {
          t.target === this._element && (this._ignoreBackdropClick = !0)
        })
      }), this._showBackdrop(() => this._showElement(t)))
    }
    hide(t) {
      if (t && t.preventDefault(), !this._isShown || this._isTransitioning) return;
      if (H.trigger(this._element, "hide.bs.modal").defaultPrevented) return;
      this._isShown = !1;
      const e = this._isAnimated();
      e && (this._isTransitioning = !0), this._setEscapeEvent(), this._setResizeEvent(), H.off(document, "focusin.bs.modal"), this._element.classList.remove("show"), H.off(this._element, "click.dismiss.bs.modal"), H.off(this._dialog, "mousedown.dismiss.bs.modal"), this._queueCallback(() => this._hideModal(), this._element, e)
    }
    dispose() {
      [window, this._dialog].forEach(t => H.off(t, ".bs.modal")), this._backdrop.dispose(), super.dispose(), H.off(document, "focusin.bs.modal")
    }
    handleUpdate() {
      this._adjustDialog()
    }
    _initializeBackDrop() {
      return new De({
        isVisible: Boolean(this._config.backdrop),
        isAnimated: this._isAnimated()
      })
    }
    _getConfig(t) {
      return t = {
        ...Ne,
        ...U.getDataAttributes(this._element),
        ...t
      }, d("modal", t, Se), t
    }
    _showElement(e) {
      const i = this._isAnimated(),
        n = t.findOne(".modal-body", this._dialog);
      this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE || document.body.appendChild(this._element), this._element.style.display = "block", this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), this._element.scrollTop = 0, n && (n.scrollTop = 0), i && m(this._element), this._element.classList.add("show"), this._config.focus && this._enforceFocus(), this._queueCallback(() => {
        this._config.focus && this._element.focus(), this._isTransitioning = !1, H.trigger(this._element, "shown.bs.modal", {
          relatedTarget: e
        })
      }, this._dialog, i)
    }
    _enforceFocus() {
      H.off(document, "focusin.bs.modal"), H.on(document, "focusin.bs.modal", t => {
        document === t.target || this._element === t.target || this._element.contains(t.target) || this._element.focus()
      })
    }
    _setEscapeEvent() {
      this._isShown ? H.on(this._element, "keydown.dismiss.bs.modal", t => {
        this._config.keyboard && "Escape" === t.key ? (t.preventDefault(), this.hide()) : this._config.keyboard || "Escape" !== t.key || this._triggerBackdropTransition()
      }) : H.off(this._element, "keydown.dismiss.bs.modal")
    }
    _setResizeEvent() {
      this._isShown ? H.on(window, "resize.bs.modal", () => this._adjustDialog()) : H.off(window, "resize.bs.modal")
    }
    _hideModal() {
      this._element.style.display = "none", this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._isTransitioning = !1, this._backdrop.hide(() => {
        document.body.classList.remove("modal-open"), this._resetAdjustments(), Oe(), H.trigger(this._element, "hidden.bs.modal")
      })
    }
    _showBackdrop(t) {
      H.on(this._element, "click.dismiss.bs.modal", t => {
        this._ignoreBackdropClick ? this._ignoreBackdropClick = !1 : t.target === t.currentTarget && (!0 === this._config.backdrop ? this.hide() : "static" === this._config.backdrop && this._triggerBackdropTransition())
      }), this._backdrop.show(t)
    }
    _isAnimated() {
      return this._element.classList.contains("fade")
    }
    _triggerBackdropTransition() {
      if (H.trigger(this._element, "hidePrevented.bs.modal").defaultPrevented) return;
      const t = this._element.scrollHeight > document.documentElement.clientHeight;
      t || (this._element.style.overflowY = "hidden"), this._element.classList.add("modal-static");
      const e = o(this._dialog);
      H.off(this._element, "transitionend"), H.one(this._element, "transitionend", () => {
        this._element.classList.remove("modal-static"), t || (H.one(this._element, "transitionend", () => {
          this._element.style.overflowY = ""
        }), c(this._element, e))
      }), c(this._element, e), this._element.focus()
    }
    _adjustDialog() {
      const t = this._element.scrollHeight > document.documentElement.clientHeight,
        e = Ee(),
        i = e > 0;
      (!i && t && !_() || i && !t && _()) && (this._element.style.paddingLeft = e + "px"), (i && !t && !_() || !i && t && _()) && (this._element.style.paddingRight = e + "px")
    }
    _resetAdjustments() {
      this._element.style.paddingLeft = "", this._element.style.paddingRight = ""
    }
    static jQueryInterface(t, e) {
      return this.each((function () {
        const i = Ie.getInstance(this) || new Ie(this, "object" == typeof t ? t : {});
        if ("string" == typeof t) {
          if (void 0 === i[t]) throw new TypeError(`No method named "${t}"`);
          i[t](e)
        }
      }))
    }
  }
  H.on(document, "click.bs.modal.data-api", '[data-bs-toggle="modal"]', (function (t) {
    const e = s(this);
    ["A", "AREA"].includes(this.tagName) && t.preventDefault(), H.one(e, "show.bs.modal", t => {
      t.defaultPrevented || H.one(e, "hidden.bs.modal", () => {
        h(this) && this.focus()
      })
    }), (Ie.getInstance(e) || new Ie(e)).toggle(this)
  })), b(Ie);
  const je = {
      backdrop: !0,
      keyboard: !0,
      scroll: !1
    },
    Pe = {
      backdrop: "boolean",
      keyboard: "boolean",
      scroll: "boolean"
    };
  class Me extends R {
    constructor(t, e) {
      super(t), this._config = this._getConfig(e), this._isShown = !1, this._backdrop = this._initializeBackDrop(), this._addEventListeners()
    }
    static get NAME() {
      return "offcanvas"
    }
    static get Default() {
      return je
    }
    toggle(t) {
      return this._isShown ? this.hide() : this.show(t)
    }
    show(t) {
      this._isShown || H.trigger(this._element, "show.bs.offcanvas", {
        relatedTarget: t
      }).defaultPrevented || (this._isShown = !0, this._element.style.visibility = "visible", this._backdrop.show(), this._config.scroll || (Te(), this._enforceFocusOnElement(this._element)), this._element.removeAttribute("aria-hidden"), this._element.setAttribute("aria-modal", !0), this._element.setAttribute("role", "dialog"), this._element.classList.add("show"), this._queueCallback(() => {
        H.trigger(this._element, "shown.bs.offcanvas", {
          relatedTarget: t
        })
      }, this._element, !0))
    }
    hide() {
      this._isShown && (H.trigger(this._element, "hide.bs.offcanvas").defaultPrevented || (H.off(document, "focusin.bs.offcanvas"), this._element.blur(), this._isShown = !1, this._element.classList.remove("show"), this._backdrop.hide(), this._queueCallback(() => {
        this._element.setAttribute("aria-hidden", !0), this._element.removeAttribute("aria-modal"), this._element.removeAttribute("role"), this._element.style.visibility = "hidden", this._config.scroll || Oe(), H.trigger(this._element, "hidden.bs.offcanvas")
      }, this._element, !0)))
    }
    dispose() {
      this._backdrop.dispose(), super.dispose(), H.off(document, "focusin.bs.offcanvas")
    }
    _getConfig(t) {
      return t = {
        ...je,
        ...U.getDataAttributes(this._element),
        ..."object" == typeof t ? t : {}
      }, d("offcanvas", t, Pe), t
    }
    _initializeBackDrop() {
      return new De({
        isVisible: this._config.backdrop,
        isAnimated: !0,
        rootElement: this._element.parentNode,
        clickCallback: () => this.hide()
      })
    }
    _enforceFocusOnElement(t) {
      H.off(document, "focusin.bs.offcanvas"), H.on(document, "focusin.bs.offcanvas", e => {
        document === e.target || t === e.target || t.contains(e.target) || t.focus()
      }), t.focus()
    }
    _addEventListeners() {
      H.on(this._element, "click.dismiss.bs.offcanvas", '[data-bs-dismiss="offcanvas"]', () => this.hide()), H.on(this._element, "keydown.dismiss.bs.offcanvas", t => {
        this._config.keyboard && "Escape" === t.key && this.hide()
      })
    }
    static jQueryInterface(t) {
      return this.each((function () {
        const e = w.get(this, "bs.offcanvas") || new Me(this, "object" == typeof t ? t : {});
        if ("string" == typeof t) {
          if (void 0 === e[t] || t.startsWith("_") || "constructor" === t) throw new TypeError(`No method named "${t}"`);
          e[t](this)
        }
      }))
    }
  }
  H.on(document, "click.bs.offcanvas.data-api", '[data-bs-toggle="offcanvas"]', (function (e) {
    const i = s(this);
    if (["A", "AREA"].includes(this.tagName) && e.preventDefault(), u(this)) return;
    H.one(i, "hidden.bs.offcanvas", () => {
      h(this) && this.focus()
    });
    const n = t.findOne(".offcanvas.show");
    n && n !== i && Me.getInstance(n).hide(), (w.get(i, "bs.offcanvas") || new Me(i)).toggle(this)
  })), H.on(window, "load.bs.offcanvas.data-api", () => {
    t.find(".offcanvas.show").forEach(t => (w.get(t, "bs.offcanvas") || new Me(t)).show())
  }), b(Me);
  const He = new Set(["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"]),
    Re = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,
    Be = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,
    We = (t, e) => {
      const i = t.nodeName.toLowerCase();
      if (e.includes(i)) return !He.has(i) || Boolean(Re.test(t.nodeValue) || Be.test(t.nodeValue));
      const n = e.filter(t => t instanceof RegExp);
      for (let t = 0, e = n.length; t < e; t++)
        if (n[t].test(i)) return !0;
      return !1
    };

  function qe(t, e, i) {
    if (!t.length) return t;
    if (i && "function" == typeof i) return i(t);
    const n = (new window.DOMParser).parseFromString(t, "text/html"),
      s = Object.keys(e),
      o = [].concat(...n.body.querySelectorAll("*"));
    for (let t = 0, i = o.length; t < i; t++) {
      const i = o[t],
        n = i.nodeName.toLowerCase();
      if (!s.includes(n)) {
        i.parentNode.removeChild(i);
        continue
      }
      const r = [].concat(...i.attributes),
        a = [].concat(e["*"] || [], e[n] || []);
      r.forEach(t => {
        We(t, a) || i.removeAttribute(t.nodeName)
      })
    }
    return n.body.innerHTML
  }
  const ze = new RegExp("(^|\\s)bs-tooltip\\S+", "g"),
    Ue = new Set(["sanitize", "allowList", "sanitizeFn"]),
    $e = {
      animation: "boolean",
      template: "string",
      title: "(string|element|function)",
      trigger: "string",
      delay: "(number|object)",
      html: "boolean",
      selector: "(string|boolean)",
      placement: "(string|function)",
      offset: "(array|string|function)",
      container: "(string|element|boolean)",
      fallbackPlacements: "array",
      boundary: "(string|element)",
      customClass: "(string|function)",
      sanitize: "boolean",
      sanitizeFn: "(null|function)",
      allowList: "object",
      popperConfig: "(null|object|function)"
    },
    Fe = {
      AUTO: "auto",
      TOP: "top",
      RIGHT: _() ? "left" : "right",
      BOTTOM: "bottom",
      LEFT: _() ? "right" : "left"
    },
    Ve = {
      animation: !0,
      template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
      trigger: "hover focus",
      title: "",
      delay: 0,
      html: !1,
      selector: !1,
      placement: "top",
      offset: [0, 0],
      container: !1,
      fallbackPlacements: ["top", "right", "bottom", "left"],
      boundary: "clippingParents",
      customClass: "",
      sanitize: !0,
      sanitizeFn: null,
      allowList: {
        "*": ["class", "dir", "id", "lang", "role", /^aria-[\w-]*$/i],
        a: ["target", "href", "title", "rel"],
        area: [],
        b: [],
        br: [],
        col: [],
        code: [],
        div: [],
        em: [],
        hr: [],
        h1: [],
        h2: [],
        h3: [],
        h4: [],
        h5: [],
        h6: [],
        i: [],
        img: ["src", "srcset", "alt", "title", "width", "height"],
        li: [],
        ol: [],
        p: [],
        pre: [],
        s: [],
        small: [],
        span: [],
        sub: [],
        sup: [],
        strong: [],
        u: [],
        ul: []
      },
      popperConfig: null
    },
    Ke = {
      HIDE: "hide.bs.tooltip",
      HIDDEN: "hidden.bs.tooltip",
      SHOW: "show.bs.tooltip",
      SHOWN: "shown.bs.tooltip",
      INSERTED: "inserted.bs.tooltip",
      CLICK: "click.bs.tooltip",
      FOCUSIN: "focusin.bs.tooltip",
      FOCUSOUT: "focusout.bs.tooltip",
      MOUSEENTER: "mouseenter.bs.tooltip",
      MOUSELEAVE: "mouseleave.bs.tooltip"
    };
  class Xe extends R {
    constructor(t, e) {
      if (void 0 === he) throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
      super(t), this._isEnabled = !0, this._timeout = 0, this._hoverState = "", this._activeTrigger = {}, this._popper = null, this._config = this._getConfig(e), this.tip = null, this._setListeners()
    }
    static get Default() {
      return Ve
    }
    static get NAME() {
      return "tooltip"
    }
    static get Event() {
      return Ke
    }
    static get DefaultType() {
      return $e
    }
    enable() {
      this._isEnabled = !0
    }
    disable() {
      this._isEnabled = !1
    }
    toggleEnabled() {
      this._isEnabled = !this._isEnabled
    }
    toggle(t) {
      if (this._isEnabled)
        if (t) {
          const e = this._initializeOnDelegatedTarget(t);
          e._activeTrigger.click = !e._activeTrigger.click, e._isWithActiveTrigger() ? e._enter(null, e) : e._leave(null, e)
        } else {
          if (this.getTipElement().classList.contains("show")) return void this._leave(null, this);
          this._enter(null, this)
        }
    }
    dispose() {
      clearTimeout(this._timeout), H.off(this._element.closest(".modal"), "hide.bs.modal", this._hideModalHandler), this.tip && this.tip.parentNode && this.tip.parentNode.removeChild(this.tip), this._popper && this._popper.destroy(), super.dispose()
    }
    show() {
      if ("none" === this._element.style.display) throw new Error("Please use show on visible elements");
      if (!this.isWithContent() || !this._isEnabled) return;
      const t = H.trigger(this._element, this.constructor.Event.SHOW),
        i = f(this._element),
        n = null === i ? this._element.ownerDocument.documentElement.contains(this._element) : i.contains(this._element);
      if (t.defaultPrevented || !n) return;
      const s = this.getTipElement(),
        o = e(this.constructor.NAME);
      s.setAttribute("id", o), this._element.setAttribute("aria-describedby", o), this.setContent(), this._config.animation && s.classList.add("fade");
      const r = "function" == typeof this._config.placement ? this._config.placement.call(this, s, this._element) : this._config.placement,
        a = this._getAttachment(r);
      this._addAttachmentClass(a);
      const {
        container: l
      } = this._config;
      w.set(s, this.constructor.DATA_KEY, this), this._element.ownerDocument.documentElement.contains(this.tip) || (l.appendChild(s), H.trigger(this._element, this.constructor.Event.INSERTED)), this._popper ? this._popper.update() : this._popper = de(this._element, s, this._getPopperConfig(a)), s.classList.add("show");
      const c = "function" == typeof this._config.customClass ? this._config.customClass() : this._config.customClass;
      c && s.classList.add(...c.split(" ")), "ontouchstart" in document.documentElement && [].concat(...document.body.children).forEach(t => {
        H.on(t, "mouseover", p)
      });
      const d = this.tip.classList.contains("fade");
      this._queueCallback(() => {
        const t = this._hoverState;
        this._hoverState = null, H.trigger(this._element, this.constructor.Event.SHOWN), "out" === t && this._leave(null, this)
      }, this.tip, d)
    }
    hide() {
      if (!this._popper) return;
      const t = this.getTipElement();
      if (H.trigger(this._element, this.constructor.Event.HIDE).defaultPrevented) return;
      t.classList.remove("show"), "ontouchstart" in document.documentElement && [].concat(...document.body.children).forEach(t => H.off(t, "mouseover", p)), this._activeTrigger.click = !1, this._activeTrigger.focus = !1, this._activeTrigger.hover = !1;
      const e = this.tip.classList.contains("fade");
      this._queueCallback(() => {
        this._isWithActiveTrigger() || ("show" !== this._hoverState && t.parentNode && t.parentNode.removeChild(t), this._cleanTipClass(), this._element.removeAttribute("aria-describedby"), H.trigger(this._element, this.constructor.Event.HIDDEN), this._popper && (this._popper.destroy(), this._popper = null))
      }, this.tip, e), this._hoverState = ""
    }
    update() {
      null !== this._popper && this._popper.update()
    }
    isWithContent() {
      return Boolean(this.getTitle())
    }
    getTipElement() {
      if (this.tip) return this.tip;
      const t = document.createElement("div");
      return t.innerHTML = this._config.template, this.tip = t.children[0], this.tip
    }
    setContent() {
      const e = this.getTipElement();
      this.setElementContent(t.findOne(".tooltip-inner", e), this.getTitle()), e.classList.remove("fade", "show")
    }
    setElementContent(t, e) {
      if (null !== t) return a(e) ? (e = l(e), void(this._config.html ? e.parentNode !== t && (t.innerHTML = "", t.appendChild(e)) : t.textContent = e.textContent)) : void(this._config.html ? (this._config.sanitize && (e = qe(e, this._config.allowList, this._config.sanitizeFn)), t.innerHTML = e) : t.textContent = e)
    }
    getTitle() {
      let t = this._element.getAttribute("data-bs-original-title");
      return t || (t = "function" == typeof this._config.title ? this._config.title.call(this._element) : this._config.title), t
    }
    updateAttachment(t) {
      return "right" === t ? "end" : "left" === t ? "start" : t
    }
    _initializeOnDelegatedTarget(t, e) {
      const i = this.constructor.DATA_KEY;
      return (e = e || w.get(t.delegateTarget, i)) || (e = new this.constructor(t.delegateTarget, this._getDelegateConfig()), w.set(t.delegateTarget, i, e)), e
    }
    _getOffset() {
      const {
        offset: t
      } = this._config;
      return "string" == typeof t ? t.split(",").map(t => Number.parseInt(t, 10)) : "function" == typeof t ? e => t(e, this._element) : t
    }
    _getPopperConfig(t) {
      const e = {
        placement: t,
        modifiers: [{
          name: "flip",
          options: {
            fallbackPlacements: this._config.fallbackPlacements
          }
        }, {
          name: "offset",
          options: {
            offset: this._getOffset()
          }
        }, {
          name: "preventOverflow",
          options: {
            boundary: this._config.boundary
          }
        }, {
          name: "arrow",
          options: {
            element: `.${this.constructor.NAME}-arrow`
          }
        }, {
          name: "onChange",
          enabled: !0,
          phase: "afterWrite",
          fn: t => this._handlePopperPlacementChange(t)
        }],
        onFirstUpdate: t => {
          t.options.placement !== t.placement && this._handlePopperPlacementChange(t)
        }
      };
      return {
        ...e,
        ..."function" == typeof this._config.popperConfig ? this._config.popperConfig(e) : this._config.popperConfig
      }
    }
    _addAttachmentClass(t) {
      this.getTipElement().classList.add("bs-tooltip-" + this.updateAttachment(t))
    }
    _getAttachment(t) {
      return Fe[t.toUpperCase()]
    }
    _setListeners() {
      this._config.trigger.split(" ").forEach(t => {
        if ("click" === t) H.on(this._element, this.constructor.Event.CLICK, this._config.selector, t => this.toggle(t));
        else if ("manual" !== t) {
          const e = "hover" === t ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN,
            i = "hover" === t ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;
          H.on(this._element, e, this._config.selector, t => this._enter(t)), H.on(this._element, i, this._config.selector, t => this._leave(t))
        }
      }), this._hideModalHandler = () => {
        this._element && this.hide()
      }, H.on(this._element.closest(".modal"), "hide.bs.modal", this._hideModalHandler), this._config.selector ? this._config = {
        ...this._config,
        trigger: "manual",
        selector: ""
      } : this._fixTitle()
    }
    _fixTitle() {
      const t = this._element.getAttribute("title"),
        e = typeof this._element.getAttribute("data-bs-original-title");
      (t || "string" !== e) && (this._element.setAttribute("data-bs-original-title", t || ""), !t || this._element.getAttribute("aria-label") || this._element.textContent || this._element.setAttribute("aria-label", t), this._element.setAttribute("title", ""))
    }
    _enter(t, e) {
      e = this._initializeOnDelegatedTarget(t, e), t && (e._activeTrigger["focusin" === t.type ? "focus" : "hover"] = !0), e.getTipElement().classList.contains("show") || "show" === e._hoverState ? e._hoverState = "show" : (clearTimeout(e._timeout), e._hoverState = "show", e._config.delay && e._config.delay.show ? e._timeout = setTimeout(() => {
        "show" === e._hoverState && e.show()
      }, e._config.delay.show) : e.show())
    }
    _leave(t, e) {
      e = this._initializeOnDelegatedTarget(t, e), t && (e._activeTrigger["focusout" === t.type ? "focus" : "hover"] = e._element.contains(t.relatedTarget)), e._isWithActiveTrigger() || (clearTimeout(e._timeout), e._hoverState = "out", e._config.delay && e._config.delay.hide ? e._timeout = setTimeout(() => {
        "out" === e._hoverState && e.hide()
      }, e._config.delay.hide) : e.hide())
    }
    _isWithActiveTrigger() {
      for (const t in this._activeTrigger)
        if (this._activeTrigger[t]) return !0;
      return !1
    }
    _getConfig(t) {
      const e = U.getDataAttributes(this._element);
      return Object.keys(e).forEach(t => {
        Ue.has(t) && delete e[t]
      }), (t = {
        ...this.constructor.Default,
        ...e,
        ..."object" == typeof t && t ? t : {}
      }).container = !1 === t.container ? document.body : l(t.container), "number" == typeof t.delay && (t.delay = {
        show: t.delay,
        hide: t.delay
      }), "number" == typeof t.title && (t.title = t.title.toString()), "number" == typeof t.content && (t.content = t.content.toString()), d("tooltip", t, this.constructor.DefaultType), t.sanitize && (t.template = qe(t.template, t.allowList, t.sanitizeFn)), t
    }
    _getDelegateConfig() {
      const t = {};
      if (this._config)
        for (const e in this._config) this.constructor.Default[e] !== this._config[e] && (t[e] = this._config[e]);
      return t
    }
    _cleanTipClass() {
      const t = this.getTipElement(),
        e = t.getAttribute("class").match(ze);
      null !== e && e.length > 0 && e.map(t => t.trim()).forEach(e => t.classList.remove(e))
    }
    _handlePopperPlacementChange(t) {
      const {
        state: e
      } = t;
      e && (this.tip = e.elements.popper, this._cleanTipClass(), this._addAttachmentClass(this._getAttachment(e.placement)))
    }
    static jQueryInterface(t) {
      return this.each((function () {
        let e = w.get(this, "bs.tooltip");
        const i = "object" == typeof t && t;
        if ((e || !/dispose|hide/.test(t)) && (e || (e = new Xe(this, i)), "string" == typeof t)) {
          if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
          e[t]()
        }
      }))
    }
  }
  b(Xe);
  const Ye = new RegExp("(^|\\s)bs-popover\\S+", "g"),
    Qe = {
      ...Xe.Default,
      placement: "right",
      offset: [0, 8],
      trigger: "click",
      content: "",
      template: '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
    },
    Ge = {
      ...Xe.DefaultType,
      content: "(string|element|function)"
    },
    Ze = {
      HIDE: "hide.bs.popover",
      HIDDEN: "hidden.bs.popover",
      SHOW: "show.bs.popover",
      SHOWN: "shown.bs.popover",
      INSERTED: "inserted.bs.popover",
      CLICK: "click.bs.popover",
      FOCUSIN: "focusin.bs.popover",
      FOCUSOUT: "focusout.bs.popover",
      MOUSEENTER: "mouseenter.bs.popover",
      MOUSELEAVE: "mouseleave.bs.popover"
    };
  class Je extends Xe {
    static get Default() {
      return Qe
    }
    static get NAME() {
      return "popover"
    }
    static get Event() {
      return Ze
    }
    static get DefaultType() {
      return Ge
    }
    isWithContent() {
      return this.getTitle() || this._getContent()
    }
    setContent() {
      const e = this.getTipElement();
      this.setElementContent(t.findOne(".popover-header", e), this.getTitle());
      let i = this._getContent();
      "function" == typeof i && (i = i.call(this._element)), this.setElementContent(t.findOne(".popover-body", e), i), e.classList.remove("fade", "show")
    }
    _addAttachmentClass(t) {
      this.getTipElement().classList.add("bs-popover-" + this.updateAttachment(t))
    }
    _getContent() {
      return this._element.getAttribute("data-bs-content") || this._config.content
    }
    _cleanTipClass() {
      const t = this.getTipElement(),
        e = t.getAttribute("class").match(Ye);
      null !== e && e.length > 0 && e.map(t => t.trim()).forEach(e => t.classList.remove(e))
    }
    static jQueryInterface(t) {
      return this.each((function () {
        let e = w.get(this, "bs.popover");
        const i = "object" == typeof t ? t : null;
        if ((e || !/dispose|hide/.test(t)) && (e || (e = new Je(this, i), w.set(this, "bs.popover", e)), "string" == typeof t)) {
          if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
          e[t]()
        }
      }))
    }
  }
  b(Je);
  const ti = {
      offset: 10,
      method: "auto",
      target: ""
    },
    ei = {
      offset: "number",
      method: "string",
      target: "(string|element)"
    };
  class ii extends R {
    constructor(t, e) {
      super(t), this._scrollElement = "BODY" === this._element.tagName ? window : this._element, this._config = this._getConfig(e), this._selector = `${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`, this._offsets = [], this._targets = [], this._activeTarget = null, this._scrollHeight = 0, H.on(this._scrollElement, "scroll.bs.scrollspy", () => this._process()), this.refresh(), this._process()
    }
    static get Default() {
      return ti
    }
    static get NAME() {
      return "scrollspy"
    }
    refresh() {
      const e = this._scrollElement === this._scrollElement.window ? "offset" : "position",
        i = "auto" === this._config.method ? e : this._config.method,
        s = "position" === i ? this._getScrollTop() : 0;
      this._offsets = [], this._targets = [], this._scrollHeight = this._getScrollHeight(), t.find(this._selector).map(e => {
        const o = n(e),
          r = o ? t.findOne(o) : null;
        if (r) {
          const t = r.getBoundingClientRect();
          if (t.width || t.height) return [U[i](r).top + s, o]
        }
        return null
      }).filter(t => t).sort((t, e) => t[0] - e[0]).forEach(t => {
        this._offsets.push(t[0]), this._targets.push(t[1])
      })
    }
    dispose() {
      H.off(this._scrollElement, ".bs.scrollspy"), super.dispose()
    }
    _getConfig(t) {
      if ("string" != typeof (t = {
          ...ti,
          ...U.getDataAttributes(this._element),
          ..."object" == typeof t && t ? t : {}
        }).target && a(t.target)) {
        let {
          id: i
        } = t.target;
        i || (i = e("scrollspy"), t.target.id = i), t.target = "#" + i
      }
      return d("scrollspy", t, ei), t
    }
    _getScrollTop() {
      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop
    }
    _getScrollHeight() {
      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
    }
    _getOffsetHeight() {
      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height
    }
    _process() {
      const t = this._getScrollTop() + this._config.offset,
        e = this._getScrollHeight(),
        i = this._config.offset + e - this._getOffsetHeight();
      if (this._scrollHeight !== e && this.refresh(), t >= i) {
        const t = this._targets[this._targets.length - 1];
        this._activeTarget !== t && this._activate(t)
      } else {
        if (this._activeTarget && t < this._offsets[0] && this._offsets[0] > 0) return this._activeTarget = null, void this._clear();
        for (let e = this._offsets.length; e--;) this._activeTarget !== this._targets[e] && t >= this._offsets[e] && (void 0 === this._offsets[e + 1] || t < this._offsets[e + 1]) && this._activate(this._targets[e])
      }
    }
    _activate(e) {
      this._activeTarget = e, this._clear();
      const i = this._selector.split(",").map(t => `${t}[data-bs-target="${e}"],${t}[href="${e}"]`),
        n = t.findOne(i.join(","));
      n.classList.contains("dropdown-item") ? (t.findOne(".dropdown-toggle", n.closest(".dropdown")).classList.add("active"), n.classList.add("active")) : (n.classList.add("active"), t.parents(n, ".nav, .list-group").forEach(e => {
        t.prev(e, ".nav-link, .list-group-item").forEach(t => t.classList.add("active")), t.prev(e, ".nav-item").forEach(e => {
          t.children(e, ".nav-link").forEach(t => t.classList.add("active"))
        })
      })), H.trigger(this._scrollElement, "activate.bs.scrollspy", {
        relatedTarget: e
      })
    }
    _clear() {
      t.find(this._selector).filter(t => t.classList.contains("active")).forEach(t => t.classList.remove("active"))
    }
    static jQueryInterface(t) {
      return this.each((function () {
        const e = ii.getInstance(this) || new ii(this, "object" == typeof t ? t : {});
        if ("string" == typeof t) {
          if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
          e[t]()
        }
      }))
    }
  }
  H.on(window, "load.bs.scrollspy.data-api", () => {
    t.find('[data-bs-spy="scroll"]').forEach(t => new ii(t))
  }), b(ii);
  class ni extends R {
    static get NAME() {
      return "tab"
    }
    show() {
      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains("active")) return;
      let e;
      const i = s(this._element),
        n = this._element.closest(".nav, .list-group");
      if (n) {
        const i = "UL" === n.nodeName || "OL" === n.nodeName ? ":scope > li > .active" : ".active";
        e = t.find(i, n), e = e[e.length - 1]
      }
      const o = e ? H.trigger(e, "hide.bs.tab", {
        relatedTarget: this._element
      }) : null;
      if (H.trigger(this._element, "show.bs.tab", {
          relatedTarget: e
        }).defaultPrevented || null !== o && o.defaultPrevented) return;
      this._activate(this._element, n);
      const r = () => {
        H.trigger(e, "hidden.bs.tab", {
          relatedTarget: this._element
        }), H.trigger(this._element, "shown.bs.tab", {
          relatedTarget: e
        })
      };
      i ? this._activate(i, i.parentNode, r) : r()
    }
    _activate(e, i, n) {
      const s = (!i || "UL" !== i.nodeName && "OL" !== i.nodeName ? t.children(i, ".active") : t.find(":scope > li > .active", i))[0],
        o = n && s && s.classList.contains("fade"),
        r = () => this._transitionComplete(e, s, n);
      s && o ? (s.classList.remove("show"), this._queueCallback(r, e, !0)) : r()
    }
    _transitionComplete(e, i, n) {
      if (i) {
        i.classList.remove("active");
        const e = t.findOne(":scope > .dropdown-menu .active", i.parentNode);
        e && e.classList.remove("active"), "tab" === i.getAttribute("role") && i.setAttribute("aria-selected", !1)
      }
      e.classList.add("active"), "tab" === e.getAttribute("role") && e.setAttribute("aria-selected", !0), m(e), e.classList.contains("fade") && e.classList.add("show");
      let s = e.parentNode;
      if (s && "LI" === s.nodeName && (s = s.parentNode), s && s.classList.contains("dropdown-menu")) {
        const i = e.closest(".dropdown");
        i && t.find(".dropdown-toggle", i).forEach(t => t.classList.add("active")), e.setAttribute("aria-expanded", !0)
      }
      n && n()
    }
    static jQueryInterface(t) {
      return this.each((function () {
        const e = w.get(this, "bs.tab") || new ni(this);
        if ("string" == typeof t) {
          if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
          e[t]()
        }
      }))
    }
  }
  H.on(document, "click.bs.tab.data-api", '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]', (function (t) {
    ["A", "AREA"].includes(this.tagName) && t.preventDefault(), u(this) || (w.get(this, "bs.tab") || new ni(this)).show()
  })), b(ni);
  const si = {
      animation: "boolean",
      autohide: "boolean",
      delay: "number"
    },
    oi = {
      animation: !0,
      autohide: !0,
      delay: 5e3
    };
  class ri extends R {
    constructor(t, e) {
      super(t), this._config = this._getConfig(e), this._timeout = null, this._hasMouseInteraction = !1, this._hasKeyboardInteraction = !1, this._setListeners()
    }
    static get DefaultType() {
      return si
    }
    static get Default() {
      return oi
    }
    static get NAME() {
      return "toast"
    }
    show() {
      H.trigger(this._element, "show.bs.toast").defaultPrevented || (this._clearTimeout(), this._config.animation && this._element.classList.add("fade"), this._element.classList.remove("hide"), m(this._element), this._element.classList.add("showing"), this._queueCallback(() => {
        this._element.classList.remove("showing"), this._element.classList.add("show"), H.trigger(this._element, "shown.bs.toast"), this._maybeScheduleHide()
      }, this._element, this._config.animation))
    }
    hide() {
      this._element.classList.contains("show") && (H.trigger(this._element, "hide.bs.toast").defaultPrevented || (this._element.classList.remove("show"), this._queueCallback(() => {
        this._element.classList.add("hide"), H.trigger(this._element, "hidden.bs.toast")
      }, this._element, this._config.animation)))
    }
    dispose() {
      this._clearTimeout(), this._element.classList.contains("show") && this._element.classList.remove("show"), super.dispose()
    }
    _getConfig(t) {
      return t = {
        ...oi,
        ...U.getDataAttributes(this._element),
        ..."object" == typeof t && t ? t : {}
      }, d("toast", t, this.constructor.DefaultType), t
    }
    _maybeScheduleHide() {
      this._config.autohide && (this._hasMouseInteraction || this._hasKeyboardInteraction || (this._timeout = setTimeout(() => {
        this.hide()
      }, this._config.delay)))
    }
    _onInteraction(t, e) {
      switch (t.type) {
        case "mouseover":
        case "mouseout":
          this._hasMouseInteraction = e;
          break;
        case "focusin":
        case "focusout":
          this._hasKeyboardInteraction = e
      }
      if (e) return void this._clearTimeout();
      const i = t.relatedTarget;
      this._element === i || this._element.contains(i) || this._maybeScheduleHide()
    }
    _setListeners() {
      H.on(this._element, "click.dismiss.bs.toast", '[data-bs-dismiss="toast"]', () => this.hide()), H.on(this._element, "mouseover.bs.toast", t => this._onInteraction(t, !0)), H.on(this._element, "mouseout.bs.toast", t => this._onInteraction(t, !1)), H.on(this._element, "focusin.bs.toast", t => this._onInteraction(t, !0)), H.on(this._element, "focusout.bs.toast", t => this._onInteraction(t, !1))
    }
    _clearTimeout() {
      clearTimeout(this._timeout), this._timeout = null
    }
    static jQueryInterface(t) {
      return this.each((function () {
        let e = w.get(this, "bs.toast");
        if (e || (e = new ri(this, "object" == typeof t && t)), "string" == typeof t) {
          if (void 0 === e[t]) throw new TypeError(`No method named "${t}"`);
          e[t](this)
        }
      }))
    }
  }
  return b(ri), {
    Alert: B,
    Button: W,
    Carousel: Q,
    Collapse: J,
    Dropdown: we,
    Modal: Ie,
    Offcanvas: Me,
    Popover: Je,
    ScrollSpy: ii,
    Tab: ni,
    Toast: ri,
    Tooltip: Xe
  }
}));
//# sourceMappingURL=bootstrap.bundle.min.js.map