PageSourceSearch

https://nalog.gov.by/bitrix/cache/js/s1/main_template/template_d46…36451a07f7e81956303e_v1.js?1789716847410168

js nalog.gov.by collected 2026-09-24 17:34:52 UTC 410,168 bytes, 8,901 lines download raw bytes

1
2; /* Start:"a:4:{s:4:"full";s:63:"/local/templates/main_template/js/popper.min.js?175862869919191";s:6:"source";s:47:"/local/templates/main_template/js/popper.min.js";s:3:"min";s:47:"/local/templates/main_template/js/popper.min.js";s:3:"map";s:51:"/local/templates/main_template/js/popper.min.js.map";}"*/
3/*
4 Copyright (C) Federico Zivolo 2017
5 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).�
vendor: 19,016 bytes, lines 5-6
5
6 */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:e?e.ownerDocument.documentElement:document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',i=e.nodeName;if('BODY'===i||'HTML'===i){var n=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||n;return r[o]}return e[o]}function l(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=a(t,'top'),n=a(t,'left'),r=o?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=n*r,e.right+=n*r,e}function f(e,t){var o='x'===t?'Left':'Top',i='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'],10)+parseFloat(e['border'+i+'Width'],10)}function m(e,t,o,i){return J(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],ie()?o['offset'+e]+i['margin'+('Height'===e?'Top':'Left')]+i['margin'+('Height'===e?'Bottom':'Right')]:0)}function h(){var e=document.body,t=document.documentElement,o=ie()&&getComputedStyle(t);return{height:m('Height',e,t,o),width:m('Width',e,t,o)}}function c(e){return se({},e,{right:e.left+e.width,bottom:e.top+e.height})}function g(e){var o={};if(ie())try{o=e.getBoundingClientRect();var i=a(e,'top'),n=a(e,'left');o.top+=i,o.left+=n,o.bottom+=i,o.right+=n}catch(e){}else o=e.getBoundingClientRect();var r={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},p='HTML'===e.nodeName?h():{},s=p.width||e.clientWidth||r.right-r.left,d=p.height||e.clientHeight||r.bottom-r.top,l=e.offsetWidth-s,m=e.offsetHeight-d;if(l||m){var g=t(e);l-=f(g,'x'),m-=f(g,'y'),r.width-=l,r.height-=m}return c(r)}function u(e,o){var i=ie(),r='HTML'===o.nodeName,p=g(e),s=g(o),d=n(e),a=t(o),f=parseFloat(a.borderTopWidth,10),m=parseFloat(a.borderLeftWidth,10),h=c({top:p.top-s.top-f,left:p.left-s.left-m,width:p.width,height:p.height});if(h.marginTop=0,h.marginLeft=0,!i&&r){var u=parseFloat(a.marginTop,10),b=parseFloat(a.marginLeft,10);h.top-=f-u,h.bottom-=f-u,h.left-=m-b,h.right-=m-b,h.marginTop=u,h.marginLeft=b}return(i?o.contains(d):o===d&&'BODY'!==d.nodeName)&&(h=l(h,o)),h}function b(e){var t=e.ownerDocument.documentElement,o=u(e,t),i=J(t.clientWidth,window.innerWidth||0),n=J(t.clientHeight,window.innerHeight||0),r=a(t),p=a(t,'left'),s={top:r-o.top+o.marginTop,left:p-o.left+o.marginLeft,width:i,height:n};return c(s)}function w(e){var i=e.nodeName;return'BODY'===i||'HTML'===i?!1:'fixed'===t(e,'position')||w(o(e))}function y(e,t,i,r){var p={top:0,left:0},s=d(e,t);if('viewport'===r)p=b(s);else{var a;'scrollParent'===r?(a=n(o(t)),'BODY'===a.nodeName&&(a=e.ownerDocument.documentElement)):'window'===r?a=e.ownerDocument.documentElement:a=r;var l=u(a,s);if('HTML'===a.nodeName&&!w(s)){var f=h(),m=f.height,c=f.width;p.top+=l.top-l.marginTop,p.bottom=m+l.top,p.left+=l.left-l.marginLeft,p.right=c+l.left}else p=l}return p.left+=i,p.top+=i,p.right-=i,p.bottom-=i,p}function E(e){var t=e.width,o=e.height;return t*o}function v(e,t,o,i,n){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=y(o,i,r,n),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return se({key:e},s[e],{area:E(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,i=e.height;return t>=o.clientWidth&&i>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function O(e,t,o){var i=d(t,o);return u(o,i)}function L(e){var t=getComputedStyle(e),o=parseFloat(t.marginTop)+parseFloat(t.marginBottom),i=parseFloat(t.marginLeft)+parseFloat(t.marginRight),n={width:e.offsetWidth+i,height:e.offsetHeight+o};return n}function x(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function S(e,t,o){o=o.split('-')[0];var i=L(e),n={width:i.width,height:i.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return n[p]=t[p]+t[d]/2-i[d]/2,n[s]=o===s?t[s]-i[a]:t[x(s)],n}function T(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function D(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var i=T(e,function(e){return e[t]===o});return e.indexOf(i)}function C(t,o,i){var n=void 0===i?t:t.slice(0,D(t,'name',i));return n.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var i=t['function']||t.fn;t.enabled&&e(i)&&(o.offsets.popper=c(o.offsets.popper),o.offsets.reference=c(o.offsets.reference),o=i(o,t))}),o}function N(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=O(this.state,this.popper,this.reference),e.placement=v(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=S(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position='absolute',e=C(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function k(e,t){return e.some(function(e){var o=e.name,i=e.enabled;return i&&o===t})}function W(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length-1;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function P(){return this.state.isDestroyed=!0,k(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.left='',this.popper.style.position='',this.popper.style.top='',this.popper.style[W('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function B(e){var t=e.ownerDocument;return t?t.defaultView:window}function H(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||H(n(p.parentNode),t,o,i),i.push(p)}function A(e,t,o,i){o.updateBound=i,B(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return H(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function I(){this.state.eventsEnabled||(this.state=A(this.reference,this.options,this.state,this.scheduleUpdate))}function M(e,t){return B(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function R(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=M(this.reference,this.state))}function U(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function Y(e,t){Object.keys(t).forEach(function(o){var i='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&U(t[o])&&(i='px'),e.style[o]=t[o]+i})}function j(e,t){Object.keys(t).forEach(function(o){var i=t[o];!1===i?e.removeAttribute(o):e.setAttribute(o,t[o])})}function F(e,t,o){var i=T(e,function(e){var o=e.name;return o===t}),n=!!i&&e.some(function(e){return e.name===o&&e.enabled&&e.order<i.order});if(!n){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return n}function K(e){return'end'===e?'start':'start'===e?'end':e}function q(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=ae.indexOf(e),i=ae.slice(o+1).concat(ae.slice(0,o));return t?i.reverse():i}function V(e,t,o,i){var n=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+n[1],p=n[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=i;}var d=c(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?J(document.documentElement.clientHeight,window.innerHeight||0):J(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function z(e,t,o,i){var n=[0,0],r=-1!==['right','left'].indexOf(i),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(T(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,i){var n=(1===i?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return V(e,n,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,i){U(o)&&(n[t]+=o*('-'===e[i-1]?-1:1))})}),n}function G(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=n.split('-')[0];return o=U(+i)?[+i,0]:z(i,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}for(var _=Math.min,X=Math.floor,J=Math.max,Q='undefined'!=typeof window&&'undefined'!=typeof document,Z=['Edge','Trident','Firefox'],$=0,ee=0;ee<Z.length;ee+=1)if(Q&&0<=navigator.userAgent.indexOf(Z[ee])){$=1;break}var i,te=Q&&window.Promise,oe=te?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},$))}},ie=function(){return void 0==i&&(i=-1!==navigator.appVersion.indexOf('MSIE 10')),i},ne=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},re=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,i){return o&&e(t.prototype,o),i&&e(t,i),t}}(),pe=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},se=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var i in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},de=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],ae=de.slice(3),le={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},fe=function(){function t(o,i){var n=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};ne(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(n.update)},this.update=oe(this.update.bind(this)),this.options=se({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=i&&i.jquery?i[0]:i,this.options.modifiers={},Object.keys(se({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){n.options.modifiers[e]=se({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return se({name:e},n.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(n.reference,n.popper,n.options,t,n.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return re(t,[{key:'update',value:function(){return N.call(this)}},{key:'destroy',value:function(){return P.call(this)}},{key:'enableEventListeners',value:function(){return I.call(this)}},{key:'disableEventListeners',value:function(){return R.call(this)}}]),t}();return fe.Utils=('undefined'==typeof window?global:window).PopperUtils,fe.placements=de,fe.Defaults={placement:'bottom',eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],i=t.split('-')[1];if(i){var n=e.offsets,r=n.reference,p=n.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:pe({},d,r[d]),end:pe({},d,r[d]+r[a]-p[a])};e.offsets.popper=se({},p,l[i])}return e}},offset:{order:200,enabled:!0,fn:G,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||r(e.instance.popper);e.instance.reference===o&&(o=r(o));var i=y(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=i;var n=t.priority,p=e.offsets.popper,s={primary:function(e){var o=p[e];return p[e]<i[e]&&!t.escapeWithReference&&(o=J(p[e],i[e])),pe({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=p[o];return p[e]>i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(i[d])&&(e.offsets.popper[d]=r(i[d])-o[a]),o[d]>r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var i;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var n=o.element;if('string'==typeof n){if(n=e.instance.popper.querySelector(n),!n)return e;}else if(!e.instance.popper.contains(n))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',g=a?'bottom':'right',u=L(n)[l];d[g]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[g]-u)),d[m]+u>s[g]&&(e.offsets.popper[m]+=d[m]+u-s[g]),e.offsets.popper=c(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=J(_(s[l]-u,v),0),e.arrowElement=n,e.offsets.arrow=(i={},pe(i,m,Math.round(v)),pe(i,h,''),i),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=x(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=x(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)<f(l.right)||'top'===i&&f(a.bottom)>f(l.top)||'bottom'===i&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=C(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=x(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,i=t.y,n=e.offsets.popper,p=T(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==p&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===p?t.gpuAcceleration:p,l=r(e.instance.popper),f=g(l),m={position:n.position},h={left:X(n.left),top:X(n.top),bottom:X(n.bottom),right:X(n.right)},c='bottom'===o?'top':'bottom',u='right'===i?'left':'right',b=W('transform');if(d='bottom'==c?-f.height+h.bottom:h.top,s='right'==u?-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[u]=0,m.willChange='transform';else{var w='bottom'==c?-1:1,y='right'==u?-1:1;m[c]=d*w,m[u]=s*y,m.willChange=c+', '+u}var E={"x-placement":e.placement};return e.attributes=se({},E,e.attributes),e.styles=se({},m,e.styles),e.arrowStyles=se({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return Y(e.instance.popper,e.styles),j(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&Y(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,i,n){var r=O(n,t,e),p=v(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),Y(t,{position:'absolute'}),o},gpuAcceleration:void 0}}},fe});
6
7/* End */
8;
9; /* Start:"a:4:{s:4:"full";s:60:"/local/templates/main_template/js/dropdown.js?17586286992328";s:6:"source";s:45:"/local/templates/main_template/js/dropdown.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
10// ================   Tab To DropDown   ==============================================
11
12(function( $ ) {
13    $.fn.tabConvert = function(options) {
14
15        var settings = $.extend({
16            activeClass: "active",
17            screenSize: 767,
18        }, options );
19
20        return this.each(function(i) {
21            var wrap = $(this).wrap('<div class="tab-to-dropdown"></div>'),
22                currentItem = $(this),
23                container = $(this).closest('.tab-to-dropdown'),
24                value = $(this).find('.'+settings.activeClass).text(),
25                toggler = '<button class="selected-tab">'+ value +'</button>';
26            currentItem.addClass('converted-tab');
27            container.prepend(toggler);
28
29            // function to slide dropdown
30            function tabConvert_toggle(){
31                currentItem.parent().find('.converted-tab').slideToggle(0);
32            }
33
34            container.find('.selected-tab').click(function(){
35                tabConvert_toggle();
36            });
37
38            currentItem.find('a').click(function(e){
39                var windowWidth = window.innerWidth;
40                if( settings.screenSize >= windowWidth){
41                    tabConvert_toggle();
42                    var selected_text = $(this).text();
43                    $(this).closest('.tab-to-dropdown').find('.selected-tab').text(selected_text);
44                }
45            });
46
47            //Remove toggle if screen size is bigger than defined screen size
48            function resize_function(){
49                var windowWidth = window.innerWidth;
50                if( settings.screenSize >= windowWidth){
51                    currentItem.css('display','none');
52                    currentItem.parent().find('.selected-tab').css('display','');
53                }else{
54                    currentItem.css('display','');
55                    currentItem.parent().find('.selected-tab').css('display','none');
56                }
57            }
58            resize_function();
59
60            $(window).resize(function(){
61                resize_function();
62            });
63
64        });
65    };
66
67// 	Toggle will appear on size 991px
68    $('.nav-tab').tabConvert({
69        activeClass: "active",
70        screenSize: 767,
71    });
72
73}( jQuery ));
74
75/* End */
76;
77; /* Start:"a:4:{s:4:"full";s:56:"/local/templates/main_template/script.js?177486392766870";s:6:"source";s:40:"/local/templates/main_template/script.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
78
79// Global
80/*!
81 * JavaScript Cookie v2.2.1
82 * https://github.com/js-cookie/js-cookie
83 *
84 * Copyright 2006, 2015 Klaus Hartl & Fagner Brack
85 * Released under the MIT license
86 */
87(function (factory) {
88    var registeredInModuleLoader;
89    if (typeof define === 'function' && define.amd) {
90        define(['require', 'exports'], factory);
91        registeredInModuleLoader = true;
92    }
93    if (typeof exports === 'object') {
94        module.exports = factory();
95        registeredInModuleLoader = true;
96    }
97    if (!registeredInModuleLoader) {
98        var OldCookies = window.Cookies;
99        var api = window.Cookies = factory();
100        api.noConflict = function () {
101            window.Cookies = OldCookies;
102            return api;
103        };
104    }
105}(function () {
106    function extend () {
107        var i = 0;
108        var result = {};
109        for (; i < arguments.length; i++) {
110            var attributes = arguments[ i ];
111            for (var key in attributes) {
112                result[key] = attributes[key];
113            }
114        }
115        return result;
116    }
117
118    function decode (s) {
119        return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
120    }
121
122    function init (converter) {
123        function api() {}
124
125        function set (key, value, attributes) {
126            if (typeof document === 'undefined') {
127                return;
128            }
129
130            attributes = extend({
131                path: '/'
132            }, api.defaults, attributes);
133
134            if (typeof attributes.expires === 'number') {
135                attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
136            }
137
138            // Мы используем "expires" вместо "max-age", так как "max-age" не поддерживается в IE
139            attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
140
141            try {
142                var result = JSON.stringify(value);
143                if (/^[\{\[]/.test(result)) {
144                    value = result;
145                }
146            } catch (e) {}
147
148            value = converter.write ?
149                converter.write(value, key) :
150                encodeURIComponent(String(value))
151                    .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
152
153            key = encodeURIComponent(String(key))
154                .replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
155                .replace(/[\(\)]/g, escape);
156
157            var stringifiedAttributes = '';
158            for (var attributeName in attributes) {
159                if (!attributes[attributeName]) {
160                    continue;
161                }
162                stringifiedAttributes += '; ' + attributeName;
163                if (attributes[attributeName] === true) {
164                    continue;
165                }
166
167                // Учитываем разделение по секциям RFC 6265, статья 5.2:
168                // ...
169                // 3. Если оставшиеся непарсированные атрибуты содержат символ %x3B (";"):
170                //     перехватывать символы непарсированных атрибутов до, но не включая первый символ %x3B (";").
171                // ...
172                stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
173            }
174
175            return (document.cookie = key + '=' + value + stringifiedAttributes);
176        }
177
178        function get (key, json) {
179            if (typeof document === 'undefined') {
180                return;
181            }
182
183            var jar = {};
184            // Чтобы предотвратить цикл в первом месте, присваиваем пустой массив
185            // в случае отсутствия куки вообще.
186            var cookies = document.cookie ? document.cookie.split('; ') : [];
187            var i = 0;
188
189            for (; i < cookies.length; i++) {
190                var parts = cookies[i].split('=');
191                var cookie = parts.slice(1).join('=');
192
193                if (!json && cookie.charAt(0) === '"') {
194                    cookie = cookie.slice(1, -1);
195                }
196
197                try {
198                    var name = decode(parts[0]);
199                    cookie = (converter.read || converter)(cookie, name) ||
200                        decode(cookie);
201
202                    if (json) {
203                        try {
204                            cookie = JSON.parse(cookie);
205                        } catch (e) {}
206                    }
207
208                    jar[name] = cookie;
209
210                    if (key === name) {
211                        break;
212                    }
213                } catch (e) {}
214            }
215
216            return key ? jar[key] : jar;
217        }
218
219        api.set = set;
220        api.get = function (key) {
221            return get(key, false /* читаем как сырые */);
222        };
223        api.getJSON = function (key) {
224            return get(key, true /* читаем как json */);
225        };
226        api.remove = function (key, attributes) {
227            set(key, '', extend(attributes, {
228                expires: -1
229            }));
230        };
231
232        api.defaults = {};
233
234        api.withConverter = init;
235
236        return api;
237    }
238
239    return init(function () {});
240}));
241
242jQuery(document).ready(function($){
243    $.bvi({
244        'bvi_target' : '.bvi-open', // Класс ссылки включения плагина
245        "bvi_theme" : "white", // Цвет сайта
246        "bvi_font" : "arial", // Шрифт
247        "bvi_font_size" : 16, // Размер шрифта
248        "bvi_letter_spacing" : "normal", // Межбуквенный интервал
249        "bvi_line_height" : "normal", // Междустрочный интервал
250        "bvi_images" : false, // Изображения
251        "bvi_reload" : false, // Перезагрузка страницы при выключении плагина
252        "bvi_fixed" : false, // Фиксирование панели для слабовидящих вверху страницы
253        "bvi_tts" : true, // Синтез речи
254        "bvi_flash_iframe" : true, // Встроенные элементы (видео, карты и тд.)
255        "bvi_hide" : false // Скрывает панель для слабовидящих и показывает иконку панели.
256    });
257});;
258/*!
259 * Button visually impaired v2.0
260 */
261(function ($) {
262    "use strict";
263    $.bvi = function (options) {
264        var default_setting = $.extend({
265            'bvi_target': '.bvi-open',
266            'bvi_theme': 'white',
267            'bvi_font': 'arial',
268            'bvi_font_size': 16,
269            'bvi_letter_spacing': 'normal',
270            'bvi_line_height': 'normal',
271            'bvi_images': true,
272            'bvi_reload': false,
273            'bvi_fixed': true,
274            'bvi_tts': true,
275            'bvi_flash_iframe': true,
276            'bvi_hide': false
277        }, options);
278
279        var versionIE = detectIE();
280        var selector = default_setting.bvi_target;
281        var check_bvi_theme;
282        var check_bvi_font;
283        var check_bvi_letter_spacing;
284        var check_bvi_line_height;
285        var check_bvi_font_size;
286        var check_bvi_images;
287        var check_bvi_fixed;
288        var check_bvi_tts;
289        var check_bvi_flash_iframe;
290        var check_bvi_hide;
291        var checkError;
292        var bvi_tts_synth = window.speechSynthesis;
293        var bvi_tts_support_browser = (bvi_tts_synth !== undefined) ? true : false;
294        var sm = '576';
295        var md = '768';
296        var lg = '992';
297        var xl = '1200';
298        var width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
299
300        console.log('Bvi console: ready Button visually impaired v2.0');
301
302        if (bvi_tts_support_browser) {
303            setInterval(function () {
304                if (bvi_tts_synth.speaking == false) {
305                    $('.bvi-tts-play').removeClass('disabled');
306                    $('.bvi-tts-pause').addClass('disabled');
307                    $('.bvi-tts-resume').addClass('disabled');
308                    $('.bvi-tts-stop').addClass('disabled');
309                }
310            }, 1000);
311            console.log('Bvi console: Чтение речи поддерживается в данной браузере');
312        } else {
313            console.log('Bvi console: Чтение речи не поддерживается в данном браузере');
314        }
315
316        $(window).on('resize', function () {
317            var width_resize = (window.innerWidth > 0) ? window.innerWidth : screen.width;
318
319            if (width_resize >= lg) {
320                $('.bvi-panel-container').show();
321            }
322
323            if (width_resize <= lg) {
324                $('.bvi-panel-container').removeClass('bvi-container').addClass('bvi-container-fluid');
325            } else {
326                $('.bvi-panel-container').removeClass('bvi-container-fluid').addClass('bvi-container');
327            }
328        });
329
330        function detectIE() {
331            var ua = window.navigator.userAgent;
332            var msie = ua.indexOf('MSIE ');
333
334            if (msie > 0) {
335                return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
336            }
337
338            var trident = ua.indexOf('Trident/');
339            if (trident > 0) {
340                var rv = ua.indexOf('rv:');
341                return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
342            }
343
344            var edge = ua.indexOf('Edge/');
345            if (edge > 0) {
346                return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
347            }
348
349            return false;
350        }
351
352        function bvi_tts_speak(text) {
353            if (Cookies.get('bvi-tts') === 'true' && bvi_tts_support_browser) {
354                bvi_tts_synth.cancel();
355                var voices = bvi_tts_synth.getVoices();
356                var chunkLength = 120;
357                var pattRegex = new RegExp('^[\\s\\S]{' + Math.floor(chunkLength / 2) + ',' + chunkLength + '}[.!?,]{1}|^[\\s\\S]{1,' + chunkLength + '}$|^[\\s\\S]{1,' + chunkLength + '} ');
358                var $array = [];
359                var $text = text;
360
361                while ($text.length > 0) {
362                    $array.push($text.match(pattRegex)[0]);
363                    $text = $text.substring($array[$array.length - 1].length);
364                }
365
366                $.each($array, function () {
367                    var speechUtterance = new SpeechSynthesisUtterance(this.trim());
368                    speechUtterance.volume = 1;
369                    speechUtterance.rate = 1;
370                    speechUtterance.pitch = 1;
371                    speechUtterance.lang = 'ru-RU';
372
373                    speechUtterance.onstart = function (event) {
374                        console.log(speechUtterance);
375                        //console.log('Start called for: ' + event.utterance.text + '-' + event.charIndex);
376                    };
377
378                    speechUtterance.onend = function (event) {
379                        //console.log(event.name + ' end ' + event.elapsedTime + ' milliseconds.');
380                    };
381
382                    speechUtterance.onpause = function (event) {
383                        //console.log(event.name + ' pause ' + event.elapsedTime + ' milliseconds.');
384                    };
385
386                    speechUtterance.onresume = function (event) {
387                        //console.log(event.name + ' resume ' + event.elapsedTime + ' milliseconds.');
388                    };
389
390                    speechUtterance.onboundary = function (event) {
391                        /*
392                        var world = bvi_getWordAt(event.utterance.text, event.charIndex);
393                        var src_str = $(id).text();
394                        var term = world.replace(/(\s+)/, "(<[^>]+>)*$1(<[^>
394]+>)*");
395                        var pattern = new RegExp("(" + term + ")", "gi");
396                        src_str = src_str.replace(pattern, "<mark>$1</mark>");
397                        src_str = src_str.replace(/(<mark>[^<>]*)((<[^>]+>)+)([^<>]*<\/mark>)/, "$1</mark>$2<mark>$4");
398                        $(id).html(src_str);
399                        console.log(event.utterance.text);
400                        */
401                    };
402
403                    for (var i = 0; i < voices.length; i++) {
404                        if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'Google русский') {
405                            speechUtterance.voice = voices[i];
406                            speechUtterance.voiceURI = voices[i].voiceURI;
407                        } else if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'Microsoft Irina Desktop - Russian') {
408                            speechUtterance.voice = voices[i];
409                            speechUtterance.voiceURI = voices[i].voiceURI;
410                        } else if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'urn:moz-tts:sapi:Microsoft Irina Desktop - Russian?ru-RU') {
411                            speechUtterance.voice = voices[i];
412                            speechUtterance.voiceURI = voices[i].voiceURI;
413                        } else if (voices[i].lang === 'ru-RU' && voices[i].voiceURI === 'com.apple.speech.synthesis.voice.yuri') {
414                            speechUtterance.voice = voices[i];
415                            speechUtterance.voiceURI = voices[i].voiceURI;
416                        }
417                    }
418
419                    bvi_tts_synth.speak(speechUtterance);
420                });
421            }
422        }
423
424        function bvi_getWordAt(str, pos) {
425            str = String(str);
426            pos = Number(pos) >>> 0;
427            var left = str.slice(0, pos + 1).search(/\S+$/),
428                right = str.slice(pos).search(/\s/);
429            if (right < 0) {
430                return str.slice(left);
431            }
432            return str.slice(left, right + pos);
433        }
434
435        function bvi_tts_player() {
436            var bvi_tts_text_id;
437            var bvi_tts_voice_target = $(".bvi-tts");
438
439            $('.bvi-tts-link').remove();
440            $('.bvi-tts-text').contents().unwrap();
441
442            if (Cookies.get('bvi-tts') === 'true' && bvi_tts_support_browser) {
443                bvi_tts_voice_target.each(function (index) {
444                    bvi_tts_text_id = 'bvi-tts-text-id-' + index;
445                    $(this).wrapInner('<div class="bvi-tts-text ' + bvi_tts_text_id + '"></div>');
446                    $(this).prepend('<div class="bvi-tts-link bvi-tts-link-id-' + index + '" data-bvi-tts-class-text=".' + bvi_tts_text_id + '" data-bvi-tts-link-id=".bvi-tts-link-id-' + index + '">\n' +
447                        '    <a href="#" class="bvi-tts-play bvi-link">Воспроизвести</a>\n' +
448                        '    <a href="#" class="bvi-tts-pause bvi-link disabled">Пауза</i></a>\n' +
449                        '    <a href="#" class="bvi-tts-resume bvi-link disabled">Продолжить</i></a>\n' +
450                        '    <a href="#" class="bvi-tts-stop bvi-link disabled">Стоп</i></a>\n' +
451                        '</div>');
452                });
453
454                $('.bvi-tts-link').show();
455
456                $('.bvi-tts-play').click(function () {
457                    bvi_tts_synth.cancel();
458                    var bvi_tts_class = $(this).parent().data('bvi-tts-class-text');
459                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
460                    var bvi_tts_class_text = $(bvi_tts_class).text();
461
462                    bvi_tts_speak(bvi_tts_class_text);
463
464                    $('.bvi-tts-play').removeClass('disabled');
465                    $('.bvi-tts-pause').addClass('disabled');
466                    $('.bvi-tts-resume').addClass('disabled');
467                    $('.bvi-tts-stop').addClass('disabled');
468                    $(bvi_tts_links_id + ' .bvi-tts-play').addClass('disabled');
469                    $(bvi_tts_links_id + ' .bvi-tts-pause').removeClass('disabled');
470                    $(bvi_tts_links_id + ' .bvi-tts-stop').removeClass('disabled');
471                    return false;
472                });
473
474                $('.bvi-tts-resume').click(function () {
475                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
476                    $(bvi_tts_links_id + ' .bvi-tts-pause').removeClass('disabled');
477                    $(this).addClass('disabled');
478                    bvi_tts_synth.resume();
479                    return false;
480                });
481
482                $('.bvi-tts-pause').click(function () {
483                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
484                    $(bvi_tts_links_id + ' .bvi-tts-resume').removeClass('disabled');
485                    $(this).addClass('disabled');
486                    bvi_tts_synth.pause();
487                    return false;
488                });
489
490                $('.bvi-tts-stop').click(function () {
491                    bvi_tts_synth.cancel();
492                    var bvi_tts_links_id = $(this).parent().data('bvi-tts-link-id');
493                    $(this).addClass('disabled');
494                    $(bvi_tts_links_id + ' .bvi-tts-play').removeClass('disabled');
495                    $(bvi_tts_links_id + ' .bvi-tts-pause').addClass('disabled');
496                    $(bvi_tts_links_id + ' .bvi-tts-resume').addClass('disabled');
497                    return false;
498                });
499            } else {
500                $('.bvi-tts-link').remove();
501                $('.bvi-tts-text').contents().unwrap();
502            }
503        }
504
505        function bvi_click() {
506            $("#bvi-panel-close, .bvi-panel-close, #bvi-toggler-close").click(function () {
507
508                bvi_tts_speak('Обычная версия сайта');
509
510                if (Cookies.get("bvi-reload") === 'true') {
511                    document.location.reload(true);
512                }
513
514                $(".bvi-body *").each(function () {
515                    var $this = $(this);
516                    var background_image = $this.css("background-image");
517                    var pattern = background_image.replace(/.*\s?url\([\'\"]?/, '').replace(/[\'\"]?\).*/, '');
518                    if (pattern != 'none') {
519                        if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
520                            var data_bvi_img_original = $this.attr('data-bvi-background-image-original') || pattern;
521                            $this.css("background-image", "url(" + data_bvi_img_original + ")");
522                            $this.removeClass('bvi-background-image');
523                        }
524                    }
525                });
526
527                $("img").each(function () {
528                    $(this).show();
529                    $('div.bvi-img').remove();
530                    $(this).removeClass("bvi-background-image");
531                    if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
532                        var data_bvi_img_original = $(this).attr('data-bvi-img-original') || this.src;
533                        this.src = data_bvi_img_original;
534                    }
535                });
536
537                Cookies.remove("bvi-panel-active", {path: "/"});
538                Cookies.remove("bvi-font-size", {path: "/"});
539                Cookies.remove("bvi-theme", {path: "/"});
540                Cookies.remove("bvi-images", {path: "/"});
541                Cookies.remove("bvi-line-height", {path: "/"});
542                Cookies.remove("bvi-letter-spacing", {path: "/"});
543                Cookies.remove("bvi-tts", {path: "/"});
544                Cookies.remove("bvi-font-family", {path: "/"});
545                Cookies.remove("bvi-panel-hide", {path: "/"});
546                Cookies.remove("bvi-flash-iframe", {path: "/"});
547                Cookies.remove("bvi-reload", {path: "/"});
548
549                active();
550                return false;
551            });
552
553            $('#bvi-panel-hide, #bvi-toggler-menu-hide').click(function () {
554                $('.bvi-panel').toggle(0);
555                $('.bvi-link-top').toggle(0);
556                set('data-bvi-panel-hide', 'bvi-panel-hide', true);
557                bvi_tts_speak('Панель скрыта');
558                return false;
559            });
560
561            $('#bvi-panel-show').click(function () {
562                $('.bvi-panel').toggle(0);
563                $('.bvi-link-top').toggle(0);
564                set('data-bvi-panel-hide', 'bvi-panel-hide', false);
565                bvi_tts_speak('Панель открыта');
566                return false;
567            });
568
569            $('#bvi-setting').click(function () {
570                $('.bvi-setting-menu').toggle(0);
571                $(this).toggleClass("active");
572                bvi_tts_speak('Дополнительные настройки');
573                return false;
574            });
575
576            $('#bvi-toggler').click(function () {
577                $('.bvi-panel-container').toggle(0);
578                $(this).toggleClass("active");
579                bvi_tts_speak('Меню');
580                return false;
581            });
582
583            $('#bvi-setting-close').click(function () {
584                $('.bvi-setting-menu').toggle(0);
585                $('#bvi-setting').toggleClass("active");
586                bvi_tts_speak('Дополнительные настройки закрыты');
587                return false;
588            });
589
590            $('#bvi-font-size-less').click(function () {
591                var size = parseFloat(Cookies.get("bvi-font-size")) - 1;
592                $(this).addClass('active').siblings().removeClass('active');
593                $('#bvi-font-size').text(size);
594                if (size != 0) {
595                    set('data-bvi-size', 'bvi-font-size', size);
596                    bvi_tts_speak('Размер шрифта уменьшен');
597                }
598                return false;
599            });
600
601            $('#bvi-font-size-more').click(function () {
602                var size = parseFloat(Cookies.get("bvi-font-size")) + 1;
603                $(this).addClass('active').siblings().removeClass('active');
604                $('#bvi-font-size').text(size);
605                if (size != 40) {
606                    set('data-bvi-size', 'bvi-font-size', size);
607                    bvi_tts_speak('Размер шрифта увеличен');
608                }
609                return false;
610            });
611
612            $("#bvi-theme-white").click(function () {
613                $(this).addClass('active').siblings().removeClass('active');
614                set('data-bvi-theme', 'bvi-theme', 'white');
615                bvi_tts_speak('Цвет сайта черным по белому');
616                return false;
617            });
618
619            $("#bvi-theme-black").click(function () {
620                $(this).addClass('active').siblings().removeClass('active');
621                set('data-bvi-theme', 'bvi-theme', 'black');
622                bvi_tts_speak('Цвет сайта белым по черному');
623                return false;
624            });
625
626            $("#bvi-theme-blue").click(function () {
627                $(this).addClass('active').siblings().removeClass('active');
628                set('data-bvi-theme', 'bvi-theme', 'blue');
629                bvi_tts_speak('Цвет сайта тёмно-синим по голубому');
630                return false;
631            });
632
633            $("#bvi-theme-brown").click(function () {
634                $(this).addClass('active').siblings().removeClass('active');
635                set('data-bvi-theme', 'bvi-theme', 'brown');
636                bvi_tts_speak('Цвет сайта коричневым по бежевому');
637                return false;
638            });
639
640            $("#bvi-theme-green").click(function () {
641                $(this).addClass('active').siblings().removeClass('active');
642                set('data-bvi-theme', 'bvi-theme', 'green');
643                bvi_tts_speak('Цвет сайта зеленым по тёмно-коричневому');
644                return false;
645            });
646
647            $('#bvi-images-true').click(function () {
648                $(this).addClass('active').siblings().removeClass('active');
649                set('data-bvi-images', 'bvi-images', true);
650                bvi_tts_speak('Изображения включены');
651                return false;
652            });
653
654            $('#bvi-images-false').click(function () {
655                $(this).addClass('active').siblings().removeClass('active');
656                set('data-bvi-images', 'bvi-images', false);
657                bvi_tts_speak('Изображения выключены');
658                return false;
659            });
660
661            $('#bvi-images-grayscale').click(function () {
662                $(this).addClass('active').siblings().removeClass('active');
663                set('data-bvi-images', 'bvi-images', 'grayscale');
664                bvi_tts_speak('Изображения чёрно-белые');
665                return false;
666            });
667
668            $("#bvi-line-height-normal").click(function () {
669                $(this).addClass('active').siblings().removeClass('active');
670                set('data-bvi-line-height', 'bvi-line-height', 'normal');
671                bvi_tts_speak('Междустрочный интервал cтандартный');
672                return false;
673            });
674
675            $("#bvi-line-height-average").click(function () {
676                $(this).addClass('active').siblings().removeClass('active');
677                set('data-bvi-line-height', 'bvi-line-height', 'average');
678                bvi_tts_speak('Междустрочный интервал средний');
679                return false;
680            });
681
682            $("#bvi-line-height-big").click(function () {
683                $(this).addClass('active').siblings().removeClass('active');
684                set('data-bvi-line-height', 'bvi-line-height', 'big');
685                bvi_tts_speak('Междустрочный интервал большой');
686                return false;
687            });
688
689            $("#bvi-letter-spacing-normal").click(function () {
690                $(this).addClass('active').siblings().removeClass('active');
691                set('data-bvi-letter-spacing', 'bvi-letter-spacing', 'normal');
692                bvi_tts_speak('Межбуквенный интервал одинарный');
693                return false;
694            });
695
696            $("#bvi-letter-spacing-average").click(function () {
697                $(this).addClass('active').siblings().removeClass('active');
698                set('data-bvi-letter-spacing', 'bvi-letter-spacing', 'average');
699                bvi_tts_speak('Межбуквенный интервал полуторный');
700                return false;
701            });
702
703            $("#bvi-letter-spacing-big").click(function () {
704                $(this).addClass('active').siblings().removeClass('active');
705                set('data-bvi-letter-spacing', 'bvi-letter-spacing', 'big');
706                bvi_tts_speak('Межбуквенный интервал двойной');
707                return false;
708            });
709
710            $("#bvi-font-family-arial").click(function () {
711                $(this).addClass('active').siblings().removeClass('active');
712                set('data-bvi-font-family', 'bvi-font-family', 'arial');
713                bvi_tts_speak('Шрифт без засечек');
714                return false;
715            });
716
717            $("#bvi-font-family-times").click(function () {
718                $(this).addClass('active').siblings().removeClass('active');
719                set('data-bvi-font-family', 'bvi-font-family', 'times');
720                bvi_tts_speak('Шрифт с засечками');
721                return false;
722            });
723
724            $("#bvi-flash-iframe-true").click(function () {
725                $(this).addClass('active').siblings().removeClass('active');
726                set('data-bvi-flash-iframe', 'bvi-flash-iframe', true);
727                bvi_tts_speak('Включить встроенные элементы');
728                return false;
729            });
730
731            $("#bvi-flash-iframe-false").click(function () {
732                $(this).addClass('active').siblings().removeClass('active');
733                set('data-bvi-flash-iframe', 'bvi-flash-iframe', false);
734                bvi_tts_speak('Выключить встроенные элементы');
735                return false;
736            });
737
738            $("#bvi-tts-true").click(function () {
739                $(this).addClass('active').siblings().removeClass('active');
740                set('data-bvi-tts', 'bvi-tts', true);
741                bvi_tts_speak('Синтез речи включён');
742                bvi_tts_player();
743                return false;
744            });
745
746            $("#bvi-tts-false").click(function () {
747                $(this).addClass('active').siblings().removeClass('active');
748                set('data-bvi-tts', 'bvi-tts', false);
749                bvi_tts_speak('Синтез речи выключён');
750                bvi_tts_player();
751                return false;
752            });
753
754            $("#bvi-settings-default").click(function () {
755                $('#bvi-theme-' + Cookies.get("bvi-theme")).removeClass('active');
756                $('#bvi-images-' + Cookies.get("bvi-images")).removeClass('active');
757                $('#bvi-line-height-' + Cookies.get("bvi-line-height")).removeClass('active');
758                $('#bvi-letter-spacing-' + Cookies.get("bvi-letter-spacing")).removeClass('active');
759                $('#bvi-font-family-' + Cookies.get("bvi-font-family")).removeClass('active');
760                $('#bvi-flash-iframe-' + Cookies.get("bvi-flash-iframe")).removeClass('active');
761                $('#bvi-tts-' + Cookies.get("bvi-tts")).removeClass('active');
762
763                $('#bvi-theme-' + default_setting.bvi_theme).addClass('active');
764                $('#bvi-images-' + default_setting.bvi_images).addClass('active');
765                $('#bvi-line-height-' + default_setting.bvi_line_height).addClass('active');
766                $('#bvi-letter-spacing-' + default_setting.bvi_letter_spacing).addClass('active');
767                $('#bvi-font-family-' + default_setting.bvi_font).addClass('active');
768                $('#bvi-flash-iframe-' + default_setting.bvi_flash_iframe).addClass('active');
769                $('#bvi-tts-' + default_setting.bvi_tts).addClass('active');
770
771                $('#bvi-font-size').text(default_setting.bvi_font_size);
772
773                set('data-bvi-size', 'bvi-font-size', default_setting.bvi_font_size);
774                set('data-bvi-theme', 'bvi-theme', default_setting.bvi_theme);
775                set('data-bvi-images', 'bvi-images', default_setting.bvi_images);
776                set('data-bvi-line-height', 'bvi-line-height', default_setting.bvi_line_height);
777                set('data-bvi-letter-spacing', 'bvi-letter-spacing', default_setting.bvi_letter_spacing);
778                set('data-bvi-font-family', 'bvi-font-family', default_setting.bvi_font);
779                set('data-bvi-flash-iframe', 'bvi-flash-iframe', default_setting.bvi_flash_iframe);
780                set('data-bvi-tts', 'bvi-tts', default_setting.bvi_tts);
781                bvi_tts_speak('Настройки по умолчанию');
782                bvi_tts_player();
783                return false;
784            });
785        }
786
787        function set(data, set_cookies, set_cookies_data) {
788            Cookies.set(set_cookies, set_cookies_data, {path: "/", expires: 1});
789            $(".bvi-body").attr(data, Cookies.get(set_cookies));
790            get_image();
791        }
792
793        function set_active_link() {
794            $('#bvi-theme-' + Cookies.get("bvi-theme")).addClass('active');
795            $('#bvi-images-' + Cookies.get("bvi-images")).addClass('active');
796            $('#bvi-line-height-' + Cookies.get("bvi-line-height")).addClass('active');
797            $('#bvi-letter-spacing-' + Cookies.get("bvi-letter-spacing")).addClass('active');
798            $('#bvi-font-family-' + Cookies.get("bvi-font-family")).addClass('active');
799            $('#bvi-flash-iframe-' + Cookies.get("bvi-flash-iframe")).addClass('active');
800            $('#bvi-tts-' + Cookies.get("bvi-tts")).addClass('active');
801        }
802
803        function get() {
804            if (typeof Cookies.get("bvi-font-size") === 'undefined'
805                || typeof Cookies.get("bvi-theme") === 'undefined'
806                || typeof Cookies.get("bvi-images") === 'undefined'
807                || typeof Cookies.get("bvi-line-height") === 'undefined'
808                || typeof Cookies.get("bvi-letter-spacing") === 'undefined'
809                || typeof Cookies.get("bvi-tts") === 'undefined'
810                || typeof Cookies.get("bvi-font-family") === 'undefined'
811                || typeof Cookies.get("bvi-panel-hide") === 'undefined'
812                || typeof Cookies.get("bvi-flash-iframe") === 'undefined'
813                || typeof Cookies.get("bvi-reload") === 'undefined'
814                || typeof Cookies.get("bvi-fixed") === 'undefined'
815            ) {
816                Cookies.set("bvi-font-size", default_setting.bvi_font_size, {path: "/", expires: 1});
817                Cookies.set("bvi-theme", default_setting.bvi_theme, {path: "/", expires: 1});
818                Cookies.set("bvi-images", default_setting.bvi_images, {path: "/", expires: 1});
819                Cookies.set("bvi-line-height", default_setting.bvi_line_height, {path: "/", expires: 1});
820                Cookies.set("bvi-letter-spacing", default_setting.bvi_letter_spacing, {path: "/", expires: 1});
821                Cookies.set("bvi-tts", default_setting.bvi_tts, {path: "/", expires: 1});
822                Cookies.set("bvi-font-family", default_setting.bvi_font, {path: "/", expires: 1});
823                Cookies.set("bvi-panel-hide", default_setting.bvi_hide, {path: "/", expires: 1});
824                Cookies.set("bvi-flash-iframe", default_setting.bvi_flash_iframe, {path: "/", expires: 1});
825                Cookies.set("bvi-reload", default_setting.bvi_reload, {path: "/", expires: 1});
826                Cookies.set("bvi-fixed", default_setting.bvi_fixed, {path: "/", expires: 1});
827            }
828
829            $('.bvi-body').attr({
830                'data-bvi-panel-hide': Cookies.get("bvi-panel-hide"),
831                'data-bvi-size': Cookies.get("bvi-font-size"),
832                'data-bvi-theme': Cookies.get("bvi-theme"),
833                'data-bvi-images': Cookies.get("bvi-images"),
834                'data-bvi-line-height': Cookies.get("bvi-line-height"),
835                'data-bvi-letter-spacing': Cookies.get("bvi-letter-spacing"),
836                'data-bvi-font-family': Cookies.get("bvi-font-family"),
837                'data-bvi-flash-iframe': Cookies.get("bvi-flash-iframe"),
838                'data-bvi-reload': Cookies.get("bvi-reload"),
839                'data-bvi-tts': Cookies.get("bvi-tts"),
840                'data-bvi-fixed': Cookies.get("bvi-fixed")
841            });
842
843            $('#bvi-font-size').text(Cookies.get("bvi-font-size"));
844
845            var bvi_panel = Cookies.get("bvi-panel-hide");
846
847            if (bvi_panel === 'false' || typeof bvi_panel === 'undefined') {
848                $('.bvi-panel').show();
849                $('.bvi-link-top').hide();
850            } else {
851                $('.bvi-panel').hide();
852                $('.bvi-link-top').show("slow");
853            }
854        }
855
856        function get_image() {
857            var bvi_images = Cookies.get("bvi-images");
858
859            $(".bvi-body *").each(function () {
860                var $this = $(this);
861                var background_image = $this.css("background-image");
862                var pattern = background_image.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
863
864                if (pattern != 'none') {
865                    $(this).addClass('bvi-background-image');
866                }
867            });
868
869            $("img").each(function () {
870                $(this).addClass('bvi-img');
871            });
872
873            $(".img").each(function () {
874                $(this).addClass('bvi-img-wrapper');
875            });
876
877            if (bvi_images === 'true') {
878                $("img").each(function () {
879                    $(this).show();
880                    $('div.bvi-img').remove();
881                    //$(this).removeClass("bvi-background-image");
882                    if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
883                        var data_bvi_img_original = $(this).attr('data-bvi-img-original') || this.src;
884                        this.src = data_bvi_img_original;
885                    }
886                });
887
888                $(".bvi-body *").each(function () {
889                    var $this = $(this);
890                    var background_image = $this.css("background-image");
891                    var pattern = background_image.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
892                    if (pattern != 'none') {
893                        if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
894                            var r = '^(https?|http)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]';
895                            if(pattern.match(r)) {
896                                var data_bvi_img_original = $this.attr('data-bvi-background-image-original') || pattern;
897                                $this.css("background-image", "url(" + data_bvi_img_original + ")");
898                            }
899                        }
900                    }
901                });
902            }
903
904            if (bvi_images === 'false') {
905                $('div.bvi-img').remove();
906
907                $("img").each(function () {
908                    $(this).hide();
909                    //$(this).removeClass("bvi-background-image");
910                    var alt = this.alt || 'Изображение';
911                    var imgClass = $(this).attr("class") || 'bvi-class-none';
912                    var imgId = $(this).attr("id") || 'bvi-id-none';
913                    $(this).after($('<div class="' + imgClass + '" id="' + imgId + '" style="width: ' + $(this).get(0).naturalWidth + 'px; height: 100%;">').html(alt));
914                });
915            }
916
917            if (bvi_images === 'grayscale') {
918                $("img").each(function () {
919                    $(this).show();
920                    $('div.bvi-img').remove();
921                    //$(this).removeClass("bvi-background-image");
922                    if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
923                        $(this).attr('data-bvi-img-original', this.src
923);
924                        if (location.hostname === extractHostname(this.src)) {
925                            var src = grayscale(this.src);
926                            this.src = src;
927                        } else {
928                            return false;
929                        }
930                    }
931                });
932
933                $(".bvi-body *").each(function () {
934                    var $this = $(this);
935                    var background_image = $this.css("background-image");
936                    var pattern = background_image.replace(/^url\(['"]?/,'').replace(/['"]?\)$/,'');
937                    if (pattern != 'none') {
938                        if (versionIE == 11 || versionIE == 10 || versionIE == 9) {
939                            var r = '^(https?|http)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]';
940                            if(pattern.match(r)) {
941                                var src_pattern = grayscale(pattern);
942                                $this.attr('data-bvi-background-image-original', pattern);
943                                $this.css("background-image", "url(" + src_pattern + ") !important");
944                            }
945                        }
946                    }
947                });
948            }
949        }
950
951        function extractHostname(url) {
952            var hostname;
953            if (url.indexOf("//") > -1) {
954                hostname = url.split('/')[2];
955            } else {
956                hostname = url.split('/')[0];
957            }
958            hostname = hostname.split(':')[0];
959            hostname = hostname.split('?')[0];
960
961            return hostname;
962        }
963
964        function grayscale(src) {
965            var canvas = document.createElement('canvas');
966            var ctx = canvas.getContext('2d');
967            var imgObj = new Image();
968            //imgObj.crossOrigin = "Anonymous";
969            imgObj.src = src;
970            canvas.width = imgObj.naturalWidth || imgObj.offsetWidth || imgObj.width;
971            canvas.height = imgObj.naturalHeight || imgObj.offsetHeight || imgObj.height;
972            ctx.drawImage(imgObj, 0, 0);
973            var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
974
975            for (var y = 0; y < imgPixels.height; y++) {
976                for (var x = 0; x < imgPixels.width; x++) {
977                    var i = (y * 4) * imgPixels.width + x * 4;
978                    var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
979                    imgPixels.data[i] = avg;
980                    imgPixels.data[i + 1] = avg;
981                    imgPixels.data[i + 2] = avg;
982                }
983            }
984
985            ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
986
987            return canvas.toDataURL();
988        }
989
990        function active() {
991            if (versionIE == 8 || versionIE == 7 || versionIE == 6 || versionIE == 5) {
992                console.log('Bvi console: Браузер не поддерживается.');
993                alert(confirm('Браузер не поддерживается.'));
994            } else {
995                if (Cookies.get('bvi-panel-active') === 'true') {
996                    $(selector).addClass('bvi-hide').after($('<a href="#" class="bvi-panel-close" title="Обычная версия сайта">Обычная версия сайта</a>'));
997                    panel();
998                    bvi_tts_player();
999                    bvi_click();
1000                    set_active_link();
1001                    if (bvi_tts_support_browser === false) {
1002                        Cookies.set("bvi-tts", false, {path: "/", expires: 1});
1003                        $('#bvi-tts-true').remove();
1004                        $('#bvi-tts-false').remove();
1005                    }
1006                } else {
1007                    bvi_tts_player();
1008                    $(selector).removeClass('bvi-hide');
1009                    $('.bvi-panel-close').remove();
1010                    $(".bvi-panel").remove();
1011                    $(".bvi-link-top").remove();
1012                    $('body > .bvi-body').contents().unwrap();
1013                    $('.bvi-tts-link').remove();
1014                    $('.bvi-tts-text').contents().unwrap();
1015                }
1016            }
1017        }
1018
1019        function panel() {
1020            $('head').append('<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">');
1021            $('body').wrapInner('<div class="bvi-body"></div>');
1022            $('body').prepend('<div class="bvi-panel">\n' +
1023                '    <div class="bvi-container-fluid">\n' +
1024                '        <div class="bvi-row bvi-no-gutters">\n' +
1025                '            <div class="bvi-col-12">\n' +
1026                '                <div class="bvi-panel-toggler">\n' +
1027                '                    <a href="#" id="bvi-toggler" class="bvi-link" title="Меню">Меню</a>\n' +
1028                '                    <a href="#" id="bvi-toggler-close" class="bvi-link" title="Обычная версия сайта">Обычная версия сайта</a>\n' +
1029                '                    <a href="#" id="bvi-toggler-menu-hide" class="bvi-link" title="Скрыть панель"><i class="bvi-images bvi-images-minus-square-o "></i></a>\n' +
1030                '                </div>\n' +
1031                '            </div>\n' +
1032                '        </div>\n' +
1033                '    </div>\n' +
1034                '    <div class="bvi-panel-container bvi-container">\n' +
1035                '        <div class="bvi-row bvi-no-gutters">\n' +
1036                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-3 bvi-text-center">\n' +
1037                '                <div class="bvi-title">Размер шрифта <span id="bvi-font-size"></span> px</div>\n' +
1038                '                <a href="#" id="bvi-font-size-less" class="bvi-link" title="Уменьшить размер шрифта">A -</a>\n' +
1039                '                <a href="#" id="bvi-font-size-more" class="bvi-link" title="Увеличить размер шрифта">A +</a>\n' +
1040                '            </div>\n' +
1041                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-3 bvi-text-center">\n' +
1042                '                <div class="bvi-title">Цвета сайта</div>\n' +
1043                '                <a href="#" id="bvi-theme-white" class="bvi-link bvi-link-white " title="Черным по белому">Ц</a>\n' +
1044                '                <a href="#" id="bvi-theme-black" class="bvi-link bvi-link-black" title="Белым по черному">Ц</a>\n' +
1045                //  '                <a href="#" id="bvi-theme-blue" class="bvi-link bvi-link-blue" title="Темно-синим по голубому">Ц</a>\n' +
1046                //  '                <a href="#" id="bvi-theme-brown" class="bvi-link bvi-link-brown" title="Коричневым по бежевому">Ц</a>\n' +
1047                //  '                <a href="#" id="bvi-theme-green" class="bvi-link bvi-link-green" title="Зеленым по темно-коричневому">Ц</a>\n' +
1048                '            </div>\n' +
1049                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-2 bvi-text-center">\n' +
1050                '                <div class="bvi-title">Изображения</div>\n' +
1051                '                <a href="#" id="bvi-images-true" class="bvi-link" title="Изображения включены"><i class="bvi-images bvi-images-on"></i></a>\n' +
1052                '                <a href="#" id="bvi-images-false" class="bvi-link" title="Изображения выключены"><i class="bvi-images bvi-images-off"></i></a>\n' +
1053                '                <a href="#" id="bvi-images-grayscale" class="bvi-link" title="Изображения черно-белые"><i class="bvi-images bvi-images-adjust"></i></a>\n' +
1054                '            </div>\n' +
1055                '            <div class="bvi-col-6 bvi-col-sm-6 bvi-col-md-3 bvi-col-lg-3 bvi-col-xl-4 bvi-text-center">\n' +
1056                '                <div class="bvi-title">Дополнительно</div>\n' +
1057                '                <a href="#" id="bvi-tts-true" class="bvi-link" title=""><i class="bvi-images bvi-images-volume-on"></i></a>\n' +
1058                '                <a href="#" id="bvi-tts-false" class="bvi-link"><i class="bvi-images bvi-images-volume-off"></i></a>\n' +
1059                '                <a href="#" id="bvi-setting" class="bvi-link" title="Настройки">Настройки</a>\n' +
1060                '                <a href="#" id="bvi-panel-close" class="bvi-link" title="Обычная версия сайта"><i class="bvi-images bvi-images-eye-slash"></i></a>\n' +
1061                '                <a href="#" id="bvi-panel-hide" class="bvi-link" title="Скрыть панель"><i class="bvi-images bvi-images-minus-square-o"></i></a>\n' +
1062                '            </div>\n' +
1063                '        </div>\n' +
1064                '        <div class="bvi-setting-menu bvi-hide-lg">\n' +
1065                '            <div class="bvi-row bvi-no-gutters">\n' +
1066                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-4 bvi-col-xl-4 bvi-text-center">\n' +
1067                '                    <div class="bvi-title">Междустрочный интервал</div>\n' +
1068                '                    <a href="#" id="bvi-line-height-normal" class="bvi-link" title="Междустрочный интервал стандартный">Стандартный</a>\n' +
1069                '                    <a href="#" id="bvi-line-height-average" class="bvi-link" title="Междустрочный интервал средний">Средний</a>\n' +
1070                '                    <a href="#" id="bvi-line-height-big" class="bvi-link" title="Междустрочный интервал большой">Большой</a>\n' +
1071                '                </div>\n' +
1072                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-5 bvi-col-xl-5 bvi-text-center">\n' +
1073                '                    <div class="bvi-title">Межбуквенный интервал</div>\n' +
1074                '                    <a href="#" id="bvi-letter-spacing-normal" class="bvi-link" title="Межбуквенный интервал одинарный">Одинарный</a>\n' +
1075                '                    <a href="#" id="bvi-letter-spacing-average" class="bvi-link"\n' +
1076                '                       title="Межбуквенный интервал полуторный">Полуторный</a>\n' +
1077                '                    <a href="#" id="bvi-letter-spacing-big" class="bvi-link" title="Межбуквенный интервал двойной">Двойной</a>\n' +
1078                '                </div>\n' +
1079                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-3 bvi-col-xl-3 bvi-text-center">\n' +
1080                '                    <div class="bvi-title">Шрифт</div>\n' +
1081                '                    <a href="#" id="bvi-font-family-arial" class="bvi-link" title="Шрифт без засечек">Без засечек</a>\n' +
1082                '                    <a href="#" id="bvi-font-family-times" class="bvi-link" title="Шрифт с засечками">С засечками</a>\n' +
1083                '                </div>\n' +
1084                '                <div class="bvi-col-sm-12 bvi-col-md-6 bvi-col-lg-6 bvi-col-xl-6 bvi-text-center">\n' +
1085                '                    <div class="bvi-title">Встроенные элементы (Видео, карты и тд.)</div>\n' +
1086                '                    <a href="#" id="bvi-flash-iframe-true" class="bvi-link" title="Включить">Включить</a>\n' +
1087                '                    <a href="#" id="bvi-flash-iframe-false" class="bvi-link" title="Выключить">Выключить</a>\n' +
1088                '                </div>\n' +
1089                '                <div class="bvi-col-sm-12 bvi-col-md-12 bvi-col-lg-6 bvi-col-xl-6 bvi-text-right">\n' +
1090                '                    <div class="bvi-title">&nbsp;</div>\n' +
1091                '                    <a href="#" id="bvi-settings-default" class="bvi-link" title="Вернуть стандартные настройки">
1091Настройки\n' +
1092                '                        по умолчанию</a>\n' +
1093                '                    <a href="#" id="bvi-setting-close" class="bvi-link" title="Закрыть панель">Закрыть панель</a>\n' +
1094                '                </div>\n' +
1095                '            </div>\n' +
1096                '            <div class="bvi-row bvi-mt">\n' +
1097                '                <div class="bvi-col-12 bvi-text-center">\n' +
1098                '                    <a href="http://bvi.isvek.ru/" class="bvi-link-copy" target="_blank" title="bvi.isvek.ru v2.0">bvi.isvek.ru</a>\n' +
1099                '                </div>\n' +
1100                '            </div>\n' +
1101                '        </div>\n' +
1102                '    </div>\n' +
1103                '</div>\n' +
1104                '<a href="#" id="bvi-panel-show" class="bvi-link bvi-link-top"><i class="bvi-images bvi-images-eye"></i></a>');
1105
1106            if (width >= lg) {
1107                $('.bvi-panel-container').show();
1108            }
1109
1110            if (width <= lg) {
1111                $('.bvi-panel-container').removeClass('bvi-container').addClass('bvi-container-fluid');
1112            } else {
1113                $('.bvi-panel-container').removeClass('bvi-container-fluid').addClass('bvi-container');
1114            }
1115
1116            var scroll = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop;
1117
1118            if (scroll > 99) {
1119                if (Cookies.get("bvi-fixed") == 'true') {
1120                    $(".bvi-panel").addClass("bvi-fixed-top");
1121                }
1122            }
1123
1124            $(window).scroll(function () {
1125                if ($(this).scrollTop() >= 99) {
1126                    if (Cookies.get("bvi-fixed") == 'true') {
1127                        $(".bvi-panel").addClass('bvi-fixed-top');
1128                    }
1129                } else {
1130                    $(".bvi-panel").removeClass("bvi-fixed-top");
1131                }
1132            });
1133
1134            get();
1135            get_image();
1136        }
1137
1138        if (default_setting.bvi_theme == 'white' ||
1139            default_setting.bvi_theme == 'black' ||
1140            default_setting.bvi_theme == 'blue' ||
1141            default_setting.bvi_theme == 'brown' ||
1142            default_setting.bvi_theme == 'green') {
1143            check_bvi_theme = true;
1144        } else {
1145            check_bvi_theme = false;
1146            checkError = ['bvi_theme'];
1147        }
1148
1149        if (default_setting.bvi_font == 'times' || default_setting.bvi_font == 'arial') {
1150            check_bvi_font = true;
1151        } else {
1152            check_bvi_font = false;
1153            checkError = ['bvi_font'];
1154        }
1155
1156        if (default_setting.bvi_letter_spacing == 'normal' || default_setting.bvi_letter_spacing == 'average' || default_setting.bvi_letter_spacing == 'big') {
1157            check_bvi_letter_spacing = true;
1158        } else {
1159            check_bvi_letter_spacing = false;
1160            checkError = ['bvi_letter_spacing'];
1161        }
1162
1163        if (default_setting.bvi_line_height == 'normal' || default_setting.bvi_line_height == 'average' || default_setting.bvi_line_height == 'big') {
1164            check_bvi_line_height = true;
1165        } else {
1166            check_bvi_line_height = false;
1167            checkError = ['bvi_line_height'];
1168        }
1169
1170        if (default_setting.bvi_font_size == 0) {
1171            check_bvi_font_size = false;
1172            checkError = ['bvi_font_size'];
1173        } else if (default_setting.bvi_font_size <= 40) {
1174            check_bvi_font_size = true;
1175        } else {
1176            check_bvi_font_size = false;
1177            checkError = ['bvi_font_size'];
1178        }
1179
1180        if (default_setting.bvi_images === false || default_setting.bvi_images === true || default_setting.bvi_images === 'grayscale') {
1181            check_bvi_images = true;
1182        } else {
1183            check_bvi_images = false;
1184            checkError = ['bvi_images'];
1185        }
1186
1187        if (default_setting.bvi_fixed === false || default_setting.bvi_fixed === true) {
1188            check_bvi_fixed = true;
1189        } else {
1190            check_bvi_fixed = false;
1191            checkError = ['bvi_fixed'];
1192        }
1193
1194        if (default_setting.bvi_tts === false || default_setting.bvi_tts === true) {
1195            check_bvi_tts = true;
1196        } else {
1197            check_bvi_tts = false;
1198            checkError = ['bvi_tts'];
1199        }
1200
1201        if (default_setting.bvi_flash_iframe === false || default_setting.bvi_flash_iframe === true) {
1202            check_bvi_flash_iframe = true;
1203        } else {
1204            check_bvi_flash_iframe = false;
1205            checkError = ['bvi_flash_iframe'];
1206        }
1207
1208        if (default_setting.bvi_hide === false || default_setting.bvi_hide === true) {
1209            check_bvi_hide = true;
1210        } else {
1211            check_bvi_hide = false;
1212            checkError = ['bvi_hide'];
1213        }
1214
1215        if (check_bvi_theme === true &&
1216            check_bvi_font === true &&
1217            check_bvi_letter_spacing === true &&
1218            check_bvi_line_height === true &&
1219            check_bvi_font_size === true &&
1220            check_bvi_images === true &&
1221            check_bvi_fixed === true &&
1222            check_bvi_flash_iframe === true &&
1223            check_bvi_tts === true &&
1224            check_bvi_hide === true) {
1225            if ($(selector).length) {
1226                $(selector).click(function () {
1227                    Cookies.set('bvi-panel-active', true, {path: "/", expires: 1});
1228                    active();
1229                    bvi_tts_speak('Версия сайта для слабовидящих');
1230                    return false;
1231                });
1232            } else {
1233                console.log('Bvi console: Неправильный параметр - [bvi_target]');
1234            }
1235            active();
1236        } else {
1237            console.log('Bvi console: Неправильный параметр - [' + checkError + ']');
1238        }
1239    };
1240})(jQuery);
1241;
1242
1243
1244
1245
1246
1247$(function(){
1248// ===========  Toggle language ===========================
1249    $('.language-select').click(function(){
1250        $(this).toggleClass('open');
1251    })
1252
1253    $(document).click(function (e) {
1254        let s = $('.language-select');
1255        if (!s.is(e.target)) {
1256            s.removeClass('open');
1257        }
1258    });
1259
1260    $('.language-select__item').click(function(){
1261        var setLang = $('.language-select').data('location'),
1262            dataLangSelect = $(this).data('lang')
1263        $('.language-select').data('location', dataLangSelect);
1264        $('.language-select__item').removeClass('_active');
1265        $(this).toggleClass('_active');
1266    })
1267
1268});
1269
1270
1271// =============Function ibg  ====================================================
1272function ibg() {
1273    let ibg = document.querySelectorAll("._ibg");
1274    for (var i = 0; i < ibg.length; i++) {
1275        if (ibg[i].querySelector('img') && ibg[i].querySelector('img').getAttribute('src') != null) {
1276            ibg[i].style.backgroundImage = 'url(' + ibg[i].querySelector('img').getAttribute('src') + ')';
1277        }
1278    }
1279}
1280ibg();
1281
1282// ====================   scroll accordion to top   ==========================
1283$('#accordionMns').on('shown.bs.collapse', function (event) {
1284   $('html, body').animate(
1285      {
1286         //scrollTop: $(event.target).parent().offset().top,
1287      },
1288      400
1289   );
1290});
1291$('.item-block__title, .accordion-btn').click(function () {
1292   $('html, body').animate(
1293      {
1294         //scrollTop: $(this).offset().top,
1295      },
1296      300
1297   );
1298});
1299
1300// ==================  Select Tab   ===================================
1301$('.select-tab-content').hide();
1302$('#select-tab-1').show();
1303
1304$('#select-tab-box').change(function () {
1305   var dropdown = $('#select-tab-box').val();
1306   $('.select-tab-content').hide();
1307   $('#' + 'select-tab-' + dropdown).show();
1308});
1309
1310
1311$('#backBTN').on('click', function (e) {
1312    e.preventDefault();
1313    javascript:history.back();
1314})
1315
1316window.onload = () => {
1317    if(document.querySelectorAll('[data-toggle="collapse"]') && document.querySelector('.sidebar')){
1318        const sidebarBlock = document.querySelector('.sidebar');
1319        var sidebar = new StickySidebar(sidebarBlock, {
1320            topSpacing: 30,
1321        });
1322
1323        document.querySelectorAll('[data-toggle="collapse"]').forEach(el =>{
1324            el.addEventListener('click', ()=>{
1325                setTimeout(async function() {
1326                        //sidebar.updateSticky();
1327                });
1328            })
1329        })
1330    }
1331
1332    let btnShowBlock = document.querySelectorAll('._btn-toggle');
1333    let body = document.querySelector('body');
1334    let overlay = document.querySelector('.header__overlay');
1335
1336    Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1337        item.addEventListener('click', function () {
1338            if (item.classList.contains('_show-block')) {
1339                item.classList.remove('_show-block');
1340                overlay.classList.remove('_active');
1341            } else {
1342                addClass(item);
1343            }
1344        });
1345    });
1346
1347    function addClass(currentItem) {
1348        Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1349            item.classList.remove('_show-block');
1350            overlay.classList.remove('_active');
1351            item = currentItem;
1352            item.classList.add('_show-block');
1353            overlay.classList.add('_active');
1354        });
1355    }
1356
1357    document.addEventListener('click', function (e) {
1358        if (!e.target.closest('.hidden-block, ._btn-toggle')) {
1359            Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1360                if (item.classList.contains('_show-block')) {
1361                    item.classList.remove('_show-block');
1362                }
1363            });
1364            overlay.classList.remove('_active');
1365        }
1366    });
1367}
1368window.onload = () => {
1369    if (document.querySelectorAll('[data-toggle="collapse"]') && document.querySelector('.sidebar')) {
1370        const sidebarBlock = document.querySelector('.sidebar');
1371        var sidebar = new StickySidebar(sidebarBlock, {
1372            topSpacing: 30,
1373        });
1374
1375        document.querySelectorAll('[data-toggle="collapse"]').forEach((el) => {
1376            el.addEventListener('click', () => {
1377                setTimeout(async function () {
1378                    //sidebar.updateSticky();
1379                });
1380            });
1381        });
1382    }
1383
1384    let btnShowBlock = document.querySelectorAll('._btn-toggle');
1385    let body = document.querySelector('body');
1386    let overlay = document.querySelector('.header__overlay');
1387
1388    Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1389        item.addEventListener('click', function () {
1390            if (item.classList.contains('_show-block')) {
1391                item.classList.remove('_show-block');
1392                overlay.classList.remove('_active');
1393            } else {
1394                addClass(item);
1395            }
1396        });
1397    });
1398
1399    function addClass(currentItem) {
1400        Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1401            item.classList.remove('_show-block');
1402            overlay.classList.remove('_active');
1403            item = currentItem;
1404            item.classList.add('_show-block');
1405            overlay.classList.add('_active');
1406        });
1407    }
1408
1409    document.addEventListener('click', function (e) {
1410        if (!e.target.closest('.hidden-block, ._btn-toggle')) {
1411            Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1412                if (item.classList.contains('_show-block')) {
1413                    item.classList.remove('_show-block');
1414                }
1415            });
1416            overlay.classList.remove('_active');
1417        }
1418    });
1419};
1420
1421// document.addEventListener('DOMContentLoaded', () => {
1422//     const btnShowBlock = document.querySelectorAll('._btn-toggle');
1423//     const closeBlock = document.querySelector('.header-special__btn-close');
1424//     const body = document.querySelector('body');
1425//     const overlay = document.querySelector('.header__overlay');
1426//
1427//     Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1428//         item.addEventListener('click', function () {
1429//             if (item.classList.contains('_show-block')) {
1430//                 item.classList.remove('_show-block');
1431//                 overlay.classList.remove('_active');
1432//             } else {
1433//                 addClass(item);
1434//             }
1435//         });
1436//     });
1437//
1438//     function addClass(currentItem) {
1439//         Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1440//             item.classList.remove('_show-block');
1441//             overlay.classList.remove('_active');
1442//             item = currentItem;
1443//             item.classList.add('_show-block');
1444//             overlay.classList.add('_active');
1445//         });
1446//     }
1447//
1448//     document.addEventListener('click', function (e) {
1449//         if (!e.target.closest('.hidden-block, ._btn-toggle')) {
vendor: 21,711 bytes, lines 1450-1492
1450//             Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1451//                 if (item.classList.contains('_show-block')) {
1452//                     item.classList.remove('_show-block');
1453//                 }
1454//             });
1455//             overlay.classList.remove('_active');
1456//         }
1457//     });
1458//
1459//     if (closeBlock) {
1460//         closeBlock.addEventListener('click', function (e) {
1461//             Array.prototype.slice.call(btnShowBlock).forEach(function (item) {
1462//                 item.classList.remove('_show-block');
1463//             });
1464//             overlay.classList.remove('_active');
1465//         });
1466//     }
1467// });
1468//reduce char max length in options
1469const allSelects = document.querySelectorAll('select');
1470if (allSelects) {
1471    allSelects.forEach((select) => {
1472        select.addEventListener('focus', function () {
1473            const options = this.options;
1474            const maxLength = 30;
1475
1476            for (let i = 0; i < options.length; i++) {
1477                if (options[i].text.length > maxLength) {
1478                    options[i].text = options[i].text.substring(0, maxLength) + '...';
1479                }
1480            }
1481        });
1482    });
1483}
1484/* End */
1485;
1486; /* Start:"a:4:{s:4:"full";s:76:"/local/templates/main_template/js/bootstrap/bootstrap.min.js?175862869862440";s:6:"source";s:60:"/local/templates/main_template/js/bootstrap/bootstrap.min.js";s:3:"min";s:60:"/local/templates/main_template/js/bootstrap/bootstrap.min.js";s:3:"map";s:64:"/local/templates/main_template/js/bootstrap/bootstrap.min.js.map";}"*/
1487/*!
1488  * Bootstrap v4.6.1 (https://getbootstrap.com/)
1489  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
1490  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1491  */
1492!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap={},t.jQuery,t.Popper)}(this,(function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),a=i(n);function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e,n){return e&&s(t.prototype,e),n&&s(t,n),t}function r(){return r=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},r.apply(this,arguments)}function u(t,e){return u=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},u(t,e)}var f="transitionend";var d={TRANSITION_END:"bsTransitionEnd",getUID:function(t){do{t+=~~(1e6*Math.random())}while(document.getElementById(t));return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");if(!e||"#"===e){var n=t.getAttribute("href");e=n&&"#"!==n?n.trim():""}try{return document.querySelector(e)?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=o.default(t).css("transition-duration"),n=o.default(t).css("transition-delay"),i=parseFloat(e),a=parseFloat(n);return i||a?(e=e.split(",")[0],n=n.split(",")[0],1e3*(parseFloat(e)+parseFloat(n))):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){o.default(t).trigger(f)},supportsTransitionEnd:function(){return Boolean(f)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var o=n[i],a=e[i],s=a&&d.isElement(a)?"element":null===(l=a)||"undefined"==typeof l?""+l:{}.toString.call(l).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(s))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+s+'" but expected type "'+o+'".')}var l},findShadowRoot:function(t){if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){var e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?d.findShadowRoot(t.parentNode):null},jQueryDetection:function(){if("undefined"==typeof o.default)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var t=o.default.fn.jquery.split(" ")[0].split(".");if(t[0]<2&&t[1]<9||1===t[0]&&9===t[1]&&t[2]<1||t[0]>=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=function(t){var e=this,n=!1;return o.default(this).one(d.TRANSITION_END,(function(){n=!0})),setTimeout((function(){n||d.triggerTransitionEnd(e)}),t),this},o.default.event.special[d.TRANSITION_END]={bindType:f,delegateType:f,handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c="bs.alert",h=o.default.fn.alert,g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,c),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(c);i||(i=new t(this),n.data(c,i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',g._handleDismiss(new g)),o.default.fn.alert=g._jQueryInterface,o.default.fn.alert.Constructor=g,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=h,g._jQueryInterface};var m="bs.button",p=o.default.fn.button,_="active",v='[data-toggle^="button"]',y='input:not([type="hidden"])',b=".btn",E=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector(y);if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains(_))t=!1;else{var a=n.querySelector(".active");a&&o.default(a).removeClass(_)}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains(_)),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains(_)),t&&o.default(this._element).toggleClass(_))},e.dispose=function(){o.default.removeData(this._element,m),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),a=i.data(m);a||(a=new t(this),i.data(m,a)),a.shouldAvoidTriggerChange=n,"toggle"===e&&a[e]()}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",v,(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(b)[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector(y);if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||E._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",v,(function(t){var e=o.default(t.target).closest(b)[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e<n;e++){var i=t[e],o=i.querySelector(y);o.checked||o.hasAttribute("checked")?i.classList.add(_):i.classList.remove(_)}for(var a=0,s=(t=[].slice.call(document.querySelectorAll('[data-toggle="button"]'))).length;a<s;a++){var l=t[a];"true"===l.getAttribute("aria-pressed")?l.classList.add(_):l.classList.remove(_)}})),o.default.fn.button=E._jQueryInterface,o.default.fn.button.Constructor=E,o.default.fn.button.noConflict=function(){return o.default.fn.button=p,E._jQueryInterface};var T="carousel",w="bs.carousel",C=o.default.fn[T],S="active",N="next",D="prev",A="slid.bs.carousel",I=".active.carousel-item",k={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},O={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},j={TOUCH:"touch",PEN:"pen"},P=function(){function t(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._element=t,this._indicatorsElement=this._element.querySelector(".carousel-indicators"),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide(N)},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide(D)},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(I);var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one(A,(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?N:D;this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(".bs.carousel"),o.default.removeData(this._element,w),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=r({},k,t),d.typeCheckConfig(T,t,O),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&j[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n=t===N,i=t===D,o=this._getItemIndex(e),a=this._items.length-1;if((i&&0===o||n&&o===a)&&!this._config.wrap)return e;var s=(o+(t===D?-1:1))%this._items.length;return-1===s?this._items[this._items.length-1]:this._items[s]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(I)),a=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(a),a},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass(S);var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass(S)}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(I);if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,a,s=this,l=this._element.querySelector(I),r=this._getItemIndex(l),u=e||l&&this._getItemByDirection(t,l),f=this._getItemIndex(u),c=Boolean(this._interval);if(t===N?(n="carousel-item-left",i="carousel-item-next",a="left"):(n="carousel-item-right",i="carousel-item-prev",a="right"),u&&o.default(u).hasClass(S))this._isSliding=!1;else if(!this._triggerSlideEvent(u,a).isDefaultPrevented()&&l&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event(A,{relatedTarget:u,direction:a,from:r,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(l).addClass(n),o.default(u).addClass(n);var g=d.getTransitionDurationFromElement(l);o.default(l).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass(S),o.default(l).removeClass("active "+i+" "+n),s._isSliding=!1,setTimeout((function(){return o.default(s._element).trigger(h)}),0)})).emulateTransitionEnd(g)}else o.default(l).removeClass(S),o.default(u).addClass(S),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(w),i=r({},k,o.default(this).data());"object"==typeof e&&(i=r({},i,e));var a="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data(w,n)),"number"==typeof e)n.to(e);else if("string"==typeof a){if("undefined"==typeof n[a])throw new TypeError('No method named "'+a+'"');n[a]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var a=r({},o.default(i).data(),o.default(this).data()),s=this.getAttribute("data-slide-to");s&&(a.interval=!1),t._jQueryInterface.call(o.default(i),a),s&&o.default(i).data(w).to(s),e.preventDefault()}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return k}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",P._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e<n;e++){var i=o.default(t[e]);P._jQueryInterface.call(i,i.data())}})),o.default.fn[T]=P._jQueryInterface,o.default.fn[T].Constructor=P,o.default.fn[T].noConflict=function(){return o.default.fn[T]=C,P._jQueryInterface};var L="collapse",R="bs.collapse",x=o.default.fn[L],q="show",F="collapse",Q="collapsing",B="collapsed",H="width",U='[data-toggle="collapse"]',M={toggle:!0,parent:""},W={toggle:"boolean",parent:"(string|element)"},V=function(){function t(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=[].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=[].slice.call(document.querySelectorAll(U)),i=0,o=n.length;i<o;i++){var a=n[i],s=d.getSelectorFromElement(a),l=[].slice.call(document.querySelectorAll(s)).filter((function(e){return e===t}));null!==s&&l.length>0&&(this._selector=s,this._triggerArray.push(a))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass(q)?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass(q)||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains(F)}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data(R))&&n._isTransitioning))){var a=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(a),!a.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data(R,null));var s=this._getDimension();o.default(this._element).removeClass(F).addClass(Q),this._element.style[s]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass(B).attr("aria-expanded",!0),this.setTransitioning(!0);var l="scroll"+(s[0].toUpperCase()+s.slice(1)),r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass(Q).addClass("collapse show"),i._element.style[s]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(r),this._element.style[s]=this._element[l]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass(q)){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass(Q).removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var a=0;a<i;a++){var s=this._triggerArray[a],l=d.getSelectorFromElement(s);null!==l&&(o.default([].slice.call(document.querySelectorAll(l))).hasClass(q)||o.default(s).addClass(B).attr("aria-expanded",!1))}this.setTransitioning(!0),this._element.style[n]="";var r=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){t.setTransitioning(!1),o.default(t._element).removeClass(Q).addClass(F).trigger("hidden.bs.collapse")})).emulateTransitionEnd(r)}}},e.setTransitioning=function(t){this._isTransitioning=t},e.dispose=function(){o.default.removeData(this._element,R),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},e._getConfig=function(t){return(t=r({},M,t)).toggle=Boolean(t.toggle),d.typeCheckConfig(L,t,W),t},e._getDimension=function(){return o.default(this._element).hasClass(H)?H:"height"},e._getParent=function(){var e,n=this;d.isElement(this._config.parent)?(e=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(e=this._config.parent[0])):e=document.querySelector(this._config.parent);var i='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]',a=[].slice.call(e.querySelectorAll(i));return o.default(a).each((function(e,i){n._addAriaAndCollapsedClass(t._getTargetFromElement(i),[i])})),e},e._addAriaAndCollapsedClass=function(t,e){var n=o.default(t).hasClass(q);e.length&&o.default(e).toggleClass(B,!n).attr("aria-expanded",n)},t._getTargetFromElement=function(t){var e=d.getSelectorFromElement(t);return e?document.querySelector(e):null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(R),a=r({},M,n.data(),"object"==typeof e&&e?e:{});if(!i&&a.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(a.toggle=!1),i||(i=new t(this,a),n.data(R,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method n
1492amed "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return M}}]),t}();o.default(document).on("click.bs.collapse.data-api",U,(function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var e=o.default(this),n=d.getSelectorFromElement(this),i=[].slice.call(document.querySelectorAll(n));o.default(i).each((function(){var t=o.default(this),n=t.data(R)?"toggle":e.data();V._jQueryInterface.call(t,n)}))})),o.default.fn[L]=V._jQueryInterface,o.default.fn[L].Constructor=V,o.default.fn[L].noConflict=function(){return o.default.fn[L]=x,V._jQueryInterface};var z="dropdown",K="bs.dropdown",X=o.default.fn[z],Y=new RegExp("38|40|27"),$="disabled",J="show",G="dropdown-menu-right",Z="hide.bs.dropdown",tt="hidden.bs.dropdown",et="click.bs.dropdown.data-api",nt="keydown.bs.dropdown.data-api",it='[data-toggle="dropdown"]',ot=".dropdown-menu",at={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic",popperConfig:null},st={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string",popperConfig:"(null|object)"},lt=function(){function t(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var e=t.prototype;return e.toggle=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)){var e=o.default(this._menu).hasClass(J);t._clearMenus(),e||this.show(!0)}},e.show=function(e){if(void 0===e&&(e=!1),!(this._element.disabled||o.default(this._element).hasClass($)||o.default(this._menu).hasClass(J))){var n={relatedTarget:this._element},i=o.default.Event("show.bs.dropdown",n),s=t._getParentFromElement(this._element);if(o.default(s).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar&&e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");var l=this._element;"parent"===this._config.reference?l=s:d.isElement(this._config.reference)&&(l=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(l=this._config.reference[0])),"scrollParent"!==this._config.boundary&&o.default(s).addClass("position-static"),this._popper=new a.default(l,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===o.default(s).closest(".navbar-nav").length&&o.default(document.body).children().on("mouseover",null,o.default.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),o.default(this._menu).toggleClass(J),o.default(s).toggleClass(J).trigger(o.default.Event("shown.bs.dropdown",n))}}},e.hide=function(){if(!this._element.disabled&&!o.default(this._element).hasClass($)&&o.default(this._menu).hasClass(J)){var e={relatedTarget:this._element},n=o.default.Event(Z,e),i=t._getParentFromElement(this._element);o.default(i).trigger(n),n.isDefaultPrevented()||(this._popper&&this._popper.destroy(),o.default(this._menu).toggleClass(J),o.default(i).toggleClass(J).trigger(o.default.Event(tt,e)))}},e.dispose=function(){o.default.removeData(this._element,K),o.default(this._element).off(".bs.dropdown"),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},e.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},e._addEventListeners=function(){var t=this;o.default(this._element).on("click.bs.dropdown",(function(e){e.preventDefault(),e.stopPropagation(),t.toggle()}))},e._getConfig=function(t){return t=r({},this.constructor.Default,o.default(this._element).data(),t),d.typeCheckConfig(z,t,this.constructor.DefaultType),t},e._getMenuElement=function(){if(!this._menu){var e=t._getParentFromElement(this._element);e&&(this._menu=e.querySelector(ot))}return this._menu},e._getPlacement=function(){var t=o.default(this._element.parentNode),e="bottom-start";return t.hasClass("dropup")?e=o.default(this._menu).hasClass(G)?"top-end":"top-start":t.hasClass("dropright")?e="right-start":t.hasClass("dropleft")?e="left-start":o.default(this._menu).hasClass(G)&&(e="bottom-end"),e},e._detectNavbar=function(){return o.default(this._element).closest(".
1492navbar").length>0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),r({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(K);if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data(K,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll(it)),i=0,a=n.length;i<a;i++){var s=t._getParentFromElement(n[i]),l=o.default(n[i]).data(K),r={relatedTarget:n[i]};if(e&&"click"===e.type&&(r.clickEvent=e),l){var u=l._menu;if(o.default(s).hasClass(J)&&!(e&&("click"===e.type&&/input|textarea/i.test(e.target.tagName)||"keyup"===e.type&&9===e.which)&&o.default.contains(s,e.target))){var f=o.default.Event(Z,r);o.default(s).trigger(f),f.isDefaultPrevented()||("ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),n[i].setAttribute("aria-expanded","false"),l._popper&&l._popper.destroy(),o.default(u).removeClass(J),o.default(s).removeClass(J).trigger(o.default.Event(tt,r)))}}}},t._getParentFromElement=function(t){var e,n=d.getSelectorFromElement(t);return n&&(e=document.querySelector(n)),e||t.parentNode},t._dataApiKeydownHandler=function(e){if(!(/input|textarea/i.test(e.target.tagName)?32===e.which||27!==e.which&&(40!==e.which&&38!==e.which||o.default(e.target).closest(ot).length):!Y.test(e.which))&&!this.disabled&&!o.default(this).hasClass($)){var n=t._getParentFromElement(this),i=o.default(n).hasClass(J);if(i||27!==e.which){if(e.preventDefault(),e.stopPropagation(),!i||27===e.which||32===e.which)return 27===e.which&&o.default(n.querySelector(it)).trigger("focus"),void o.default(this).trigger("click");var a=[].slice.call(n.querySelectorAll(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)")).filter((function(t){return o.default(t).is(":visible")}));if(0!==a.length){var s=a.indexOf(e.target);38===e.which&&s>0&&s--,40===e.which&&s<a.length-1&&s++,s<0&&(s=0),a[s].focus()}}}},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return at}},{key:"DefaultType",get:function(){return st}}]),t}();o.default(document).on(nt,it,lt._dataApiKeydownHandler).on(nt,ot,lt._dataApiKeydownHandler).on(et+" keyup.bs.dropdown.data-api",lt._clearMenus).on(et,it,(function(t){t.preventDefault(),t.stopPropagation(),lt._jQueryInterface.call(o.default(this),"toggle")})).on(et,".dropdown form",(function(t){t.stopPropagation()})),o.default.fn[z]=lt._jQueryInterface,o.default.fn[z].Constructor=lt,o.default.fn[z].noConflict=function(){return o.default.fn[z]=X,lt._jQueryInterface};var rt="bs.modal",ut=o.default.fn.modal,ft="modal-open",dt="fade",ct="show",ht="modal-static",gt="hidden.bs.modal",mt="show.bs.modal",pt="focusin.bs.modal",_t="resize.bs.modal",vt="click.dismiss.bs.modal",yt="keydown.dismiss.bs.modal",bt="mousedown.dismiss.bs.modal",Et=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Tt={backdrop:!0,keyboard:!0,focus:!0,show:!0},wt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},Ct=function(){function t(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=t.querySelector(".modal-dialog"),this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollbarWidth=0}var e=t.prototype;return e.toggle=function(t){return this._isShown?this.hide():this.show(t)},e.show=function(t){var e=this;if(!this._isShown&&!this._isTransitioning){var n=o.default.Event(mt,{relatedTarget:t});o.default(this._element).trigger(n),n.isDefaultPrevented()||(this._isShown=!0,o.default(this._element).hasClass(dt)&&(this._isTransitioning=!0),this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),o.default(this._element).on(vt,'[data-dismiss="modal"]',(function(t){return e.hide(t)})),o.default(this._dialog).on(bt,(function(){o.default(e._element).one("mouseup.dismiss.bs.modal",(function(t){o.default(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)}))})),this._showBackdrop((function(){return e._showElement(t)})))}},e.hide=function(t){var e=this;if(t&&t.preventDefault(),this._isShown&&!this._isTransitioning){var n=o.default.Event("hide.bs.modal");if(o.default(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=o.default(this._element).hasClass(dt);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),o.default(document).off(pt),o.default(this._element).removeClass(ct),o.default(this._element).off(vt),o.default(this._dialog).off(bt),i){var a=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(t){return e._hideModal(t)})).emulateTransitionEnd(a)}else this._hideModal()}}},e.dispose=function(){[window,this._element,this._dialog].forEach((function(t){return o.default(t).off(".b
1492s.modal")})),o.default(document).off(pt),o.default.removeData(this._element,rt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null},e.handleUpdate=function(){this._adjustDialog()},e._getConfig=function(t){return t=r({},Tt,t),d.typeCheckConfig("modal",t,wt),t},e._triggerBackdropTransition=function(){var t=this,e=o.default.Event("hidePrevented.bs.modal");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._element.scrollHeight>document.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add(ht);var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove(ht),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass(dt),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass(ct),this._config.focus&&this._enforceFocus();var a=o.default.Event("shown.bs.modal",{relatedTarget:t}),s=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(a)};if(n){var l=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._enforceFocus=function(){var t=this;o.default(document).off(pt).on(pt,(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on(yt,(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off(yt)},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on(_t,(function(e){return t.handleUpdate(e)})):o.default(window).off(_t)},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass(ft),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger(gt)}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass(dt)?dt:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on(vt,(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass(ct),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass(ct);var a=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass(dt)){var s=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},e._setScrollbar=function(){var t=this;if(this._isBodyOverflowing){var e=[].slice.call(document.querySelectorAll(Et)),n=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(e,n){var i=n.style.paddingRight,a=o.default(n).css("padding-right");o.default(n).data("padding-right",i).css("padding-right",parseFloat(a)+t._scrollbarWidth+"px")})),o.default(n).each((function(e,n){var i=n.style.marginRight,a=o.default(n).css("margin-right");o.default(n).data("margin-right",i).css("margin-right",parseFloat(a)-t._scrollbarWidth+"px")}));var i=document.body.style.paddingRight,a=o.default(document.body).css("padding-right");o.default(document.body).data("padding-right",i).css("padding-right",parseFloat(a)+this._scrollbarWidth+"px")}o.default(document.body).addClass(ft)},e._resetScrollbar=function(){var t=[].slice.call(document.querySelectorAll(Et));o.default(t).each((function(t,e){var n=o.default(e).data("padding-right");o.default(e).removeData("padding-right"),e.style.paddingRight=n||""}));var e=[].slice.call(document.querySelectorAll(".sticky-top"));o.default(e).each((function(t,e){var n=o.default(e).data("margin-right");"undefined"!=typeof n&&o.default(e).css("margin-right",n).removeData("margin-right")}));var n=o.default(document.body).data("padding-right");o.default(document.body).removeData("padding-right"),document.body.style.paddingRight=n||""},e._getScrollbarWidth=function(){var t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this).data(rt),a=r({},Tt,o.default(this).data(),"object"==typeof e&&e?e:{});if(i||(i=new t(this,a),o.default(this).data(rt,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method n
vendor: 12,821 bytes, line 1492
1492amed "'+e+'"');i[e](n)}else a.show&&i.show(n)}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Tt}}]),t}();o.default(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',(function(t){var e,n=this,i=d.getSelectorFromElement(this);i&&(e=document.querySelector(i));var a=o.default(e).data(rt)?"toggle":r({},o.default(e).data(),o.default(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=o.default(e).one(mt,(function(t){t.isDefaultPrevented()||s.one(gt,(function(){o.default(n).is(":visible")&&n.focus()}))}));Ct._jQueryInterface.call(o.default(e),a,this)})),o.default.fn.modal=Ct._jQueryInterface,o.default.fn.modal.Constructor=Ct,o.default.fn.modal.noConflict=function(){return o.default.fn.modal=ut,Ct._jQueryInterface};var St=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],Nt=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Dt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;function At(t,e,n){if(0===t.length)return t;if(n&&"function"==typeof n)return n(t);for(var i=(new window.DOMParser).parseFromString(t,"text/html"),o=Object.keys(e),a=[].slice.call(i.body.querySelectorAll("*")),s=function(t,n){var i=a[t],s=i.nodeName.toLowerCase();if(-1===o.indexOf(i.nodeName.toLowerCase()))return i.parentNode.removeChild(i),"continue";var l=[].slice.call(i.attributes),r=[].concat(e["*"]||[],e[s]||[]);l.forEach((function(t){(function(t,e){var n=t.nodeName.toLowerCase();if(-1!==e.indexOf(n))return-1===St.indexOf(n)||Boolean(Nt.test(t.nodeValue)||Dt.test(t.nodeValue));for(var i=e.filter((function(t){return t instanceof RegExp})),o=0,a=i.length;o<a;o++)if(i[o].test(n))return!0;return!1})(t,r)||i.removeAttribute(t.nodeName)}))},l=0,r=a.length;l<r;l++)s(l);return i.body.innerHTML}var It="tooltip",kt="bs.tooltip",Ot=o.default.fn.tooltip,jt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),Pt=["sanitize","whiteList","sanitizeFn"],Lt="fade",Rt="show",xt="show",qt="out",Ft="hover",Qt="focus",Bt={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"},Ht={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Ut={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},Mt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},Wt=function(){function t(t,e){if("undefined"==typeof a.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass(Rt))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var s=this.getTipElement(),l=d.getUID(this.constructor.NAME);s.setAttribute("id",l),this.element.setAttribute("aria-describedby",l),this.setContent(),this.config.animation&&o.default(s).addClass(Lt);var r="function"==typeof this.config.placement?this.config.placement.call(this,s,this.element):this.config.placement,u=this._getAttachment(r);this.addAttachmentClass(u);var f=this._getContainer();o.default(s).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(s).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new a.default(this.element,s,this._getPopperConfig(u)),o.default(s).addClass(Rt),o.default(s).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),e===qt&&t._leave(null,t)};if(o.default(this.tip).hasClass(Lt)){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),a=function(){e._hoverState!==xt&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass(Rt),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass(Lt)){var s=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=At(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return r({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return Bt[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n=e===Ft?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i=e===Ft?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Qt:Ft]=!0),o.default(e.getTipElement()).hasClass(Rt)||e._hoverState===xt?e._hoverState=xt:(clearTimeout(e._timeout),e._hoverState=xt,e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){e._hoverState===xt&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Qt:Ft]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=qt,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){e._hoverState===qt&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Pt.indexOf(t)&&delete e[t]})),"number"==typeof(t=r({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(It,t,this.constructor.DefaultType),t.sanitize&&(t.template=At(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(jt);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass(Lt),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(kt),a="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,a),n.data(kt,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method n
1492amed "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Ht}},{key:"NAME",get:function(){return It}},{key:"DATA_KEY",get:function(){return kt}},{key:"Event",get:function(){return Mt}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return Ut}}]),t}();o.default.fn.tooltip=Wt._jQueryInterface,o.default.fn.tooltip.Constructor=Wt,o.default.fn.tooltip.noConflict=function(){return o.default.fn.tooltip=Ot,Wt._jQueryInterface};var Vt="bs.popover",zt=o.default.fn.popover,Kt=new RegExp("(^|\\s)bs-popover\\S+","g"),Xt=r({},Wt.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),Yt=r({},Wt.DefaultType,{content:"(string|element|function)"}),$t={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},Jt=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var a=i.prototype;return a.isWithContent=function(){return this.getTitle()||this._getContent()},a.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},a.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},a.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},a._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},a._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(Kt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data(Vt),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data(Vt,e)),"string"==typeof t)){if("undefined"==typeof e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},l(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return Xt}},{key:"NAME",get:function(){return"popover"}},{key:"DATA_KEY",get:function(){return Vt}},{key:"Event",get:function(){return $t}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return Yt}}]),i}(Wt);o.default.fn.popover=Jt._jQueryInterface,o.default.fn.popover.Constructor=Jt,o.default.fn.popover.noConflict=function(){return o.default.fn.popover=zt,Jt._jQueryInterface};var Gt="scrollspy",Zt="bs.scrollspy",te=o.default.fn[Gt],ee="active",ne="position",ie=".nav, .list-group",oe={offset:10,method:"auto",target:""},ae={offset:"number",method:"string",target:"(string|element)"},se=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":ne,n="auto"===this._config.method?e:this._config.method,i=n===ne?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,a=d.getSelectorFromElement(t);if(a&&(e=document.querySelector(a)),e){var s=e.getBoundingClientRect();if(s.width||s.height)return[o.default(e)[n]().top+i,a]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]}
vendor: 5,559 bytes, line 1492
1492)).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,Zt),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=r({},oe,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(Gt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(Gt,t,ae),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t<this._offsets[o+1])&&this._activate(this._targets[o])}},e._activate=function(t){this._activeTarget=t,this._clear();var e=this._selector.split(",").map((function(e){return e+'[data-target="'+t+'"],'+e+'[href="'+t+'"]'})),n=o.default([].slice.call(document.querySelectorAll(e.join(","))));n.hasClass("dropdown-item")?(n.closest(".dropdown").find(".dropdown-toggle").addClass(ee),n.addClass(ee)):(n.addClass(ee),n.parents(ie).prev(".nav-link, .list-group-item").addClass(ee),n.parents(ie).prev(".nav-item").children(".nav-link").addClass(ee)),o.default(this._scrollElement).trigger("activate.bs.scrollspy",{relatedTarget:t})},e._clear=function(){[].slice.call(document.querySelectorAll(this._selector)).filter((function(t){return t.classList.contains(ee)})).forEach((function(t){return t.classList.remove(ee)}))},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data(Zt);if(n||(n=new t(this,"object"==typeof e&&e),o.default(this).data(Zt,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return oe}}]),t}();o.default(window).on("load.bs.scrollspy.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-spy="scroll"]')),e=t.length;e--;){var n=o.default(t[e]);se._jQueryInterface.call(n,n.data())}})),o.default.fn[Gt]=se._jQueryInterface,o.default.fn[Gt].Constructor=se,o.default.fn[Gt].noConflict=function(){return o.default.fn[Gt]=te,se._jQueryInterface};var le="bs.tab",re=o.default.fn.tab,ue="active",fe="fade",de="show",ce=".active",he="> li > .active",ge=function(){function t(t){this._element=t}var e=t.prototype;return e.show=function(){var t=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&o.default(this._element).hasClass(ue)||o.default(this._element).hasClass("disabled"))){var e,n,i=o.default(this._element).closest(".nav, .list-group")[0],a=d.getSelectorFromElement(this._element);if(i){var s="UL"===i.nodeName||"OL"===i.nodeName?he:ce;n=(n=o.default.makeArray(o.default(i).find(s)))[n.length-1]}var l=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),r=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(l),o.default(this._element).trigger(r),!r.isDefaultPrevented()&&!l.isDefaultPrevented()){a&&(e=document.querySelector(a)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,le),this._element=null},e._activate=function(t,e,n){var i=this,a=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(ce):o.default(e).find(he))[0],s=n&&a&&o.default(a).hasClass(fe),l=function(){return i._transitionComplete(t,a,n)};if(a&&s){var r=d.getTransitionDurationFromElement(a);o.default(a).removeClass(de).one(d.TRANSITION_END,l).emulateTransitionEnd(r)}else l()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass(ue);var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass(ue),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass(ue),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains(fe)&&t.classList.add(de);var a=t.parentNode;if(a&&"LI"===a.nodeName&&(a=a.parentNode),a&&o.default(a).hasClass("dropdown-menu")){var s=o.default(t).closest(".dropdown")[0];if(s){var l=[].slice.call(s.querySelectorAll(".dropdown-toggle"));o.default(l).addClass(ue)}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(le);if(i||(i=new t(this),n.data(le,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method n
1492amed "'+e+'"');i[e]()}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),ge._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=ge._jQueryInterface,o.default.fn.tab.Constructor=ge,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=re,ge._jQueryInterface};var me="bs.toast",pe=o.default.fn.toast,_e="hide",ve="show",ye="showing",be="click.dismiss.bs.toast",Ee={animation:!0,autohide:!0,delay:500},Te={animation:"boolean",autohide:"boolean",delay:"number"},we=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove(ye),t._element.classList.add(ve),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove(_e),d.reflow(this._element),this._element.classList.add(ye),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains(ve)){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains(ve)&&this._element.classList.remove(ve),o.default(this._element).off(be),o.default.removeData(this._element,me),this._element=null,this._config=null},e._getConfig=function(t){return t=r({},Ee,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig("toast",t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on(be,'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add(_e),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove(ve),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data(me);if(i||(i=new t(this,"object"==typeof e&&e),n.data(me,i)),"string"==typeof e){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},l(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return Te}},{key:"Default",get:function(){return Ee}}]),t}();o.default.fn.toast=we._jQueryInterface,o.default.fn.toast.Constructor=we,o.default.fn.toast.noConflict=function(){return o.default.fn.toast=pe,we._jQueryInterface},t.Alert=g,t.Button=E,t.Carousel=P,t.Collapse=V,t.Dropdown=lt,t.Modal=Ct,t.Popover=Jt,t.Scrollspy=se,t.Tab=ge,t.Toast=we,t.Tooltip=Wt,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}));
1493/* End */
1494;
1495; /* Start:"a:4:{s:4:"full";s:80:"/local/templates/main_template/js/bootstrap/bootstrap.bundle.js?1760356991207836";s:6:"source";s:63:"/local/templates/main_template/js/bootstrap/bootstrap.bundle.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
vendor: 8,563 bytes, lines 1496-1756
1496/*!
1497  * Bootstrap v5.3.8 (https://getbootstrap.com/)
1498  * Copyright 2011-2025 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
1499  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1500  */
1501(function (global, factory) {
1502  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
1503  typeof define === 'function' && define.amd ? define(factory) :
1504  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory());
1505})(this, (function () { 'use strict';
1506
1507  /**
1508   * --------------------------------------------------------------------------
1509   * Bootstrap dom/data.js
1510   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1511   * --------------------------------------------------------------------------
1512   */
1513
1514  /**
1515   * Constants
1516   */
1517
1518  const elementMap = new Map();
1519  const Data = {
1520    set(element, key, instance) {
1521      if (!elementMap.has(element)) {
1522        elementMap.set(element, new Map());
1523      }
1524      const instanceMap = elementMap.get(element);
1525
1526      // make it clear we only want one instance per element
1527      // can be removed later when multiple key/instances are fine to be used
1528      if (!instanceMap.has(key) && instanceMap.size !== 0) {
1529        // eslint-disable-next-line no-console
1530        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
1531        return;
1532      }
1533      instanceMap.set(key, instance);
1534    },
1535    get(element, key) {
1536      if (elementMap.has(element)) {
1537        return elementMap.get(element).get(key) || null;
1538      }
1539      return null;
1540    },
1541    remove(element, key) {
1542      if (!elementMap.has(element)) {
1543        return;
1544      }
1545      const instanceMap = elementMap.get(element);
1546      instanceMap.delete(key);
1547
1548      // free up element references if there are no instances left for an element
1549      if (instanceMap.size === 0) {
1550        elementMap.delete(element);
1551      }
1552    }
1553  };
1554
1555  /**
1556   * --------------------------------------------------------------------------
1557   * Bootstrap util/index.js
1558   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1559   * --------------------------------------------------------------------------
1560   */
1561
1562  const MAX_UID = 1000000;
1563  const MILLISECONDS_MULTIPLIER = 1000;
1564  const TRANSITION_END = 'transitionend';
1565
1566  /**
1567   * Properly escape IDs selectors to handle weird IDs
1568   * @param {string} selector
1569   * @returns {string}
1570   */
1571  const parseSelector = selector => {
1572    if (selector && window.CSS && window.CSS.escape) {
1573      // document.querySelector needs escaping to handle IDs (html5+) containing for instance /
1574      selector = selector.replace(/#([^\s"#']+)/g, (match, id) => `#${CSS.escape(id)}`);
1575    }
1576    return selector;
1577  };
1578
1579  // Shout-out Angus Croll (https://goo.gl/pxwQGp)
1580  const toType = object => {
1581    if (object === null || object === undefined) {
1582      return `${object}`;
1583    }
1584    return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
1585  };
1586
1587  /**
1588   * Public Util API
1589   */
1590
1591  const getUID = prefix => {
1592    do {
1593      prefix += Math.floor(Math.random() * MAX_UID);
1594    } while (document.getElementById(prefix));
1595    return prefix;
1596  };
1597  const getTransitionDurationFromElement = element => {
1598    if (!element) {
1599      return 0;
1600    }
1601
1602    // Get transition-duration of the element
1603    let {
1604      transitionDuration,
1605      transitionDelay
1606    } = window.getComputedStyle(element);
1607    const floatTransitionDuration = Number.parseFloat(transitionDuration);
1608    const floatTransitionDelay = Number.parseFloat(transitionDelay);
1609
1610    // Return 0 if element or transition duration is not found
1611    if (!floatTransitionDuration && !floatTransitionDelay) {
1612      return 0;
1613    }
1614
1615    // If multiple durations are defined, take the first
1616    transitionDuration = transitionDuration.split(',')[0];
1617    transitionDelay = transitionDelay.split(',')[0];
1618    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
1619  };
1620  const triggerTransitionEnd = element => {
1621    element.dispatchEvent(new Event(TRANSITION_END));
1622  };
1623  const isElement$1 = object => {
1624    if (!object || typeof object !== 'object') {
1625      return false;
1626    }
1627    if (typeof object.jquery !== 'undefined') {
1628      object = object[0];
1629    }
1630    return typeof object.nodeType !== 'undefined';
1631  };
1632  const getElement = object => {
1633    // it's a jQuery object or a node element
1634    if (isElement$1(object)) {
1635      return object.jquery ? object[0] : object;
1636    }
1637    if (typeof object === 'string' && object.length > 0) {
1638      return document.querySelector(parseSelector(object));
1639    }
1640    return null;
1641  };
1642  const isVisible = element => {
1643    if (!isElement$1(element) || element.getClientRects().length === 0) {
1644      return false;
1645    }
1646    const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
1647    // Handle `details` element as its content may falsie appear visible when it is closed
1648    const closedDetails = element.closest('details:not([open])');
1649    if (!closedDetails) {
1650      return elementIsVisible;
1651    }
1652    if (closedDetails !== element) {
1653      const summary = element.closest('summary');
1654      if (summary && summary.parentNode !== closedDetails) {
1655        return false;
1656      }
1657      if (summary === null) {
1658        return false;
1659      }
1660    }
1661    return elementIsVisible;
1662  };
1663  const isDisabled = element => {
1664    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
1665      return true;
1666    }
1667    if (element.classList.contains('disabled')) {
1668      return true;
1669    }
1670    if (typeof element.disabled !== 'undefined') {
1671      return element.disabled;
1672    }
1673    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
1674  };
1675  const findShadowRoot = element => {
1676    if (!document.documentElement.attachShadow) {
1677      return null;
1678    }
1679
1680    // Can find the shadow root otherwise it'll return the document
1681    if (typeof element.getRootNode === 'function') {
1682      const root = element.getRootNode();
1683      return root instanceof ShadowRoot ? root : null;
1684    }
1685    if (element instanceof ShadowRoot) {
1686      return element;
1687    }
1688
1689    // when we don't find a shadow root
1690    if (!element.parentNode) {
1691      return null;
1692    }
1693    return findShadowRoot(element.parentNode);
1694  };
1695  const noop = () => {};
1696
1697  /**
1698   * Trick to restart an element's animation
1699   *
1700   * @param {HTMLElement} element
1701   * @return void
1702   *
1703   * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
1704   */
1705  const reflow = element => {
1706    element.offsetHeight; // eslint-disable-line no-unused-expressions
1707  };
1708  const getjQuery = () => {
1709    if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
1710      return window.jQuery;
1711    }
1712    return null;
1713  };
1714  const DOMContentLoadedCallbacks = [];
1715  const onDOMContentLoaded = callback => {
1716    if (document.readyState === 'loading') {
1717      // add listener on the first call when the document is in loading state
1718      if (!DOMContentLoadedCallbacks.length) {
1719        document.addEventListener('DOMContentLoaded', () => {
1720          for (const callback of DOMContentLoadedCallbacks) {
1721            callback();
1722          }
1723        });
1724      }
1725      DOMContentLoadedCallbacks.push(callback);
1726    } else {
1727      callback();
1728    }
1729  };
1730  const isRTL = () => document.documentElement.dir === 'rtl';
1731  const defineJQueryPlugin = plugin => {
1732    onDOMContentLoaded(() => {
1733      const $ = getjQuery();
1734      /* istanbul ignore if */
1735      if ($) {
1736        const name = plugin.NAME;
1737        const JQUERY_NO_CONFLICT = $.fn[name];
1738        $.fn[name] = plugin.jQueryInterface;
1739        $.fn[name].Constructor = plugin;
1740        $.fn[name].noConflict = () => {
1741          $.fn[name] = JQUERY_NO_CONFLICT;
1742          return plugin.jQueryInterface;
1743        };
1744      }
1745    });
1746  };
1747  const execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {
1748    return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue;
1749  };
1750  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
1751    if (!waitForTransition) {
1752      execute(callback);
1753      return;
1754    }
1755    const durationPadding = 5;
1756    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
vendor: 9,815 bytes, lines 1757-2008
1757    let called = false;
1758    const handler = ({
1759      target
1760    }) => {
1761      if (target !== transitionElement) {
1762        return;
1763      }
1764      called = true;
1765      transitionElement.removeEventListener(TRANSITION_END, handler);
1766      execute(callback);
1767    };
1768    transitionElement.addEventListener(TRANSITION_END, handler);
1769    setTimeout(() => {
1770      if (!called) {
1771        triggerTransitionEnd(transitionElement);
1772      }
1773    }, emulatedDuration);
1774  };
1775
1776  /**
1777   * Return the previous/next element of a list.
1778   *
1779   * @param {array} list    The list of elements
1780   * @param activeElement   The active element
1781   * @param shouldGetNext   Choose to get next or previous element
1782   * @param isCycleAllowed
1783   * @return {Element|elem} The proper element
1784   */
1785  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
1786    const listLength = list.length;
1787    let index = list.indexOf(activeElement);
1788
1789    // if the element does not exist in the list return an element
1790    // depending on the direction and if cycle is allowed
1791    if (index === -1) {
1792      return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
1793    }
1794    index += shouldGetNext ? 1 : -1;
1795    if (isCycleAllowed) {
1796      index = (index + listLength) % listLength;
1797    }
1798    return list[Math.max(0, Math.min(index, listLength - 1))];
1799  };
1800
1801  /**
1802   * --------------------------------------------------------------------------
1803   * Bootstrap dom/event-handler.js
1804   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1805   * --------------------------------------------------------------------------
1806   */
1807
1808
1809  /**
1810   * Constants
1811   */
1812
1813  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
1814  const stripNameRegex = /\..*/;
1815  const stripUidRegex = /::\d+$/;
1816  const eventRegistry = {}; // Events storage
1817  let uidEvent = 1;
1818  const customEvents = {
1819    mouseenter: 'mouseover',
1820    mouseleave: 'mouseout'
1821  };
1822  const nativeEvents = 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']);
1823
1824  /**
1825   * Private methods
1826   */
1827
1828  function makeEventUid(element, uid) {
1829    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
1830  }
1831  function getElementEvents(element) {
1832    const uid = makeEventUid(element);
1833    element.uidEvent = uid;
1834    eventRegistry[uid] = eventRegistry[uid] || {};
1835    return eventRegistry[uid];
1836  }
1837  function bootstrapHandler(element, fn) {
1838    return function handler(event) {
1839      hydrateObj(event, {
1840        delegateTarget: element
1841      });
1842      if (handler.oneOff) {
1843        EventHandler.off(element, event.type, fn);
1844      }
1845      return fn.apply(element, [event]);
1846    };
1847  }
1848  function bootstrapDelegationHandler(element, selector, fn) {
1849    return function handler(event) {
1850      const domElements = element.querySelectorAll(selector);
1851      for (let {
1852        target
1853      } = event; target && target !== this; target = target.parentNode) {
1854        for (const domElement of domElements) {
1855          if (domElement !== target) {
1856            continue;
1857          }
1858          hydrateObj(event, {
1859            delegateTarget: target
1860          });
1861          if (handler.oneOff) {
1862            EventHandler.off(element, event.type, selector, fn);
1863          }
1864          return fn.apply(target, [event]);
1865        }
1866      }
1867    };
1868  }
1869  function findHandler(events, callable, delegationSelector = null) {
1870    return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
1871  }
1872  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
1873    const isDelegated = typeof handler === 'string';
1874    // TODO: tooltip passes `false` instead of selector, so we need to check
1875    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
1876    let typeEvent = getTypeEvent(originalTypeEvent);
1877    if (!nativeEvents.has(typeEvent)) {
1878      typeEvent = originalTypeEvent;
1879    }
1880    return [isDelegated, callable, typeEvent];
1881  }
1882  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
1883    if (typeof originalTypeEvent !== 'string' || !element) {
1884      return;
1885    }
1886    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
1887
1888    // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
1889    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
1890    if (originalTypeEvent in customEvents) {
1891      const wrapFunction = fn => {
1892        return function (event) {
1893          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
1894            return fn.call(this, event);
1895          }
1896        };
1897      };
1898      callable = wrapFunction(callable);
1899    }
1900    const events = getElementEvents(element);
1901    const handlers = events[typeEvent] || (events[typeEvent] = {});
1902    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
1903    if (previousFunction) {
1904      previousFunction.oneOff = previousFunction.oneOff && oneOff;
1905      return;
1906    }
1907    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
1908    const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
1909    fn.delegationSelector = isDelegated ? handler : null;
1910    fn.callable = callable;
1911    fn.oneOff = oneOff;
1912    fn.uidEvent = uid;
1913    handlers[uid] = fn;
1914    element.addEventListener(typeEvent, fn, isDelegated);
1915  }
1916  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
1917    const fn = findHandler(events[typeEvent], handler, delegationSelector);
1918    if (!fn) {
1919      return;
1920    }
1921    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
1922    delete events[typeEvent][fn.uidEvent];
1923  }
1924  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
1925    const storeElementEvent = events[typeEvent] || {};
1926    for (const [handlerKey, event] of Object.entries(storeElementEvent)) {
1927      if (handlerKey.includes(namespace)) {
1928        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1929      }
1930    }
1931  }
1932  function getTypeEvent(event) {
1933    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
1934    event = event.replace(stripNameRegex, '');
1935    return customEvents[event] || event;
1936  }
1937  const EventHandler = {
1938    on(element, event, handler, delegationFunction) {
1939      addHandler(element, event, handler, delegationFunction, false);
1940    },
1941    one(element, event, handler, delegationFunction) {
1942      addHandler(element, event, handler, delegationFunction, true);
1943    },
1944    off(element, originalTypeEvent, handler, delegationFunction) {
1945      if (typeof originalTypeEvent !== 'string' || !element) {
1946        return;
1947      }
1948      const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
1949      const inNamespace = typeEvent !== originalTypeEvent;
1950      const events = getElementEvents(element);
1951      const storeElementEvent = events[typeEvent] || {};
1952      const isNamespace = originalTypeEvent.startsWith('.');
1953      if (typeof callable !== 'undefined') {
1954        // Simplest case: handler is passed, remove that listener ONLY.
1955        if (!Object.keys(storeElementEvent).length) {
1956          return;
1957        }
1958        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
1959        return;
1960      }
1961      if (isNamespace) {
1962        for (const elementEvent of Object.keys(events)) {
1963          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
1964        }
1965      }
1966      for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {
1967        const handlerKey = keyHandlers.replace(stripUidRegex, '');
1968        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
1969          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1970        }
1971      }
1972    },
1973    trigger(element, event, args) {
1974      if (typeof event !== 'string' || !element) {
1975        return null;
1976      }
1977      const $ = getjQuery();
1978      const typeEvent = getTypeEvent(event);
1979      const inNamespace = event !== typeEvent;
1980      let jQueryEvent = null;
1981      let bubbles = true;
1982      let nativeDispatch = true;
1983      let defaultPrevented = false;
1984      if (inNamespace && $) {
1985        jQueryEvent = $.Event(event, args);
1986        $(element).trigger(jQueryEvent);
1987        bubbles = !jQueryEvent.isPropagationStopped();
1988        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
1989        defaultPrevented = jQueryEvent.isDefaultPrevented();
1990      }
1991      const evt = hydrateObj(new Event(event, {
1992        bubbles,
1993        cancelable: true
1994      }), args);
1995      if (defaultPrevented) {
1996        evt.preventDefault();
1997      }
1998      if (nativeDispatch) {
1999        element.dispatchEvent(evt);
2000      }
2001      if (evt.defaultPrevented && jQueryEvent) {
2002        jQueryEvent.preventDefault();
2003      }
2004      return evt;
2005    }
2006  };
2007  function hydrateObj(obj, meta = {}) {
2008    for (const [key, value] of Object.entries(meta)) {
vendor: 4,589 bytes, lines 2009-2166
2009      try {
2010        obj[key] = value;
2011      } catch (_unused) {
2012        Object.defineProperty(obj, key, {
2013          configurable: true,
2014          get() {
2015            return value;
2016          }
2017        });
2018      }
2019    }
2020    return obj;
2021  }
2022
2023  /**
2024   * --------------------------------------------------------------------------
2025   * Bootstrap dom/manipulator.js
2026   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2027   * --------------------------------------------------------------------------
2028   */
2029
2030  function normalizeData(value) {
2031    if (value === 'true') {
2032      return true;
2033    }
2034    if (value === 'false') {
2035      return false;
2036    }
2037    if (value === Number(value).toString()) {
2038      return Number(value);
2039    }
2040    if (value === '' || value === 'null') {
2041      return null;
2042    }
2043    if (typeof value !== 'string') {
2044      return value;
2045    }
2046    try {
2047      return JSON.parse(decodeURIComponent(value));
2048    } catch (_unused) {
2049      return value;
2050    }
2051  }
2052  function normalizeDataKey(key) {
2053    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
2054  }
2055  const Manipulator = {
2056    setDataAttribute(element, key, value) {
2057      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
2058    },
2059    removeDataAttribute(element, key) {
2060      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
2061    },
2062    getDataAttributes(element) {
2063      if (!element) {
2064        return {};
2065      }
2066      const attributes = {};
2067      const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
2068      for (const key of bsKeys) {
2069        let pureKey = key.replace(/^bs/, '');
2070        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1);
2071        attributes[pureKey] = normalizeData(element.dataset[key]);
2072      }
2073      return attributes;
2074    },
2075    getDataAttribute(element, key) {
2076      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
2077    }
2078  };
2079
2080  /**
2081   * --------------------------------------------------------------------------
2082   * Bootstrap util/config.js
2083   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2084   * --------------------------------------------------------------------------
2085   */
2086
2087
2088  /**
2089   * Class definition
2090   */
2091
2092  class Config {
2093    // Getters
2094    static get Default() {
2095      return {};
2096    }
2097    static get DefaultType() {
2098      return {};
2099    }
2100    static get NAME() {
2101      throw new Error('You have to implement the static method "NAME", for each component!');
2102    }
2103    _getConfig(config) {
2104      config = this._mergeConfigObj(config);
2105      config = this._configAfterMerge(config);
2106      this._typeCheckConfig(config);
2107      return config;
2108    }
2109    _configAfterMerge(config) {
2110      return config;
2111    }
2112    _mergeConfigObj(config, element) {
2113      const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
2114
2115      return {
2116        ...this.constructor.Default,
2117        ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
2118        ...(isElement$1(element) ? Manipulator.getDataAttributes(element) : {}),
2119        ...(typeof config === 'object' ? config : {})
2120      };
2121    }
2122    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
2123      for (const [property, expectedTypes] of Object.entries(configTypes)) {
2124        const value = config[property];
2125        const valueType = isElement$1(value) ? 'element' : toType(value);
2126        if (!new RegExp(expectedTypes).test(valueType)) {
2127          throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
2128        }
2129      }
2130    }
2131  }
2132
2133  /**
2134   * --------------------------------------------------------------------------
2135   * Bootstrap base-component.js
2136   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2137   * --------------------------------------------------------------------------
2138   */
2139
2140
2141  /**
2142   * Constants
2143   */
2144
2145  const VERSION = '5.3.8';
2146
2147  /**
2148   * Class definition
2149   */
2150
2151  class BaseComponent extends Config {
2152    constructor(element, config) {
2153      super();
2154      element = getElement(element);
2155      if (!element) {
2156        return;
2157      }
2158      this._element = element;
2159      this._config = this._getConfig(config);
2160      Data.set(this._element, this.constructor.DATA_KEY, this);
2161    }
2162
2163    // Public
2164    dispose() {
2165      Data.remove(this._element, this.constructor.DATA_KEY);
2166      EventHandler.off(this._element, this.constructor.EVENT_KEY);
vendor: 29,739 bytes, lines 2167-3096
2167      for (const propertyName of Object.getOwnPropertyNames(this)) {
2168        this[propertyName] = null;
2169      }
2170    }
2171
2172    // Private
2173    _queueCallback(callback, element, isAnimated = true) {
2174      executeAfterTransition(callback, element, isAnimated);
2175    }
2176    _getConfig(config) {
2177      config = this._mergeConfigObj(config, this._element);
2178      config = this._configAfterMerge(config);
2179      this._typeCheckConfig(config);
2180      return config;
2181    }
2182
2183    // Static
2184    static getInstance(element) {
2185      return Data.get(getElement(element), this.DATA_KEY);
2186    }
2187    static getOrCreateInstance(element, config = {}) {
2188      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
2189    }
2190    static get VERSION() {
2191      return VERSION;
2192    }
2193    static get DATA_KEY() {
2194      return `bs.${this.NAME}`;
2195    }
2196    static get EVENT_KEY() {
2197      return `.${this.DATA_KEY}`;
2198    }
2199    static eventName(name) {
2200      return `${name}${this.EVENT_KEY}`;
2201    }
2202  }
2203
2204  /**
2205   * --------------------------------------------------------------------------
2206   * Bootstrap dom/selector-engine.js
2207   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2208   * --------------------------------------------------------------------------
2209   */
2210
2211  const getSelector = element => {
2212    let selector = element.getAttribute('data-bs-target');
2213    if (!selector || selector === '#') {
2214      let hrefAttribute = element.getAttribute('href');
2215
2216      // The only valid content that could double as a selector are IDs or classes,
2217      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
2218      // `document.querySelector` will rightfully complain it is invalid.
2219      // See https://github.com/twbs/bootstrap/issues/32273
2220      if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
2221        return null;
2222      }
2223
2224      // Just in case some CMS puts out a full URL with the anchor appended
2225      if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
2226        hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
2227      }
2228      selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
2229    }
2230    return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;
2231  };
2232  const SelectorEngine = {
2233    find(selector, element = document.documentElement) {
2234      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
2235    },
2236    findOne(selector, element = document.documentElement) {
2237      return Element.prototype.querySelector.call(element, selector);
2238    },
2239    children(element, selector) {
2240      return [].concat(...element.children).filter(child => child.matches(selector));
2241    },
2242    parents(element, selector) {
2243      const parents = [];
2244      let ancestor = element.parentNode.closest(selector);
2245      while (ancestor) {
2246        parents.push(ancestor);
2247        ancestor = ancestor.parentNode.closest(selector);
2248      }
2249      return parents;
2250    },
2251    prev(element, selector) {
2252      let previous = element.previousElementSibling;
2253      while (previous) {
2254        if (previous.matches(selector)) {
2255          return [previous];
2256        }
2257        previous = previous.previousElementSibling;
2258      }
2259      return [];
2260    },
2261    // TODO: this is now unused; remove later along with prev()
2262    next(element, selector) {
2263      let next = element.nextElementSibling;
2264      while (next) {
2265        if (next.matches(selector)) {
2266          return [next];
2267        }
2268        next = next.nextElementSibling;
2269      }
2270      return [];
2271    },
2272    focusableChildren(element) {
2273      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
2274      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
2275    },
2276    getSelectorFromElement(element) {
2277      const selector = getSelector(element);
2278      if (selector) {
2279        return SelectorEngine.findOne(selector) ? selector : null;
2280      }
2281      return null;
2282    },
2283    getElementFromSelector(element) {
2284      const selector = getSelector(element);
2285      return selector ? SelectorEngine.findOne(selector) : null;
2286    },
2287    getMultipleElementsFromSelector(element) {
2288      const selector = getSelector(element);
2289      return selector ? SelectorEngine.find(selector) : [];
2290    }
2291  };
2292
2293  /**
2294   * --------------------------------------------------------------------------
2295   * Bootstrap util/component-functions.js
2296   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2297   * --------------------------------------------------------------------------
2298   */
2299
2300  const enableDismissTrigger = (component, method = 'hide') => {
2301    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
2302    const name = component.NAME;
2303    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
2304      if (['A', 'AREA'].includes(this.tagName)) {
2305        event.preventDefault();
2306      }
2307      if (isDisabled(this)) {
2308        return;
2309      }
2310      const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);
2311      const instance = component.getOrCreateInstance(target);
2312
2313      // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
2314      instance[method]();
2315    });
2316  };
2317
2318  /**
2319   * --------------------------------------------------------------------------
2320   * Bootstrap alert.js
2321   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2322   * --------------------------------------------------------------------------
2323   */
2324
2325
2326  /**
2327   * Constants
2328   */
2329
2330  const NAME$f = 'alert';
2331  const DATA_KEY$a = 'bs.alert';
2332  const EVENT_KEY$b = `.${DATA_KEY$a}`;
2333  const EVENT_CLOSE = `close${EVENT_KEY$b}`;
2334  const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
2335  const CLASS_NAME_FADE$5 = 'fade';
2336  const CLASS_NAME_SHOW$8 = 'show';
2337
2338  /**
2339   * Class definition
2340   */
2341
2342  class Alert extends BaseComponent {
2343    // Getters
2344    static get NAME() {
2345      return NAME$f;
2346    }
2347
2348    // Public
2349    close() {
2350      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
2351      if (closeEvent.defaultPrevented) {
2352        return;
2353      }
2354      this._element.classList.remove(CLASS_NAME_SHOW$8);
2355      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
2356      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
2357    }
2358
2359    // Private
2360    _destroyElement() {
2361      this._element.remove();
2362      EventHandler.trigger(this._element, EVENT_CLOSED);
2363      this.dispose();
2364    }
2365
2366    // Static
2367    static jQueryInterface(config) {
2368      return this.each(function () {
2369        const data = Alert.getOrCreateInstance(this);
2370        if (typeof config !== 'string') {
2371          return;
2372        }
2373        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
2374          throw new TypeError(`No method named "${config}"`);
2375        }
2376        data[config](this);
2377      });
2378    }
2379  }
2380
2381  /**
2382   * Data API implementation
2383   */
2384
2385  enableDismissTrigger(Alert, 'close');
2386
2387  /**
2388   * jQuery
2389   */
2390
2391  defineJQueryPlugin(Alert);
2392
2393  /**
2394   * --------------------------------------------------------------------------
2395   * Bootstrap button.js
2396   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2397   * --------------------------------------------------------------------------
2398   */
2399
2400
2401  /**
2402   * Constants
2403   */
2404
2405  const NAME$e = 'button';
2406  const DATA_KEY$9 = 'bs.button';
2407  const EVENT_KEY$a = `.${DATA_KEY$9}`;
2408  const DATA_API_KEY$6 = '.data-api';
2409  const CLASS_NAME_ACTIVE$3 = 'active';
2410  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
2411  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
2412
2413  /**
2414   * Class definition
2415   */
2416
2417  class Button extends BaseComponent {
2418    // Getters
2419    static get NAME() {
2420      return NAME$e;
2421    }
2422
2423    // Public
2424    toggle() {
2425      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
2426      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
2427    }
2428
2429    // Static
2430    static jQueryInterface(config) {
2431      return this.each(function () {
2432        const data = Button.getOrCreateInstance(this);
2433        if (config === 'toggle') {
2434          data[config]();
2435        }
2436      });
2437    }
2438  }
2439
2440  /**
2441   * Data API implementation
2442   */
2443
2444  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
2445    event.preventDefault();
2446    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
2447    const data = Button.getOrCreateInstance(button);
2448    data.toggle();
2449  });
2450
2451  /**
2452   * jQuery
2453   */
2454
2455  defineJQueryPlugin(Button);
2456
2457  /**
2458   * --------------------------------------------------------------------------
2459   * Bootstrap util/swipe.js
2460   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2461   * --------------------------------------------------------------------------
2462   */
2463
2464
2465  /**
2466   * Constants
2467   */
2468
2469  const NAME$d = 'swipe';
2470  const EVENT_KEY$9 = '.bs.swipe';
2471  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
2472  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
2473  const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
2474  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
2475  const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
2476  const POINTER_TYPE_TOUCH = 'touch';
2477  const POINTER_TYPE_PEN = 'pen';
2478  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
2479  const SWIPE_THRESHOLD = 40;
2480  const Default$c = {
2481    endCallback: null,
2482    leftCallback: null,
2483    rightCallback: null
2484  };
2485  const DefaultType$c = {
2486    endCallback: '(function|null)',
2487    leftCallback: '(function|null)',
2488    rightCallback: '(function|null)'
2489  };
2490
2491  /**
2492   * Class definition
2493   */
2494
2495  class Swipe extends Config {
2496    constructor(element, config) {
2497      super();
2498      this._element = element;
2499      if (!element || !Swipe.isSupported()) {
2500        return;
2501      }
2502      this._config = this._getConfig(config);
2503      this._deltaX = 0;
2504      this._supportPointerEvents = Boolean(window.PointerEvent);
2505      this._initEvents();
2506    }
2507
2508    // Getters
2509    static get Default() {
2510      return Default$c;
2511    }
2512    static get DefaultType() {
2513      return DefaultType$c;
2514    }
2515    static get NAME() {
2516      return NAME$d;
2517    }
2518
2519    // Public
2520    dispose() {
2521      EventHandler.off(this._element, EVENT_KEY$9);
2522    }
2523
2524    // Private
2525    _start(event) {
2526      if (!this._supportPointerEvents) {
2527        this._deltaX = event.touches[0].clientX;
2528        return;
2529      }
2530      if (this._eventIsPointerPenTouch(event)) {
2531        this._deltaX = event.clientX;
2532      }
2533    }
2534    _end(event) {
2535      if (this._eventIsPointerPenTouch(event)) {
2536        this._deltaX = event.clientX - this._deltaX;
2537      }
2538      this._handleSwipe();
2539      execute(this._config.endCallback);
2540    }
2541    _move(event) {
2542      this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
2543    }
2544    _handleSwipe() {
2545      const absDeltaX = Math.abs(this._deltaX);
2546      if (absDeltaX <= SWIPE_THRESHOLD) {
2547        return;
2548      }
2549      const direction = absDeltaX / this._deltaX;
2550      this._deltaX = 0;
2551      if (!direction) {
2552        return;
2553      }
2554      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
2555    }
2556    _initEvents() {
2557      if (this._supportPointerEvents) {
2558        EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
2559        EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
2560        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
2561      } else {
2562        EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
2563        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
2564        EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
2565      }
2566    }
2567    _eventIsPointerPenTouch(event) {
2568      return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
2569    }
2570
2571    // Static
2572    static isSupported() {
2573      return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
2574    }
2575  }
2576
2577  /**
2578   * --------------------------------------------------------------------------
2579   * Bootstrap carousel.js
2580   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2581   * --------------------------------------------------------------------------
2582   */
2583
2584
2585  /**
2586   * Constants
2587   */
2588
2589  const NAME$c = 'carousel';
2590  const DATA_KEY$8 = 'bs.carousel';
2591  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
2592  const DATA_API_KEY$5 = '.data-api';
2593  const ARROW_LEFT_KEY$1 = 'ArrowLeft';
2594  const ARROW_RIGHT_KEY$1 = 'ArrowRight';
2595  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
2596
2597  const ORDER_NEXT = 'next';
2598  const ORDER_PREV = 'prev';
2599  const DIRECTION_LEFT = 'left';
2600  const DIRECTION_RIGHT = 'right';
2601  const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
2602  const EVENT_SLID = `slid${EVENT_KEY$8}`;
2603  const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
2604  const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
2605  const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
2606  const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
2607  const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
2608  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
2609  const CLASS_NAME_CAROUSEL = 'carousel';
2610  const CLASS_NAME_ACTIVE$2 = 'active';
2611  const CLASS_NAME_SLIDE = 'slide';
2612  const CLASS_NAME_END = 'carousel-item-end';
2613  const CLASS_NAME_START = 'carousel-item-start';
2614  const CLASS_NAME_NEXT = 'carousel-item-next';
2615  const CLASS_NAME_PREV = 'carousel-item-prev';
2616  const SELECTOR_ACTIVE = '.active';
2617  const SELECTOR_ITEM = '.carousel-item';
2618  const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
2619  const SELECTOR_ITEM_IMG = '.carousel-item img';
2620  const SELECTOR_INDICATORS = '.carousel-indicators';
2621  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
2622  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
2623  const KEY_TO_DIRECTION = {
2624    [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
2625    [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
2626  };
2627  const Default$b = {
2628    interval: 5000,
2629    keyboard: true,
2630    pause: 'hover',
2631    ride: false,
2632    touch: true,
2633    wrap: true
2634  };
2635  const DefaultType$b = {
2636    interval: '(number|boolean)',
2637    // TODO:v6 remove boolean support
2638    keyboard: 'boolean',
2639    pause: '(string|boolean)',
2640    ride: '(boolean|string)',
2641    touch: 'boolean',
2642    wrap: 'boolean'
2643  };
2644
2645  /**
2646   * Class definition
2647   */
2648
2649  class Carousel extends BaseComponent {
2650    constructor(element, config) {
2651      super(element, config);
2652      this._interval = null;
2653      this._activeElement = null;
2654      this._isSliding = false;
2655      this.touchTimeout = null;
2656      this._swipeHelper = null;
2657      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
2658      this._addEventListeners();
2659      if (this._config.ride === CLASS_NAME_CAROUSEL) {
2660        this.cycle();
2661      }
2662    }
2663
2664    // Getters
2665    static get Default() {
2666      return Default$b;
2667    }
2668    static get DefaultType() {
2669      return DefaultType$b;
2670    }
2671    static get NAME() {
2672      return NAME$c;
2673    }
2674
2675    // Public
2676    next() {
2677      this._slide(ORDER_NEXT);
2678    }
2679    nextWhenVisible() {
2680      // FIXME TODO use `document.visibilityState`
2681      // Don't call next when the page isn't visible
2682      // or the carousel or its parent isn't visible
2683      if (!document.hidden && isVisible(this._element)) {
2684        this.next();
2685      }
2686    }
2687    prev() {
2688      this._slide(ORDER_PREV);
2689    }
2690    pause() {
2691      if (this._isSliding) {
2692        triggerTransitionEnd(this._element);
2693      }
2694      this._clearInterval();
2695    }
2696    cycle() {
2697      this._clearInterval();
2698      this._updateInterval();
2699      this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
2700    }
2701    _maybeEnableCycle() {
2702      if (!this._config.ride) {
2703        return;
2704      }
2705      if (this._isSliding) {
2706        EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
2707        return;
2708      }
2709      this.cycle();
2710    }
2711    to(index) {
2712      const items = this._getItems();
2713      if (index > items.length - 1 || index < 0) {
2714        return;
2715      }
2716      if (this._isSliding) {
2717        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
2718        return;
2719      }
2720      const activeIndex = this._getItemIndex(this._getActive());
2721      if (activeIndex === index) {
2722        return;
2723      }
2724      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
2725      this._slide(order, items[index]);
2726    }
2727    dispose() {
2728      if (this._swipeHelper) {
2729        this._swipeHelper.dispose();
2730      }
2731      super.dispose();
2732    }
2733
2734    // Private
2735    _configAfterMerge(config) {
2736      config.defaultInterval = config.interval;
2737      return config;
2738    }
2739    _addEventListeners() {
2740      if (this._config.keyboard) {
2741        EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
2742      }
2743      if (this._config.pause === 'hover') {
2744        EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
2745        EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
2746      }
2747      if (this._config.touch && Swipe.isSupported()) {
2748        this._addTouchEventListeners();
2749      }
2750    }
2751    _addTouchEventListeners() {
2752      for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
2753        EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
2754      }
2755      const endCallBack = () => {
2756        if (this._config.pause !== 'hover') {
2757          return;
2758        }
2759
2760        // If it's a touch-enabled device, mouseenter/leave are fired as
2761        // part of the mouse compatibility events on first tap - the carousel
2762        // would stop cycling until user tapped out of it;
2763        // here, we listen for touchend, explicitly pause the carousel
2764        // (as if it's the second time we tap on it, mouseenter compat event
2765        // is NOT fired) and after a timeout (to allow for mouse compatibility
2766        // events to fire) we explicitly restart cycling
2767
2768        this.pause();
2769        if (this.touchTimeout) {
2770          clearTimeout(this.touchTimeout);
2771        }
2772        this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
2773      };
2774      const swipeConfig = {
2775        leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
2776        rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
2777        endCallback: endCallBack
2778      };
2779      this._swipeHelper = new Swipe(this._element, swipeConfig);
2780    }
2781    _keydown(event) {
2782      if (/input|textarea/i.test(event.target.tagName)) {
2783        return;
2784      }
2785      const direction = KEY_TO_DIRECTION[event.key];
2786      if (direction) {
2787        event.preventDefault();
2788        this._slide(this._directionToOrder(direction));
2789      }
2790    }
2791    _getItemIndex(element) {
2792      return this._getItems().indexOf(element);
2793    }
2794    _setActiveIndicatorElement(index) {
2795      if (!this._indicatorsElement) {
2796        return;
2797      }
2798      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
2799      activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
2800      activeIndicator.removeAttribute('aria-current');
2801      const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
2802      if (newActiveIndicator) {
2803        newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
2804        newActiveIndicator.setAttribute('aria-current', 'true');
2805      }
2806    }
2807    _updateInterval() {
2808      const element = this._activeElement || this._getActive();
2809      if (!element) {
2810        return;
2811      }
2812      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
2813      this._config.interval = elementInterval || this._config.defaultInterval;
2814    }
2815    _slide(order, element = null) {
2816      if (this._isSliding) {
2817        return;
2818      }
2819      const activeElement = this._getActive();
2820      const isNext = order === ORDER_NEXT;
2821      const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
2822      if (nextElement === activeElement) {
2823        return;
2824      }
2825      const nextElementIndex = this._getItemIndex(nextElement);
2826      const triggerEvent = eventName => {
2827        return EventHandler.trigger(this._element, eventName, {
2828          relatedTarget: nextElement,
2829          direction: this._orderToDirection(order),
2830          from: this._getItemIndex(activeElement),
2831          to: nextElementIndex
2832        });
2833      };
2834      const slideEvent = triggerEvent(EVENT_SLIDE);
2835      if (slideEvent.defaultPrevented) {
2836        return;
2837      }
2838      if (!activeElement || !nextElement) {
2839        // Some weirdness is happening, so we bail
2840        // TODO: change tests that use empty divs to avoid this check
2841        return;
2842      }
2843      const isCycling = Boolean(this._interval);
2844      this.pause();
2845      this._isSliding = true;
2846      this._setActiveIndicatorElement(nextElementIndex);
2847      this._activeElement = nextElement;
2848      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
2849      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
2850      nextElement.classList.add(orderClassName);
2851      reflow(nextElement);
2852      activeElement.classList.add(directionalClassName);
2853      nextElement.classList.add(directionalClassName);
2854      const completeCallBack = () => {
2855        nextElement.classList.remove(directionalClassName, orderClassName);
2856        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
2857        activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
2858        this._isSliding = false;
2859        triggerEvent(EVENT_SLID);
2860      };
2861      this._queueCallback(completeCallBack, activeElement, this._isAnimated());
2862      if (isCycling) {
2863        this.cycle();
2864      }
2865    }
2866    _isAnimated() {
2867      return this._element.classList.contains(CLASS_NAME_SLIDE);
2868    }
2869    _getActive() {
2870      return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
2871    }
2872    _getItems() {
2873      return SelectorEngine.find(SELECTOR_ITEM, this._element);
2874    }
2875    _clearInterval() {
2876      if (this._interval) {
2877        clearInterval(this._interval);
2878        this._interval = null;
2879      }
2880    }
2881    _directionToOrder(direction) {
2882      if (isRTL()) {
2883        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
2884      }
2885      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
2886    }
2887    _orderToDirection(order) {
2888      if (isRTL()) {
2889        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
2890      }
2891      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
2892    }
2893
2894    // Static
2895    static jQueryInterface(config) {
2896      return this.each(function () {
2897        const data = Carousel.getOrCreateInstance(this, config);
2898        if (typeof config === 'number') {
2899          data.to(config);
2900          return;
2901        }
2902        if (typeof config === 'string') {
2903          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
2904            throw new TypeError(`No method named "${config}"`);
2905          }
2906          data[config]();
2907        }
2908      });
2909    }
2910  }
2911
2912  /**
2913   * Data API implementation
2914   */
2915
2916  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
2917    const target = SelectorEngine.getElementFromSelector(this);
2918    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
2919      return;
2920    }
2921    event.preventDefault();
2922    const carousel = Carousel.getOrCreateInstance(target);
2923    const slideIndex = this.getAttribute('data-bs-slide-to');
2924    if (slideIndex) {
2925      carousel.to(slideIndex);
2926      carousel._maybeEnableCycle();
2927      return;
2928    }
2929    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
2930      carousel.next();
2931      carousel._maybeEnableCycle();
2932      return;
2933    }
2934    carousel.prev();
2935    carousel._maybeEnableCycle();
2936  });
2937  EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
2938    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
2939    for (const carousel of carousels) {
2940      Carousel.getOrCreateInstance(carousel);
2941    }
2942  });
2943
2944  /**
2945   * jQuery
2946   */
2947
2948  defineJQueryPlugin(Carousel);
2949
2950  /**
2951   * --------------------------------------------------------------------------
2952   * Bootstrap collapse.js
2953   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2954   * --------------------------------------------------------------------------
2955   */
2956
2957
2958  /**
2959   * Constants
2960   */
2961
2962  const NAME$b = 'collapse';
2963  const DATA_KEY$7 = 'bs.collapse';
2964  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
2965  const DATA_API_KEY$4 = '.data-api';
2966  const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
2967  const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
2968  const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
2969  const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
2970  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
2971  const CLASS_NAME_SHOW$7 = 'show';
2972  const CLASS_NAME_COLLAPSE = 'collapse';
2973  const CLASS_NAME_COLLAPSING = 'collapsing';
2974  const CLASS_NAME_COLLAPSED = 'collapsed';
2975  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
2976  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
2977  const WIDTH = 'width';
2978  const HEIGHT = 'height';
2979  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
2980  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
2981  const Default$a = {
2982    parent: null,
2983    toggle: true
2984  };
2985  const DefaultType$a = {
2986    parent: '(null|element)',
2987    toggle: 'boolean'
2988  };
2989
2990  /**
2991   * Class definition
2992   */
2993
2994  class Collapse extends BaseComponent {
2995    constructor(element, config) {
2996      super(element, config);
2997      this._isTransitioning = false;
2998      this._triggerArray = [];
2999      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
3000      for (const elem of toggleList) {
3001        const selector = SelectorEngine.getSelectorFromElement(elem);
3002        const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
3003        if (selector !== null && filterElement.length) {
3004          this._triggerArray.push(elem);
3005        }
3006      }
3007      this._initializeChildren();
3008      if (!this._config.parent) {
3009        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
3010      }
3011      if (this._config.toggle) {
3012        this.toggle();
3013      }
3014    }
3015
3016    // Getters
3017    static get Default() {
3018      return Default$a;
3019    }
3020    static get DefaultType() {
3021      return DefaultType$a;
3022    }
3023    static get NAME() {
3024      return NAME$b;
3025    }
3026
3027    // Public
3028    toggle() {
3029      if (this._isShown()) {
3030        this.hide();
3031      } else {
3032        this.show();
3033      }
3034    }
3035    show() {
3036      if (this._isTransitioning || this._isShown()) {
3037        return;
3038      }
3039      let activeChildren = [];
3040
3041      // find active children
3042      if (this._config.parent) {
3043        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
3044          toggle: false
3045        }));
3046      }
3047      if (activeChildren.length && activeChildren[0]._isTransitioning) {
3048        return;
3049      }
3050      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
3051      if (startEvent.defaultPrevented) {
3052        return;
3053      }
3054      for (const activeInstance of activeChildren) {
3055        activeInstance.hide();
3056      }
3057      const dimension = this._getDimension();
3058      this._element.classList.remove(CLASS_NAME_COLLAPSE);
3059      this._element.classList.add(CLASS_NAME_COLLAPSING);
3060      this._element.style[dimension] = 0;
3061      this._addAriaAndCollapsedClass(this._triggerArray, true);
3062      this._isTransitioning = true;
3063      const complete = () => {
3064        this._isTransitioning = false;
3065        this._element.classList.remove(CLASS_NAME_COLLAPSING);
3066        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
3067        this._element.style[dimension] = '';
3068        EventHandler.trigger(this._element, EVENT_SHOWN$6);
3069      };
3070      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
3071      const scrollSize = `scroll${capitalizedDimension}`;
3072      this._queueCallback(complete, this._element, true);
3073      this._element.style[dimension] = `${this._element[scrollSize]}px`;
3074    }
3075    hide() {
3076      if (this._isTransitioning || !this._isShown()) {
3077        return;
3078      }
3079      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
3080      if (startEvent.defaultPrevented) {
3081        return;
3082      }
3083      const dimension = this._getDimension();
3084      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
3085      reflow(this._element);
3086      this._element.classList.add(CLASS_NAME_COLLAPSING);
3087      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
3088      for (const trigger of this._triggerArray) {
3089        const element = SelectorEngine.getElementFromSelector(trigger);
3090        if (element && !this._isShown(element)) {
3091          this._addAriaAndCollapsedClass([trigger], false);
3092        }
3093      }
3094      this._isTransitioning = true;
3095      const complete = () => {
3096        this._isTransitioning = false;
vendor: 58,702 bytes, lines 3097-4824
3097        this._element.classList.remove(CLASS_NAME_COLLAPSING);
3098        this._element.classList.add(CLASS_NAME_COLLAPSE);
3099        EventHandler.trigger(this._element, EVENT_HIDDEN$6);
3100      };
3101      this._element.style[dimension] = '';
3102      this._queueCallback(complete, this._element, true);
3103    }
3104
3105    // Private
3106    _isShown(element = this._element) {
3107      return element.classList.contains(CLASS_NAME_SHOW$7);
3108    }
3109    _configAfterMerge(config) {
3110      config.toggle = Boolean(config.toggle); // Coerce string values
3111      config.parent = getElement(config.parent);
3112      return config;
3113    }
3114    _getDimension() {
3115      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
3116    }
3117    _initializeChildren() {
3118      if (!this._config.parent) {
3119        return;
3120      }
3121      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
3122      for (const element of children) {
3123        const selected = SelectorEngine.getElementFromSelector(element);
3124        if (selected) {
3125          this._addAriaAndCollapsedClass([element], this._isShown(selected));
3126        }
3127      }
3128    }
3129    _getFirstLevelChildren(selector) {
3130      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);
3131      // remove children if greater depth
3132      return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
3133    }
3134    _addAriaAndCollapsedClass(triggerArray, isOpen) {
3135      if (!triggerArray.length) {
3136        return;
3137      }
3138      for (const element of triggerArray) {
3139        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
3140        element.setAttribute('aria-expanded', isOpen);
3141      }
3142    }
3143
3144    // Static
3145    static jQueryInterface(config) {
3146      const _config = {};
3147      if (typeof config === 'string' && /show|hide/.test(config)) {
3148        _config.toggle = false;
3149      }
3150      return this.each(function () {
3151        const data = Collapse.getOrCreateInstance(this, _config);
3152        if (typeof config === 'string') {
3153          if (typeof data[config] === 'undefined') {
3154            throw new TypeError(`No method named "${config}"`);
3155          }
3156          data[config]();
3157        }
3158      });
3159    }
3160  }
3161
3162  /**
3163   * Data API implementation
3164   */
3165
3166  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
3167    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
3168    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
3169      event.preventDefault();
3170    }
3171    for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {
3172      Collapse.getOrCreateInstance(element, {
3173        toggle: false
3174      }).toggle();
3175    }
3176  });
3177
3178  /**
3179   * jQuery
3180   */
3181
3182  defineJQueryPlugin(Collapse);
3183
3184  var top = 'top';
3185  var bottom = 'bottom';
3186  var right = 'right';
3187  var left = 'left';
3188  var auto = 'auto';
3189  var basePlacements = [top, bottom, right, left];
3190  var start = 'start';
3191  var end = 'end';
3192  var clippingParents = 'clippingParents';
3193  var viewport = 'viewport';
3194  var popper = 'popper';
3195  var reference = 'reference';
3196  var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
3197    return acc.concat([placement + "-" + start, placement + "-" + end]);
3198  }, []);
3199  var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
3200    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
3201  }, []); // modifiers that need to read the DOM
3202
3203  var beforeRead = 'beforeRead';
3204  var read = 'read';
3205  var afterRead = 'afterRead'; // pure-logic modifiers
3206
3207  var beforeMain = 'beforeMain';
3208  var main = 'main';
3209  var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
3210
3211  var beforeWrite = 'beforeWrite';
3212  var write = 'write';
3213  var afterWrite = 'afterWrite';
3214  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
3215
3216  function getNodeName(element) {
3217    return element ? (element.nodeName || '').toLowerCase() : null;
3218  }
3219
3220  function getWindow(node) {
3221    if (node == null) {
3222      return window;
3223    }
3224
3225    if (node.toString() !== '[object Window]') {
3226      var ownerDocument = node.ownerDocument;
3227      return ownerDocument ? ownerDocument.defaultView || window : window;
3228    }
3229
3230    return node;
3231  }
3232
3233  function isElement(node) {
3234    var OwnElement = getWindow(node).Element;
3235    return node instanceof OwnElement || node instanceof Element;
3236  }
3237
3238  function isHTMLElement(node) {
3239    var OwnElement = getWindow(node).HTMLElement;
3240    return node instanceof OwnElement || node instanceof HTMLElement;
3241  }
3242
3243  function isShadowRoot(node) {
3244    // IE 11 has no ShadowRoot
3245    if (typeof ShadowRoot === 'undefined') {
3246      return false;
3247    }
3248
3249    var OwnElement = getWindow(node).ShadowRoot;
3250    return node instanceof OwnElement || node instanceof ShadowRoot;
3251  }
3252
3253  // and applies them to the HTMLElements such as popper and arrow
3254
3255  function applyStyles(_ref) {
3256    var state = _ref.state;
3257    Object.keys(state.elements).forEach(function (name) {
3258      var style = state.styles[name] || {};
3259      var attributes = state.attributes[name] || {};
3260      var element = state.elements[name]; // arrow is optional + virtual elements
3261
3262      if (!isHTMLElement(element) || !getNodeName(element)) {
3263        return;
3264      } // Flow doesn't support to extend this property, but it's the most
3265      // effective way to apply styles to an HTMLElement
3266      // $FlowFixMe[cannot-write]
3267
3268
3269      Object.assign(element.style, style);
3270      Object.keys(attributes).forEach(function (name) {
3271        var value = attributes[name];
3272
3273        if (value === false) {
3274          element.removeAttribute(name);
3275        } else {
3276          element.setAttribute(name, value === true ? '' : value);
3277        }
3278      });
3279    });
3280  }
3281
3282  function effect$2(_ref2) {
3283    var state = _ref2.state;
3284    var initialStyles = {
3285      popper: {
3286        position: state.options.strategy,
3287        left: '0',
3288        top: '0',
3289        margin: '0'
3290      },
3291      arrow: {
3292        position: 'absolute'
3293      },
3294      reference: {}
3295    };
3296    Object.assign(state.elements.popper.style, initialStyles.popper);
3297    state.styles = initialStyles;
3298
3299    if (state.elements.arrow) {
3300      Object.assign(state.elements.arrow.style, initialStyles.arrow);
3301    }
3302
3303    return function () {
3304      Object.keys(state.elements).forEach(function (name) {
3305        var element = state.elements[name];
3306        var attributes = state.attributes[name] || {};
3307        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
3308
3309        var style = styleProperties.reduce(function (style, property) {
3310          style[property] = '';
3311          return style;
3312        }, {}); // arrow is optional + virtual elements
3313
3314        if (!isHTMLElement(element) || !getNodeName(element)) {
3315          return;
3316        }
3317
3318        Object.assign(element.style, style);
3319        Object.keys(attributes).forEach(function (attribute) {
3320          element.removeAttribute(attribute);
3321        });
3322      });
3323    };
3324  } // eslint-disable-next-line import/no-unused-modules
3325
3326
3327  const applyStyles$1 = {
3328    name: 'applyStyles',
3329    enabled: true,
3330    phase: 'write',
3331    fn: applyStyles,
3332    effect: effect$2,
3333    requires: ['computeStyles']
3334  };
3335
3336  function getBasePlacement(placement) {
3337    return placement.split('-')[0];
3338  }
3339
3340  var max = Math.max;
3341  var min = Math.min;
3342  var round = Math.round;
3343
3344  function getUAString() {
3345    var uaData = navigator.userAgentData;
3346
3347    if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
3348      return uaData.brands.map(function (item) {
3349        return item.brand + "/" + item.version;
3350      }).join(' ');
3351    }
3352
3353    return navigator.userAgent;
3354  }
3355
3356  function isLayoutViewport() {
3357    return !/^((?!chrome|android).)*safari/i.test(getUAString());
3358  }
3359
3360  function getBoundingClientRect(element, includeScale, isFixedStrategy) {
3361    if (includeScale === void 0) {
3362      includeScale = false;
3363    }
3364
3365    if (isFixedStrategy === void 0) {
3366      isFixedStrategy = false;
3367    }
3368
3369    var clientRect = element.getBoundingClientRect();
3370    var scaleX = 1;
3371    var scaleY = 1;
3372
3373    if (includeScale && isHTMLElement(element)) {
3374      scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
3375      scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
3376    }
3377
3378    var _ref = isElement(element) ? getWindow(element) : window,
3379        visualViewport = _ref.visualViewport;
3380
3381    var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
3382    var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
3383    var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
3384    var width = clientRect.width / scaleX;
3385    var height = clientRect.height / scaleY;
3386    return {
3387      width: width,
3388      height: height,
3389      top: y,
3390      right: x + width,
3391      bottom: y + height,
3392      left: x,
3393      x: x,
3394      y: y
3395    };
3396  }
3397
3398  // means it doesn't take into account transforms.
3399
3400  function getLayoutRect(element) {
3401    var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
3402    // Fixes https://github.com/popperjs/popper-core/issues/1223
3403
3404    var width = element.offsetWidth;
3405    var height = element.offsetHeight;
3406
3407    if (Math.abs(clientRect.width - width) <= 1) {
3408      width = clientRect.width;
3409    }
3410
3411    if (Math.abs(clientRect.height - height) <= 1) {
3412      height = clientRect.height;
3413    }
3414
3415    return {
3416      x: element.offsetLeft,
3417      y: element.offsetTop,
3418      width: width,
3419      height: height
3420    };
3421  }
3422
3423  function contains(parent, child) {
3424    var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
3425
3426    if (parent.contains(child)) {
3427      return true;
3428    } // then fallback to custom implementation with Shadow DOM support
3429    else if (rootNode && isShadowRoot(rootNode)) {
3430        var next = child;
3431
3432        do {
3433          if (next && parent.isSameNode(next)) {
3434            return true;
3435          } // $FlowFixMe[prop-missing]: need a better way to handle this...
3436
3437
3438          next = next.parentNode || next.host;
3439        } while (next);
3440      } // Give up, the result is false
3441
3442
3443    return false;
3444  }
3445
3446  function getComputedStyle$1(element) {
3447    return getWindow(element).getComputedStyle(element);
3448  }
3449
3450  function isTableElement(element) {
3451    return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
3452  }
3453
3454  function getDocumentElement(element) {
3455    // $FlowFixMe[incompatible-return]: assume body is always available
3456    return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
3457    element.document) || window.document).documentElement;
3458  }
3459
3460  function getParentNode(element) {
3461    if (getNodeName(element) === 'html') {
3462      return element;
3463    }
3464
3465    return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
3466      // $FlowFixMe[incompatible-return]
3467      // $FlowFixMe[prop-missing]
3468      element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
3469      element.parentNode || ( // DOM Element detected
3470      isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
3471      // $FlowFixMe[incompatible-call]: HTMLElement is a Node
3472      getDocumentElement(element) // fallback
3473
3474    );
3475  }
3476
3477  function getTrueOffsetParent(element) {
3478    if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
3479    getComputedStyle$1(element).position === 'fixed') {
3480      return null;
3481    }
3482
3483    return element.offsetParent;
3484  } // `.offsetParent` reports `null` for fixed elements, while absolute elements
3485  // return the containing block
3486
3487
3488  function getContainingBlock(element) {
3489    var isFirefox = /firefox/i.test(getUAString());
3490    var isIE = /Trident/i.test(getUAString());
3491
3492    if (isIE && isHTMLElement(element)) {
3493      // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
3494      var elementCss = getComputedStyle$1(element);
3495
3496      if (elementCss.position === 'fixed') {
3497        return null;
3498      }
3499    }
3500
3501    var currentNode = getParentNode(element);
3502
3503    if (isShadowRoot(currentNode)) {
3504      currentNode = currentNode.host;
3505    }
3506
3507    while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
3508      var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
3509      // create a containing block.
3510      // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
3511
3512      if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
3513        return currentNode;
3514      } else {
3515        currentNode = currentNode.parentNode;
3516      }
3517    }
3518
3519    return null;
3520  } // Gets the closest ancestor positioned element. Handles some edge cases,
3521  // such as table ancestors and cross browser bugs.
3522
3523
3524  function getOffsetParent(element) {
3525    var window = getWindow(element);
3526    var offsetParent = getTrueOffsetParent(element);
3527
3528    while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
3529      offsetParent = getTrueOffsetParent(offsetParent);
3530    }
3531
3532    if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {
3533      return window;
3534    }
3535
3536    return offsetParent || getContainingBlock(element) || window;
3537  }
3538
3539  function getMainAxisFromPlacement(placement) {
3540    return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
3541  }
3542
3543  function within(min$1, value, max$1) {
3544    return max(min$1, min(value, max$1));
3545  }
3546  function withinMaxClamp(min, value, max) {
3547    var v = within(min, value, max);
3548    return v > max ? max : v;
3549  }
3550
3551  function getFreshSideObject() {
3552    return {
3553      top: 0,
3554      right: 0,
3555      bottom: 0,
3556      left: 0
3557    };
3558  }
3559
3560  function mergePaddingObject(paddingObject) {
3561    return Object.assign({}, getFreshSideObject(), paddingObject);
3562  }
3563
3564  function expandToHashMap(value, keys) {
3565    return keys.reduce(function (hashMap, key) {
3566      hashMap[key] = value;
3567      return hashMap;
3568    }, {});
3569  }
3570
3571  var toPaddingObject = function toPaddingObject(padding, state) {
3572    padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
3573      placement: state.placement
3574    })) : padding;
3575    return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
3576  };
3577
3578  function arrow(_ref) {
3579    var _state$modifiersData$;
3580
3581    var state = _ref.state,
3582        name = _ref.name,
3583        options = _ref.options;
3584    var arrowElement = state.elements.arrow;
3585    var popperOffsets = state.modifiersData.popperOffsets;
3586    var basePlacement = getBasePlacement(state.placement);
3587    var axis = getMainAxisFromPlacement(basePlacement);
3588    var isVertical = [left, right].indexOf(basePlacement) >= 0;
3589    var len = isVertical ? 'height' : 'width';
3590
3591    if (!arrowElement || !popperOffsets) {
3592      return;
3593    }
3594
3595    var paddingObject = toPaddingObject(options.padding, state);
3596    var arrowRect = getLayoutRect(arrowElement);
3597    var minProp = axis === 'y' ? top : left;
3598    var maxProp = axis === 'y' ? bottom : right;
3599    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
3600    var startDiff = popperOffsets[axis] - state.rects.reference[axis];
3601    var arrowOffsetParent = getOffsetParent(arrowElement);
3602    var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
3603    var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
3604    // outside of the popper bounds
3605
3606    var min = paddingObject[minProp];
3607    var max = clientSize - arrowRect[len] - paddingObject[maxProp];
3608    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
3609    var offset = within(min, center, max); // Prevents breaking syntax highlighting...
3610
3611    var axisProp = axis;
3612    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
3613  }
3614
3615  function effect$1(_ref2) {
3616    var state = _ref2.state,
3617        options = _ref2.options;
3618    var _options$element = options.element,
3619        arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
3620
3621    if (arrowElement == null) {
3622      return;
3623    } // CSS selector
3624
3625
3626    if (typeof arrowElement === 'string') {
3627      arrowElement = state.elements.popper.querySelector(arrowElement);
3628
3629      if (!arrowElement) {
3630        return;
3631      }
3632    }
3633
3634    if (!contains(state.elements.popper, arrowElement)) {
3635      return;
3636    }
3637
3638    state.elements.arrow = arrowElement;
3639  } // eslint-disable-next-line import/no-unused-modules
3640
3641
3642  const arrow$1 = {
3643    name: 'arrow',
3644    enabled: true,
3645    phase: 'main',
3646    fn: arrow,
3647    effect: effect$1,
3648    requires: ['popperOffsets'],
3649    requiresIfExists: ['preventOverflow']
3650  };
3651
3652  function getVariation(placement) {
3653    return placement.split('-')[1];
3654  }
3655
3656  var unsetSides = {
3657    top: 'auto',
3658    right: 'auto',
3659    bottom: 'auto',
3660    left: 'auto'
3661  }; // Round the offsets to the nearest suitable subpixel based on the DPR.
3662  // Zooming can change the DPR, but it seems to report a value that will
3663  // cleanly divide the values into the appropriate subpixels.
3664
3665  function roundOffsetsByDPR(_ref, win) {
3666    var x = _ref.x,
3667        y = _ref.y;
3668    var dpr = win.devicePixelRatio || 1;
3669    return {
3670      x: round(x * dpr) / dpr || 0,
3671      y: round(y * dpr) / dpr || 0
3672    };
3673  }
3674
3675  function mapToStyles(_ref2) {
3676    var _Object$assign2;
3677
3678    var popper = _ref2.popper,
3679        popperRect = _ref2.popperRect,
3680        placement = _ref2.placement,
3681        variation = _ref2.variation,
3682        offsets = _ref2.offsets,
3683        position = _ref2.position,
3684        gpuAcceleration = _ref2.gpuAcceleration,
3685        adaptive = _ref2.adaptive,
3686        roundOffsets = _ref2.roundOffsets,
3687        isFixed = _ref2.isFixed;
3688    var _offsets$x = offsets.x,
3689        x = _offsets$x === void 0 ? 0 : _offsets$x,
3690        _offsets$y = offsets.y,
3691        y = _offsets$y === void 0 ? 0 : _offsets$y;
3692
3693    var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
3694      x: x,
3695      y: y
3696    }) : {
3697      x: x,
3698      y: y
3699    };
3700
3701    x = _ref3.x;
3702    y = _ref3.y;
3703    var hasX = offsets.hasOwnProperty('x');
3704    var hasY = offsets.hasOwnProperty('y');
3705    var sideX = left;
3706    var sideY = top;
3707    var win = window;
3708
3709    if (adaptive) {
3710      var offsetParent = getOffsetParent(popper);
3711      var heightProp = 'clientHeight';
3712      var widthProp = 'clientWidth';
3713
3714      if (offsetParent === getWindow(popper)) {
3715        offsetParent = getDocumentElement(popper);
3716
3717        if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {
3718          heightProp = 'scrollHeight';
3719          widthProp = 'scrollWidth';
3720        }
3721      } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
3722
3723
3724      offsetParent = offsetParent;
3725
3726      if (placement === top || (placement === left || placement === right) && variation === end) {
3727        sideY = bottom;
3728        var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
3729        offsetParent[heightProp];
3730        y -= offsetY - popperRect.height;
3731        y *= gpuAcceleration ? 1 : -1;
3732      }
3733
3734      if (placement === left || (placement === top || placement === bottom) && variation === end) {
3735        sideX = right;
3736        var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
3737        offsetParent[widthProp];
3738        x -= offsetX - popperRect.width;
3739        x *= gpuAcceleration ? 1 : -1;
3740      }
3741    }
3742
3743    var commonStyles = Object.assign({
3744      position: position
3745    }, adaptive && unsetSides);
3746
3747    var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
3748      x: x,
3749      y: y
3750    }, getWindow(popper)) : {
3751      x: x,
3752      y: y
3753    };
3754
3755    x = _ref4.x;
3756    y = _ref4.y;
3757
3758    if (gpuAcceleration) {
3759      var _Object$assign;
3760
3761      return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
3762    }
3763
3764    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
3765  }
3766
3767  function computeStyles(_ref5) {
3768    var state = _ref5.state,
3769        options = _ref5.options;
3770    var _options$gpuAccelerat = options.gpuAcceleration,
3771        gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
3772        _options$adaptive = options.adaptive,
3773        adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
3774        _options$roundOffsets = options.roundOffsets,
3775        roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
3776    var commonStyles = {
3777      placement: getBasePlacement(state.placement),
3778      variation: getVariation(state.placement),
3779      popper: state.elements.popper,
3780      popperRect: state.rects.popper,
3781      gpuAcceleration: gpuAcceleration,
3782      isFixed: state.options.strategy === 'fixed'
3783    };
3784
3785    if (state.modifiersData.popperOffsets != null) {
3786      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
3787        offsets: state.modifiersData.popperOffsets,
3788        position: state.options.strategy,
3789        adaptive: adaptive,
3790        roundOffsets: roundOffsets
3791      })));
3792    }
3793
3794    if (state.modifiersData.arrow != null) {
3795      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
3796        offsets: state.modifiersData.arrow,
3797        position: 'absolute',
3798        adaptive: false,
3799        roundOffsets: roundOffsets
3800      })));
3801    }
3802
3803    state.attributes.popper = Object.assign({}, state.attributes.popper, {
3804      'data-popper-placement': state.placement
3805    });
3806  } // eslint-disable-next-line import/no-unused-modules
3807
3808
3809  const computeStyles$1 = {
3810    name: 'computeStyles',
3811    enabled: true,
3812    phase: 'beforeWrite',
3813    fn: computeStyles,
3814    data: {}
3815  };
3816
3817  var passive = {
3818    passive: true
3819  };
3820
3821  function effect(_ref) {
3822    var state = _ref.state,
3823        instance = _ref.instance,
3824        options = _ref.options;
3825    var _options$scroll = options.scroll,
3826        scroll = _options$scroll === void 0 ? true : _options$scroll,
3827        _options$resize = options.resize,
3828        resize = _options$resize === void 0 ? true : _options$resize;
3829    var window = getWindow(state.elements.popper);
3830    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
3831
3832    if (scroll) {
3833      scrollParents.forEach(function (scrollParent) {
3834        scrollParent.addEventListener('scroll', instance.update, passive);
3835      });
3836    }
3837
3838    if (resize) {
3839      window.addEventListener('resize', instance.update, passive);
3840    }
3841
3842    return function () {
3843      if (scroll) {
3844        scrollParents.forEach(function (scrollParent) {
3845          scrollParent.removeEventListener('scroll', instance.update, passive);
3846        });
3847      }
3848
3849      if (resize) {
3850        window.removeEventListener('resize', instance.update, passive);
3851      }
3852    };
3853  } // eslint-disable-next-line import/no-unused-modules
3854
3855
3856  const eventListeners = {
3857    name: 'eventListeners',
3858    enabled: true,
3859    phase: 'write',
3860    fn: function fn() {},
3861    effect: effect,
3862    data: {}
3863  };
3864
3865  var hash$1 = {
3866    left: 'right',
3867    right: 'left',
3868    bottom: 'top',
3869    top: 'bottom'
3870  };
3871  function getOppositePlacement(placement) {
3872    return placement.replace(/left|right|bottom|top/g, function (matched) {
3873      return hash$1[matched];
3874    });
3875  }
3876
3877  var hash = {
3878    start: 'end',
3879    end: 'start'
3880  };
3881  function getOppositeVariationPlacement(placement) {
3882    return placement.replace(/start|end/g, function (matched) {
3883      return hash[matched];
3884    });
3885  }
3886
3887  function getWindowScroll(node) {
3888    var win = getWindow(node);
3889    var scrollLeft = win.pageXOffset;
3890    var scrollTop = win.pageYOffset;
3891    return {
3892      scrollLeft: scrollLeft,
3893      scrollTop: scrollTop
3894    };
3895  }
3896
3897  function getWindowScrollBarX(element) {
3898    // If <html> has a CSS width greater than the viewport, then this will be
3899    // incorrect for RTL.
3900    // Popper 1 is broken in this case and never had a bug report so let's assume
3901    // it's not an issue. I don't think anyone ever specifies width on <html>
3902    // anyway.
3903    // Browsers where the left scrollbar doesn't cause an issue report `0` for
3904    // this (e.g. Edge 2019, IE11, Safari)
3905    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
3906  }
3907
3908  function getViewportRect(element, strategy) {
3909    var win = getWindow(element);
3910    var html = getDocumentElement(element);
3911    var visualViewport = win.visualViewport;
3912    var width = html.clientWidth;
3913    var height = html.clientHeight;
3914    var x = 0;
3915    var y = 0;
3916
3917    if (visualViewport) {
3918      width = visualViewport.width;
3919      height = visualViewport.height;
3920      var layoutViewport = isLayoutViewport();
3921
3922      if (layoutViewport || !layoutViewport && strategy === 'fixed') {
3923        x = visualViewport.offsetLeft;
3924        y = visualViewport.offsetTop;
3925      }
3926    }
3927
3928    return {
3929      width: width,
3930      height: height,
3931      x: x + getWindowScrollBarX(element),
3932      y: y
3933    };
3934  }
3935
3936  // of the `<html>` and `<body>` rect bounds if horizontally scrollable
3937
3938  function getDocumentRect(element) {
3939    var _element$ownerDocumen;
3940
3941    var html = getDocumentElement(element);
3942    var winScroll = getWindowScroll(element);
3943    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
3944    var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
3945    var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
3946    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
3947    var y = -winScroll.scrollTop;
3948
3949    if (getComputedStyle$1(body || html).direction === 'rtl') {
3950      x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
3951    }
3952
3953    return {
3954      width: width,
3955      height: height,
3956      x: x,
3957      y: y
3958    };
3959  }
3960
3961  function isScrollParent(element) {
3962    // Firefox wants us to check `-x` and `-y` variations as well
3963    var _getComputedStyle = getComputedStyle$1(element),
3964        overflow = _getComputedStyle.overflow,
3965        overflowX = _getComputedStyle.overflowX,
3966        overflowY = _getComputedStyle.overflowY;
3967
3968    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
3969  }
3970
3971  function getScrollParent(node) {
3972    if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
3973      // $FlowFixMe[incompatible-return]: assume body is always available
3974      return node.ownerDocument.body;
3975    }
3976
3977    if (isHTMLElement(node) && isScrollParent(node)) {
3978      return node;
3979    }
3980
3981    return getScrollParent(getParentNode(node));
3982  }
3983
3984  /*
3985  given a DOM element, return the list of all scroll parents, up the list of ancesors
3986  until we get to the top window object. This list is what we attach scroll listeners
3987  to, because if any of these parent elements scroll, we'll need to re-calculate the
3988  reference element's position.
3989  */
3990
3991  function listScrollParents(element, list) {
3992    var _element$ownerDocumen;
3993
3994    if (list === void 0) {
3995      list = [];
3996    }
3997
3998    var scrollParent = getScrollParent(element);
3999    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
4000    var win = getWindow(scrollParent);
4001    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
4002    var updatedList = list.concat(target);
4003    return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
4004    updatedList.concat(listScrollParents(getParentNode(target)));
4005  }
4006
4007  function rectToClientRect(rect) {
4008    return Object.assign({}, rect, {
4009      left: rect.x,
4010      top: rect.y,
4011      right: rect.x + rect.width,
4012      bottom: rect.y + rect.height
4013    });
4014  }
4015
4016  function getInnerBoundingClientRect(element, strategy) {
4017    var rect = getBoundingClientRect(element, false, strategy === 'fixed');
4018    rect.top = rect.top + element.clientTop;
4019    rect.left = rect.left + element.clientLeft;
4020    rect.bottom = rect.top + element.clientHeight;
4021    rect.right = rect.left + element.clientWidth;
4022    rect.width = element.clientWidth;
4023    rect.height = element.clientHeight;
4024    rect.x = rect.left;
4025    rect.y = rect.top;
4026    return rect;
4027  }
4028
4029  function getClientRectFromMixedType(element, clippingParent, strategy) {
4030    return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
4031  } // A "clipping parent" is an overflowable container with the characteristic of
4032  // clipping (or hiding) overflowing elements with a position different from
4033  // `initial`
4034
4035
4036  function getClippingParents(element) {
4037    var clippingParents = listScrollParents(getParentNode(element));
4038    var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
4039    var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
4040
4041    if (!isElement(clipperElement)) {
4042      return [];
4043    } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
4044
4045
4046    return clippingParents.filter(function (clippingParent) {
4047      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
4048    });
4049  } // Gets the maximum area that the element is visible in due to any number of
4050  // clipping parents
4051
4052
4053  function getClippingRect(element, boundary, rootBoundary, strategy) {
4054    var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
4055    var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
4056    var firstClippingParent = clippingParents[0];
4057    var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
4058      var rect = getClientRectFromMixedType(element, clippingParent, strategy);
4059      accRect.top = max(rect.top, accRect.top);
4060      accRect.right = min(rect.right, accRect.right);
4061      accRect.bottom = min(rect.bottom, accRect.bottom);
4062      accRect.left = max(rect.left, accRect.left);
4063      return accRect;
4064    }, getClientRectFromMixedType(element, firstClippingParent, strategy));
4065    clippingRect.width = clippingRect.right - clippingRect.left;
4066    clippingRect.height = clippingRect.bottom - clippingRect.top;
4067    clippingRect.x = clippingRect.left;
4068    clippingRect.y = clippingRect.top;
4069    return clippingRect;
4070  }
4071
4072  function computeOffsets(_ref) {
4073    var reference = _ref.reference,
4074        element = _ref.element,
4075        placement = _ref.placement;
4076    var basePlacement = placement ? getBasePlacement(placement) : null;
4077    var variation = placement ? getVariation(placement) : null;
4078    var commonX = reference.x + reference.width / 2 - element.width / 2;
4079    var commonY = reference.y + reference.height / 2 - element.height / 2;
4080    var offsets;
4081
4082    switch (basePlacement) {
4083      case top:
4084        offsets = {
4085          x: commonX,
4086          y: reference.y - element.height
4087        };
4088        break;
4089
4090      case bottom:
4091        offsets = {
4092          x: commonX,
4093          y: reference.y + reference.height
4094        };
4095        break;
4096
4097      case right:
4098        offsets = {
4099          x: reference.x + reference.width,
4100          y: commonY
4101        };
4102        break;
4103
4104      case left:
4105        offsets = {
4106          x: reference.x - element.width,
4107          y: commonY
4108        };
4109        break;
4110
4111      default:
4112        offsets = {
4113          x: reference.x,
4114          y: reference.y
4115        };
4116    }
4117
4118    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
4119
4120    if (mainAxis != null) {
4121      var len = mainAxis === 'y' ? 'height' : 'width';
4122
4123      switch (variation) {
4124        case start:
4125          offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
4126          break;
4127
4128        case end:
4129          offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
4130          break;
4131      }
4132    }
4133
4134    return offsets;
4135  }
4136
4137  function detectOverflow(state, options) {
4138    if (options === void 0) {
4139      options = {};
4140    }
4141
4142    var _options = options,
4143        _options$placement = _options.placement,
4144        placement = _options$placement === void 0 ? state.placement : _options$placement,
4145        _options$strategy = _options.strategy,
4146        strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
4147        _options$boundary = _options.boundary,
4148        boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
4149        _options$rootBoundary = _options.rootBoundary,
4150        rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
4151        _options$elementConte = _options.elementContext,
4152        elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
4153        _options$altBoundary = _options.altBoundary,
4154        altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
4155        _options$padding = _options.padding,
4156        padding = _options$padding === void 0 ? 0 : _options$padding;
4157    var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
4158    var altContext = elementContext === popper ? reference : popper;
4159    var popperRect = state.rects.popper;
4160    var element = state.elements[altBoundary ? altContext : elementContext];
4161    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
4162    var referenceClientRect = getBoundingClientRect(state.elements.reference);
4163    var popperOffsets = computeOffsets({
4164      reference: referenceClientRect,
4165      element: popperRect,
4166      placement: placement
4167    });
4168    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
4169    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
4170    // 0 or negative = within the clipping rect
4171
4172    var overflowOffsets = {
4173      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
4174      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
4175      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
4176      right: elementClientRect.right - clippingClientRect.right + paddingObject.right
4177    };
4178    var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
4179
4180    if (elementContext === popper && offsetData) {
4181      var offset = offsetData[placement];
4182      Object.keys(overflowOffsets).forEach(function (key) {
4183        var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
4184        var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
4185        overflowOffsets[key] += offset[axis] * multiply;
4186      });
4187    }
4188
4189    return overflowOffsets;
4190  }
4191
4192  function computeAutoPlacement(state, options) {
4193    if (options === void 0) {
4194      options = {};
4195    }
4196
4197    var _options = options,
4198        placement = _options.placement,
4199        boundary = _options.boundary,
4200        rootBoundary = _options.rootBoundary,
4201        padding = _options.padding,
4202        flipVariations = _options.flipVariations,
4203        _options$allowedAutoP = _options.allowedAutoPlacements,
4204        allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
4205    var variation = getVariation(placement);
4206    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
4207      return getVariation(placement) === variation;
4208    }) : basePlacements;
4209    var allowedPlacements = placements$1.filter(function (placement) {
4210      return allowedAutoPlacements.indexOf(placement) >= 0;
4211    });
4212
4213    if (allowedPlacements.length === 0) {
4214      allowedPlacements = placements$1;
4215    } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
4216
4217
4218    var overflows = allowedPlacements.reduce(function (acc, placement) {
4219      acc[placement] = detectOverflow(state, {
4220        placement: placement,
4221        boundary: boundary,
4222        rootBoundary: rootBoundary,
4223        padding: padding
4224      })[getBasePlacement(placement)];
4225      return acc;
4226    }, {});
4227    return Object.keys(overflows).sort(function (a, b) {
4228      return overflows[a] - overflows[b];
4229    });
4230  }
4231
4232  function getExpandedFallbackPlacements(placement) {
4233    if (getBasePlacement(placement) === auto) {
4234      return [];
4235    }
4236
4237    var oppositePlacement = getOppositePlacement(placement);
4238    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
4239  }
4240
4241  function flip(_ref) {
4242    var state = _ref.state,
4243        options = _ref.options,
4244        name = _ref.name;
4245
4246    if (state.modifiersData[name]._skip) {
4247      return;
4248    }
4249
4250    var _options$mainAxis = options.mainAxis,
4251        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
4252        _options$altAxis = options.altAxis,
4253        checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
4254        specifiedFallbackPlacements = options.fallbackPlacements,
4255        padding = options.padding,
4256        boundary = options.boundary,
4257        rootBoundary = options.rootBoundary,
4258        altBoundary = options.altBoundary,
4259        _options$flipVariatio = options.flipVariations,
4260        flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
4261        allowedAutoPlacements = options.allowedAutoPlacements;
4262    var preferredPlacement = state.options.placement;
4263    var basePlacement = getBasePlacement(preferredPlacement);
4264    var isBasePlacement = basePlacement === preferredPlacement;
4265    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
4266    var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
4267      return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
4268        placement: placement,
4269        boundary: boundary,
4270        rootBoundary: rootBoundary,
4271        padding: padding,
4272        flipVariations: flipVariations,
4273        allowedAutoPlacements: allowedAutoPlacements
4274      }) : placement);
4275    }, []);
4276    var referenceRect = state.rects.reference;
4277    var popperRect = state.rects.popper;
4278    var checksMap = new Map();
4279    var makeFallbackChecks = true;
4280    var firstFittingPlacement = placements[0];
4281
4282    for (var i = 0; i < placements.length; i++) {
4283      var placement = placements[i];
4284
4285      var _basePlacement = getBasePlacement(placement);
4286
4287      var isStartVariation = getVariation(placement) === start;
4288      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
4289      var len = isVertical ? 'width' : 'height';
4290      var overflow = detectOverflow(state, {
4291        placement: placement,
4292        boundary: boundary,
4293        rootBoundary: rootBoundary,
4294        altBoundary: altBoundary,
4295        padding: padding
4296      });
4297      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
4298
4299      if (referenceRect[len] > popperRect[len]) {
4300        mainVariationSide = getOppositePlacement(mainVariationSide);
4301      }
4302
4303      var altVariationSide = getOppositePlacement(mainVariationSide);
4304      var checks = [];
4305
4306      if (checkMainAxis) {
4307        checks.push(overflow[_basePlacement] <= 0);
4308      }
4309
4310      if (checkAltAxis) {
4311        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
4312      }
4313
4314      if (checks.every(function (check) {
4315        return check;
4316      })) {
4317        firstFittingPlacement = placement;
4318        makeFallbackChecks = false;
4319        break;
4320      }
4321
4322      checksMap.set(placement, checks);
4323    }
4324
4325    if (makeFallbackChecks) {
4326      // `2` may be desired in some cases – research later
4327      var numberOfChecks = flipVariations ? 3 : 1;
4328
4329      var _loop = function _loop(_i) {
4330        var fittingPlacement = placements.find(function (placement) {
4331          var checks = checksMap.get(placement);
4332
4333          if (checks) {
4334            return checks.slice(0, _i).every(function (check) {
4335              return check;
4336            });
4337          }
4338        });
4339
4340        if (fittingPlacement) {
4341          firstFittingPlacement = fittingPlacement;
4342          return "break";
4343        }
4344      };
4345
4346      for (var _i = numberOfChecks; _i > 0; _i--) {
4347        var _ret = _loop(_i);
4348
4349        if (_ret === "break") break;
4350      }
4351    }
4352
4353    if (state.placement !== firstFittingPlacement) {
4354      state.modifiersData[name]._skip = true;
4355      state.placement = firstFittingPlacement;
4356      state.reset = true;
4357    }
4358  } // eslint-disable-next-line import/no-unused-modules
4359
4360
4361  const flip$1 = {
4362    name: 'flip',
4363    enabled: true,
4364    phase: 'main',
4365    fn: flip,
4366    requiresIfExists: ['offset'],
4367    data: {
4368      _skip: false
4369    }
4370  };
4371
4372  function getSideOffsets(overflow, rect, preventedOffsets) {
4373    if (preventedOffsets === void 0) {
4374      preventedOffsets = {
4375        x: 0,
4376        y: 0
4377      };
4378    }
4379
4380    return {
4381      top: overflow.top - rect.height - preventedOffsets.y,
4382      right: overflow.right - rect.width + preventedOffsets.x,
4383      bottom: overflow.bottom - rect.height + preventedOffsets.y,
4384      left: overflow.left - rect.width - preventedOffsets.x
4385    };
4386  }
4387
4388  function isAnySideFullyClipped(overflow) {
4389    return [top, right, bottom, left].some(function (side) {
4390      return overflow[side] >= 0;
4391    });
4392  }
4393
4394  function hide(_ref) {
4395    var state = _ref.state,
4396        name = _ref.name;
4397    var referenceRect = state.rects.reference;
4398    var popperRect = state.rects.popper;
4399    var preventedOffsets = state.modifiersData.preventOverflow;
4400    var referenceOverflow = detectOverflow(state, {
4401      elementContext: 'reference'
4402    });
4403    var popperAltOverflow = detectOverflow(state, {
4404      altBoundary: true
4405    });
4406    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
4407    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
4408    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
4409    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
4410    state.modifiersData[name] = {
4411      referenceClippingOffsets: referenceClippingOffsets,
4412      popperEscapeOffsets: popperEscapeOffsets,
4413      isReferenceHidden: isReferenceHidden,
4414      hasPopperEscaped: hasPopperEscaped
4415    };
4416    state.attributes.popper = Object.assign({}, state.attributes.popper, {
4417      'data-popper-reference-hidden': isReferenceHidden,
4418      'data-popper-escaped': hasPopperEscaped
4419    });
4420  } // eslint-disable-next-line import/no-unused-modules
4421
4422
4423  const hide$1 = {
4424    name: 'hide',
4425    enabled: true,
4426    phase: 'main',
4427    requiresIfExists: ['preventOverflow'],
4428    fn: hide
4429  };
4430
4431  function distanceAndSkiddingToXY(placement, rects, offset) {
4432    var basePlacement = getBasePlacement(placement);
4433    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
4434
4435    var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
4436      placement: placement
4437    })) : offset,
4438        skidding = _ref[0],
4439        distance = _ref[1];
4440
4441    skidding = skidding || 0;
4442    distance = (distance || 0) * invertDistance;
4443    return [left, right].indexOf(basePlacement) >= 0 ? {
4444      x: distance,
4445      y: skidding
4446    } : {
4447      x: skidding,
4448      y: distance
4449    };
4450  }
4451
4452  function offset(_ref2) {
4453    var state = _ref2.state,
4454        options = _ref2.options,
4455        name = _ref2.name;
4456    var _options$offset = options.offset,
4457        offset = _options$offset === void 0 ? [0, 0] : _options$offset;
4458    var data = placements.reduce(function (acc, placement) {
4459      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
4460      return acc;
4461    }, {});
4462    var _data$state$placement = data[state.placement],
4463        x = _data$state$placement.x,
4464        y = _data$state$placement.y;
4465
4466    if (state.modifiersData.popperOffsets != null) {
4467      state.modifiersData.popperOffsets.x += x;
4468      state.modifiersData.popperOffsets.y += y;
4469    }
4470
4471    state.modifiersData[name] = data;
4472  } // eslint-disable-next-line import/no-unused-modules
4473
4474
4475  const offset$1 = {
4476    name: 'offset',
4477    enabled: true,
4478    phase: 'main',
4479    requires: ['popperOffsets'],
4480    fn: offset
4481  };
4482
4483  function popperOffsets(_ref) {
4484    var state = _ref.state,
4485        name = _ref.name;
4486    // Offsets are the actual position the popper needs to have to be
4487    // properly positioned near its reference element
4488    // This is the most basic placement, and will be adjusted by
4489    // the modifiers in the next step
4490    state.modifiersData[name] = computeOffsets({
4491      reference: state.rects.reference,
4492      element: state.rects.popper,
4493      placement: state.placement
4494    });
4495  } // eslint-disable-next-line import/no-unused-modules
4496
4497
4498  const popperOffsets$1 = {
4499    name: 'popperOffsets',
4500    enabled: true,
4501    phase: 'read',
4502    fn: popperOffsets,
4503    data: {}
4504  };
4505
4506  function getAltAxis(axis) {
4507    return axis === 'x' ? 'y' : 'x';
4508  }
4509
4510  function preventOverflow(_ref) {
4511    var state = _ref.state,
4512        options = _ref.options,
4513        name = _ref.name;
4514    var _options$mainAxis = options.mainAxis,
4515        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
4516        _options$altAxis = options.altAxis,
4517        checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
4518        boundary = options.boundary,
4519        rootBoundary = options.rootBoundary,
4520        altBoundary = options.altBoundary,
4521        padding = options.padding,
4522        _options$tether = options.tether,
4523        tether = _options$tether === void 0 ? true : _options$tether,
4524        _options$tetherOffset = options.tetherOffset,
4525        tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
4526    var overflow = detectOverflow(state, {
4527      boundary: boundary,
4528      rootBoundary: rootBoundary,
4529      padding: padding,
4530      altBoundary: altBoundary
4531    });
4532    var basePlacement = getBasePlacement(state.placement);
4533    var variation = getVariation(state.placement);
4534    var isBasePlacement = !variation;
4535    var mainAxis = getMainAxisFromPlacement(basePlacement);
4536    var altAxis = getAltAxis(mainAxis);
4537    var popperOffsets = state.modifiersData.popperOffsets;
4538    var referenceRect = state.rects.reference;
4539    var popperRect = state.rects.popper;
4540    var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
4541      placement: state.placement
4542    })) : tetherOffset;
4543    var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
4544      mainAxis: tetherOffsetValue,
4545      altAxis: tetherOffsetValue
4546    } : Object.assign({
4547      mainAxis: 0,
4548      altAxis: 0
4549    }, tetherOffsetValue);
4550    var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
4551    var data = {
4552      x: 0,
4553      y: 0
4554    };
4555
4556    if (!popperOffsets) {
4557      return;
4558    }
4559
4560    if (checkMainAxis) {
4561      var _offsetModifierState$;
4562
4563      var mainSide = mainAxis === 'y' ? top : left;
4564      var altSide = mainAxis === 'y' ? bottom : right;
4565      var len = mainAxis === 'y' ? 'height' : 'width';
4566      var offset = popperOffsets[mainAxis];
4567      var min$1 = offset + overflow[mainSide];
4568      var max$1 = offset - overflow[altSide];
4569      var additive = tether ? -popperRect[len] / 2 : 0;
4570      var minLen = variation === start ? referenceRect[len] : popperRect[len];
4571      var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
4572      // outside the reference bounds
4573
4574      var arrowElement = state.elements.arrow;
4575      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
4576        width: 0,
4577        height: 0
4578      };
4579      var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
4580      var arrowPaddingMin = arrowPaddingObject[mainSide];
4581      var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
4582      // to include its full size in the calculation. If the reference is small
4583      // and near the edge of a boundary, the popper can overflow even if the
4584      // reference is not overflowing as well (e.g. virtual elements with no
4585      // width or height)
4586
4587      var arrowLen = within(0, referenceRect[len], arrowRect[len]);
4588      var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
4589      var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
4590      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
4591      var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
4592      var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
4593      var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
4594      var tetherMax = offset + maxOffset - offsetModifierValue;
4595      var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
4596      popperOffsets[mainAxis] = preventedOffset;
4597      data[mainAxis] = preventedOffset - offset;
4598    }
4599
4600    if (checkAltAxis) {
4601      var _offsetModifierState$2;
4602
4603      var _mainSide = mainAxis === 'x' ? top : left;
4604
4605      var _altSide = mainAxis === 'x' ? bottom : right;
4606
4607      var _offset = popperOffsets[altAxis];
4608
4609      var _len = altAxis === 'y' ? 'height' : 'width';
4610
4611      var _min = _offset + overflow[_mainSide];
4612
4613      var _max = _offset - overflow[_altSide];
4614
4615      var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
4616
4617      var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
4618
4619      var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
4620
4621      var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
4622
4623      var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
4624
4625      popperOffsets[altAxis] = _preventedOffset;
4626      data[altAxis] = _preventedOffset - _offset;
4627    }
4628
4629    state.modifiersData[name] = data;
4630  } // eslint-disable-next-line import/no-unused-modules
4631
4632
4633  const preventOverflow$1 = {
4634    name: 'preventOverflow',
4635    enabled: true,
4636    phase: 'main',
4637    fn: preventOverflow,
4638    requiresIfExists: ['offset']
4639  };
4640
4641  function getHTMLElementScroll(element) {
4642    return {
4643      scrollLeft: element.scrollLeft,
4644      scrollTop: element.scrollTop
4645    };
4646  }
4647
4648  function getNodeScroll(node) {
4649    if (node === getWindow(node) || !isHTMLElement(node)) {
4650      return getWindowScroll(node);
4651    } else {
4652      return getHTMLElementScroll(node);
4653    }
4654  }
4655
4656  function isElementScaled(element) {
4657    var rect = element.getBoundingClientRect();
4658    var scaleX = round(rect.width) / element.offsetWidth || 1;
4659    var scaleY = round(rect.height) / element.offsetHeight || 1;
4660    return scaleX !== 1 || scaleY !== 1;
4661  } // Returns the composite rect of an element relative to its offsetParent.
4662  // Composite means it takes into account transforms as well as layout.
4663
4664
4665  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
4666    if (isFixed === void 0) {
4667      isFixed = false;
4668    }
4669
4670    var isOffsetParentAnElement = isHTMLElement(offsetParent);
4671    var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
4672    var documentElement = getDocumentElement(offsetParent);
4673    var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
4674    var scroll = {
4675      scrollLeft: 0,
4676      scrollTop: 0
4677    };
4678    var offsets = {
4679      x: 0,
4680      y: 0
4681    };
4682
4683    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
4684      if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
4685      isScrollParent(documentElement)) {
4686        scroll = getNodeScroll(offsetParent);
4687      }
4688
4689      if (isHTMLElement(offsetParent)) {
4690        offsets = getBoundingClientRect(offsetParent, true);
4691        offsets.x += offsetParent.clientLeft;
4692        offsets.y += offsetParent.clientTop;
4693      } else if (documentElement) {
4694        offsets.x = getWindowScrollBarX(documentElement);
4695      }
4696    }
4697
4698    return {
4699      x: rect.left + scroll.scrollLeft - offsets.x,
4700      y: rect.top + scroll.scrollTop - offsets.y,
4701      width: rect.width,
4702      height: rect.height
4703    };
4704  }
4705
4706  function order(modifiers) {
4707    var map = new Map();
4708    var visited = new Set();
4709    var result = [];
4710    modifiers.forEach(function (modifier) {
4711      map.set(modifier.name, modifier);
4712    }); // On visiting object, check for its dependencies and visit them recursively
4713
4714    function sort(modifier) {
4715      visited.add(modifier.name);
4716      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
4717      requires.forEach(function (dep) {
4718        if (!visited.has(dep)) {
4719          var depModifier = map.get(dep);
4720
4721          if (depModifier) {
4722            sort(depModifier);
4723          }
4724        }
4725      });
4726      result.push(modifier);
4727    }
4728
4729    modifiers.forEach(function (modifier) {
4730      if (!visited.has(modifier.name)) {
4731        // check for visited object
4732        sort(modifier);
4733      }
4734    });
4735    return result;
4736  }
4737
4738  function orderModifiers(modifiers) {
4739    // order based on dependencies
4740    var orderedModifiers = order(modifiers); // order based on phase
4741
4742    return modifierPhases.reduce(function (acc, phase) {
4743      return acc.concat(orderedModifiers.filter(function (modifier) {
4744        return modifier.phase === phase;
4745      }));
4746    }, []);
4747  }
4748
4749  function debounce(fn) {
4750    var pending;
4751    return function () {
4752      if (!pending) {
4753        pending = new Promise(function (resolve) {
4754          Promise.resolve().then(function () {
4755            pending = undefined;
4756            resolve(fn());
4757          });
4758        });
4759      }
4760
4761      return pending;
4762    };
4763  }
4764
4765  function mergeByName(modifiers) {
4766    var merged = modifiers.reduce(function (merged, current) {
4767      var existing = merged[current.name];
4768      merged[current.name] = existing ? Object.assign({}, existing, current, {
4769        options: Object.assign({}, existing.options, current.options),
4770        data: Object.assign({}, existing.data, current.data)
4771      }) : current;
4772      return merged;
4773    }, {}); // IE11 does not support Object.values
4774
4775    return Object.keys(merged).map(function (key) {
4776      return merged[key];
4777    });
4778  }
4779
4780  var DEFAULT_OPTIONS = {
4781    placement: 'bottom',
4782    modifiers: [],
4783    strategy: 'absolute'
4784  };
4785
4786  function areValidElements() {
4787    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
4788      args[_key] = arguments[_key];
4789    }
4790
4791    return !args.some(function (element) {
4792      return !(element && typeof element.getBoundingClientRect === 'function');
4793    });
4794  }
4795
4796  function popperGenerator(generatorOptions) {
4797    if (generatorOptions === void 0) {
4798      generatorOptions = {};
4799    }
4800
4801    var _generatorOptions = generatorOptions,
4802        _generatorOptions$def = _generatorOptions.defaultModifiers,
4803        defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
4804        _generatorOptions$def2 = _generatorOptions.defaultOptions,
4805        defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
4806    return function createPopper(reference, popper, options) {
4807      if (options === void 0) {
4808        options = defaultOptions;
4809      }
4810
4811      var state = {
4812        placement: 'bottom',
4813        orderedModifiers: [],
4814        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
4815        modifiersData: {},
4816        elements: {
4817          reference: reference,
4818          popper: popper
4819        },
4820        attributes: {},
4821        styles: {}
4822      };
4823      var effectCleanupFns = [];
4824      var isDestroyed = false;
vendor: 4,800 bytes, lines 4825-4935
4825      var instance = {
4826        state: state,
4827        setOptions: function setOptions(setOptionsAction) {
4828          var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
4829          cleanupModifierEffects();
4830          state.options = Object.assign({}, defaultOptions, state.options, options);
4831          state.scrollParents = {
4832            reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
4833            popper: listScrollParents(popper)
4834          }; // Orders the modifiers based on their dependencies and `phase`
4835          // properties
4836
4837          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
4838
4839          state.orderedModifiers = orderedModifiers.filter(function (m) {
4840            return m.enabled;
4841          });
4842          runModifierEffects();
4843          return instance.update();
4844        },
4845        // Sync update – it will always be executed, even if not necessary. This
4846        // is useful for low frequency updates where sync behavior simplifies the
4847        // logic.
4848        // For high frequency updates (e.g. `resize` and `scroll` events), always
4849        // prefer the async Popper#update method
4850        forceUpdate: function forceUpdate() {
4851          if (isDestroyed) {
4852            return;
4853          }
4854
4855          var _state$elements = state.elements,
4856              reference = _state$elements.reference,
4857              popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
4858          // anymore
4859
4860          if (!areValidElements(reference, popper)) {
4861            return;
4862          } // Store the reference and popper rects to be read by modifiers
4863
4864
4865          state.rects = {
4866            reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
4867            popper: getLayoutRect(popper)
4868          }; // Modifiers have the ability to reset the current update cycle. The
4869          // most common use case for this is the `flip` modifier changing the
4870          // placement, which then needs to re-run all the modifiers, because the
4871          // logic was previously ran for the previous placement and is therefore
4872          // stale/incorrect
4873
4874          state.reset = false;
4875          state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
4876          // is filled with the initial data specified by the modifier. This means
4877          // it doesn't persist and is fresh on each update.
4878          // To ensure persistent data, use `${name}#persistent`
4879
4880          state.orderedModifiers.forEach(function (modifier) {
4881            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
4882          });
4883
4884          for (var index = 0; index < state.orderedModifiers.length; index++) {
4885            if (state.reset === true) {
4886              state.reset = false;
4887              index = -1;
4888              continue;
4889            }
4890
4891            var _state$orderedModifie = state.orderedModifiers[index],
4892                fn = _state$orderedModifie.fn,
4893                _state$orderedModifie2 = _state$orderedModifie.options,
4894                _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
4895                name = _state$orderedModifie.name;
4896
4897            if (typeof fn === 'function') {
4898              state = fn({
4899                state: state,
4900                options: _options,
4901                name: name,
4902                instance: instance
4903              }) || state;
4904            }
4905          }
4906        },
4907        // Async and optimistically optimized update – it will not be executed if
4908        // not necessary (debounced to run at most once-per-tick)
4909        update: debounce(function () {
4910          return new Promise(function (resolve) {
4911            instance.forceUpdate();
4912            resolve(state);
4913          });
4914        }),
4915        destroy: function destroy() {
4916          cleanupModifierEffects();
4917          isDestroyed = true;
4918        }
4919      };
4920
4921      if (!areValidElements(reference, popper)) {
4922        return instance;
4923      }
4924
4925      instance.setOptions(options).then(function (state) {
4926        if (!isDestroyed && options.onFirstUpdate) {
4927          options.onFirstUpdate(state);
4928        }
4929      }); // Modifiers have the ability to execute arbitrary code before the first
4930      // update cycle runs. They will be executed in the same order as the update
4931      // cycle. This is useful when a modifier adds some persistent data that
4932      // other modifiers need to use, but the modifier is run after the dependent
4933      // one.
4934
4935      function runModifierEffects() {
vendor: 10,048 bytes, lines 4936-5226
4936        state.orderedModifiers.forEach(function (_ref) {
4937          var name = _ref.name,
4938              _ref$options = _ref.options,
4939              options = _ref$options === void 0 ? {} : _ref$options,
4940              effect = _ref.effect;
4941
4942          if (typeof effect === 'function') {
4943            var cleanupFn = effect({
4944              state: state,
4945              name: name,
4946              instance: instance,
4947              options: options
4948            });
4949
4950            var noopFn = function noopFn() {};
4951
4952            effectCleanupFns.push(cleanupFn || noopFn);
4953          }
4954        });
4955      }
4956
4957      function cleanupModifierEffects() {
4958        effectCleanupFns.forEach(function (fn) {
4959          return fn();
4960        });
4961        effectCleanupFns = [];
4962      }
4963
4964      return instance;
4965    };
4966  }
4967  var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
4968
4969  var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
4970  var createPopper$1 = /*#__PURE__*/popperGenerator({
4971    defaultModifiers: defaultModifiers$1
4972  }); // eslint-disable-next-line import/no-unused-modules
4973
4974  var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
4975  var createPopper = /*#__PURE__*/popperGenerator({
4976    defaultModifiers: defaultModifiers
4977  }); // eslint-disable-next-line import/no-unused-modules
4978
4979  const Popper = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
4980    __proto__: null,
4981    afterMain,
4982    afterRead,
4983    afterWrite,
4984    applyStyles: applyStyles$1,
4985    arrow: arrow$1,
4986    auto,
4987    basePlacements,
4988    beforeMain,
4989    beforeRead,
4990    beforeWrite,
4991    bottom,
4992    clippingParents,
4993    computeStyles: computeStyles$1,
4994    createPopper,
4995    createPopperBase: createPopper$2,
4996    createPopperLite: createPopper$1,
4997    detectOverflow,
4998    end,
4999    eventListeners,
5000    flip: flip$1,
5001    hide: hide$1,
5002    left,
5003    main,
5004    modifierPhases,
5005    offset: offset$1,
5006    placements,
5007    popper,
5008    popperGenerator,
5009    popperOffsets: popperOffsets$1,
5010    preventOverflow: preventOverflow$1,
5011    read,
5012    reference,
5013    right,
5014    start,
5015    top,
5016    variationPlacements,
5017    viewport,
5018    write
5019  }, Symbol.toStringTag, { value: 'Module' }));
5020
5021  /**
5022   * --------------------------------------------------------------------------
5023   * Bootstrap dropdown.js
5024   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5025   * --------------------------------------------------------------------------
5026   */
5027
5028
5029  /**
5030   * Constants
5031   */
5032
5033  const NAME$a = 'dropdown';
5034  const DATA_KEY$6 = 'bs.dropdown';
5035  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
5036  const DATA_API_KEY$3 = '.data-api';
5037  const ESCAPE_KEY$2 = 'Escape';
5038  const TAB_KEY$1 = 'Tab';
5039  const ARROW_UP_KEY$1 = 'ArrowUp';
5040  const ARROW_DOWN_KEY$1 = 'ArrowDown';
5041  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
5042
5043  const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
5044  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
5045  const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
5046  const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
5047  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
5048  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
5049  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
5050  const CLASS_NAME_SHOW$6 = 'show';
5051  const CLASS_NAME_DROPUP = 'dropup';
5052  const CLASS_NAME_DROPEND = 'dropend';
5053  const CLASS_NAME_DROPSTART = 'dropstart';
5054  const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
5055  const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
5056  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
5057  const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
5058  const SELECTOR_MENU = '.dropdown-menu';
5059  const SELECTOR_NAVBAR = '.navbar';
5060  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
5061  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
5062  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
5063  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
5064  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
5065  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
5066  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
5067  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
5068  const PLACEMENT_TOPCENTER = 'top';
5069  const PLACEMENT_BOTTOMCENTER = 'bottom';
5070  const Default$9 = {
5071    autoClose: true,
5072    boundary: 'clippingParents',
5073    display: 'dynamic',
5074    offset: [0, 2],
5075    popperConfig: null,
5076    reference: 'toggle'
5077  };
5078  const DefaultType$9 = {
5079    autoClose: '(boolean|string)',
5080    boundary: '(string|element)',
5081    display: 'string',
5082    offset: '(array|string|function)',
5083    popperConfig: '(null|object|function)',
5084    reference: '(string|element|object)'
5085  };
5086
5087  /**
5088   * Class definition
5089   */
5090
5091  class Dropdown extends BaseComponent {
5092    constructor(element, config) {
5093      super(element, config);
5094      this._popper = null;
5095      this._parent = this._element.parentNode; // dropdown wrapper
5096      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
5097      this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
5098      this._inNavbar = this._detectNavbar();
5099    }
5100
5101    // Getters
5102    static get Default() {
5103      return Default$9;
5104    }
5105    static get DefaultType() {
5106      return DefaultType$9;
5107    }
5108    static get NAME() {
5109      return NAME$a;
5110    }
5111
5112    // Public
5113    toggle() {
5114      return this._isShown() ? this.hide() : this.show();
5115    }
5116    show() {
5117      if (isDisabled(this._element) || this._isShown()) {
5118        return;
5119      }
5120      const relatedTarget = {
5121        relatedTarget: this._element
5122      };
5123      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
5124      if (showEvent.defaultPrevented) {
5125        return;
5126      }
5127      this._createPopper();
5128
5129      // If this is a touch-enabled device we add extra
5130      // empty mouseover listeners to the body's immediate children;
5131      // only needed because of broken event delegation on iOS
5132      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
5133      if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
5134        for (const element of [].concat(...document.body.children)) {
5135          EventHandler.on(element, 'mouseover', noop);
5136        }
5137      }
5138      this._element.focus();
5139      this._element.setAttribute('aria-expanded', true);
5140      this._menu.classList.add(CLASS_NAME_SHOW$6);
5141      this._element.classList.add(CLASS_NAME_SHOW$6);
5142      EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
5143    }
5144    hide() {
5145      if (isDisabled(this._element) || !this._isShown()) {
5146        return;
5147      }
5148      const relatedTarget = {
5149        relatedTarget: this._element
5150      };
5151      this._completeHide(relatedTarget);
5152    }
5153    dispose() {
5154      if (this._popper) {
5155        this._popper.destroy();
5156      }
5157      super.dispose();
5158    }
5159    update() {
5160      this._inNavbar = this._detectNavbar();
5161      if (this._popper) {
5162        this._popper.update();
5163      }
5164    }
5165
5166    // Private
5167    _completeHide(relatedTarget) {
5168      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
5169      if (hideEvent.defaultPrevented) {
5170        return;
5171      }
5172
5173      // If this is a touch-enabled device we remove the extra
5174      // empty mouseover listeners we added for iOS support
5175      if ('ontouchstart' in document.documentElement) {
5176        for (const element of [].concat(...document.body.children)) {
5177          EventHandler.off(element, 'mouseover', noop);
5178        }
5179      }
5180      if (this._popper) {
5181        this._popper.destroy();
5182      }
5183      this._menu.classList.remove(CLASS_NAME_SHOW$6);
5184      this._element.classList.remove(CLASS_NAME_SHOW$6);
5185      this._element.setAttribute('aria-expanded', 'false');
5186      Manipulator.removeDataAttribute(this._menu, 'popper');
5187      EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
5188    }
5189    _getConfig(config) {
5190      config = super._getConfig(config);
5191      if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
5192        // Popper virtual elements require a getBoundingClientRect method
5193        throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
5194      }
5195      return config;
5196    }
5197    _createPopper() {
5198      if (typeof Popper === 'undefined') {
5199        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org/docs/v2/)');
5200      }
5201      let referenceElement = this._element;
5202      if (this._config.reference === 'parent') {
5203        referenceElement = this._parent;
5204      } else if (isElement$1(this._config.reference)) {
5205        referenceElement = getElement(this._config.reference);
5206      } else if (typeof this._config.reference === 'object') {
5207        referenceElement = this._config.reference;
5208      }
5209      const popperConfig = this._getPopperConfig();
5210      this._popper = createPopper(referenceElement, this._menu, popperConfig);
5211    }
5212    _isShown() {
5213      return this._menu.classList.contains(CLASS_NAME_SHOW$6);
5214    }
5215    _getPlacement() {
5216      const parentDropdown = this._parent;
5217      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
5218        return PLACEMENT_RIGHT;
5219      }
5220      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
5221        return PLACEMENT_LEFT;
5222      }
5223      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
5224        return PLACEMENT_TOPCENTER;
5225      }
5226      if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENT
vendor: 10,917 bytes, lines 5226-5582
5226ER)) {
5227        return PLACEMENT_BOTTOMCENTER;
5228      }
5229
5230      // We need to trim the value because custom properties can also include spaces
5231      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
5232      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
5233        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
5234      }
5235      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
5236    }
5237    _detectNavbar() {
5238      return this._element.closest(SELECTOR_NAVBAR) !== null;
5239    }
5240    _getOffset() {
5241      const {
5242        offset
5243      } = this._config;
5244      if (typeof offset === 'string') {
5245        return offset.split(',').map(value => Number.parseInt(value, 10));
5246      }
5247      if (typeof offset === 'function') {
5248        return popperData => offset(popperData, this._element);
5249      }
5250      return offset;
5251    }
5252    _getPopperConfig() {
5253      const defaultBsPopperConfig = {
5254        placement: this._getPlacement(),
5255        modifiers: [{
5256          name: 'preventOverflow',
5257          options: {
5258            boundary: this._config.boundary
5259          }
5260        }, {
5261          name: 'offset',
5262          options: {
5263            offset: this._getOffset()
5264          }
5265        }]
5266      };
5267
5268      // Disable Popper if we have a static display or Dropdown is in Navbar
5269      if (this._inNavbar || this._config.display === 'static') {
5270        Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove
5271        defaultBsPopperConfig.modifiers = [{
5272          name: 'applyStyles',
5273          enabled: false
5274        }];
5275      }
5276      return {
5277        ...defaultBsPopperConfig,
5278        ...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])
5279      };
5280    }
5281    _selectMenuItem({
5282      key,
5283      target
5284    }) {
5285      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
5286      if (!items.length) {
5287        return;
5288      }
5289
5290      // if target isn't included in items (e.g. when expanding the dropdown)
5291      // allow cycling to get the last item in case key equals ARROW_UP_KEY
5292      getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
5293    }
5294
5295    // Static
5296    static jQueryInterface(config) {
5297      return this.each(function () {
5298        const data = Dropdown.getOrCreateInstance(this, config);
5299        if (typeof config !== 'string') {
5300          return;
5301        }
5302        if (typeof data[config] === 'undefined') {
5303          throw new TypeError(`No method named "${config}"`);
5304        }
5305        data[config]();
5306      });
5307    }
5308    static clearMenus(event) {
5309      if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
5310        return;
5311      }
5312      const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
5313      for (const toggle of openToggles) {
5314        const context = Dropdown.getInstance(toggle);
5315        if (!context || context._config.autoClose === false) {
5316          continue;
5317        }
5318        const composedPath = event.composedPath();
5319        const isMenuTarget = composedPath.includes(context._menu);
5320        if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
5321          continue;
5322        }
5323
5324        // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
5325        if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
5326          continue;
5327        }
5328        const relatedTarget = {
5329          relatedTarget: context._element
5330        };
5331        if (event.type === 'click') {
5332          relatedTarget.clickEvent = event;
5333        }
5334        context._completeHide(relatedTarget);
5335      }
5336    }
5337    static dataApiKeydownHandler(event) {
5338      // If not an UP | DOWN | ESCAPE key => not a dropdown command
5339      // If input/textarea && if key is other than ESCAPE => not a dropdown command
5340
5341      const isInput = /input|textarea/i.test(event.target.tagName);
5342      const isEscapeEvent = event.key === ESCAPE_KEY$2;
5343      const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
5344      if (!isUpOrDownEvent && !isEscapeEvent) {
5345        return;
5346      }
5347      if (isInput && !isEscapeEvent) {
5348        return;
5349      }
5350      event.preventDefault();
5351
5352      // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/
5353      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);
5354      const instance = Dropdown.getOrCreateInstance(getToggleButton);
5355      if (isUpOrDownEvent) {
5356        event.stopPropagation();
5357        instance.show();
5358        instance._selectMenuItem(event);
5359        return;
5360      }
5361      if (instance._isShown()) {
5362        // else is escape and we check if it is shown
5363        event.stopPropagation();
5364        instance.hide();
5365        getToggleButton.focus();
5366      }
5367    }
5368  }
5369
5370  /**
5371   * Data API implementation
5372   */
5373
5374  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
5375  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
5376  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
5377  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
5378  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
5379    event.preventDefault();
5380    Dropdown.getOrCreateInstance(this).toggle();
5381  });
5382
5383  /**
5384   * jQuery
5385   */
5386
5387  defineJQueryPlugin(Dropdown);
5388
5389  /**
5390   * --------------------------------------------------------------------------
5391   * Bootstrap util/backdrop.js
5392   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5393   * --------------------------------------------------------------------------
5394   */
5395
5396
5397  /**
5398   * Constants
5399   */
5400
5401  const NAME$9 = 'backdrop';
5402  const CLASS_NAME_FADE$4 = 'fade';
5403  const CLASS_NAME_SHOW$5 = 'show';
5404  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
5405  const Default$8 = {
5406    className: 'modal-backdrop',
5407    clickCallback: null,
5408    isAnimated: false,
5409    isVisible: true,
5410    // if false, we use the backdrop helper without adding any element to the dom
5411    rootElement: 'body' // give the choice to place backdrop under different elements
5412  };
5413  const DefaultType$8 = {
5414    className: 'string',
5415    clickCallback: '(function|null)',
5416    isAnimated: 'boolean',
5417    isVisible: 'boolean',
5418    rootElement: '(element|string)'
5419  };
5420
5421  /**
5422   * Class definition
5423   */
5424
5425  class Backdrop extends Config {
5426    constructor(config) {
5427      super();
5428      this._config = this._getConfig(config);
5429      this._isAppended = false;
5430      this._element = null;
5431    }
5432
5433    // Getters
5434    static get Default() {
5435      return Default$8;
5436    }
5437    static get DefaultType() {
5438      return DefaultType$8;
5439    }
5440    static get NAME() {
5441      return NAME$9;
5442    }
5443
5444    // Public
5445    show(callback) {
5446      if (!this._config.isVisible) {
5447        execute(callback);
5448        return;
5449      }
5450      this._append();
5451      const element = this._getElement();
5452      if (this._config.isAnimated) {
5453        reflow(element);
5454      }
5455      element.classList.add(CLASS_NAME_SHOW$5);
5456      this._emulateAnimation(() => {
5457        execute(callback);
5458      });
5459    }
5460    hide(callback) {
5461      if (!this._config.isVisible) {
5462        execute(callback);
5463        return;
5464      }
5465      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
5466      this._emulateAnimation(() => {
5467        this.dispose();
5468        execute(callback);
5469      });
5470    }
5471    dispose() {
5472      if (!this._isAppended) {
5473        return;
5474      }
5475      EventHandler.off(this._element, EVENT_MOUSEDOWN);
5476      this._element.remove();
5477      this._isAppended = false;
5478    }
5479
5480    // Private
5481    _getElement() {
5482      if (!this._element) {
5483        const backdrop = document.createElement('div');
5484        backdrop.className = this._config.className;
5485        if (this._config.isAnimated) {
5486          backdrop.classList.add(CLASS_NAME_FADE$4);
5487        }
5488        this._element = backdrop;
5489      }
5490      return this._element;
5491    }
5492    _configAfterMerge(config) {
5493      // use getElement() with the default "body" to get a fresh Element on each instantiation
5494      config.rootElement = getElement(config.rootElement);
5495      return config;
5496    }
5497    _append() {
5498      if (this._isAppended) {
5499        return;
5500      }
5501      const element = this._getElement();
5502      this._config.rootElement.append(element);
5503      EventHandler.on(element, EVENT_MOUSEDOWN, () => {
5504        execute(this._config.clickCallback);
5505      });
5506      this._isAppended = true;
5507    }
5508    _emulateAnimation(callback) {
5509      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
5510    }
5511  }
5512
5513  /**
5514   * --------------------------------------------------------------------------
5515   * Bootstrap util/focustrap.js
5516   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5517   * --------------------------------------------------------------------------
5518   */
5519
5520
5521  /**
5522   * Constants
5523   */
5524
5525  const NAME$8 = 'focustrap';
5526  const DATA_KEY$5 = 'bs.focustrap';
5527  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
5528  const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
5529  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
5530  const TAB_KEY = 'Tab';
5531  const TAB_NAV_FORWARD = 'forward';
5532  const TAB_NAV_BACKWARD = 'backward';
5533  const Default$7 = {
5534    autofocus: true,
5535    trapElement: null // The element to trap focus inside of
5536  };
5537  const DefaultType$7 = {
5538    autofocus: 'boolean',
5539    trapElement: 'element'
5540  };
5541
5542  /**
5543   * Class definition
5544   */
5545
5546  class FocusTrap extends Config {
5547    constructor(config) {
5548      super();
5549      this._config = this._getConfig(config);
5550      this._isActive = false;
5551      this._lastTabNavDirection = null;
5552    }
5553
5554    // Getters
5555    static get Default() {
5556      return Default$7;
5557    }
5558    static get DefaultType() {
5559      return DefaultType$7;
5560    }
5561    static get NAME() {
5562      return NAME$8;
5563    }
5564
5565    // Public
5566    activate() {
5567      if (this._isActive) {
5568        return;
5569      }
5570      if (this._config.autofocus) {
5571        this._config.trapElement.focus();
5572      }
5573      EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
5574      EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
5575      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
5576      this._isActive = true;
5577    }
5578    deactivate() {
5579      if (!this._isActive) {
5580        return;
5581      }
5582      this._isActive = false;
vendor: 5,042 bytes, lines 5583-5725
5583      EventHandler.off(document, EVENT_KEY$5);
5584    }
5585
5586    // Private
5587    _handleFocusin(event) {
5588      const {
5589        trapElement
5590      } = this._config;
5591      if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
5592        return;
5593      }
5594      const elements = SelectorEngine.focusableChildren(trapElement);
5595      if (elements.length === 0) {
5596        trapElement.focus();
5597      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
5598        elements[elements.length - 1].focus();
5599      } else {
5600        elements[0].focus();
5601      }
5602    }
5603    _handleKeydown(event) {
5604      if (event.key !== TAB_KEY) {
5605        return;
5606      }
5607      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
5608    }
5609  }
5610
5611  /**
5612   * --------------------------------------------------------------------------
5613   * Bootstrap util/scrollBar.js
5614   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5615   * --------------------------------------------------------------------------
5616   */
5617
5618
5619  /**
5620   * Constants
5621   */
5622
5623  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
5624  const SELECTOR_STICKY_CONTENT = '.sticky-top';
5625  const PROPERTY_PADDING = 'padding-right';
5626  const PROPERTY_MARGIN = 'margin-right';
5627
5628  /**
5629   * Class definition
5630   */
5631
5632  class ScrollBarHelper {
5633    constructor() {
5634      this._element = document.body;
5635    }
5636
5637    // Public
5638    getWidth() {
5639      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
5640      const documentWidth = document.documentElement.clientWidth;
5641      return Math.abs(window.innerWidth - documentWidth);
5642    }
5643    hide() {
5644      const width = this.getWidth();
5645      this._disableOverFlow();
5646      // give padding to element to balance the hidden scrollbar width
5647      this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
5648      // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
5649      this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
5650      this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
5651    }
5652    reset() {
5653      this._resetElementAttributes(this._element, 'overflow');
5654      this._resetElementAttributes(this._element, PROPERTY_PADDING);
5655      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
5656      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
5657    }
5658    isOverflowing() {
5659      return this.getWidth() > 0;
5660    }
5661
5662    // Private
5663    _disableOverFlow() {
5664      this._saveInitialAttribute(this._element, 'overflow');
5665      this._element.style.overflow = 'hidden';
5666    }
5667    _setElementAttributes(selector, styleProperty, callback) {
5668      const scrollbarWidth = this.getWidth();
5669      const manipulationCallBack = element => {
5670        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
5671          return;
5672        }
5673        this._saveInitialAttribute(element, styleProperty);
5674        const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
5675        element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
5676      };
5677      this._applyManipulationCallback(selector, manipulationCallBack);
5678    }
5679    _saveInitialAttribute(element, styleProperty) {
5680      const actualValue = element.style.getPropertyValue(styleProperty);
5681      if (actualValue) {
5682        Manipulator.setDataAttribute(element, styleProperty, actualValue);
5683      }
5684    }
5685    _resetElementAttributes(selector, styleProperty) {
5686      const manipulationCallBack = element => {
5687        const value = Manipulator.getDataAttribute(element, styleProperty);
5688        // We only want to remove the property if the value is `null`; the value can also be zero
5689        if (value === null) {
5690          element.style.removeProperty(styleProperty);
5691          return;
5692        }
5693        Manipulator.removeDataAttribute(element, styleProperty);
5694        element.style.setProperty(styleProperty, value);
5695      };
5696      this._applyManipulationCallback(selector, manipulationCallBack);
5697    }
5698    _applyManipulationCallback(selector, callBack) {
5699      if (isElement$1(selector)) {
5700        callBack(selector);
5701        return;
5702      }
5703      for (const sel of SelectorEngine.find(selector, this._element)) {
5704        callBack(sel);
5705      }
5706    }
5707  }
5708
5709  /**
5710   * --------------------------------------------------------------------------
5711   * Bootstrap modal.js
5712   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5713   * --------------------------------------------------------------------------
5714   */
5715
5716
5717  /**
5718   * Constants
5719   */
5720
5721  const NAME$7 = 'modal';
5722  const DATA_KEY$4 = 'bs.modal';
5723  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
5724  const DATA_API_KEY$2 = '.data-api';
5725  const ESCAPE_KEY$1 = 'Escape';
vendor: 19,288 bytes, lines 5726-6332
5726  const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
5727  const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
5728  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
5729  const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
5730  const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
5731  const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
5732  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
5733  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
5734  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
5735  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
5736  const CLASS_NAME_OPEN = 'modal-open';
5737  const CLASS_NAME_FADE$3 = 'fade';
5738  const CLASS_NAME_SHOW$4 = 'show';
5739  const CLASS_NAME_STATIC = 'modal-static';
5740  const OPEN_SELECTOR$1 = '.modal.show';
5741  const SELECTOR_DIALOG = '.modal-dialog';
5742  const SELECTOR_MODAL_BODY = '.modal-body';
5743  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
5744  const Default$6 = {
5745    backdrop: true,
5746    focus: true,
5747    keyboard: true
5748  };
5749  const DefaultType$6 = {
5750    backdrop: '(boolean|string)',
5751    focus: 'boolean',
5752    keyboard: 'boolean'
5753  };
5754
5755  /**
5756   * Class definition
5757   */
5758
5759  class Modal extends BaseComponent {
5760    constructor(element, config) {
5761      super(element, config);
5762      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
5763      this._backdrop = this._initializeBackDrop();
5764      this._focustrap = this._initializeFocusTrap();
5765      this._isShown = false;
5766      this._isTransitioning = false;
5767      this._scrollBar = new ScrollBarHelper();
5768      this._addEventListeners();
5769    }
5770
5771    // Getters
5772    static get Default() {
5773      return Default$6;
5774    }
5775    static get DefaultType() {
5776      return DefaultType$6;
5777    }
5778    static get NAME() {
5779      return NAME$7;
5780    }
5781
5782    // Public
5783    toggle(relatedTarget) {
5784      return this._isShown ? this.hide() : this.show(relatedTarget);
5785    }
5786    show(relatedTarget) {
5787      if (this._isShown || this._isTransitioning) {
5788        return;
5789      }
5790      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
5791        relatedTarget
5792      });
5793      if (showEvent.defaultPrevented) {
5794        return;
5795      }
5796      this._isShown = true;
5797      this._isTransitioning = true;
5798      this._scrollBar.hide();
5799      document.body.classList.add(CLASS_NAME_OPEN);
5800      this._adjustDialog();
5801      this._backdrop.show(() => this._showElement(relatedTarget));
5802    }
5803    hide() {
5804      if (!this._isShown || this._isTransitioning) {
5805        return;
5806      }
5807      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
5808      if (hideEvent.defaultPrevented) {
5809        return;
5810      }
5811      this._isShown = false;
5812      this._isTransitioning = true;
5813      this._focustrap.deactivate();
5814      this._element.classList.remove(CLASS_NAME_SHOW$4);
5815      this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
5816    }
5817    dispose() {
5818      EventHandler.off(window, EVENT_KEY$4);
5819      EventHandler.off(this._dialog, EVENT_KEY$4);
5820      this._backdrop.dispose();
5821      this._focustrap.deactivate();
5822      super.dispose();
5823    }
5824    handleUpdate() {
5825      this._adjustDialog();
5826    }
5827
5828    // Private
5829    _initializeBackDrop() {
5830      return new Backdrop({
5831        isVisible: Boolean(this._config.backdrop),
5832        // 'static' option will be translated to true, and booleans will keep their value,
5833        isAnimated: this._isAnimated()
5834      });
5835    }
5836    _initializeFocusTrap() {
5837      return new FocusTrap({
5838        trapElement: this._element
5839      });
5840    }
5841    _showElement(relatedTarget) {
5842      // try to append dynamic modal
5843      if (!document.body.contains(this._element)) {
5844        document.body.append(this._element);
5845      }
5846      this._element.style.display = 'block';
5847      this._element.removeAttribute('aria-hidden');
5848      this._element.setAttribute('aria-modal', true);
5849      this._element.setAttribute('role', 'dialog');
5850      this._element.scrollTop = 0;
5851      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
5852      if (modalBody) {
5853        modalBody.scrollTop = 0;
5854      }
5855      reflow(this._element);
5856      this._element.classList.add(CLASS_NAME_SHOW$4);
5857      const transitionComplete = () => {
5858        if (this._config.focus) {
5859          this._focustrap.activate();
5860        }
5861        this._isTransitioning = false;
5862        EventHandler.trigger(this._element, EVENT_SHOWN$4, {
5863          relatedTarget
5864        });
5865      };
5866      this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
5867    }
5868    _addEventListeners() {
5869      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
5870        if (event.key !== ESCAPE_KEY$1) {
5871          return;
5872        }
5873        if (this._config.keyboard) {
5874          this.hide();
5875          return;
5876        }
5877        this._triggerBackdropTransition();
5878      });
5879      EventHandler.on(window, EVENT_RESIZE$1, () => {
5880        if (this._isShown && !this._isTransitioning) {
5881          this._adjustDialog();
5882        }
5883      });
5884      EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
5885        // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
5886        EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
5887          if (this._element !== event.target || this._element !== event2.target) {
5888            return;
5889          }
5890          if (this._config.backdrop === 'static') {
5891            this._triggerBackdropTransition();
5892            return;
5893          }
5894          if (this._config.backdrop) {
5895            this.hide();
5896          }
5897        });
5898      });
5899    }
5900    _hideModal() {
5901      this._element.style.display = 'none';
5902      this._element.setAttribute('aria-hidden', true);
5903      this._element.removeAttribute('aria-modal');
5904      this._element.removeAttribute('role');
5905      this._isTransitioning = false;
5906      this._backdrop.hide(() => {
5907        document.body.classList.remove(CLASS_NAME_OPEN);
5908        this._resetAdjustments();
5909        this._scrollBar.reset();
5910        EventHandler.trigger(this._element, EVENT_HIDDEN$4);
5911      });
5912    }
5913    _isAnimated() {
5914      return this._element.classList.contains(CLASS_NAME_FADE$3);
5915    }
5916    _triggerBackdropTransition() {
5917      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
5918      if (hideEvent.defaultPrevented) {
5919        return;
5920      }
5921      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
5922      const initialOverflowY = this._element.style.overflowY;
5923      // return if the following background transition hasn't yet completed
5924      if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
5925        return;
5926      }
5927      if (!isModalOverflowing) {
5928        this._element.style.overflowY = 'hidden';
5929      }
5930      this._element.classList.add(CLASS_NAME_STATIC);
5931      this._queueCallback(() => {
5932        this._element.classList.remove(CLASS_NAME_STATIC);
5933        this._queueCallback(() => {
5934          this._element.style.overflowY = initialOverflowY;
5935        }, this._dialog);
5936      }, this._dialog);
5937      this._element.focus();
5938    }
5939
5940    /**
5941     * The following methods are used to handle overflowing modals
5942     */
5943
5944    _adjustDialog() {
5945      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
5946      const scrollbarWidth = this._scrollBar.getWidth();
5947      const isBodyOverflowing = scrollbarWidth > 0;
5948      if (isBodyOverflowing && !isModalOverflowing) {
5949        const property = isRTL() ? 'paddingLeft' : 'paddingRight';
5950        this._element.style[property] = `${scrollbarWidth}px`;
5951      }
5952      if (!isBodyOverflowing && isModalOverflowing) {
5953        const property = isRTL() ? 'paddingRight' : 'paddingLeft';
5954        this._element.style[property] = `${scrollbarWidth}px`;
5955      }
5956    }
5957    _resetAdjustments() {
5958      this._element.style.paddingLeft = '';
5959      this._element.style.paddingRight = '';
5960    }
5961
5962    // Static
5963    static jQueryInterface(config, relatedTarget) {
5964      return this.each(function () {
5965        const data = Modal.getOrCreateInstance(this, config);
5966        if (typeof config !== 'string') {
5967          return;
5968        }
5969        if (typeof data[config] === 'undefined') {
5970          throw new TypeError(`No method named "${config}"`);
5971        }
5972        data[config](relatedTarget);
5973      });
5974    }
5975  }
5976
5977  /**
5978   * Data API implementation
5979   */
5980
5981  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
5982    const target = SelectorEngine.getElementFromSelector(this);
5983    if (['A', 'AREA'].includes(this.tagName)) {
5984      event.preventDefault();
5985    }
5986    EventHandler.one(target, EVENT_SHOW$4, showEvent => {
5987      if (showEvent.defaultPrevented) {
5988        // only register focus restorer if modal will actually get shown
5989        return;
5990      }
5991      EventHandler.one(target, EVENT_HIDDEN$4, () => {
5992        if (isVisible(this)) {
5993          this.focus();
5994        }
5995      });
5996    });
5997
5998    // avoid conflict when clicking modal toggler while another one is open
5999    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
6000    if (alreadyOpen) {
6001      Modal.getInstance(alreadyOpen).hide();
6002    }
6003    const data = Modal.getOrCreateInstance(target);
6004    data.toggle(this);
6005  });
6006  enableDismissTrigger(Modal);
6007
6008  /**
6009   * jQuery
6010   */
6011
6012  defineJQueryPlugin(Modal);
6013
6014  /**
6015   * --------------------------------------------------------------------------
6016   * Bootstrap offcanvas.js
6017   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6018   * --------------------------------------------------------------------------
6019   */
6020
6021
6022  /**
6023   * Constants
6024   */
6025
6026  const NAME$6 = 'offcanvas';
6027  const DATA_KEY$3 = 'bs.offcanvas';
6028  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
6029  const DATA_API_KEY$1 = '.data-api';
6030  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
6031  const ESCAPE_KEY = 'Escape';
6032  const CLASS_NAME_SHOW$3 = 'show';
6033  const CLASS_NAME_SHOWING$1 = 'showing';
6034  const CLASS_NAME_HIDING = 'hiding';
6035  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
6036  const OPEN_SELECTOR = '.offcanvas.show';
6037  const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
6038  const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
6039  const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
6040  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
6041  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
6042  const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
6043  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
6044  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
6045  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
6046  const Default$5 = {
6047    backdrop: true,
6048    keyboard: true,
6049    scroll: false
6050  };
6051  const DefaultType$5 = {
6052    backdrop: '(boolean|string)',
6053    keyboard: 'boolean',
6054    scroll: 'boolean'
6055  };
6056
6057  /**
6058   * Class definition
6059   */
6060
6061  class Offcanvas extends BaseComponent {
6062    constructor(element, config) {
6063      super(element, config);
6064      this._isShown = false;
6065      this._backdrop = this._initializeBackDrop();
6066      this._focustrap = this._initializeFocusTrap();
6067      this._addEventListeners();
6068    }
6069
6070    // Getters
6071    static get Default() {
6072      return Default$5;
6073    }
6074    static get DefaultType() {
6075      return DefaultType$5;
6076    }
6077    static get NAME() {
6078      return NAME$6;
6079    }
6080
6081    // Public
6082    toggle(relatedTarget) {
6083      return this._isShown ? this.hide() : this.show(relatedTarget);
6084    }
6085    show(relatedTarget) {
6086      if (this._isShown) {
6087        return;
6088      }
6089      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
6090        relatedTarget
6091      });
6092      if (showEvent.defaultPrevented) {
6093        return;
6094      }
6095      this._isShown = true;
6096      this._backdrop.show();
6097      if (!this._config.scroll) {
6098        new ScrollBarHelper().hide();
6099      }
6100      this._element.setAttribute('aria-modal', true);
6101      this._element.setAttribute('role', 'dialog');
6102      this._element.classList.add(CLASS_NAME_SHOWING$1);
6103      const completeCallBack = () => {
6104        if (!this._config.scroll || this._config.backdrop) {
6105          this._focustrap.activate();
6106        }
6107        this._element.classList.add(CLASS_NAME_SHOW$3);
6108        this._element.classList.remove(CLASS_NAME_SHOWING$1);
6109        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
6110          relatedTarget
6111        });
6112      };
6113      this._queueCallback(completeCallBack, this._element, true);
6114    }
6115    hide() {
6116      if (!this._isShown) {
6117        return;
6118      }
6119      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
6120      if (hideEvent.defaultPrevented) {
6121        return;
6122      }
6123      this._focustrap.deactivate();
6124      this._element.blur();
6125      this._isShown = false;
6126      this._element.classList.add(CLASS_NAME_HIDING);
6127      this._backdrop.hide();
6128      const completeCallback = () => {
6129        this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
6130        this._element.removeAttribute('aria-modal');
6131        this._element.removeAttribute('role');
6132        if (!this._config.scroll) {
6133          new ScrollBarHelper().reset();
6134        }
6135        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
6136      };
6137      this._queueCallback(completeCallback, this._element, true);
6138    }
6139    dispose() {
6140      this._backdrop.dispose();
6141      this._focustrap.deactivate();
6142      super.dispose();
6143    }
6144
6145    // Private
6146    _initializeBackDrop() {
6147      const clickCallback = () => {
6148        if (this._config.backdrop === 'static') {
6149          EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
6150          return;
6151        }
6152        this.hide();
6153      };
6154
6155      // 'static' option will be translated to true, and booleans will keep their value
6156      const isVisible = Boolean(this._config.backdrop);
6157      return new Backdrop({
6158        className: CLASS_NAME_BACKDROP,
6159        isVisible,
6160        isAnimated: true,
6161        rootElement: this._element.parentNode,
6162        clickCallback: isVisible ? clickCallback : null
6163      });
6164    }
6165    _initializeFocusTrap() {
6166      return new FocusTrap({
6167        trapElement: this._element
6168      });
6169    }
6170    _addEventListeners() {
6171      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
6172        if (event.key !== ESCAPE_KEY) {
6173          return;
6174        }
6175        if (this._config.keyboard) {
6176          this.hide();
6177          return;
6178        }
6179        EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
6180      });
6181    }
6182
6183    // Static
6184    static jQueryInterface(config) {
6185      return this.each(function () {
6186        const data = Offcanvas.getOrCreateInstance(this, config);
6187        if (typeof config !== 'string') {
6188          return;
6189        }
6190        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
6191          throw new TypeError(`No method named "${config}"`);
6192        }
6193        data[config](this);
6194      });
6195    }
6196  }
6197
6198  /**
6199   * Data API implementation
6200   */
6201
6202  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
6203    const target = SelectorEngine.getElementFromSelector(this);
6204    if (['A', 'AREA'].includes(this.tagName)) {
6205      event.preventDefault();
6206    }
6207    if (isDisabled(this)) {
6208      return;
6209    }
6210    EventHandler.one(target, EVENT_HIDDEN$3, () => {
6211      // focus on trigger when it is closed
6212      if (isVisible(this)) {
6213        this.focus();
6214      }
6215    });
6216
6217    // avoid conflict when clicking a toggler of an offcanvas, while another is open
6218    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
6219    if (alreadyOpen && alreadyOpen !== target) {
6220      Offcanvas.getInstance(alreadyOpen).hide();
6221    }
6222    const data = Offcanvas.getOrCreateInstance(target);
6223    data.toggle(this);
6224  });
6225  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
6226    for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
6227      Offcanvas.getOrCreateInstance(selector).show();
6228    }
6229  });
6230  EventHandler.on(window, EVENT_RESIZE, () => {
6231    for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
6232      if (getComputedStyle(element).position !== 'fixed') {
6233        Offcanvas.getOrCreateInstance(element).hide();
6234      }
6235    }
6236  });
6237  enableDismissTrigger(Offcanvas);
6238
6239  /**
6240   * jQuery
6241   */
6242
6243  defineJQueryPlugin(Offcanvas);
6244
6245  /**
6246   * --------------------------------------------------------------------------
6247   * Bootstrap util/sanitizer.js
6248   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6249   * --------------------------------------------------------------------------
6250   */
6251
6252  // js-docs-start allow-list
6253  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
6254  const DefaultAllowlist = {
6255    // Global attributes allowed on any supplied element below.
6256    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
6257    a: ['target', 'href', 'title', 'rel'],
6258    area: [],
6259    b: [],
6260    br: [],
6261    col: [],
6262    code: [],
6263    dd: [],
6264    div: [],
6265    dl: [],
6266    dt: [],
6267    em: [],
6268    hr: [],
6269    h1: [],
6270    h2: [],
6271    h3: [],
6272    h4: [],
6273    h5: [],
6274    h6: [],
6275    i: [],
6276    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
6277    li: [],
6278    ol: [],
6279    p: [],
6280    pre: [],
6281    s: [],
6282    small: [],
6283    span: [],
6284    sub: [],
6285    sup: [],
6286    strong: [],
6287    u: [],
6288    ul: []
6289  };
6290  // js-docs-end allow-list
6291
6292  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
6293
6294  /**
6295   * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation
6296   * contexts.
6297   *
6298   * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38
6299   */
6300  const SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;
6301  const allowedAttribute = (attribute, allowedAttributeList) => {
6302    const attributeName = attribute.nodeName.toLowerCase();
6303    if (allowedAttributeList.includes(attributeName)) {
6304      if (uriAttributes.has(attributeName)) {
6305        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));
6306      }
6307      return true;
6308    }
6309
6310    // Check if a regular expression validates the attribute.
6311    return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
6312  };
6313  function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
6314    if (!unsafeHtml.length) {
6315      return unsafeHtml;
6316    }
6317    if (sanitizeFunction && typeof sanitizeFunction === 'function') {
6318      return sanitizeFunction(unsafeHtml);
6319    }
6320    const domParser = new window.DOMParser();
6321    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
6322    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
6323    for (const element of elements) {
6324      const elementName = element.nodeName.toLowerCase();
6325      if (!Object.keys(allowList).includes(elementName)) {
6326        element.remove();
6327        continue;
6328      }
6329      const attributeList = [].concat(...element.attributes);
6330      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
6331      for (const attribute of attributeList) {
6332        if (!allowedAttribute(attribute, allowedAttributes)) {
vendor: 9,698 bytes, lines 6333-6666
6333          element.removeAttribute(attribute.nodeName);
6334        }
6335      }
6336    }
6337    return createdDocument.body.innerHTML;
6338  }
6339
6340  /**
6341   * --------------------------------------------------------------------------
6342   * Bootstrap util/template-factory.js
6343   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6344   * --------------------------------------------------------------------------
6345   */
6346
6347
6348  /**
6349   * Constants
6350   */
6351
6352  const NAME$5 = 'TemplateFactory';
6353  const Default$4 = {
6354    allowList: DefaultAllowlist,
6355    content: {},
6356    // { selector : text ,  selector2 : text2 , }
6357    extraClass: '',
6358    html: false,
6359    sanitize: true,
6360    sanitizeFn: null,
6361    template: '<div></div>'
6362  };
6363  const DefaultType$4 = {
6364    allowList: 'object',
6365    content: 'object',
6366    extraClass: '(string|function)',
6367    html: 'boolean',
6368    sanitize: 'boolean',
6369    sanitizeFn: '(null|function)',
6370    template: 'string'
6371  };
6372  const DefaultContentType = {
6373    entry: '(string|element|function|null)',
6374    selector: '(string|element)'
6375  };
6376
6377  /**
6378   * Class definition
6379   */
6380
6381  class TemplateFactory extends Config {
6382    constructor(config) {
6383      super();
6384      this._config = this._getConfig(config);
6385    }
6386
6387    // Getters
6388    static get Default() {
6389      return Default$4;
6390    }
6391    static get DefaultType() {
6392      return DefaultType$4;
6393    }
6394    static get NAME() {
6395      return NAME$5;
6396    }
6397
6398    // Public
6399    getContent() {
6400      return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
6401    }
6402    hasContent() {
6403      return this.getContent().length > 0;
6404    }
6405    changeContent(content) {
6406      this._checkContent(content);
6407      this._config.content = {
6408        ...this._config.content,
6409        ...content
6410      };
6411      return this;
6412    }
6413    toHtml() {
6414      const templateWrapper = document.createElement('div');
6415      templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
6416      for (const [selector, text] of Object.entries(this._config.content)) {
6417        this._setContent(templateWrapper, text, selector);
6418      }
6419      const template = templateWrapper.children[0];
6420      const extraClass = this._resolvePossibleFunction(this._config.extraClass);
6421      if (extraClass) {
6422        template.classList.add(...extraClass.split(' '));
6423      }
6424      return template;
6425    }
6426
6427    // Private
6428    _typeCheckConfig(config) {
6429      super._typeCheckConfig(config);
6430      this._checkContent(config.content);
6431    }
6432    _checkContent(arg) {
6433      for (const [selector, content] of Object.entries(arg)) {
6434        super._typeCheckConfig({
6435          selector,
6436          entry: content
6437        }, DefaultContentType);
6438      }
6439    }
6440    _setContent(template, content, selector) {
6441      const templateElement = SelectorEngine.findOne(selector, template);
6442      if (!templateElement) {
6443        return;
6444      }
6445      content = this._resolvePossibleFunction(content);
6446      if (!content) {
6447        templateElement.remove();
6448        return;
6449      }
6450      if (isElement$1(content)) {
6451        this._putElementInTemplate(getElement(content), templateElement);
6452        return;
6453      }
6454      if (this._config.html) {
6455        templateElement.innerHTML = this._maybeSanitize(content);
6456        return;
6457      }
6458      templateElement.textContent = content;
6459    }
6460    _maybeSanitize(arg) {
6461      return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
6462    }
6463    _resolvePossibleFunction(arg) {
6464      return execute(arg, [undefined, this]);
6465    }
6466    _putElementInTemplate(element, templateElement) {
6467      if (this._config.html) {
6468        templateElement.innerHTML = '';
6469        templateElement.append(element);
6470        return;
6471      }
6472      templateElement.textContent = element.textContent;
6473    }
6474  }
6475
6476  /**
6477   * --------------------------------------------------------------------------
6478   * Bootstrap tooltip.js
6479   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6480   * --------------------------------------------------------------------------
6481   */
6482
6483
6484  /**
6485   * Constants
6486   */
6487
6488  const NAME$4 = 'tooltip';
6489  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
6490  const CLASS_NAME_FADE$2 = 'fade';
6491  const CLASS_NAME_MODAL = 'modal';
6492  const CLASS_NAME_SHOW$2 = 'show';
6493  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
6494  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
6495  const EVENT_MODAL_HIDE = 'hide.bs.modal';
6496  const TRIGGER_HOVER = 'hover';
6497  const TRIGGER_FOCUS = 'focus';
6498  const TRIGGER_CLICK = 'click';
6499  const TRIGGER_MANUAL = 'manual';
6500  const EVENT_HIDE$2 = 'hide';
6501  const EVENT_HIDDEN$2 = 'hidden';
6502  const EVENT_SHOW$2 = 'show';
6503  const EVENT_SHOWN$2 = 'shown';
6504  const EVENT_INSERTED = 'inserted';
6505  const EVENT_CLICK$1 = 'click';
6506  const EVENT_FOCUSIN$1 = 'focusin';
6507  const EVENT_FOCUSOUT$1 = 'focusout';
6508  const EVENT_MOUSEENTER = 'mouseenter';
6509  const EVENT_MOUSELEAVE = 'mouseleave';
6510  const AttachmentMap = {
6511    AUTO: 'auto',
6512    TOP: 'top',
6513    RIGHT: isRTL() ? 'left' : 'right',
6514    BOTTOM: 'bottom',
6515    LEFT: isRTL() ? 'right' : 'left'
6516  };
6517  const Default$3 = {
6518    allowList: DefaultAllowlist,
6519    animation: true,
6520    boundary: 'clippingParents',
6521    container: false,
6522    customClass: '',
6523    delay: 0,
6524    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
6525    html: false,
6526    offset: [0, 6],
6527    placement: 'top',
6528    popperConfig: null,
6529    sanitize: true,
6530    sanitizeFn: null,
6531    selector: false,
6532    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
6533    title: '',
6534    trigger: 'hover focus'
6535  };
6536  const DefaultType$3 = {
6537    allowList: 'object',
6538    animation: 'boolean',
6539    boundary: '(string|element)',
6540    container: '(string|element|boolean)',
6541    customClass: '(string|function)',
6542    delay: '(number|object)',
6543    fallbackPlacements: 'array',
6544    html: 'boolean',
6545    offset: '(array|string|function)',
6546    placement: '(string|function)',
6547    popperConfig: '(null|object|function)',
6548    sanitize: 'boolean',
6549    sanitizeFn: '(null|function)',
6550    selector: '(string|boolean)',
6551    template: 'string',
6552    title: '(string|element|function)',
6553    trigger: 'string'
6554  };
6555
6556  /**
6557   * Class definition
6558   */
6559
6560  class Tooltip extends BaseComponent {
6561    constructor(element, config) {
6562      if (typeof Popper === 'undefined') {
6563        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org/docs/v2/)');
6564      }
6565      super(element, config);
6566
6567      // Private
6568      this._isEnabled = true;
6569      this._timeout = 0;
6570      this._isHovered = null;
6571      this._activeTrigger = {};
6572      this._popper = null;
6573      this._templateFactory = null;
6574      this._newContent = null;
6575
6576      // Protected
6577      this.tip = null;
6578      this._setListeners();
6579      if (!this._config.selector) {
6580        this._fixTitle();
6581      }
6582    }
6583
6584    // Getters
6585    static get Default() {
6586      return Default$3;
6587    }
6588    static get DefaultType() {
6589      return DefaultType$3;
6590    }
6591    static get NAME() {
6592      return NAME$4;
6593    }
6594
6595    // Public
6596    enable() {
6597      this._isEnabled = true;
6598    }
6599    disable() {
6600      this._isEnabled = false;
6601    }
6602    toggleEnabled() {
6603      this._isEnabled = !this._isEnabled;
6604    }
6605    toggle() {
6606      if (!this._isEnabled) {
6607        return;
6608      }
6609      if (this._isShown()) {
6610        this._leave();
6611        return;
6612      }
6613      this._enter();
6614    }
6615    dispose() {
6616      clearTimeout(this._timeout);
6617      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
6618      if (this._element.getAttribute('data-bs-original-title')) {
6619        this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
6620      }
6621      this._disposePopper();
6622      super.dispose();
6623    }
6624    show() {
6625      if (this._element.style.display === 'none') {
6626        throw new Error('Please use show on visible elements');
6627      }
6628      if (!(this._isWithContent() && this._isEnabled)) {
6629        return;
6630      }
6631      const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
6632      const shadowRoot = findShadowRoot(this._element);
6633      const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
6634      if (showEvent.defaultPrevented || !isInTheDom) {
6635        return;
6636      }
6637
6638      // TODO: v6 remove this or make it optional
6639      this._disposePopper();
6640      const tip = this._getTipElement();
6641      this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
6642      const {
6643        container
6644      } = this._config;
6645      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
6646        container.append(tip);
6647        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
6648      }
6649      this._popper = this._createPopper(tip);
6650      tip.classList.add(CLASS_NAME_SHOW$2);
6651
6652      // If this is a touch-enabled device we add extra
6653      // empty mouseover listeners to the body's immediate children;
6654      // only needed because of broken event delegation on iOS
6655      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
6656      if ('ontouchstart' in document.documentElement) {
6657        for (const element of [].concat(...document.body.children)) {
6658          EventHandler.on(element, 'mouseover', noop);
6659        }
6660      }
6661      const complete = () => {
6662        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
6663        if (this._isHovered === false) {
6664          this._leave();
6665        }
6666        this._isHovered = false;
vendor: 2,145 bytes, lines 6667-6731
6667      };
6668      this._queueCallback(complete, this.tip, this._isAnimated());
6669    }
6670    hide() {
6671      if (!this._isShown()) {
6672        return;
6673      }
6674      const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
6675      if (hideEvent.defaultPrevented) {
6676        return;
6677      }
6678      const tip = this._getTipElement();
6679      tip.classList.remove(CLASS_NAME_SHOW$2);
6680
6681      // If this is a touch-enabled device we remove the extra
6682      // empty mouseover listeners we added for iOS support
6683      if ('ontouchstart' in document.documentElement) {
6684        for (const element of [].concat(...document.body.children)) {
6685          EventHandler.off(element, 'mouseover', noop);
6686        }
6687      }
6688      this._activeTrigger[TRIGGER_CLICK] = false;
6689      this._activeTrigger[TRIGGER_FOCUS] = false;
6690      this._activeTrigger[TRIGGER_HOVER] = false;
6691      this._isHovered = null; // it is a trick to support manual triggering
6692
6693      const complete = () => {
6694        if (this._isWithActiveTrigger()) {
6695          return;
6696        }
6697        if (!this._isHovered) {
6698          this._disposePopper();
6699        }
6700        this._element.removeAttribute('aria-describedby');
6701        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
6702      };
6703      this._queueCallback(complete, this.tip, this._isAnimated());
6704    }
6705    update() {
6706      if (this._popper) {
6707        this._popper.update();
6708      }
6709    }
6710
6711    // Protected
6712    _isWithContent() {
6713      return Boolean(this._getTitle());
6714    }
6715    _getTipElement() {
6716      if (!this.tip) {
6717        this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
6718      }
6719      return this.tip;
6720    }
6721    _createTipElement(content) {
6722      const tip = this._getTemplateFactory(content).toHtml();
6723
6724      // TODO: remove this check in v6
6725      if (!tip) {
6726        return null;
6727      }
6728      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);
6729      // TODO: v6 the following can be achieved with CSS only
6730      tip.classList.add(`bs-${this.constructor.NAME}-auto`);
6731      const tipId = getUID(this.constructor.NAME).toString();
vendor: 5,941 bytes, lines 6732-6895
6732      tip.setAttribute('id', tipId);
6733      if (this._isAnimated()) {
6734        tip.classList.add(CLASS_NAME_FADE$2);
6735      }
6736      return tip;
6737    }
6738    setContent(content) {
6739      this._newContent = content;
6740      if (this._isShown()) {
6741        this._disposePopper();
6742        this.show();
6743      }
6744    }
6745    _getTemplateFactory(content) {
6746      if (this._templateFactory) {
6747        this._templateFactory.changeContent(content);
6748      } else {
6749        this._templateFactory = new TemplateFactory({
6750          ...this._config,
6751          // the `content` var has to be after `this._config`
6752          // to override config.content in case of popover
6753          content,
6754          extraClass: this._resolvePossibleFunction(this._config.customClass)
6755        });
6756      }
6757      return this._templateFactory;
6758    }
6759    _getContentForTemplate() {
6760      return {
6761        [SELECTOR_TOOLTIP_INNER]: this._getTitle()
6762      };
6763    }
6764    _getTitle() {
6765      return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
6766    }
6767
6768    // Private
6769    _initializeOnDelegatedTarget(event) {
6770      return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
6771    }
6772    _isAnimated() {
6773      return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
6774    }
6775    _isShown() {
6776      return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
6777    }
6778    _createPopper(tip) {
6779      const placement = execute(this._config.placement, [this, tip, this._element]);
6780      const attachment = AttachmentMap[placement.toUpperCase()];
6781      return createPopper(this._element, tip, this._getPopperConfig(attachment));
6782    }
6783    _getOffset() {
6784      const {
6785        offset
6786      } = this._config;
6787      if (typeof offset === 'string') {
6788        return offset.split(',').map(value => Number.parseInt(value, 10));
6789      }
6790      if (typeof offset === 'function') {
6791        return popperData => offset(popperData, this._element);
6792      }
6793      return offset;
6794    }
6795    _resolvePossibleFunction(arg) {
6796      return execute(arg, [this._element, this._element]);
6797    }
6798    _getPopperConfig(attachment) {
6799      const defaultBsPopperConfig = {
6800        placement: attachment,
6801        modifiers: [{
6802          name: 'flip',
6803          options: {
6804            fallbackPlacements: this._config.fallbackPlacements
6805          }
6806        }, {
6807          name: 'offset',
6808          options: {
6809            offset: this._getOffset()
6810          }
6811        }, {
6812          name: 'preventOverflow',
6813          options: {
6814            boundary: this._config.boundary
6815          }
6816        }, {
6817          name: 'arrow',
6818          options: {
6819            element: `.${this.constructor.NAME}-arrow`
6820          }
6821        }, {
6822          name: 'preSetPlacement',
6823          enabled: true,
6824          phase: 'beforeMain',
6825          fn: data => {
6826            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
6827            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
6828            this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
6829          }
6830        }]
6831      };
6832      return {
6833        ...defaultBsPopperConfig,
6834        ...execute(this._config.popperConfig, [undefined, defaultBsPopperConfig])
6835      };
6836    }
6837    _setListeners() {
6838      const triggers = this._config.trigger.split(' ');
6839      for (const trigger of triggers) {
6840        if (trigger === 'click') {
6841          EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
6842            const context = this._initializeOnDelegatedTarget(event);
6843            context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK]);
6844            context.toggle();
6845          });
6846        } else if (trigger !== TRIGGER_MANUAL) {
6847          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
6848          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
6849          EventHandler.on(this._element, eventIn, this._config.selector, event => {
6850            const context = this._initializeOnDelegatedTarget(event);
6851            context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
6852            context._enter();
6853          });
6854          EventHandler.on(this._element, eventOut, this._config.selector, event => {
6855            const context = this._initializeOnDelegatedTarget(event);
6856            context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
6857            context._leave();
6858          });
6859        }
6860      }
6861      this._hideModalHandler = () => {
6862        if (this._element) {
6863          this.hide();
6864        }
6865      };
6866      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
6867    }
6868    _fixTitle() {
6869      const title = this._element.getAttribute('title');
6870      if (!title) {
6871        return;
6872      }
6873      if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
6874        this._element.setAttribute('aria-label', title);
6875      }
6876      this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
6877      this._element.removeAttribute('title');
6878    }
6879    _enter() {
6880      if (this._isShown() || this._isHovered) {
6881        this._isHovered = true;
6882        return;
6883      }
6884      this._isHovered = true;
6885      this._setTimeout(() => {
6886        if (this._isHovered) {
6887          this.show();
6888        }
6889      }, this._config.delay.show);
6890    }
6891    _leave() {
6892      if (this._isWithActiveTrigger()) {
6893        return;
6894      }
6895      this._isHovered = false;
vendor: 28,535 bytes, lines 6896-7807
6896      this._setTimeout(() => {
6897        if (!this._isHovered) {
6898          this.hide();
6899        }
6900      }, this._config.delay.hide);
6901    }
6902    _setTimeout(handler, timeout) {
6903      clearTimeout(this._timeout);
6904      this._timeout = setTimeout(handler, timeout);
6905    }
6906    _isWithActiveTrigger() {
6907      return Object.values(this._activeTrigger).includes(true);
6908    }
6909    _getConfig(config) {
6910      const dataAttributes = Manipulator.getDataAttributes(this._element);
6911      for (const dataAttribute of Object.keys(dataAttributes)) {
6912        if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
6913          delete dataAttributes[dataAttribute];
6914        }
6915      }
6916      config = {
6917        ...dataAttributes,
6918        ...(typeof config === 'object' && config ? config : {})
6919      };
6920      config = this._mergeConfigObj(config);
6921      config = this._configAfterMerge(config);
6922      this._typeCheckConfig(config);
6923      return config;
6924    }
6925    _configAfterMerge(config) {
6926      config.container = config.container === false ? document.body : getElement(config.container);
6927      if (typeof config.delay === 'number') {
6928        config.delay = {
6929          show: config.delay,
6930          hide: config.delay
6931        };
6932      }
6933      if (typeof config.title === 'number') {
6934        config.title = config.title.toString();
6935      }
6936      if (typeof config.content === 'number') {
6937        config.content = config.content.toString();
6938      }
6939      return config;
6940    }
6941    _getDelegateConfig() {
6942      const config = {};
6943      for (const [key, value] of Object.entries(this._config)) {
6944        if (this.constructor.Default[key] !== value) {
6945          config[key] = value;
6946        }
6947      }
6948      config.selector = false;
6949      config.trigger = 'manual';
6950
6951      // In the future can be replaced with:
6952      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
6953      // `Object.fromEntries(keysWithDifferentValues)`
6954      return config;
6955    }
6956    _disposePopper() {
6957      if (this._popper) {
6958        this._popper.destroy();
6959        this._popper = null;
6960      }
6961      if (this.tip) {
6962        this.tip.remove();
6963        this.tip = null;
6964      }
6965    }
6966
6967    // Static
6968    static jQueryInterface(config) {
6969      return this.each(function () {
6970        const data = Tooltip.getOrCreateInstance(this, config);
6971        if (typeof config !== 'string') {
6972          return;
6973        }
6974        if (typeof data[config] === 'undefined') {
6975          throw new TypeError(`No method named "${config}"`);
6976        }
6977        data[config]();
6978      });
6979    }
6980  }
6981
6982  /**
6983   * jQuery
6984   */
6985
6986  defineJQueryPlugin(Tooltip);
6987
6988  /**
6989   * --------------------------------------------------------------------------
6990   * Bootstrap popover.js
6991   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6992   * --------------------------------------------------------------------------
6993   */
6994
6995
6996  /**
6997   * Constants
6998   */
6999
7000  const NAME$3 = 'popover';
7001  const SELECTOR_TITLE = '.popover-header';
7002  const SELECTOR_CONTENT = '.popover-body';
7003  const Default$2 = {
7004    ...Tooltip.Default,
7005    content: '',
7006    offset: [0, 8],
7007    placement: 'right',
7008    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
7009    trigger: 'click'
7010  };
7011  const DefaultType$2 = {
7012    ...Tooltip.DefaultType,
7013    content: '(null|string|element|function)'
7014  };
7015
7016  /**
7017   * Class definition
7018   */
7019
7020  class Popover extends Tooltip {
7021    // Getters
7022    static get Default() {
7023      return Default$2;
7024    }
7025    static get DefaultType() {
7026      return DefaultType$2;
7027    }
7028    static get NAME() {
7029      return NAME$3;
7030    }
7031
7032    // Overrides
7033    _isWithContent() {
7034      return this._getTitle() || this._getContent();
7035    }
7036
7037    // Private
7038    _getContentForTemplate() {
7039      return {
7040        [SELECTOR_TITLE]: this._getTitle(),
7041        [SELECTOR_CONTENT]: this._getContent()
7042      };
7043    }
7044    _getContent() {
7045      return this._resolvePossibleFunction(this._config.content);
7046    }
7047
7048    // Static
7049    static jQueryInterface(config) {
7050      return this.each(function () {
7051        const data = Popover.getOrCreateInstance(this, config);
7052        if (typeof config !== 'string') {
7053          return;
7054        }
7055        if (typeof data[config] === 'undefined') {
7056          throw new TypeError(`No method named "${config}"`);
7057        }
7058        data[config]();
7059      });
7060    }
7061  }
7062
7063  /**
7064   * jQuery
7065   */
7066
7067  defineJQueryPlugin(Popover);
7068
7069  /**
7070   * --------------------------------------------------------------------------
7071   * Bootstrap scrollspy.js
7072   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7073   * --------------------------------------------------------------------------
7074   */
7075
7076
7077  /**
7078   * Constants
7079   */
7080
7081  const NAME$2 = 'scrollspy';
7082  const DATA_KEY$2 = 'bs.scrollspy';
7083  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
7084  const DATA_API_KEY = '.data-api';
7085  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
7086  const EVENT_CLICK = `click${EVENT_KEY$2}`;
7087  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
7088  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
7089  const CLASS_NAME_ACTIVE$1 = 'active';
7090  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
7091  const SELECTOR_TARGET_LINKS = '[href]';
7092  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
7093  const SELECTOR_NAV_LINKS = '.nav-link';
7094  const SELECTOR_NAV_ITEMS = '.nav-item';
7095  const SELECTOR_LIST_ITEMS = '.list-group-item';
7096  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
7097  const SELECTOR_DROPDOWN = '.dropdown';
7098  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
7099  const Default$1 = {
7100    offset: null,
7101    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
7102    rootMargin: '0px 0px -25%',
7103    smoothScroll: false,
7104    target: null,
7105    threshold: [0.1, 0.5, 1]
7106  };
7107  const DefaultType$1 = {
7108    offset: '(number|null)',
7109    // TODO v6 @deprecated, keep it for backwards compatibility reasons
7110    rootMargin: 'string',
7111    smoothScroll: 'boolean',
7112    target: 'element',
7113    threshold: 'array'
7114  };
7115
7116  /**
7117   * Class definition
7118   */
7119
7120  class ScrollSpy extends BaseComponent {
7121    constructor(element, config) {
7122      super(element, config);
7123
7124      // this._element is the observablesContainer and config.target the menu links wrapper
7125      this._targetLinks = new Map();
7126      this._observableSections = new Map();
7127      this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
7128      this._activeTarget = null;
7129      this._observer = null;
7130      this._previousScrollData = {
7131        visibleEntryTop: 0,
7132        parentScrollTop: 0
7133      };
7134      this.refresh(); // initialize
7135    }
7136
7137    // Getters
7138    static get Default() {
7139      return Default$1;
7140    }
7141    static get DefaultType() {
7142      return DefaultType$1;
7143    }
7144    static get NAME() {
7145      return NAME$2;
7146    }
7147
7148    // Public
7149    refresh() {
7150      this._initializeTargetsAndObservables();
7151      this._maybeEnableSmoothScroll();
7152      if (this._observer) {
7153        this._observer.disconnect();
7154      } else {
7155        this._observer = this._getNewObserver();
7156      }
7157      for (const section of this._observableSections.values()) {
7158        this._observer.observe(section);
7159      }
7160    }
7161    dispose() {
7162      this._observer.disconnect();
7163      super.dispose();
7164    }
7165
7166    // Private
7167    _configAfterMerge(config) {
7168      // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
7169      config.target = getElement(config.target) || document.body;
7170
7171      // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
7172      config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
7173      if (typeof config.threshold === 'string') {
7174        config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
7175      }
7176      return config;
7177    }
7178    _maybeEnableSmoothScroll() {
7179      if (!this._config.smoothScroll) {
7180        return;
7181      }
7182
7183      // unregister any previous listeners
7184      EventHandler.off(this._config.target, EVENT_CLICK);
7185      EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
7186        const observableSection = this._observableSections.get(event.target.hash);
7187        if (observableSection) {
7188          event.preventDefault();
7189          const root = this._rootElement || window;
7190          const height = observableSection.offsetTop - this._element.offsetTop;
7191          if (root.scrollTo) {
7192            root.scrollTo({
7193              top: height,
7194              behavior: 'smooth'
7195            });
7196            return;
7197          }
7198
7199          // Chrome 60 doesn't support `scrollTo`
7200          root.scrollTop = height;
7201        }
7202      });
7203    }
7204    _getNewObserver() {
7205      const options = {
7206        root: this._rootElement,
7207        threshold: this._config.threshold,
7208        rootMargin: this._config.rootMargin
7209      };
7210      return new IntersectionObserver(entries => this._observerCallback(entries), options);
7211    }
7212
7213    // The logic of selection
7214    _observerCallback(entries) {
7215      const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
7216      const activate = entry => {
7217        this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
7218        this._process(targetElement(entry));
7219      };
7220      const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
7221      const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
7222      this._previousScrollData.parentScrollTop = parentScrollTop;
7223      for (const entry of entries) {
7224        if (!entry.isIntersecting) {
7225          this._activeTarget = null;
7226          this._clearActiveClass(targetElement(entry));
7227          continue;
7228        }
7229        const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;
7230        // if we are scrolling down, pick the bigger offsetTop
7231        if (userScrollsDown && entryIsLowerThanPrevious) {
7232          activate(entry);
7233          // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
7234          if (!parentScrollTop) {
7235            return;
7236          }
7237          continue;
7238        }
7239
7240        // if we are scrolling up, pick the smallest offsetTop
7241        if (!userScrollsDown && !entryIsLowerThanPrevious) {
7242          activate(entry);
7243        }
7244      }
7245    }
7246    _initializeTargetsAndObservables() {
7247      this._targetLinks = new Map();
7248      this._observableSections = new Map();
7249      const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
7250      for (const anchor of targetLinks) {
7251        // ensure that the anchor has an id and is not disabled
7252        if (!anchor.hash || isDisabled(anchor)) {
7253          continue;
7254        }
7255        const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);
7256
7257        // ensure that the observableSection exists & is visible
7258        if (isVisible(observableSection)) {
7259          this._targetLinks.set(decodeURI(anchor.hash), anchor);
7260          this._observableSections.set(anchor.hash, observableSection);
7261        }
7262      }
7263    }
7264    _process(target) {
7265      if (this._activeTarget === target) {
7266        return;
7267      }
7268      this._clearActiveClass(this._config.target);
7269      this._activeTarget = target;
7270      target.classList.add(CLASS_NAME_ACTIVE$1);
7271      this._activateParents(target);
7272      EventHandler.trigger(this._element, EVENT_ACTIVATE, {
7273        relatedTarget: target
7274      });
7275    }
7276    _activateParents(target) {
7277      // Activate dropdown parents
7278      if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
7279        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
7280        return;
7281      }
7282      for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
7283        // Set triggered links parents as active
7284        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
7285        for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
7286          item.classList.add(CLASS_NAME_ACTIVE$1);
7287        }
7288      }
7289    }
7290    _clearActiveClass(parent) {
7291      parent.classList.remove(CLASS_NAME_ACTIVE$1);
7292      const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
7293      for (const node of activeNodes) {
7294        node.classList.remove(CLASS_NAME_ACTIVE$1);
7295      }
7296    }
7297
7298    // Static
7299    static jQueryInterface(config) {
7300      return this.each(function () {
7301        const data = ScrollSpy.getOrCreateInstance(this, config);
7302        if (typeof config !== 'string') {
7303          return;
7304        }
7305        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
7306          throw new TypeError(`No method named "${config}"`);
7307        }
7308        data[config]();
7309      });
7310    }
7311  }
7312
7313  /**
7314   * Data API implementation
7315   */
7316
7317  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
7318    for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
7319      ScrollSpy.getOrCreateInstance(spy);
7320    }
7321  });
7322
7323  /**
7324   * jQuery
7325   */
7326
7327  defineJQueryPlugin(ScrollSpy);
7328
7329  /**
7330   * --------------------------------------------------------------------------
7331   * Bootstrap tab.js
7332   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7333   * --------------------------------------------------------------------------
7334   */
7335
7336
7337  /**
7338   * Constants
7339   */
7340
7341  const NAME$1 = 'tab';
7342  const DATA_KEY$1 = 'bs.tab';
7343  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
7344  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
7345  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
7346  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
7347  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
7348  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
7349  const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
7350  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
7351  const ARROW_LEFT_KEY = 'ArrowLeft';
7352  const ARROW_RIGHT_KEY = 'ArrowRight';
7353  const ARROW_UP_KEY = 'ArrowUp';
7354  const ARROW_DOWN_KEY = 'ArrowDown';
7355  const HOME_KEY = 'Home';
7356  const END_KEY = 'End';
7357  const CLASS_NAME_ACTIVE = 'active';
7358  const CLASS_NAME_FADE$1 = 'fade';
7359  const CLASS_NAME_SHOW$1 = 'show';
7360  const CLASS_DROPDOWN = 'dropdown';
7361  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
7362  const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
7363  const NOT_SELECTOR_DROPDOWN_TOGGLE = `:not(${SELECTOR_DROPDOWN_TOGGLE})`;
7364  const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
7365  const SELECTOR_OUTER = '.nav-item, .list-group-item';
7366  const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
7367  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // TODO: could only be `tab` in v6
7368  const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
7369  const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
7370
7371  /**
7372   * Class definition
7373   */
7374
7375  class Tab extends BaseComponent {
7376    constructor(element) {
7377      super(element);
7378      this._parent = this._element.closest(SELECTOR_TAB_PANEL);
7379      if (!this._parent) {
7380        return;
7381        // TODO: should throw exception in v6
7382        // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
7383      }
7384
7385      // Set up initial aria attributes
7386      this._setInitialAttributes(this._parent, this._getChildren());
7387      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
7388    }
7389
7390    // Getters
7391    static get NAME() {
7392      return NAME$1;
7393    }
7394
7395    // Public
7396    show() {
7397      // Shows this elem and deactivate the active sibling if exists
7398      const innerElem = this._element;
7399      if (this._elemIsActive(innerElem)) {
7400        return;
7401      }
7402
7403      // Search for active tab on same parent to deactivate it
7404      const active = this._getActiveElem();
7405      const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
7406        relatedTarget: innerElem
7407      }) : null;
7408      const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
7409        relatedTarget: active
7410      });
7411      if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
7412        return;
7413      }
7414      this._deactivate(active, innerElem);
7415      this._activate(innerElem, active);
7416    }
7417
7418    // Private
7419    _activate(element, relatedElem) {
7420      if (!element) {
7421        return;
7422      }
7423      element.classList.add(CLASS_NAME_ACTIVE);
7424      this._activate(SelectorEngine.getElementFromSelector(element)); // Search and activate/show the proper section
7425
7426      const complete = () => {
7427        if (element.getAttribute('role') !== 'tab') {
7428          element.classList.add(CLASS_NAME_SHOW$1);
7429          return;
7430        }
7431        element.removeAttribute('tabindex');
7432        element.setAttribute('aria-selected', true);
7433        this._toggleDropDown(element, true);
7434        EventHandler.trigger(element, EVENT_SHOWN$1, {
7435          relatedTarget: relatedElem
7436        });
7437      };
7438      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
7439    }
7440    _deactivate(element, relatedElem) {
7441      if (!element) {
7442        return;
7443      }
7444      element.classList.remove(CLASS_NAME_ACTIVE);
7445      element.blur();
7446      this._deactivate(SelectorEngine.getElementFromSelector(element)); // Search and deactivate the shown section too
7447
7448      const complete = () => {
7449        if (element.getAttribute('role') !== 'tab') {
7450          element.classList.remove(CLASS_NAME_SHOW$1);
7451          return;
7452        }
7453        element.setAttribute('aria-selected', false);
7454        element.setAttribute('tabindex', '-1');
7455        this._toggleDropDown(element, false);
7456        EventHandler.trigger(element, EVENT_HIDDEN$1, {
7457          relatedTarget: relatedElem
7458        });
7459      };
7460      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
7461    }
7462    _keydown(event) {
7463      if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key)) {
7464        return;
7465      }
7466      event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
7467      event.preventDefault();
7468      const children = this._getChildren().filter(element => !isDisabled(element));
7469      let nextActiveElement;
7470      if ([HOME_KEY, END_KEY].includes(event.key)) {
7471        nextActiveElement = children[event.key === HOME_KEY ? 0 : children.length - 1];
7472      } else {
7473        const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
7474        nextActiveElement = getNextActiveElement(children, event.target, isNext, true);
7475      }
7476      if (nextActiveElement) {
7477        nextActiveElement.focus({
7478          preventScroll: true
7479        });
7480        Tab.getOrCreateInstance(nextActiveElement).show();
7481      }
7482    }
7483    _getChildren() {
7484      // collection of inner elements
7485      return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
7486    }
7487    _getActiveElem() {
7488      return this._getChildren().find(child => this._elemIsActive(child)) || null;
7489    }
7490    _setInitialAttributes(parent, children) {
7491      this._setAttributeIfNotExists(parent, 'role', 'tablist');
7492      for (const child of children) {
7493        this._setInitialAttributesOnChild(child);
7494      }
7495    }
7496    _setInitialAttributesOnChild(child) {
7497      child = this._getInnerElement(child);
7498      const isActive = this._elemIsActive(child);
7499      const outerElem = this._getOuterElement(child);
7500      child.setAttribute('aria-selected', isActive);
7501      if (outerElem !== child) {
7502        this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
7503      }
7504      if (!isActive) {
7505        child.setAttribute('tabindex', '-1');
7506      }
7507      this._setAttributeIfNotExists(child, 'role', 'tab');
7508
7509      // set attributes to the related panel too
7510      this._setInitialAttributesOnTargetPanel(child);
7511    }
7512    _setInitialAttributesOnTargetPanel(child) {
7513      const target = SelectorEngine.getElementFromSelector(child);
7514      if (!target) {
7515        return;
7516      }
7517      this._setAttributeIfNotExists(target, 'role', 'tabpanel');
7518      if (child.id) {
7519        this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`);
7520      }
7521    }
7522    _toggleDropDown(element, open) {
7523      const outerElem = this._getOuterElement(element);
7524      if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
7525        return;
7526      }
7527      const toggle = (selector, className) => {
7528        const element = SelectorEngine.findOne(selector, outerElem);
7529        if (element) {
7530          element.classList.toggle(className, open);
7531        }
7532      };
7533      toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
7534      toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
7535      outerElem.setAttribute('aria-expanded', open);
7536    }
7537    _setAttributeIfNotExists(element, attribute, value) {
7538      if (!element.hasAttribute(attribute)) {
7539        element.setAttribute(attribute, value);
7540      }
7541    }
7542    _elemIsActive(elem) {
7543      return elem.classList.contains(CLASS_NAME_ACTIVE);
7544    }
7545
7546    // Try to get the inner element (usually the .nav-link)
7547    _getInnerElement(elem) {
7548      return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
7549    }
7550
7551    // Try to get the outer element (usually the .nav-item)
7552    _getOuterElement(elem) {
7553      return elem.closest(SELECTOR_OUTER) || elem;
7554    }
7555
7556    // Static
7557    static jQueryInterface(config) {
7558      return this.each(function () {
7559        const data = Tab.getOrCreateInstance(this);
7560        if (typeof config !== 'string') {
7561          return;
7562        }
7563        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
7564          throw new TypeError(`No method named "${config}"`);
7565        }
7566        data[config]();
7567      });
7568    }
7569  }
7570
7571  /**
7572   * Data API implementation
7573   */
7574
7575  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
7576    if (['A', 'AREA'].includes(this.tagName)) {
7577      event.preventDefault();
7578    }
7579    if (isDisabled(this)) {
7580      return;
7581    }
7582    Tab.getOrCreateInstance(this).show();
7583  });
7584
7585  /**
7586   * Initialize on focus
7587   */
7588  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
7589    for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
7590      Tab.getOrCreateInstance(element);
7591    }
7592  });
7593  /**
7594   * jQuery
7595   */
7596
7597  defineJQueryPlugin(Tab);
7598
7599  /**
7600   * --------------------------------------------------------------------------
7601   * Bootstrap toast.js
7602   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7603   * --------------------------------------------------------------------------
7604   */
7605
7606
7607  /**
7608   * Constants
7609   */
7610
7611  const NAME = 'toast';
7612  const DATA_KEY = 'bs.toast';
7613  const EVENT_KEY = `.${DATA_KEY}`;
7614  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
7615  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
7616  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
7617  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
7618  const EVENT_HIDE = `hide${EVENT_KEY}`;
7619  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
7620  const EVENT_SHOW = `show${EVENT_KEY}`;
7621  const EVENT_SHOWN = `shown${EVENT_KEY}`;
7622  const CLASS_NAME_FADE = 'fade';
7623  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
7624  const CLASS_NAME_SHOW = 'show';
7625  const CLASS_NAME_SHOWING = 'showing';
7626  const DefaultType = {
7627    animation: 'boolean',
7628    autohide: 'boolean',
7629    delay: 'number'
7630  };
7631  const Default = {
7632    animation: true,
7633    autohide: true,
7634    delay: 5000
7635  };
7636
7637  /**
7638   * Class definition
7639   */
7640
7641  class Toast extends BaseComponent {
7642    constructor(element, config) {
7643      super(element, config);
7644      this._timeout = null;
7645      this._hasMouseInteraction = false;
7646      this._hasKeyboardInteraction = false;
7647      this._setListeners();
7648    }
7649
7650    // Getters
7651    static get Default() {
7652      return Default;
7653    }
7654    static get DefaultType() {
7655      return DefaultType;
7656    }
7657    static get NAME() {
7658      return NAME;
7659    }
7660
7661    // Public
7662    show() {
7663      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
7664      if (showEvent.defaultPrevented) {
7665        return;
7666      }
7667      this._clearTimeout();
7668      if (this._config.animation) {
7669        this._element.classList.add(CLASS_NAME_FADE);
7670      }
7671      const complete = () => {
7672        this._element.classList.remove(CLASS_NAME_SHOWING);
7673        EventHandler.trigger(this._element, EVENT_SHOWN);
7674        this._maybeScheduleHide();
7675      };
7676      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
7677      reflow(this._element);
7678      this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
7679      this._queueCallback(complete, this._element, this._config.animation);
7680    }
7681    hide() {
7682      if (!this.isShown()) {
7683        return;
7684      }
7685      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
7686      if (hideEvent.defaultPrevented) {
7687        return;
7688      }
7689      const complete = () => {
7690        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
7691        this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
7692        EventHandler.trigger(this._element, EVENT_HIDDEN);
7693      };
7694      this._element.classList.add(CLASS_NAME_SHOWING);
7695      this._queueCallback(complete, this._element, this._config.animation);
7696    }
7697    dispose() {
7698      this._clearTimeout();
7699      if (this.isShown()) {
7700        this._element.classList.remove(CLASS_NAME_SHOW);
7701      }
7702      super.dispose();
7703    }
7704    isShown() {
7705      return this._element.classList.contains(CLASS_NAME_SHOW);
7706    }
7707
7708    // Private
7709    _maybeScheduleHide() {
7710      if (!this._config.autohide) {
7711        return;
7712      }
7713      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
7714        return;
7715      }
7716      this._timeout = setTimeout(() => {
7717        this.hide();
7718      }, this._config.delay);
7719    }
7720    _onInteraction(event, isInteracting) {
7721      switch (event.type) {
7722        case 'mouseover':
7723        case 'mouseout':
7724          {
7725            this._hasMouseInteraction = isInteracting;
7726            break;
7727          }
7728        case 'focusin':
7729        case 'focusout':
7730          {
7731            this._hasKeyboardInteraction = isInteracting;
7732            break;
7733          }
7734      }
7735      if (isInteracting) {
7736        this._clearTimeout();
7737        return;
7738      }
7739      const nextElement = event.relatedTarget;
7740      if (this._element === nextElement || this._element.contains(nextElement)) {
7741        return;
7742      }
7743      this._maybeScheduleHide();
7744    }
7745    _setListeners() {
7746      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
7747      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
7748      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
7749      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
7750    }
7751    _clearTimeout() {
7752      clearTimeout(this._timeout);
7753      this._timeout = null;
7754    }
7755
7756    // Static
7757    static jQueryInterface(config) {
7758      return this.each(function () {
7759        const data = Toast.getOrCreateInstance(this, config);
7760        if (typeof config === 'string') {
7761          if (typeof data[config] === 'undefined') {
7762            throw new TypeError(`No method named "${config}"`);
7763          }
7764          data[config](this);
7765        }
7766      });
7767    }
7768  }
7769
7770  /**
7771   * Data API implementation
7772   */
7773
7774  enableDismissTrigger(Toast);
7775
7776  /**
7777   * jQuery
7778   */
7779
7780  defineJQueryPlugin(Toast);
7781
7782  /**
7783   * --------------------------------------------------------------------------
7784   * Bootstrap index.umd.js
7785   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7786   * --------------------------------------------------------------------------
7787   */
7788
7789  const index_umd = {
7790    Alert,
7791    Button,
7792    Carousel,
7793    Collapse,
7794    Dropdown,
7795    Modal,
7796    Offcanvas,
7797    Popover,
7798    ScrollSpy,
7799    Tab,
7800    Toast,
7801    Tooltip
7802  };
7803
7804  return index_umd;
7805
7806}));
7807//# sourceMappingURL=bootstrap.
7807bundle.js.map
7808
7809/* End */
7810;
7811; /* Start:"a:4:{s:4:"full";s:65:"/local/templates/main_template/js/ResizeSensor.js?175862869912911";s:6:"source";s:49:"/local/templates/main_template/js/ResizeSensor.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
7812'use strict';
7813
7814/**
7815 * Copyright Marc J. Schmidt. See the LICENSE file at the top-level
7816 * directory of this distribution and at
7817 * https://github.com/marcj/css-element-queries/blob/master/LICENSE.
7818 */
7819(function (root, factory) {
7820    if (typeof define === "function" && define.amd) {
7821        define(factory);
7822    } else if (typeof exports === "object") {
7823        module.exports = factory();
7824    } else {
7825        root.ResizeSensor = factory();
7826    }
7827}(typeof window !== 'undefined' ? window : this, function () {
7828
7829    // Make sure it does not throw in a SSR (Server Side Rendering) situation
7830    if (typeof window === "undefined") {
7831        return null;
7832    }
7833    // https://github.com/Semantic-Org/Semantic-UI/issues/3855
7834    // https://github.com/marcj/css-element-queries/issues/257
7835    var globalWindow = typeof window != 'undefined' && window.Math == Math
7836        ? window
7837        : typeof self != 'undefined' && self.Math == Math
7838            ? self
7839            : Function('return this')();
7840    // Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.
7841    // In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and
7842    // would generate too many unnecessary events.
7843    var requestAnimationFrame = globalWindow.requestAnimationFrame ||
7844        globalWindow.mozRequestAnimationFrame ||
7845        globalWindow.webkitRequestAnimationFrame ||
7846        function (fn) {
7847            return globalWindow.setTimeout(fn, 20);
7848        };
7849
7850    var cancelAnimationFrame = globalWindow.cancelAnimationFrame ||
7851        globalWindow.mozCancelAnimationFrame ||
7852        globalWindow.webkitCancelAnimationFrame ||
7853        function (timer) {
7854            globalWindow.clearTimeout(timer);
7855        };
7856
7857    /**
7858     * Iterate over each of the provided element(s).
7859     *
7860     * @param {HTMLElement|HTMLElement[]} elements
7861     * @param {Function}                  callback
7862     */
7863    function forEachElement(elements, callback){
7864        var elementsType = Object.prototype.toString.call(elements);
7865        var isCollectionTyped = ('[object Array]' === elementsType
7866            || ('[object NodeList]' === elementsType)
7867            || ('[object HTMLCollection]' === elementsType)
7868            || ('[object Object]' === elementsType)
7869            || ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery
7870            || ('undefined' !== typeof Elements && elements instanceof Elements) //mootools
7871        );
7872        var i = 0, j = elements.length;
7873        if (isCollectionTyped) {
7874            for (; i < j; i++) {
7875                callback(elements[i]);
7876            }
7877        } else {
7878            callback(elements);
7879        }
7880    }
7881
7882    /**
7883    * Get element size
7884    * @param {HTMLElement} element
7885    * @returns {Object} {width, height}
7886    */
7887    function getElementSize(element) {
7888        if (!element.getBoundingClientRect) {
7889            return {
7890                width: element.offsetWidth,
7891                height: element.offsetHeight
7892            }
7893        }
7894
7895        var rect = element.getBoundingClientRect();
7896        return {
7897            width: Math.round(rect.width),
7898            height: Math.round(rect.height)
7899        }
7900    }
7901
7902    /**
7903     * Apply CSS styles to element.
7904     *
7905     * @param {HTMLElement} element
7906     * @param {Object} style
7907     */
7908    function setStyle(element, style) {
7909        Object.keys(style).forEach(function(key) {
7910            element.style[key] = style[key];
7911        });
7912    }
7913
7914    /**
7915     * Class for dimension change detection.
7916     *
7917     * @param {Element|Element[]|Elements|jQuery} element
7918     * @param {Function} callback
7919     *
7920     * @constructor
7921     */
7922    var ResizeSensor = function(element, callback) {
7923        //Is used when checking in reset() only for invisible elements
7924        var lastAnimationFrameForInvisibleCheck = 0;
7925
7926        /**
7927         *
7928         * @constructor
7929         */
7930        function EventQueue() {
7931            var q = [];
7932            this.add = function(ev) {
7933                q.push(ev);
7934            };
7935
7936            var i, j;
7937            this.call = function(sizeInfo) {
7938                for (i = 0, j = q.length; i < j; i++) {
7939                    q[i].call(this, sizeInfo);
7940                }
7941            };
7942
7943            this.remove = function(ev) {
7944                var newQueue = [];
7945                for(i = 0, j = q.length; i < j; i++) {
7946                    if(q[i] !== ev) newQueue.push(q[i]);
7947                }
7948                q = newQueue;
7949            };
7950
7951            this.length = function() {
7952                return q.length;
7953            }
7954        }
7955
7956        /**
7957         *
7958         * @param {HTMLElement} element
7959         * @param {Function}    resized
7960         */
7961        function attachResizeEvent(element, resized) {
7962            if (!element) return;
7963            if (element.resizedAttached) {
7964                element.resizedAttached.add(resized);
7965                return;
7966            }
7967
7968            element.resizedAttached = new EventQueue();
7969            element.resizedAttached.add(resized);
7970
7971            element.resizeSensor = document.createElement('div');
7972            element.resizeSensor.dir = 'ltr';
7973            element.resizeSensor.className = 'resize-sensor';
7974
7975            var style = {
7976                pointerEvents: 'none',
7977                position: 'absolute',
7978                left: '0px',
7979                top: '0px',
7980                right: '0px',
7981                bottom: '0px',
7982                overflow: 'hidden',
7983                zIndex: '-1',
7984                visibility: 'hidden',
7985                maxWidth: '100%'
7986            };
7987            var styleChild = {
7988                position: 'absolute',
7989                left: '0px',
7990                top: '0px',
7991                transition: '0s',
7992            };
7993
7994            setStyle(element.resizeSensor, style);
7995
7996            var expand = document.createElement('div');
7997            expand.className = 'resize-sensor-expand';
7998            setStyle(expand, style);
7999
8000            var expandChild = document.createElement('div');
8001            setStyle(expandChild, styleChild);
8002            expand.appendChild(expandChild);
8003
8004            var shrink = document.createElement('div');
8005            shrink.className = 'resize-sensor-shrink';
8006            setStyle(shrink, style);
8007
8008            var shrinkChild = document.createElement('div');
8009            setStyle(shrinkChild, styleChild);
8010            setStyle(shrinkChild, { width: '200%', height: '200%' });
8011            shrink.appendChild(shrinkChild);
8012
8013            element.resizeSensor.appendChild(expand);
8014            element.resizeSensor.appendChild(shrink);
8015            element.appendChild(element.resizeSensor);
8016
8017            var computedStyle = window.getComputedStyle(element);
8018            var position = computedStyle ? computedStyle.getPropertyValue('position') : null;
8019            if ('absolute' !== position && 'relative' !== position && 'fixed' !== position && 'sticky' !== position) {
8020                element.style.position = 'relative';
8021            }
8022
8023            var dirty = false;
8024
8025            //last request animation frame id used in onscroll event
8026            var rafId = 0;
8027            var size = getElementSize(element);
8028            var lastWidth = 0;
8029            var lastHeight = 0;
8030            var initialHiddenCheck = true;
8031            lastAnimationFrameForInvisibleCheck = 0;
8032
8033            var resetExpandShrink = function () {
8034                var width = element.offsetWidth;
8035                var height = element.offsetHeight;
8036
8037                expandChild.style.width = (width + 10) + 'px';
8038                expandChild.style.height = (height + 10) + 'px';
8039
8040                expand.scrollLeft = width + 10;
8041                expand.scrollTop = height + 10;
8042
8043                shrink.scrollLeft = width + 10;
8044                shrink.scrollTop = height + 10;
8045            };
8046
8047            var reset = function() {
8048                // Check if element is hidden
8049                if (initialHiddenCheck) {
8050                    var invisible = element.offsetWidth === 0 && element.offsetHeight === 0;
8051                    if (invisible) {
8052                        // Check in next frame
8053                        if (!lastAnimationFrameForInvisibleCheck){
8054                            lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){
8055                                lastAnimationFrameForInvisibleCheck = 0;
8056                                reset();
8057                            });
8058                        }
8059
8060                        return;
8061                    } else {
8062                        // Stop checking
8063                        initialHiddenCheck = false;
8064                    }
8065                }
8066
8067                resetExpandShrink();
8068            };
8069            element.resizeSensor.resetSensor = reset;
8070
8071            var onResized = function() {
8072                rafId = 0;
8073
8074                if (!dirty) return;
8075
8076                lastWidth = size.width;
8077                lastHeight = size.height;
8078
8079                if (element.resizedAttached) {
8080                    element.resizedAttached.call(size);
8081                }
8082            };
8083
8084            var onScroll = function() {
8085                size = getElementSize(element);
8086                dirty = size.width !== lastWidth || size.height !== lastHeight;
8087
8088                if (dirty && !rafId) {
8089                    rafId = requestAnimationFrame(onResized);
8090                }
8091
8092                reset();
8093            };
8094
8095            var addEvent = function(el, name, cb) {
8096                if (el.attachEvent) {
8097                    el.attachEvent('on' + name, cb);
8098                } else {
8099                    el.addEventListener(name, cb);
8100                }
8101            };
8102
8103            addEvent(expand, 'scroll', onScroll);
8104            addEvent(shrink, 'scroll', onScroll);
8105
8106            // Fix for custom Elements and invisible elements
8107            lastAnimationFrameForInvisibleCheck = requestAnimationFrame(function(){
8108                lastAnimationFrameForInvisibleCheck = 0;
8109                reset();
8110            });
8111        }
8112
8113        forEachElement(element, function(elem){
8114            attachResizeEvent(elem, callback);
8115        });
8116
8117        this.detach = function(ev) {
8118            // clean up the unfinished animation frame to prevent a potential endless requestAnimationFrame of reset
8119            if (lastAnimationFrameForInvisibleCheck) {
8120                cancelAnimationFrame(lastAnimationFrameForInvisibleCheck);
8121                lastAnimationFrameForInvisibleCheck = 0;
8122            }
8123            ResizeSensor.detach(element, ev);
8124        };
8125
8126        this.reset = function() {
8127            //To prevent invoking element.resizeSensor.resetSensor if it's undefined
8128            if (element.resizeSensor.resetSensor) {
8129                element.resizeSensor.resetSensor();
8130            }
8131        };
8132    };
8133
8134    ResizeSensor.reset = function(element) {
8135        forEachElement(element, function(elem){
8136            //To prevent invoking element.resizeSensor.resetSensor if it's undefined
8137            if (element.resizeSensor.resetSensor) {
8138                elem.resizeSensor.resetSensor();
8139            }
8140        });
8141    };
8142
8143    ResizeSensor.detach = function(element, ev) {
8144        forEachElement(element, function(elem){
8145            if (!elem) return;
8146            if(elem.resizedAttached && typeof ev === "function"){
8147                elem.resizedAttached.remove(ev);
8148                if(elem.resizedAttached.length()) return;
8149            }
8150            if (elem.resizeSensor) {
8151                if (elem.contains(elem.resizeSensor)) {
8152                    elem.removeChild(elem.resizeSensor);
8153                }
8154                delete elem.resizeSensor;
8155                delete elem.resizedAttached;
8156            }
8157        });
8158    };
8159
8160    if (typeof MutationObserver !== "undefined") {
8161        var observer = new MutationObserver(function (mutations) {
8162            for (var i in mutations) {
8163                if (mutations.hasOwnProperty(i)) {
8164                    var items = mutations[i].addedNodes;
8165                    for (var j = 0; j < items.length; j++) {
8166                        if (items[j].resizeSensor) {
8167                            ResizeSensor.reset(items[j]);
8168                        }
8169                    }
8170                }
8171            }
8172        });
8173
8174        document.addEventListener("DOMContentLoaded", function (event) {
8175            observer.observe(document.body, {
8176                childList: true,
8177                subtree: true,
8178            });
8179        });
8180    }
8181    return ResizeSensor;
8182}));
8183/* End */
8184;
8185; /* Start:"a:4:{s:4:"full";s:66:"/local/templates/main_template/js/stickySidebar.js?175862869935376";s:6:"source";s:50:"/local/templates/main_template/js/stickySidebar.js";s:3:"min";s:0:"";s:3:"map";s:0:"";}"*/
8186(function (global, factory) {
8187    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
8188        typeof define === 'function' && define.amd ? define(['exports'], factory) :
8189            (factory((global.StickySidebar = {})));
8190}(this, (function (exports) { 'use strict';
8191
8192    var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
8193
8194
8195
8196    function unwrapExports (x) {
8197        return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
8198    }
8199
8200    function createCommonjsModule(fn, module) {
8201        return module = { exports: {} }, fn(module, module.exports), module.exports;
8202    }
8203
8204    var stickySidebar = createCommonjsModule(function (module, exports
8204) {
8205        (function (global, factory) {
8206            if (typeof undefined === "function" && undefined.amd) {
8207                undefined(['exports'], factory);
8208            } else {
8209                factory(exports);
8210            }
8211        })(commonjsGlobal, function (exports) {
8212            Object.defineProperty(exports, "__esModule", {
8213                value: true
8214            });
8215
8216            function _classCallCheck(instance, Constructor) {
8217                if (!(instance instanceof Constructor)) {
8218                    throw new TypeError("Cannot call a class as a function");
8219                }
8220            }
8221
8222            var _createClass = function () {
8223                function defineProperties(target, props) {
8224                    for (var i = 0; i < props.length; i++) {
8225                        var descriptor = props[i];
8226                        descriptor.enumerable = descriptor.enumerable || false;
8227                        descriptor.configurable = true;
8228                        if ("value" in descriptor) descriptor.writable = true;
8229                        Object.defineProperty(target, descriptor.key, descriptor);
8230                    }
8231                }
8232
8233                return function (Constructor, protoProps, staticProps) {
8234                    if (protoProps) defineProperties(Constructor.prototype, protoProps);
8235                    if (staticProps) defineProperties(Constructor, staticProps);
8236                    return Constructor;
8237                };
8238            }();
8239
8240            /**
8241             * Sticky Sidebar JavaScript Plugin.
8242             * @version 3.3.4
8243             * @author Ahmed Bouhuolia <[email protected]>
8244             * @license The MIT License (MIT)
8245             */
8246            var StickySidebar = function () {
8247
8248                // ---------------------------------
8249                // # Define Constants
8250                // ---------------------------------
8251                //
8252                var EVENT_KEY = '.stickySidebar';
8253                var DEFAULTS = {
8254                    /**
8255                     * Additional top spacing of the element when it becomes sticky.
8256                     * @type {Numeric|Function}
8257                     */
8258                    topSpacing: 0,
8259
8260                    /**
8261                     * Additional bottom spacing of the element when it becomes sticky.
8262                     * @type {Numeric|Function}
8263                     */
8264                    bottomSpacing: 0,
8265
8266                    /**
8267                     * Container sidebar selector to know what the beginning and end of sticky element.
8268                     * @type {String|False}
8269                     */
8270                    containerSelector: false,
8271
8272                    /**
8273                     * Inner wrapper selector.
8274                     * @type {String}
8275                     */
8276                    innerWrapperSelector: '.inner-wrapper-sticky',
8277
8278                    /**
8279                     * The name of CSS class to apply to elements when they have become stuck.
8280                     * @type {String|False}
8281                     */
8282                    stickyClass: 'is-affixed',
8283
8284                    /**
8285                     * Detect when sidebar and its container change height so re-calculate their dimensions.
8286                     * @type {Boolean}
8287                     */
8288                    resizeSensor: true,
8289
8290                    /**
8291                     * The sidebar returns to its normal position if its width below this value.
8292                     * @type {Numeric}
8293                     */
8294                    minWidth: false
8295                };
8296
8297                // ---------------------------------
8298                // # Class Definition
8299                // ---------------------------------
8300                //
8301                /**
8302                 * Sticky Sidebar Class.
8303                 * @public
8304                 */
8305
8306                var StickySidebar = function () {
8307
8308                    /**
8309                     * Sticky Sidebar Constructor.
8310                     * @constructor
8311                     * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.
8312                     * @param {Object}
8312 options - The options of sticky sidebar.
8313                     */
8314                    function StickySidebar(sidebar) {
8315                        var _this = this;
8316
8317                        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8318
8319                        _classCallCheck(this, StickySidebar);
8320
8321                        this.options = StickySidebar.extend(DEFAULTS, options);
8322
8323                        // Sidebar element query if there's no one, throw error.
8324                        this.sidebar = 'string' === typeof sidebar ? document.querySelector(sidebar) : sidebar;
8325                        if ('undefined' === typeof this.sidebar) throw new Error("There is no specific sidebar element.");
8326
8327                        this.sidebarInner = false;
8328                        if(this.sidebar){
8329                          this.container = this.sidebar.parentElement;
8330                        }
8331
8332                        // Current Affix Type of sidebar element.
8333                        this.affixedType = 'STATIC';
8334                        this.direction = 'down';
8335                        this.support = {
8336                            transform: false,
8337                            transform3d: false
8338                        };
8339
8340                        this._initialized = false;
8341                        this._reStyle = false;
8342                        this._breakpoint = false;
8343
8344                        // Dimensions of sidebar, container and screen viewport.
8345                        this.dimensions = {
8346                            translateY: 0,
8347                            maxTranslateY: 0,
8348                            topSpacing: 0,
8349                            lastTopSpacing: 0,
8350                            bottomSpacing: 0,
8351                            lastBottomSpacing: 0,
8352                            sidebarHeight: 0,
8353                            sidebarWidth: 0,
8354                            containerTop: 0,
8355                            containerHeight: 0,
8356                            viewportHeight: 0,
8357                            viewportTop: 0,
8358                            lastViewportTop: 0
8359                        };
8360
8361                        // Bind event handlers for referencability.
8362                        ['handleEvent'].forEach(function (method) {
8363                            _this[method] = _this[method].bind(_this);
8364                        });
8365
8366                        // Initialize sticky sidebar for first time.
8367                        this.initialize();
8368                    }
8369
8370                    /**
8371                     * Initializes the sticky sidebar by adding inner wrapper, define its container,
8372                     * min-width breakpoint, calculating dimensions, adding helper classes and inline style.
8373                     * @private
8374                     */
8375
8376
8377                    _createClass(StickySidebar, [{
8378                        key: 'initialize',
8379                        value: function initialize() {
8380                            var _this2 = this;
8381
8382                            this._setSupportFeatures();
8383
8384                            // Get sticky sidebar inner wrapper, if not found, will create one.
8385                            if (this.options.innerWrapperSelector && this.sidebar) {
8386                                this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);
8387
8388                                if (null === this.sidebarInner) this.sidebarInner = false;
8389                            }
8390
8391                            if (!this.sidebarInner) {
8392                                var wrapper = document.createElement('div');
8393                                wrapper.setAttribute('class', 'inner-wrapper-sticky');
8394                                this.sidebar.appendChild(wrapper);
8395
8396                                while (this.sidebar.firstChild != wrapper) {
8397                                    wrapper.appendChild(this.sidebar.firstChild);
8398                                }this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');
8399                            }
8400
8401                            // Container wrapper of the sidebar.
8402                            if (this.options.containerSelector) {
8403                                var containers = document.querySelectorAll(this.options.containerSelector);
8404                                containers = Array.prototype.slice.call(containers
8404);
8405
8406                                containers.forEach(function (container, item) {
8407                                    if (!container.contains(_this2.sidebar)) return;
8408                                    _this2.container = container;
8409                                });
8410
8411                                if (!containers.length) throw new Error("The container does not contains on the sidebar.");
8412                            }
8413
8414                            // If top/bottom spacing is not function parse value to integer.
8415                            if ('function' !== typeof this.options.topSpacing) this.options.topSpacing = parseInt(this.options.topSpacing) || 0;
8416
8417                            if ('function' !== typeof this.options.bottomSpacing) this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;
8418
8419                            // Breakdown sticky sidebar if screen width below `options.minWidth`.
8420                            this._widthBreakpoint();
8421
8422                            // Calculate dimensions of sidebar, container and viewport.
8423                            this.calcDimensions();
8424
8425                            // Affix sidebar in proper position.
8426                            this.stickyPosition();
8427
8428                            // Bind all events.
8429                            this.bindEvents();
8430
8431                            // Inform other properties the sticky 
vendor: 4,786 bytes, lines 8431-8515
8431sidebar is initialized.
8432                            this._initialized = true;
8433                        }
8434                    }, {
8435                        key: 'bindEvents',
8436                        value: function bindEvents() {
8437                            window.addEventListener('resize', this, { passive: true, capture: false });
8438                            window.addEventListener('scroll', this, { passive: true, capture: false });
8439
8440                            this.sidebar.addEventListener('update' + EVENT_KEY, this);
8441
8442                            if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {
8443                                new ResizeSensor(this.sidebarInner, this.handleEvent);
8444                                new ResizeSensor(this.container, this.handleEvent);
8445                            }
8446                        }
8447                    }, {
8448                        key: 'handleEvent',
8449                        value: function handleEvent(event) {
8450                            this.updateSticky(event);
8451                        }
8452                    }, {
8453                        key: 'calcDimensions',
8454                        value: function calcDimensions() {
8455                            if (this._breakpoint) return;
8456                            var dims = this.dimensions;
8457
8458                            // Container of sticky sidebar dimensions.
8459                            dims.containerTop = StickySidebar.offsetRelative(this.container).top;
8460                            dims.containerHeight = this.container.clientHeight;
8461                            dims.containerBottom = dims.containerTop + dims.containerHeight;
8462
8463                            // Sidebar dimensions.
8464                            dims.sidebarHeight = this.sidebarInner.offsetHeight;
8465                            dims.sidebarWidth = this.sidebarInner.offsetWidth;
8466
8467                            // Screen viewport dimensions.
8468                            dims.viewportHeight = window.innerHeight;
8469
8470                            // Maximum sidebar translate Y.
8471                            dims.maxTranslateY = dims.containerHeight - dims.sidebarHeight;
8472
8473                            this._calcDimensionsWithScroll();
8474                        }
8475                    }, {
8476                        key: '_calcDimensionsWithScroll',
8477                        value: function _calcDimensionsWithScroll() {
8478                            var dims = this.dimensions;
8479
8480                            dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;
8481
8482                            dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;
8483                            dims.viewportBottom = dims.viewportTop + dims.viewportHeight;
8484                            dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
8485
8486                            dims.topSpacing = this.options.topSpacing;
8487                            dims.bottomSpacing = this.options.bottomSpacing;
8488
8489                            if ('function' === typeof dims.topSpacing) dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;
8490
8491                            if ('function' === typeof dims.bottomSpacing) dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;
8492
8493                            if ('VIEWPORT-TOP' === this.affixedType) {
8494                                // Adjust translate Y in the case decrease top spacing value.
8495                                if (dims.topSpacing < dims.lastTopSpacing) {
8496                                    dims.translateY += dims.lastTopSpacing - dims.topSpacing;
8497                                    this._reStyle = true;
8498                                }
8499                            } else if ('VIEWPORT-BOTTOM' === this.affixedType) {
8500                                // Adjust translate Y in the case decrease bottom spacing value.
8501                                if (dims.bottomSpacing < dims.lastBottomSpacing) {
8502                                    dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;
8503                                    this._reStyle = true;
8504                                }
8505                            }
8506
8507                            dims.lastTopSpacing = dims.topSpacing;
8508                            dims.lastBottomSpacing = dims.bottomSpacing;
8509                        }
8510                    }, {
8511                        key: 'isSidebarFitsViewport',
8512                        value: function isSidebarFitsViewport() {
8513                            var dims = this.dimensions;
8514                            var offset = this.scrollDirection === 'down' ? dims.lastBottomSpacing : dims.lastTopSpacing;
8515                            return this.dimensions.sidebarHeight + offset < this.dimensions.viewportHe
8515ight;
8516                        }
8517                    }, {
8518                        key: 'observeScrollDir',
8519                        value: function observeScrollDir() {
8520                            var dims = this.dimensions;
8521                            if (dims.lastViewportTop === dims.viewportTop) return;
8522
8523                            var furthest = 'down' === this.direction ? Math.min : Math.max;
8524
8525                            // If the browser is scrolling not in the same direction.
8526                            if (dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop)) this.direction = 'down' === this.direction ? 'up' : 'down';
8527                        }
8528                    }, {
8529                        key: 'getAffixType',
8530                        value: function getAffixType() {
8531                            this._calcDimensionsWithScroll();
8532                            var dims = this.dimensions;
8533                            var colliderTop = dims.viewportTop + dims.topSpacing;
8534                            var affixType = this.affixedType;
8535
8536                            if (colliderTop <= dims.containerTop || dims.containerHeight <= dims.sidebarHeight) {
8537                                dims.translateY = 0;
8538                                affixType = 'STATIC';
8539                            } else {
8540                                affixType = 'up' === this.direction ? this._getAffixTypeScrollingUp() : this._getAffixTypeScrollingDown();
8541                            }
8542
8543                            // Make sure the translate Y is not bigger than container height.
8544                            dims.translateY = Math.max(0, dims.translateY);
8545                            dims.translateY = Math.min(dims.containerHeight, dims.translateY);
8546                            dims.translateY = Math.round(dims.translateY);
8547
8548                            dims.lastViewportTop = dims.viewportTop;
8549                            return affixType;
8550                        }
8551                    }, {
8552                        key: '_getAffixTypeScrollingDown',
8553                        value: function _getAffixTypeScrollingDown() {
8554                            var dims = this.dimensions;
8555                            var sidebarBottom = dims.sidebarHeight + dims.containerTop;
8556                            var colliderTop = dims.viewportTop + dims.topSpacing;
8557                            var colliderBottom = dims.viewportBottom - dims.bottomSpacing;
8558                            var affixType = this.affixedType;
8559
8560                            if (this.isSidebarFitsViewport()) {
8561                                if (dims.sidebarHeight + colliderTop >= dims.containerBottom) {
8562                                    dims.translateY = dims.containerBottom - sidebarBottom;
8563                                    affixType = 'CONTAINER-BOTTOM';
8564                                } else if (colliderTop >= dims.containerTop) {
8565                                    dims.translateY = colliderTop - dims.containerTop;
8566                                    affixType = 'VIEWPORT-TOP';
8567                                }
8568                            } else {
8569                                if (dims.containerBottom <= colliderBottom) {
8570                                    dims.translateY = dims.containerBottom - sidebarBottom;
8571                                    affixType = 'CONTAINER-BOTTOM';
8572                                } else if (sidebarBottom + dims.translateY <= colliderBottom) {
8573                                    dims.translateY = colliderBottom - sidebarBottom;
8574                                    affixType = 'VIEWPORT-BOTTOM';
8575                                } else if (dims.containerTop + dims.translateY <= colliderTop && 0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) {
8576                                    affixType = 'VIEWPORT-UNBOTTOM';
8577                                }
8578                            }
8579
8580                            return affixType;
8581                        }
8582                    }, {
8583                        key: '_getAffixTypeScrollingUp',
vendor: 11,638 bytes, lines 8584-8787
8584                        value: function _getAffixTypeScrollingUp() {
8585                            var dims = this.dimensions;
8586                            var sidebarBottom = dims.sidebarHeight + dims.containerTop;
8587                            var colliderTop = dims.viewportTop + dims.topSpacing;
8588                            var colliderBottom = dims.viewportBottom - dims.bottomSpacing;
8589                            var affixType = this.affixedType;
8590
8591                            if (colliderTop <= dims.translateY + dims.containerTop) {
8592                                dims.translateY = colliderTop - dims.containerTop;
8593                                affixType = 'VIEWPORT-TOP';
8594                            } else if (dims.containerBottom <= colliderBottom) {
8595                                dims.translateY = dims.containerBottom - sidebarBottom;
8596                                affixType = 'CONTAINER-BOTTOM';
8597                            } else if (!this.isSidebarFitsViewport()) {
8598
8599                                if (dims.containerTop <= colliderTop && 0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) {
8600                                    affixType = 'VIEWPORT-UNBOTTOM';
8601                                }
8602                            }
8603
8604                            return affixType;
8605                        }
8606                    }, {
8607                        key: '_getStyle',
8608                        value: function _getStyle(affixType) {
8609                            if ('undefined' === typeof affixType) return;
8610
8611                            var style = { inner: {}, outer: {} };
8612                            var dims = this.dimensions;
8613
8614                            switch (affixType) {
8615                                case 'VIEWPORT-TOP':
8616                                    style.inner = { position: 'fixed', top: dims.topSpacing,
8617                                        left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth };
8618                                    break;
8619                                case 'VIEWPORT-BOTTOM':
8620                                    style.inner = { position: 'fixed', top: 'auto', left: dims.sidebarLeft,
8621                                        bottom: dims.bottomSpacing, width: dims.sidebarWidth };
8622                                    break;
8623                                case 'CONTAINER-BOTTOM':
8624                                case 'VIEWPORT-UNBOTTOM':
8625                                    var translate = this._getTranslate(0, dims.translateY + 'px');
8626
8627                                    if (translate) style.inner = { transform: translate };else style.inner = { position: 'absolute', top: dims.translateY, width: dims.sidebarWidth };
8628                                    break;
8629                            }
8630
8631                            switch (affixType) {
8632                                case 'VIEWPORT-TOP':
8633                                case 'VIEWPORT-BOTTOM':
8634                                case 'VIEWPORT-UNBOTTOM':
8635                                case 'CONTAINER-BOTTOM':
8636                                    style.outer = { height: dims.sidebarHeight, position: 'relative' };
8637                                    break;
8638                            }
8639
8640                            style.outer = StickySidebar.extend({ height: '', position: '' }, style.outer);
8641                            style.inner = StickySidebar.extend({ position: 'relative', top: '', left: '',
8642                                bottom: '', width: '', transform: '' }, style.inner);
8643
8644                            return style;
8645                        }
8646                    }, {
8647                        key: 'stickyPosition',
8648                        value: function stickyPosition(force) {
8649                            if (this._breakpoint) return;
8650
8651                            force = this._reStyle || force || false;
8652
8653                            var offsetTop = this.options.topSpacing;
8654                            var offsetBottom = this.options.bottomSpacing;
8655
8656                            var affixType = this.getAffixType();
8657                            var style = this._getStyle(affixType);
8658
8659                            if ((this.affixedType != affixType || force) && affixType) {
8660                                var affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;
8661                                StickySidebar.eventTrigger(this.sidebar, affixEvent);
8662
8663                                if ('STATIC' === affixType) StickySidebar.removeClass(this.sidebar, this.options.stickyClass);else StickySidebar.addClass(this.sidebar, this.options.stickyClass);
8664
8665                                for (var key in style.outer) {
8666                                    var unit = 'number' === typeof style.outer[key] ? 'px' : '';
8667                                    this.sidebar.style[key] = style.outer[key] + unit;
8668                                }
8669
8670                                for (var _key in style.inner) {
8671                                    var _unit = 'number' === typeof style.inner[_key] ? 'px' : '';
8672                                    this.sidebarInner.style[_key] = style.inner[_key] + _unit;
8673                                }
8674
8675                                var affixedEvent = 'affixed.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;
8676                                StickySidebar.eventTrigger(this.sidebar, affixedEvent);
8677                            } else {
8678                                if (this._initialized) this.sidebarInner.style.left = style.inner.left;
8679                            }
8680
8681                            this.affixedType = affixType;
8682                        }
8683                    }, {
8684                        key: '_widthBreakpoint',
8685                        value: function _widthBreakpoint() {
8686
8687                            if (window.innerWidth <= this.options.minWidth) {
8688                                this._breakpoint = true;
8689                                this.affixedType = 'STATIC';
8690
8691                                this.sidebar.removeAttribute('style');
8692                                StickySidebar.removeClass(this.sidebar, this.options.stickyClass);
8693                                this.sidebarInner.removeAttribute('style');
8694                            } else {
8695                                this._breakpoint = false;
8696                            }
8697                        }
8698                    }, {
8699                        key: 'updateSticky',
8700                        value: function updateSticky() {
8701                            var _this3 = this;
8702
8703                            var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
8704
8705                            if (this._running) return;
8706                            this._running = true;
8707
8708                            (function (eventType) {
8709                                requestAnimationFrame(function () {
8710                                    switch (eventType) {
8711                                        // When browser is scrolling and re-calculate just dimensions
8712                                        // within scroll.
8713                                        case 'scroll':
8714                                            _this3._calcDimensionsWithScroll();
8715                                            _this3.observeScrollDir();
8716                                            _this3.stickyPosition();
8717                                            break;
8718
8719                                        // When browser is resizing or there's no event, observe width
8720                                        // breakpoint and re-calculate dimensions.
8721                                        case 'resize':
8722                                        default:
8723                                            _this3._widthBreakpoint();
8724                                            _this3.calcDimensions();
8725                                            _this3.stickyPosition(true);
8726                                            break;
8727                                    }
8728                                    _this3._running = false;
8729                                });
8730                            })(event.type);
8731                        }
8732                    }, {
8733                        key: '_setSupportFeatures',
8734                        value: function _setSupportFeatures() {
8735                            var support = this.support;
8736
8737                            support.transform = StickySidebar.supportTransform();
8738                            support.transform3d = StickySidebar.supportTransform(true);
8739                        }
8740                    }, {
8741                        key: '_getTranslate',
8742                        value: function _getTranslate() {
8743                            var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
8744                            var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
8745                            var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
8746
8747                            if (this.support.transform3d) return 'translate3d(' + y + ', ' + x + ', ' + z + ')';else if (this.support.translate) return 'translate(' + y + ', ' + x + ')';else return false;
8748                        }
8749                    }, {
8750                        key: 'destroy',
8751                        value: function destroy() {
8752                            window.removeEventListener('resize', this, { capture: false });
8753                            window.removeEventListener('scroll', this, { capture: false });
8754
8755                            this.sidebar.classList.remove(this.options.stickyClass);
8756                            this.sidebar.style.minHeight = '';
8757
8758                            this.sidebar.removeEventListener('update' + EVENT_KEY, this);
8759
8760                            var styleReset = { inner: {}, outer: {} };
8761
8762                            styleReset.inner = { position: '', top: '', left: '', bottom: '', width: '', transform: '' };
8763                            styleReset.outer = { height: '', position: '' };
8764
8765                            for (var key in styleReset.outer) {
8766                                this.sidebar.style[key] = styleReset.outer[key];
8767                            }for (var _key2 in styleReset.inner) {
8768                                this.sidebarInner.style[_key2] = styleReset.inner[_key2];
8769                            }if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {
8770                                ResizeSensor.detach(this.sidebarInner, this.handleEvent);
8771                                ResizeSensor.detach(this.container, this.handleEvent);
8772                            }
8773                        }
8774                    }], [{
8775                        key: 'supportTransform',
8776                        value: function supportTransform(transform3d) {
8777                            var result = false,
8778                                property = transform3d ? 'perspective' : 'transform',
8779                                upper = property.charAt(0).toUpperCase() + property.slice(1),
8780                                prefixes = ['Webkit', 'Moz', 'O', 'ms'],
8781                                support = document.createElement('support'),
8782                                style = support.style;
8783
8784                            (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function (property, i) {
8785                                if (style[property] !== undefined) {
8786                                    result = property;
8787                                    return false;
8788                                }
8789                            });
8790                            return result;
8791                        }
8792                    }, {
8793                        key: 'eventTrigger',
8794                        value: function eventTrigger(element, eventName, data) {
8795                            try {
8796                                var event = new CustomEvent(eventName, { detail: data });
8797                            } catch (e) {
8798                                var event = document.createEvent('CustomEvent');
8799                                event.initCustomEvent(eventName, true, true, data);
8800                            }
8801                            element.dispatchEvent(event);
8802                        }
8803                    }, {
8804                        key: 'extend',
8805                        value: function extend(defaults, options) {
8806                            var results = {};
8807                            for (var key in defaults) {
8808                                if ('undefined' !== typeof options[key]) results[key] = options[key];else results[key] = defaults[key];
8809                            }
8810                            return results;
8811                        }
8812                    }, {
8813                        key: 'offsetRelative',
8814                        value: function offsetRelative(element) {
8815                            var result = { left: 0, top: 0 };
8816
8817                            do {
8818                                var offsetTop = element.offsetTop;
8819                                var offsetLeft = element.offsetLeft;
8820
8821                                if (!isNaN(offsetTop)) result.top += offsetTop;
8822
8823                                if (!isNaN(offsetLeft)) result.left += offsetLeft;
8824
8825                                element = 'BODY' === element.tagName ? element.parentElement : element.offsetParent;
8826                            } while (element);
8827                            return result;
8828                        }
8829                    }, {
8830                        key: 'addClass',
8831                        value: function addClass(element, className) {
8832                            if (!StickySidebar.hasClass(element, className)) {
8833                                if (element.classList) element.classList.add(className);else element.className += ' ' + className;
8834                            }
8835                        }
8836                    }, {
8837                        key: 'removeClass',
8838                        value: function removeClass(element, className) {
8839                            if (StickySidebar.hasClass(element, className)) {
8840                                if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
8841                            }
8842                        }
8843                    }, {
8844                        key: 'hasClass',
8845                        value: function hasClass(element, className) {
8846                            if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);
8847                        }
8848                    }, {
8849                        key: 'defaults',
8850                        get: function () {
8851                            return DEFAULTS;
8852                        }
8853                    }]);
8854
8855                    return StickySidebar;
8856                }();
8857
8858                return StickySidebar;
8859            }();
8860
8861            exports.default = StickySidebar;
8862
8863
8864            // Global
8865            // -------------------------
8866            window.StickySidebar = StickySidebar;
8867        });
8868    });
8869
8870    var stickySidebar$1 = unwrapExports(stickySidebar);
8871
8872    exports['default'] = stickySidebar$1;
8873    exports.__moduleExports = stickySidebar;
8874
8875    Object.defineProperty(exports, '__esModule', { value: true });
8876
8877})));
8878
8879const sidebarBlock = document.querySelector('.sidebar');
8880if(sidebarBlock){
8881  var sidebar = new StickySidebar(sidebarBlock, {
8882    topSpacing: 20,
8883  });
8884  sidebar.updateSticky();
8885}
8886
8887/* End */
8888;
8889; /* Start:"a:4:{s:4:"full";s:90:"/local/templates/main_template/components/bitrix/menu/top_menu/script.min.js?1758628602408";s:6:"source";s:72:"/local/templates/main_template/components/bitrix/menu/top_menu/script.js";s:3:"min";s:76:"/local/templates/main_template/components/bitrix/menu/top_menu/script.min.js";s:3:"map";s:76:"/local/templates/main_template/components/bitrix/menu/top_menu/script.map.js";}"*/
8890var jshover=function(){var e=document.getElementById("horizontal-multilevel-menu");if(!e)return;var t=e.getElementsByTagName("li");for(var n=0;n<t.length;n++){t[n].onmouseover=function(){this.className+=" jshover"};t[n].onmouseout=function(){this.className=this.className.replace(new RegExp(" jsh
8890over\\b"),"")}}};if(window.attachEvent)window.attachEvent("onload",jshover);
8891/* End */
8892;; /* /local/templates/main_template/js/popper.min.js?175862869919191*/
8893; /* /local/templates/main_template/js/dropdown.js?17586286992328*/
8894; /* /local/templates/main_template/script.js?177486392766870*/
8895; /* /local/templates/main_template/js/bootstrap/bootstrap.min.js?175862869862440*/
8896; /* /local/templates/main_template/js/bootstrap/bootstrap.bundle.js?1760356991207836*/
8897; /* /local/templates/main_template/js/ResizeSensor.js?175862869912911*/
8898; /* /local/templates/main_template/js/stickySidebar.js?175862869935376*/
8899; /* /local/templates/main_template/components/bitrix/menu/top_menu/script.min.js?1758628602408*/
8900
8901//# sourceMappingURL=template_d46c1dcba7cf36451a07f7e81956303e.map.js

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.