PageSourceSearch

https://salute.toscana.it/sites/default/files/js/js_VBzf5qjpjpPPtBPqykmtrNYl1Qczx5yRHXxUcBZpODg.js

js salute.toscana.it collected 2026-10-04 22:39:04 UTC 332,033 bytes, 7,927 lines download raw bytes

vendor: 89,947 bytes, lines 1-2
1/*! jQuery v3.6.3 | (c) OpenJS Foundation and other contributors | jquery.org/license */
2!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.3",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}E.fn=E.prototype={jquery:f,constructor:E,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=E.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return E.each(this,e)},map:function(n){return this.pushStack(E.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(E.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(E.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},E.extend=E.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(E.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||E.isPlainObject(n)?n:{},i=!1,a[t]=E.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},E.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=y.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?E.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:v}),"function"==typeof Symbol&&(E.fn[Symbol.iterator]=t[Symbol.iterator]),E.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,S,y,s,c,v,E="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector(:is("+c+"))"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+E+"'></a><select id='"+E+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),v(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!S):void 0;return void 0!==r?r:d.attributes||!S?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace($," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,y){var v="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===y?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=v!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(v){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[E]||(a[E]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[E]||(a[E]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[E]||(a[E]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=y)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[E]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[E]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=S?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ye(function(){return[0]}),last:ye(function(e,t){return[t-1]}),eq:ye(function(e,t,n){return[n<0?n+t:n]}),even:ye(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ye(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ye(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ye(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[E]||(e[E]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,y,v,e){return y&&!y[E]&&(y=Ce(y)),v&&!v[E]&&(v=Ce(v,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?v||(e?d:l||y)?[]:t:f;if(g&&g(f,p,n,r),y){i=Te(p,u),y(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(v||d){if(v){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);v(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=v?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),v?v(null,t,p,r):H.apply(t,p)})}function Se(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[E]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Se(e.slice(s,n)),n<r&&Se(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,y,v,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Se(t[n]))[E]?i.push(a):o.push(a);(a=A(e,(y=o,m=0<(v=i).length,x=0<y.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!S);while(s=y[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=v[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+v.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&S&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ve(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!S,n,!t||ee.test(e)&&ve(t.parentNode)||t),n},d.sortStable=E.split("").sort(j).join("")===E,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);E.find=d,E.expr=d.selectors,E.expr[":"]=E.expr.pseudos,E.uniqueSort=E.unique=d.uniqueSort,E.text=d.getText,E.isXMLDoc=d.isXML,E.contains=d.contains,E.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&E(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=E.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1<i.call(n,e)!==r}):E.filter(n,e,r)}E.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?E.find.matchesSelector(r,e)?[r]:[]:E.find.matches(e,E.grep(t,function(e){return 1===e.nodeType}))},E.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(E(e).filter(function(){for(t=0;t<r;t++)if(E.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)E.find(e,i[t],n);return 1<r?E.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?E(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(E.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&E(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&E.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?E.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(E(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(E.uniqueSort(E.merge(this.get(),E(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),E.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),E.merge([],e.childNodes))}},function(r,i){E.fn[r]=function(e,t){var n=E.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=E.filter(t,n)),1<this.length&&(H[r]||E.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}E.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},E.each(e.match(P)||[],function(e,t){n[t]=!0}),n):E.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){E.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return E.each(arguments,function(e,t){var n;while(-1<(n=E.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<E.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},E.extend({Deferred:function(e){var o=[["notify","progress",E.Callbacks("memory"),E.Callbacks("memory"),2],["resolve","done",E.Callbacks("once memory"),E.Callbacks("once memory"),0,"resolved"],["reject","fail",E.Callbacks("once memory"),E.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return E.Deferred(function(r){E.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){E.Deferred.exceptionHook&&E.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(E.Deferred.getStackHook&&(t.stackTrace=E.Deferred.getStackHook()),C.setTimeout(t))}}return E.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?E.extend(e,a):a}},s={};return E.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=E.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;E.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},E.readyException=function(e){C.setTimeout(function(){throw e})};var F=E.Deferred();function $(){S.removeEventListener("DOMContentLoaded",$),C.removeEventListener("load",$),E.ready()}E.fn.ready=function(e){return F.then(e)["catch"](function(e){E.readyException(e)}),this},E.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--E.readyWait:E.isReady)||(E.isReady=!0)!==e&&0<--E.readyWait||F.resolveWith(S,[E])}}),E.ready.then=F.then,"complete"===S.readyState||"loading"!==S.readyState&&!S.documentElement.doScroll?C.setTimeout(E.ready):(S.addEventListener("DOMContentLoaded",$),C.addEventListener("load",$));var B=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)B(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(E(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=E.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||E.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!E.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}E.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),E.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):B(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),E.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,E.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=E.queue(e,t),r=n.length,i=n.shift(),o=E._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){E.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:E.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),E.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?E.queue(this[0],t):void 0===n?this:this.each(function(){var e=E.queue(this,t,n);E._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&E.dequeue(this,t)})},dequeue:function(e){return this.each(function(){E.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=E.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=S.documentElement,ie=function(e){return E.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return E.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===E.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return E.css(e,t,"")},u=s(),l=n&&n[3]||(E.cssNumber[t]?"":"px"),c=e.nodeType&&(E.cssNumber[t]||"px"!==l&&+u)&&te.exec(E.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)E.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,E.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=E.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}E.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?E(this).show():E(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",v.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,v.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))E.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+E.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;E.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<E.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return S.activeElement}catch(e){}}()==("focus"===t)}function Se(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Se(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Ee(e,i,o){o?(Y.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&E.event.add(e,i,we)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(re,i),n.guid||(n.guid=E.guid++),(u=y.events)||(u=y.events=Object.create(null)),(a=y.handle)||(a=y.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=E.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=E.event.special[d]||{},c=E.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),E.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=Y.hasData(e)&&Y.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=E.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||E.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)E.event.remove(e,d+t[l],n,r,!0);E.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=E.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=E.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=E.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((E.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<E(i,this).index(l):E.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(E.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[E.expando]?e:new E.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ee(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Ee(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},E.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},E.Event=function(e,t){if(!(this instanceof E.Event))return new E.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&E.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[E.expando]=!0},E.Event.prototype={constructor:E.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},E.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},E.event.addProp),E.each({focus:"focusin",blur:"focusout"},function(t,e){E.event.special[t]={setup:function(){return Ee(this,t,Ce),!1},trigger:function(){return Ee(this,t),!0},_default:function(e){return Y.get(e.target,t)},delegateType:e}}),E.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){E.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||E.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),E.fn.extend({on:function(e,t,n,r){return Se(this,e,t,n,r)},one:function(e,t,n,r){return Se(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,E(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){E.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!\[CDATA\[|\]\]>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)E.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=E.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!v.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=E.map(ye(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=E.clone(u,!0,!0),s&&E.merge(a,ye(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,E.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&E.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?E._evalUrl&&!u.noModule&&E._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?E.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||E.cleanData(ye(r)),r.parentNode&&(n&&ie(r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}E.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(v.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ye(c),r=0,i=(o=ye(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ye(e),a=a||ye(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ye(c,"script")).length&&ve(a,!f&&ye(e,"script")),c},cleanData:function(e){for(var t,n,r,i=E.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?E.event.remove(n,r):E.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),E.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return B(this,function(e){return void 0===e?E.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(E.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return E.clone(this,e,t)})},html:function(e){return B(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=E.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(E.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;E.inArray(this,n)<0&&(E.cleanData(ye(this)),t&&t.replaceChild(e,this))},n)}}),E.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){E.fn[e]=function(e){for(var t,n=[],r=E(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),E(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=/^--/,Me=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Ie=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},We=new RegExp(ne.join("|"),"i"),Fe="[\\x20\\t\\r\\n\\f]",$e=new RegExp("^"+Fe+"+|((?:^|[^\\\\])(?:\\\\.)*)"+Fe+"+$","g");function Be(e,t,n){var r,i,o,a,s=Re.test(t),u=e.style;return(n=n||Me(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace($e,"$1")||void 0),""!==a||ie(e)||(a=E.style(e,t)),!v.pixelBoxStyles()&&Pe.test(a)&&We.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=S.createElement("div"),l=S.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",v.clearCloneStyle="content-box"===l.style.backgroundClip,E.extend(v,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=S.createElement("table"),t=S.createElement("tr"),n=S.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var ze=["Webkit","Moz","ms"],Ue=S.createElement("div").style,Xe={};function Ve(e){var t=E.cssProps[e]||Xe[e];return t||(e in Ue?e:Xe[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=ze.length;while(n--)if((e=ze[n]+t)in Ue)return e}(e)||e)}var Ge=/^(none|table(?!-c[ea]).+)/,Ye={position:"absolute",visibility:"hidden",display:"block"},Qe={letterSpacing:"0",fontWeight:"400"};function Je(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ke(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=E.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=E.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=E.css(e,"border"+ne[a]+"Width",!0,i))):(u+=E.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=E.css(e,"border"+ne[a]+"Width",!0,i):s+=E.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Me(e),i=(!v.boxSizingReliable()||n)&&"border-box"===E.css(e,"boxSizing",!1,r),o=i,a=Be(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!v.boxSizingReliable()&&i||!v.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===E.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===E.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?"border":"content"),o,r,a)+"px"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}E.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Re.test(t),l=e.style;if(u||(t=Ve(s)),a=E.cssHooks[t]||E.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(E.cssNumber[s]?"":"px")),v.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Re.test(t)||(t=Ve(s)),(a=E.cssHooks[t]||E.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),"normal"===i&&t in Qe&&(i=Qe[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),E.each(["height","width"],function(e,u){E.cssHooks[u]={get:function(e,t,n){if(t)return!Ge.test(E.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,u,n):Ie(e,Ye,function(){return Ze(e,u,n)})},set:function(e,t,n){var r,i=Me(e),o=!v.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===E.css(e,"boxSizing",!1,i),s=n?Ke(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Ke(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=E.css(e,u)),Je(0,t,s)}}}),E.cssHooks.marginLeft=_e(v.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Be(e,"marginLeft"))||e.getBoundingClientRect().left-Ie(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),E.each({margin:"",padding:"",border:"Width"},function(i,o){E.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(E.cssHooks[i+o].set=Je)}),E.fn.extend({css:function(e,t){return B(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Me(e),i=t.length;a<i;a++)o[t[a]]=E.css(e,t[a],!1,r);return o}return void 0!==n?E.style(e,t,n):E.css(e,t)},e,t,1<arguments.length)}}),((E.Tween=et).prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||E.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(E.cssNumber[n]?"":"px")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=E.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}}).init.prototype=et.prototype,(et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=E.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){E.fx.step[e.prop]?E.fx.step[e.prop](e):1!==e.elem.nodeType||!E.cssHooks[e.prop]&&null==e.elem.style[Ve(e.prop)]?e.elem[e.prop]=e.now:E.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},E.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},E.fx=et.prototype.init,E.fx.step={};var tt,nt,rt,it,ot=/^(?:toggle|show|hide)$/,at=/queueHooks$/;function st(){nt&&(!1===S.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(st):C.setTimeout(st,E.fx.interval),E.fx.tick())}function ut(){return C.setTimeout(function(){tt=void 0}),tt=Date.now()}function lt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ct(e,t,n){for(var r,i=(ft.tweeners[t]||[]).concat(ft.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ft(o,e,t){var n,a,r=0,i=ft.prefilters.length,s=E.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=tt||ut(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:E.extend({},e),opts:E.extend(!0,{specialEasing:{},easing:E.easing._default},t),originalProperties:e,originalOptions:t,startTime:tt||ut(),duration:t.duration,tweens:[],createTween:function(e,t){var n=E.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=E.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=ft.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(E._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return E.map(c,ct,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),E.fx.timer(E.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}E.Animation=E.extend(ft,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],ft.tweeners[n]=ft.tweeners[n]||[],ft.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=Y.get(e,"fxshow");for(r in n.queue||(null==(a=E._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,E.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],ot.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||E.style(e,r)}if((u=!E.isEmptyObject(t))||!E.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=Y.get(e,"display")),"none"===(c=E.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=E.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===E.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(y?"hidden"in y&&(g=y.hidden):y=Y.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)E.style(e,r,d[r])})),u=ct(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?ft.prefilters.unshift(e):ft.prefilters.push(e)}}),E.speed=function(e,t,n){var r=e&&"object"==typeof e?E.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return E.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in E.fx.speeds?r.duration=E.fx.speeds[r.duration]:r.duration=E.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&E.dequeue(this,r.queue)},r},E.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=E.isEmptyObject(t),o=E.speed(e,n,r),a=function(){var e=ft(this,E.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=E.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&at.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||E.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=E.timers,o=n?n.length:0;for(t.finish=!0,E.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),E.each(["toggle","show","hide"],function(e,r){var i=E.fn[r];E.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(lt(r,!0),e,t,n)}}),E.each({slideDown:lt("show"),slideUp:lt("hide"),slideToggle:lt("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){E.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),E.timers=[],E.fx.tick=function(){var e,t=0,n=E.timers;for(tt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||E.fx.stop(),tt=void 0},E.fx.timer=function(e){E.timers.push(e),E.fx.start()},E.fx.interval=13,E.fx.start=function(){nt||(nt=!0,st())},E.fx.stop=function(){nt=null},E.fx.speeds={slow:600,fast:200,_default:400},E.fn.delay=function(r,e){return r=E.fx&&E.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},rt=S.createElement("input"),it=S.createElement("select").appendChild(S.createElement("option")),rt.type="checkbox",v.checkOn=""!==rt.value,v.optSelected=it.selected,(rt=S.createElement("input")).value="t",rt.type="radio",v.radioValue="t"===rt.value;var pt,dt=E.expr.attrHandle;E.fn.extend({attr:function(e,t){return B(this,E.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){E.removeAttr(this,e)})}}),E.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?E.prop(e,t,n):(1===o&&E.isXMLDoc(e)||(i=E.attrHooks[t.toLowerCase()]||(E.expr.match.bool.test(t)?pt:void 0)),void 0!==n?null===n?void E.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=E.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!v.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),pt={set:function(e,t,n){return!1===t?E.removeAttr(e,n):e.setAttribute(n,n),n}},E.each(E.expr.match.bool.source.match(/\w+/g),function(e,t){var a=dt[t]||E.find.attr;dt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=dt[o],dt[o]=r,r=null!=a(e,t,n)?o:null,dt[o]=i),r}});var ht=/^(?:input|select|textarea|button)$/i,gt=/^(?:a|area)$/i;function yt(e){return(e.match(P)||[]).join(" ")}function vt(e){return e.getAttribute&&e.getAttribute("class")||""}function mt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}E.fn.extend({prop:function(e,t){return B(this,E.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[E.propFix[e]||e]})}}),E.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&E.isXMLDoc(e)||(t=E.propFix[t]||t,i=E.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=E.find.attr(e,"tabindex");return t?parseInt(t,10):ht.test(e.nodeName)||gt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),v.optSelected||(E.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),E.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){E.propFix[this.toLowerCase()]=this}),E.fn.extend({addClass:function(t){var e,n,r,i,o,a;return m(t)?this.each(function(e){E(this).addClass(t.call(this,e,vt(this)))}):(e=mt(t)).length?this.each(function(){if(r=vt(this),n=1===this.nodeType&&" "+yt(r)+" "){for(o=0;o<e.length;o++)i=e[o],n.indexOf(" "+i+" ")<0&&(n+=i+" ");a=yt(n),r!==a&&this.setAttribute("class",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return m(t)?this.each(function(e){E(this).removeClass(t.call(this,e,vt(this)))}):arguments.length?(e=mt(t)).length?this.each(function(){if(r=vt(this),n=1===this.nodeType&&" "+yt(r)+" "){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(" "+i+" "))n=n.replace(" "+i+" "," ")}a=yt(n),r!==a&&this.setAttribute("class",a)}}):this:this.attr("class","")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s="string"===a||Array.isArray(t);return m(t)?this.each(function(e){E(this).toggleClass(t.call(this,e,vt(this),n),n)}):"boolean"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=mt(t),this.each(function(){if(s)for(o=E(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&"boolean"!==a||((r=vt(this))&&Y.set(this,"__className__",r),this.setAttribute&&this.setAttribute("class",r||!1===t?"":Y.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+yt(vt(n))+" ").indexOf(t))return!0;return!1}});var xt=/\r/g;E.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,E(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=E.map(t,function(e){return null==e?"":e+""})),(r=E.valHooks[this.type]||E.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=E.valHooks[t.type]||E.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(xt,""):null==e?"":e:void 0}}),E.extend({valHooks:{option:{get:function(e){var t=E.find.attr(e,"value");return null!=t?t:yt(E.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=E(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=E.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<E.inArray(E.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),E.each(["radio","checkbox"],function(){E.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<E.inArray(E(e).val(),t)}},v.checkOn||(E.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),v.focusin="onfocusin"in C;var bt=/^(?:focusinfocus|focusoutblur)$/,wt=function(e){e.stopPropagation()};E.extend(E.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||S],d=y.call(e,"type")?e.type:e,h=y.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||S,3!==n.nodeType&&8!==n.nodeType&&!bt.test(d+E.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[E.expando]?e:new E.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:E.makeArray(t,[e]),c=E.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,bt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||S)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),E.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,wt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,wt),E.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=E.extend(new E.Event,n,{type:e,isSimulated:!0});E.event.trigger(r,null,t)}}),E.fn.extend({trigger:function(e,t){return this.each(function(){E.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return E.event.trigger(e,t,n,!0)}}),v.focusin||E.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){E.event.simulate(r,e.target,E.event.fix(e))};E.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var Tt=C.location,Ct={guid:Date.now()},St=/\?/;E.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||E.error("Invalid XML: "+(n?E.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Et=/\[\]$/,kt=/\r?\n/g,At=/^(?:submit|button|image|reset|file)$/i,Nt=/^(?:input|select|textarea|keygen)/i;function jt(n,e,r,i){var t;if(Array.isArray(e))E.each(e,function(e,t){r||Et.test(n)?i(n,t):jt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)jt(n+"["+t+"]",e[t],r,i)}E.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!E.isPlainObject(e))E.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},E.fn.extend({serialize:function(){return E.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=E.prop(this,"elements");return e?E.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!E(this).is(":disabled")&&Nt.test(this.nodeName)&&!At.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=E(this).val();return null==n?null:Array.isArray(n)?E.map(n,function(e){return{name:t.name,value:e.replace(kt,"\r\n")}}):{name:t.name,value:n.replace(kt,"\r\n")}}).get()}});var Dt=/%20/g,qt=/#.*$/,Lt=/([?&])_=[^&]*/,Ht=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ot=/^(?:GET|HEAD)$/,Pt=/^\/\//,Rt={},Mt={},It="*/".concat("*"),Wt=S.createElement("a");function Ft(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function $t(t,i,o,a){var s={},u=t===Mt;function l(e){var r;return s[e]=!0,E.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Bt(e,t){var n,r,i=E.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&E.extend(!0,e,r),e}Wt.href=Tt.href,E.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Tt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Tt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":It,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":E.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Bt(Bt(e,E.ajaxSettings),t):Bt(E.ajaxSettings,e)},ajaxPrefilter:Ft(Rt),ajaxTransport:Ft(Mt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,y=E.ajaxSetup({},t),v=y.context||y,m=y.context&&(v.nodeType||v.jquery)?E(v):E.event,x=E.Deferred(),b=E.Callbacks("once memory"),w=y.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Ht.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(y.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),y.url=((e||y.url||Tt.href)+"").replace(Pt,Tt.protocol+"//"),y.type=t.method||t.type||y.method||y.type,y.dataTypes=(y.dataType||"*").toLowerCase().match(P)||[""],null==y.crossDomain){r=S.createElement("a");try{r.href=y.url,r.href=r.href,y.crossDomain=Wt.protocol+"//"+Wt.host!=r.protocol+"//"+r.host}catch(e){y.crossDomain=!0}}if(y.data&&y.processData&&"string"!=typeof y.data&&(y.data=E.param(y.data,y.traditional)),$t(Rt,y,t,T),h)return T;for(i in(g=E.event&&y.global)&&0==E.active++&&E.event.trigger("ajaxStart"),y.type=y.type.toUpperCase(),y.hasContent=!Ot.test(y.type),f=y.url.replace(qt,""),y.hasContent?y.data&&y.processData&&0===(y.contentType||"").indexOf("application/x-www-form-urlencoded")&&(y.data=y.data.replace(Dt,"+")):(o=y.url.slice(f.length),y.data&&(y.processData||"string"==typeof y.data)&&(f+=(St.test(f)?"&":"?")+y.data,delete y.data),!1===y.cache&&(f=f.replace(Lt,"$1"),o=(St.test(f)?"&":"?")+"_="+Ct.guid+++o),y.url=f+o),y.ifModified&&(E.lastModified[f]&&T.setRequestHeader("If-Modified-Since",E.lastModified[f]),E.etag[f]&&T.setRequestHeader("If-None-Match",E.etag[f])),(y.data&&y.hasContent&&!1!==y.contentType||t.contentType)&&T.setRequestHeader("Content-Type",y.contentType),T.setRequestHeader("Accept",y.dataTypes[0]&&y.accepts[y.dataTypes[0]]?y.accepts[y.dataTypes[0]]+("*"!==y.dataTypes[0]?", "+It+"; q=0.01":""):y.accepts["*"]),y.headers)T.setRequestHeader(i,y.headers[i]);if(y.beforeSend&&(!1===y.beforeSend.call(v,T,y)||h))return T.abort();if(u="abort",b.add(y.complete),T.done(y.success),T.fail(y.error),c=$t(Mt,y,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,y]),h)return T;y.async&&0<y.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},y.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(y,T,n)),!i&&-1<E.inArray("script",y.dataTypes)&&E.inArray("json",y.dataTypes)<0&&(y.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(y,s,T,i),i?(y.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(E.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(E.etag[f]=u)),204===e||"HEAD"===y.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(v,[o,l,T]):x.rejectWith(v,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,y,i?o:a]),b.fireWith(v,[T,l]),g&&(m.trigger("ajaxComplete",[T,y]),--E.active||E.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return E.get(e,t,n,"json")},getScript:function(e,t){return E.get(e,void 0,t,"script")}}),E.each(["get","post"],function(e,i){E[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),E.ajax(E.extend({url:e,type:i,dataType:r,data:t,success:n},E.isPlainObject(e)&&e))}}),E.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),E._evalUrl=function(e,t,n){return E.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){E.globalEval(e,t,n)}})},E.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=E(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){E(this).wrapInner(n.call(this,e))}):this.each(function(){var e=E(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){E(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){E(this).replaceWith(this.childNodes)}),this}}),E.expr.pseudos.hidden=function(e){return!E.expr.pseudos.visible(e)},E.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},E.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var _t={0:200,1223:204},zt=E.ajaxSettings.xhr();v.cors=!!zt&&"withCredentials"in zt,v.ajax=zt=!!zt,E.ajaxTransport(function(i){var o,a;if(v.cors||zt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(_t[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),E.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),E.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return E.globalEval(e),e}}}),E.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),E.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=E("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=yt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&E.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?E("<div>").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Gt=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;E.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||E.guid++,i},E.holdReady=function(e){e?E.readyWait++:E.ready(!0)},E.isArray=Array.isArray,E.parseJSON=JSON.parse,E.nodeName=A,E.isFunction=m,E.isWindow=x,E.camelCase=X,E.type=w,E.now=Date.now,E.isNumeric=function(e){var t=E.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},E.trim=function(e){return null==e?"":(e+"").replace(Gt,"$1")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return E});var Yt=C.jQuery,Qt=C.$;return E.noConflict=function(e){return C.$===E&&(C.$=Qt),e&&C.jQuery===E&&(C.jQuery=Yt),E},"undefined"==typeof e&&(C.jQuery=C.$=E),E});
vendor: 4,760 bytes, lines 3-8
3;
4/*! @drupal/once - v1.0.1 - 2021-06-12 */
5var once=function(){"use strict";var n=/[\11\12\14\15\40]+/,e="data-once",t=document;function r(n,t,r){return n[t+"Attribute"](e,r)}function o(e){if("string"!=typeof e)throw new TypeError("once ID must be a string");if(""===e||n.test(e))throw new RangeError("once ID must not be empty or contain spaces");return'[data-once~="'+e+'"]'}function u(n){if(!(n instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function i(n,e){void 0===e&&(e=t);var r=n;if(null===n)r=[];else{if(!n)throw new TypeError("Selector must not be empty");"string"!=typeof n||e!==t&&!u(e)?n instanceof Element&&(r=[n]):r=e.querySelectorAll(n)}return Array.prototype.slice.call(r)}function c(n,e,t){return e.filter((function(e){var r=u(e)&&e.matches(n);return r&&t&&t(e),r}))}function f(e,t){var o=t.add,u=t.remove,i=[];r(e,"has")&&r(e,"get").trim().split(n).forEach((function(n){i.indexOf(n)<0&&n!==u&&i.push(n)})),o&&i.push(o);var c=i.join(" ");r(e,""===c?"remove":"set",c)}function a(n,e,t){return c(":not("+o(n)+")",i(e,t),(function(e){return f(e,{add:n})}))}return a.remove=function(n,e,t){return c(o(n),i(e,t),(function(e){return f(e,{remove:n})}))},a.filter=function(n,e,t){return c(o(n),i(e,t))},a.find=function(n,e){return i(n?o(n):"[data-once]",e)},a}();
6
7;
8window.drupalTranslations = {"strings":{"":{"Home":"Home","Next":"Seguente","closed":"chiuso","Cancel":"Annulla","Disabled":"Disattivato","Enabled":"Attivato","Edit":"Modifica","Save":"Salva","Open":"Aperto","Add":"Aggiungi","Continue":"Continua","Close":"Chiudi","Select all rows in this table":"Seleziona tutte le righe in questa tabella","Deselect all rows in this table":"Deseleziona tutte le righe in questa tabella","Extend":"Estendi","Changed":"Modificato","Not published":"Non pubblicato","Please wait...":"Attendere prego...","Not promoted":"Non promosso","Error message":"Messaggio di errore","Warning message":"Messaggio di avvertimento","By @name on @date":"Da @name il @date","By @name":"Da @name","Not in menu":"Non nel menu","Alias: @alias":"Alias: @alias","No alias":"Nessun alias","@label":"@label","New revision":"Nuova revisione","Show description":"Mostra la descrizione","No revision":"Nessuna revisione","Requires a title":"Richiede un titolo","Not restricted":"Non limitato","(active tab)":"(scheda attiva)","Status message":"Messaggio di stato","An AJAX HTTP error occurred.":"Si \u00e8 verificato un errore HTTP in AJAX.","HTTP Result Code: !status":"Codice HTTP di risposta: !status","StatusText: !statusText":"StatusText: !statusText","ResponseText: !responseText":"ResponseText: !responseText","ReadyState: !readyState":"ReadyState: !readyState","Restricted to certain pages":"Limitato a certe pagine","The block cannot be placed in this region.":"Il blocco non pu\u00f2 essere posizionato in questa regione.","Hide summary":"Nascondi sommario","Edit summary":"Modifica sommario","Don\u0027t display post information":"Non mostrare le informazioni di pubblicazione","Collapse":"Raggruppa","The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.":"Il file selezionato %filename non pu\u00f2 essere caricato. Sono consentiti solo file con le seguenti estensioni: %extensions.","Show row weights":"Mostra l\u0027ordine delle righe.","Hide row weights":"Nascondi l\u0027ordine delle righe","Apply (all displays)":"Applica (tutte le visualizzazioni)","Apply (this display)":"Applica (solo questa visualizzazione)","Revert to default":"Ritorna al predefinito","Hide description":"Nascondi la descrizione","Needs to be updated":"Deve essere aggiornato","Does not need to be updated":"Non ha bisogno di essere aggiornato","Show all columns":"Mostra tutte le colonne","List additional actions":"Mostra ulteriori azioni","Flag other translations as outdated":"Marca altre traduzioni come obsolete","Do not flag other translations as outdated":"Non marcare altre traduzioni come obsolete","opened":"aperto","Horizontal orientation":"Orientamento orizzontale","Vertical orientation":"Orientamento verticale","You have unsaved changes.":"Sono presenti modifiche non salvate.","@action @title configuration options":"Opzioni di configurazione per @action @title","Press the esc key to exit.":"Premere il tasto ESC per uscire.","!tour_item of !total":"!tour_item di !total","End tour":"Finisci il Tour","Changing the text format to %text_format will permanently remove content that is not allowed in that text format.\u003Cbr\u003E\u003Cbr\u003ESave your changes before switching the text format to avoid losing data.":"Il cambio del formato di testo in %text_format comporter\u00e0 la perdita definitiva di tutti gli elementi non consentiti nel nuovo formato.\u
8003Cbr\u003E\u003Cbr\u003ESalvare i cambiamenti prima del cambio di formato per evitare la perdita di dati.","Hide lower priority columns":"Nascondi colonne a priorit\u00e0 inferiore.","!modules modules are available in the modified list.":"I moduli !modules sono disponibili nell\u0027elenco modificato.","The callback URL is not local and not trusted: !url":"L\u0027URL di callback non \u00e8 locale o non \u00e8 affidabile: !url","CustomMessage: !customMessage":"Messaggio personalizzato: !customMessage","Authored on @date":"Scritto il @date"}},"pluralFormula":{"1":0,"default":1}};;
9/**
10 * @file
11 * Parse inline JSON and initialize the drupalSettings global object.
12 */
13
14(function () {
15  // Use direct child elements to harden against XSS exploits when CSP is on.
16  const settingsElement = document.querySelector(
17    'head > script[type="application/json"][data-drupal-selector="drupal-settings-json"], body > script[type="application/json"][data-drupal-selector="drupal-settings-json"]',
18  );
19
20  /**
21   * Variable generated by Drupal with all the configuration created from PHP.
22   *
23   * @global
24   *
25   * @type {object}
26   */
27  window.drupalSettings = {};
28
29  if (settingsElement !== null) {
30    window.drupalSettings = JSON.parse(settingsElement.textContent);
31  }
32})();
33;
34/**
35 * @file
36 * Defines the Drupal JavaScript API.
37 */
38
39/**
40 * A jQuery object, typically the return value from a `$(selector)` call.
41 *
42 * Holds an HTMLElement or a collection of HTMLElements.
43 *
44 * @typedef {object} jQuery
45 *
46 * @prop {number} length=0
47 *   Number of elements contained in the jQuery object.
48 */
49
50/**
51 * Variable generated by Drupal that holds all translated strings from PHP.
52 *
53 * Content of this variable is automatically created by Drupal when using the
54 * Interface Translation module. It holds the translation of strings used on
55 * the page.
56 *
57 * This variable is used to pass data from the backend to the frontend. Data
58 * contained in `drupalSettings` is used during behavior initialization.
59 *
60 * @global
61 *
62 * @var {object} drupalTranslations
63 */
64
65/**
66 * Global Drupal object.
67 *
68 * All Drupal JavaScript APIs are contained in this namespace.
69 *
70 * @global
71 *
72 * @namespace
73 */
74window.Drupal = { behaviors: {}, locale: {} };
75
76// JavaScript should be made compatible with libraries other than jQuery by
77// wrapping it in an anonymous closure.
78(function (
79  Drupal,
80  drupalSettings,
81  drupalTranslations,
82  console,
83  Proxy,
84  Reflect,
85) {
86  /**
87   * Helper to rethrow errors asynchronously.
88   *
89   * This way Errors bubbles up outside of the original callstack, making it
90   * easier to debug errors in the browser.
91   *
92   * @param {Error|string} error
93   *   The error to be thrown.
94   */
95  Drupal.throwError = function (error) {
96    setTimeout(() => {
97      throw error;
98    }, 0);
99  };
100
101  /**
102   * Custom error thrown after attach/detach if one or more behaviors failed.
103   * Initializes the JavaScript behaviors for page loads and Ajax requests.
104   *
105   * @callback Drupal~behaviorAttach
106   *
107   * @param {HTMLDocument|HTMLElement} context
108   *   An element to detach behaviors from.
109   * @param {?object} settings
110   *   An object containing settings for the current context. It is rarely used.
111   *
112   * @see Drupal.attachBehaviors
113   */
114
115  /**
116   * Reverts and cleans up JavaScript behavior initialization.
117   *
118   * @callback Drupal~behaviorDetach
119   *
120   * @param {HTMLDocument|HTMLElement} context
121   *   An element to attach behaviors to.
122   * @param {object} settings
123   *   An object containing settings for the current context.
124   * @param {string} trigger
125   *   One of `'unload'`, `'move'`, or `'serialize'`.
126   *
127   * @see Drupal.detachBehaviors
128   */
129
130  /**
131   * @typedef {object} Drupal~behavior
132   *
133   * @prop {Drupal~behaviorAttach} attach
134   *   Function run on page load and after an Ajax call.
135   * @prop {Drupal~behaviorDetach} [detach]
136   *   Function run when content is serialized or removed from the page.
137   */
138
139  /**
140   * Holds all initialization methods.
141   *
142   * @namespace Drupal.behaviors
143   *
144   * @type {Object.<string, Drupal~behavior>}
145   */
146
147  /**
148   * Defines a behavior to be run during attach and detach phases.
149   *
150   * Attaches all registered behaviors to a page element.
151   *
152   * Behaviors are event-triggered actions that attach to page elements,
153   * enhancing default non-JavaScript UIs. Behaviors are registered in the
154   * {@link Drupal.behaviors} object using the method 'attach' and optionally
155   * also 'detach'.
156   *
157   * {@link Drupal.attachBehaviors} is added below to the `jQuery.ready` event
158   * and therefore runs on initial page load. Developers implementing Ajax in
159   * their solutions should also call this function after new page content has
160   * been loaded, feeding in an element to be processed, in order to attach all
161   * behaviors to the new content.
162   *
163   * Behaviors should use `var elements =
164   * once('behavior-name', selector, context);` to ensure the behavior is
165   * attached only once to a given element. (Doing so enables the reprocessing
166   * of given elements, which may be needed on occasion despite the ability to
167   * limit behavior attachment to a particular element.)
168   *
169   * @example
170   * Drupal.behaviors.behaviorName = {
171   *   attach: function (context, settings) {
172   *     // ...
173   *   },
174   *   detach: function (context, settings, trigger) {
175   *     // ...
176   *   }
177   * };
178   *
179   * @param {HTMLDocument|HTMLElement} [context=document]
180   *   An element to attach behaviors to.
181   * @param {object} [settings=drupalSettings]
182   *   An object containing settings for the current context. If none is given,
183   *   the global {@link drupalSettings} object is used.
184   *
185   * @see Drupal~behaviorAttach
186   * @see Drupal.detachBehaviors
187   *
188   * @throws {Drupal~DrupalBehaviorError}
189   */
190  Drupal.attachBehaviors = function (context, settings) {
191    context = context || document;
192    settings = settings || drupalSettings;
193    const behaviors = Drupal.behaviors;
194    // Execute all of them.
195    Object.keys(behaviors || {}).forEach((i) => {
196      if (typeof behaviors[i].attach === 'function') {
197        // Don't stop the execution of behaviors in case of an error.
198        try {
199          behaviors[i].attach(context, settings);
200        } catch (e) {
201          Drupal.throwError(e);
202        }
203      }
204    });
205  };
206
207  /**
208   * Detaches registered behaviors from a page element.
209   *
210   * Developers implementing Ajax in their solutions should call this function
211   * before page content is about to be removed, feeding in an element to be
212   * processed, in order to allow special behaviors to detach from the content.
213   *
214   * Such implementations should use `once.filter()` and `once.remove()` to find
215   * elements with their corresponding `Drupal.behaviors.behaviorName.attach`
216   * implementation, i.e. `once.remove('behaviorName', selector, context)`,
217   * to ensure the behavior is detached only from previously processed elements.
218   *
219   * @param {HTMLDocument|HTMLElement} [context=document]
220   *   An element to detach behaviors from.
221   * @param {object} [settings=drupalSettings]
222   *   An object containing settings for the current context. If none given,
223   *   the global {@link drupalSettings} object is used.
224   * @param {string} [trigger='unload']
225   *   A string containing what's causing the behaviors to be detached. The
226   *   possible triggers are:
227   *   - `'unload'`: The context element is being removed from the DOM.
228   *   - `'move'`: The element is about to be moved within the DOM (for example,
229   *     during a tabledrag row swap). After the move is completed,
230   *     {@link Drupal.attachBehaviors} is called, so that the behavior can undo
231   *     whatever it did in response to the move. Many behaviors won't need to
232   *     do anything simply in response to the element being moved, but because
233   *     IFRAME elements reload their "src" when being moved within the DOM,
234   *     behaviors bound to IFRAME elements (like WYSIWYG editors) may need to
235   *     take some action.
236   *   - `'serialize'`: When an Ajax form is submitted, this is called with the
237   *     form as the context. This provides every behavior within the form an
238   *     opportunity to ensure that the field elements have correct content
239   *     in them before the form is serialized. The canonical use-case is so
240   *     that WYSIWYG editors can update the hidden textarea to which they are
241   *     bound.
242   *
243   * @throws {Drupal~DrupalBehaviorError}
244   *
245   * @see Drupal~behaviorDetach
246   * @see Drupal.attachBehaviors
247   */
248  Drupal.detachBehaviors = function (context, settings, trigger) {
249    context = context || document;
250    settings = settings || drupalSettings;
251    trigger = trigger || 'unload';
252    const behaviors = Drupal.behaviors;
253    // Execute all of them.
254    Object.keys(behaviors || {}).forEach((i) => {
255      if (typeof behaviors[i].detach === 'function') {
256        // Don't stop the execution of behaviors in case of an error.
257        try {
258          behaviors[i].detach(context, settings, trigger);
259        } catch (e) {
260          Drupal.throwError(e);
261        }
262      }
263    });
264  };
265
266  /**
267   * Encodes special characters in a plain-text string for display as HTML.
268   *
269   * @param {string} str
270   *   The string to be encoded.
271   *
272   * @return {string}
273   *   The encoded string.
274   *
275   * @ingroup sanitization
276   */
277  Drupal.checkPlain = function (str) {
278    str = str
279      .toString()
280      .replace(/&/g, '&amp;')
281      .replace(/</g, '&lt;')
282      .replace(/>/g, '&gt;')
283      .replace(/"/g, '&quot;')
284      .replace(/'/g, '&#39;');
285    return str;
286  };
287
288  /**
289   * Replaces placeholders with sanitized values in a string.
290   *
291   * @param {string} str
292   *   A string with placeholders.
293   * @param {object} args
294   *   An object of replacements pairs to make. Incidences of any key in this
295   *   array are replaced with the corresponding value. Based on the first
296   *   character of the key, the value is escaped and/or themed:
297   *    - `'!variable'`: inserted as is.
298   *    - `'@variable'`: escape plain text to HTML ({@link Drupal.checkPlain}).
299   *    - `'%variable'`: escape text and theme as a placeholder for user-
300   *      submitted content ({@link Drupal.checkPlain} +
301   *      `{@link Drupal.theme}('placeholder')`).
302   *
303   * @return {string}
304   *   The formatted string.
305   *
306   * @see Drupal.t
307   */
308  Drupal.formatString = function (str, args) {
309    // Keep args intact.
310    const processedArgs = {};
311    // Transform arguments before inserting them.
312    Object.keys(args || {}).forEach((key) => {
313      switch (key.charAt(0)) {
314        // Escaped only.
315        case '@':
316          processedArgs[key] = Drupal.checkPlain(args[key]);
317          break;
318
319        // Pass-through.
320        case '!':
321          processedArgs[key] = args[key];
322          break;
323
324        // Escaped and placeholder.
325        default:
326          processedArgs[key] = Drupal.theme('placeholder', args[key]);
327          break;
328      }
329    });
330
331    return Drupal.stringReplace(str, processedArgs, null);
332  };
333
334  /**
335   * Replaces substring.
336   *
337   * The longest keys will be tried first. Once a substring has been replaced,
338   * its new value will not be searched again.
339   *
340   * @param {string} str
341   *   A string with placeholders.
342   * @param {object} args
343   *   Key-value pairs.
344   * @param {Array|null} keys
345   *   Array of keys from `args`. Internal use only.
346   *
347   * @return {string}
348   *   The replaced string.
349   */
350  Drupal.stringReplace = function (str, args, keys) {
351    if (str.length === 0) {
352      return str;
353    }
354
355    // If the array of keys is not passed then collect the keys from the args.
356    if (!Array.isArray(keys)) {
357      keys = Object.keys(args || {});
358
359      // Order the keys by the character length. The shortest one is the first.
360      keys.sort((a, b) => a.length - b.length);
361    }
362
363    if (keys.length === 0) {
364      return str;
365    }
366
367    // Take next longest one from the end.
368    const key = keys.pop();
369    const fragments = str.split(key);
370
371    if (keys.length) {
372      for (let i = 0; i < fragments.length; i++) {
373        // Process each fragment with a copy of remaining keys.
374        fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));
375      }
376    }
377
378    return fragments.join(args[key]);
379  };
380
381  /**
382   * Translates strings to the page language, or a given language.
383   *
384   * See the documentation of the server-side t() function for further details.
385   *
386   * @param {string} str
387   *   A string containing the English text to translate.
388   * @param {Object.<string, string>} [args]
389   *   An object of replacements pairs to make after translation. Incidences
390   *   of any key in this array are replaced with the corresponding value.
391   *   See {@link Drupal.formatString}.
392   * @param {object} [options]
393   *   Additional options for translation.
394   * @param {string} [options.context='']
395   *   The context the source string belongs to.
396   *
397   * @return {string}
398   *   The formatted string.
399   *   The translated string.
400   */
401  Drupal.t = function (str, args, options) {
402    options = options || {};
403    options.context = options.context || '';
404
405    // Fetch the localized version of the string.
406    if (
407      typeof drupalTranslations !== 'undefined' &&
408      drupalTranslations.strings &&
409      drupalTranslations.strings[options.context] &&
410      drupalTranslations.strings[options.context][str]
411    ) {
412      str = drupalTranslations.strings[options.context][str];
413    }
414
415    if (args) {
416      str = Drupal.formatString(str, args);
417    }
418    return str;
419  };
420
421  /**
422   * Returns the URL to a Drupal page.
423   *
424   * @param {string} path
425   *   Drupal path to transform to URL.
426   *
427   * @return {string}
428   *   The full URL.
429   */
430  Drupal.url = function (path) {
431    return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;
432  };
433
434  /**
435   * Returns the passed in URL as an absolute URL.
436   *
437   * @param {string} url
438   *   The URL string to be normalized to an absolute URL.
439   *
440   * @return {string}
441   *   The normalized, absolute URL.
442   *
443   * @see https://github.com/angular/angular.js/blob/v1.4.4/src/ng/urlUtils.js
444   * @see https://grack.com/blog/2009/11/17/absolutizing-url-in-javascript
445   * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L53
446   */
447  Drupal.url.toAbsolute = function (url) {
448    const urlParsingNode = document.createElement('a');
449
450    // Decode the URL first; this is required by IE <= 6. Decoding non-UTF-8
451    // strings may throw an exception.
452    try {
453      url = decodeURIComponent(url);
454    } catch (e) {
455      // Empty.
456    }
457
458    urlParsingNode.setAttribute('href', url);
459
460    // IE <= 7 normalizes the URL when assigned to the anchor node similar to
461    // the other browsers.
462    return urlParsingNode.cloneNode(false).href;
463  };
464
465  /**
466   * Returns true if the URL is within Drupal's base path.
467   *
468   * @param {string} url
469   *   The URL string to be tested.
470   *
471   * @return {boolean}
472   *   `true` if local.
473   *
474   * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L58
475   */
476  Drupal.url.isLocal = function (url) {
477    // Always use browser-derived absolute URLs in the comparison, to avoid
478    // attempts to break out of the base path using directory traversal.
479    let absoluteUrl = Drupal.url.toAbsolute(url);
480    let { protocol } = window.location;
481
482    // Consider URLs that match this site's base URL but use HTTPS instead of HTTP
483    // as local as well.
484    if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {
485      protocol = 'https:';
486    }
487    let baseUrl = `${protocol}//${
488      window.location.host
489    }${drupalSettings.path.baseUrl.slice(0, -1)}`;
490
491    // Decoding non-UTF-8 strings may throw an exception.
492    try {
493      absoluteUrl = decodeURIComponent(absoluteUrl);
494    } catch (e) {
495      // Empty.
496    }
497    try {
498      baseUrl = decodeURIComponent(baseUrl);
499    } catch (e) {
500      // Empty.
501    }
502
503    // The given URL matches the site's base URL, or has a path under the site's
504    // base URL.
505    return absoluteUrl === baseUrl || absoluteUrl.indexOf(`${baseUrl}/`) === 0;
506  };
507
508  /**
509   * Formats a string containing a count of items.
510   *
511   * This function ensures that the string is pluralized correctly. Since
512   * {@link Drupal.t} is called by this function, make sure not to pass
513   * already-localized strings to it.
514   *
515   * See the documentation of the server-side
516   * \Drupal\Core\StringTranslation\TranslationInterface::formatPlural()
517   * function for more details.
518   *
519   * @param {number} count
520   *   The item count to display.
521   * @param {string} singular
522   *   The string for the singular case. Please make sure it is clear this is
523   *   singular, to ease translation (e.g. use "1 new comment" instead of "1
524   *   new"). Do not use @count in the singular string.
525   * @param {string} plural
526   *   The string for the plural case. Please make sure it is clear this is
527   *   plural, to ease translation. Use @count in place of the item count, as in
528   *   "@count new comments".
529   * @param {object} [args]
530   *   An object of replacements pairs to make after translation. Incidences
531   *   of any key in this array are replaced with the corresponding value.
532   *   See {@link Drupal.formatString}.
533   *   Note that you do not need to include @count in this array.
534   *   This replacement is done automatically for the plural case.
535   * @param {object} [options]
536   *   The options to pass to the {@link Drupal.t} function.
537   *
538   * @return {string}
539   *   A translated string.
540   */
541  Drupal.formatPlural = function (count, singular, plural, args, options) {
542    args = args || {};
543    args['@count'] = count;
544
545    const pluralDelimiter = drupalSettings.pluralDelimiter;
546    const translations = Drupal.t(
547      singular + pluralDelimiter + plural,
548      args,
549      options,
550    ).split(pluralDelimiter);
551    let index = 0;
552
553    // Determine the index of the plural form.
554    if (
555      typeof drupalTranslations !== 'undefined' &&
556      drupalTranslations.pluralFormula
557    ) {
558      index =
559        count in drupalTranslations.pluralFormula
560          ? drupalTranslations.pluralFormula[count]
561          : drupalTranslations.pluralFormula.default;
562    } else if (args['@count'] !== 1) {
563      index = 1;
564    }
565
566    return translations[index];
567  };
568
569  /**
570   * Encodes a Drupal path for use in a URL.
571   *
572   * For aesthetic reasons slashes are not escaped.
573   *
574   * @param {string} item
575   *   Unencoded path.
576   *
577   * @return {string}
578   *   The encoded path.
579   */
580  Drupal.encodePath = function (item) {
581    return window.encodeURIComponent(item).replace(/%2F/g, '/');
582  };
583
584  /**
585   * Triggers deprecation error.
586   *
587   * Deprecation errors are only triggered if deprecation errors haven't
588   * been suppressed.
589   *
590   * @param {Object} deprecation
591   *   The deprecation options.
592   * @param {string} deprecation.message
593   *   The deprecation message.
594   *
595   * @see https://www.drupal.org/core/deprecation#javascript
596   */
597  Drupal.deprecationError = ({ message }) => {
598    if (
599      drupalSettings.suppressDeprecationErrors === false &&
600      typeof console !== 'undefined' &&
601      console.warn
602    ) {
603      console.warn(`[Deprecation] ${message}`);
604    }
605  };
606
607  /**
608   * Triggers deprecation error when object property is being used.
609   *
610   * @param {Object} deprecation
611   *   The deprecation options.
612   * @param {Object} deprecation.target
613   *   The targeted object.
614   * @param {string} deprecation.deprecatedProperty
615   *   A key of the deprecated property.
616   * @param {string} deprecation.message
617   *   The deprecation message.
618   * @returns {Object}
619   *
620   * @see https://www.drupal.org/core/deprecation#javascript
621   */
622  Drupal.deprecatedProperty = ({ target, deprecatedProperty, message }) => {
623    // Proxy and Reflect are not supported by all browsers. Unsupported browsers
624    // are ignored since this is a development feature.
625    if (!Proxy || !Reflect) {
626      return target;
627    }
628
629    return new Proxy(target, {
630      get: (target, key, ...rest) => {
631        if (key === deprecatedProperty) {
632          Drupal.deprecationError({ message });
633        }
634        return Reflect.get(target, key, ...rest);
635      },
636    });
637  };
638
639  /**
640   * Generates the themed representation of a Drupal object.
641   *
642   * All requests for themed output must go through this function. It examines
643   * the request and routes it to the appropriate theme function. If the current
644   * theme does not provide an override function, the generic theme function is
645   * called.
646   *
647   * @example
648   * <caption>To retrieve the HTML for text that should be emphasized and
649   * displayed as a placeholder inside a sentence.</caption>
650   * Drupal.theme('placeholder', text);
651   *
652   * @namespace
653   *
654   * @param {function} func
655   *   The name of the theme function to call.
656   * @param {...args}
657   *   Additional arguments to pass along to the theme function.
658   *
659   * @return {string|object|HTMLElement|jQuery}
660   *   Any data the theme function returns. This could be a plain HTML string,
661   *   but also a complex object.
662   */
663  Drupal.theme = function (func, ...args) {
664    if (func in Drupal.theme) {
665      return Drupal.theme[func](...args);
666    }
667  };
668
669  /**
670   * Formats text for emphasized display in a placeholder inside a sentence.
671   *
672   * @param {string} str
673   *   The text to format (plain-text).
674   *
675   * @return {string}
676   *   The formatted text (html).
677   */
678  Drupal.theme.placeholder = function (str) {
679    return `<em class="placeholder">${Drupal.checkPlain(str)}</em>`;
680  };
681})(
682  Drupal,
683  window.drupalSettings,
684  window.drupalTranslations,
685  window.console,
686  window.Proxy,
687  window.Reflect,
688);
689;
690// Allow other JavaScript libraries to use $.
691if (window.jQuery) {
692  jQuery.noConflict();
693}
694
695// Class indicating that JS is enabled; used for styling purpose.
696document.documentElement.className += ' js';
697
698// JavaScript should be made compatible with libraries other than jQuery by
699// wrapping it in an anonymous closure.
700(function (Drupal, drupalSettings) {
701  /**
702   * Calls callback when document ready.
703   *
704   * @param {function} callback
705   *   The function to be called on document ready.
706   */
707  const domReady = (callback) => {
708    const listener = () => {
709      callback();
710      document.removeEventListener('DOMContentLoaded', listener);
711    };
712    if (document.readyState !== 'loading') {
713      setTimeout(callback, 0);
714    } else {
715      document.addEventListener('DOMContentLoaded', listener);
716    }
717  };
718
719  // Attach all behaviors.
720  domReady(() => {
721    Drupal.attachBehaviors(document, drupalSettings);
722  });
723})(Drupal, window.drupalSettings);
724;
725/*!
726  * Bootstrap v5.2.3 (https://getbootstrap.com/)
727  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
728  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
729  */
730(function (global, factory) {
731  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
732  typeof define === 'function' && define.amd ? define(factory) :
733  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory());
734})(this, (function () { 'use strict';
735
736  /**
737   * --------------------------------------------------------------------------
738   * Bootstrap (v5.2.3): util/index.js
739   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
740   * --------------------------------------------------------------------------
741   */
742  const MAX_UID = 1000000;
743  const MILLISECONDS_MULTIPLIER = 1000;
744  const TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)
745
746  const toType = object => {
747    if (object === null || object === undefined) {
748      return `${object}`;
749    }
750
751    return Object.prototype.toString.call(object).match(/\s([a-z]+)/i)[1].toLowerCase();
752  };
753  /**
754   * Public Util API
755   */
756
757
758  const getUID = prefix => {
759    do {
760      prefix += Math.floor(Math.random() * MAX_UID);
761    } while (document.getElementById(prefix));
762
763    return prefix;
764  };
765
766  const getSelector = element => {
767    let selector = element.getAttribute('data-bs-target');
768
769    if (!selector || selector === '#') {
770      let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,
771      // so everything starting with `#` or `.`. If a "real" URL is used as the selector,
772      // `document.querySelector` will rightfully complain it is invali
vendor: 6,030 bytes, lines 772-1000
772d.
773      // See https://github.com/twbs/bootstrap/issues/32273
774
775      if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {
776        return null;
777      } // Just in case some CMS puts out a full URL with the anchor appended
778
779
780      if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
781        hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
782      }
783
784      selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
785    }
786
787    return selector;
788  };
789
790  const getSelectorFromElement = element => {
791    const selector = getSelector(element);
792
793    if (selector) {
794      return document.querySelector(selector) ? selector : null;
795    }
796
797    return null;
798  };
799
800  const getElementFromSelector = element => {
801    const selector = getSelector(element);
802    return selector ? document.querySelector(selector) : null;
803  };
804
805  const getTransitionDurationFromElement = element => {
806    if (!element) {
807      return 0;
808    } // Get transition-duration of the element
809
810
811    let {
812      transitionDuration,
813      transitionDelay
814    } = window.getComputedStyle(element);
815    const floatTransitionDuration = Number.parseFloat(transitionDuration);
816    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
817
818    if (!floatTransitionDuration && !floatTransitionDelay) {
819      return 0;
820    } // If multiple durations are defined, take the first
821
822
823    transitionDuration = transitionDuration.split(',')[0];
824    transitionDelay = transitionDelay.split(',')[0];
825    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
826  };
827
828  const triggerTransitionEnd = element => {
829    element.dispatchEvent(new Event(TRANSITION_END));
830  };
831
832  const isElement$1 = object => {
833    if (!object || typeof object !== 'object') {
834      return false;
835    }
836
837    if (typeof object.jquery !== 'undefined') {
838      object = object[0];
839    }
840
841    return typeof object.nodeType !== 'undefined';
842  };
843
844  const getElement = object => {
845    // it's a jQuery object or a node element
846    if (isElement$1(object)) {
847      return object.jquery ? object[0] : object;
848    }
849
850    if (typeof object === 'string' && object.length > 0) {
851      return document.querySelector(object);
852    }
853
854    return null;
855  };
856
857  const isVisible = element => {
858    if (!isElement$1(element) || element.getClientRects().length === 0) {
859      return false;
860    }
861
862    const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed
863
864    const closedDetails = element.closest('details:not([open])');
865
866    if (!closedDetails) {
867      return elementIsVisible;
868    }
869
870    if (closedDetails !== element) {
871      const summary = element.closest('summary');
872
873      if (summary && summary.parentNode !== closedDetails) {
874        return false;
875      }
876
877      if (summary === null) {
878        return false;
879      }
880    }
881
882    return elementIsVisible;
883  };
884
885  const isDisabled = element => {
886    if (!element || element.nodeType !== Node.ELEMENT_NODE) {
887      return true;
888    }
889
890    if (element.classList.contains('disabled')) {
891      return true;
892    }
893
894    if (typeof element.disabled !== 'undefined') {
895      return element.disabled;
896    }
897
898    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';
899  };
900
901  const findShadowRoot = element => {
902    if (!document.documentElement.attachShadow) {
903      return null;
904    } // Can find the shadow root otherwise it'll return the document
905
906
907    if (typeof element.getRootNode === 'function') {
908      const root = element.getRootNode();
909      return root instanceof ShadowRoot ? root : null;
910    }
911
912    if (element instanceof ShadowRoot) {
913      return element;
914    } // when we don't find a shadow root
915
916
917    if (!element.parentNode) {
918      return null;
919    }
920
921    return findShadowRoot(element.parentNode);
922  };
923
924  const noop = () => {};
925  /**
926   * Trick to restart an element's animation
927   *
928   * @param {HTMLElement} element
929   * @return void
930   *
931   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
932   */
933
934
935  const reflow = element => {
936    element.offsetHeight; // eslint-disable-line no-unused-expressions
937  };
938
939  const getjQuery = () => {
940    if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {
941      return window.jQuery;
942    }
943
944    return null;
945  };
946
947  const DOMContentLoadedCallbacks = [];
948
949  const onDOMContentLoaded = callback => {
950    if (document.readyState === 'loading') {
951      // add listener on the first call when the document is in loading state
952      if (!DOMContentLoadedCallbacks.length) {
953        document.addEventListener('DOMContentLoaded', () => {
954          for (const callback of DOMContentLoadedCallbacks) {
955            callback();
956          }
957        });
958      }
959
960      DOMContentLoadedCallbacks.push(callback);
961    } else {
962      callback();
963    }
964  };
965
966  const isRTL = () => document.documentElement.dir === 'rtl';
967
968  const defineJQueryPlugin = plugin => {
969    onDOMContentLoaded(() => {
970      const $ = getjQuery();
971      /* istanbul ignore if */
972
973      if ($) {
974        const name = plugin.NAME;
975        const JQUERY_NO_CONFLICT = $.fn[name];
976        $.fn[name] = plugin.jQueryInterface;
977        $.fn[name].Constructor = plugin;
978
979        $.fn[name].noConflict = () => {
980          $.fn[name] = JQUERY_NO_CONFLICT;
981          return plugin.jQueryInterface;
982        };
983      }
984    });
985  };
986
987  const execute = callback => {
988    if (typeof callback === 'function') {
989      callback();
990    }
991  };
992
993  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
994    if (!waitForTransition) {
995      execute(callback);
996      return;
997    }
998
999    const durationPadding = 5;
1000    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
vendor: 5,298 bytes, lines 1001-1155
1001    let called = false;
1002
1003    const handler = ({
1004      target
1005    }) => {
1006      if (target !== transitionElement) {
1007        return;
1008      }
1009
1010      called = true;
1011      transitionElement.removeEventListener(TRANSITION_END, handler);
1012      execute(callback);
1013    };
1014
1015    transitionElement.addEventListener(TRANSITION_END, handler);
1016    setTimeout(() => {
1017      if (!called) {
1018        triggerTransitionEnd(transitionElement);
1019      }
1020    }, emulatedDuration);
1021  };
1022  /**
1023   * Return the previous/next element of a list.
1024   *
1025   * @param {array} list    The list of elements
1026   * @param activeElement   The active element
1027   * @param shouldGetNext   Choose to get next or previous element
1028   * @param isCycleAllowed
1029   * @return {Element|elem} The proper element
1030   */
1031
1032
1033  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
1034    const listLength = list.length;
1035    let index = list.indexOf(activeElement); // if the element does not exist in the list return an element
1036    // depending on the direction and if cycle is allowed
1037
1038    if (index === -1) {
1039      return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];
1040    }
1041
1042    index += shouldGetNext ? 1 : -1;
1043
1044    if (isCycleAllowed) {
1045      index = (index + listLength) % listLength;
1046    }
1047
1048    return list[Math.max(0, Math.min(index, listLength - 1))];
1049  };
1050
1051  /**
1052   * --------------------------------------------------------------------------
1053   * Bootstrap (v5.2.3): dom/event-handler.js
1054   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1055   * --------------------------------------------------------------------------
1056   */
1057  /**
1058   * Constants
1059   */
1060
1061  const namespaceRegex = /[^.]*(?=\..*)\.|.*/;
1062  const stripNameRegex = /\..*/;
1063  const stripUidRegex = /::\d+$/;
1064  const eventRegistry = {}; // Events storage
1065
1066  let uidEvent = 1;
1067  const customEvents = {
1068    mouseenter: 'mouseover',
1069    mouseleave: 'mouseout'
1070  };
1071  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']);
1072  /**
1073   * Private methods
1074   */
1075
1076  function makeEventUid(element, uid) {
1077    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;
1078  }
1079
1080  function getElementEvents(element) {
1081    const uid = makeEventUid(element);
1082    element.uidEvent = uid;
1083    eventRegistry[uid] = eventRegistry[uid] || {};
1084    return eventRegistry[uid];
1085  }
1086
1087  function bootstrapHandler(element, fn) {
1088    return function handler(event) {
1089      hydrateObj(event, {
1090        delegateTarget: element
1091      });
1092
1093      if (handler.oneOff) {
1094        EventHandler.off(element, event.type, fn);
1095      }
1096
1097      return fn.apply(element, [event]);
1098    };
1099  }
1100
1101  function bootstrapDelegationHandler(element, selector, fn) {
1102    return function handler(event) {
1103      const domElements = element.querySelectorAll(selector);
1104
1105      for (let {
1106        target
1107      } = event; target && target !== this; target = target.parentNode) {
1108        for (const domElement of domElements) {
1109          if (domElement !== target) {
1110            continue;
1111          }
1112
1113          hydrateObj(event, {
1114            delegateTarget: target
1115          });
1116
1117          if (handler.oneOff) {
1118            EventHandler.off(element, event.type, selector, fn);
1119          }
1120
1121          return fn.apply(target, [event]);
1122        }
1123      }
1124    };
1125  }
1126
1127  function findHandler(events, callable, delegationSelector = null) {
1128    return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);
1129  }
1130
1131  function normalizeParameters(originalTypeEvent, handler, delegationFunction) {
1132    const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check
1133
1134    const callable = isDelegated ? delegationFunction : handler || delegationFunction;
1135    let typeEvent = getTypeEvent(originalTypeEvent);
1136
1137    if (!nativeEvents.has(typeEvent)) {
1138      typeEvent = originalTypeEvent;
1139    }
1140
1141    return [isDelegated, callable, typeEvent];
1142  }
1143
1144  function addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {
1145    if (typeof originalTypeEvent !== 'string' || !element) {
1146      return;
1147    }
1148
1149    let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position
1150    // this prevents the handler from being dispatched the same way as mouseover or mouseout does
1151
1152    if (originalTypeEvent in customEvents) {
1153      const wrapFunction = fn => {
1154        return function (event) {
1155          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {
vendor: 4,666 bytes, lines 1156-1302
1156            return fn.call(this, event);
1157          }
1158        };
1159      };
1160
1161      callable = wrapFunction(callable);
1162    }
1163
1164    const events = getElementEvents(element);
1165    const handlers = events[typeEvent] || (events[typeEvent] = {});
1166    const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);
1167
1168    if (previousFunction) {
1169      previousFunction.oneOff = previousFunction.oneOff && oneOff;
1170      return;
1171    }
1172
1173    const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));
1174    const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);
1175    fn.delegationSelector = isDelegated ? handler : null;
1176    fn.callable = callable;
1177    fn.oneOff = oneOff;
1178    fn.uidEvent = uid;
1179    handlers[uid] = fn;
1180    element.addEventListener(typeEvent, fn, isDelegated);
1181  }
1182
1183  function removeHandler(element, events, typeEvent, handler, delegationSelector) {
1184    const fn = findHandler(events[typeEvent], handler, delegationSelector);
1185
1186    if (!fn) {
1187      return;
1188    }
1189
1190    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));
1191    delete events[typeEvent][fn.uidEvent];
1192  }
1193
1194  function removeNamespacedHandlers(element, events, typeEvent, namespace) {
1195    const storeElementEvent = events[typeEvent] || {};
1196
1197    for (const handlerKey of Object.keys(storeElementEvent)) {
1198      if (handlerKey.includes(namespace)) {
1199        const event = storeElementEvent[handlerKey];
1200        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1201      }
1202    }
1203  }
1204
1205  function getTypeEvent(event) {
1206    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')
1207    event = event.replace(stripNameRegex, '');
1208    return customEvents[event] || event;
1209  }
1210
1211  const EventHandler = {
1212    on(element, event, handler, delegationFunction) {
1213      addHandler(element, event, handler, delegationFunction, false);
1214    },
1215
1216    one(element, event, handler, delegationFunction) {
1217      addHandler(element, event, handler, delegationFunction, true);
1218    },
1219
1220    off(element, originalTypeEvent, handler, delegationFunction) {
1221      if (typeof originalTypeEvent !== 'string' || !element) {
1222        return;
1223      }
1224
1225      const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);
1226      const inNamespace = typeEvent !== originalTypeEvent;
1227      const events = getElementEvents(element);
1228      const storeElementEvent = events[typeEvent] || {};
1229      const isNamespace = originalTypeEvent.startsWith('.');
1230
1231      if (typeof callable !== 'undefined') {
1232        // Simplest case: handler is passed, remove that listener ONLY.
1233        if (!Object.keys(storeElementEvent).length) {
1234          return;
1235        }
1236
1237        removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);
1238        return;
1239      }
1240
1241      if (isNamespace) {
1242        for (const elementEvent of Object.keys(events)) {
1243          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));
1244        }
1245      }
1246
1247      for (const keyHandlers of Object.keys(storeElementEvent)) {
1248        const handlerKey = keyHandlers.replace(stripUidRegex, '');
1249
1250        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {
1251          const event = storeElementEvent[keyHandlers];
1252          removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);
1253        }
1254      }
1255    },
1256
1257    trigger(element, event, args) {
1258      if (typeof event !== 'string' || !element) {
1259        return null;
1260      }
1261
1262      const $ = getjQuery();
1263      const typeEvent = getTypeEvent(event);
1264      const inNamespace = event !== typeEvent;
1265      let jQueryEvent = null;
1266      let bubbles = true;
1267      let nativeDispatch = true;
1268      let defaultPrevented = false;
1269
1270      if (inNamespace && $) {
1271        jQueryEvent = $.Event(event, args);
1272        $(element).trigger(jQueryEvent);
1273        bubbles = !jQueryEvent.isPropagationStopped();
1274        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();
1275        defaultPrevented = jQueryEvent.isDefaultPrevented();
1276      }
1277
1278      let evt = new Event(event, {
1279        bubbles,
1280        cancelable: true
1281      });
1282      evt = hydrateObj(evt, args);
1283
1284      if (defaultPrevented) {
1285        evt.preventDefault();
1286      }
1287
1288      if (nativeDispatch) {
1289        element.dispatchEvent(evt);
1290      }
1291
1292      if (evt.defaultPrevented && jQueryEvent) {
1293        jQueryEvent.preventDefault();
1294      }
1295
1296      return evt;
1297    }
1298
1299  };
1300
1301  function hydrateObj(obj, meta) {
1302    for (const [key, value] of Object.entries(meta || {})) {
vendor: 6,170 bytes, lines 1303-1536
1303      try {
1304        obj[key] = value;
1305      } catch (_unused) {
1306        Object.defineProperty(obj, key, {
1307          configurable: true,
1308
1309          get() {
1310            return value;
1311          }
1312
1313        });
1314      }
1315    }
1316
1317    return obj;
1318  }
1319
1320  /**
1321   * --------------------------------------------------------------------------
1322   * Bootstrap (v5.2.3): dom/data.js
1323   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1324   * --------------------------------------------------------------------------
1325   */
1326
1327  /**
1328   * Constants
1329   */
1330  const elementMap = new Map();
1331  const Data = {
1332    set(element, key, instance) {
1333      if (!elementMap.has(element)) {
1334        elementMap.set(element, new Map());
1335      }
1336
1337      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element
1338      // can be removed later when multiple key/instances are fine to be used
1339
1340      if (!instanceMap.has(key) && instanceMap.size !== 0) {
1341        // eslint-disable-next-line no-console
1342        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);
1343        return;
1344      }
1345
1346      instanceMap.set(key, instance);
1347    },
1348
1349    get(element, key) {
1350      if (elementMap.has(element)) {
1351        return elementMap.get(element).get(key) || null;
1352      }
1353
1354      return null;
1355    },
1356
1357    remove(element, key) {
1358      if (!elementMap.has(element)) {
1359        return;
1360      }
1361
1362      const instanceMap = elementMap.get(element);
1363      instanceMap.delete(key); // free up element references if there are no instances left for an element
1364
1365      if (instanceMap.size === 0) {
1366        elementMap.delete(element);
1367      }
1368    }
1369
1370  };
1371
1372  /**
1373   * --------------------------------------------------------------------------
1374   * Bootstrap (v5.2.3): dom/manipulator.js
1375   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1376   * --------------------------------------------------------------------------
1377   */
1378  function normalizeData(value) {
1379    if (value === 'true') {
1380      return true;
1381    }
1382
1383    if (value === 'false') {
1384      return false;
1385    }
1386
1387    if (value === Number(value).toString()) {
1388      return Number(value);
1389    }
1390
1391    if (value === '' || value === 'null') {
1392      return null;
1393    }
1394
1395    if (typeof value !== 'string') {
1396      return value;
1397    }
1398
1399    try {
1400      return JSON.parse(decodeURIComponent(value));
1401    } catch (_unused) {
1402      return value;
1403    }
1404  }
1405
1406  function normalizeDataKey(key) {
1407    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
1408  }
1409
1410  const Manipulator = {
1411    setDataAttribute(element, key, value) {
1412      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
1413    },
1414
1415    removeDataAttribute(element, key) {
1416      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
1417    },
1418
1419    getDataAttributes(element) {
1420      if (!element) {
1421        return {};
1422      }
1423
1424      const attributes = {};
1425      const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));
1426
1427      for (const key of bsKeys) {
1428        let pureKey = key.replace(/^bs/, '');
1429        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
1430        attributes[pureKey] = normalizeData(element.dataset[key]);
1431      }
1432
1433      return attributes;
1434    },
1435
1436    getDataAttribute(element, key) {
1437      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
1438    }
1439
1440  };
1441
1442  /**
1443   * --------------------------------------------------------------------------
1444   * Bootstrap (v5.2.3): util/config.js
1445   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1446   * --------------------------------------------------------------------------
1447   */
1448  /**
1449   * Class definition
1450   */
1451
1452  class Config {
1453    // Getters
1454    static get Default() {
1455      return {};
1456    }
1457
1458    static get DefaultType() {
1459      return {};
1460    }
1461
1462    static get NAME() {
1463      throw new Error('You have to implement the static method "NAME", for each component!');
1464    }
1465
1466    _getConfig(config) {
1467      config = this._mergeConfigObj(config);
1468      config = this._configAfterMerge(config);
1469
1470      this._typeCheckConfig(config);
1471
1472      return config;
1473    }
1474
1475    _configAfterMerge(config) {
1476      return config;
1477    }
1478
1479    _mergeConfigObj(config, element) {
1480      const jsonConfig = isElement$1(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
1481
1482      return { ...this.constructor.Default,
1483        ...(typeof jsonConfig === 'object' ? jsonConfig : {}),
1484        ...(isElement$1(element) ? Manipulator.getDataAttributes(element) : {}),
1485        ...(typeof config === 'object' ? config : {})
1486      };
1487    }
1488
1489    _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
1490      for (const property of Object.keys(configTypes)) {
1491        const expectedTypes = configTypes[property];
1492        const value = config[property];
1493        const valueType = isElement$1(value) ? 'element' : toType(value);
1494
1495        if (!new RegExp(expectedTypes).test(valueType)) {
1496          throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`);
1497        }
1498      }
1499    }
1500
1501  }
1502
1503  /**
1504   * --------------------------------------------------------------------------
1505   * Bootstrap (v5.2.3): base-component.js
1506   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1507   * --------------------------------------------------------------------------
1508   */
1509  /**
1510   * Constants
1511   */
1512
1513  const VERSION = '5.2.3';
1514  /**
1515   * Class definition
1516   */
1517
1518  class BaseComponent extends Config {
1519    constructor(element, config) {
1520      super();
1521      element = getElement(element);
1522
1523      if (!element) {
1524        return;
1525      }
1526
1527      this._element = element;
1528      this._config = this._getConfig(config);
1529      Data.set(this._element, this.constructor.DATA_KEY, this);
1530    } // Public
1531
1532
1533    dispose() {
1534      Data.remove(this._element, this.constructor.DATA_KEY);
1535      EventHandler.off(this._element, this.constructor.EVENT_KEY);
1536
vendor: 2,511 bytes, lines 1537-1623
1537      for (const propertyName of Object.getOwnPropertyNames(this)) {
1538        this[propertyName] = null;
1539      }
1540    }
1541
1542    _queueCallback(callback, element, isAnimated = true) {
1543      executeAfterTransition(callback, element, isAnimated);
1544    }
1545
1546    _getConfig(config) {
1547      config = this._mergeConfigObj(config, this._element);
1548      config = this._configAfterMerge(config);
1549
1550      this._typeCheckConfig(config);
1551
1552      return config;
1553    } // Static
1554
1555
1556    static getInstance(element) {
1557      return Data.get(getElement(element), this.DATA_KEY);
1558    }
1559
1560    static getOrCreateInstance(element, config = {}) {
1561      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
1562    }
1563
1564    static get VERSION() {
1565      return VERSION;
1566    }
1567
1568    static get DATA_KEY() {
1569      return `bs.${this.NAME}`;
1570    }
1571
1572    static get EVENT_KEY() {
1573      return `.${this.DATA_KEY}`;
1574    }
1575
1576    static eventName(name) {
1577      return `${name}${this.EVENT_KEY}`;
1578    }
1579
1580  }
1581
1582  /**
1583   * --------------------------------------------------------------------------
1584   * Bootstrap (v5.2.3): util/component-functions.js
1585   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1586   * --------------------------------------------------------------------------
1587   */
1588
1589  const enableDismissTrigger = (component, method = 'hide') => {
1590    const clickEvent = `click.dismiss${component.EVENT_KEY}`;
1591    const name = component.NAME;
1592    EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
1593      if (['A', 'AREA'].includes(this.tagName)) {
1594        event.preventDefault();
1595      }
1596
1597      if (isDisabled(this)) {
1598        return;
1599      }
1600
1601      const target = getElementFromSelector(this) || this.closest(`.${name}`);
1602      const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
1603
1604      instance[method]();
1605    });
1606  };
1607
1608  /**
1609   * --------------------------------------------------------------------------
1610   * Bootstrap (v5.2.3): alert.js
1611   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1612   * --------------------------------------------------------------------------
1613   */
1614  /**
1615   * Constants
1616   */
1617
1618  const NAME$f = 'alert';
1619  const DATA_KEY$a = 'bs.alert';
1620  const EVENT_KEY$b = `.${DATA_KEY$a}`;
1621  const EVENT_CLOSE = `close${EVENT_KEY$b}`;
1622  const EVENT_CLOSED = `closed${EVENT_KEY$b}`;
1623  const CLASS_NAME_FADE$5 = 'fade';
vendor: 8,809 bytes, lines 1624-1969
1624  const CLASS_NAME_SHOW$8 = 'show';
1625  /**
1626   * Class definition
1627   */
1628
1629  class Alert extends BaseComponent {
1630    // Getters
1631    static get NAME() {
1632      return NAME$f;
1633    } // Public
1634
1635
1636    close() {
1637      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);
1638
1639      if (closeEvent.defaultPrevented) {
1640        return;
1641      }
1642
1643      this._element.classList.remove(CLASS_NAME_SHOW$8);
1644
1645      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);
1646
1647      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);
1648    } // Private
1649
1650
1651    _destroyElement() {
1652      this._element.remove();
1653
1654      EventHandler.trigger(this._element, EVENT_CLOSED);
1655      this.dispose();
1656    } // Static
1657
1658
1659    static jQueryInterface(config) {
1660      return this.each(function () {
1661        const data = Alert.getOrCreateInstance(this);
1662
1663        if (typeof config !== 'string') {
1664          return;
1665        }
1666
1667        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
1668          throw new TypeError(`No method named "${config}"`);
1669        }
1670
1671        data[config](this);
1672      });
1673    }
1674
1675  }
1676  /**
1677   * Data API implementation
1678   */
1679
1680
1681  enableDismissTrigger(Alert, 'close');
1682  /**
1683   * jQuery
1684   */
1685
1686  defineJQueryPlugin(Alert);
1687
1688  /**
1689   * --------------------------------------------------------------------------
1690   * Bootstrap (v5.2.3): button.js
1691   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1692   * --------------------------------------------------------------------------
1693   */
1694  /**
1695   * Constants
1696   */
1697
1698  const NAME$e = 'button';
1699  const DATA_KEY$9 = 'bs.button';
1700  const EVENT_KEY$a = `.${DATA_KEY$9}`;
1701  const DATA_API_KEY$6 = '.data-api';
1702  const CLASS_NAME_ACTIVE$3 = 'active';
1703  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle="button"]';
1704  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;
1705  /**
1706   * Class definition
1707   */
1708
1709  class Button extends BaseComponent {
1710    // Getters
1711    static get NAME() {
1712      return NAME$e;
1713    } // Public
1714
1715
1716    toggle() {
1717      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method
1718      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));
1719    } // Static
1720
1721
1722    static jQueryInterface(config) {
1723      return this.each(function () {
1724        const data = Button.getOrCreateInstance(this);
1725
1726        if (config === 'toggle') {
1727          data[config]();
1728        }
1729      });
1730    }
1731
1732  }
1733  /**
1734   * Data API implementation
1735   */
1736
1737
1738  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {
1739    event.preventDefault();
1740    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);
1741    const data = Button.getOrCreateInstance(button);
1742    data.toggle();
1743  });
1744  /**
1745   * jQuery
1746   */
1747
1748  defineJQueryPlugin(Button);
1749
1750  /**
1751   * --------------------------------------------------------------------------
1752   * Bootstrap (v5.2.3): dom/selector-engine.js
1753   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1754   * --------------------------------------------------------------------------
1755   */
1756  /**
1757   * Constants
1758   */
1759
1760  const SelectorEngine = {
1761    find(selector, element = document.documentElement) {
1762      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
1763    },
1764
1765    findOne(selector, element = document.documentElement) {
1766      return Element.prototype.querySelector.call(element, selector);
1767    },
1768
1769    children(element, selector) {
1770      return [].concat(...element.children).filter(child => child.matches(selector));
1771    },
1772
1773    parents(element, selector) {
1774      const parents = [];
1775      let ancestor = element.parentNode.closest(selector);
1776
1777      while (ancestor) {
1778        parents.push(ancestor);
1779        ancestor = ancestor.parentNode.closest(selector);
1780      }
1781
1782      return parents;
1783    },
1784
1785    prev(element, selector) {
1786      let previous = element.previousElementSibling;
1787
1788      while (previous) {
1789        if (previous.matches(selector)) {
1790          return [previous];
1791        }
1792
1793        previous = previous.previousElementSibling;
1794      }
1795
1796      return [];
1797    },
1798
1799    // TODO: this is now unused; remove later along with prev()
1800    next(element, selector) {
1801      let next = element.nextElementSibling;
1802
1803      while (next) {
1804        if (next.matches(selector)) {
1805          return [next];
1806        }
1807
1808        next = next.nextElementSibling;
1809      }
1810
1811      return [];
1812    },
1813
1814    focusableChildren(element) {
1815      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable="true"]'].map(selector => `${selector}:not([tabindex^="-"])`).join(',');
1816      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));
1817    }
1818
1819  };
1820
1821  /**
1822   * --------------------------------------------------------------------------
1823   * Bootstrap (v5.2.3): util/swipe.js
1824   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1825   * --------------------------------------------------------------------------
1826   */
1827  /**
1828   * Constants
1829   */
1830
1831  const NAME$d = 'swipe';
1832  const EVENT_KEY$9 = '.bs.swipe';
1833  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;
1834  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;
1835  const EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;
1836  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;
1837  const EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;
1838  const POINTER_TYPE_TOUCH = 'touch';
1839  const POINTER_TYPE_PEN = 'pen';
1840  const CLASS_NAME_POINTER_EVENT = 'pointer-event';
1841  const SWIPE_THRESHOLD = 40;
1842  const Default$c = {
1843    endCallback: null,
1844    leftCallback: null,
1845    rightCallback: null
1846  };
1847  const DefaultType$c = {
1848    endCallback: '(function|null)',
1849    leftCallback: '(function|null)',
1850    rightCallback: '(function|null)'
1851  };
1852  /**
1853   * Class definition
1854   */
1855
1856  class Swipe extends Config {
1857    constructor(element, config) {
1858      super();
1859      this._element = element;
1860
1861      if (!element || !Swipe.isSupported()) {
1862        return;
1863      }
1864
1865      this._config = this._getConfig(config);
1866      this._deltaX = 0;
1867      this._supportPointerEvents = Boolean(window.PointerEvent);
1868
1869      this._initEvents();
1870    } // Getters
1871
1872
1873    static get Default() {
1874      return Default$c;
1875    }
1876
1877    static get DefaultType() {
1878      return DefaultType$c;
1879    }
1880
1881    static get NAME() {
1882      return NAME$d;
1883    } // Public
1884
1885
1886    dispose() {
1887      EventHandler.off(this._element, EVENT_KEY$9);
1888    } // Private
1889
1890
1891    _start(event) {
1892      if (!this._supportPointerEvents) {
1893        this._deltaX = event.touches[0].clientX;
1894        return;
1895      }
1896
1897      if (this._eventIsPointerPenTouch(event)) {
1898        this._deltaX = event.clientX;
1899      }
1900    }
1901
1902    _end(event) {
1903      if (this._eventIsPointerPenTouch(event)) {
1904        this._deltaX = event.clientX - this._deltaX;
1905      }
1906
1907      this._handleSwipe();
1908
1909      execute(this._config.endCallback);
1910    }
1911
1912    _move(event) {
1913      this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;
1914    }
1915
1916    _handleSwipe() {
1917      const absDeltaX = Math.abs(this._deltaX);
1918
1919      if (absDeltaX <= SWIPE_THRESHOLD) {
1920        return;
1921      }
1922
1923      const direction = absDeltaX / this._deltaX;
1924      this._deltaX = 0;
1925
1926      if (!direction) {
1927        return;
1928      }
1929
1930      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);
1931    }
1932
1933    _initEvents() {
1934      if (this._supportPointerEvents) {
1935        EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));
1936        EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));
1937
1938        this._element.classList.add(CLASS_NAME_POINTER_EVENT);
1939      } else {
1940        EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));
1941        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));
1942        EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));
1943      }
1944    }
1945
1946    _eventIsPointerPenTouch(event) {
1947      return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);
1948    } // Static
1949
1950
1951    static isSupported() {
1952      return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
1953    }
1954
1955  }
1956
1957  /**
1958   * --------------------------------------------------------------------------
1959   * Bootstrap (v5.2.3): carousel.js
1960   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
1961   * --------------------------------------------------------------------------
1962   */
1963  /**
1964   * Constants
1965   */
1966
1967  const NAME$c = 'carousel';
1968  const DATA_KEY$8 = 'bs.carousel';
1969  const EVENT_KEY$8 = `.${DATA_KEY$8}`;
vendor: 24,803 bytes, lines 1970-2858
1970  const DATA_API_KEY$5 = '.data-api';
1971  const ARROW_LEFT_KEY$1 = 'ArrowLeft';
1972  const ARROW_RIGHT_KEY$1 = 'ArrowRight';
1973  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
1974
1975  const ORDER_NEXT = 'next';
1976  const ORDER_PREV = 'prev';
1977  const DIRECTION_LEFT = 'left';
1978  const DIRECTION_RIGHT = 'right';
1979  const EVENT_SLIDE = `slide${EVENT_KEY$8}`;
1980  const EVENT_SLID = `slid${EVENT_KEY$8}`;
1981  const EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;
1982  const EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;
1983  const EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;
1984  const EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;
1985  const EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;
1986  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;
1987  const CLASS_NAME_CAROUSEL = 'carousel';
1988  const CLASS_NAME_ACTIVE$2 = 'active';
1989  const CLASS_NAME_SLIDE = 'slide';
1990  const CLASS_NAME_END = 'carousel-item-end';
1991  const CLASS_NAME_START = 'carousel-item-start';
1992  const CLASS_NAME_NEXT = 'carousel-item-next';
1993  const CLASS_NAME_PREV = 'carousel-item-prev';
1994  const SELECTOR_ACTIVE = '.active';
1995  const SELECTOR_ITEM = '.carousel-item';
1996  const SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;
1997  const SELECTOR_ITEM_IMG = '.carousel-item img';
1998  const SELECTOR_INDICATORS = '.carousel-indicators';
1999  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';
2000  const SELECTOR_DATA_RIDE = '[data-bs-ride="carousel"]';
2001  const KEY_TO_DIRECTION = {
2002    [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,
2003    [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT
2004  };
2005  const Default$b = {
2006    interval: 5000,
2007    keyboard: true,
2008    pause: 'hover',
2009    ride: false,
2010    touch: true,
2011    wrap: true
2012  };
2013  const DefaultType$b = {
2014    interval: '(number|boolean)',
2015    // TODO:v6 remove boolean support
2016    keyboard: 'boolean',
2017    pause: '(string|boolean)',
2018    ride: '(boolean|string)',
2019    touch: 'boolean',
2020    wrap: 'boolean'
2021  };
2022  /**
2023   * Class definition
2024   */
2025
2026  class Carousel extends BaseComponent {
2027    constructor(element, config) {
2028      super(element, config);
2029      this._interval = null;
2030      this._activeElement = null;
2031      this._isSliding = false;
2032      this.touchTimeout = null;
2033      this._swipeHelper = null;
2034      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);
2035
2036      this._addEventListeners();
2037
2038      if (this._config.ride === CLASS_NAME_CAROUSEL) {
2039        this.cycle();
2040      }
2041    } // Getters
2042
2043
2044    static get Default() {
2045      return Default$b;
2046    }
2047
2048    static get DefaultType() {
2049      return DefaultType$b;
2050    }
2051
2052    static get NAME() {
2053      return NAME$c;
2054    } // Public
2055
2056
2057    next() {
2058      this._slide(ORDER_NEXT);
2059    }
2060
2061    nextWhenVisible() {
2062      // FIXME TODO use `document.visibilityState`
2063      // Don't call next when the page isn't visible
2064      // or the carousel or its parent isn't visible
2065      if (!document.hidden && isVisible(this._element)) {
2066        this.next();
2067      }
2068    }
2069
2070    prev() {
2071      this._slide(ORDER_PREV);
2072    }
2073
2074    pause() {
2075      if (this._isSliding) {
2076        triggerTransitionEnd(this._element);
2077      }
2078
2079      this._clearInterval();
2080    }
2081
2082    cycle() {
2083      this._clearInterval();
2084
2085      this._updateInterval();
2086
2087      this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);
2088    }
2089
2090    _maybeEnableCycle() {
2091      if (!this._config.ride) {
2092        return;
2093      }
2094
2095      if (this._isSliding) {
2096        EventHandler.one(this._element, EVENT_SLID, () => this.cycle());
2097        return;
2098      }
2099
2100      this.cycle();
2101    }
2102
2103    to(index) {
2104      const items = this._getItems();
2105
2106      if (index > items.length - 1 || index < 0) {
2107        return;
2108      }
2109
2110      if (this._isSliding) {
2111        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));
2112        return;
2113      }
2114
2115      const activeIndex = this._getItemIndex(this._getActive());
2116
2117      if (activeIndex === index) {
2118        return;
2119      }
2120
2121      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;
2122
2123      this._slide(order, items[index]);
2124    }
2125
2126    dispose() {
2127      if (this._swipeHelper) {
2128        this._swipeHelper.dispose();
2129      }
2130
2131      super.dispose();
2132    } // Private
2133
2134
2135    _configAfterMerge(config) {
2136      config.defaultInterval = config.interval;
2137      return config;
2138    }
2139
2140    _addEventListeners() {
2141      if (this._config.keyboard) {
2142        EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));
2143      }
2144
2145      if (this._config.pause === 'hover') {
2146        EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());
2147        EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());
2148      }
2149
2150      if (this._config.touch && Swipe.isSupported()) {
2151        this._addTouchEventListeners();
2152      }
2153    }
2154
2155    _addTouchEventListeners() {
2156      for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {
2157        EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());
2158      }
2159
2160      const endCallBack = () => {
2161        if (this._config.pause !== 'hover') {
2162          return;
2163        } // If it's a touch-enabled device, mouseenter/leave are fired as
2164        // part of the mouse compatibility events on first tap - the carousel
2165        // would stop cycling until user tapped out of it;
2166        // here, we listen for touchend, explicitly pause the carousel
2167        // (as if it's the second time we tap on it, mouseenter compat event
2168        // is NOT fired) and after a timeout (to allow for mouse compatibility
2169        // events to fire) we explicitly restart cycling
2170
2171
2172        this.pause();
2173
2174        if (this.touchTimeout) {
2175          clearTimeout(this.touchTimeout);
2176        }
2177
2178        this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);
2179      };
2180
2181      const swipeConfig = {
2182        leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),
2183        rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),
2184        endCallback: endCallBack
2185      };
2186      this._swipeHelper = new Swipe(this._element, swipeConfig);
2187    }
2188
2189    _keydown(event) {
2190      if (/input|textarea/i.test(event.target.tagName)) {
2191        return;
2192      }
2193
2194      const direction = KEY_TO_DIRECTION[event.key];
2195
2196      if (direction) {
2197        event.preventDefault();
2198
2199        this._slide(this._directionToOrder(direction));
2200      }
2201    }
2202
2203    _getItemIndex(element) {
2204      return this._getItems().indexOf(element);
2205    }
2206
2207    _setActiveIndicatorElement(index) {
2208      if (!this._indicatorsElement) {
2209        return;
2210      }
2211
2212      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);
2213      activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);
2214      activeIndicator.removeAttribute('aria-current');
2215      const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to="${index}"]`, this._indicatorsElement);
2216
2217      if (newActiveIndicator) {
2218        newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);
2219        newActiveIndicator.setAttribute('aria-current', 'true');
2220      }
2221    }
2222
2223    _updateInterval() {
2224      const element = this._activeElement || this._getActive();
2225
2226      if (!element) {
2227        return;
2228      }
2229
2230      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);
2231      this._config.interval = elementInterval || this._config.defaultInterval;
2232    }
2233
2234    _slide(order, element = null) {
2235      if (this._isSliding) {
2236        return;
2237      }
2238
2239      const activeElement = this._getActive();
2240
2241      const isNext = order === ORDER_NEXT;
2242      const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);
2243
2244      if (nextElement === activeElement) {
2245        return;
2246      }
2247
2248      const nextElementIndex = this._getItemIndex(nextElement);
2249
2250      const triggerEvent = eventName => {
2251        return EventHandler.trigger(this._element, eventName, {
2252          relatedTarget: nextElement,
2253          direction: this._orderToDirection(order),
2254          from: this._getItemIndex(activeElement),
2255          to: nextElementIndex
2256        });
2257      };
2258
2259      const slideEvent = triggerEvent(EVENT_SLIDE);
2260
2261      if (slideEvent.defaultPrevented) {
2262        return;
2263      }
2264
2265      if (!activeElement || !nextElement) {
2266        // Some weirdness is happening, so we bail
2267        // todo: change tests that use empty divs to avoid this check
2268        return;
2269      }
2270
2271      const isCycling = Boolean(this._interval);
2272      this.pause();
2273      this._isSliding = true;
2274
2275      this._setActiveIndicatorElement(nextElementIndex);
2276
2277      this._activeElement = nextElement;
2278      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;
2279      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;
2280      nextElement.classList.add(orderClassName);
2281      reflow(nextElement);
2282      activeElement.classList.add(directionalClassName);
2283      nextElement.classList.add(directionalClassName);
2284
2285      const completeCallBack = () => {
2286        nextElement.classList.remove(directionalClassName, orderClassName);
2287        nextElement.classList.add(CLASS_NAME_ACTIVE$2);
2288        activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);
2289        this._isSliding = false;
2290        triggerEvent(EVENT_SLID);
2291      };
2292
2293      this._queueCallback(completeCallBack, activeElement, this._isAnimated());
2294
2295      if (isCycling) {
2296        this.cycle();
2297      }
2298    }
2299
2300    _isAnimated() {
2301      return this._element.classList.contains(CLASS_NAME_SLIDE);
2302    }
2303
2304    _getActive() {
2305      return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);
2306    }
2307
2308    _getItems() {
2309      return SelectorEngine.find(SELECTOR_ITEM, this._element);
2310    }
2311
2312    _clearInterval() {
2313      if (this._interval) {
2314        clearInterval(this._interval);
2315        this._interval = null;
2316      }
2317    }
2318
2319    _directionToOrder(direction) {
2320      if (isRTL()) {
2321        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;
2322      }
2323
2324      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;
2325    }
2326
2327    _orderToDirection(order) {
2328      if (isRTL()) {
2329        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;
2330      }
2331
2332      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;
2333    } // Static
2334
2335
2336    static jQueryInterface(config) {
2337      return this.each(function () {
2338        const data = Carousel.getOrCreateInstance(this, config);
2339
2340        if (typeof config === 'number') {
2341          data.to(config);
2342          return;
2343        }
2344
2345        if (typeof config === 'string') {
2346          if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
2347            throw new TypeError(`No method named "${config}"`);
2348          }
2349
2350          data[config]();
2351        }
2352      });
2353    }
2354
2355  }
2356  /**
2357   * Data API implementation
2358   */
2359
2360
2361  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {
2362    const target = getElementFromSelector(this);
2363
2364    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {
2365      return;
2366    }
2367
2368    event.preventDefault();
2369    const carousel = Carousel.getOrCreateInstance(target);
2370    const slideIndex = this.getAttribute('data-bs-slide-to');
2371
2372    if (slideIndex) {
2373      carousel.to(slideIndex);
2374
2375      carousel._maybeEnableCycle();
2376
2377      return;
2378    }
2379
2380    if (Manipulator.getDataAttribute(this, 'slide') === 'next') {
2381      carousel.next();
2382
2383      carousel._maybeEnableCycle();
2384
2385      return;
2386    }
2387
2388    carousel.prev();
2389
2390    carousel._maybeEnableCycle();
2391  });
2392  EventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {
2393    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);
2394
2395    for (const carousel of carousels) {
2396      Carousel.getOrCreateInstance(carousel);
2397    }
2398  });
2399  /**
2400   * jQuery
2401   */
2402
2403  defineJQueryPlugin(Carousel);
2404
2405  /**
2406   * --------------------------------------------------------------------------
2407   * Bootstrap (v5.2.3): collapse.js
2408   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
2409   * --------------------------------------------------------------------------
2410   */
2411  /**
2412   * Constants
2413   */
2414
2415  const NAME$b = 'collapse';
2416  const DATA_KEY$7 = 'bs.collapse';
2417  const EVENT_KEY$7 = `.${DATA_KEY$7}`;
2418  const DATA_API_KEY$4 = '.data-api';
2419  const EVENT_SHOW$6 = `show${EVENT_KEY$7}`;
2420  const EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;
2421  const EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;
2422  const EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;
2423  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;
2424  const CLASS_NAME_SHOW$7 = 'show';
2425  const CLASS_NAME_COLLAPSE = 'collapse';
2426  const CLASS_NAME_COLLAPSING = 'collapsing';
2427  const CLASS_NAME_COLLAPSED = 'collapsed';
2428  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;
2429  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';
2430  const WIDTH = 'width';
2431  const HEIGHT = 'height';
2432  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';
2433  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle="collapse"]';
2434  const Default$a = {
2435    parent: null,
2436    toggle: true
2437  };
2438  const DefaultType$a = {
2439    parent: '(null|element)',
2440    toggle: 'boolean'
2441  };
2442  /**
2443   * Class definition
2444   */
2445
2446  class Collapse extends BaseComponent {
2447    constructor(element, config) {
2448      super(element, config);
2449      this._isTransitioning = false;
2450      this._triggerArray = [];
2451      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);
2452
2453      for (const elem of toggleList) {
2454        const selector = getSelectorFromElement(elem);
2455        const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);
2456
2457        if (selector !== null && filterElement.length) {
2458          this._triggerArray.push(elem);
2459        }
2460      }
2461
2462      this._initializeChildren();
2463
2464      if (!this._config.parent) {
2465        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());
2466      }
2467
2468      if (this._config.toggle) {
2469        this.toggle();
2470      }
2471    } // Getters
2472
2473
2474    static get Default() {
2475      return Default$a;
2476    }
2477
2478    static get DefaultType() {
2479      return DefaultType$a;
2480    }
2481
2482    static get NAME() {
2483      return NAME$b;
2484    } // Public
2485
2486
2487    toggle() {
2488      if (this._isShown()) {
2489        this.hide();
2490      } else {
2491        this.show();
2492      }
2493    }
2494
2495    show() {
2496      if (this._isTransitioning || this._isShown()) {
2497        return;
2498      }
2499
2500      let activeChildren = []; // find active children
2501
2502      if (this._config.parent) {
2503        activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {
2504          toggle: false
2505        }));
2506      }
2507
2508      if (activeChildren.length && activeChildren[0]._isTransitioning) {
2509        return;
2510      }
2511
2512      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);
2513
2514      if (startEvent.defaultPrevented) {
2515        return;
2516      }
2517
2518      for (const activeInstance of activeChildren) {
2519        activeInstance.hide();
2520      }
2521
2522      const dimension = this._getDimension();
2523
2524      this._element.classList.remove(CLASS_NAME_COLLAPSE);
2525
2526      this._element.classList.add(CLASS_NAME_COLLAPSING);
2527
2528      this._element.style[dimension] = 0;
2529
2530      this._addAriaAndCollapsedClass(this._triggerArray, true);
2531
2532      this._isTransitioning = true;
2533
2534      const complete = () => {
2535        this._isTransitioning = false;
2536
2537        this._element.classList.remove(CLASS_NAME_COLLAPSING);
2538
2539        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
2540
2541        this._element.style[dimension] = '';
2542        EventHandler.trigger(this._element, EVENT_SHOWN$6);
2543      };
2544
2545      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
2546      const scrollSize = `scroll${capitalizedDimension}`;
2547
2548      this._queueCallback(complete, this._element, true);
2549
2550      this._element.style[dimension] = `${this._element[scrollSize]}px`;
2551    }
2552
2553    hide() {
2554      if (this._isTransitioning || !this._isShown()) {
2555        return;
2556      }
2557
2558      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);
2559
2560      if (startEvent.defaultPrevented) {
2561        return;
2562      }
2563
2564      const dimension = this._getDimension();
2565
2566      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;
2567      reflow(this._element);
2568
2569      this._element.classList.add(CLASS_NAME_COLLAPSING);
2570
2571      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);
2572
2573      for (const trigger of this._triggerArray) {
2574        const element = getElementFromSelector(trigger);
2575
2576        if (element && !this._isShown(element)) {
2577          this._addAriaAndCollapsedClass([trigger], false);
2578        }
2579      }
2580
2581      this._isTransitioning = true;
2582
2583      const complete = () => {
2584        this._isTransitioning = false;
2585
2586        this._element.classList.remove(CLASS_NAME_COLLAPSING);
2587
2588        this._element.classList.add(CLASS_NAME_COLLAPSE);
2589
2590        EventHandler.trigger(this._element, EVENT_HIDDEN$6);
2591      };
2592
2593      this._element.style[dimension] = '';
2594
2595      this._queueCallback(complete, this._element, true);
2596    }
2597
2598    _isShown(element = this._element) {
2599      return element.classList.contains(CLASS_NAME_SHOW$7);
2600    } // Private
2601
2602
2603    _configAfterMerge(config) {
2604      config.toggle = Boolean(config.toggle); // Coerce string values
2605
2606      config.parent = getElement(config.parent);
2607      return config;
2608    }
2609
2610    _getDimension() {
2611      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;
2612    }
2613
2614    _initializeChildren() {
2615      if (!this._config.parent) {
2616        return;
2617      }
2618
2619      const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);
2620
2621      for (const element of children) {
2622        const selected = getElementFromSelector(element);
2623
2624        if (selected) {
2625          this._addAriaAndCollapsedClass([element], this._isShown(selected));
2626        }
2627      }
2628    }
2629
2630    _getFirstLevelChildren(selector) {
2631      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth
2632
2633      return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));
2634    }
2635
2636    _addAriaAndCollapsedClass(triggerArray, isOpen) {
2637      if (!triggerArray.length) {
2638        return;
2639      }
2640
2641      for (const element of triggerArray) {
2642        element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);
2643        element.setAttribute('aria-expanded', isOpen);
2644      }
2645    } // Static
2646
2647
2648    static jQueryInterface(config) {
2649      const _config = {};
2650
2651      if (typeof config === 'string' && /show|hide/.test(config)) {
2652        _config.toggle = false;
2653      }
2654
2655      return this.each(function () {
2656        const data = Collapse.getOrCreateInstance(this, _config);
2657
2658        if (typeof config === 'string') {
2659          if (typeof data[config] === 'undefined') {
2660            throw new TypeError(`No method named "${config}"`);
2661          }
2662
2663          data[config]();
2664        }
2665      });
2666    }
2667
2668  }
2669  /**
2670   * Data API implementation
2671   */
2672
2673
2674  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {
2675    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
2676    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {
2677      event.preventDefault();
2678    }
2679
2680    const selector = getSelectorFromElement(this);
2681    const selectorElements = SelectorEngine.find(selector);
2682
2683    for (const element of selectorElements) {
2684      Collapse.getOrCreateInstance(element, {
2685        toggle: false
2686      }).toggle();
2687    }
2688  });
2689  /**
2690   * jQuery
2691   */
2692
2693  defineJQueryPlugin(Collapse);
2694
2695  var top = 'top';
2696  var bottom = 'bottom';
2697  var right = 'right';
2698  var left = 'left';
2699  var auto = 'auto';
2700  var basePlacements = [top, bottom, right, left];
2701  var start = 'start';
2702  var end = 'end';
2703  var clippingParents = 'clippingParents';
2704  var viewport = 'viewport';
2705  var popper = 'popper';
2706  var reference = 'reference';
2707  var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
2708    return acc.concat([placement + "-" + start, placement + "-" + end]);
2709  }, []);
2710  var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
2711    return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
2712  }, []); // modifiers that need to read the DOM
2713
2714  var beforeRead = 'beforeRead';
2715  var read = 'read';
2716  var afterRead = 'afterRead'; // pure-logic modifiers
2717
2718  var beforeMain = 'beforeMain';
2719  var main = 'main';
2720  var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
2721
2722  var beforeWrite = 'beforeWrite';
2723  var write = 'write';
2724  var afterWrite = 'afterWrite';
2725  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
2726
2727  function getNodeName(element) {
2728    return element ? (element.nodeName || '').toLowerCase() : null;
2729  }
2730
2731  function getWindow(node) {
2732    if (node == null) {
2733      return window;
2734    }
2735
2736    if (node.toString() !== '[object Window]') {
2737      var ownerDocument = node.ownerDocument;
2738      return ownerDocument ? ownerDocument.defaultView || window : window;
2739    }
2740
2741    return node;
2742  }
2743
2744  function isElement(node) {
2745    var OwnElement = getWindow(node).Element;
2746    return node instanceof OwnElement || node instanceof Element;
2747  }
2748
2749  function isHTMLElement(node) {
2750    var OwnElement = getWindow(node).HTMLElement;
2751    return node instanceof OwnElement || node instanceof HTMLElement;
2752  }
2753
2754  function isShadowRoot(node) {
2755    // IE 11 has no ShadowRoot
2756    if (typeof ShadowRoot === 'undefined') {
2757      return false;
2758    }
2759
2760    var OwnElement = getWindow(node).ShadowRoot;
2761    return node instanceof OwnElement || node instanceof ShadowRoot;
2762  }
2763
2764  // and applies them to the HTMLElements such as popper and arrow
2765
2766  function applyStyles(_ref) {
2767    var state = _ref.state;
2768    Object.keys(state.elements).forEach(function (name) {
2769      var style = state.styles[name] || {};
2770      var attributes = state.attributes[name] || {};
2771      var element = state.elements[name]; // arrow is optional + virtual elements
2772
2773      if (!isHTMLElement(element) || !getNodeName(element)) {
2774        return;
2775      } // Flow doesn't support to extend this property, but it's the most
2776      // effective way to apply styles to an HTMLElement
2777      // $FlowFixMe[cannot-write]
2778
2779
2780      Object.assign(element.style, style);
2781      Object.keys(attributes).forEach(function (name) {
2782        var value = attributes[name];
2783
2784        if (value === false) {
2785          element.removeAttribute(name);
2786        } else {
2787          element.setAttribute(name, value === true ? '' : value);
2788        }
2789      });
2790    });
2791  }
2792
2793  function effect$2(_ref2) {
2794    var state = _ref2.state;
2795    var initialStyles = {
2796      popper: {
2797        position: state.options.strategy,
2798        left: '0',
2799        top: '0',
2800        margin: '0'
2801      },
2802      arrow: {
2803        position: 'absolute'
2804      },
2805      reference: {}
2806    };
2807    Object.assign(state.elements.popper.style, initialStyles.popper);
2808    state.styles = initialStyles;
2809
2810    if (state.elements.arrow) {
2811      Object.assign(state.elements.arrow.style, initialStyles.arrow);
2812    }
2813
2814    return function () {
2815      Object.keys(state.elements).forEach(function (name) {
2816        var element = state.elements[name];
2817        var attributes = state.attributes[name] || {};
2818        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
2819
2820        var style = styleProperties.reduce(function (style, property) {
2821          style[property] = '';
2822          return style;
2823        }, {}); // arrow is optional + virtual elements
2824
2825        if (!isHTMLElement(element) || !getNodeName(element)) {
2826          return;
2827        }
2828
2829        Object.assign(element.style, style);
2830        Object.keys(attributes).forEach(function (attribute) {
2831          element.removeAttribute(attribute);
2832        });
2833      });
2834    };
2835  } // eslint-disable-next-line import/no-unused-modules
2836
2837
2838  const applyStyles$1 = {
2839    name: 'applyStyles',
2840    enabled: true,
2841    phase: 'write',
2842    fn: applyStyles,
2843    effect: effect$2,
2844    requires: ['computeStyles']
2845  };
2846
2847  function getBasePlacement(placement) {
2848    return placement.split('-')[0];
2849  }
2850
2851  var max = Math.max;
2852  var min = Math.min;
2853  var round = Math.round;
2854
2855  function getUAString() {
2856    var uaData = navigator.userAgentData;
2857
2858    if (uaData != null && uaData.brands
vendor: 9,607 bytes, lines 2858-3145
2858) {
2859      return uaData.brands.map(function (item) {
2860        return item.brand + "/" + item.version;
2861      }).join(' ');
2862    }
2863
2864    return navigator.userAgent;
2865  }
2866
2867  function isLayoutViewport() {
2868    return !/^((?!chrome|android).)*safari/i.test(getUAString());
2869  }
2870
2871  function getBoundingClientRect(element, includeScale, isFixedStrategy) {
2872    if (includeScale === void 0) {
2873      includeScale = false;
2874    }
2875
2876    if (isFixedStrategy === void 0) {
2877      isFixedStrategy = false;
2878    }
2879
2880    var clientRect = element.getBoundingClientRect();
2881    var scaleX = 1;
2882    var scaleY = 1;
2883
2884    if (includeScale && isHTMLElement(element)) {
2885      scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
2886      scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
2887    }
2888
2889    var _ref = isElement(element) ? getWindow(element) : window,
2890        visualViewport = _ref.visualViewport;
2891
2892    var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
2893    var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
2894    var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
2895    var width = clientRect.width / scaleX;
2896    var height = clientRect.height / scaleY;
2897    return {
2898      width: width,
2899      height: height,
2900      top: y,
2901      right: x + width,
2902      bottom: y + height,
2903      left: x,
2904      x: x,
2905      y: y
2906    };
2907  }
2908
2909  // means it doesn't take into account transforms.
2910
2911  function getLayoutRect(element) {
2912    var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
2913    // Fixes https://github.com/popperjs/popper-core/issues/1223
2914
2915    var width = element.offsetWidth;
2916    var height = element.offsetHeight;
2917
2918    if (Math.abs(clientRect.width - width) <= 1) {
2919      width = clientRect.width;
2920    }
2921
2922    if (Math.abs(clientRect.height - height) <= 1) {
2923      height = clientRect.height;
2924    }
2925
2926    return {
2927      x: element.offsetLeft,
2928      y: element.offsetTop,
2929      width: width,
2930      height: height
2931    };
2932  }
2933
2934  function contains(parent, child) {
2935    var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
2936
2937    if (parent.contains(child)) {
2938      return true;
2939    } // then fallback to custom implementation with Shadow DOM support
2940    else if (rootNode && isShadowRoot(rootNode)) {
2941        var next = child;
2942
2943        do {
2944          if (next && parent.isSameNode(next)) {
2945            return true;
2946          } // $FlowFixMe[prop-missing]: need a better way to handle this...
2947
2948
2949          next = next.parentNode || next.host;
2950        } while (next);
2951      } // Give up, the result is false
2952
2953
2954    return false;
2955  }
2956
2957  function getComputedStyle$1(element) {
2958    return getWindow(element).getComputedStyle(element);
2959  }
2960
2961  function isTableElement(element) {
2962    return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
2963  }
2964
2965  function getDocumentElement(element) {
2966    // $FlowFixMe[incompatible-return]: assume body is always available
2967    return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
2968    element.document) || window.document).documentElement;
2969  }
2970
2971  function getParentNode(element) {
2972    if (getNodeName(element) === 'html') {
2973      return element;
2974    }
2975
2976    return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
2977      // $FlowFixMe[incompatible-return]
2978      // $FlowFixMe[prop-missing]
2979      element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
2980      element.parentNode || ( // DOM Element detected
2981      isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
2982      // $FlowFixMe[incompatible-call]: HTMLElement is a Node
2983      getDocumentElement(element) // fallback
2984
2985    );
2986  }
2987
2988  function getTrueOffsetParent(element) {
2989    if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
2990    getComputedStyle$1(element).position === 'fixed') {
2991      return null;
2992    }
2993
2994    return element.offsetParent;
2995  } // `.offsetParent` reports `null` for fixed elements, while absolute elements
2996  // return the containing block
2997
2998
2999  function getContainingBlock(element) {
3000    var isFirefox = /firefox/i.test(getUAString());
3001    var isIE = /Trident/i.test(getUAString());
3002
3003    if (isIE && isHTMLElement(element)) {
3004      // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
3005      var elementCss = getComputedStyle$1(element);
3006
3007      if (elementCss.position === 'fixed') {
3008        return null;
3009      }
3010    }
3011
3012    var currentNode = getParentNode(element);
3013
3014    if (isShadowRoot(currentNode)) {
3015      currentNode = currentNode.host;
3016    }
3017
3018    while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
3019      var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that
3020      // create a containing block.
3021      // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
3022
3023      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') {
3024        return currentNode;
3025      } else {
3026        currentNode = currentNode.parentNode;
3027      }
3028    }
3029
3030    return null;
3031  } // Gets the closest ancestor positioned element. Handles some edge cases,
3032  // such as table ancestors and cross browser bugs.
3033
3034
3035  function getOffsetParent(element) {
3036    var window = getWindow(element);
3037    var offsetParent = getTrueOffsetParent(element);
3038
3039    while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {
3040      offsetParent = getTrueOffsetParent(offsetParent);
3041    }
3042
3043    if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {
3044      return window;
3045    }
3046
3047    return offsetParent || getContainingBlock(element) || window;
3048  }
3049
3050  function getMainAxisFromPlacement(placement) {
3051    return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
3052  }
3053
3054  function within(min$1, value, max$1) {
3055    return max(min$1, min(value, max$1));
3056  }
3057  function withinMaxClamp(min, value, max) {
3058    var v = within(min, value, max);
3059    return v > max ? max : v;
3060  }
3061
3062  function getFreshSideObject() {
3063    return {
3064      top: 0,
3065      right: 0,
3066      bottom: 0,
3067      left: 0
3068    };
3069  }
3070
3071  function mergePaddingObject(paddingObject) {
3072    return Object.assign({}, getFreshSideObject(), paddingObject);
3073  }
3074
3075  function expandToHashMap(value, keys) {
3076    return keys.reduce(function (hashMap, key) {
3077      hashMap[key] = value;
3078      return hashMap;
3079    }, {});
3080  }
3081
3082  var toPaddingObject = function toPaddingObject(padding, state) {
3083    padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
3084      placement: state.placement
3085    })) : padding;
3086    return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
3087  };
3088
3089  function arrow(_ref) {
3090    var _state$modifiersData$;
3091
3092    var state = _ref.state,
3093        name = _ref.name,
3094        options = _ref.options;
3095    var arrowElement = state.elements.arrow;
3096    var popperOffsets = state.modifiersData.popperOffsets;
3097    var basePlacement = getBasePlacement(state.placement);
3098    var axis = getMainAxisFromPlacement(basePlacement);
3099    var isVertical = [left, right].indexOf(basePlacement) >= 0;
3100    var len = isVertical ? 'height' : 'width';
3101
3102    if (!arrowElement || !popperOffsets) {
3103      return;
3104    }
3105
3106    var paddingObject = toPaddingObject(options.padding, state);
3107    var arrowRect = getLayoutRect(arrowElement);
3108    var minProp = axis === 'y' ? top : left;
3109    var maxProp = axis === 'y' ? bottom : right;
3110    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
3111    var startDiff = popperOffsets[axis] - state.rects.reference[axis];
3112    var arrowOffsetParent = getOffsetParent(arrowElement);
3113    var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
3114    var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
3115    // outside of the popper bounds
3116
3117    var min = paddingObject[minProp];
3118    var max = clientSize - arrowRect[len] - paddingObject[maxProp];
3119    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
3120    var offset = within(min, center, max); // Prevents breaking syntax highlighting...
3121
3122    var axisProp = axis;
3123    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
3124  }
3125
3126  function effect$1(_ref2) {
3127    var state = _ref2.state,
3128        options = _ref2.options;
3129    var _options$element = options.element,
3130        arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
3131
3132    if (arrowElement == null) {
3133      return;
3134    } // CSS selector
3135
3136
3137    if (typeof arrowElement === 'string') {
3138      arrowElement = state.elements.popper.querySelector(arrowElement);
3139
3140      if (!arrowElement) {
3141        return;
3142      }
3143    }
3144
3145    if (!contains(state.elements.popper, arrowElement)) {
vendor: 1,969 bytes, lines 3146-3224
3146
3147      return;
3148    }
3149
3150    state.elements.arrow = arrowElement;
3151  } // eslint-disable-next-line import/no-unused-modules
3152
3153
3154  const arrow$1 = {
3155    name: 'arrow',
3156    enabled: true,
3157    phase: 'main',
3158    fn: arrow,
3159    effect: effect$1,
3160    requires: ['popperOffsets'],
3161    requiresIfExists: ['preventOverflow']
3162  };
3163
3164  function getVariation(placement) {
3165    return placement.split('-')[1];
3166  }
3167
3168  var unsetSides = {
3169    top: 'auto',
3170    right: 'auto',
3171    bottom: 'auto',
3172    left: 'auto'
3173  }; // Round the offsets to the nearest suitable subpixel based on the DPR.
3174  // Zooming can change the DPR, but it seems to report a value that will
3175  // cleanly divide the values into the appropriate subpixels.
3176
3177  function roundOffsetsByDPR(_ref) {
3178    var x = _ref.x,
3179        y = _ref.y;
3180    var win = window;
3181    var dpr = win.devicePixelRatio || 1;
3182    return {
3183      x: round(x * dpr) / dpr || 0,
3184      y: round(y * dpr) / dpr || 0
3185    };
3186  }
3187
3188  function mapToStyles(_ref2) {
3189    var _Object$assign2;
3190
3191    var popper = _ref2.popper,
3192        popperRect = _ref2.popperRect,
3193        placement = _ref2.placement,
3194        variation = _ref2.variation,
3195        offsets = _ref2.offsets,
3196        position = _ref2.position,
3197        gpuAcceleration = _ref2.gpuAcceleration,
3198        adaptive = _ref2.adaptive,
3199        roundOffsets = _ref2.roundOffsets,
3200        isFixed = _ref2.isFixed;
3201    var _offsets$x = offsets.x,
3202        x = _offsets$x === void 0 ? 0 : _offsets$x,
3203        _offsets$y = offsets.y,
3204        y = _offsets$y === void 0 ? 0 : _offsets$y;
3205
3206    var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
3207      x: x,
3208      y: y
3209    }) : {
3210      x: x,
3211      y: y
3212    };
3213
3214    x = _ref3.x;
3215    y = _ref3.y;
3216    var hasX = offsets.hasOwnProperty('x');
3217    var hasY = offsets.hasOwnProperty('y');
3218    var sideX = left;
3219    var sideY = top;
3220    var win = window;
3221
3222    if (adaptive) {
3223      var offsetParent = getOffsetParent(popper);
3224      var heightProp = 'clientHeight';
vendor: 2,614 bytes, lines 3225-3288
3225      var widthProp = 'clientWidth';
3226
3227      if (offsetParent === getWindow(popper)) {
3228        offsetParent = getDocumentElement(popper);
3229
3230        if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {
3231          heightProp = 'scrollHeight';
3232          widthProp = 'scrollWidth';
3233        }
3234      } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
3235
3236
3237      offsetParent = offsetParent;
3238
3239      if (placement === top || (placement === left || placement === right) && variation === end) {
3240        sideY = bottom;
3241        var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
3242        offsetParent[heightProp];
3243        y -= offsetY - popperRect.height;
3244        y *= gpuAcceleration ? 1 : -1;
3245      }
3246
3247      if (placement === left || (placement === top || placement === bottom) && variation === end) {
3248        sideX = right;
3249        var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
3250        offsetParent[widthProp];
3251        x -= offsetX - popperRect.width;
3252        x *= gpuAcceleration ? 1 : -1;
3253      }
3254    }
3255
3256    var commonStyles = Object.assign({
3257      position: position
3258    }, adaptive && unsetSides);
3259
3260    var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
3261      x: x,
3262      y: y
3263    }) : {
3264      x: x,
3265      y: y
3266    };
3267
3268    x = _ref4.x;
3269    y = _ref4.y;
3270
3271    if (gpuAcceleration) {
3272      var _Object$assign;
3273
3274      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));
3275    }
3276
3277    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
3278  }
3279
3280  function computeStyles(_ref5) {
3281    var state = _ref5.state,
3282        options = _ref5.options;
3283    var _options$gpuAccelerat = options.gpuAcceleration,
3284        gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
3285        _options$adaptive = options.adaptive,
3286        adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
3287        _options$roundOffsets = options.roundOffsets,
3288        roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
vendor: 37,725 bytes, lines 3289-4357
3289
3290    var commonStyles = {
3291      placement: getBasePlacement(state.placement),
3292      variation: getVariation(state.placement),
3293      popper: state.elements.popper,
3294      popperRect: state.rects.popper,
3295      gpuAcceleration: gpuAcceleration,
3296      isFixed: state.options.strategy === 'fixed'
3297    };
3298
3299    if (state.modifiersData.popperOffsets != null) {
3300      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
3301        offsets: state.modifiersData.popperOffsets,
3302        position: state.options.strategy,
3303        adaptive: adaptive,
3304        roundOffsets: roundOffsets
3305      })));
3306    }
3307
3308    if (state.modifiersData.arrow != null) {
3309      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
3310        offsets: state.modifiersData.arrow,
3311        position: 'absolute',
3312        adaptive: false,
3313        roundOffsets: roundOffsets
3314      })));
3315    }
3316
3317    state.attributes.popper = Object.assign({}, state.attributes.popper, {
3318      'data-popper-placement': state.placement
3319    });
3320  } // eslint-disable-next-line import/no-unused-modules
3321
3322
3323  const computeStyles$1 = {
3324    name: 'computeStyles',
3325    enabled: true,
3326    phase: 'beforeWrite',
3327    fn: computeStyles,
3328    data: {}
3329  };
3330
3331  var passive = {
3332    passive: true
3333  };
3334
3335  function effect(_ref) {
3336    var state = _ref.state,
3337        instance = _ref.instance,
3338        options = _ref.options;
3339    var _options$scroll = options.scroll,
3340        scroll = _options$scroll === void 0 ? true : _options$scroll,
3341        _options$resize = options.resize,
3342        resize = _options$resize === void 0 ? true : _options$resize;
3343    var window = getWindow(state.elements.popper);
3344    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
3345
3346    if (scroll) {
3347      scrollParents.forEach(function (scrollParent) {
3348        scrollParent.addEventListener('scroll', instance.update, passive);
3349      });
3350    }
3351
3352    if (resize) {
3353      window.addEventListener('resize', instance.update, passive);
3354    }
3355
3356    return function () {
3357      if (scroll) {
3358        scrollParents.forEach(function (scrollParent) {
3359          scrollParent.removeEventListener('scroll', instance.update, passive);
3360        });
3361      }
3362
3363      if (resize) {
3364        window.removeEventListener('resize', instance.update, passive);
3365      }
3366    };
3367  } // eslint-disable-next-line import/no-unused-modules
3368
3369
3370  const eventListeners = {
3371    name: 'eventListeners',
3372    enabled: true,
3373    phase: 'write',
3374    fn: function fn() {},
3375    effect: effect,
3376    data: {}
3377  };
3378
3379  var hash$1 = {
3380    left: 'right',
3381    right: 'left',
3382    bottom: 'top',
3383    top: 'bottom'
3384  };
3385  function getOppositePlacement(placement) {
3386    return placement.replace(/left|right|bottom|top/g, function (matched) {
3387      return hash$1[matched];
3388    });
3389  }
3390
3391  var hash = {
3392    start: 'end',
3393    end: 'start'
3394  };
3395  function getOppositeVariationPlacement(placement) {
3396    return placement.replace(/start|end/g, function (matched) {
3397      return hash[matched];
3398    });
3399  }
3400
3401  function getWindowScroll(node) {
3402    var win = getWindow(node);
3403    var scrollLeft = win.pageXOffset;
3404    var scrollTop = win.pageYOffset;
3405    return {
3406      scrollLeft: scrollLeft,
3407      scrollTop: scrollTop
3408    };
3409  }
3410
3411  function getWindowScrollBarX(element) {
3412    // If <html> has a CSS width greater than the viewport, then this will be
3413    // incorrect for RTL.
3414    // Popper 1 is broken in this case and never had a bug report so let's assume
3415    // it's not an issue. I don't think anyone ever specifies width on <html>
3416    // anyway.
3417    // Browsers where the left scrollbar doesn't cause an issue report `0` for
3418    // this (e.g. Edge 2019, IE11, Safari)
3419    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
3420  }
3421
3422  function getViewportRect(element, strategy) {
3423    var win = getWindow(element);
3424    var html = getDocumentElement(element);
3425    var visualViewport = win.visualViewport;
3426    var width = html.clientWidth;
3427    var height = html.clientHeight;
3428    var x = 0;
3429    var y = 0;
3430
3431    if (visualViewport) {
3432      width = visualViewport.width;
3433      height = visualViewport.height;
3434      var layoutViewport = isLayoutViewport();
3435
3436      if (layoutViewport || !layoutViewport && strategy === 'fixed') {
3437        x = visualViewport.offsetLeft;
3438        y = visualViewport.offsetTop;
3439      }
3440    }
3441
3442    return {
3443      width: width,
3444      height: height,
3445      x: x + getWindowScrollBarX(element),
3446      y: y
3447    };
3448  }
3449
3450  // of the `<html>` and `<body>` rect bounds if horizontally scrollable
3451
3452  function getDocumentRect(element) {
3453    var _element$ownerDocumen;
3454
3455    var html = getDocumentElement(element);
3456    var winScroll = getWindowScroll(element);
3457    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
3458    var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
3459    var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
3460    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
3461    var y = -winScroll.scrollTop;
3462
3463    if (getComputedStyle$1(body || html).direction === 'rtl') {
3464      x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
3465    }
3466
3467    return {
3468      width: width,
3469      height: height,
3470      x: x,
3471      y: y
3472    };
3473  }
3474
3475  function isScrollParent(element) {
3476    // Firefox wants us to check `-x` and `-y` variations as well
3477    var _getComputedStyle = getComputedStyle$1(element),
3478        overflow = _getComputedStyle.overflow,
3479        overflowX = _getComputedStyle.overflowX,
3480        overflowY = _getComputedStyle.overflowY;
3481
3482    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
3483  }
3484
3485  function getScrollParent(node) {
3486    if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
3487      // $FlowFixMe[incompatible-return]: assume body is always available
3488      return node.ownerDocument.body;
3489    }
3490
3491    if (isHTMLElement(node) && isScrollParent(node)) {
3492      return node;
3493    }
3494
3495    return getScrollParent(getParentNode(node));
3496  }
3497
3498  /*
3499  given a DOM element, return the list of all scroll parents, up the list of ancesors
3500  until we get to the top window object. This list is what we attach scroll listeners
3501  to, because if any of these parent elements scroll, we'll need to re-calculate the
3502  reference element's position.
3503  */
3504
3505  function listScrollParents(element, list) {
3506    var _element$ownerDocumen;
3507
3508    if (list === void 0) {
3509      list = [];
3510    }
3511
3512    var scrollParent = getScrollParent(element);
3513    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
3514    var win = getWindow(scrollParent);
3515    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
3516    var updatedList = list.concat(target);
3517    return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
3518    updatedList.concat(listScrollParents(getParentNode(target)));
3519  }
3520
3521  function rectToClientRect(rect) {
3522    return Object.assign({}, rect, {
3523      left: rect.x,
3524      top: rect.y,
3525      right: rect.x + rect.width,
3526      bottom: rect.y + rect.height
3527    });
3528  }
3529
3530  function getInnerBoundingClientRect(element, strategy) {
3531    var rect = getBoundingClientRect(element, false, strategy === 'fixed');
3532    rect.top = rect.top + element.clientTop;
3533    rect.left = rect.left + element.clientLeft;
3534    rect.bottom = rect.top + element.clientHeight;
3535    rect.right = rect.left + element.clientWidth;
3536    rect.width = element.clientWidth;
3537    rect.height = element.clientHeight;
3538    rect.x = rect.left;
3539    rect.y = rect.top;
3540    return rect;
3541  }
3542
3543  function getClientRectFromMixedType(element, clippingParent, strategy) {
3544    return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
3545  } // A "clipping parent" is an overflowable container with the characteristic of
3546  // clipping (or hiding) overflowing elements with a position different from
3547  // `initial`
3548
3549
3550  function getClippingParents(element) {
3551    var clippingParents = listScrollParents(getParentNode(element));
3552    var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;
3553    var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
3554
3555    if (!isElement(clipperElement)) {
3556      return [];
3557    } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
3558
3559
3560    return clippingParents.filter(function (clippingParent) {
3561      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
3562    });
3563  } // Gets the maximum area that the element is visible in due to any number of
3564  // clipping parents
3565
3566
3567  function getClippingRect(element, boundary, rootBoundary, strategy) {
3568    var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
3569    var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
3570    var firstClippingParent = clippingParents[0];
3571    var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
3572      var rect = getClientRectFromMixedType(element, clippingParent, strategy);
3573      accRect.top = max(rect.top, accRect.top);
3574      accRect.right = min(rect.right, accRect.right);
3575      accRect.bottom = min(rect.bottom, accRect.bottom);
3576      accRect.left = max(rect.left, accRect.left);
3577      return accRect;
3578    }, getClientRectFromMixedType(element, firstClippingParent, strategy));
3579    clippingRect.width = clippingRect.right - clippingRect.left;
3580    clippingRect.height = clippingRect.bottom - clippingRect.top;
3581    clippingRect.x = clippingRect.left;
3582    clippingRect.y = clippingRect.top;
3583    return clippingRect;
3584  }
3585
3586  function computeOffsets(_ref) {
3587    var reference = _ref.reference,
3588        element = _ref.element,
3589        placement = _ref.placement;
3590    var basePlacement = placement ? getBasePlacement(placement) : null;
3591    var variation = placement ? getVariation(placement) : null;
3592    var commonX = reference.x + reference.width / 2 - element.width / 2;
3593    var commonY = reference.y + reference.height / 2 - element.height / 2;
3594    var offsets;
3595
3596    switch (basePlacement) {
3597      case top:
3598        offsets = {
3599          x: commonX,
3600          y: reference.y - element.height
3601        };
3602        break;
3603
3604      case bottom:
3605        offsets = {
3606          x: commonX,
3607          y: reference.y + reference.height
3608        };
3609        break;
3610
3611      case right:
3612        offsets = {
3613          x: reference.x + reference.width,
3614          y: commonY
3615        };
3616        break;
3617
3618      case left:
3619        offsets = {
3620          x: reference.x - element.width,
3621          y: commonY
3622        };
3623        break;
3624
3625      default:
3626        offsets = {
3627          x: reference.x,
3628          y: reference.y
3629        };
3630    }
3631
3632    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
3633
3634    if (mainAxis != null) {
3635      var len = mainAxis === 'y' ? 'height' : 'width';
3636
3637      switch (variation) {
3638        case start:
3639          offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
3640          break;
3641
3642        case end:
3643          offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
3644          break;
3645      }
3646    }
3647
3648    return offsets;
3649  }
3650
3651  function detectOverflow(state, options) {
3652    if (options === void 0) {
3653      options = {};
3654    }
3655
3656    var _options = options,
3657        _options$placement = _options.placement,
3658        placement = _options$placement === void 0 ? state.placement : _options$placement,
3659        _options$strategy = _options.strategy,
3660        strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,
3661        _options$boundary = _options.boundary,
3662        boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
3663        _options$rootBoundary = _options.rootBoundary,
3664        rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
3665        _options$elementConte = _options.elementContext,
3666        elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
3667        _options$altBoundary = _options.altBoundary,
3668        altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
3669        _options$padding = _options.padding,
3670        padding = _options$padding === void 0 ? 0 : _options$padding;
3671    var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
3672    var altContext = elementContext === popper ? reference : popper;
3673    var popperRect = state.rects.popper;
3674    var element = state.elements[altBoundary ? altContext : elementContext];
3675    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
3676    var referenceClientRect = getBoundingClientRect(state.elements.reference);
3677    var popperOffsets = computeOffsets({
3678      reference: referenceClientRect,
3679      element: popperRect,
3680      strategy: 'absolute',
3681      placement: placement
3682    });
3683    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
3684    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
3685    // 0 or negative = within the clipping rect
3686
3687    var overflowOffsets = {
3688      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
3689      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
3690      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
3691      right: elementClientRect.right - clippingClientRect.right + paddingObject.right
3692    };
3693    var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
3694
3695    if (elementContext === popper && offsetData) {
3696      var offset = offsetData[placement];
3697      Object.keys(overflowOffsets).forEach(function (key) {
3698        var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
3699        var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
3700        overflowOffsets[key] += offset[axis] * multiply;
3701      });
3702    }
3703
3704    return overflowOffsets;
3705  }
3706
3707  function computeAutoPlacement(state, options) {
3708    if (options === void 0) {
3709      options = {};
3710    }
3711
3712    var _options = options,
3713        placement = _options.placement,
3714        boundary = _options.boundary,
3715        rootBoundary = _options.rootBoundary,
3716        padding = _options.padding,
3717        flipVariations = _options.flipVariations,
3718        _options$allowedAutoP = _options.allowedAutoPlacements,
3719        allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
3720    var variation = getVariation(placement);
3721    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
3722      return getVariation(placement) === variation;
3723    }) : basePlacements;
3724    var allowedPlacements = placements$1.filter(function (placement) {
3725      return allowedAutoPlacements.indexOf(placement) >= 0;
3726    });
3727
3728    if (allowedPlacements.length === 0) {
3729      allowedPlacements = placements$1;
3730    } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
3731
3732
3733    var overflows = allowedPlacements.reduce(function (acc, placement) {
3734      acc[placement] = detectOverflow(state, {
3735        placement: placement,
3736        boundary: boundary,
3737        rootBoundary: rootBoundary,
3738        padding: padding
3739      })[getBasePlacement(placement)];
3740      return acc;
3741    }, {});
3742    return Object.keys(overflows).sort(function (a, b) {
3743      return overflows[a] - overflows[b];
3744    });
3745  }
3746
3747  function getExpandedFallbackPlacements(placement) {
3748    if (getBasePlacement(placement) === auto) {
3749      return [];
3750    }
3751
3752    var oppositePlacement = getOppositePlacement(placement);
3753    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
3754  }
3755
3756  function flip(_ref) {
3757    var state = _ref.state,
3758        options = _ref.options,
3759        name = _ref.name;
3760
3761    if (state.modifiersData[name]._skip) {
3762      return;
3763    }
3764
3765    var _options$mainAxis = options.mainAxis,
3766        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
3767        _options$altAxis = options.altAxis,
3768        checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
3769        specifiedFallbackPlacements = options.fallbackPlacements,
3770        padding = options.padding,
3771        boundary = options.boundary,
3772        rootBoundary = options.rootBoundary,
3773        altBoundary = options.altBoundary,
3774        _options$flipVariatio = options.flipVariations,
3775        flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
3776        allowedAutoPlacements = options.allowedAutoPlacements;
3777    var preferredPlacement = state.options.placement;
3778    var basePlacement = getBasePlacement(preferredPlacement);
3779    var isBasePlacement = basePlacement === preferredPlacement;
3780    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
3781    var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
3782      return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
3783        placement: placement,
3784        boundary: boundary,
3785        rootBoundary: rootBoundary,
3786        padding: padding,
3787        flipVariations: flipVariations,
3788        allowedAutoPlacements: allowedAutoPlacements
3789      }) : placement);
3790    }, []);
3791    var referenceRect = state.rects.reference;
3792    var popperRect = state.rects.popper;
3793    var checksMap = new Map();
3794    var makeFallbackChecks = true;
3795    var firstFittingPlacement = placements[0];
3796
3797    for (var i = 0; i < placements.length; i++) {
3798      var placement = placements[i];
3799
3800      var _basePlacement = getBasePlacement(placement);
3801
3802      var isStartVariation = getVariation(placement) === start;
3803      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
3804      var len = isVertical ? 'width' : 'height';
3805      var overflow = detectOverflow(state, {
3806        placement: placement,
3807        boundary: boundary,
3808        rootBoundary: rootBoundary,
3809        altBoundary: altBoundary,
3810        padding: padding
3811      });
3812      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
3813
3814      if (referenceRect[len] > popperRect[len]) {
3815        mainVariationSide = getOppositePlacement(mainVariationSide);
3816      }
3817
3818      var altVariationSide = getOppositePlacement(mainVariationSide);
3819      var checks = [];
3820
3821      if (checkMainAxis) {
3822        checks.push(overflow[_basePlacement] <= 0);
3823      }
3824
3825      if (checkAltAxis) {
3826        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
3827      }
3828
3829      if (checks.every(function (check) {
3830        return check;
3831      })) {
3832        firstFittingPlacement = placement;
3833        makeFallbackChecks = false;
3834        break;
3835      }
3836
3837      checksMap.set(placement, checks);
3838    }
3839
3840    if (makeFallbackChecks) {
3841      // `2` may be desired in some cases – research later
3842      var numberOfChecks = flipVariations ? 3 : 1;
3843
3844      var _loop = function _loop(_i) {
3845        var fittingPlacement = placements.find(function (placement) {
3846          var checks = checksMap.get(placement);
3847
3848          if (checks) {
3849            return checks.slice(0, _i).every(function (check) {
3850              return check;
3851            });
3852          }
3853        });
3854
3855        if (fittingPlacement) {
3856          firstFittingPlacement = fittingPlacement;
3857          return "break";
3858        }
3859      };
3860
3861      for (var _i = numberOfChecks; _i > 0; _i--) {
3862        var _ret = _loop(_i);
3863
3864        if (_ret === "break") break;
3865      }
3866    }
3867
3868    if (state.placement !== firstFittingPlacement) {
3869      state.modifiersData[name]._skip = true;
3870      state.placement = firstFittingPlacement;
3871      state.reset = true;
3872    }
3873  } // eslint-disable-next-line import/no-unused-modules
3874
3875
3876  const flip$1 = {
3877    name: 'flip',
3878    enabled: true,
3879    phase: 'main',
3880    fn: flip,
3881    requiresIfExists: ['offset'],
3882    data: {
3883      _skip: false
3884    }
3885  };
3886
3887  function getSideOffsets(overflow, rect, preventedOffsets) {
3888    if (preventedOffsets === void 0) {
3889      preventedOffsets = {
3890        x: 0,
3891        y: 0
3892      };
3893    }
3894
3895    return {
3896      top: overflow.top - rect.height - preventedOffsets.y,
3897      right: overflow.right - rect.width + preventedOffsets.x,
3898      bottom: overflow.bottom - rect.height + preventedOffsets.y,
3899      left: overflow.left - rect.width - preventedOffsets.x
3900    };
3901  }
3902
3903  function isAnySideFullyClipped(overflow) {
3904    return [top, right, bottom, left].some(function (side) {
3905      return overflow[side] >= 0;
3906    });
3907  }
3908
3909  function hide(_ref) {
3910    var state = _ref.state,
3911        name = _ref.name;
3912    var referenceRect = state.rects.reference;
3913    var popperRect = state.rects.popper;
3914    var preventedOffsets = state.modifiersData.preventOverflow;
3915    var referenceOverflow = detectOverflow(state, {
3916      elementContext: 'reference'
3917    });
3918    var popperAltOverflow = detectOverflow(state, {
3919      altBoundary: true
3920    });
3921    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
3922    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
3923    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
3924    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
3925    state.modifiersData[name] = {
3926      referenceClippingOffsets: referenceClippingOffsets,
3927      popperEscapeOffsets: popperEscapeOffsets,
3928      isReferenceHidden: isReferenceHidden,
3929      hasPopperEscaped: hasPopperEscaped
3930    };
3931    state.attributes.popper = Object.assign({}, state.attributes.popper, {
3932      'data-popper-reference-hidden': isReferenceHidden,
3933      'data-popper-escaped': hasPopperEscaped
3934    });
3935  } // eslint-disable-next-line import/no-unused-modules
3936
3937
3938  const hide$1 = {
3939    name: 'hide',
3940    enabled: true,
3941    phase: 'main',
3942    requiresIfExists: ['preventOverflow'],
3943    fn: hide
3944  };
3945
3946  function distanceAndSkiddingToXY(placement, rects, offset) {
3947    var basePlacement = getBasePlacement(placement);
3948    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
3949
3950    var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
3951      placement: placement
3952    })) : offset,
3953        skidding = _ref[0],
3954        distance = _ref[1];
3955
3956    skidding = skidding || 0;
3957    distance = (distance || 0) * invertDistance;
3958    return [left, right].indexOf(basePlacement) >= 0 ? {
3959      x: distance,
3960      y: skidding
3961    } : {
3962      x: skidding,
3963      y: distance
3964    };
3965  }
3966
3967  function offset(_ref2) {
3968    var state = _ref2.state,
3969        options = _ref2.options,
3970        name = _ref2.name;
3971    var _options$offset = options.offset,
3972        offset = _options$offset === void 0 ? [0, 0] : _options$offset;
3973    var data = placements.reduce(function (acc, placement) {
3974      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
3975      return acc;
3976    }, {});
3977    var _data$state$placement = data[state.placement],
3978        x = _data$state$placement.x,
3979        y = _data$state$placement.y;
3980
3981    if (state.modifiersData.popperOffsets != null) {
3982      state.modifiersData.popperOffsets.x += x;
3983      state.modifiersData.popperOffsets.y += y;
3984    }
3985
3986    state.modifiersData[name] = data;
3987  } // eslint-disable-next-line import/no-unused-modules
3988
3989
3990  const offset$1 = {
3991    name: 'offset',
3992    enabled: true,
3993    phase: 'main',
3994    requires: ['popperOffsets'],
3995    fn: offset
3996  };
3997
3998  function popperOffsets(_ref) {
3999    var state = _ref.state,
4000        name = _ref.name;
4001    // Offsets are the actual position the popper needs to have to be
4002    // properly positioned near its reference element
4003    // This is the most basic placement, and will be adjusted by
4004    // the modifiers in the next step
4005    state.modifiersData[name] = computeOffsets({
4006      reference: state.rects.reference,
4007      element: state.rects.popper,
4008      strategy: 'absolute',
4009      placement: state.placement
4010    });
4011  } // eslint-disable-next-line import/no-unused-modules
4012
4013
4014  const popperOffsets$1 = {
4015    name: 'popperOffsets',
4016    enabled: true,
4017    phase: 'read',
4018    fn: popperOffsets,
4019    data: {}
4020  };
4021
4022  function getAltAxis(axis) {
4023    return axis === 'x' ? 'y' : 'x';
4024  }
4025
4026  function preventOverflow(_ref) {
4027    var state = _ref.state,
4028        options = _ref.options,
4029        name = _ref.name;
4030    var _options$mainAxis = options.mainAxis,
4031        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
4032        _options$altAxis = options.altAxis,
4033        checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
4034        boundary = options.boundary,
4035        rootBoundary = options.rootBoundary,
4036        altBoundary = options.altBoundary,
4037        padding = options.padding,
4038        _options$tether = options.tether,
4039        tether = _options$tether === void 0 ? true : _options$tether,
4040        _options$tetherOffset = options.tetherOffset,
4041        tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
4042    var overflow = detectOverflow(state, {
4043      boundary: boundary,
4044      rootBoundary: rootBoundary,
4045      padding: padding,
4046      altBoundary: altBoundary
4047    });
4048    var basePlacement = getBasePlacement(state.placement);
4049    var variation = getVariation(state.placement);
4050    var isBasePlacement = !variation;
4051    var mainAxis = getMainAxisFromPlacement(basePlacement);
4052    var altAxis = getAltAxis(mainAxis);
4053    var popperOffsets = state.modifiersData.popperOffsets;
4054    var referenceRect = state.rects.reference;
4055    var popperRect = state.rects.popper;
4056    var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
4057      placement: state.placement
4058    })) : tetherOffset;
4059    var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
4060      mainAxis: tetherOffsetValue,
4061      altAxis: tetherOffsetValue
4062    } : Object.assign({
4063      mainAxis: 0,
4064      altAxis: 0
4065    }, tetherOffsetValue);
4066    var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
4067    var data = {
4068      x: 0,
4069      y: 0
4070    };
4071
4072    if (!popperOffsets) {
4073      return;
4074    }
4075
4076    if (checkMainAxis) {
4077      var _offsetModifierState$;
4078
4079      var mainSide = mainAxis === 'y' ? top : left;
4080      var altSide = mainAxis === 'y' ? bottom : right;
4081      var len = mainAxis === 'y' ? 'height' : 'width';
4082      var offset = popperOffsets[mainAxis];
4083      var min$1 = offset + overflow[mainSide];
4084      var max$1 = offset - overflow[altSide];
4085      var additive = tether ? -popperRect[len] / 2 : 0;
4086      var minLen = variation === start ? referenceRect[len] : popperRect[len];
4087      var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
4088      // outside the reference bounds
4089
4090      var arrowElement = state.elements.arrow;
4091      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
4092        width: 0,
4093        height: 0
4094      };
4095      var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
4096      var arrowPaddingMin = arrowPaddingObject[mainSide];
4097      var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
4098      // to include its full size in the calculation. If the reference is small
4099      // and near the edge of a boundary, the popper can overflow even if the
4100      // reference is not overflowing as well (e.g. virtual elements with no
4101      // width or height)
4102
4103      var arrowLen = within(0, referenceRect[len], arrowRect[len]);
4104      var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
4105      var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
4106      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
4107      var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
4108      var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
4109      var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
4110      var tetherMax = offset + maxOffset - offsetModifierValue;
4111      var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
4112      popperOffsets[mainAxis] = preventedOffset;
4113      data[mainAxis] = preventedOffset - offset;
4114    }
4115
4116    if (checkAltAxis) {
4117      var _offsetModifierState$2;
4118
4119      var _mainSide = mainAxis === 'x' ? top : left;
4120
4121      var _altSide = mainAxis === 'x' ? bottom : right;
4122
4123      var _offset = popperOffsets[altAxis];
4124
4125      var _len = altAxis === 'y' ? 'height' : 'width';
4126
4127      var _min = _offset + overflow[_mainSide];
4128
4129      var _max = _offset - overflow[_altSide];
4130
4131      var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
4132
4133      var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
4134
4135      var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
4136
4137      var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
4138
4139      var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
4140
4141      popperOffsets[altAxis] = _preventedOffset;
4142      data[altAxis] = _preventedOffset - _offset;
4143    }
4144
4145    state.modifiersData[name] = data;
4146  } // eslint-disable-next-line import/no-unused-modules
4147
4148
4149  const preventOverflow$1 = {
4150    name: 'preventOverflow',
4151    enabled: true,
4152    phase: 'main',
4153    fn: preventOverflow,
4154    requiresIfExists: ['offset']
4155  };
4156
4157  function getHTMLElementScroll(element) {
4158    return {
4159      scrollLeft: element.scrollLeft,
4160      scrollTop: element.scrollTop
4161    };
4162  }
4163
4164  function getNodeScroll(node) {
4165    if (node === getWindow(node) || !isHTMLElement(node)) {
4166      return getWindowScroll(node);
4167    } else {
4168      return getHTMLElementScroll(node);
4169    }
4170  }
4171
4172  function isElementScaled(element) {
4173    var rect = element.getBoundingClientRect();
4174    var scaleX = round(rect.width) / element.offsetWidth || 1;
4175    var scaleY = round(rect.height) / element.offsetHeight || 1;
4176    return scaleX !== 1 || scaleY !== 1;
4177  } // Returns the composite rect of an element relative to its offsetParent.
4178  // Composite means it takes into account transforms as well as layout.
4179
4180
4181  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
4182    if (isFixed === void 0) {
4183      isFixed = false;
4184    }
4185
4186    var isOffsetParentAnElement = isHTMLElement(offsetParent);
4187    var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
4188    var documentElement = getDocumentElement(offsetParent);
4189    var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
4190    var scroll = {
4191      scrollLeft: 0,
4192      scrollTop: 0
4193    };
4194    var offsets = {
4195      x: 0,
4196      y: 0
4197    };
4198
4199    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
4200      if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
4201      isScrollParent(documentElement)) {
4202        scroll = getNodeScroll(offsetParent);
4203      }
4204
4205      if (isHTMLElement(offsetParent)) {
4206        offsets = getBoundingClientRect(offsetParent, true);
4207        offsets.x += offsetParent.clientLeft;
4208        offsets.y += offsetParent.clientTop;
4209      } else if (documentElement) {
4210        offsets.x = getWindowScrollBarX(documentElement);
4211      }
4212    }
4213
4214    return {
4215      x: rect.left + scroll.scrollLeft - offsets.x,
4216      y: rect.top + scroll.scrollTop - offsets.y,
4217      width: rect.width,
4218      height: rect.height
4219    };
4220  }
4221
4222  function order(modifiers) {
4223    var map = new Map();
4224    var visited = new Set();
4225    var result = [];
4226    modifiers.forEach(function (modifier) {
4227      map.set(modifier.name, modifier);
4228    }); // On visiting object, check for its dependencies and visit them recursively
4229
4230    function sort(modifier) {
4231      visited.add(modifier.name);
4232      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
4233      requires.forEach(function (dep) {
4234        if (!visited.has(dep)) {
4235          var depModifier = map.get(dep);
4236
4237          if (depModifier) {
4238            sort(depModifier);
4239          }
4240        }
4241      });
4242      result.push(modifier);
4243    }
4244
4245    modifiers.forEach(function (modifier) {
4246      if (!visited.has(modifier.name)) {
4247        // check for visited object
4248        sort(modifier);
4249      }
4250    });
4251    return result;
4252  }
4253
4254  function orderModifiers(modifiers) {
4255    // order based on dependencies
4256    var orderedModifiers = order(modifiers); // order based on phase
4257
4258    return modifierPhases.reduce(function (acc, phase) {
4259      return acc.concat(orderedModifiers.filter(function (modifier) {
4260        return modifier.phase === phase;
4261      }));
4262    }, []);
4263  }
4264
4265  function debounce(fn) {
4266    var pending;
4267    return function () {
4268      if (!pending) {
4269        pending = new Promise(function (resolve) {
4270          Promise.resolve().then(function () {
4271            pending = undefined;
4272            resolve(fn());
4273          });
4274        });
4275      }
4276
4277      return pending;
4278    };
4279  }
4280
4281  function mergeByName(modifiers) {
4282    var merged = modifiers.reduce(function (merged, current) {
4283      var existing = merged[current.name];
4284      merged[current.name] = existing ? Object.assign({}, existing, current, {
4285        options: Object.assign({}, existing.options, current.options),
4286        data: Object.assign({}, existing.data, current.data)
4287      }) : current;
4288      return merged;
4289    }, {}); // IE11 does not support Object.values
4290
4291    return Object.keys(merged).map(function (key) {
4292      return merged[key];
4293    });
4294  }
4295
4296  var DEFAULT_OPTIONS = {
4297    placement: 'bottom',
4298    modifiers: [],
4299    strategy: 'absolute'
4300  };
4301
4302  function areValidElements() {
4303    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
4304      args[_key] = arguments[_key];
4305    }
4306
4307    return !args.some(function (element) {
4308      return !(element && typeof element.getBoundingClientRect === 'function');
4309    });
4310  }
4311
4312  function popperGenerator(generatorOptions) {
4313    if (generatorOptions === void 0) {
4314      generatorOptions = {};
4315    }
4316
4317    var _generatorOptions = generatorOptions,
4318        _generatorOptions$def = _generatorOptions.defaultModifiers,
4319        defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
4320        _generatorOptions$def2 = _generatorOptions.defaultOptions,
4321        defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
4322    return function createPopper(reference, popper, options) {
4323      if (options === void 0) {
4324        options = defaultOptions;
4325      }
4326
4327      var state = {
4328        placement: 'bottom',
4329        orderedModifiers: [],
4330        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
4331        modifiersData: {},
4332        elements: {
4333          reference: reference,
4334          popper: popper
4335        },
4336        attributes: {},
4337        styles: {}
4338      };
4339      var effectCleanupFns = [];
4340      var isDestroyed = false;
4341      var instance = {
4342        state: state,
4343        setOptions: function setOptions(setOptionsAction) {
4344          var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
4345          cleanupModifierEffects();
4346          state.options = Object.assign({}, defaultOptions, state.options, options);
4347          state.scrollParents = {
4348            reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
4349            popper: listScrollParents(popper)
4350          }; // Orders the modifiers based on their dependencies and `phase`
4351          // properties
4352
4353          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
4354
4355          state.orderedModifiers = orderedModifiers.filter(function (m) {
4356            return m.enabled;
4357          });
vendor: 14,004 bytes, lines 4357-4782
4357 // Validate the provided modifiers so that the consumer will get warned
4358
4359          runModifierEffects();
4360          return instance.update();
4361        },
4362        // Sync update – it will always be executed, even if not necessary. This
4363        // is useful for low frequency updates where sync behavior simplifies the
4364        // logic.
4365        // For high frequency updates (e.g. `resize` and `scroll` events), always
4366        // prefer the async Popper#update method
4367        forceUpdate: function forceUpdate() {
4368          if (isDestroyed) {
4369            return;
4370          }
4371
4372          var _state$elements = state.elements,
4373              reference = _state$elements.reference,
4374              popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
4375          // anymore
4376
4377          if (!areValidElements(reference, popper)) {
4378
4379            return;
4380          } // Store the reference and popper rects to be read by modifiers
4381
4382
4383          state.rects = {
4384            reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
4385            popper: getLayoutRect(popper)
4386          }; // Modifiers have the ability to reset the current update cycle. The
4387          // most common use case for this is the `flip` modifier changing the
4388          // placement, which then needs to re-run all the modifiers, because the
4389          // logic was previously ran for the previous placement and is therefore
4390          // stale/incorrect
4391
4392          state.reset = false;
4393          state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
4394          // is filled with the initial data specified by the modifier. This means
4395          // it doesn't persist and is fresh on each update.
4396          // To ensure persistent data, use `${name}#persistent`
4397
4398          state.orderedModifiers.forEach(function (modifier) {
4399            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
4400          });
4401
4402          for (var index = 0; index < state.orderedModifiers.length; index++) {
4403
4404            if (state.reset === true) {
4405              state.reset = false;
4406              index = -1;
4407              continue;
4408            }
4409
4410            var _state$orderedModifie = state.orderedModifiers[index],
4411                fn = _state$orderedModifie.fn,
4412                _state$orderedModifie2 = _state$orderedModifie.options,
4413                _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
4414                name = _state$orderedModifie.name;
4415
4416            if (typeof fn === 'function') {
4417              state = fn({
4418                state: state,
4419                options: _options,
4420                name: name,
4421                instance: instance
4422              }) || state;
4423            }
4424          }
4425        },
4426        // Async and optimistically optimized update – it will not be executed if
4427        // not necessary (debounced to run at most once-per-tick)
4428        update: debounce(function () {
4429          return new Promise(function (resolve) {
4430            instance.forceUpdate();
4431            resolve(state);
4432          });
4433        }),
4434        destroy: function destroy() {
4435          cleanupModifierEffects();
4436          isDestroyed = true;
4437        }
4438      };
4439
4440      if (!areValidElements(reference, popper)) {
4441
4442        return instance;
4443      }
4444
4445      instance.setOptions(options).then(function (state) {
4446        if (!isDestroyed && options.onFirstUpdate) {
4447          options.onFirstUpdate(state);
4448        }
4449      }); // Modifiers have the ability to execute arbitrary code before the first
4450      // update cycle runs. They will be executed in the same order as the update
4451      // cycle. This is useful when a modifier adds some persistent data that
4452      // other modifiers need to use, but the modifier is run after the dependent
4453      // one.
4454
4455      function runModifierEffects() {
4456        state.orderedModifiers.forEach(function (_ref3) {
4457          var name = _ref3.name,
4458              _ref3$options = _ref3.options,
4459              options = _ref3$options === void 0 ? {} : _ref3$options,
4460              effect = _ref3.effect;
4461
4462          if (typeof effect === 'function') {
4463            var cleanupFn = effect({
4464              state: state,
4465              name: name,
4466              instance: instance,
4467              options: options
4468            });
4469
4470            var noopFn = function noopFn() {};
4471
4472            effectCleanupFns.push(cleanupFn || noopFn);
4473          }
4474        });
4475      }
4476
4477      function cleanupModifierEffects() {
4478        effectCleanupFns.forEach(function (fn) {
4479          return fn();
4480        });
4481        effectCleanupFns = [];
4482      }
4483
4484      return instance;
4485    };
4486  }
4487  var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules
4488
4489  var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];
4490  var createPopper$1 = /*#__PURE__*/popperGenerator({
4491    defaultModifiers: defaultModifiers$1
4492  }); // eslint-disable-next-line import/no-unused-modules
4493
4494  var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
4495  var createPopper = /*#__PURE__*/popperGenerator({
4496    defaultModifiers: defaultModifiers
4497  }); // eslint-disable-next-line import/no-unused-modules
4498
4499  const Popper = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
4500    __proto__: null,
4501    popperGenerator,
4502    detectOverflow,
4503    createPopperBase: createPopper$2,
4504    createPopper,
4505    createPopperLite: createPopper$1,
4506    top,
4507    bottom,
4508    right,
4509    left,
4510    auto,
4511    basePlacements,
4512    start,
4513    end,
4514    clippingParents,
4515    viewport,
4516    popper,
4517    reference,
4518    variationPlacements,
4519    placements,
4520    beforeRead,
4521    read,
4522    afterRead,
4523    beforeMain,
4524    main,
4525    afterMain,
4526    beforeWrite,
4527    write,
4528    afterWrite,
4529    modifierPhases,
4530    applyStyles: applyStyles$1,
4531    arrow: arrow$1,
4532    computeStyles: computeStyles$1,
4533    eventListeners,
4534    flip: flip$1,
4535    hide: hide$1,
4536    offset: offset$1,
4537    popperOffsets: popperOffsets$1,
4538    preventOverflow: preventOverflow$1
4539  }, Symbol.toStringTag, { value: 'Module' }));
4540
4541  /**
4542   * --------------------------------------------------------------------------
4543   * Bootstrap (v5.2.3): dropdown.js
4544   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4545   * --------------------------------------------------------------------------
4546   */
4547  /**
4548   * Constants
4549   */
4550
4551  const NAME$a = 'dropdown';
4552  const DATA_KEY$6 = 'bs.dropdown';
4553  const EVENT_KEY$6 = `.${DATA_KEY$6}`;
4554  const DATA_API_KEY$3 = '.data-api';
4555  const ESCAPE_KEY$2 = 'Escape';
4556  const TAB_KEY$1 = 'Tab';
4557  const ARROW_UP_KEY$1 = 'ArrowUp';
4558  const ARROW_DOWN_KEY$1 = 'ArrowDown';
4559  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
4560
4561  const EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;
4562  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;
4563  const EVENT_SHOW$5 = `show${EVENT_KEY$6}`;
4564  const EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;
4565  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;
4566  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;
4567  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;
4568  const CLASS_NAME_SHOW$6 = 'show';
4569  const CLASS_NAME_DROPUP = 'dropup';
4570  const CLASS_NAME_DROPEND = 'dropend';
4571  const CLASS_NAME_DROPSTART = 'dropstart';
4572  const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
4573  const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
4574  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
4575  const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;
4576  const SELECTOR_MENU = '.dropdown-menu';
4577  const SELECTOR_NAVBAR = '.navbar';
4578  const SELECTOR_NAVBAR_NAV = '.navbar-nav';
4579  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
4580  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
4581  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
4582  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
4583  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
4584  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
4585  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
4586  const PLACEMENT_TOPCENTER = 'top';
4587  const PLACEMENT_BOTTOMCENTER = 'bottom';
4588  const Default$9 = {
4589    autoClose: true,
4590    boundary: 'clippingParents',
4591    display: 'dynamic',
4592    offset: [0, 2],
4593    popperConfig: null,
4594    reference: 'toggle'
4595  };
4596  const DefaultType$9 = {
4597    autoClose: '(boolean|string)',
4598    boundary: '(string|element)',
4599    display: 'string',
4600    offset: '(array|string|function)',
4601    popperConfig: '(null|object|function)',
4602    reference: '(string|element|object)'
4603  };
4604  /**
4605   * Class definition
4606   */
4607
4608  class Dropdown extends BaseComponent {
4609    constructor(element, config) {
4610      super(element, config);
4611      this._popper = null;
4612      this._parent = this._element.parentNode; // dropdown wrapper
4613      // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/
4614
4615      this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);
4616      this._inNavbar = this._detectNavbar();
4617    } // Getters
4618
4619
4620    static get Default() {
4621      return Default$9;
4622    }
4623
4624    static get DefaultType() {
4625      return DefaultType$9;
4626    }
4627
4628    static get NAME() {
4629      return NAME$a;
4630    } // Public
4631
4632
4633    toggle() {
4634      return this._isShown() ? this.hide() : this.show();
4635    }
4636
4637    show() {
4638      if (isDisabled(this._element) || this._isShown()) {
4639        return;
4640      }
4641
4642      const relatedTarget = {
4643        relatedTarget: this._element
4644      };
4645      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);
4646
4647      if (showEvent.defaultPrevented) {
4648        return;
4649      }
4650
4651      this._createPopper(); // If this is a touch-enabled device we add extra
4652      // empty mouseover listeners to the body's immediate children;
4653      // only needed because of broken event delegation on iOS
4654      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
4655
4656
4657      if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
4658        for (const element of [].concat(...document.body.children)) {
4659          EventHandler.on(element, 'mouseover', noop);
4660        }
4661      }
4662
4663      this._element.focus();
4664
4665      this._element.setAttribute('aria-expanded', true);
4666
4667      this._menu.classList.add(CLASS_NAME_SHOW$6);
4668
4669      this._element.classList.add(CLASS_NAME_SHOW$6);
4670
4671      EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);
4672    }
4673
4674    hide() {
4675      if (isDisabled(this._element) || !this._isShown()) {
4676        return;
4677      }
4678
4679      const relatedTarget = {
4680        relatedTarget: this._element
4681      };
4682
4683      this._completeHide(relatedTarget);
4684    }
4685
4686    dispose() {
4687      if (this._popper) {
4688        this._popper.destroy();
4689      }
4690
4691      super.dispose();
4692    }
4693
4694    update() {
4695      this._inNavbar = this._detectNavbar();
4696
4697      if (this._popper) {
4698        this._popper.update();
4699      }
4700    } // Private
4701
4702
4703    _completeHide(relatedTarget) {
4704      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);
4705
4706      if (hideEvent.defaultPrevented) {
4707        return;
4708      } // If this is a touch-enabled device we remove the extra
4709      // empty mouseover listeners we added for iOS support
4710
4711
4712      if ('ontouchstart' in document.documentElement) {
4713        for (const element of [].concat(...document.body.children)) {
4714          EventHandler.off(element, 'mouseover', noop);
4715        }
4716      }
4717
4718      if (this._popper) {
4719        this._popper.destroy();
4720      }
4721
4722      this._menu.classList.remove(CLASS_NAME_SHOW$6);
4723
4724      this._element.classList.remove(CLASS_NAME_SHOW$6);
4725
4726      this._element.setAttribute('aria-expanded', 'false');
4727
4728      Manipulator.removeDataAttribute(this._menu, 'popper');
4729      EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);
4730    }
4731
4732    _getConfig(config) {
4733      config = super._getConfig(config);
4734
4735      if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {
4736        // Popper virtual elements require a getBoundingClientRect method
4737        throw new TypeError(`${NAME$a.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);
4738      }
4739
4740      return config;
4741    }
4742
4743    _createPopper() {
4744      if (typeof Popper === 'undefined') {
4745        throw new TypeError('Bootstrap\'s dropdowns require Popper (https://popper.js.org)');
4746      }
4747
4748      let referenceElement = this._element;
4749
4750      if (this._config.reference === 'parent') {
4751        referenceElement = this._parent;
4752      } else if (isElement$1(this._config.reference)) {
4753        referenceElement = getElement(this._config.reference);
4754      } else if (typeof this._config.reference === 'object') {
4755        referenceElement = this._config.reference;
4756      }
4757
4758      const popperConfig = this._getPopperConfig();
4759
4760      this._popper = createPopper(referenceElement, this._menu, popperConfig);
4761    }
4762
4763    _isShown() {
4764      return this._menu.classList.contains(CLASS_NAME_SHOW$6);
4765    }
4766
4767    _getPlacement() {
4768      const parentDropdown = this._parent;
4769
4770      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
4771        return PLACEMENT_RIGHT;
4772      }
4773
4774      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
4775        return PLACEMENT_LEFT;
4776      }
4777
4778      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
4779        return PLACEMENT_TOPCENTER;
4780      }
4781
4782      if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENT
vendor: 4,138 bytes, lines 4782-4918
4782ER)) {
4783        return PLACEMENT_BOTTOMCENTER;
4784      } // We need to trim the value because custom properties can also include spaces
4785
4786
4787      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
4788
4789      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
4790        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
4791      }
4792
4793      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
4794    }
4795
4796    _detectNavbar() {
4797      return this._element.closest(SELECTOR_NAVBAR) !== null;
4798    }
4799
4800    _getOffset() {
4801      const {
4802        offset
4803      } = this._config;
4804
4805      if (typeof offset === 'string') {
4806        return offset.split(',').map(value => Number.parseInt(value, 10));
4807      }
4808
4809      if (typeof offset === 'function') {
4810        return popperData => offset(popperData, this._element);
4811      }
4812
4813      return offset;
4814    }
4815
4816    _getPopperConfig() {
4817      const defaultBsPopperConfig = {
4818        placement: this._getPlacement(),
4819        modifiers: [{
4820          name: 'preventOverflow',
4821          options: {
4822            boundary: this._config.boundary
4823          }
4824        }, {
4825          name: 'offset',
4826          options: {
4827            offset: this._getOffset()
4828          }
4829        }]
4830      }; // Disable Popper if we have a static display or Dropdown is in Navbar
4831
4832      if (this._inNavbar || this._config.display === 'static') {
4833        Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove
4834
4835        defaultBsPopperConfig.modifiers = [{
4836          name: 'applyStyles',
4837          enabled: false
4838        }];
4839      }
4840
4841      return { ...defaultBsPopperConfig,
4842        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
4843      };
4844    }
4845
4846    _selectMenuItem({
4847      key,
4848      target
4849    }) {
4850      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));
4851
4852      if (!items.length) {
4853        return;
4854      } // if target isn't included in items (e.g. when expanding the dropdown)
4855      // allow cycling to get the last item in case key equals ARROW_UP_KEY
4856
4857
4858      getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();
4859    } // Static
4860
4861
4862    static jQueryInterface(config) {
4863      return this.each(function () {
4864        const data = Dropdown.getOrCreateInstance(this, config);
4865
4866        if (typeof config !== 'string') {
4867          return;
4868        }
4869
4870        if (typeof data[config] === 'undefined') {
4871          throw new TypeError(`No method named "${config}"`);
4872        }
4873
4874        data[config]();
4875      });
4876    }
4877
4878    static clearMenus(event) {
4879      if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {
4880        return;
4881      }
4882
4883      const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
4884
4885      for (const toggle of openToggles) {
4886        const context = Dropdown.getInstance(toggle);
4887
4888        if (!context || context._config.autoClose === false) {
4889          continue;
4890        }
4891
4892        const composedPath = event.composedPath();
4893        const isMenuTarget = composedPath.includes(context._menu);
4894
4895        if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {
4896          continue;
4897        } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
4898
4899
4900        if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {
4901          continue;
4902        }
4903
4904        const relatedTarget = {
4905          relatedTarget: context._element
4906        };
4907
4908        if (event.type === 'click') {
4909          relatedTarget.clickEvent = event;
4910        }
4911
4912        context._completeHide(relatedTarget);
4913      }
4914    }
4915
4916    static dataApiKeydownHandler(event) {
4917      // If not an UP | DOWN | ESCAPE key => not a dropdown command
4918      // If input/textarea && if key is other than ESCAPE => not a dropdown command
vendor: 10,656 bytes, lines 4919-5312
4919      const isInput = /input|textarea/i.test(event.target.tagName);
4920      const isEscapeEvent = event.key === ESCAPE_KEY$2;
4921      const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);
4922
4923      if (!isUpOrDownEvent && !isEscapeEvent) {
4924        return;
4925      }
4926
4927      if (isInput && !isEscapeEvent) {
4928        return;
4929      }
4930
4931      event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/
4932
4933      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);
4934      const instance = Dropdown.getOrCreateInstance(getToggleButton);
4935
4936      if (isUpOrDownEvent) {
4937        event.stopPropagation();
4938        instance.show();
4939
4940        instance._selectMenuItem(event);
4941
4942        return;
4943      }
4944
4945      if (instance._isShown()) {
4946        // else is escape and we check if it is shown
4947        event.stopPropagation();
4948        instance.hide();
4949        getToggleButton.focus();
4950      }
4951    }
4952
4953  }
4954  /**
4955   * Data API implementation
4956   */
4957
4958
4959  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);
4960  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
4961  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);
4962  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
4963  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {
4964    event.preventDefault();
4965    Dropdown.getOrCreateInstance(this).toggle();
4966  });
4967  /**
4968   * jQuery
4969   */
4970
4971  defineJQueryPlugin(Dropdown);
4972
4973  /**
4974   * --------------------------------------------------------------------------
4975   * Bootstrap (v5.2.3): util/scrollBar.js
4976   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
4977   * --------------------------------------------------------------------------
4978   */
4979  /**
4980   * Constants
4981   */
4982
4983  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
4984  const SELECTOR_STICKY_CONTENT = '.sticky-top';
4985  const PROPERTY_PADDING = 'padding-right';
4986  const PROPERTY_MARGIN = 'margin-right';
4987  /**
4988   * Class definition
4989   */
4990
4991  class ScrollBarHelper {
4992    constructor() {
4993      this._element = document.body;
4994    } // Public
4995
4996
4997    getWidth() {
4998      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes
4999      const documentWidth = document.documentElement.clientWidth;
5000      return Math.abs(window.innerWidth - documentWidth);
5001    }
5002
5003    hide() {
5004      const width = this.getWidth();
5005
5006      this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width
5007
5008
5009      this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth
5010
5011
5012      this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);
5013
5014      this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);
5015    }
5016
5017    reset() {
5018      this._resetElementAttributes(this._element, 'overflow');
5019
5020      this._resetElementAttributes(this._element, PROPERTY_PADDING);
5021
5022      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);
5023
5024      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);
5025    }
5026
5027    isOverflowing() {
5028      return this.getWidth() > 0;
5029    } // Private
5030
5031
5032    _disableOverFlow() {
5033      this._saveInitialAttribute(this._element, 'overflow');
5034
5035      this._element.style.overflow = 'hidden';
5036    }
5037
5038    _setElementAttributes(selector, styleProperty, callback) {
5039      const scrollbarWidth = this.getWidth();
5040
5041      const manipulationCallBack = element => {
5042        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {
5043          return;
5044        }
5045
5046        this._saveInitialAttribute(element, styleProperty);
5047
5048        const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);
5049        element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);
5050      };
5051
5052      this._applyManipulationCallback(selector, manipulationCallBack);
5053    }
5054
5055    _saveInitialAttribute(element, styleProperty) {
5056      const actualValue = element.style.getPropertyValue(styleProperty);
5057
5058      if (actualValue) {
5059        Manipulator.setDataAttribute(element, styleProperty, actualValue);
5060      }
5061    }
5062
5063    _resetElementAttributes(selector, styleProperty) {
5064      const manipulationCallBack = element => {
5065        const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero
5066
5067        if (value === null) {
5068          element.style.removeProperty(styleProperty);
5069          return;
5070        }
5071
5072        Manipulator.removeDataAttribute(element, styleProperty);
5073        element.style.setProperty(styleProperty, value);
5074      };
5075
5076      this._applyManipulationCallback(selector, manipulationCallBack);
5077    }
5078
5079    _applyManipulationCallback(selector, callBack) {
5080      if (isElement$1(selector)) {
5081        callBack(selector);
5082        return;
5083      }
5084
5085      for (const sel of SelectorEngine.find(selector, this._element)) {
5086        callBack(sel);
5087      }
5088    }
5089
5090  }
5091
5092  /**
5093   * --------------------------------------------------------------------------
5094   * Bootstrap (v5.2.3): util/backdrop.js
5095   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5096   * --------------------------------------------------------------------------
5097   */
5098  /**
5099   * Constants
5100   */
5101
5102  const NAME$9 = 'backdrop';
5103  const CLASS_NAME_FADE$4 = 'fade';
5104  const CLASS_NAME_SHOW$5 = 'show';
5105  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;
5106  const Default$8 = {
5107    className: 'modal-backdrop',
5108    clickCallback: null,
5109    isAnimated: false,
5110    isVisible: true,
5111    // if false, we use the backdrop helper without adding any element to the dom
5112    rootElement: 'body' // give the choice to place backdrop under different elements
5113
5114  };
5115  const DefaultType$8 = {
5116    className: 'string',
5117    clickCallback: '(function|null)',
5118    isAnimated: 'boolean',
5119    isVisible: 'boolean',
5120    rootElement: '(element|string)'
5121  };
5122  /**
5123   * Class definition
5124   */
5125
5126  class Backdrop extends Config {
5127    constructor(config) {
5128      super();
5129      this._config = this._getConfig(config);
5130      this._isAppended = false;
5131      this._element = null;
5132    } // Getters
5133
5134
5135    static get Default() {
5136      return Default$8;
5137    }
5138
5139    static get DefaultType() {
5140      return DefaultType$8;
5141    }
5142
5143    static get NAME() {
5144      return NAME$9;
5145    } // Public
5146
5147
5148    show(callback) {
5149      if (!this._config.isVisible) {
5150        execute(callback);
5151        return;
5152      }
5153
5154      this._append();
5155
5156      const element = this._getElement();
5157
5158      if (this._config.isAnimated) {
5159        reflow(element);
5160      }
5161
5162      element.classList.add(CLASS_NAME_SHOW$5);
5163
5164      this._emulateAnimation(() => {
5165        execute(callback);
5166      });
5167    }
5168
5169    hide(callback) {
5170      if (!this._config.isVisible) {
5171        execute(callback);
5172        return;
5173      }
5174
5175      this._getElement().classList.remove(CLASS_NAME_SHOW$5);
5176
5177      this._emulateAnimation(() => {
5178        this.dispose();
5179        execute(callback);
5180      });
5181    }
5182
5183    dispose() {
5184      if (!this._isAppended) {
5185        return;
5186      }
5187
5188      EventHandler.off(this._element, EVENT_MOUSEDOWN);
5189
5190      this._element.remove();
5191
5192      this._isAppended = false;
5193    } // Private
5194
5195
5196    _getElement() {
5197      if (!this._element) {
5198        const backdrop = document.createElement('div');
5199        backdrop.className = this._config.className;
5200
5201        if (this._config.isAnimated) {
5202          backdrop.classList.add(CLASS_NAME_FADE$4);
5203        }
5204
5205        this._element = backdrop;
5206      }
5207
5208      return this._element;
5209    }
5210
5211    _configAfterMerge(config) {
5212      // use getElement() with the default "body" to get a fresh Element on each instantiation
5213      config.rootElement = getElement(config.rootElement);
5214      return config;
5215    }
5216
5217    _append() {
5218      if (this._isAppended) {
5219        return;
5220      }
5221
5222      const element = this._getElement();
5223
5224      this._config.rootElement.append(element);
5225
5226      EventHandler.on(element, EVENT_MOUSEDOWN, () => {
5227        execute(this._config.clickCallback);
5228      });
5229      this._isAppended = true;
5230    }
5231
5232    _emulateAnimation(callback) {
5233      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
5234    }
5235
5236  }
5237
5238  /**
5239   * --------------------------------------------------------------------------
5240   * Bootstrap (v5.2.3): util/focustrap.js
5241   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5242   * --------------------------------------------------------------------------
5243   */
5244  /**
5245   * Constants
5246   */
5247
5248  const NAME$8 = 'focustrap';
5249  const DATA_KEY$5 = 'bs.focustrap';
5250  const EVENT_KEY$5 = `.${DATA_KEY$5}`;
5251  const EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;
5252  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;
5253  const TAB_KEY = 'Tab';
5254  const TAB_NAV_FORWARD = 'forward';
5255  const TAB_NAV_BACKWARD = 'backward';
5256  const Default$7 = {
5257    autofocus: true,
5258    trapElement: null // The element to trap focus inside of
5259
5260  };
5261  const DefaultType$7 = {
5262    autofocus: 'boolean',
5263    trapElement: 'element'
5264  };
5265  /**
5266   * Class definition
5267   */
5268
5269  class FocusTrap extends Config {
5270    constructor(config) {
5271      super();
5272      this._config = this._getConfig(config);
5273      this._isActive = false;
5274      this._lastTabNavDirection = null;
5275    } // Getters
5276
5277
5278    static get Default() {
5279      return Default$7;
5280    }
5281
5282    static get DefaultType() {
5283      return DefaultType$7;
5284    }
5285
5286    static get NAME() {
5287      return NAME$8;
5288    } // Public
5289
5290
5291    activate() {
5292      if (this._isActive) {
5293        return;
5294      }
5295
5296      if (this._config.autofocus) {
5297        this._config.trapElement.focus();
5298      }
5299
5300      EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop
5301
5302      EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));
5303      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));
5304      this._isActive = true;
5305    }
5306
5307    deactivate() {
5308      if (!this._isActive) {
5309        return;
5310      }
5311
5312      this._isActive = false;
5313      EventHandler.off(document, EVENT_KEY$5);
5314    } // Private
5315
5316
5317    _handleFocusin(event) {
5318      const {
5319        trapElement
5320      } = this._config;
5321
5322      if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
5323        return;
5324      }
5325
5326      const elements = SelectorEngine.focusableChildren(trapElement);
5327
5328      if (elements.length === 0) {
5329        trapElement.focus();
5330      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
5331        elements[elements.length - 1].focus();
5332      } else {
5333        elements[0].focus();
5334      }
5335    }
5336
5337    _handleKeydown(event) {
5338      if (event.key !== TAB_KEY) {
5339        return;
5340      }
5341
5342      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
5343    }
5344
5345  }
5346
5347  /**
5348   * --------------------------------------------------------------------------
5349   * Bootstrap (v5.2.3): modal.js
5350   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5351   * --------------------------------------------------------------------------
5352   */
5353  /**
5354   * Constants
5355   */
5356
5357  const NAME$7 = 'modal';
5358  const DATA_KEY$4 = 'bs.modal';
5359  const EVENT_KEY$4 = `.${DATA_KEY$4}`;
5360  const DATA_API_KEY$2 = '.data-api';
5361  const ESCAPE_KEY$1 = 'Escape';
5362  const EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;
5363  const EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;
5364  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;
5365  const EVENT_SHOW$4 = `show${EVENT_KEY$4}`;
5366  const EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;
5367  const EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;
5368  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;
5369  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;
5370  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;
5371  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;
5372  const CLASS_NAME_OPEN = 'modal-open';
5373  const CLASS_NAME_FADE$3 = 'fade';
vendor: 9,423 bytes, lines 5374-5738
5374  const CLASS_NAME_SHOW$4 = 'show';
5375  const CLASS_NAME_STATIC = 'modal-static';
5376  const OPEN_SELECTOR$1 = '.modal.show';
5377  const SELECTOR_DIALOG = '.modal-dialog';
5378  const SELECTOR_MODAL_BODY = '.modal-body';
5379  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle="modal"]';
5380  const Default$6 = {
5381    backdrop: true,
5382    focus: true,
5383    keyboard: true
5384  };
5385  const DefaultType$6 = {
5386    backdrop: '(boolean|string)',
5387    focus: 'boolean',
5388    keyboard: 'boolean'
5389  };
5390  /**
5391   * Class definition
5392   */
5393
5394  class Modal extends BaseComponent {
5395    constructor(element, config) {
5396      super(element, config);
5397      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);
5398      this._backdrop = this._initializeBackDrop();
5399      this._focustrap = this._initializeFocusTrap();
5400      this._isShown = false;
5401      this._isTransitioning = false;
5402      this._scrollBar = new ScrollBarHelper();
5403
5404      this._addEventListeners();
5405    } // Getters
5406
5407
5408    static get Default() {
5409      return Default$6;
5410    }
5411
5412    static get DefaultType() {
5413      return DefaultType$6;
5414    }
5415
5416    static get NAME() {
5417      return NAME$7;
5418    } // Public
5419
5420
5421    toggle(relatedTarget) {
5422      return this._isShown ? this.hide() : this.show(relatedTarget);
5423    }
5424
5425    show(relatedTarget) {
5426      if (this._isShown || this._isTransitioning) {
5427        return;
5428      }
5429
5430      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {
5431        relatedTarget
5432      });
5433
5434      if (showEvent.defaultPrevented) {
5435        return;
5436      }
5437
5438      this._isShown = true;
5439      this._isTransitioning = true;
5440
5441      this._scrollBar.hide();
5442
5443      document.body.classList.add(CLASS_NAME_OPEN);
5444
5445      this._adjustDialog();
5446
5447      this._backdrop.show(() => this._showElement(relatedTarget));
5448    }
5449
5450    hide() {
5451      if (!this._isShown || this._isTransitioning) {
5452        return;
5453      }
5454
5455      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);
5456
5457      if (hideEvent.defaultPrevented) {
5458        return;
5459      }
5460
5461      this._isShown = false;
5462      this._isTransitioning = true;
5463
5464      this._focustrap.deactivate();
5465
5466      this._element.classList.remove(CLASS_NAME_SHOW$4);
5467
5468      this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());
5469    }
5470
5471    dispose() {
5472      for (const htmlElement of [window, this._dialog]) {
5473        EventHandler.off(htmlElement, EVENT_KEY$4);
5474      }
5475
5476      this._backdrop.dispose();
5477
5478      this._focustrap.deactivate();
5479
5480      super.dispose();
5481    }
5482
5483    handleUpdate() {
5484      this._adjustDialog();
5485    } // Private
5486
5487
5488    _initializeBackDrop() {
5489      return new Backdrop({
5490        isVisible: Boolean(this._config.backdrop),
5491        // 'static' option will be translated to true, and booleans will keep their value,
5492        isAnimated: this._isAnimated()
5493      });
5494    }
5495
5496    _initializeFocusTrap() {
5497      return new FocusTrap({
5498        trapElement: this._element
5499      });
5500    }
5501
5502    _showElement(relatedTarget) {
5503      // try to append dynamic modal
5504      if (!document.body.contains(this._element)) {
5505        document.body.append(this._element);
5506      }
5507
5508      this._element.style.display = 'block';
5509
5510      this._element.removeAttribute('aria-hidden');
5511
5512      this._element.setAttribute('aria-modal', true);
5513
5514      this._element.setAttribute('role', 'dialog');
5515
5516      this._element.scrollTop = 0;
5517      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);
5518
5519      if (modalBody) {
5520        modalBody.scrollTop = 0;
5521      }
5522
5523      reflow(this._element);
5524
5525      this._element.classList.add(CLASS_NAME_SHOW$4);
5526
5527      const transitionComplete = () => {
5528        if (this._config.focus) {
5529          this._focustrap.activate();
5530        }
5531
5532        this._isTransitioning = false;
5533        EventHandler.trigger(this._element, EVENT_SHOWN$4, {
5534          relatedTarget
5535        });
5536      };
5537
5538      this._queueCallback(transitionComplete, this._dialog, this._isAnimated());
5539    }
5540
5541    _addEventListeners() {
5542      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {
5543        if (event.key !== ESCAPE_KEY$1) {
5544          return;
5545        }
5546
5547        if (this._config.keyboard) {
5548          event.preventDefault();
5549          this.hide();
5550          return;
5551        }
5552
5553        this._triggerBackdropTransition();
5554      });
5555      EventHandler.on(window, EVENT_RESIZE$1, () => {
5556        if (this._isShown && !this._isTransitioning) {
5557          this._adjustDialog();
5558        }
5559      });
5560      EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {
5561        // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks
5562        EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {
5563          if (this._element !== event.target || this._element !== event2.target) {
5564            return;
5565          }
5566
5567          if (this._config.backdrop === 'static') {
5568            this._triggerBackdropTransition();
5569
5570            return;
5571          }
5572
5573          if (this._config.backdrop) {
5574            this.hide();
5575          }
5576        });
5577      });
5578    }
5579
5580    _hideModal() {
5581      this._element.style.display = 'none';
5582
5583      this._element.setAttribute('aria-hidden', true);
5584
5585      this._element.removeAttribute('aria-modal');
5586
5587      this._element.removeAttribute('role');
5588
5589      this._isTransitioning = false;
5590
5591      this._backdrop.hide(() => {
5592        document.body.classList.remove(CLASS_NAME_OPEN);
5593
5594        this._resetAdjustments();
5595
5596        this._scrollBar.reset();
5597
5598        EventHandler.trigger(this._element, EVENT_HIDDEN$4);
5599      });
5600    }
5601
5602    _isAnimated() {
5603      return this._element.classList.contains(CLASS_NAME_FADE$3);
5604    }
5605
5606    _triggerBackdropTransition() {
5607      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);
5608
5609      if (hideEvent.defaultPrevented) {
5610        return;
5611      }
5612
5613      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
5614      const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed
5615
5616      if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {
5617        return;
5618      }
5619
5620      if (!isModalOverflowing) {
5621        this._element.style.overflowY = 'hidden';
5622      }
5623
5624      this._element.classList.add(CLASS_NAME_STATIC);
5625
5626      this._queueCallback(() => {
5627        this._element.classList.remove(CLASS_NAME_STATIC);
5628
5629        this._queueCallback(() => {
5630          this._element.style.overflowY = initialOverflowY;
5631        }, this._dialog);
5632      }, this._dialog);
5633
5634      this._element.focus();
5635    }
5636    /**
5637     * The following methods are used to handle overflowing modals
5638     */
5639
5640
5641    _adjustDialog() {
5642      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
5643
5644      const scrollbarWidth = this._scrollBar.getWidth();
5645
5646      const isBodyOverflowing = scrollbarWidth > 0;
5647
5648      if (isBodyOverflowing && !isModalOverflowing) {
5649        const property = isRTL() ? 'paddingLeft' : 'paddingRight';
5650        this._element.style[property] = `${scrollbarWidth}px`;
5651      }
5652
5653      if (!isBodyOverflowing && isModalOverflowing) {
5654        const property = isRTL() ? 'paddingRight' : 'paddingLeft';
5655        this._element.style[property] = `${scrollbarWidth}px`;
5656      }
5657    }
5658
5659    _resetAdjustments() {
5660      this._element.style.paddingLeft = '';
5661      this._element.style.paddingRight = '';
5662    } // Static
5663
5664
5665    static jQueryInterface(config, relatedTarget) {
5666      return this.each(function () {
5667        const data = Modal.getOrCreateInstance(this, config);
5668
5669        if (typeof config !== 'string') {
5670          return;
5671        }
5672
5673        if (typeof data[config] === 'undefined') {
5674          throw new TypeError(`No method named "${config}"`);
5675        }
5676
5677        data[config](relatedTarget);
5678      });
5679    }
5680
5681  }
5682  /**
5683   * Data API implementation
5684   */
5685
5686
5687  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {
5688    const target = getElementFromSelector(this);
5689
5690    if (['A', 'AREA'].includes(this.tagName)) {
5691      event.preventDefault();
5692    }
5693
5694    EventHandler.one(target, EVENT_SHOW$4, showEvent => {
5695      if (showEvent.defaultPrevented) {
5696        // only register focus restorer if modal will actually get shown
5697        return;
5698      }
5699
5700      EventHandler.one(target, EVENT_HIDDEN$4, () => {
5701        if (isVisible(this)) {
5702          this.focus();
5703        }
5704      });
5705    }); // avoid conflict when clicking modal toggler while another one is open
5706
5707    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);
5708
5709    if (alreadyOpen) {
5710      Modal.getInstance(alreadyOpen).hide();
5711    }
5712
5713    const data = Modal.getOrCreateInstance(target);
5714    data.toggle(this);
5715  });
5716  enableDismissTrigger(Modal);
5717  /**
5718   * jQuery
5719   */
5720
5721  defineJQueryPlugin(Modal);
5722
5723  /**
5724   * --------------------------------------------------------------------------
5725   * Bootstrap (v5.2.3): offcanvas.js
5726   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5727   * --------------------------------------------------------------------------
5728   */
5729  /**
5730   * Constants
5731   */
5732
5733  const NAME$6 = 'offcanvas';
5734  const DATA_KEY$3 = 'bs.offcanvas';
5735  const EVENT_KEY$3 = `.${DATA_KEY$3}`;
5736  const DATA_API_KEY$1 = '.data-api';
5737  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;
5738  const ESCAPE_KEY = 'Escape';
vendor: 4,885 bytes, lines 5739-5937
5739  const CLASS_NAME_SHOW$3 = 'show';
5740  const CLASS_NAME_SHOWING$1 = 'showing';
5741  const CLASS_NAME_HIDING = 'hiding';
5742  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
5743  const OPEN_SELECTOR = '.offcanvas.show';
5744  const EVENT_SHOW$3 = `show${EVENT_KEY$3}`;
5745  const EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;
5746  const EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;
5747  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;
5748  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;
5749  const EVENT_RESIZE = `resize${EVENT_KEY$3}`;
5750  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;
5751  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;
5752  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle="offcanvas"]';
5753  const Default$5 = {
5754    backdrop: true,
5755    keyboard: true,
5756    scroll: false
5757  };
5758  const DefaultType$5 = {
5759    backdrop: '(boolean|string)',
5760    keyboard: 'boolean',
5761    scroll: 'boolean'
5762  };
5763  /**
5764   * Class definition
5765   */
5766
5767  class Offcanvas extends BaseComponent {
5768    constructor(element, config) {
5769      super(element, config);
5770      this._isShown = false;
5771      this._backdrop = this._initializeBackDrop();
5772      this._focustrap = this._initializeFocusTrap();
5773
5774      this._addEventListeners();
5775    } // Getters
5776
5777
5778    static get Default() {
5779      return Default$5;
5780    }
5781
5782    static get DefaultType() {
5783      return DefaultType$5;
5784    }
5785
5786    static get NAME() {
5787      return NAME$6;
5788    } // Public
5789
5790
5791    toggle(relatedTarget) {
5792      return this._isShown ? this.hide() : this.show(relatedTarget);
5793    }
5794
5795    show(relatedTarget) {
5796      if (this._isShown) {
5797        return;
5798      }
5799
5800      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {
5801        relatedTarget
5802      });
5803
5804      if (showEvent.defaultPrevented) {
5805        return;
5806      }
5807
5808      this._isShown = true;
5809
5810      this._backdrop.show();
5811
5812      if (!this._config.scroll) {
5813        new ScrollBarHelper().hide();
5814      }
5815
5816      this._element.setAttribute('aria-modal', true);
5817
5818      this._element.setAttribute('role', 'dialog');
5819
5820      this._element.classList.add(CLASS_NAME_SHOWING$1);
5821
5822      const completeCallBack = () => {
5823        if (!this._config.scroll || this._config.backdrop) {
5824          this._focustrap.activate();
5825        }
5826
5827        this._element.classList.add(CLASS_NAME_SHOW$3);
5828
5829        this._element.classList.remove(CLASS_NAME_SHOWING$1);
5830
5831        EventHandler.trigger(this._element, EVENT_SHOWN$3, {
5832          relatedTarget
5833        });
5834      };
5835
5836      this._queueCallback(completeCallBack, this._element, true);
5837    }
5838
5839    hide() {
5840      if (!this._isShown) {
5841        return;
5842      }
5843
5844      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);
5845
5846      if (hideEvent.defaultPrevented) {
5847        return;
5848      }
5849
5850      this._focustrap.deactivate();
5851
5852      this._element.blur();
5853
5854      this._isShown = false;
5855
5856      this._element.classList.add(CLASS_NAME_HIDING);
5857
5858      this._backdrop.hide();
5859
5860      const completeCallback = () => {
5861        this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);
5862
5863        this._element.removeAttribute('aria-modal');
5864
5865        this._element.removeAttribute('role');
5866
5867        if (!this._config.scroll) {
5868          new ScrollBarHelper().reset();
5869        }
5870
5871        EventHandler.trigger(this._element, EVENT_HIDDEN$3);
5872      };
5873
5874      this._queueCallback(completeCallback, this._element, true);
5875    }
5876
5877    dispose() {
5878      this._backdrop.dispose();
5879
5880      this._focustrap.deactivate();
5881
5882      super.dispose();
5883    } // Private
5884
5885
5886    _initializeBackDrop() {
5887      const clickCallback = () => {
5888        if (this._config.backdrop === 'static') {
5889          EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
5890          return;
5891        }
5892
5893        this.hide();
5894      }; // 'static' option will be translated to true, and booleans will keep their value
5895
5896
5897      const isVisible = Boolean(this._config.backdrop);
5898      return new Backdrop({
5899        className: CLASS_NAME_BACKDROP,
5900        isVisible,
5901        isAnimated: true,
5902        rootElement: this._element.parentNode,
5903        clickCallback: isVisible ? clickCallback : null
5904      });
5905    }
5906
5907    _initializeFocusTrap() {
5908      return new FocusTrap({
5909        trapElement: this._element
5910      });
5911    }
5912
5913    _addEventListeners() {
5914      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {
5915        if (event.key !== ESCAPE_KEY) {
5916          return;
5917        }
5918
5919        if (!this._config.keyboard) {
5920          EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
5921          return;
5922        }
5923
5924        this.hide();
5925      });
5926    } // Static
5927
5928
5929    static jQueryInterface(config) {
5930      return this.each(function () {
5931        const data = Offcanvas.getOrCreateInstance(this, config);
5932
5933        if (typeof config !== 'string') {
5934          return;
5935        }
5936
5937        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
vendor: 9,096 bytes, lines 5938-6272
5938          throw new TypeError(`No method named "${config}"`);
5939        }
5940
5941        data[config](this);
5942      });
5943    }
5944
5945  }
5946  /**
5947   * Data API implementation
5948   */
5949
5950
5951  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {
5952    const target = getElementFromSelector(this);
5953
5954    if (['A', 'AREA'].includes(this.tagName)) {
5955      event.preventDefault();
5956    }
5957
5958    if (isDisabled(this)) {
5959      return;
5960    }
5961
5962    EventHandler.one(target, EVENT_HIDDEN$3, () => {
5963      // focus on trigger when it is closed
5964      if (isVisible(this)) {
5965        this.focus();
5966      }
5967    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open
5968
5969    const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
5970
5971    if (alreadyOpen && alreadyOpen !== target) {
5972      Offcanvas.getInstance(alreadyOpen).hide();
5973    }
5974
5975    const data = Offcanvas.getOrCreateInstance(target);
5976    data.toggle(this);
5977  });
5978  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {
5979    for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
5980      Offcanvas.getOrCreateInstance(selector).show();
5981    }
5982  });
5983  EventHandler.on(window, EVENT_RESIZE, () => {
5984    for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
5985      if (getComputedStyle(element).position !== 'fixed') {
5986        Offcanvas.getOrCreateInstance(element).hide();
5987      }
5988    }
5989  });
5990  enableDismissTrigger(Offcanvas);
5991  /**
5992   * jQuery
5993   */
5994
5995  defineJQueryPlugin(Offcanvas);
5996
5997  /**
5998   * --------------------------------------------------------------------------
5999   * Bootstrap (v5.2.3): util/sanitizer.js
6000   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6001   * --------------------------------------------------------------------------
6002   */
6003  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);
6004  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
6005  /**
6006   * A pattern that recognizes a commonly useful subset of URLs that are safe.
6007   *
6008   * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
6009   */
6010
6011  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
6012  /**
6013   * A pattern that matches safe data URLs. Only matches image, video and audio types.
6014   *
6015   * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts
6016   */
6017
6018  const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
6019
6020  const allowedAttribute = (attribute, allowedAttributeList) => {
6021    const attributeName = attribute.nodeName.toLowerCase();
6022
6023    if (allowedAttributeList.includes(attributeName)) {
6024      if (uriAttributes.has(attributeName)) {
6025        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));
6026      }
6027
6028      return true;
6029    } // Check if a regular expression validates the attribute.
6030
6031
6032    return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));
6033  };
6034
6035  const DefaultAllowlist = {
6036    // Global attributes allowed on any supplied element below.
6037    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
6038    a: ['target', 'href', 'title', 'rel'],
6039    area: [],
6040    b: [],
6041    br: [],
6042    col: [],
6043    code: [],
6044    div: [],
6045    em: [],
6046    hr: [],
6047    h1: [],
6048    h2: [],
6049    h3: [],
6050    h4: [],
6051    h5: [],
6052    h6: [],
6053    i: [],
6054    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],
6055    li: [],
6056    ol: [],
6057    p: [],
6058    pre: [],
6059    s: [],
6060    small: [],
6061    span: [],
6062    sub: [],
6063    sup: [],
6064    strong: [],
6065    u: [],
6066    ul: []
6067  };
6068  function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {
6069    if (!unsafeHtml.length) {
6070      return unsafeHtml;
6071    }
6072
6073    if (sanitizeFunction && typeof sanitizeFunction === 'function') {
6074      return sanitizeFunction(unsafeHtml);
6075    }
6076
6077    const domParser = new window.DOMParser();
6078    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
6079    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));
6080
6081    for (const element of elements) {
6082      const elementName = element.nodeName.toLowerCase();
6083
6084      if (!Object.keys(allowList).includes(elementName)) {
6085        element.remove();
6086        continue;
6087      }
6088
6089      const attributeList = [].concat(...element.attributes);
6090      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);
6091
6092      for (const attribute of attributeList) {
6093        if (!allowedAttribute(attribute, allowedAttributes)) {
6094          element.removeAttribute(attribute.nodeName);
6095        }
6096      }
6097    }
6098
6099    return createdDocument.body.innerHTML;
6100  }
6101
6102  /**
6103   * --------------------------------------------------------------------------
6104   * Bootstrap (v5.2.3): util/template-factory.js
6105   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6106   * --------------------------------------------------------------------------
6107   */
6108  /**
6109   * Constants
6110   */
6111
6112  const NAME$5 = 'TemplateFactory';
6113  const Default$4 = {
6114    allowList: DefaultAllowlist,
6115    content: {},
6116    // { selector : text ,  selector2 : text2 , }
6117    extraClass: '',
6118    html: false,
6119    sanitize: true,
6120    sanitizeFn: null,
6121    template: '<div></div>'
6122  };
6123  const DefaultType$4 = {
6124    allowList: 'object',
6125    content: 'object',
6126    extraClass: '(string|function)',
6127    html: 'boolean',
6128    sanitize: 'boolean',
6129    sanitizeFn: '(null|function)',
6130    template: 'string'
6131  };
6132  const DefaultContentType = {
6133    entry: '(string|element|function|null)',
6134    selector: '(string|element)'
6135  };
6136  /**
6137   * Class definition
6138   */
6139
6140  class TemplateFactory extends Config {
6141    constructor(config) {
6142      super();
6143      this._config = this._getConfig(config);
6144    } // Getters
6145
6146
6147    static get Default() {
6148      return Default$4;
6149    }
6150
6151    static get DefaultType() {
6152      return DefaultType$4;
6153    }
6154
6155    static get NAME() {
6156      return NAME$5;
6157    } // Public
6158
6159
6160    getContent() {
6161      return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);
6162    }
6163
6164    hasContent() {
6165      return this.getContent().length > 0;
6166    }
6167
6168    changeContent(content) {
6169      this._checkContent(content);
6170
6171      this._config.content = { ...this._config.content,
6172        ...content
6173      };
6174      return this;
6175    }
6176
6177    toHtml() {
6178      const templateWrapper = document.createElement('div');
6179      templateWrapper.innerHTML = this._maybeSanitize(this._config.template);
6180
6181      for (const [selector, text] of Object.entries(this._config.content)) {
6182        this._setContent(templateWrapper, text, selector);
6183      }
6184
6185      const template = templateWrapper.children[0];
6186
6187      const extraClass = this._resolvePossibleFunction(this._config.extraClass);
6188
6189      if (extraClass) {
6190        template.classList.add(...extraClass.split(' '));
6191      }
6192
6193      return template;
6194    } // Private
6195
6196
6197    _typeCheckConfig(config) {
6198      super._typeCheckConfig(config);
6199
6200      this._checkContent(config.content);
6201    }
6202
6203    _checkContent(arg) {
6204      for (const [selector, content] of Object.entries(arg)) {
6205        super._typeCheckConfig({
6206          selector,
6207          entry: content
6208        }, DefaultContentType);
6209      }
6210    }
6211
6212    _setContent(template, content, selector) {
6213      const templateElement = SelectorEngine.findOne(selector, template);
6214
6215      if (!templateElement) {
6216        return;
6217      }
6218
6219      content = this._resolvePossibleFunction(content);
6220
6221      if (!content) {
6222        templateElement.remove();
6223        return;
6224      }
6225
6226      if (isElement$1(content)) {
6227        this._putElementInTemplate(getElement(content), templateElement);
6228
6229        return;
6230      }
6231
6232      if (this._config.html) {
6233        templateElement.innerHTML = this._maybeSanitize(content);
6234        return;
6235      }
6236
6237      templateElement.textContent = content;
6238    }
6239
6240    _maybeSanitize(arg) {
6241      return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;
6242    }
6243
6244    _resolvePossibleFunction(arg) {
6245      return typeof arg === 'function' ? arg(this) : arg;
6246    }
6247
6248    _putElementInTemplate(element, templateElement) {
6249      if (this._config.html) {
6250        templateElement.innerHTML = '';
6251        templateElement.append(element);
6252        return;
6253      }
6254
6255      templateElement.textContent = element.textContent;
6256    }
6257
6258  }
6259
6260  /**
6261   * --------------------------------------------------------------------------
6262   * Bootstrap (v5.2.3): tooltip.js
6263   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6264   * --------------------------------------------------------------------------
6265   */
6266  /**
6267   * Constants
6268   */
6269
6270  const NAME$4 = 'tooltip';
6271  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);
6272  const CLASS_NAME_FADE$2 = 'fade';
vendor: 5,480 bytes, lines 6273-6474
6273  const CLASS_NAME_MODAL = 'modal';
6274  const CLASS_NAME_SHOW$2 = 'show';
6275  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';
6276  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;
6277  const EVENT_MODAL_HIDE = 'hide.bs.modal';
6278  const TRIGGER_HOVER = 'hover';
6279  const TRIGGER_FOCUS = 'focus';
6280  const TRIGGER_CLICK = 'click';
6281  const TRIGGER_MANUAL = 'manual';
6282  const EVENT_HIDE$2 = 'hide';
6283  const EVENT_HIDDEN$2 = 'hidden';
6284  const EVENT_SHOW$2 = 'show';
6285  const EVENT_SHOWN$2 = 'shown';
6286  const EVENT_INSERTED = 'inserted';
6287  const EVENT_CLICK$1 = 'click';
6288  const EVENT_FOCUSIN$1 = 'focusin';
6289  const EVENT_FOCUSOUT$1 = 'focusout';
6290  const EVENT_MOUSEENTER = 'mouseenter';
6291  const EVENT_MOUSELEAVE = 'mouseleave';
6292  const AttachmentMap = {
6293    AUTO: 'auto',
6294    TOP: 'top',
6295    RIGHT: isRTL() ? 'left' : 'right',
6296    BOTTOM: 'bottom',
6297    LEFT: isRTL() ? 'right' : 'left'
6298  };
6299  const Default$3 = {
6300    allowList: DefaultAllowlist,
6301    animation: true,
6302    boundary: 'clippingParents',
6303    container: false,
6304    customClass: '',
6305    delay: 0,
6306    fallbackPlacements: ['top', 'right', 'bottom', 'left'],
6307    html: false,
6308    offset: [0, 0],
6309    placement: 'top',
6310    popperConfig: null,
6311    sanitize: true,
6312    sanitizeFn: null,
6313    selector: false,
6314    template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div>' + '</div>',
6315    title: '',
6316    trigger: 'hover focus'
6317  };
6318  const DefaultType$3 = {
6319    allowList: 'object',
6320    animation: 'boolean',
6321    boundary: '(string|element)',
6322    container: '(string|element|boolean)',
6323    customClass: '(string|function)',
6324    delay: '(number|object)',
6325    fallbackPlacements: 'array',
6326    html: 'boolean',
6327    offset: '(array|string|function)',
6328    placement: '(string|function)',
6329    popperConfig: '(null|object|function)',
6330    sanitize: 'boolean',
6331    sanitizeFn: '(null|function)',
6332    selector: '(string|boolean)',
6333    template: 'string',
6334    title: '(string|element|function)',
6335    trigger: 'string'
6336  };
6337  /**
6338   * Class definition
6339   */
6340
6341  class Tooltip extends BaseComponent {
6342    constructor(element, config) {
6343      if (typeof Popper === 'undefined') {
6344        throw new TypeError('Bootstrap\'s tooltips require Popper (https://popper.js.org)');
6345      }
6346
6347      super(element, config); // Private
6348
6349      this._isEnabled = true;
6350      this._timeout = 0;
6351      this._isHovered = null;
6352      this._activeTrigger = {};
6353      this._popper = null;
6354      this._templateFactory = null;
6355      this._newContent = null; // Protected
6356
6357      this.tip = null;
6358
6359      this._setListeners();
6360
6361      if (!this._config.selector) {
6362        this._fixTitle();
6363      }
6364    } // Getters
6365
6366
6367    static get Default() {
6368      return Default$3;
6369    }
6370
6371    static get DefaultType() {
6372      return DefaultType$3;
6373    }
6374
6375    static get NAME() {
6376      return NAME$4;
6377    } // Public
6378
6379
6380    enable() {
6381      this._isEnabled = true;
6382    }
6383
6384    disable() {
6385      this._isEnabled = false;
6386    }
6387
6388    toggleEnabled() {
6389      this._isEnabled = !this._isEnabled;
6390    }
6391
6392    toggle() {
6393      if (!this._isEnabled) {
6394        return;
6395      }
6396
6397      this._activeTrigger.click = !this._activeTrigger.click;
6398
6399      if (this._isShown()) {
6400        this._leave();
6401
6402        return;
6403      }
6404
6405      this._enter();
6406    }
6407
6408    dispose() {
6409      clearTimeout(this._timeout);
6410      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
6411
6412      if (this._element.getAttribute('data-bs-original-title')) {
6413        this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));
6414      }
6415
6416      this._disposePopper();
6417
6418      super.dispose();
6419    }
6420
6421    show() {
6422      if (this._element.style.display === 'none') {
6423        throw new Error('Please use show on visible elements');
6424      }
6425
6426      if (!(this._isWithContent() && this._isEnabled)) {
6427        return;
6428      }
6429
6430      const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));
6431      const shadowRoot = findShadowRoot(this._element);
6432
6433      const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);
6434
6435      if (showEvent.defaultPrevented || !isInTheDom) {
6436        return;
6437      } // todo v6 remove this OR make it optional
6438
6439
6440      this._disposePopper();
6441
6442      const tip = this._getTipElement();
6443
6444      this._element.setAttribute('aria-describedby', tip.getAttribute('id'));
6445
6446      const {
6447        container
6448      } = this._config;
6449
6450      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {
6451        container.append(tip);
6452        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));
6453      }
6454
6455      this._popper = this._createPopper(tip);
6456      tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra
6457      // empty mouseover listeners to the body's immediate children;
6458      // only needed because of broken event delegation on iOS
6459      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
6460
6461      if ('ontouchstart' in document.documentElement) {
6462        for (const element of [].concat(...document.body.children)) {
6463          EventHandler.on(element, 'mouseover', noop);
6464        }
6465      }
6466
6467      const complete = () => {
6468        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));
6469
6470        if (this._isHovered === false) {
6471          this._leave();
6472        }
6473
6474        this._isHovered = false;
vendor: 2,145 bytes, lines 6475-6554
6475      };
6476
6477      this._queueCallback(complete, this.tip, this._isAnimated());
6478    }
6479
6480    hide() {
6481      if (!this._isShown()) {
6482        return;
6483      }
6484
6485      const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));
6486
6487      if (hideEvent.defaultPrevented) {
6488        return;
6489      }
6490
6491      const tip = this._getTipElement();
6492
6493      tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra
6494      // empty mouseover listeners we added for iOS support
6495
6496      if ('ontouchstart' in document.documentElement) {
6497        for (const element of [].concat(...document.body.children)) {
6498          EventHandler.off(element, 'mouseover', noop);
6499        }
6500      }
6501
6502      this._activeTrigger[TRIGGER_CLICK] = false;
6503      this._activeTrigger[TRIGGER_FOCUS] = false;
6504      this._activeTrigger[TRIGGER_HOVER] = false;
6505      this._isHovered = null; // it is a trick to support manual triggering
6506
6507      const complete = () => {
6508        if (this._isWithActiveTrigger()) {
6509          return;
6510        }
6511
6512        if (!this._isHovered) {
6513          this._disposePopper();
6514        }
6515
6516        this._element.removeAttribute('aria-describedby');
6517
6518        EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));
6519      };
6520
6521      this._queueCallback(complete, this.tip, this._isAnimated());
6522    }
6523
6524    update() {
6525      if (this._popper) {
6526        this._popper.update();
6527      }
6528    } // Protected
6529
6530
6531    _isWithContent() {
6532      return Boolean(this._getTitle());
6533    }
6534
6535    _getTipElement() {
6536      if (!this.tip) {
6537        this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());
6538      }
6539
6540      return this.tip;
6541    }
6542
6543    _createTipElement(content) {
6544      const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6
6545
6546
6547      if (!tip) {
6548        return null;
6549      }
6550
6551      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only
6552
6553      tip.classList.add(`bs-${this.constructor.NAME}-auto`);
6554      const tipId = getUID(this.constructor.NAME).toString();
vendor: 5,979 bytes, lines 6555-6753
6555      tip.setAttribute('id', tipId);
6556
6557      if (this._isAnimated()) {
6558        tip.classList.add(CLASS_NAME_FADE$2);
6559      }
6560
6561      return tip;
6562    }
6563
6564    setContent(content) {
6565      this._newContent = content;
6566
6567      if (this._isShown()) {
6568        this._disposePopper();
6569
6570        this.show();
6571      }
6572    }
6573
6574    _getTemplateFactory(content) {
6575      if (this._templateFactory) {
6576        this._templateFactory.changeContent(content);
6577      } else {
6578        this._templateFactory = new TemplateFactory({ ...this._config,
6579          // the `content` var has to be after `this._config`
6580          // to override config.content in case of popover
6581          content,
6582          extraClass: this._resolvePossibleFunction(this._config.customClass)
6583        });
6584      }
6585
6586      return this._templateFactory;
6587    }
6588
6589    _getContentForTemplate() {
6590      return {
6591        [SELECTOR_TOOLTIP_INNER]: this._getTitle()
6592      };
6593    }
6594
6595    _getTitle() {
6596      return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');
6597    } // Private
6598
6599
6600    _initializeOnDelegatedTarget(event) {
6601      return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());
6602    }
6603
6604    _isAnimated() {
6605      return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);
6606    }
6607
6608    _isShown() {
6609      return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);
6610    }
6611
6612    _createPopper(tip) {
6613      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;
6614      const attachment = AttachmentMap[placement.toUpperCase()];
6615      return createPopper(this._element, tip, this._getPopperConfig(attachment));
6616    }
6617
6618    _getOffset() {
6619      const {
6620        offset
6621      } = this._config;
6622
6623      if (typeof offset === 'string') {
6624        return offset.split(',').map(value => Number.parseInt(value, 10));
6625      }
6626
6627      if (typeof offset === 'function') {
6628        return popperData => offset(popperData, this._element);
6629      }
6630
6631      return offset;
6632    }
6633
6634    _resolvePossibleFunction(arg) {
6635      return typeof arg === 'function' ? arg.call(this._element) : arg;
6636    }
6637
6638    _getPopperConfig(attachment) {
6639      const defaultBsPopperConfig = {
6640        placement: attachment,
6641        modifiers: [{
6642          name: 'flip',
6643          options: {
6644            fallbackPlacements: this._config.fallbackPlacements
6645          }
6646        }, {
6647          name: 'offset',
6648          options: {
6649            offset: this._getOffset()
6650          }
6651        }, {
6652          name: 'preventOverflow',
6653          options: {
6654            boundary: this._config.boundary
6655          }
6656        }, {
6657          name: 'arrow',
6658          options: {
6659            element: `.${this.constructor.NAME}-arrow`
6660          }
6661        }, {
6662          name: 'preSetPlacement',
6663          enabled: true,
6664          phase: 'beforeMain',
6665          fn: data => {
6666            // Pre-set Popper's placement attribute in order to read the arrow sizes properly.
6667            // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement
6668            this._getTipElement().setAttribute('data-popper-placement', data.state.placement);
6669          }
6670        }]
6671      };
6672      return { ...defaultBsPopperConfig,
6673        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)
6674      };
6675    }
6676
6677    _setListeners() {
6678      const triggers = this._config.trigger.split(' ');
6679
6680      for (const trigger of triggers) {
6681        if (trigger === 'click') {
6682          EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {
6683            const context = this._initializeOnDelegatedTarget(event);
6684
6685            context.toggle();
6686          });
6687        } else if (trigger !== TRIGGER_MANUAL) {
6688          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);
6689          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);
6690          EventHandler.on(this._element, eventIn, this._config.selector, event => {
6691            const context = this._initializeOnDelegatedTarget(event);
6692
6693            context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
6694
6695            context._enter();
6696          });
6697          EventHandler.on(this._element, eventOut, this._config.selector, event => {
6698            const context = this._initializeOnDelegatedTarget(event);
6699
6700            context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);
6701
6702            context._leave();
6703          });
6704        }
6705      }
6706
6707      this._hideModalHandler = () => {
6708        if (this._element) {
6709          this.hide();
6710        }
6711      };
6712
6713      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);
6714    }
6715
6716    _fixTitle() {
6717      const title = this._element.getAttribute('title');
6718
6719      if (!title) {
6720        return;
6721      }
6722
6723      if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {
6724        this._element.setAttribute('aria-label', title);
6725      }
6726
6727      this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility
6728
6729
6730      this._element.removeAttribute('title');
6731    }
6732
6733    _enter() {
6734      if (this._isShown() || this._isHovered) {
6735        this._isHovered = true;
6736        return;
6737      }
6738
6739      this._isHovered = true;
6740
6741      this._setTimeout(() => {
6742        if (this._isHovered) {
6743          this.show();
6744        }
6745      }, this._config.delay.show);
6746    }
6747
6748    _leave() {
6749      if (this._isWithActiveTrigger()) {
6750        return;
6751      }
6752
6753      this._isHovered = false;
vendor: 14,315 bytes, lines 6754-7266
6754
6755      this._setTimeout(() => {
6756        if (!this._isHovered) {
6757          this.hide();
6758        }
6759      }, this._config.delay.hide);
6760    }
6761
6762    _setTimeout(handler, timeout) {
6763      clearTimeout(this._timeout);
6764      this._timeout = setTimeout(handler, timeout);
6765    }
6766
6767    _isWithActiveTrigger() {
6768      return Object.values(this._activeTrigger).includes(true);
6769    }
6770
6771    _getConfig(config) {
6772      const dataAttributes = Manipulator.getDataAttributes(this._element);
6773
6774      for (const dataAttribute of Object.keys(dataAttributes)) {
6775        if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {
6776          delete dataAttributes[dataAttribute];
6777        }
6778      }
6779
6780      config = { ...dataAttributes,
6781        ...(typeof config === 'object' && config ? config : {})
6782      };
6783      config = this._mergeConfigObj(config);
6784      config = this._configAfterMerge(config);
6785
6786      this._typeCheckConfig(config);
6787
6788      return config;
6789    }
6790
6791    _configAfterMerge(config) {
6792      config.container = config.container === false ? document.body : getElement(config.container);
6793
6794      if (typeof config.delay === 'number') {
6795        config.delay = {
6796          show: config.delay,
6797          hide: config.delay
6798        };
6799      }
6800
6801      if (typeof config.title === 'number') {
6802        config.title = config.title.toString();
6803      }
6804
6805      if (typeof config.content === 'number') {
6806        config.content = config.content.toString();
6807      }
6808
6809      return config;
6810    }
6811
6812    _getDelegateConfig() {
6813      const config = {};
6814
6815      for (const key in this._config) {
6816        if (this.constructor.Default[key] !== this._config[key]) {
6817          config[key] = this._config[key];
6818        }
6819      }
6820
6821      config.selector = false;
6822      config.trigger = 'manual'; // In the future can be replaced with:
6823      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])
6824      // `Object.fromEntries(keysWithDifferentValues)`
6825
6826      return config;
6827    }
6828
6829    _disposePopper() {
6830      if (this._popper) {
6831        this._popper.destroy();
6832
6833        this._popper = null;
6834      }
6835
6836      if (this.tip) {
6837        this.tip.remove();
6838        this.tip = null;
6839      }
6840    } // Static
6841
6842
6843    static jQueryInterface(config) {
6844      return this.each(function () {
6845        const data = Tooltip.getOrCreateInstance(this, config);
6846
6847        if (typeof config !== 'string') {
6848          return;
6849        }
6850
6851        if (typeof data[config] === 'undefined') {
6852          throw new TypeError(`No method named "${config}"`);
6853        }
6854
6855        data[config]();
6856      });
6857    }
6858
6859  }
6860  /**
6861   * jQuery
6862   */
6863
6864
6865  defineJQueryPlugin(Tooltip);
6866
6867  /**
6868   * --------------------------------------------------------------------------
6869   * Bootstrap (v5.2.3): popover.js
6870   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6871   * --------------------------------------------------------------------------
6872   */
6873  /**
6874   * Constants
6875   */
6876
6877  const NAME$3 = 'popover';
6878  const SELECTOR_TITLE = '.popover-header';
6879  const SELECTOR_CONTENT = '.popover-body';
6880  const Default$2 = { ...Tooltip.Default,
6881    content: '',
6882    offset: [0, 8],
6883    placement: 'right',
6884    template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div>' + '</div>',
6885    trigger: 'click'
6886  };
6887  const DefaultType$2 = { ...Tooltip.DefaultType,
6888    content: '(null|string|element|function)'
6889  };
6890  /**
6891   * Class definition
6892   */
6893
6894  class Popover extends Tooltip {
6895    // Getters
6896    static get Default() {
6897      return Default$2;
6898    }
6899
6900    static get DefaultType() {
6901      return DefaultType$2;
6902    }
6903
6904    static get NAME() {
6905      return NAME$3;
6906    } // Overrides
6907
6908
6909    _isWithContent() {
6910      return this._getTitle() || this._getContent();
6911    } // Private
6912
6913
6914    _getContentForTemplate() {
6915      return {
6916        [SELECTOR_TITLE]: this._getTitle(),
6917        [SELECTOR_CONTENT]: this._getContent()
6918      };
6919    }
6920
6921    _getContent() {
6922      return this._resolvePossibleFunction(this._config.content);
6923    } // Static
6924
6925
6926    static jQueryInterface(config) {
6927      return this.each(function () {
6928        const data = Popover.getOrCreateInstance(this, config);
6929
6930        if (typeof config !== 'string') {
6931          return;
6932        }
6933
6934        if (typeof data[config] === 'undefined') {
6935          throw new TypeError(`No method named "${config}"`);
6936        }
6937
6938        data[config]();
6939      });
6940    }
6941
6942  }
6943  /**
6944   * jQuery
6945   */
6946
6947
6948  defineJQueryPlugin(Popover);
6949
6950  /**
6951   * --------------------------------------------------------------------------
6952   * Bootstrap (v5.2.3): scrollspy.js
6953   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6954   * --------------------------------------------------------------------------
6955   */
6956  /**
6957   * Constants
6958   */
6959
6960  const NAME$2 = 'scrollspy';
6961  const DATA_KEY$2 = 'bs.scrollspy';
6962  const EVENT_KEY$2 = `.${DATA_KEY$2}`;
6963  const DATA_API_KEY = '.data-api';
6964  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;
6965  const EVENT_CLICK = `click${EVENT_KEY$2}`;
6966  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;
6967  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';
6968  const CLASS_NAME_ACTIVE$1 = 'active';
6969  const SELECTOR_DATA_SPY = '[data-bs-spy="scroll"]';
6970  const SELECTOR_TARGET_LINKS = '[href]';
6971  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';
6972  const SELECTOR_NAV_LINKS = '.nav-link';
6973  const SELECTOR_NAV_ITEMS = '.nav-item';
6974  const SELECTOR_LIST_ITEMS = '.list-group-item';
6975  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;
6976  const SELECTOR_DROPDOWN = '.dropdown';
6977  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';
6978  const Default$1 = {
6979    offset: null,
6980    // TODO: v6 @deprecated, keep it for backwards compatibility reasons
6981    rootMargin: '0px 0px -25%',
6982    smoothScroll: false,
6983    target: null,
6984    threshold: [0.1, 0.5, 1]
6985  };
6986  const DefaultType$1 = {
6987    offset: '(number|null)',
6988    // TODO v6 @deprecated, keep it for backwards compatibility reasons
6989    rootMargin: 'string',
6990    smoothScroll: 'boolean',
6991    target: 'element',
6992    threshold: 'array'
6993  };
6994  /**
6995   * Class definition
6996   */
6997
6998  class ScrollSpy extends BaseComponent {
6999    constructor(element, config) {
7000      super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper
7001
7002      this._targetLinks = new Map();
7003      this._observableSections = new Map();
7004      this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;
7005      this._activeTarget = null;
7006      this._observer = null;
7007      this._previousScrollData = {
7008        visibleEntryTop: 0,
7009        parentScrollTop: 0
7010      };
7011      this.refresh(); // initialize
7012    } // Getters
7013
7014
7015    static get Default() {
7016      return Default$1;
7017    }
7018
7019    static get DefaultType() {
7020      return DefaultType$1;
7021    }
7022
7023    static get NAME() {
7024      return NAME$2;
7025    } // Public
7026
7027
7028    refresh() {
7029      this._initializeTargetsAndObservables();
7030
7031      this._maybeEnableSmoothScroll();
7032
7033      if (this._observer) {
7034        this._observer.disconnect();
7035      } else {
7036        this._observer = this._getNewObserver();
7037      }
7038
7039      for (const section of this._observableSections.values()) {
7040        this._observer.observe(section);
7041      }
7042    }
7043
7044    dispose() {
7045      this._observer.disconnect();
7046
7047      super.dispose();
7048    } // Private
7049
7050
7051    _configAfterMerge(config) {
7052      // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case
7053      config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only
7054
7055      config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;
7056
7057      if (typeof config.threshold === 'string') {
7058        config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));
7059      }
7060
7061      return config;
7062    }
7063
7064    _maybeEnableSmoothScroll() {
7065      if (!this._config.smoothScroll) {
7066        return;
7067      } // unregister any previous listeners
7068
7069
7070      EventHandler.off(this._config.target, EVENT_CLICK);
7071      EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {
7072        const observableSection = this._observableSections.get(event.target.hash);
7073
7074        if (observableSection) {
7075          event.preventDefault();
7076          const root = this._rootElement || window;
7077          const height = observableSection.offsetTop - this._element.offsetTop;
7078
7079          if (root.scrollTo) {
7080            root.scrollTo({
7081              top: height,
7082              behavior: 'smooth'
7083            });
7084            return;
7085          } // Chrome 60 doesn't support `scrollTo`
7086
7087
7088          root.scrollTop = height;
7089        }
7090      });
7091    }
7092
7093    _getNewObserver() {
7094      const options = {
7095        root: this._rootElement,
7096        threshold: this._config.threshold,
7097        rootMargin: this._config.rootMargin
7098      };
7099      return new IntersectionObserver(entries => this._observerCallback(entries), options);
7100    } // The logic of selection
7101
7102
7103    _observerCallback(entries) {
7104      const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);
7105
7106      const activate = entry => {
7107        this._previousScrollData.visibleEntryTop = entry.target.offsetTop;
7108
7109        this._process(targetElement(entry));
7110      };
7111
7112      const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;
7113      const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;
7114      this._previousScrollData.parentScrollTop = parentScrollTop;
7115
7116      for (const entry of entries) {
7117        if (!entry.isIntersecting) {
7118          this._activeTarget = null;
7119
7120          this._clearActiveClass(targetElement(entry));
7121
7122          continue;
7123        }
7124
7125        const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop
7126
7127        if (userScrollsDown && entryIsLowerThanPrevious) {
7128          activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration
7129
7130          if (!parentScrollTop) {
7131            return;
7132          }
7133
7134          continue;
7135        } // if we are scrolling up, pick the smallest offsetTop
7136
7137
7138        if (!userScrollsDown && !entryIsLowerThanPrevious) {
7139          activate(entry);
7140        }
7141      }
7142    }
7143
7144    _initializeTargetsAndObservables() {
7145      this._targetLinks = new Map();
7146      this._observableSections = new Map();
7147      const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);
7148
7149      for (const anchor of targetLinks) {
7150        // ensure that the anchor has an id and is not disabled
7151        if (!anchor.hash || isDisabled(anchor)) {
7152          continue;
7153        }
7154
7155        const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible
7156
7157        if (isVisible(observableSection)) {
7158          this._targetLinks.set(anchor.hash, anchor);
7159
7160          this._observableSections.set(anchor.hash, observableSection);
7161        }
7162      }
7163    }
7164
7165    _process(target) {
7166      if (this._activeTarget === target) {
7167        return;
7168      }
7169
7170      this._clearActiveClass(this._config.target);
7171
7172      this._activeTarget = target;
7173      target.classList.add(CLASS_NAME_ACTIVE$1);
7174
7175      this._activateParents(target);
7176
7177      EventHandler.trigger(this._element, EVENT_ACTIVATE, {
7178        relatedTarget: target
7179      });
7180    }
7181
7182    _activateParents(target) {
7183      // Activate dropdown parents
7184      if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {
7185        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);
7186        return;
7187      }
7188
7189      for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {
7190        // Set triggered links parents as active
7191        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
7192        for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {
7193          item.classList.add(CLASS_NAME_ACTIVE$1);
7194        }
7195      }
7196    }
7197
7198    _clearActiveClass(parent) {
7199      parent.classList.remove(CLASS_NAME_ACTIVE$1);
7200      const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE$1}`, parent);
7201
7202      for (const node of activeNodes) {
7203        node.classList.remove(CLASS_NAME_ACTIVE$1);
7204      }
7205    } // Static
7206
7207
7208    static jQueryInterface(config) {
7209      return this.each(function () {
7210        const data = ScrollSpy.getOrCreateInstance(this, config);
7211
7212        if (typeof config !== 'string') {
7213          return;
7214        }
7215
7216        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
7217          throw new TypeError(`No method named "${config}"`);
7218        }
7219
7220        data[config]();
7221      });
7222    }
7223
7224  }
7225  /**
7226   * Data API implementation
7227   */
7228
7229
7230  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => {
7231    for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {
7232      ScrollSpy.getOrCreateInstance(spy);
7233    }
7234  });
7235  /**
7236   * jQuery
7237   */
7238
7239  defineJQueryPlugin(ScrollSpy);
7240
7241  /**
7242   * --------------------------------------------------------------------------
7243   * Bootstrap (v5.2.3): tab.js
7244   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7245   * --------------------------------------------------------------------------
7246   */
7247  /**
7248   * Constants
7249   */
7250
7251  const NAME$1 = 'tab';
7252  const DATA_KEY$1 = 'bs.tab';
7253  const EVENT_KEY$1 = `.${DATA_KEY$1}`;
7254  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;
7255  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;
7256  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;
7257  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;
7258  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}`;
7259  const EVENT_KEYDOWN = `keydown${EVENT_KEY$1}`;
7260  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$1}`;
7261  const ARROW_LEFT_KEY = 'ArrowLeft';
7262  const ARROW_RIGHT_KEY = 'ArrowRight';
7263  const ARROW_UP_KEY = 'ArrowUp';
7264  const ARROW_DOWN_KEY = 'ArrowDown';
7265  const CLASS_NAME_ACTIVE = 'active';
7266  const CLASS_NAME_FADE$1 = 'fade';
vendor: 5,985 bytes, lines 7267-7464
7267  const CLASS_NAME_SHOW$1 = 'show';
7268  const CLASS_DROPDOWN = 'dropdown';
7269  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
7270  const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
7271  const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';
7272  const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
7273  const SELECTOR_OUTER = '.nav-item, .list-group-item';
7274  const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
7275  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // todo:v6: could be only `tab`
7276
7277  const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
7278  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"]`;
7279  /**
7280   * Class definition
7281   */
7282
7283  class Tab extends BaseComponent {
7284    constructor(element) {
7285      super(element);
7286      this._parent = this._element.closest(SELECTOR_TAB_PANEL);
7287
7288      if (!this._parent) {
7289        return; // todo: should Throw exception on v6
7290        // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
7291      } // Set up initial aria attributes
7292
7293
7294      this._setInitialAttributes(this._parent, this._getChildren());
7295
7296      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));
7297    } // Getters
7298
7299
7300    static get NAME() {
7301      return NAME$1;
7302    } // Public
7303
7304
7305    show() {
7306      // Shows this elem and deactivate the active sibling if exists
7307      const innerElem = this._element;
7308
7309      if (this._elemIsActive(innerElem)) {
7310        return;
7311      } // Search for active tab on same parent to deactivate it
7312
7313
7314      const active = this._getActiveElem();
7315
7316      const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE$1, {
7317        relatedTarget: innerElem
7318      }) : null;
7319      const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW$1, {
7320        relatedTarget: active
7321      });
7322
7323      if (showEvent.defaultPrevented || hideEvent && hideEvent.defaultPrevented) {
7324        return;
7325      }
7326
7327      this._deactivate(active, innerElem);
7328
7329      this._activate(innerElem, active);
7330    } // Private
7331
7332
7333    _activate(element, relatedElem) {
7334      if (!element) {
7335        return;
7336      }
7337
7338      element.classList.add(CLASS_NAME_ACTIVE);
7339
7340      this._activate(getElementFromSelector(element)); // Search and activate/show the proper section
7341
7342
7343      const complete = () => {
7344        if (element.getAttribute('role') !== 'tab') {
7345          element.classList.add(CLASS_NAME_SHOW$1);
7346          return;
7347        }
7348
7349        element.removeAttribute('tabindex');
7350        element.setAttribute('aria-selected', true);
7351
7352        this._toggleDropDown(element, true);
7353
7354        EventHandler.trigger(element, EVENT_SHOWN$1, {
7355          relatedTarget: relatedElem
7356        });
7357      };
7358
7359      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
7360    }
7361
7362    _deactivate(element, relatedElem) {
7363      if (!element) {
7364        return;
7365      }
7366
7367      element.classList.remove(CLASS_NAME_ACTIVE);
7368      element.blur();
7369
7370      this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too
7371
7372
7373      const complete = () => {
7374        if (element.getAttribute('role') !== 'tab') {
7375          element.classList.remove(CLASS_NAME_SHOW$1);
7376          return;
7377        }
7378
7379        element.setAttribute('aria-selected', false);
7380        element.setAttribute('tabindex', '-1');
7381
7382        this._toggleDropDown(element, false);
7383
7384        EventHandler.trigger(element, EVENT_HIDDEN$1, {
7385          relatedTarget: relatedElem
7386        });
7387      };
7388
7389      this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE$1));
7390    }
7391
7392    _keydown(event) {
7393      if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)) {
7394        return;
7395      }
7396
7397      event.stopPropagation(); // stopPropagation/preventDefault both added to support up/down keys without scrolling the page
7398
7399      event.preventDefault();
7400      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key);
7401      const nextActiveElement = getNextActiveElement(this._getChildren().filter(element => !isDisabled(element)), event.target, isNext, true);
7402
7403      if (nextActiveElement) {
7404        nextActiveElement.focus({
7405          preventScroll: true
7406        });
7407        Tab.getOrCreateInstance(nextActiveElement).show();
7408      }
7409    }
7410
7411    _getChildren() {
7412      // collection of inner elements
7413      return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent);
7414    }
7415
7416    _getActiveElem() {
7417      return this._getChildren().find(child => this._elemIsActive(child)) || null;
7418    }
7419
7420    _setInitialAttributes(parent, children) {
7421      this._setAttributeIfNotExists(parent, 'role', 'tablist');
7422
7423      for (const child of children) {
7424        this._setInitialAttributesOnChild(child);
7425      }
7426    }
7427
7428    _setInitialAttributesOnChild(child) {
7429      child = this._getInnerElement(child);
7430
7431      const isActive = this._elemIsActive(child);
7432
7433      const outerElem = this._getOuterElement(child);
7434
7435      child.setAttribute('aria-selected', isActive);
7436
7437      if (outerElem !== child) {
7438        this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
7439      }
7440
7441      if (!isActive) {
7442        child.setAttribute('tabindex', '-1');
7443      }
7444
7445      this._setAttributeIfNotExists(child, 'role', 'tab'); // set attributes to the related panel too
7446
7447
7448      this._setInitialAttributesOnTargetPanel(child);
7449    }
7450
7451    _setInitialAttributesOnTargetPanel(child) {
7452      const target = getElementFromSelector(child);
7453
7454      if (!target) {
7455        return;
7456      }
7457
7458      this._setAttributeIfNotExists(target, 'role', 'tabpanel');
7459
7460      if (child.id) {
7461        this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);
7462      }
7463    }
7464
vendor: 7,109 bytes, lines 7465-7753
7465    _toggleDropDown(element, open) {
7466      const outerElem = this._getOuterElement(element);
7467
7468      if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
7469        return;
7470      }
7471
7472      const toggle = (selector, className) => {
7473        const element = SelectorEngine.findOne(selector, outerElem);
7474
7475        if (element) {
7476          element.classList.toggle(className, open);
7477        }
7478      };
7479
7480      toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
7481      toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW$1);
7482      outerElem.setAttribute('aria-expanded', open);
7483    }
7484
7485    _setAttributeIfNotExists(element, attribute, value) {
7486      if (!element.hasAttribute(attribute)) {
7487        element.setAttribute(attribute, value);
7488      }
7489    }
7490
7491    _elemIsActive(elem) {
7492      return elem.classList.contains(CLASS_NAME_ACTIVE);
7493    } // Try to get the inner element (usually the .nav-link)
7494
7495
7496    _getInnerElement(elem) {
7497      return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem);
7498    } // Try to get the outer element (usually the .nav-item)
7499
7500
7501    _getOuterElement(elem) {
7502      return elem.closest(SELECTOR_OUTER) || elem;
7503    } // Static
7504
7505
7506    static jQueryInterface(config) {
7507      return this.each(function () {
7508        const data = Tab.getOrCreateInstance(this);
7509
7510        if (typeof config !== 'string') {
7511          return;
7512        }
7513
7514        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {
7515          throw new TypeError(`No method named "${config}"`);
7516        }
7517
7518        data[config]();
7519      });
7520    }
7521
7522  }
7523  /**
7524   * Data API implementation
7525   */
7526
7527
7528  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
7529    if (['A', 'AREA'].includes(this.tagName)) {
7530      event.preventDefault();
7531    }
7532
7533    if (isDisabled(this)) {
7534      return;
7535    }
7536
7537    Tab.getOrCreateInstance(this).show();
7538  });
7539  /**
7540   * Initialize on focus
7541   */
7542
7543  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
7544    for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
7545      Tab.getOrCreateInstance(element);
7546    }
7547  });
7548  /**
7549   * jQuery
7550   */
7551
7552  defineJQueryPlugin(Tab);
7553
7554  /**
7555   * --------------------------------------------------------------------------
7556   * Bootstrap (v5.2.3): toast.js
7557   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7558   * --------------------------------------------------------------------------
7559   */
7560  /**
7561   * Constants
7562   */
7563
7564  const NAME = 'toast';
7565  const DATA_KEY = 'bs.toast';
7566  const EVENT_KEY = `.${DATA_KEY}`;
7567  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
7568  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
7569  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
7570  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
7571  const EVENT_HIDE = `hide${EVENT_KEY}`;
7572  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
7573  const EVENT_SHOW = `show${EVENT_KEY}`;
7574  const EVENT_SHOWN = `shown${EVENT_KEY}`;
7575  const CLASS_NAME_FADE = 'fade';
7576  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
7577
7578  const CLASS_NAME_SHOW = 'show';
7579  const CLASS_NAME_SHOWING = 'showing';
7580  const DefaultType = {
7581    animation: 'boolean',
7582    autohide: 'boolean',
7583    delay: 'number'
7584  };
7585  const Default = {
7586    animation: true,
7587    autohide: true,
7588    delay: 5000
7589  };
7590  /**
7591   * Class definition
7592   */
7593
7594  class Toast extends BaseComponent {
7595    constructor(element, config) {
7596      super(element, config);
7597      this._timeout = null;
7598      this._hasMouseInteraction = false;
7599      this._hasKeyboardInteraction = false;
7600
7601      this._setListeners();
7602    } // Getters
7603
7604
7605    static get Default() {
7606      return Default;
7607    }
7608
7609    static get DefaultType() {
7610      return DefaultType;
7611    }
7612
7613    static get NAME() {
7614      return NAME;
7615    } // Public
7616
7617
7618    show() {
7619      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
7620
7621      if (showEvent.defaultPrevented) {
7622        return;
7623      }
7624
7625      this._clearTimeout();
7626
7627      if (this._config.animation) {
7628        this._element.classList.add(CLASS_NAME_FADE);
7629      }
7630
7631      const complete = () => {
7632        this._element.classList.remove(CLASS_NAME_SHOWING);
7633
7634        EventHandler.trigger(this._element, EVENT_SHOWN);
7635
7636        this._maybeScheduleHide();
7637      };
7638
7639      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
7640
7641
7642      reflow(this._element);
7643
7644      this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
7645
7646      this._queueCallback(complete, this._element, this._config.animation);
7647    }
7648
7649    hide() {
7650      if (!this.isShown()) {
7651        return;
7652      }
7653
7654      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
7655
7656      if (hideEvent.defaultPrevented) {
7657        return;
7658      }
7659
7660      const complete = () => {
7661        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
7662
7663
7664        this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
7665
7666        EventHandler.trigger(this._element, EVENT_HIDDEN);
7667      };
7668
7669      this._element.classList.add(CLASS_NAME_SHOWING);
7670
7671      this._queueCallback(complete, this._element, this._config.animation);
7672    }
7673
7674    dispose() {
7675      this._clearTimeout();
7676
7677      if (this.isShown()) {
7678        this._element.classList.remove(CLASS_NAME_SHOW);
7679      }
7680
7681      super.dispose();
7682    }
7683
7684    isShown() {
7685      return this._element.classList.contains(CLASS_NAME_SHOW);
7686    } // Private
7687
7688
7689    _maybeScheduleHide() {
7690      if (!this._config.autohide) {
7691        return;
7692      }
7693
7694      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
7695        return;
7696      }
7697
7698      this._timeout = setTimeout(() => {
7699        this.hide();
7700      }, this._config.delay);
7701    }
7702
7703    _onInteraction(event, isInteracting) {
7704      switch (event.type) {
7705        case 'mouseover':
7706        case 'mouseout':
7707          {
7708            this._hasMouseInteraction = isInteracting;
7709            break;
7710          }
7711
7712        case 'focusin':
7713        case 'focusout':
7714          {
7715            this._hasKeyboardInteraction = isInteracting;
7716            break;
7717          }
7718      }
7719
7720      if (isInteracting) {
7721        this._clearTimeout();
7722
7723        return;
7724      }
7725
7726      const nextElement = event.relatedTarget;
7727
7728      if (this._element === nextElement || this._element.contains(nextElement)) {
7729        return;
7730      }
7731
7732      this._maybeScheduleHide();
7733    }
7734
7735    _setListeners() {
7736      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));
7737      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));
7738      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));
7739      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));
7740    }
7741
7742    _clearTimeout() {
7743      clearTimeout(this._timeout);
7744      this._timeout = null;
7745    } // Static
7746
7747
7748    static jQueryInterface(config) {
7749      return this.each(function () {
7750        const data = Toast.getOrCreateInstance(this, config);
7751
7752        if (typeof config === 'string') {
7753          if (typeof data[config] === 'undefined') {
7754            throw new TypeError(`No method named "${config}"`);
7755          }
7756
7757          data[config](this);
7758        }
7759      });
7760    }
7761
7762  }
7763  /**
7764   * Data API implementation
7765   */
7766
7767
7768  enableDismissTrigger(Toast);
7769  /**
7770   * jQuery
7771   */
7772
7773  defineJQueryPlugin(Toast);
7774
7775  /**
7776   * --------------------------------------------------------------------------
7777   * Bootstrap (v5.2.3): index.umd.js
7778   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
7779   * --------------------------------------------------------------------------
7780   */
7781  const index_umd = {
7782    Alert,
7783    Button,
7784    Carousel,
7785    Collapse,
7786    Dropdown,
7787    Modal,
7788    Offcanvas,
7789    Popover,
7790    ScrollSpy,
7791    Tab,
7792    Toast,
7793    Tooltip
7794  };
7795
7796  return index_umd;
7797
7798}));
7799
7800;
7801(function (jQuery, Drupal, drupalSettings) {
7802    Drupal.behaviors.toscana_salute_custom_theme = {
7803        accessibilityToolbar: {
7804            status: {
7805                opened       : false,            
7806                highContrast : false,                            
7807                zoomLevel    : 0,
7808                textLevel    : 0,
7809            },
7810            open: function(){
7811                this.status.opened = true;
7812                this.saveStatus();
7813            },
7814            close: function(){
7815                this.status.opened = false;
7816                this.saveStatus();
7817            },
7818            toggleOpen: function(){
7819                this.status.opened = !this.status.opened;
7820                this.saveStatus();
7821            },
7822            toggleContrast: function(){
7823                this.status.highContrast = !this.status.highContrast;
7824                this.saveStatus();
7825            },
7826
7827            isOpen: function(){
7828                return(this.status.opened);                
7829            },
7830            zoomLevel: function(){
7831                return(this.status.zoomLevel);                
7832            },            
7833            setZoomLevel: function(zoom = 0){
7834                this.status.zoomLevel = zoom;
7835                this.saveStatus();
7836            },            
7837            setTextLevel: function(level = 0){
7838                this.status.textLevel = level;
7839                this.saveStatus();
7840            },            
7841            saveStatus: function(){
7842                sessionStorage.setItem("accessibilityStatus",JSON.stringify(this.status));
7843                this.refresh();                                
7844            },
7845            loadStatus: function(){
7846                var savedStatus = sessionStorage.getItem("accessibilityStatus");
7847                if(savedStatus){
7848                    this.status = JSON.parse(savedStatus);
7849                }
7850                this.refresh();
7851            },
7852            refresh: function(){
7853                if(this.status.opened){
7854                    jQuery(".accessibility-bar").css('display', 'flex');
7855                }else{
7856                    jQuery(".accessibility-bar").css('display', 'none');
7857                }
7858
7859                if(this.status.highContrast){
7860                    jQuery("body").addClass('high-contrast-mode');
7861                }else{
7862                    jQuery("body").removeClass('high-contrast-mode');
7863                }  
7864
7865                /* zoomLevel */
7866                jQuery("body").removeClass (function (index, className) {
7867                    return (className.match (/(^|\s)zoom-level-\S+/g) || []).join(' ');
7868                });
7869                jQuery("body").removeClass (function (index, className) {
7870                    return (className.match (/(^|\s)text-level-\S+/g) || []).join(' ');
7871                });
7872
7873                
7874                if(this.status.zoomLevel > 0){
7875                    jQuery("body").addClass('zoom-level-'+this.status.zoomLevel);
7876                    jQuery("body").css({"font-size":"1."+this.status.zoomLevel+"em"});
7877                }else{
7878                    jQuery("body").css({"font-size":""});
7879                }
7880
7881                /* textLevel */                
7882                if(this.status.textLevel > 0){
7883                    jQuery("body").addClass('text-level-'+this.status.textLevel);
7884                }
7885            }
7886        },
7887
7888        attach: function (context, settings) {
7889            var accToolbar = Drupal.behaviors.toscana_salute_custom_theme.accessibilityToolbar;
7890
7891            accToolbar.loadStatus();
7892            jQuery('.accessibility-bar .ca-zoom').val(accToolbar.zoomLevel());
7893
7894            jQuery(once('access-toolbar-open-close','.access-toolbar-open-close',context)).on("click",function(e) {
7895                accToolbar.toggleOpen();
7896            });
7897
7898            jQuery(once('access-toolbar-ca-close','.accessibility-bar .ca-close',context)).on("click",function(e) {
7899                accToolbar.close();
7900            });
7901
7902            jQuery(once('access-toolbar-ca-contrasto','.accessibility-bar .ca-contrasto',context)).on("click",function(e) {
7903                accToolbar.toggleContrast();
7904            });
7905
7906            jQuery(once('access-toolbar-ca-contrasto','.accessibility-bar .ca-zoom',context)).on("change",function(e) {
7907                accToolbar.setZoomLevel(jQuery(".accessibility-bar .ca-zoom").val());
7908            });
7909
7910            jQuery(once('access-toolbar-ca-contrasto','.accessibility-bar .ca-text-0',context)).on("click",function(e) {
7911                accToolbar.setTextLevel(0);
7912            });
7913
7914            jQuery(once('access-toolbar-ca-contrasto','.accessibility-bar .ca-text-1',context)).on("click",function(e) {
7915                accToolbar.setTextLevel(1);
7916            });
7917
7918            jQuery(once('access-toolbar-ca-contrasto','.accessibility-bar .ca-text-2',context)).on("click",function(e) {
7919                accToolbar.setTextLevel(2);
7920            });
7921        }
7922    };
7923  })(jQuery, Drupal, drupalSettings);
7924;
7925/*! js-cookie v3.0.1 | MIT */
7926!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self,function(){var n=e.Cookies,o=e.Cookies=t();o.noConflict=function(){return e.Cookies=n,o}}())}(this,(function(){"use strict";function e(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)e[o]=n[o]}return e}return function t(n,o){function r(t,r,i){if("undefined"!=typeof document){"number"==typeof(i=e({},o,i)).expires&&(i.expires=new Date(Date.now()+864e5*i.expires)),i.expires&&(i.expires=i.expires.toUTCString()),t=encodeURIComponent(t).replace(/%(2[346B]|5E|60|7C)/g,decode
vendor: 1,010 bytes, lines 7926-7927
7926URIComponent).replace(/[()]/g,escape);var c="";for(var u in i)i[u]&&(c+="; "+u,!0!==i[u]&&(c+="="+i[u].split(";")[0]));return document.cookie=t+"="+n.write(r,t)+c}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],o={},r=0;r<t.length;r++){var i=t[r].split("="),c=i.slice(1).join("=");try{var u=decodeURIComponent(i[0]);if(o[u]=n.read(c,u),e===u)break}catch(e){}}return e?o[e]:o}},remove:function(t,n){r(t,"",e({},n,{expires:-1}))},withAttributes:function(n){return t(this.converter,e({},this.attributes,n))},withConverter:function(n){return t(e({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(o)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"})}));
7927;

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.