getnamingo-registry/cp/public/assets/js/tabler.min.js
2025-03-08 18:33:56 +02:00

860 lines
No EOL
104 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*!
* Tabler v1.0.0 (https://tabler.io)
* Copyright 2018-2025 The Tabler Authors
* Copyright 2018-2025 codecalm.net Paweł Kuna
* Licensed under MIT (https://github.com/tabler/tabler/blob/master/LICENSE)
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("autosize"),require("imask")):"function"==typeof define&&define.amd?define(["autosize","imask"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).autosize,t.IMask)}(this,(function(t,e){"use strict";
// Autosize plugin
const i=document.querySelectorAll('[data-bs-toggle="autosize"]');i.length&&i.forEach((function(e){t&&t(e)}));const n=document.querySelectorAll("[data-countup]");n.length&&n.forEach((function(t){let e={};try{const i=t.getAttribute("data-countup")?JSON.parse(t.getAttribute("data-countup")):{};e=Object.assign({enableScrollSpy:!0},i)}catch(t){}const i=parseInt(t.innerHTML,10),n=new window.countUp.CountUp(t,i,e);n.error||n.start()})),[].slice.call(document.querySelectorAll("[data-mask]")).map((function(t){e&&new e(t,{mask:t.dataset.mask,lazy:"true"===t.dataset["mask-visible"]})}));
// Input mask plugin
var s="top",o="bottom",r="right",a="left",l="auto",c=[s,o,r,a],h="start",u="end",d="clippingParents",f="viewport",p="popper",g="reference",m=c.reduce((function(t,e){return t.concat([e+"-"+h,e+"-"+u])}),[]),_=[].concat(c,[l]).reduce((function(t,e){return t.concat([e,e+"-"+h,e+"-"+u])}),[]),b="beforeRead",v="read",y="afterRead",w="beforeMain",A="main",E="afterMain",T="beforeWrite",C="write",O="afterWrite",x=[b,v,y,w,A,E,T,C,O];function k(t){return t?(t.nodeName||"").toLowerCase():null}function S(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function L(t){return t instanceof S(t).Element||t instanceof Element}function $(t){return t instanceof S(t).HTMLElement||t instanceof HTMLElement}function D(t){
// IE 11 has no ShadowRoot
return"undefined"!=typeof ShadowRoot&&(t instanceof S(t).ShadowRoot||t instanceof ShadowRoot)}
// and applies them to the HTMLElements such as popper and arrow
// eslint-disable-next-line import/no-unused-modules
const I={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];// arrow is optional + virtual elements
$(s)&&k(s)&&(// Flow doesn't support to extend this property, but it's the most
// effective way to apply styles to an HTMLElement
// $FlowFixMe[cannot-write]
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}),{});// arrow is optional + virtual elements
$(n)&&k(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function N(t){return t.split("-")[0]}var P=Math.max,j=Math.min,M=Math.round;function F(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function H(){return!/^((?!chrome|android).)*safari/i.test(F())}function q(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&$(t)&&(s=t.offsetWidth>0&&M(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&M(n.height)/t.offsetHeight||1);var r=(L(t)?S(t):window).visualViewport,a=!H()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,u=n.height/o;return{width:h,height:u,top:c,right:l+h,bottom:c+u,left:l,x:l,y:c}}
// means it doesn't take into account transforms.
function z(t){var e=q(t),i=t.offsetWidth,n=t.offsetHeight;// Use the clientRect sizes if it's not been transformed.
// Fixes https://github.com/popperjs/popper-core/issues/1223
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 W(t,e){var i=e.getRootNode&&e.getRootNode();// First, attempt with faster native method
if(t.contains(e))return!0;// Give up, the result is false
if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;// $FlowFixMe[prop-missing]: need a better way to handle this...
n=n.parentNode||n.host}while(n)}return!1}function B(t){return S(t).getComputedStyle(t)}function R(t){return["table","td","th"].indexOf(k(t))>=0}function V(t){
// $FlowFixMe[incompatible-return]: assume body is always available
return((L(t)?t.ownerDocument:
// $FlowFixMe[prop-missing]
t.document)||window.document).documentElement}function K(t){return"html"===k(t)?t:
// this is a quicker (but less type safe) way to save quite some bytes from the bundle
// $FlowFixMe[incompatible-return]
// $FlowFixMe[prop-missing]
t.assignedSlot||
// step into the shadow DOM of the parent of a slotted node
t.parentNode||(
// DOM Element detected
D(t)?t.host:null)||
// ShadowRoot detected
// $FlowFixMe[incompatible-call]: HTMLElement is a Node
V(t)}function U(t){return $(t)&&
// https://github.com/popperjs/popper-core/issues/837
"fixed"!==B(t).position?t.offsetParent:null}// `.offsetParent` reports `null` for fixed elements, while absolute elements
// return the containing block
// Gets the closest ancestor positioned element. Handles some edge cases,
// such as table ancestors and cross browser bugs.
function Q(t){for(var e=S(t),i=U(t);i&&R(i)&&"static"===B(i).position;)i=U(i);return i&&("html"===k(i)||"body"===k(i)&&"static"===B(i).position)?e:i||function(t){var e=/firefox/i.test(F());if(/Trident/i.test(F())&&$(t)&&"fixed"===B(t).position)return null;var i=K(t);for(D(i)&&(i=i.host);$(i)&&["html","body"].indexOf(k(i))<0;){var n=B(i);// This is non-exhaustive but covers the most common CSS properties that
// create a containing block.
// https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
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 X(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Y(t,e,i){return P(t,j(e,i))}function G(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function J(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}// eslint-disable-next-line import/no-unused-modules
const Z={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,l=t.options,h=i.elements.arrow,u=i.modifiersData.popperOffsets,d=N(i.placement),f=X(d),p=[a,r].indexOf(d)>=0?"height":"width";if(h&&u){var g=function(t,e){return G("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:J(t,c))}(l.padding,i),m=z(h),_="y"===f?s:a,b="y"===f?o:r,v=i.rects.reference[p]+i.rects.reference[f]-u[f]-i.rects.popper[p],y=u[f]-i.rects.reference[f],w=Q(h),A=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,E=v/2-y/2,T=g[_],C=A-m[p]-g[b],O=A/2-m[p]/2+E,x=Y(T,O,C),k=f;i.modifiersData[n]=((e={})[k]=x,e.centerOffset=x-O,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)))&&W(e.elements.popper,n)&&(e.elements.arrow=n);// CSS selector
},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function tt(t){return t.split("-")[1]}var et={top:"auto",right:"auto",bottom:"auto",left:"auto"};// Round the offsets to the nearest suitable subpixel based on the DPR.
// Zooming can change the DPR, but it seems to report a value that will
// cleanly divide the values into the appropriate subpixels.
function it(t){var e,i=t.popper,n=t.popperRect,l=t.placement,c=t.variation,h=t.offsets,d=t.position,f=t.gpuAcceleration,p=t.adaptive,g=t.roundOffsets,m=t.isFixed,_=h.x,b=void 0===_?0:_,v=h.y,y=void 0===v?0:v,w="function"==typeof g?g({x:b,y:y}):{x:b,y:y};b=w.x,y=w.y;var A=h.hasOwnProperty("x"),E=h.hasOwnProperty("y"),T=a,C=s,O=window;if(p){var x=Q(i),k="clientHeight",L="clientWidth";x===S(i)&&"static"!==B(x=V(i)).position&&"absolute"===d&&(k="scrollHeight",L="scrollWidth"),(l===s||(l===a||l===r)&&c===u)&&(C=o,y-=(m&&x===O&&O.visualViewport?O.visualViewport.height:
// $FlowFixMe[prop-missing]
x[k])-n.height,y*=f?1:-1),l!==a&&(l!==s&&l!==o||c!==u)||(T=r,b-=(m&&x===O&&O.visualViewport?O.visualViewport.width:
// $FlowFixMe[prop-missing]
x[L])-n.width,b*=f?1:-1);// $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
}var $,D=Object.assign({position:d},p&&et),I=!0===g?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:M(i*s)/s||0,y:M(n*s)/s||0}}({x:b,y:y},S(i)):{x:b,y:y};return b=I.x,y=I.y,f?Object.assign({},D,(($={})[C]=E?"0":"",$[T]=A?"0":"",$.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",$)):Object.assign({},D,((e={})[C]=E?y+"px":"",e[T]=A?b+"px":"",e.transform="",e))}// eslint-disable-next-line import/no-unused-modules
const nt={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:N(e.placement),variation:tt(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};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:{}};var st={passive:!0};// eslint-disable-next-line import/no-unused-modules
const ot={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=S(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,st)})),a&&l.addEventListener("resize",i.update,st),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,st)})),a&&l.removeEventListener("resize",i.update,st)}},data:{}};var rt={left:"right",right:"left",bottom:"top",top:"bottom"};function at(t){return t.replace(/left|right|bottom|top/g,(function(t){return rt[t]}))}var lt={start:"end",end:"start"};function ct(t){return t.replace(/start|end/g,(function(t){return lt[t]}))}function ht(t){var e=S(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ut(t){
// If <html> has a CSS width greater than the viewport, then this will be
// incorrect for RTL.
// Popper 1 is broken in this case and never had a bug report so let's assume
// it's not an issue. I don't think anyone ever specifies width on <html>
// anyway.
// Browsers where the left scrollbar doesn't cause an issue report `0` for
// this (e.g. Edge 2019, IE11, Safari)
return q(V(t)).left+ht(t).scrollLeft}function dt(t){
// Firefox wants us to check `-x` and `-y` variations as well
var e=B(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function ft(t){return["html","body","#document"].indexOf(k(t))>=0?t.ownerDocument.body:$(t)&&dt(t)?t:ft(K(t))}
/*
given a DOM element, return the list of all scroll parents, up the list of ancesors
until we get to the top window object. This list is what we attach scroll listeners
to, because if any of these parent elements scroll, we'll need to re-calculate the
reference element's position.
*/function pt(t,e){var i;void 0===e&&(e=[]);var n=ft(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=S(n),r=s?[o].concat(o.visualViewport||[],dt(n)?n:[]):n,a=e.concat(r);return s?a:
// $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
a.concat(pt(K(r)))}function gt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function mt(t,e,i){return e===f?gt(function(t,e){var i=S(t),n=V(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=H();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ut(t),y:l}}
// of the `<html>` and `<body>` rect bounds if horizontally scrollable
(t,i)):L(e)?function(t,e){var i=q(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):gt(function(t){var e,i=V(t),n=ht(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=P(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=P(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ut(t),l=-n.scrollTop;return"rtl"===B(s||i).direction&&(a+=P(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(V(t)))}// A "clipping parent" is an overflowable container with the characteristic of
// clipping (or hiding) overflowing elements with a position different from
// `initial`
function _t(t){var e,i=t.reference,n=t.element,l=t.placement,c=l?N(l):null,d=l?tt(l):null,f=i.x+i.width/2-n.width/2,p=i.y+i.height/2-n.height/2;switch(c){case s:e={x:f,y:i.y-n.height};break;case o:e={x:f,y:i.y+i.height};break;case r:e={x:i.x+i.width,y:p};break;case a:e={x:i.x-n.width,y:p};break;default:e={x:i.x,y:i.y}}var g=c?X(c):null;if(null!=g){var m="y"===g?"height":"width";switch(d){case h:e[g]=e[g]-(i[m]/2-n[m]/2);break;case u:e[g]=e[g]+(i[m]/2-n[m]/2)}}return e}function bt(t,e){void 0===e&&(e={});var i=e,n=i.placement,a=void 0===n?t.placement:n,l=i.strategy,h=void 0===l?t.strategy:l,u=i.boundary,m=void 0===u?d:u,_=i.rootBoundary,b=void 0===_?f:_,v=i.elementContext,y=void 0===v?p:v,w=i.altBoundary,A=void 0!==w&&w,E=i.padding,T=void 0===E?0:E,C=G("number"!=typeof T?T:J(T,c)),O=y===p?g:p,x=t.rects.popper,S=t.elements[A?O:y],D=// Gets the maximum area that the element is visible in due to any number of
// clipping parents
function(t,e,i,n){var s="clippingParents"===e?function(t){var e=pt(K(t)),i=["absolute","fixed"].indexOf(B(t).position)>=0&&$(t)?Q(t):t;return L(i)?e.filter((function(t){return L(t)&&W(t,i)&&"body"!==k(t)})):[];// $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=mt(t,i,n);return e.top=P(s.top,e.top),e.right=j(s.right,e.right),e.bottom=j(s.bottom,e.bottom),e.left=P(s.left,e.left),e}),mt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(L(S)?S:S.contextElement||V(t.elements.popper),m,b,h),I=q(t.elements.reference),N=_t({reference:I,element:x,placement:a}),M=gt(Object.assign({},x,N)),F=y===p?M:I,H={top:D.top-F.top+C.top,bottom:F.bottom-D.bottom+C.bottom,left:D.left-F.left+C.left,right:F.right-D.right+C.right},z=t.modifiersData.offset;// Offsets can be applied only to the popper element
if(y===p&&z){var R=z[a];Object.keys(H).forEach((function(t){var e=[r,o].indexOf(t)>=0?1:-1,i=[s,o].indexOf(t)>=0?"y":"x";H[t]+=R[i]*e}))}return H}function vt(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,h=void 0===l?_:l,u=tt(n),d=u?a?m:m.filter((function(t){return tt(t)===u})):c,f=d.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=d);// $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
var p=f.reduce((function(e,i){return e[i]=bt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[N(i)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}// eslint-disable-next-line import/no-unused-modules
const yt={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 c=i.mainAxis,u=void 0===c||c,d=i.altAxis,f=void 0===d||d,p=i.fallbackPlacements,g=i.padding,m=i.boundary,_=i.rootBoundary,b=i.altBoundary,v=i.flipVariations,y=void 0===v||v,w=i.allowedAutoPlacements,A=e.options.placement,E=N(A),T=p||(E!==A&&y?function(t){if(N(t)===l)return[];var e=at(t);return[ct(t),e,ct(e)]}(A):[at(A)]),C=[A].concat(T).reduce((function(t,i){return t.concat(N(i)===l?vt(e,{placement:i,boundary:m,rootBoundary:_,padding:g,flipVariations:y,allowedAutoPlacements:w}):i)}),[]),O=e.rects.reference,x=e.rects.popper,k=new Map,S=!0,L=C[0],$=0;$<C.length;$++){var D=C[$],I=N(D),P=tt(D)===h,j=[s,o].indexOf(I)>=0,M=j?"width":"height",F=bt(e,{placement:D,boundary:m,rootBoundary:_,altBoundary:b,padding:g}),H=j?P?r:a:P?o:s;O[M]>x[M]&&(H=at(H));var q=at(H),z=[];if(u&&z.push(F[I]<=0),f&&z.push(F[H]<=0,F[q]<=0),z.every((function(t){return t}))){L=D,S=!1;break}k.set(D,z)}if(S)for(
// `2` may be desired in some cases research later
var W=function(t){var e=C.find((function(e){var i=k.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return L=e,"break"},B=y?3:1;B>0&&"break"!==W(B);B--);e.placement!==L&&(e.modifiersData[n]._skip=!0,e.placement=L,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function wt(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 At(t){return[s,r,o,a].some((function(e){return t[e]>=0}))}// eslint-disable-next-line import/no-unused-modules
const Et={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=bt(e,{elementContext:"reference"}),a=bt(e,{altBoundary:!0}),l=wt(r,n),c=wt(a,s,o),h=At(l),u=At(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":u})}},Tt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,o=i.offset,l=void 0===o?[0,0]:o,c=_.reduce((function(t,i){return t[i]=function(t,e,i){var n=N(t),o=[a,s].indexOf(n)>=0?-1:1,l="function"==typeof i?i(Object.assign({},e,{placement:t})):i,c=l[0],h=l[1];return c=c||0,h=(h||0)*o,[a,r].indexOf(n)>=0?{x:h,y:c}:{x:c,y:h}}(i,e.rects,l),t}),{}),h=c[e.placement],u=h.x,d=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=u,e.modifiersData.popperOffsets.y+=d),e.modifiersData[n]=c}// eslint-disable-next-line import/no-unused-modules
},Ct={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;
// Offsets are the actual position the popper needs to have to be
// properly positioned near its reference element
// This is the most basic placement, and will be adjusted by
// the modifiers in the next step
e.modifiersData[i]=_t({reference:e.rects.reference,element:e.rects.popper,placement:e.placement})}// eslint-disable-next-line import/no-unused-modules
,data:{}},Ot={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,l=i.mainAxis,c=void 0===l||l,u=i.altAxis,d=void 0!==u&&u,f=i.boundary,p=i.rootBoundary,g=i.altBoundary,m=i.padding,_=i.tether,b=void 0===_||_,v=i.tetherOffset,y=void 0===v?0:v,w=bt(e,{boundary:f,rootBoundary:p,padding:m,altBoundary:g}),A=N(e.placement),E=tt(e.placement),T=!E,C=X(A),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,S=e.rects.popper,L="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,$="number"==typeof L?{mainAxis:L,altAxis:L}:Object.assign({mainAxis:0,altAxis:0},L),D=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,I={x:0,y:0};if(x){if(c){var M,F="y"===C?s:a,H="y"===C?o:r,q="y"===C?"height":"width",W=x[C],B=W+w[F],R=W-w[H],V=b?-S[q]/2:0,K=E===h?k[q]:S[q],U=E===h?-S[q]:-k[q],G=e.elements.arrow,J=b&&G?z(G):{width:0,height:0},Z=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=Z[F],it=Z[H],nt=Y(0,k[q],J[q]),st=T?k[q]/2-V-nt-et-$.mainAxis:K-nt-et-$.mainAxis,ot=T?-k[q]/2+V+nt+it+$.mainAxis:U+nt+it+$.mainAxis,rt=e.elements.arrow&&Q(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(M=null==D?void 0:D[C])?M:0,ct=W+ot-lt,ht=Y(b?j(B,W+st-lt-at):B,W,b?P(R,ct):R);x[C]=ht,I[C]=ht-W}if(d){var ut,dt="x"===C?s:a,ft="x"===C?o:r,pt=x[O],gt="y"===O?"height":"width",mt=pt+w[dt],_t=pt-w[ft],vt=-1!==[s,a].indexOf(A),yt=null!=(ut=null==D?void 0:D[O])?ut:0,wt=vt?mt:pt-k[gt]-S[gt]-yt+$.altAxis,At=vt?pt+k[gt]+S[gt]-yt-$.altAxis:_t,Et=b&&vt?function(t,e,i){var n=Y(t,e,i);return n>i?i:n}(wt,pt,At):Y(b?wt:mt,pt,b?At:_t);x[O]=Et,I[O]=Et-pt}e.modifiersData[n]=I}}// eslint-disable-next-line import/no-unused-modules
,requiresIfExists:["offset"]};// Returns the composite rect of an element relative to its offsetParent.
// Composite means it takes into account transforms as well as layout.
function xt(t,e,i){void 0===i&&(i=!1);var n,s,o=$(e),r=$(e)&&function(t){var e=t.getBoundingClientRect(),i=M(e.width)/t.offsetWidth||1,n=M(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=V(e),l=q(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==k(e)||
// https://github.com/popperjs/popper-core/issues/1078
dt(a))&&(c=(n=e)!==S(n)&&$(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ht(n)),$(e)?((h=q(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ut(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function kt(t){var e=new Map,i=new Set,n=[];// On visiting object, check for its dependencies and visit them recursively
function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||
// check for visited object
s(t)})),n}var St={placement:"bottom",modifiers:[],strategy:"absolute"};function Lt(){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 $t(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?St:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},St,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s="function"==typeof i?i(a.options):i;u(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:L(t)?pt(t):t.contextElement?pt(t.contextElement):[],popper:pt(e)};// Orders the modifiers based on their dependencies and `phase`
// properties
var r,c,d=function(t){
// order based on dependencies
var e=kt(t);// order based on phase
return x.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.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(c).map((function(t){return c[t]}))));// Strip out disabled modifiers
return a.orderedModifiers=d.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:h,options:n});l.push(o||function(){})}})),h.update()},
// Sync update it will always be executed, even if not necessary. This
// is useful for low frequency updates where sync behavior simplifies the
// logic.
// For high frequency updates (e.g. `resize` and `scroll` events), always
// prefer the async Popper#update method
forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;// Don't proceed if `reference` or `popper` are not valid elements
// anymore
if(Lt(e,i)){// Store the reference and popper rects to be read by modifiers
a.rects={reference:xt(e,Q(i),"fixed"===a.options.strategy),popper:z(i)},// Modifiers have the ability to reset the current update cycle. The
// most common use case for this is the `flip` modifier changing the
// placement, which then needs to re-run all the modifiers, because the
// logic was previously ran for the previous placement and is therefore
// stale/incorrect
a.reset=!1,a.placement=a.options.placement,// On each update cycle, the `modifiersData` property for each modifier
// is filled with the initial data specified by the modifier. This means
// it doesn't persist and is fresh on each update.
// To ensure persistent data, use `${name}#persistent`
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,u=s.name;"function"==typeof o&&(a=o({state:a,options:l,name:u,instance:h})||a)}else a.reset=!1,n=-1}}},
// Async and optimistically optimized update it will not be executed if
// not necessary (debounced to run at most once-per-tick)
update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){u(),c=!0}};if(!Lt(t,e))return h;function u(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var Dt=$t(),It=$t({defaultModifiers:[ot,Ct,nt,I]}),Nt=$t({defaultModifiers:[ot,Ct,nt,I,Tt,yt,Ot,Z,Et]});// eslint-disable-next-line import/no-unused-modules
// eslint-disable-next-line import/no-unused-modules
const Pt=Object.freeze(Object.defineProperty({__proto__:null,afterMain:E,afterRead:y,afterWrite:O,applyStyles:I,arrow:Z,auto:l,basePlacements:c,beforeMain:w,beforeRead:b,beforeWrite:T,bottom:o,clippingParents:d,computeStyles:nt,createPopper:Nt,createPopperBase:Dt,createPopperLite:It,detectOverflow:bt,end:u,eventListeners:ot,flip:yt,hide:Et,left:a,main:A,modifierPhases:x,offset:Tt,placements:_,popper:p,popperGenerator:$t,popperOffsets:Ct,preventOverflow:Ot,read:v,reference:g,right:r,start:h,top:s,variationPlacements:m,viewport:f,write:C},Symbol.toStringTag,{value:"Module"})),jt=new Map,Mt={set(t,e,i){jt.has(t)||jt.set(t,new Map);const n=jt.get(t);
// make it clear we only want one instance per element
// can be removed later when multiple key/instances are fine to be used
n.has(e)||0===n.size?n.set(e,i):
// eslint-disable-next-line no-console
console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>jt.has(t)&&jt.get(t).get(e)||null,remove(t,e){if(!jt.has(t))return;const i=jt.get(t);i.delete(e),
// free up element references if there are no instances left for an element
0===i.size&&jt.delete(t)}},Ft="transitionend",Ht=t=>(t&&window.CSS&&window.CSS.escape&&(
// document.querySelector needs escaping to handle IDs (html5+) containing for instance /
t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),qt=t=>{t.dispatchEvent(new Event(Ft))},zt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Wt=t=>
// it's a jQuery object or a node element
zt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Ht(t)):null,Bt=t=>{if(!zt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");
// Handle `details` element as its content may falsie appear visible when it is closed
if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Rt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Vt=t=>{if(!document.documentElement.attachShadow)return null;
// Can find the shadow root otherwise it'll return the document
if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:
// when we don't find a shadow root
t.parentNode?Vt(t.parentNode):null},Kt=()=>{},Ut=t=>{t.offsetHeight;// eslint-disable-line no-unused-expressions
},Qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Xt=[],Yt=()=>"rtl"===document.documentElement.dir,Gt=t=>{var e;e=()=>{const e=Qt();
/* istanbul ignore if */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?(
// add listener on the first call when the document is in loading state
Xt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Xt)t()})),Xt.push(e)):e()},Jt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Zt=(t,e,i=!0)=>{if(!i)return void Jt(t);const n=(t=>{if(!t)return 0;
// Get transition-duration of the element
let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);
// Return 0 if element or transition duration is not found
return n||s?(
// If multiple durations are defined, take the first
e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Ft,o),Jt(t))};e.addEventListener(Ft,o),setTimeout((()=>{s||qt(e)}),n)},te=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);
// if the element does not exist in the list return an element
// depending on the direction and if cycle is allowed
return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},ee=/[^.]*(?=\..*)\.|.*/,ie=/\..*/,ne=/::\d+$/,se={};
/*!
* Bootstrap v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/**
* --------------------------------------------------------------------------
* Bootstrap dom/data.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/ // Events storage
let oe=1;const re={mouseenter:"mouseover",mouseleave:"mouseout"},ae=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"]);
/**
* Private methods
*/
function le(t,e){return e&&`${e}::${oe++}`||t.uidEvent||oe++}function ce(t){const e=le(t);return t.uidEvent=e,se[e]=se[e]||{},se[e]}function he(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ue(t,e,i){const n="string"==typeof e,s=n?i:e||i;
// TODO: tooltip passes `false` instead of selector, so we need to check
let o=ge(t);return ae.has(o)||(o=t),[n,s,o]}function de(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ue(e,i,n);
// in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
// this prevents the handler from being dispatched the same way as mouseover or mouseout does
if(e in re){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=ce(t),c=l[a]||(l[a]={}),h=he(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const u=le(r,e.replace(ee,"")),d=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(const a of o)if(a===r)return _e(s,{delegateTarget:r}),n.oneOff&&me.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return _e(n,{delegateTarget:t}),i.oneOff&&me.off(t,n.type,e),e.apply(t,[n])}}(t,r);d.delegationSelector=o?i:null,d.callable=r,d.oneOff=s,d.uidEvent=u,c[u]=d,t.addEventListener(a,d,o)}function fe(t,e,i,n,s){const o=he(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function pe(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&fe(t,e,i,r.callable,r.delegationSelector)}function ge(t){
// allow to get the native events from namespaced events ('click.bs.button' --> 'click')
return t=t.replace(ie,""),re[t]||t}const me={on(t,e,i,n){de(t,e,i,n,!1)},one(t,e,i,n){de(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ue(e,i,n),a=r!==e,l=ce(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))pe(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(ne,"");a&&!e.includes(s)||fe(t,l,r,n.callable,n.delegationSelector)}}else{
// Simplest case: handler is passed, remove that listener ONLY.
if(!Object.keys(c).length)return;fe(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Qt();let s=null,o=!0,r=!0,a=!1;e!==ge(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=_e(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function _e(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}
/**
* --------------------------------------------------------------------------
* Bootstrap dom/manipulator.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/function be(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function ve(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ye={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${ve(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${ve(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=be(t.dataset[n])}return e},getDataAttribute:(t,e)=>be(t.getAttribute(`data-bs-${ve(e)}`))};
/**
* --------------------------------------------------------------------------
* Bootstrap util/config.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Class definition
*/class we{
// Getters
static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=zt(e)?ye.getDataAttribute(e,"config"):{};// try to parse
return{...this.constructor.Default,..."object"==typeof i?i:{},...zt(e)?ye.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=zt(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}
/**
* --------------------------------------------------------------------------
* Bootstrap base-component.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
/**
* Class definition
*/
class Ae extends we{constructor(t,e){super(),(t=Wt(t))&&(this._element=t,this._config=this._getConfig(e),Mt.set(this._element,this.constructor.DATA_KEY,this))}
// Public
dispose(){Mt.remove(this._element,this.constructor.DATA_KEY),me.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Zt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}
// Static
static getInstance(t){return Mt.get(Wt(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}
/**
* --------------------------------------------------------------------------
* Bootstrap dom/selector-engine.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/const Ee=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");
// The only valid content that could double as a selector are IDs or classes,
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
// `document.querySelector` will rightfully complain it is invalid.
// See https://github.com/twbs/bootstrap/issues/32273
if(!i||!i.includes("#")&&!i.startsWith("."))return null;
// Just in case some CMS puts out a full URL with the anchor appended
i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>Ht(t))).join(","):null},Te={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.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},
// TODO: this is now unused; remove later along with prev()
next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Rt(t)&&Bt(t)))},getSelectorFromElement(t){const e=Ee(t);return e&&Te.findOne(e)?e:null},getElementFromSelector(t){const e=Ee(t);return e?Te.findOne(e):null},getMultipleElementsFromSelector(t){const e=Ee(t);return e?Te.find(e):[]}},Ce=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;me.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Rt(this))return;const s=Te.getElementFromSelector(this)||this.closest(`.${n}`);
// Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
t.getOrCreateInstance(s)[e]()}))},Oe=".bs.alert",xe=`close${Oe}`,ke=`closed${Oe}`;
/**
* Class definition
*/
class Se extends Ae{
// Getters
static get NAME(){return"alert"}
// Public
close(){if(me.trigger(this._element,xe).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}
// Private
_destroyElement(){this._element.remove(),me.trigger(this._element,ke),this.dispose()}
// Static
static jQueryInterface(t){return this.each((function(){const e=Se.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}
/**
* Data API implementation
*/Ce(Se,"close"),
/**
* jQuery
*/
Gt(Se);
/**
* --------------------------------------------------------------------------
* Bootstrap button.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const Le='[data-bs-toggle="button"]';
/**
* Class definition
*/
class $e extends Ae{
// Getters
static get NAME(){return"button"}
// Public
toggle(){
// Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}
// Static
static jQueryInterface(t){return this.each((function(){const e=$e.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}
/**
* Data API implementation
*/me.on(document,"click.bs.button.data-api",Le,(t=>{t.preventDefault();const e=t.target.closest(Le);$e.getOrCreateInstance(e).toggle()})),
/**
* jQuery
*/
Gt($e);
/**
* --------------------------------------------------------------------------
* Bootstrap util/swipe.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const De=".bs.swipe",Ie=`touchstart${De}`,Ne=`touchmove${De}`,Pe=`touchend${De}`,je=`pointerdown${De}`,Me=`pointerup${De}`,Fe={endCallback:null,leftCallback:null,rightCallback:null},He={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};
/**
* Class definition
*/
class qe extends we{constructor(t,e){super(),this._element=t,t&&qe.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}
// Getters
static get Default(){return Fe}static get DefaultType(){return He}static get NAME(){return"swipe"}
// Public
dispose(){me.off(this._element,De)}
// Private
_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Jt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Jt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(me.on(this._element,je,(t=>this._start(t))),me.on(this._element,Me,(t=>this._end(t))),this._element.classList.add("pointer-event")):(me.on(this._element,Ie,(t=>this._start(t))),me.on(this._element,Ne,(t=>this._move(t))),me.on(this._element,Pe,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}
// Static
static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}
/**
* --------------------------------------------------------------------------
* Bootstrap carousel.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/const ze=".bs.carousel",We=".data-api",Be="ArrowLeft",Re="ArrowRight",Ve="next",Ke="prev",Ue="left",Qe="right",Xe=`slide${ze}`,Ye=`slid${ze}`,Ge=`keydown${ze}`,Je=`mouseenter${ze}`,Ze=`mouseleave${ze}`,ti=`dragstart${ze}`,ei=`load${ze}${We}`,ii=`click${ze}${We}`,ni="carousel",si="active",oi=".active",ri=".carousel-item",ai=oi+ri,li={[Be]:Qe,[Re]:Ue},ci={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},hi={interval:"(number|boolean)",
// TODO:v6 remove boolean support
keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};
/**
* Class definition
*/
class ui extends Ae{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=Te.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===ni&&this.cycle()}
// Getters
static get Default(){return ci}static get DefaultType(){return hi}static get NAME(){return"carousel"}
// Public
next(){this._slide(Ve)}nextWhenVisible(){
// FIXME TODO use `document.visibilityState`
// Don't call next when the page isn't visible
// or the carousel or its parent isn't visible
!document.hidden&&Bt(this._element)&&this.next()}prev(){this._slide(Ke)}pause(){this._isSliding&&qt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?me.one(this._element,Ye,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void me.one(this._element,Ye,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?Ve:Ke;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}
// Private
_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&me.on(this._element,Ge,(t=>this._keydown(t))),"hover"===this._config.pause&&(me.on(this._element,Je,(()=>this.pause())),me.on(this._element,Ze,(()=>this._maybeEnableCycle()))),this._config.touch&&qe.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of Te.find(".carousel-item img",this._element))me.on(t,ti,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(Ue)),rightCallback:()=>this._slide(this._directionToOrder(Qe)),endCallback:()=>{"hover"===this._config.pause&&(
// If it's a touch-enabled device, mouseenter/leave are fired as
// part of the mouse compatibility events on first tap - the carousel
// would stop cycling until user tapped out of it;
// here, we listen for touchend, explicitly pause the carousel
// (as if it's the second time we tap on it, mouseenter compat event
// is NOT fired) and after a timeout (to allow for mouse compatibility
// events to fire) we explicitly restart cycling
this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new qe(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=li[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=Te.findOne(oi,this._indicatorsElement);e.classList.remove(si),e.removeAttribute("aria-current");const i=Te.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(si),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===Ve,s=e||te(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>me.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Xe).defaultPrevented)return;if(!i||!s)
// Some weirdness is happening, so we bail
// TODO: change tests that use empty divs to avoid this check
return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Ut(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(si),i.classList.remove(si,c,l),this._isSliding=!1,r(Ye)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return Te.findOne(ai,this._element)}_getItems(){return Te.find(ri,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===Ue?Ke:Ve:t===Ue?Ve:Ke}_orderToDirection(t){return Yt()?t===Ke?Ue:Qe:t===Ke?Qe:Ue}
// Static
static jQueryInterface(t){return this.each((function(){const e=ui.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}
/**
* Data API implementation
*/me.on(document,ii,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=Te.getElementFromSelector(this);if(!e||!e.classList.contains(ni))return;t.preventDefault();const i=ui.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ye.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),me.on(window,ei,(()=>{const t=Te.find('[data-bs-ride="carousel"]');for(const e of t)ui.getOrCreateInstance(e)})),
/**
* jQuery
*/
Gt(ui);
/**
* --------------------------------------------------------------------------
* Bootstrap collapse.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const di=".bs.collapse",fi=`show${di}`,pi=`shown${di}`,gi=`hide${di}`,mi=`hidden${di}`,_i=`click${di}.data-api`,bi="show",vi="collapse",yi="collapsing",wi=`:scope .${vi} .${vi}`,Ai='[data-bs-toggle="collapse"]',Ei={parent:null,toggle:!0},Ti={parent:"(null|element)",toggle:"boolean"};
/**
* Class definition
*/
class Ci extends Ae{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=Te.find(Ai);for(const t of i){const e=Te.getSelectorFromElement(t),i=Te.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}
// Getters
static get Default(){return Ei}static get DefaultType(){return Ti}static get NAME(){return"collapse"}
// Public
toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];
// find active children
if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Ci.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(me.trigger(this._element,fi).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(vi),this._element.classList.add(yi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(yi),this._element.classList.add(vi,bi),this._element.style[e]="",me.trigger(this._element,pi)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(me.trigger(this._element,gi).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Ut(this._element),this._element.classList.add(yi),this._element.classList.remove(vi,bi);for(const t of this._triggerArray){const e=Te.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(yi),this._element.classList.add(vi),me.trigger(this._element,mi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(bi)}
// Private
_configAfterMerge(t){return t.toggle=Boolean(t.toggle),// Coerce string values
t.parent=Wt(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ai);for(const e of t){const t=Te.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=Te.find(wi,this._config.parent);
// remove children if greater depth
return Te.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}
// Static
static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Ci.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}
/**
* Data API implementation
*/me.on(document,_i,Ai,(function(t){
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of Te.getMultipleElementsFromSelector(this))Ci.getOrCreateInstance(t,{toggle:!1}).toggle()})),
/**
* jQuery
*/
Gt(Ci);
/**
* --------------------------------------------------------------------------
* Bootstrap dropdown.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const Oi="dropdown",xi=".bs.dropdown",ki=".data-api",Si="ArrowUp",Li="ArrowDown",$i=`hide${xi}`,Di=`hidden${xi}`,Ii=`show${xi}`,Ni=`shown${xi}`,Pi=`click${xi}${ki}`,ji=`keydown${xi}${ki}`,Mi=`keyup${xi}${ki}`,Fi="show",Hi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',qi=`${Hi}.${Fi}`,zi=".dropdown-menu",Wi=Yt()?"top-end":"top-start",Bi=Yt()?"top-start":"top-end",Ri=Yt()?"bottom-end":"bottom-start",Vi=Yt()?"bottom-start":"bottom-end",Ki=Yt()?"left-start":"right-start",Ui=Yt()?"right-start":"left-start",Qi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Xi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};
/**
* Class definition
*/
class Yi extends Ae{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,// dropdown wrapper
// TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
this._menu=Te.next(this._element,zi)[0]||Te.prev(this._element,zi)[0]||Te.findOne(zi,this._parent),this._inNavbar=this._detectNavbar()}
// Getters
static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Oi}
// Public
toggle(){return this._isShown()?this.hide():this.show()}show(){if(Rt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!me.trigger(this._element,Ii,t).defaultPrevented){
// If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))me.on(t,"mouseover",Kt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Fi),this._element.classList.add(Fi),me.trigger(this._element,Ni,t)}}hide(){if(Rt(this._element)||!this._isShown())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()}
// Private
_completeHide(t){if(!me.trigger(this._element,$i,t).defaultPrevented){
// If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))me.off(t,"mouseover",Kt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Fi),this._element.classList.remove(Fi),this._element.setAttribute("aria-expanded","false"),ye.removeDataAttribute(this._menu,"popper"),me.trigger(this._element,Di,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!zt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)
// Popper virtual elements require a getBoundingClientRect method
throw new TypeError(`${Oi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===Pt)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:zt(this._config.reference)?t=Wt(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=Nt(t,this._menu,e)}_isShown(){return this._menu.classList.contains(Fi)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Ki;if(t.classList.contains("dropstart"))return Ui;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";
// We need to trim the value because custom properties can also include spaces
const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Bi:Wi:e?Vi:Ri}_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()}}]};
// Disable Popper if we have a static display or Dropdown is in Navbar
return(this._inNavbar||"static"===this._config.display)&&(ye.setDataAttribute(this._menu,"popper","static"),// TODO: v6 remove
t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Jt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=Te.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Bt(t)));i.length&&
// if target isn't included in items (e.g. when expanding the dropdown)
// allow cycling to get the last item in case key equals ARROW_UP_KEY
te(i,e,t===Li,!i.includes(e)).focus()}
// Static
static jQueryInterface(t){return this.each((function(){const e=Yi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=Te.find(qi);for(const i of e){const e=Yi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;
// Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){
// If not an UP | DOWN | ESCAPE key => not a dropdown command
// If input/textarea && if key is other than ESCAPE => not a dropdown command
const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Si,Li].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();
// TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
const s=this.matches(Hi)?this:Te.prev(this,Hi)[0]||Te.next(this,Hi)[0]||Te.findOne(Hi,t.delegateTarget.parentNode),o=Yi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(
// else is escape and we check if it is shown
t.stopPropagation(),o.hide(),s.focus())}}
/**
* Data API implementation
*/me.on(document,ji,Hi,Yi.dataApiKeydownHandler),me.on(document,ji,zi,Yi.dataApiKeydownHandler),me.on(document,Pi,Yi.clearMenus),me.on(document,Mi,Yi.clearMenus),me.on(document,Pi,Hi,(function(t){t.preventDefault(),Yi.getOrCreateInstance(this).toggle()})),
/**
* jQuery
*/
Gt(Yi);
/**
* --------------------------------------------------------------------------
* Bootstrap util/backdrop.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const Gi="backdrop",Ji="show",Zi=`mousedown.bs.${Gi}`,tn={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,
// if false, we use the backdrop helper without adding any element to the dom
rootElement:"body"},en={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};
/**
* Class definition
*/
class nn extends we{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}
// Getters
static get Default(){return tn}static get DefaultType(){return en}static get NAME(){return Gi}
// Public
show(t){if(!this._config.isVisible)return void Jt(t);this._append();const e=this._getElement();this._config.isAnimated&&Ut(e),e.classList.add(Ji),this._emulateAnimation((()=>{Jt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ji),this._emulateAnimation((()=>{this.dispose(),Jt(t)}))):Jt(t)}dispose(){this._isAppended&&(me.off(this._element,Zi),this._element.remove(),this._isAppended=!1)}
// Private
_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){
// use getElement() with the default "body" to get a fresh Element on each instantiation
return t.rootElement=Wt(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),me.on(t,Zi,(()=>{Jt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Zt(t,this._getElement(),this._config.isAnimated)}}
/**
* --------------------------------------------------------------------------
* Bootstrap util/focustrap.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/const sn=".bs.focustrap",on=`focusin${sn}`,rn=`keydown.tab${sn}`,an="backward",ln={autofocus:!0,trapElement:null},cn={autofocus:"boolean",trapElement:"element"};
/**
* Class definition
*/
class hn extends we{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}
// Getters
static get Default(){return ln}static get DefaultType(){return cn}static get NAME(){return"focustrap"}
// Public
activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),me.off(document,sn),// guard against infinite focus loop
me.on(document,on,(t=>this._handleFocusin(t))),me.on(document,rn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,me.off(document,sn))}
// Private
_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=Te.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===an?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?an:"forward")}}
/**
* --------------------------------------------------------------------------
* Bootstrap util/scrollBar.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/const un=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",dn=".sticky-top",fn="padding-right",pn="margin-right";
/**
* Class definition
*/
class gn{constructor(){this._element=document.body}
// Public
getWidth(){
// https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),
// give padding to element to balance the hidden scrollbar width
this._setElementAttributes(this._element,fn,(e=>e+t)),
// trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
this._setElementAttributes(un,fn,(e=>e+t)),this._setElementAttributes(dn,pn,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,fn),this._resetElementAttributes(un,fn),this._resetElementAttributes(dn,pn)}isOverflowing(){return this.getWidth()>0}
// Private
_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&ye.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ye.getDataAttribute(t,e);
// We only want to remove the property if the value is `null`; the value can also be zero
null!==i?(ye.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(zt(t))e(t);else for(const i of Te.find(t,this._element))e(i)}}
/**
* --------------------------------------------------------------------------
* Bootstrap modal.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/const mn=".bs.modal",_n=`hide${mn}`,bn=`hidePrevented${mn}`,vn=`hidden${mn}`,yn=`show${mn}`,wn=`shown${mn}`,An=`resize${mn}`,En=`click.dismiss${mn}`,Tn=`mousedown.dismiss${mn}`,Cn=`keydown.dismiss${mn}`,On=`click${mn}.data-api`,xn="modal-open",kn="show",Sn="modal-static",Ln={backdrop:!0,focus:!0,keyboard:!0},$n={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};
/**
* Class definition
*/
class Dn extends Ae{constructor(t,e){super(t,e),this._dialog=Te.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new gn,this._addEventListeners()}
// Getters
static get Default(){return Ln}static get DefaultType(){return $n}static get NAME(){return"modal"}
// Public
toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||me.trigger(this._element,yn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(xn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(me.trigger(this._element,_n).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(kn),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){me.off(window,mn),me.off(this._dialog,mn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}
// Private
_initializeBackDrop(){return new nn({isVisible:Boolean(this._config.backdrop),
// 'static' option will be translated to true, and booleans will keep their value,
isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new hn({trapElement:this._element})}_showElement(t){
// try to append dynamic modal
document.body.contains(this._element)||document.body.append(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;const e=Te.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Ut(this._element),this._element.classList.add(kn),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,me.trigger(this._element,wn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){me.on(this._element,Cn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),me.on(window,An,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),me.on(this._element,Tn,(t=>{
// a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
me.one(this._element,En,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_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(xn),this._resetAdjustments(),this._scrollBar.reset(),me.trigger(this._element,vn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(me.trigger(this._element,bn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;
// return if the following background transition hasn't yet completed
"hidden"===e||this._element.classList.contains(Sn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Sn),this._queueCallback((()=>{this._element.classList.remove(Sn),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}
/**
* The following methods are used to handle overflowing modals
*/_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}
// Static
static jQueryInterface(t,e){return this.each((function(){const i=Dn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}
/**
* Data API implementation
*/me.on(document,On,'[data-bs-toggle="modal"]',(function(t){const e=Te.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),me.one(e,yn,(t=>{t.defaultPrevented||me.one(e,vn,(()=>{Bt(this)&&this.focus()}))}));
// avoid conflict when clicking modal toggler while another one is open
const i=Te.findOne(".modal.show");i&&Dn.getInstance(i).hide(),Dn.getOrCreateInstance(e).toggle(this)})),Ce(Dn),
/**
* jQuery
*/
Gt(Dn);
/**
* --------------------------------------------------------------------------
* Bootstrap offcanvas.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const In=".bs.offcanvas",Nn=".data-api",Pn=`load${In}${Nn}`,jn="show",Mn="showing",Fn="hiding",Hn=".offcanvas.show",qn=`show${In}`,zn=`shown${In}`,Wn=`hide${In}`,Bn=`hidePrevented${In}`,Rn=`hidden${In}`,Vn=`resize${In}`,Kn=`click${In}${Nn}`,Un=`keydown.dismiss${In}`,Qn={backdrop:!0,keyboard:!0,scroll:!1},Xn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};
/**
* Class definition
*/
class Yn extends Ae{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}
// Getters
static get Default(){return Qn}static get DefaultType(){return Xn}static get NAME(){return"offcanvas"}
// Public
toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||me.trigger(this._element,qn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new gn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Mn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(jn),this._element.classList.remove(Mn),me.trigger(this._element,zn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(me.trigger(this._element,Wn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Fn),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(jn,Fn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new gn).reset(),me.trigger(this._element,Rn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}
// Private
_initializeBackDrop(){const t=Boolean(this._config.backdrop);
// 'static' option will be translated to true, and booleans will keep their value
return new nn({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():me.trigger(this._element,Bn)}:null})}_initializeFocusTrap(){return new hn({trapElement:this._element})}_addEventListeners(){me.on(this._element,Un,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():me.trigger(this._element,Bn))}))}
// Static
static jQueryInterface(t){return this.each((function(){const e=Yn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}
/**
* Data API implementation
*/me.on(document,Kn,'[data-bs-toggle="offcanvas"]',(function(t){const e=Te.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Rt(this))return;me.one(e,Rn,(()=>{
// focus on trigger when it is closed
Bt(this)&&this.focus()}));
// avoid conflict when clicking a toggler of an offcanvas, while another is open
const i=Te.findOne(Hn);i&&i!==e&&Yn.getInstance(i).hide(),Yn.getOrCreateInstance(e).toggle(this)})),me.on(window,Pn,(()=>{for(const t of Te.find(Hn))Yn.getOrCreateInstance(t).show()})),me.on(window,Vn,(()=>{for(const t of Te.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Yn.getOrCreateInstance(t).hide()})),Ce(Yn),
/**
* jQuery
*/
Gt(Yn);
/**
* --------------------------------------------------------------------------
* Bootstrap util/sanitizer.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
// js-docs-start allow-list
const Gn={
// Global attributes allowed on any supplied element below.
"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],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:[]},Jn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Zn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,ts=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Jn.has(i)||Boolean(Zn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)));
// Check if a regular expression validates the attribute.
},es={allowList:Gn,content:{},
// { selector : text , selector2 : text2 , }
extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},is={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ns={entry:"(string|element|function|null)",selector:"(string|element)"};
/**
* Class definition
*/
class ss extends we{constructor(t){super(),this._config=this._getConfig(t)}
// Getters
static get Default(){return es}static get DefaultType(){return is}static get NAME(){return"TemplateFactory"}
// Public
getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}
// Private
_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},ns)}_setContent(t,e,i){const n=Te.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?zt(e)?this._putElementInTemplate(Wt(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(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=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)ts(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}
/**
* --------------------------------------------------------------------------
* Bootstrap util/template-factory.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Jt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}
/**
* --------------------------------------------------------------------------
* Bootstrap tooltip.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/const os=new Set(["sanitize","allowList","sanitizeFn"]),rs="fade",as="show",ls=".tooltip-inner",cs=".modal",hs="hide.bs.modal",us="hover",ds="focus",fs={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},ps={allowList:Gn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},gs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};
/**
* Class definition
*/
class ms extends Ae{constructor(t,e){if(void 0===Pt)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),
// Private
this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,
// Protected
this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}
// Getters
static get Default(){return ps}static get DefaultType(){return gs}static get NAME(){return"tooltip"}
// Public
enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),me.off(this._element.closest(cs),hs,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),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=me.trigger(this._element,this.constructor.eventName("show")),e=(Vt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;
// TODO: v6 remove this or make it optional
this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;
// If this is a touch-enabled device we add extra
// empty mouseover listeners to the body's immediate children;
// only needed because of broken event delegation on iOS
// https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),me.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(as),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))me.on(t,"mouseover",Kt);this._queueCallback((()=>{me.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!me.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){
// If this is a touch-enabled device we remove the extra
// empty mouseover listeners we added for iOS support
if(this._getTipElement().classList.remove(as),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))me.off(t,"mouseover",Kt);this._activeTrigger.click=!1,this._activeTrigger[ds]=!1,this._activeTrigger[us]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),me.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}
// Protected
_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();
// TODO: remove this check in v6
if(!e)return null;e.classList.remove(rs,as),
// TODO: v6 the following can be achieved with CSS only
e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(rs),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new ss({...this._config,
// the `content` var has to be after `this._config`
// to override config.content in case of popover
content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[ls]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}
// Private
_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(rs)}_isShown(){return this.tip&&this.tip.classList.contains(as)}_createPopper(t){const e=Jt(this._config.placement,[this,t,this._element]),i=fs[e.toUpperCase()];return Nt(this._element,t,this._getPopperConfig(i))}_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}_resolvePossibleFunction(t){return Jt(t,[this._element])}_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:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{
// Pre-set Popper's placement attribute in order to read the arrow sizes properly.
// Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Jt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)me.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===us?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===us?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");me.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?ds:us]=!0,e._enter()})),me.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?ds:us]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},me.on(this._element.closest(cs),hs,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),// DO NOT USE IT. Is only for backwards compatibility
this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=ye.getDataAttributes(this._element);for(const t of Object.keys(e))os.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Wt(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()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);
// In the future can be replaced with:
// const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
// `Object.fromEntries(keysWithDifferentValues)`
return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}
// Static
static jQueryInterface(t){return this.each((function(){const e=ms.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}
/**
* jQuery
*/Gt(ms);
/**
* --------------------------------------------------------------------------
* Bootstrap popover.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const _s=".popover-header",bs=".popover-body",vs={...ms.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},ys={...ms.DefaultType,content:"(null|string|element|function)"};
/**
* Class definition
*/
class ws extends ms{
// Getters
static get Default(){return vs}static get DefaultType(){return ys}static get NAME(){return"popover"}
// Overrides
_isWithContent(){return this._getTitle()||this._getContent()}
// Private
_getContentForTemplate(){return{[_s]:this._getTitle(),[bs]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}
// Static
static jQueryInterface(t){return this.each((function(){const e=ws.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}
/**
* jQuery
*/Gt(ws);
/**
* --------------------------------------------------------------------------
* Bootstrap scrollspy.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const As=".bs.scrollspy",Es=`activate${As}`,Ts=`click${As}`,Cs=`load${As}.data-api`,Os="active",xs="[href]",ks=".nav-link",Ss=`${ks}, .nav-item > ${ks}, .list-group-item`,Ls={offset:null,
// TODO: v6 @deprecated, keep it for backwards compatibility reasons
rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},$s={offset:"(number|null)",
// TODO v6 @deprecated, keep it for backwards compatibility reasons
rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};
/**
* Class definition
*/
class Ds extends Ae{constructor(t,e){super(t,e),
// this._element is the observablesContainer and config.target the menu links wrapper
this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}
// Getters
static get Default(){return Ls}static get DefaultType(){return $s}static get NAME(){return"scrollspy"}
// Public
refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}
// Private
_configAfterMerge(t){
// TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
return t.target=Wt(t.target)||document.body,
// TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(
// unregister any previous listeners
me.off(this._config.target,Ts),me.on(this._config.target,Ts,xs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});
// Chrome 60 doesn't support `scrollTo`
i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}
// The logic of selection
_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;
// if we are scrolling down, pick the bigger offsetTop
if(s&&t){
// if parent isn't scrolled, let's keep the first visible item, breaking the iteration
if(i(o),!n)return}else
// if we are scrolling up, pick the smallest offsetTop
s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=Te.find(xs,this._config.target);for(const e of t){
// ensure that the anchor has an id and is not disabled
if(!e.hash||Rt(e))continue;const t=Te.findOne(decodeURI(e.hash),this._element);
// ensure that the observableSection exists & is visible
Bt(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(Os),this._activateParents(t),me.trigger(this._element,Es,{relatedTarget:t}))}_activateParents(t){
// Activate dropdown parents
if(t.classList.contains("dropdown-item"))Te.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(Os);else for(const e of Te.parents(t,".nav, .list-group"))
// Set triggered links parents as active
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
for(const t of Te.prev(e,Ss))t.classList.add(Os)}_clearActiveClass(t){t.classList.remove(Os);const e=Te.find(`${xs}.${Os}`,t);for(const t of e)t.classList.remove(Os)}
// Static
static jQueryInterface(t){return this.each((function(){const e=Ds.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}
/**
* Data API implementation
*/me.on(window,Cs,(()=>{for(const t of Te.find('[data-bs-spy="scroll"]'))Ds.getOrCreateInstance(t)})),
/**
* jQuery
*/
Gt(Ds);
/**
* --------------------------------------------------------------------------
* Bootstrap tab.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const Is=".bs.tab",Ns=`hide${Is}`,Ps=`hidden${Is}`,js=`show${Is}`,Ms=`shown${Is}`,Fs=`click${Is}`,Hs=`keydown${Is}`,qs=`load${Is}`,zs="ArrowLeft",Ws="ArrowRight",Bs="ArrowUp",Rs="ArrowDown",Vs="Home",Ks="End",Us="active",Qs="fade",Xs="show",Ys=".dropdown-toggle",Gs=`:not(${Ys})`,Js='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Zs=`.nav-link${Gs}, .list-group-item${Gs}, [role="tab"]${Gs}, ${Js}`,to=`.${Us}[data-bs-toggle="tab"], .${Us}[data-bs-toggle="pill"], .${Us}[data-bs-toggle="list"]`
/**
* Class definition
*/;class eo extends Ae{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(
// Set up initial aria attributes
this._setInitialAttributes(this._parent,this._getChildren()),me.on(this._element,Hs,(t=>this._keydown(t))))}
// Getters
static get NAME(){return"tab"}
// Public
show(){
// Shows this elem and deactivate the active sibling if exists
const t=this._element;if(this._elemIsActive(t))return;
// Search for active tab on same parent to deactivate it
const e=this._getActiveElem(),i=e?me.trigger(e,Ns,{relatedTarget:t}):null;me.trigger(t,js,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}
// Private
_activate(t,e){t&&(t.classList.add(Us),this._activate(Te.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),me.trigger(t,Ms,{relatedTarget:e})):t.classList.add(Xs)}),t,t.classList.contains(Qs)))}_deactivate(t,e){t&&(t.classList.remove(Us),t.blur(),this._deactivate(Te.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),me.trigger(t,Ps,{relatedTarget:e})):t.classList.remove(Xs)}),t,t.classList.contains(Qs)))}_keydown(t){if(![zs,Ws,Bs,Rs,Vs,Ks].includes(t.key))return;t.stopPropagation(),// stopPropagation/preventDefault both added to support up/down keys without scrolling the page
t.preventDefault();const e=this._getChildren().filter((t=>!Rt(t)));let i;if([Vs,Ks].includes(t.key))i=e[t.key===Vs?0:e.length-1];else{const n=[Ws,Rs].includes(t.key);i=te(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),eo.getOrCreateInstance(i).show())}_getChildren(){
// collection of inner elements
return Te.find(Zs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),
// set attributes to the related panel too
this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=Te.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=Te.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ys,Us),n(".dropdown-menu",Xs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Us)}
// Try to get the inner element (usually the .nav-link)
_getInnerElement(t){return t.matches(Zs)?t:Te.findOne(Zs,t)}
// Try to get the outer element (usually the .nav-item)
_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}
// Static
static jQueryInterface(t){return this.each((function(){const e=eo.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}
/**
* Data API implementation
*/me.on(document,Fs,Js,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Rt(this)||eo.getOrCreateInstance(this).show()})),
/**
* Initialize on focus
*/
me.on(window,qs,(()=>{for(const t of Te.find(to))eo.getOrCreateInstance(t)})),
/**
* jQuery
*/
Gt(eo);
/**
* --------------------------------------------------------------------------
* Bootstrap toast.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* --------------------------------------------------------------------------
*/
/**
* Constants
*/
const io=".bs.toast",no=`mouseover${io}`,so=`mouseout${io}`,oo=`focusin${io}`,ro=`focusout${io}`,ao=`hide${io}`,lo=`hidden${io}`,co=`show${io}`,ho=`shown${io}`,uo="hide",fo="show",po="showing",go={animation:"boolean",autohide:"boolean",delay:"number"},mo={animation:!0,autohide:!0,delay:5e3};
/**
* Class definition
*/
class _o extends Ae{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}
// Getters
static get Default(){return mo}static get DefaultType(){return go}static get NAME(){return"toast"}
// Public
show(){me.trigger(this._element,co).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(uo),// @deprecated
Ut(this._element),this._element.classList.add(fo,po),this._queueCallback((()=>{this._element.classList.remove(po),me.trigger(this._element,ho),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(me.trigger(this._element,ao).defaultPrevented||(this._element.classList.add(po),this._queueCallback((()=>{this._element.classList.add(uo),// @deprecated
this._element.classList.remove(po,fo),me.trigger(this._element,lo)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(fo),super.dispose()}isShown(){return this._element.classList.contains(fo)}
// Private
_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(){me.on(this._element,no,(t=>this._onInteraction(t,!0))),me.on(this._element,so,(t=>this._onInteraction(t,!1))),me.on(this._element,oo,(t=>this._onInteraction(t,!0))),me.on(this._element,ro,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}
// Static
static jQueryInterface(t){return this.each((function(){const e=_o.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}
/**
* Data API implementation
*/Ce(_o),
/**
* jQuery
*/
Gt(_o);const bo=Object.freeze(Object.defineProperty({__proto__:null,Alert:Se,Button:$e,Carousel:ui,Collapse:Ci,Dropdown:Yi,Modal:Dn,Offcanvas:Yn,Popover:ws,ScrollSpy:Ds,Tab:eo,Toast:_o,Tooltip:ms},Symbol.toStringTag,{value:"Module"}));
/*
Core dropdowns
*/[].slice.call(document.querySelectorAll('[data-bs-toggle="dropdown"]')).map((function(t){let e={boundary:"viewport"===t.getAttribute("data-bs-boundary")?document.querySelector(".btn"):"clippingParents"};return new Yi(t,e)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){let e={delay:{show:50,hide:50},html:"true"===t.getAttribute("data-bs-html")??!1,placement:t.getAttribute("data-bs-placement")??"auto"};return new ms(t,e)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')).map((function(t){let e={delay:{show:50,hide:50},html:"true"===t.getAttribute("data-bs-html")??!1,placement:t.getAttribute("data-bs-placement")??"auto"};return new ws(t,e)})),[].slice.call(document.querySelectorAll('[data-bs-toggle="switch-icon"]')).map((function(t){t.addEventListener("click",(e=>{e.stopPropagation(),t.classList.toggle("active")}))})),(()=>{const t=window.location.hash;t&&[].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]')).filter((e=>e.hash===t)).map((t=>{new eo(t).show()}))})(),[].slice.call(document.querySelectorAll('[data-bs-toggle="toast"]')).map((function(t){if(!t.hasAttribute("data-bs-target"))return;const e=new _o(t.getAttribute("data-bs-target"));t.addEventListener("click",(()=>{e.show()}))}));const vo="tblr-",yo=(t,e)=>{const i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?`rgba(${parseInt(i[1],16)}, ${parseInt(i[2],16)}, ${parseInt(i[3],16)}, ${e})`:null},wo=Object.freeze(Object.defineProperty({__proto__:null,getColor:(t,e=1)=>{const i=getComputedStyle(document.body).getPropertyValue(`--${vo}${t}`).trim();return 1!==e?yo(i,e):i},hexToRgba:yo,prefix:vo},Symbol.toStringTag,{value:"Module"}));globalThis.bootstrap=bo,globalThis.tabler=wo}));
//# sourceMappingURL=tabler.js.map
//# sourceMappingURL=tabler.min.js.map