{"version":3,"sources":["tether.js","bootstrap.js","ekko-lightbox.js","furillo.noreferrer.jquery.js","furillo.waitForImages.jquery.js","furillo.equalHeight.jquery.js","site.js"],"names":["root","factory","define","amd","exports","module","Tether","this","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","TetherBase","undefined","modules","zeroElement","getActualBoundingClientRect","node","boundingRect","getBoundingClientRect","rect","k","ownerDocument","document","_frameElement","defaultView","frameElement","frameRect","top","bottom","left","right","err","getScrollParents","el","position","getComputedStyle","parents","parent","parentNode","nodeType","style","push","_style","overflow","overflowX","overflowY","test","indexOf","body","id","uniqueId","zeroPosCache","getOrigin","contains","createElement","setAttribute","extend","appendChild","getAttribute","defer","removeUtilElements","removeChild","getBounds","doc","documentElement","docEl","box","origin","width","scrollWidth","height","scrollHeight","clientTop","clientLeft","clientWidth","clientHeight","getOffsetParent","offsetParent","_scrollBarSize","getScrollBarSize","inner","outer","pointerEvents","visibility","widthContained","offsetWidth","widthScroll","out","arguments","args","Array","apply","slice","forEach","obj","hasOwnProperty","call","removeClass","name","classList","split","cls","trim","remove","regex","RegExp","join","className","getClassName","replace","setClassName","addClass","add","hasClass","SVGAnimatedString","baseVal","updateClasses","all","deferred","fn","flush","pop","Evented","value","event","handler","ctx","once","bindings","on","splice","_len","_key","_bindings$event$i","context","Utils","_slicedToArray","arr","isArray","Symbol","iterator","_arr","_n","_d","_e","_s","_i","next","done","sliceIterator","_get","_x6","_x7","_x8","_again","object","property","receiver","Function","desc","getOwnPropertyDescriptor","getter","get","getPrototypeOf","Error","_TetherBase$Utils","within","a","b","diff","lastCall","lastDuration","pendingTimeout","tick","transformKey","transforms","tethers","tether","now","performance","Date","Math","min","setTimeout","clearTimeout","window","addEventListener","MIRROR_LR","center","MIRROR_TB","middle","OFFSET_MAP","attachmentToOffset","attachment","addOffset","offsets","_ref","parseFloat","offsetToPx","offset","size","parseOffset","_value$split","_value$split2","parseAttachment","TetherClass","_Evented","options","_this","bind","history","setOptions","initialize","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_inherits","classes","classPrefix","_this2","pos","targetOffset","targetAttachment","_options","element","targetModifier","jquery","querySelector","getClass","addTargetClasses","scrollParents","disable","enabled","enable","pageYOffset","pageXOffset","innerHeight","innerWidth","bounds","scrollBottom","borderTopWidth","borderBottomWidth","borderLeftWidth","fitAdj","pow","max","scrollPercentage","scrollTop","_cache","_this3","_this4","removeEventListener","_this5","elementAttach","targetAttach","_this6","_addAttachClasses","side","_this7","flushChanges","clearCache","relativeToAttachment","autoToFixedAttachment","updateAttachClasses","elementPos","cache","lastSize","_lastSize","targetPos","getTargetBounds","targetSize","manualOffset","manualTargetOffset","ret","scrollbarSize","page","viewport","win","parentElement","optimizations","moveElement","offsetPosition","offsetParentStyle","offsetParentSize","offsetBorder","toLowerCase","scrollLeft","move","unshift","_this8","same","type","found","point","e","d","css","transcribe","_same","_pos","gpu","yPos","xPos","devicePixelRatio","round","moved","bodyElement","offsetParentIsBody","currentNode","tagName","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","writeCSS","write","val","trigger","BOUNDS_FORMAT","constraints","targetHeight","targetWidth","allClasses","constraint","outOfBoundsClass","pinnedClass","addClasses","tAttachment","eAttachment","to","pin","changeAttachX","changeAttachY","_attachment$split","_attachment$split2","toUpperCase","substr","getBoundingRect","map","p","oobClass","pinned","oob","abutted","targetPosSide","shift","shiftTop","shiftLeft","_shift2","global","require","globalThis","self","bootstrap","jQuery","Popper","$","_defineProperties","_extends","assign","source","TRANSITION_END","transitionEndEmulator","duration","called","one","Util","triggerTransitionEnd","getUID","prefix","random","getElementById","getSelectorFromElement","selector","hrefAttr","getTransitionDurationFromElement","transitionDuration","transitionDelay","floatTransitionDuration","floatTransitionDelay","reflow","offsetHeight","supportsTransitionEnd","Boolean","isElement","typeCheckConfig","componentName","config","configTypes","expectedTypes","valueType","toString","match","findShadowRoot","attachShadow","getRootNode","ShadowRoot","jQueryDetection","version","emulateTransitionEnd","special","bindType","delegateType","handle","is","handleObj","JQUERY_NO_CONFLICT","Alert","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","closest","closeEvent","Event","_destroyElement","detach","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","noConflict","JQUERY_NO_CONFLICT$1","Button","toggle","triggerChangeEvent","addAriaPressed","input","checked","activeElement","focus","hasAttribute","toggleClass","button","initialButton","inputBtn","buttons","querySelectorAll","len","_button","NAME$2","EVENT_KEY$2","JQUERY_NO_CONFLICT$2","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","SELECTOR_INDICATORS","PointerType","TOUCH","PEN","Carousel","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","MSPointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","index","activeIndex","_getItemIndex","direction","off","_handleSwipe","absDeltax","abs","_keydown","_addTouchEventListeners","start","originalEvent","pointerType","clientX","touches","end","which","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","indicators","nextIndicator","children","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","nextElementInterval","parseInt","defaultInterval","CLASS_NAME_ACTIVE$1","action","ride","_dataApiClickHandler","slideIndex","carousels","$carousel","NAME$3","JQUERY_NO_CONFLICT$3","Default$1","DefaultType$1","SELECTOR_DATA_TOGGLE$1","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","filter","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","attr","setTransitioning","scrollSize","CLASS_NAME_COLLAPSE","triggerArrayLength","isTransitioning","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","selectors","$target","NAME$4","JQUERY_NO_CONFLICT$4","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","Default$2","flip","boundary","reference","display","popperConfig","DefaultType$2","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","isActive","_clearMenus","usePopper","showEvent","_getParentFromElement","referenceElement","_getPopperConfig","noop","hideEvent","destroy","update","scheduleUpdate","stopPropagation","_getPlacement","$parentDropdown","placement","_getOffset","modifiers","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","items","item","EVENT_CLICK_DATA_API$4","JQUERY_NO_CONFLICT$5","Default$3","backdrop","DefaultType$3","SELECTOR_DIALOG","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","handleUpdate","_triggerBackdropTransition","hideEventPrevented","defaultPrevented","isModalOverflowing","modalTransitionDuration","modalBody","Node","ELEMENT_NODE","removeAttribute","_enforceFocus","shownEvent","transitionComplete","has","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this9","animate","appendTo","backdropTransitionDuration","callbackRemove","_backdropTransitionDuration","paddingLeft","paddingRight","_getScrollbarWidth","_this10","fixedContent","stickyContent","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","_this11","uriAttrs","DefaultWhitelist","*","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","s","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","DOMParser","parseFromString","whitelistKeys","keys","_loop","elName","nodeName","attributeList","attributes","whitelistedAttributes","concat","allowedAttributeList","attrName","nodeValue","regExp","attrRegex","allowedAttribute","innerHTML","NAME$6","JQUERY_NO_CONFLICT$6","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","DefaultType$4","animation","template","title","delay","html","container","fallbackPlacement","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","Default$4","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","toggleEnabled","dataKey","DATA_KEY","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","EVENT_KEY","_hideModalHandler","isWithContent","shadowRoot","isInTheDom","tipId","NAME","setContent","_getAttachment","addAttachmentClass","_getContainer","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","CLASS_PREFIX","setElementContent","CLASS_NAME_FADE$2","content","text","empty","append","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","find","eventIn","eventOut","_fixTitle","titleType","dataAttributes","dataAttr","$tip","tabClass","popperData","popper","initConfigAnimation","NAME$7","JQUERY_NO_CONFLICT$7","BSCLS_PREFIX_REGEX$1","Default$5","DefaultType$5","Event$1","Popover","_Tooltip","_getContent","CLASS_PREFIX$1","CLASS_NAME_FADE$3","NAME$8","JQUERY_NO_CONFLICT$8","Default$6","method","DefaultType$6","EVENT_SCROLL","SELECTOR_NAV_LINKS","SELECTOR_LIST_ITEMS","SELECTOR_DROPDOWN_ITEMS","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","sort","_getOffsetHeight","maxScroll","_activate","_clear","queries","$link","scrollSpys","$spy","JQUERY_NO_CONFLICT$9","Tab","previous","listElement","itemSelector","makeArray","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","JQUERY_NO_CONFLICT$a","DefaultType$7","autohide","Default$7","Toast","_clearTimeout","_close","Scrollspy","footer","maxWidth","maxHeight","showArrows","wrapping","alwaysShowClose","loadingMessage","leftArrow","rightArrow","strings","fail","onShow","onShown","onHide","onHidden","onNavigate","onContentLoaded","Lightbox","_$modalArrows","_galleryIndex","_galleryName","_padding","_border","_titleIsShown","_footerIsShown","_wantedWidth","_wantedHeight","_touchstartX","_touchendX","_modalId","floor","_$element","_isBootstrap3","modal","VERSION","btn","dialog","_$modal","_$modalDialog","first","_$modalContent","_$modalBody","_$modalHeader","_$modalFooter","_$lightboxContainer","_$lightboxBodyOne","_$lightboxBodyTwo","_calculateBorders","_calculatePadding","_$galleryItems","_navigationalBinder","navigateLeft","navigateRight","updateNavigation","_toggleLoading","_handle","_resize","changedTouches","screenX","_swipeGesure","navigateTo","$nav","keyCode","src","_isImage","_getYoutubeId","_getVimeoId","_getInstagramId","string","$toUse","$current","_containerToUse","_updateTitleAndFooter","currentRemote","currentType","_detectRemoteType","_error","_preloadImage","_preloadImageByIndex","_showYoutubeVideo","_showVimeoVideo","_showInstagramVideo","_showHtml5Video","_loadRemoteContent","matches","_totalCssByAttribute","attribute","caption","remote","$containerForElement","query","_showVideoIframe","url","disableExternalCheck","_isExternal","load","proxy","location","protocol","http:","https:","host","message","console","error","startIndex","numberOfTimes","$containerForImage","loadingTimeout","Image","onload","image","onerror","imageAspecRatio","widthBorderAndPadding","addMargin","discountMargin","headerHeight","footerHeight","outerHeight","borderPadding","margins","ceil","_handleUpdate","Exception","pluginName","defaults","Plugin","_defaults","_name","init","$a","rel","furilloWaitForImages","hasImageProperties","finishedCallback","isFunction","allImgs","hasImgProperties","matchUrl","addBack","prop","propertyValue","exec","eqhTmp","removeProp","furilloEqualHeight","parentWidth","currentRowWidth","currentRowElements","rows","setHighest","outerWidth","colElement","setFurilloEqualHeight","initFurilloEqualHeight","resize","ready","$navbarToggler","$navbar","getExpiryDate","days","date","setTime","getTime","toGMTString","$googleTranslateLink","href","cookie","cookieId","submit","noreferrer","$wrapper","$container","areaId","isNaN","mappedAreaId","grep","mappedId","objectGroupId","apiUrl","ajax","dataType","success","count","areaid","jqXHR","textStatus","errorThrown","log","availableApartments","collapse"],"mappings":"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","sourcesContent":["/*! tether 1.4.7 */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.Tether = factory();\n }\n}(this, function() {\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar TetherBase = undefined;\nif (typeof TetherBase === 'undefined') {\n TetherBase = { modules: [] };\n}\n\nvar zeroElement = null;\n\n// Same as native getBoundingClientRect, except it takes into account parent offsets\n// if the element lies within a nested document ( or -like).\nfunction getActualBoundingClientRect(node) {\n var boundingRect = node.getBoundingClientRect();\n\n // The original object returned by getBoundingClientRect is immutable, so we clone it\n // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9\n var rect = {};\n for (var k in boundingRect) {\n rect[k] = boundingRect[k];\n }\n\n try {\n if (node.ownerDocument !== document) {\n var _frameElement = node.ownerDocument.defaultView.frameElement;\n if (_frameElement) {\n var frameRect = getActualBoundingClientRect(_frameElement);\n rect.top += frameRect.top;\n rect.bottom += frameRect.top;\n rect.left += frameRect.left;\n rect.right += frameRect.left;\n }\n }\n } catch (err) {\n // Ignore \"Access is denied\" in IE11/Edge\n }\n\n return rect;\n}\n\nfunction getScrollParents(el) {\n // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;\n // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n var computedStyle = getComputedStyle(el) || {};\n var position = computedStyle.position;\n var parents = [];\n\n if (position === 'fixed') {\n return [el];\n }\n\n var parent = el;\n while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {\n var style = undefined;\n try {\n style = getComputedStyle(parent);\n } catch (err) {}\n\n if (typeof style === 'undefined' || style === null) {\n parents.push(parent);\n return parents;\n }\n\n var _style = style;\n var overflow = _style.overflow;\n var overflowX = _style.overflowX;\n var overflowY = _style.overflowY;\n\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {\n parents.push(parent);\n }\n }\n }\n\n parents.push(el.ownerDocument.body);\n\n // If the node is within a frame, account for the parent window scroll\n if (el.ownerDocument !== document) {\n parents.push(el.ownerDocument.defaultView);\n }\n\n return parents;\n}\n\nvar uniqueId = (function () {\n var id = 0;\n return function () {\n return ++id;\n };\n})();\n\nvar zeroPosCache = {};\nvar getOrigin = function getOrigin() {\n // getBoundingClientRect is unfortunately too accurate. It introduces a pixel or two of\n // jitter as the user scrolls that messes with our ability to detect if two positions\n // are equivilant or not. We place an element at the top left of the page that will\n // get the same jitter, so we can cancel the two out.\n var node = zeroElement;\n if (!node || !document.body.contains(node)) {\n node = document.createElement('div');\n node.setAttribute('data-tether-id', uniqueId());\n extend(node.style, {\n top: 0,\n left: 0,\n position: 'absolute'\n });\n\n document.body.appendChild(node);\n\n zeroElement = node;\n }\n\n var id = node.getAttribute('data-tether-id');\n if (typeof zeroPosCache[id] === 'undefined') {\n zeroPosCache[id] = getActualBoundingClientRect(node);\n\n // Clear the cache when this position call is done\n defer(function () {\n delete zeroPosCache[id];\n });\n }\n\n return zeroPosCache[id];\n};\n\nfunction removeUtilElements() {\n if (zeroElement) {\n document.body.removeChild(zeroElement);\n }\n zeroElement = null;\n};\n\nfunction getBounds(el) {\n var doc = undefined;\n if (el === document) {\n doc = document;\n el = document.documentElement;\n } else {\n doc = el.ownerDocument;\n }\n\n var docEl = doc.documentElement;\n\n var box = getActualBoundingClientRect(el);\n\n var origin = getOrigin();\n\n box.top -= origin.top;\n box.left -= origin.left;\n\n if (typeof box.width === 'undefined') {\n box.width = document.body.scrollWidth - box.left - box.right;\n }\n if (typeof box.height === 'undefined') {\n box.height = document.body.scrollHeight - box.top - box.bottom;\n }\n\n box.top = box.top - docEl.clientTop;\n box.left = box.left - docEl.clientLeft;\n box.right = doc.body.clientWidth - box.width - box.left;\n box.bottom = doc.body.clientHeight - box.height - box.top;\n\n return box;\n}\n\nfunction getOffsetParent(el) {\n return el.offsetParent || document.documentElement;\n}\n\nvar _scrollBarSize = null;\nfunction getScrollBarSize() {\n if (_scrollBarSize) {\n return _scrollBarSize;\n }\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n var outer = document.createElement('div');\n extend(outer.style, {\n position: 'absolute',\n top: 0,\n left: 0,\n pointerEvents: 'none',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n });\n\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n\n document.body.removeChild(outer);\n\n var width = widthContained - widthScroll;\n\n _scrollBarSize = { width: width, height: width };\n return _scrollBarSize;\n}\n\nfunction extend() {\n var out = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var args = [];\n\n Array.prototype.push.apply(args, arguments);\n\n args.slice(1).forEach(function (obj) {\n if (obj) {\n for (var key in obj) {\n if (({}).hasOwnProperty.call(obj, key)) {\n out[key] = obj[key];\n }\n }\n }\n });\n\n return out;\n}\n\nfunction removeClass(el, name) {\n if (typeof el.classList !== 'undefined') {\n name.split(' ').forEach(function (cls) {\n if (cls.trim()) {\n el.classList.remove(cls);\n }\n });\n } else {\n var regex = new RegExp('(^| )' + name.split(' ').join('|') + '( |$)', 'gi');\n var className = getClassName(el).replace(regex, ' ');\n setClassName(el, className);\n }\n}\n\nfunction addClass(el, name) {\n if (typeof el.classList !== 'undefined') {\n name.split(' ').forEach(function (cls) {\n if (cls.trim()) {\n el.classList.add(cls);\n }\n });\n } else {\n removeClass(el, name);\n var cls = getClassName(el) + (' ' + name);\n setClassName(el, cls);\n }\n}\n\nfunction hasClass(el, name) {\n if (typeof el.classList !== 'undefined') {\n return el.classList.contains(name);\n }\n var className = getClassName(el);\n return new RegExp('(^| )' + name + '( |$)', 'gi').test(className);\n}\n\nfunction getClassName(el) {\n // Can't use just SVGAnimatedString here since nodes within a Frame in IE have\n // completely separately SVGAnimatedString base classes\n if (el.className instanceof el.ownerDocument.defaultView.SVGAnimatedString) {\n return el.className.baseVal;\n }\n return el.className;\n}\n\nfunction setClassName(el, className) {\n el.setAttribute('class', className);\n}\n\nfunction updateClasses(el, add, all) {\n // Of the set of 'all' classes, we need the 'add' classes, and only the\n // 'add' classes to be set.\n all.forEach(function (cls) {\n if (add.indexOf(cls) === -1 && hasClass(el, cls)) {\n removeClass(el, cls);\n }\n });\n\n add.forEach(function (cls) {\n if (!hasClass(el, cls)) {\n addClass(el, cls);\n }\n });\n}\n\nvar deferred = [];\n\nvar defer = function defer(fn) {\n deferred.push(fn);\n};\n\nvar flush = function flush() {\n var fn = undefined;\n while (fn = deferred.pop()) {\n fn();\n }\n};\n\nvar Evented = (function () {\n function Evented() {\n _classCallCheck(this, Evented);\n }\n\n _createClass(Evented, [{\n key: 'on',\n value: function on(event, handler, ctx) {\n var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];\n\n if (typeof this.bindings === 'undefined') {\n this.bindings = {};\n }\n if (typeof this.bindings[event] === 'undefined') {\n this.bindings[event] = [];\n }\n this.bindings[event].push({ handler: handler, ctx: ctx, once: once });\n }\n }, {\n key: 'once',\n value: function once(event, handler, ctx) {\n this.on(event, handler, ctx, true);\n }\n }, {\n key: 'off',\n value: function off(event, handler) {\n if (typeof this.bindings === 'undefined' || typeof this.bindings[event] === 'undefined') {\n return;\n }\n\n if (typeof handler === 'undefined') {\n delete this.bindings[event];\n } else {\n var i = 0;\n while (i < this.bindings[event].length) {\n if (this.bindings[event][i].handler === handler) {\n this.bindings[event].splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n }\n }, {\n key: 'trigger',\n value: function trigger(event) {\n if (typeof this.bindings !== 'undefined' && this.bindings[event]) {\n var i = 0;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n while (i < this.bindings[event].length) {\n var _bindings$event$i = this.bindings[event][i];\n var handler = _bindings$event$i.handler;\n var ctx = _bindings$event$i.ctx;\n var once = _bindings$event$i.once;\n\n var context = ctx;\n if (typeof context === 'undefined') {\n context = this;\n }\n\n handler.apply(context, args);\n\n if (once) {\n this.bindings[event].splice(i, 1);\n } else {\n ++i;\n }\n }\n }\n }\n }]);\n\n return Evented;\n})();\n\nTetherBase.Utils = {\n getActualBoundingClientRect: getActualBoundingClientRect,\n getScrollParents: getScrollParents,\n getBounds: getBounds,\n getOffsetParent: getOffsetParent,\n extend: extend,\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n updateClasses: updateClasses,\n defer: defer,\n flush: flush,\n uniqueId: uniqueId,\n Evented: Evented,\n getScrollBarSize: getScrollBarSize,\n removeUtilElements: removeUtilElements\n};\n/* globals TetherBase, performance */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x6, _x7, _x8) { var _again = true; _function: while (_again) { var object = _x6, property = _x7, receiver = _x8; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x6 = parent; _x7 = property; _x8 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nif (typeof TetherBase === 'undefined') {\n throw new Error('You must include the utils.js file before tether.js');\n}\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getScrollParents = _TetherBase$Utils.getScrollParents;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar getOffsetParent = _TetherBase$Utils.getOffsetParent;\nvar extend = _TetherBase$Utils.extend;\nvar addClass = _TetherBase$Utils.addClass;\nvar removeClass = _TetherBase$Utils.removeClass;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\nvar flush = _TetherBase$Utils.flush;\nvar getScrollBarSize = _TetherBase$Utils.getScrollBarSize;\nvar removeUtilElements = _TetherBase$Utils.removeUtilElements;\n\nfunction within(a, b) {\n var diff = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2];\n\n return a + diff >= b && b >= a - diff;\n}\n\nvar transformKey = (function () {\n if (typeof document === 'undefined') {\n return '';\n }\n var el = document.createElement('div');\n\n var transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];\n for (var i = 0; i < transforms.length; ++i) {\n var key = transforms[i];\n if (el.style[key] !== undefined) {\n return key;\n }\n }\n})();\n\nvar tethers = [];\n\nvar position = function position() {\n tethers.forEach(function (tether) {\n tether.position(false);\n });\n flush();\n};\n\nfunction now() {\n if (typeof performance === 'object' && typeof performance.now === 'function') {\n return performance.now();\n }\n return +new Date();\n}\n\n(function () {\n var lastCall = null;\n var lastDuration = null;\n var pendingTimeout = null;\n\n var tick = function tick() {\n if (typeof lastDuration !== 'undefined' && lastDuration > 16) {\n // We voluntarily throttle ourselves if we can't manage 60fps\n lastDuration = Math.min(lastDuration - 16, 250);\n\n // Just in case this is the last event, remember to position just once more\n pendingTimeout = setTimeout(tick, 250);\n return;\n }\n\n if (typeof lastCall !== 'undefined' && now() - lastCall < 10) {\n // Some browsers call events a little too frequently, refuse to run more than is reasonable\n return;\n }\n\n if (pendingTimeout != null) {\n clearTimeout(pendingTimeout);\n pendingTimeout = null;\n }\n\n lastCall = now();\n position();\n lastDuration = now() - lastCall;\n };\n\n if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {\n ['resize', 'scroll', 'touchmove'].forEach(function (event) {\n window.addEventListener(event, tick);\n });\n }\n})();\n\nvar MIRROR_LR = {\n center: 'center',\n left: 'right',\n right: 'left'\n};\n\nvar MIRROR_TB = {\n middle: 'middle',\n top: 'bottom',\n bottom: 'top'\n};\n\nvar OFFSET_MAP = {\n top: 0,\n left: 0,\n middle: '50%',\n center: '50%',\n bottom: '100%',\n right: '100%'\n};\n\nvar autoToFixedAttachment = function autoToFixedAttachment(attachment, relativeToAttachment) {\n var left = attachment.left;\n var top = attachment.top;\n\n if (left === 'auto') {\n left = MIRROR_LR[relativeToAttachment.left];\n }\n\n if (top === 'auto') {\n top = MIRROR_TB[relativeToAttachment.top];\n }\n\n return { left: left, top: top };\n};\n\nvar attachmentToOffset = function attachmentToOffset(attachment) {\n var left = attachment.left;\n var top = attachment.top;\n\n if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {\n left = OFFSET_MAP[attachment.left];\n }\n\n if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {\n top = OFFSET_MAP[attachment.top];\n }\n\n return { left: left, top: top };\n};\n\nfunction addOffset() {\n var out = { top: 0, left: 0 };\n\n for (var _len = arguments.length, offsets = Array(_len), _key = 0; _key < _len; _key++) {\n offsets[_key] = arguments[_key];\n }\n\n offsets.forEach(function (_ref) {\n var top = _ref.top;\n var left = _ref.left;\n\n if (typeof top === 'string') {\n top = parseFloat(top, 10);\n }\n if (typeof left === 'string') {\n left = parseFloat(left, 10);\n }\n\n out.top += top;\n out.left += left;\n });\n\n return out;\n}\n\nfunction offsetToPx(offset, size) {\n if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {\n offset.left = parseFloat(offset.left, 10) / 100 * size.width;\n }\n if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {\n offset.top = parseFloat(offset.top, 10) / 100 * size.height;\n }\n\n return offset;\n}\n\nvar parseOffset = function parseOffset(value) {\n var _value$split = value.split(' ');\n\n var _value$split2 = _slicedToArray(_value$split, 2);\n\n var top = _value$split2[0];\n var left = _value$split2[1];\n\n return { top: top, left: left };\n};\nvar parseAttachment = parseOffset;\n\nvar TetherClass = (function (_Evented) {\n _inherits(TetherClass, _Evented);\n\n function TetherClass(options) {\n var _this = this;\n\n _classCallCheck(this, TetherClass);\n\n _get(Object.getPrototypeOf(TetherClass.prototype), 'constructor', this).call(this);\n this.position = this.position.bind(this);\n\n tethers.push(this);\n\n this.history = [];\n\n this.setOptions(options, false);\n\n TetherBase.modules.forEach(function (module) {\n if (typeof module.initialize !== 'undefined') {\n module.initialize.call(_this);\n }\n });\n\n this.position();\n }\n\n _createClass(TetherClass, [{\n key: 'getClass',\n value: function getClass() {\n var key = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];\n var classes = this.options.classes;\n\n if (typeof classes !== 'undefined' && classes[key]) {\n return this.options.classes[key];\n } else if (this.options.classPrefix) {\n return this.options.classPrefix + '-' + key;\n } else {\n return key;\n }\n }\n }, {\n key: 'setOptions',\n value: function setOptions(options) {\n var _this2 = this;\n\n var pos = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\n\n var defaults = {\n offset: '0 0',\n targetOffset: '0 0',\n targetAttachment: 'auto auto',\n classPrefix: 'tether'\n };\n\n this.options = extend(defaults, options);\n\n var _options = this.options;\n var element = _options.element;\n var target = _options.target;\n var targetModifier = _options.targetModifier;\n\n this.element = element;\n this.target = target;\n this.targetModifier = targetModifier;\n\n if (this.target === 'viewport') {\n this.target = document.body;\n this.targetModifier = 'visible';\n } else if (this.target === 'scroll-handle') {\n this.target = document.body;\n this.targetModifier = 'scroll-handle';\n }\n\n ['element', 'target'].forEach(function (key) {\n if (typeof _this2[key] === 'undefined') {\n throw new Error('Tether Error: Both element and target must be defined');\n }\n\n if (typeof _this2[key].jquery !== 'undefined') {\n _this2[key] = _this2[key][0];\n } else if (typeof _this2[key] === 'string') {\n _this2[key] = document.querySelector(_this2[key]);\n }\n });\n\n addClass(this.element, this.getClass('element'));\n if (!(this.options.addTargetClasses === false)) {\n addClass(this.target, this.getClass('target'));\n }\n\n if (!this.options.attachment) {\n throw new Error('Tether Error: You must provide an attachment');\n }\n\n this.targetAttachment = parseAttachment(this.options.targetAttachment);\n this.attachment = parseAttachment(this.options.attachment);\n this.offset = parseOffset(this.options.offset);\n this.targetOffset = parseOffset(this.options.targetOffset);\n\n if (typeof this.scrollParents !== 'undefined') {\n this.disable();\n }\n\n if (this.targetModifier === 'scroll-handle') {\n this.scrollParents = [this.target];\n } else {\n this.scrollParents = getScrollParents(this.target);\n }\n\n if (!(this.options.enabled === false)) {\n this.enable(pos);\n }\n }\n }, {\n key: 'getTargetBounds',\n value: function getTargetBounds() {\n if (typeof this.targetModifier !== 'undefined') {\n if (this.targetModifier === 'visible') {\n if (this.target === document.body) {\n return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth };\n } else {\n var bounds = getBounds(this.target);\n\n var out = {\n height: bounds.height,\n width: bounds.width,\n top: bounds.top,\n left: bounds.left\n };\n\n out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));\n out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));\n out.height = Math.min(innerHeight, out.height);\n out.height -= 2;\n\n out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));\n out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));\n out.width = Math.min(innerWidth, out.width);\n out.width -= 2;\n\n if (out.top < pageYOffset) {\n out.top = pageYOffset;\n }\n if (out.left < pageXOffset) {\n out.left = pageXOffset;\n }\n\n return out;\n }\n } else if (this.targetModifier === 'scroll-handle') {\n var bounds = undefined;\n var target = this.target;\n if (target === document.body) {\n target = document.documentElement;\n\n bounds = {\n left: pageXOffset,\n top: pageYOffset,\n height: innerHeight,\n width: innerWidth\n };\n } else {\n bounds = getBounds(target);\n }\n\n var style = getComputedStyle(target);\n\n var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || this.target !== document.body;\n\n var scrollBottom = 0;\n if (hasBottomScroll) {\n scrollBottom = 15;\n }\n\n var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;\n\n var out = {\n width: 15,\n height: height * 0.975 * (height / target.scrollHeight),\n left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15\n };\n\n var fitAdj = 0;\n if (height < 408 && this.target === document.body) {\n fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;\n }\n\n if (this.target !== document.body) {\n out.height = Math.max(out.height, 24);\n }\n\n var scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);\n out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);\n\n if (this.target === document.body) {\n out.height = Math.max(out.height, 24);\n }\n\n return out;\n }\n } else {\n return getBounds(this.target);\n }\n }\n }, {\n key: 'clearCache',\n value: function clearCache() {\n this._cache = {};\n }\n }, {\n key: 'cache',\n value: function cache(k, getter) {\n // More than one module will often need the same DOM info, so\n // we keep a cache which is cleared on each position call\n if (typeof this._cache === 'undefined') {\n this._cache = {};\n }\n\n if (typeof this._cache[k] === 'undefined') {\n this._cache[k] = getter.call(this);\n }\n\n return this._cache[k];\n }\n }, {\n key: 'enable',\n value: function enable() {\n var _this3 = this;\n\n var pos = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n if (!(this.options.addTargetClasses === false)) {\n addClass(this.target, this.getClass('enabled'));\n }\n addClass(this.element, this.getClass('enabled'));\n this.enabled = true;\n\n this.scrollParents.forEach(function (parent) {\n if (parent !== _this3.target.ownerDocument) {\n parent.addEventListener('scroll', _this3.position);\n }\n });\n\n if (pos) {\n this.position();\n }\n }\n }, {\n key: 'disable',\n value: function disable() {\n var _this4 = this;\n\n removeClass(this.target, this.getClass('enabled'));\n removeClass(this.element, this.getClass('enabled'));\n this.enabled = false;\n\n if (typeof this.scrollParents !== 'undefined') {\n this.scrollParents.forEach(function (parent) {\n parent.removeEventListener('scroll', _this4.position);\n });\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this5 = this;\n\n this.disable();\n\n tethers.forEach(function (tether, i) {\n if (tether === _this5) {\n tethers.splice(i, 1);\n }\n });\n\n // Remove any elements we were using for convenience from the DOM\n if (tethers.length === 0) {\n removeUtilElements();\n }\n }\n }, {\n key: 'updateAttachClasses',\n value: function updateAttachClasses(elementAttach, targetAttach) {\n var _this6 = this;\n\n elementAttach = elementAttach || this.attachment;\n targetAttach = targetAttach || this.targetAttachment;\n var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];\n\n if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {\n // updateAttachClasses can be called more than once in a position call, so\n // we need to clean up after ourselves such that when the last defer gets\n // ran it doesn't add any extra classes from previous calls.\n this._addAttachClasses.splice(0, this._addAttachClasses.length);\n }\n\n if (typeof this._addAttachClasses === 'undefined') {\n this._addAttachClasses = [];\n }\n var add = this._addAttachClasses;\n\n if (elementAttach.top) {\n add.push(this.getClass('element-attached') + '-' + elementAttach.top);\n }\n if (elementAttach.left) {\n add.push(this.getClass('element-attached') + '-' + elementAttach.left);\n }\n if (targetAttach.top) {\n add.push(this.getClass('target-attached') + '-' + targetAttach.top);\n }\n if (targetAttach.left) {\n add.push(this.getClass('target-attached') + '-' + targetAttach.left);\n }\n\n var all = [];\n sides.forEach(function (side) {\n all.push(_this6.getClass('element-attached') + '-' + side);\n all.push(_this6.getClass('target-attached') + '-' + side);\n });\n\n defer(function () {\n if (!(typeof _this6._addAttachClasses !== 'undefined')) {\n return;\n }\n\n updateClasses(_this6.element, _this6._addAttachClasses, all);\n if (!(_this6.options.addTargetClasses === false)) {\n updateClasses(_this6.target, _this6._addAttachClasses, all);\n }\n\n delete _this6._addAttachClasses;\n });\n }\n }, {\n key: 'position',\n value: function position() {\n var _this7 = this;\n\n var flushChanges = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n // flushChanges commits the changes immediately, leave true unless you are positioning multiple\n // tethers (in which case call Tether.Utils.flush yourself when you're done)\n\n if (!this.enabled) {\n return;\n }\n\n this.clearCache();\n\n // Turn 'auto' attachments into the appropriate corner or edge\n var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);\n\n this.updateAttachClasses(this.attachment, targetAttachment);\n\n var elementPos = this.cache('element-bounds', function () {\n return getBounds(_this7.element);\n });\n\n var width = elementPos.width;\n var height = elementPos.height;\n\n if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\n var _lastSize = this.lastSize;\n\n // We cache the height and width to make it possible to position elements that are\n // getting hidden.\n width = _lastSize.width;\n height = _lastSize.height;\n } else {\n this.lastSize = { width: width, height: height };\n }\n\n var targetPos = this.cache('target-bounds', function () {\n return _this7.getTargetBounds();\n });\n var targetSize = targetPos;\n\n // Get an actual px offset from the attachment\n var offset = offsetToPx(attachmentToOffset(this.attachment), { width: width, height: height });\n var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);\n\n var manualOffset = offsetToPx(this.offset, { width: width, height: height });\n var manualTargetOffset = offsetToPx(this.targetOffset, targetSize);\n\n // Add the manually provided offset\n offset = addOffset(offset, manualOffset);\n targetOffset = addOffset(targetOffset, manualTargetOffset);\n\n // It's now our goal to make (element position + offset) == (target position + target offset)\n var left = targetPos.left + targetOffset.left - offset.left;\n var top = targetPos.top + targetOffset.top - offset.top;\n\n for (var i = 0; i < TetherBase.modules.length; ++i) {\n var _module2 = TetherBase.modules[i];\n var ret = _module2.position.call(this, {\n left: left,\n top: top,\n targetAttachment: targetAttachment,\n targetPos: targetPos,\n elementPos: elementPos,\n offset: offset,\n targetOffset: targetOffset,\n manualOffset: manualOffset,\n manualTargetOffset: manualTargetOffset,\n scrollbarSize: scrollbarSize,\n attachment: this.attachment\n });\n\n if (ret === false) {\n return false;\n } else if (typeof ret === 'undefined' || typeof ret !== 'object') {\n continue;\n } else {\n top = ret.top;\n left = ret.left;\n }\n }\n\n // We describe the position three different ways to give the optimizer\n // a chance to decide the best possible way to position the element\n // with the fewest repaints.\n var next = {\n // It's position relative to the page (absolute positioning when\n // the element is a child of the body)\n page: {\n top: top,\n left: left\n },\n\n // It's position relative to the viewport (fixed positioning)\n viewport: {\n top: top - pageYOffset,\n bottom: pageYOffset - top - height + innerHeight,\n left: left - pageXOffset,\n right: pageXOffset - left - width + innerWidth\n }\n };\n\n var doc = this.target.ownerDocument;\n var win = doc.defaultView;\n\n var scrollbarSize = undefined;\n if (win.innerHeight > doc.documentElement.clientHeight) {\n scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\n next.viewport.bottom -= scrollbarSize.height;\n }\n\n if (win.innerWidth > doc.documentElement.clientWidth) {\n scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\n next.viewport.right -= scrollbarSize.width;\n }\n\n if (['', 'static'].indexOf(doc.body.style.position) === -1 || ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {\n // Absolute positioning in the body will be relative to the page, not the 'initial containing block'\n next.page.bottom = doc.body.scrollHeight - top - height;\n next.page.right = doc.body.scrollWidth - left - width;\n }\n\n if (typeof this.options.optimizations !== 'undefined' && this.options.optimizations.moveElement !== false && !(typeof this.targetModifier !== 'undefined')) {\n (function () {\n var offsetParent = _this7.cache('target-offsetparent', function () {\n return getOffsetParent(_this7.target);\n });\n var offsetPosition = _this7.cache('target-offsetparent-bounds', function () {\n return getBounds(offsetParent);\n });\n var offsetParentStyle = getComputedStyle(offsetParent);\n var offsetParentSize = offsetPosition;\n\n var offsetBorder = {};\n ['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {\n offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle['border' + side + 'Width']);\n });\n\n offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;\n offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;\n\n if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {\n if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {\n // We're within the visible part of the target's scroll parent\n var scrollTop = offsetParent.scrollTop;\n var scrollLeft = offsetParent.scrollLeft;\n\n // It's position relative to the target's offset parent (absolute positioning when\n // the element is moved to be a child of the target's offset parent).\n next.offset = {\n top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,\n left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left\n };\n }\n }\n })();\n }\n\n // We could also travel up the DOM and try each containing context, rather than only\n // looking at the body, but we're gonna get diminishing returns.\n\n this.move(next);\n\n this.history.unshift(next);\n\n if (this.history.length > 3) {\n this.history.pop();\n }\n\n if (flushChanges) {\n flush();\n }\n\n return true;\n }\n\n // THE ISSUE\n }, {\n key: 'move',\n value: function move(pos) {\n var _this8 = this;\n\n if (!(typeof this.element.parentNode !== 'undefined')) {\n return;\n }\n\n var same = {};\n\n for (var type in pos) {\n same[type] = {};\n\n for (var key in pos[type]) {\n var found = false;\n\n for (var i = 0; i < this.history.length; ++i) {\n var point = this.history[i];\n if (typeof point[type] !== 'undefined' && !within(point[type][key], pos[type][key])) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n same[type][key] = true;\n }\n }\n }\n\n var css = { top: '', left: '', right: '', bottom: '' };\n\n var transcribe = function transcribe(_same, _pos) {\n var hasOptimizations = typeof _this8.options.optimizations !== 'undefined';\n var gpu = hasOptimizations ? _this8.options.optimizations.gpu : null;\n if (gpu !== false) {\n var yPos = undefined,\n xPos = undefined;\n if (_same.top) {\n css.top = 0;\n yPos = _pos.top;\n } else {\n css.bottom = 0;\n yPos = -_pos.bottom;\n }\n\n if (_same.left) {\n css.left = 0;\n xPos = _pos.left;\n } else {\n css.right = 0;\n xPos = -_pos.right;\n }\n\n if (typeof window.devicePixelRatio === 'number' && devicePixelRatio % 1 === 0) {\n xPos = Math.round(xPos * devicePixelRatio) / devicePixelRatio;\n yPos = Math.round(yPos * devicePixelRatio) / devicePixelRatio;\n }\n\n css[transformKey] = 'translateX(' + xPos + 'px) translateY(' + yPos + 'px)';\n\n if (transformKey !== 'msTransform') {\n // The Z transform will keep this in the GPU (faster, and prevents artifacts),\n // but IE9 doesn't support 3d transforms and will choke.\n css[transformKey] += \" translateZ(0)\";\n }\n } else {\n if (_same.top) {\n css.top = _pos.top + 'px';\n } else {\n css.bottom = _pos.bottom + 'px';\n }\n\n if (_same.left) {\n css.left = _pos.left + 'px';\n } else {\n css.right = _pos.right + 'px';\n }\n }\n };\n\n var moved = false;\n if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {\n css.position = 'absolute';\n transcribe(same.page, pos.page);\n } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {\n css.position = 'fixed';\n transcribe(same.viewport, pos.viewport);\n } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {\n (function () {\n css.position = 'absolute';\n var offsetParent = _this8.cache('target-offsetparent', function () {\n return getOffsetParent(_this8.target);\n });\n\n if (getOffsetParent(_this8.element) !== offsetParent) {\n defer(function () {\n _this8.element.parentNode.removeChild(_this8.element);\n offsetParent.appendChild(_this8.element);\n });\n }\n\n transcribe(same.offset, pos.offset);\n moved = true;\n })();\n } else {\n css.position = 'absolute';\n transcribe({ top: true, left: true }, pos.page);\n }\n\n if (!moved) {\n if (this.options.bodyElement) {\n if (this.element.parentNode !== this.options.bodyElement) {\n this.options.bodyElement.appendChild(this.element);\n }\n } else {\n var isFullscreenElement = function isFullscreenElement(e) {\n var d = e.ownerDocument;\n var fe = d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement || d.msFullscreenElement;\n return fe === e;\n };\n\n var offsetParentIsBody = true;\n\n var currentNode = this.element.parentNode;\n while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY' && !isFullscreenElement(currentNode)) {\n if (getComputedStyle(currentNode).position !== 'static') {\n offsetParentIsBody = false;\n break;\n }\n\n currentNode = currentNode.parentNode;\n }\n\n if (!offsetParentIsBody) {\n this.element.parentNode.removeChild(this.element);\n this.element.ownerDocument.body.appendChild(this.element);\n }\n }\n }\n\n // Any css change will trigger a repaint, so let's avoid one if nothing changed\n var writeCSS = {};\n var write = false;\n for (var key in css) {\n var val = css[key];\n var elVal = this.element.style[key];\n\n if (elVal !== val) {\n write = true;\n writeCSS[key] = val;\n }\n }\n\n if (write) {\n defer(function () {\n extend(_this8.element.style, writeCSS);\n _this8.trigger('repositioned');\n });\n }\n }\n }]);\n\n return TetherClass;\n})(Evented);\n\nTetherClass.modules = [];\n\nTetherBase.position = position;\n\nvar Tether = extend(TetherClass, TetherBase);\n/* globals TetherBase */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar extend = _TetherBase$Utils.extend;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\n\nvar BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];\n\nfunction getBoundingRect(tether, to) {\n if (to === 'scrollParent') {\n to = tether.scrollParents[0];\n } else if (to === 'window') {\n to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];\n }\n\n if (to === document) {\n to = to.documentElement;\n }\n\n if (typeof to.nodeType !== 'undefined') {\n (function () {\n var node = to;\n var size = getBounds(to);\n var pos = size;\n var style = getComputedStyle(to);\n\n to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];\n\n // Account any parent Frames scroll offset\n if (node.ownerDocument !== document) {\n var win = node.ownerDocument.defaultView;\n to[0] += win.pageXOffset;\n to[1] += win.pageYOffset;\n to[2] += win.pageXOffset;\n to[3] += win.pageYOffset;\n }\n\n BOUNDS_FORMAT.forEach(function (side, i) {\n side = side[0].toUpperCase() + side.substr(1);\n if (side === 'Top' || side === 'Left') {\n to[i] += parseFloat(style['border' + side + 'Width']);\n } else {\n to[i] -= parseFloat(style['border' + side + 'Width']);\n }\n });\n })();\n }\n\n return to;\n}\n\nTetherBase.modules.push({\n position: function position(_ref) {\n var _this = this;\n\n var top = _ref.top;\n var left = _ref.left;\n var targetAttachment = _ref.targetAttachment;\n\n if (!this.options.constraints) {\n return true;\n }\n\n var _cache = this.cache('element-bounds', function () {\n return getBounds(_this.element);\n });\n\n var height = _cache.height;\n var width = _cache.width;\n\n if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\n var _lastSize = this.lastSize;\n\n // Handle the item getting hidden as a result of our positioning without glitching\n // the classes in and out\n width = _lastSize.width;\n height = _lastSize.height;\n }\n\n var targetSize = this.cache('target-bounds', function () {\n return _this.getTargetBounds();\n });\n\n var targetHeight = targetSize.height;\n var targetWidth = targetSize.width;\n\n var allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];\n\n this.options.constraints.forEach(function (constraint) {\n var outOfBoundsClass = constraint.outOfBoundsClass;\n var pinnedClass = constraint.pinnedClass;\n\n if (outOfBoundsClass) {\n allClasses.push(outOfBoundsClass);\n }\n if (pinnedClass) {\n allClasses.push(pinnedClass);\n }\n });\n\n allClasses.forEach(function (cls) {\n ['left', 'top', 'right', 'bottom'].forEach(function (side) {\n allClasses.push(cls + '-' + side);\n });\n });\n\n var addClasses = [];\n\n var tAttachment = extend({}, targetAttachment);\n var eAttachment = extend({}, this.attachment);\n\n this.options.constraints.forEach(function (constraint) {\n var to = constraint.to;\n var attachment = constraint.attachment;\n var pin = constraint.pin;\n\n if (typeof attachment === 'undefined') {\n attachment = '';\n }\n\n var changeAttachX = undefined,\n changeAttachY = undefined;\n if (attachment.indexOf(' ') >= 0) {\n var _attachment$split = attachment.split(' ');\n\n var _attachment$split2 = _slicedToArray(_attachment$split, 2);\n\n changeAttachY = _attachment$split2[0];\n changeAttachX = _attachment$split2[1];\n } else {\n changeAttachX = changeAttachY = attachment;\n }\n\n var bounds = getBoundingRect(_this, to);\n\n if (changeAttachY === 'target' || changeAttachY === 'both') {\n if (top < bounds[1] && tAttachment.top === 'top') {\n top += targetHeight;\n tAttachment.top = 'bottom';\n }\n\n if (top + height > bounds[3] && tAttachment.top === 'bottom') {\n top -= targetHeight;\n tAttachment.top = 'top';\n }\n }\n\n if (changeAttachY === 'together') {\n if (tAttachment.top === 'top') {\n if (eAttachment.top === 'bottom' && top < bounds[1]) {\n top += targetHeight;\n tAttachment.top = 'bottom';\n\n top += height;\n eAttachment.top = 'top';\n } else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {\n top -= height - targetHeight;\n tAttachment.top = 'bottom';\n\n eAttachment.top = 'bottom';\n }\n }\n\n if (tAttachment.top === 'bottom') {\n if (eAttachment.top === 'top' && top + height > bounds[3]) {\n top -= targetHeight;\n tAttachment.top = 'top';\n\n top -= height;\n eAttachment.top = 'bottom';\n } else if (eAttachment.top === 'bottom' && top < bounds[1] && top + (height * 2 - targetHeight) <= bounds[3]) {\n top += height - targetHeight;\n tAttachment.top = 'top';\n\n eAttachment.top = 'top';\n }\n }\n\n if (tAttachment.top === 'middle') {\n if (top + height > bounds[3] && eAttachment.top === 'top') {\n top -= height;\n eAttachment.top = 'bottom';\n } else if (top < bounds[1] && eAttachment.top === 'bottom') {\n top += height;\n eAttachment.top = 'top';\n }\n }\n }\n\n if (changeAttachX === 'target' || changeAttachX === 'both') {\n if (left < bounds[0] && tAttachment.left === 'left') {\n left += targetWidth;\n tAttachment.left = 'right';\n }\n\n if (left + width > bounds[2] && tAttachment.left === 'right') {\n left -= targetWidth;\n tAttachment.left = 'left';\n }\n }\n\n if (changeAttachX === 'together') {\n if (left < bounds[0] && tAttachment.left === 'left') {\n if (eAttachment.left === 'right') {\n left += targetWidth;\n tAttachment.left = 'right';\n\n left += width;\n eAttachment.left = 'left';\n } else if (eAttachment.left === 'left') {\n left += targetWidth;\n tAttachment.left = 'right';\n\n left -= width;\n eAttachment.left = 'right';\n }\n } else if (left + width > bounds[2] && tAttachment.left === 'right') {\n if (eAttachment.left === 'left') {\n left -= targetWidth;\n tAttachment.left = 'left';\n\n left -= width;\n eAttachment.left = 'right';\n } else if (eAttachment.left === 'right') {\n left -= targetWidth;\n tAttachment.left = 'left';\n\n left += width;\n eAttachment.left = 'left';\n }\n } else if (tAttachment.left === 'center') {\n if (left + width > bounds[2] && eAttachment.left === 'left') {\n left -= width;\n eAttachment.left = 'right';\n } else if (left < bounds[0] && eAttachment.left === 'right') {\n left += width;\n eAttachment.left = 'left';\n }\n }\n }\n\n if (changeAttachY === 'element' || changeAttachY === 'both') {\n if (top < bounds[1] && eAttachment.top === 'bottom') {\n top += height;\n eAttachment.top = 'top';\n }\n\n if (top + height > bounds[3] && eAttachment.top === 'top') {\n top -= height;\n eAttachment.top = 'bottom';\n }\n }\n\n if (changeAttachX === 'element' || changeAttachX === 'both') {\n if (left < bounds[0]) {\n if (eAttachment.left === 'right') {\n left += width;\n eAttachment.left = 'left';\n } else if (eAttachment.left === 'center') {\n left += width / 2;\n eAttachment.left = 'left';\n }\n }\n\n if (left + width > bounds[2]) {\n if (eAttachment.left === 'left') {\n left -= width;\n eAttachment.left = 'right';\n } else if (eAttachment.left === 'center') {\n left -= width / 2;\n eAttachment.left = 'right';\n }\n }\n }\n\n if (typeof pin === 'string') {\n pin = pin.split(',').map(function (p) {\n return p.trim();\n });\n } else if (pin === true) {\n pin = ['top', 'left', 'right', 'bottom'];\n }\n\n pin = pin || [];\n\n var pinned = [];\n var oob = [];\n\n if (top < bounds[1]) {\n if (pin.indexOf('top') >= 0) {\n top = bounds[1];\n pinned.push('top');\n } else {\n oob.push('top');\n }\n }\n\n if (top + height > bounds[3]) {\n if (pin.indexOf('bottom') >= 0) {\n top = bounds[3] - height;\n pinned.push('bottom');\n } else {\n oob.push('bottom');\n }\n }\n\n if (left < bounds[0]) {\n if (pin.indexOf('left') >= 0) {\n left = bounds[0];\n pinned.push('left');\n } else {\n oob.push('left');\n }\n }\n\n if (left + width > bounds[2]) {\n if (pin.indexOf('right') >= 0) {\n left = bounds[2] - width;\n pinned.push('right');\n } else {\n oob.push('right');\n }\n }\n\n if (pinned.length) {\n (function () {\n var pinnedClass = undefined;\n if (typeof _this.options.pinnedClass !== 'undefined') {\n pinnedClass = _this.options.pinnedClass;\n } else {\n pinnedClass = _this.getClass('pinned');\n }\n\n addClasses.push(pinnedClass);\n pinned.forEach(function (side) {\n addClasses.push(pinnedClass + '-' + side);\n });\n })();\n }\n\n if (oob.length) {\n (function () {\n var oobClass = undefined;\n if (typeof _this.options.outOfBoundsClass !== 'undefined') {\n oobClass = _this.options.outOfBoundsClass;\n } else {\n oobClass = _this.getClass('out-of-bounds');\n }\n\n addClasses.push(oobClass);\n oob.forEach(function (side) {\n addClasses.push(oobClass + '-' + side);\n });\n })();\n }\n\n if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {\n eAttachment.left = tAttachment.left = false;\n }\n if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {\n eAttachment.top = tAttachment.top = false;\n }\n\n if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {\n _this.updateAttachClasses(eAttachment, tAttachment);\n _this.trigger('update', {\n attachment: eAttachment,\n targetAttachment: tAttachment\n });\n }\n });\n\n defer(function () {\n if (!(_this.options.addTargetClasses === false)) {\n updateClasses(_this.target, addClasses, allClasses);\n }\n updateClasses(_this.element, addClasses, allClasses);\n });\n\n return { top: top, left: left };\n }\n});\n/* globals TetherBase */\n\n'use strict';\n\nvar _TetherBase$Utils = TetherBase.Utils;\nvar getBounds = _TetherBase$Utils.getBounds;\nvar updateClasses = _TetherBase$Utils.updateClasses;\nvar defer = _TetherBase$Utils.defer;\n\nTetherBase.modules.push({\n position: function position(_ref) {\n var _this = this;\n\n var top = _ref.top;\n var left = _ref.left;\n\n var _cache = this.cache('element-bounds', function () {\n return getBounds(_this.element);\n });\n\n var height = _cache.height;\n var width = _cache.width;\n\n var targetPos = this.getTargetBounds();\n\n var bottom = top + height;\n var right = left + width;\n\n var abutted = [];\n if (top <= targetPos.bottom && bottom >= targetPos.top) {\n ['left', 'right'].forEach(function (side) {\n var targetPosSide = targetPos[side];\n if (targetPosSide === left || targetPosSide === right) {\n abutted.push(side);\n }\n });\n }\n\n if (left <= targetPos.right && right >= targetPos.left) {\n ['top', 'bottom'].forEach(function (side) {\n var targetPosSide = targetPos[side];\n if (targetPosSide === top || targetPosSide === bottom) {\n abutted.push(side);\n }\n });\n }\n\n var allClasses = [];\n var addClasses = [];\n\n var sides = ['left', 'top', 'right', 'bottom'];\n allClasses.push(this.getClass('abutted'));\n sides.forEach(function (side) {\n allClasses.push(_this.getClass('abutted') + '-' + side);\n });\n\n if (abutted.length) {\n addClasses.push(this.getClass('abutted'));\n }\n\n abutted.forEach(function (side) {\n addClasses.push(_this.getClass('abutted') + '-' + side);\n });\n\n defer(function () {\n if (!(_this.options.addTargetClasses === false)) {\n updateClasses(_this.target, addClasses, allClasses);\n }\n updateClasses(_this.element, addClasses, allClasses);\n });\n\n return true;\n }\n});\n/* globals TetherBase */\n\n'use strict';\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nTetherBase.modules.push({\n position: function position(_ref) {\n var top = _ref.top;\n var left = _ref.left;\n\n if (!this.options.shift) {\n return;\n }\n\n var shift = this.options.shift;\n if (typeof this.options.shift === 'function') {\n shift = this.options.shift.call(this, { top: top, left: left });\n }\n\n var shiftTop = undefined,\n shiftLeft = undefined;\n if (typeof shift === 'string') {\n shift = shift.split(' ');\n shift[1] = shift[1] || shift[0];\n\n var _shift = shift;\n\n var _shift2 = _slicedToArray(_shift, 2);\n\n shiftTop = _shift2[0];\n shiftLeft = _shift2[1];\n\n shiftTop = parseFloat(shiftTop, 10);\n shiftLeft = parseFloat(shiftLeft, 10);\n } else {\n shiftTop = shift.top;\n shiftLeft = shift.left;\n }\n\n top += shiftTop;\n left += shiftLeft;\n\n return { top: top, left: left };\n }\n});\nreturn Tether;\n\n}));\n","/*!\n * Bootstrap v4.5.1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n $ = $ && Object.prototype.hasOwnProperty.call($, 'default') ? $['default'] : $;\n Popper = Popper && Object.prototype.hasOwnProperty.call(Popper, 'default') ? Popper['default'] : Popper;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return \"\" + obj;\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined;\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (err) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $(element).css('transition-duration');\n var transitionDelay = $(element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $.fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.5.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var SELECTOR_DISMISS = '[data-dismiss=\"alert\"]';\n var EVENT_CLOSE = \"close\" + EVENT_KEY;\n var EVENT_CLOSED = \"closed\" + EVENT_KEY;\n var EVENT_CLICK_DATA_API = \"click\" + EVENT_KEY + DATA_API_KEY;\n var CLASS_NAME_ALERT = 'alert';\n var CLASS_NAME_FADE = 'fade';\n var CLASS_NAME_SHOW = 'show';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Alert = /*#__PURE__*/function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $(element).closest(\".\" + CLASS_NAME_ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $.Event(EVENT_CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $(element).removeClass(CLASS_NAME_SHOW);\n\n if (!$(element).hasClass(CLASS_NAME_FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(EVENT_CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.5.1';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n var CLASS_NAME_ACTIVE = 'active';\n var CLASS_NAME_BUTTON = 'btn';\n var CLASS_NAME_FOCUS = 'focus';\n var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^=\"button\"]';\n var SELECTOR_DATA_TOGGLES = '[data-toggle=\"buttons\"]';\n var SELECTOR_DATA_TOGGLE = '[data-toggle=\"button\"]';\n var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle=\"buttons\"] .btn';\n var SELECTOR_INPUT = 'input:not([type=\"hidden\"])';\n var SELECTOR_ACTIVE = '.active';\n var SELECTOR_BUTTON = '.btn';\n var EVENT_CLICK_DATA_API$1 = \"click\" + EVENT_KEY$1 + DATA_API_KEY$1;\n var EVENT_FOCUS_BLUR_DATA_API = \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1);\n var EVENT_LOAD_DATA_API = \"load\" + EVENT_KEY$1 + DATA_API_KEY$1;\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Button = /*#__PURE__*/function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $(this._element).closest(SELECTOR_DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(SELECTOR_INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);\n\n if (activeElement) {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE);\n }\n }\n }\n\n if (triggerChangeEvent) {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n if (input.type === 'checkbox' || input.type === 'radio') {\n input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);\n }\n\n $(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(CLASS_NAME_ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(CLASS_NAME_ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n var initialButton = button;\n\n if (!$(button).hasClass(CLASS_NAME_BUTTON)) {\n button = $(button).closest(SELECTOR_BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(SELECTOR_INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n if (initialButton.tagName !== 'LABEL' || inputBtn && inputBtn.type !== 'checkbox') {\n Button._jQueryInterface.call($(button), 'toggle');\n }\n }\n }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(SELECTOR_BUTTON)[0];\n $(button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));\n });\n $(window).on(EVENT_LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(SELECTOR_INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n button.classList.remove(CLASS_NAME_ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(CLASS_NAME_ACTIVE);\n } else {\n _button.classList.remove(CLASS_NAME_ACTIVE);\n }\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.5.1';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var DIRECTION_NEXT = 'next';\n var DIRECTION_PREV = 'prev';\n var DIRECTION_LEFT = 'left';\n var DIRECTION_RIGHT = 'right';\n var EVENT_SLIDE = \"slide\" + EVENT_KEY$2;\n var EVENT_SLID = \"slid\" + EVENT_KEY$2;\n var EVENT_KEYDOWN = \"keydown\" + EVENT_KEY$2;\n var EVENT_MOUSEENTER = \"mouseenter\" + EVENT_KEY$2;\n var EVENT_MOUSELEAVE = \"mouseleave\" + EVENT_KEY$2;\n var EVENT_TOUCHSTART = \"touchstart\" + EVENT_KEY$2;\n var EVENT_TOUCHMOVE = \"touchmove\" + EVENT_KEY$2;\n var EVENT_TOUCHEND = \"touchend\" + EVENT_KEY$2;\n var EVENT_POINTERDOWN = \"pointerdown\" + EVENT_KEY$2;\n var EVENT_POINTERUP = \"pointerup\" + EVENT_KEY$2;\n var EVENT_DRAG_START = \"dragstart\" + EVENT_KEY$2;\n var EVENT_LOAD_DATA_API$1 = \"load\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var EVENT_CLICK_DATA_API$2 = \"click\" + EVENT_KEY$2 + DATA_API_KEY$2;\n var CLASS_NAME_CAROUSEL = 'carousel';\n var CLASS_NAME_ACTIVE$1 = 'active';\n var CLASS_NAME_SLIDE = 'slide';\n var CLASS_NAME_RIGHT = 'carousel-item-right';\n var CLASS_NAME_LEFT = 'carousel-item-left';\n var CLASS_NAME_NEXT = 'carousel-item-next';\n var CLASS_NAME_PREV = 'carousel-item-prev';\n var CLASS_NAME_POINTER_EVENT = 'pointer-event';\n var SELECTOR_ACTIVE$1 = '.active';\n var SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n var SELECTOR_ITEM = '.carousel-item';\n var SELECTOR_ITEM_IMG = '.carousel-item img';\n var SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n var SELECTOR_INDICATORS = '.carousel-indicators';\n var SELECTOR_DATA_SLIDE = '[data-slide], [data-slide-to]';\n var SELECTOR_DATA_RIDE = '[data-ride=\"carousel\"]';\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel = /*#__PURE__*/function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(DIRECTION_NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(DIRECTION_PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(SELECTOR_NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $(this._element).one(EVENT_SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(EVENT_KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $(this._element).on(EVENT_MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(EVENT_MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $(this._element).on(EVENT_POINTERDOWN, function (event) {\n return start(event);\n });\n $(this._element).on(EVENT_POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n $(this._element).on(EVENT_TOUCHSTART, function (event) {\n return start(event);\n });\n $(this._element).on(EVENT_TOUCHMOVE, function (event) {\n return move(event);\n });\n $(this._element).on(EVENT_TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === DIRECTION_NEXT;\n var isPrevDirection = direction === DIRECTION_PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === DIRECTION_PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));\n\n var slideEvent = $.Event(EVENT_SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE$1));\n $(indicators).removeClass(CLASS_NAME_ACTIVE$1);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(CLASS_NAME_ACTIVE$1);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === DIRECTION_NEXT) {\n directionalClassName = CLASS_NAME_LEFT;\n orderClassName = CLASS_NAME_NEXT;\n eventDirectionName = DIRECTION_LEFT;\n } else {\n directionalClassName = CLASS_NAME_RIGHT;\n orderClassName = CLASS_NAME_PREV;\n eventDirectionName = DIRECTION_RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(CLASS_NAME_ACTIVE$1)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $.Event(EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($(this._element).hasClass(CLASS_NAME_SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $(activeElement).one(Util.TRANSITION_END, function () {\n $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(CLASS_NAME_ACTIVE$1);\n $(activeElement).removeClass(CLASS_NAME_ACTIVE$1 + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(CLASS_NAME_ACTIVE$1);\n $(nextElement).addClass(CLASS_NAME_ACTIVE$1);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$2);\n\n var _config = _extends({}, Default, $(this).data());\n\n if (typeof config === 'object') {\n _config = _extends({}, _config, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $(selector)[0];\n\n if (!target || !$(target).hasClass(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n var config = _extends({}, $(target).data(), $(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($(target), config);\n\n if (slideIndex) {\n $(target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$2, SELECTOR_DATA_SLIDE, Carousel._dataApiClickHandler);\n $(window).on(EVENT_LOAD_DATA_API$1, function () {\n var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.5.1';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var EVENT_SHOW = \"show\" + EVENT_KEY$3;\n var EVENT_SHOWN = \"shown\" + EVENT_KEY$3;\n var EVENT_HIDE = \"hide\" + EVENT_KEY$3;\n var EVENT_HIDDEN = \"hidden\" + EVENT_KEY$3;\n var EVENT_CLICK_DATA_API$3 = \"click\" + EVENT_KEY$3 + DATA_API_KEY$3;\n var CLASS_NAME_SHOW$1 = 'show';\n var CLASS_NAME_COLLAPSE = 'collapse';\n var CLASS_NAME_COLLAPSING = 'collapsing';\n var CLASS_NAME_COLLAPSED = 'collapsed';\n var DIMENSION_WIDTH = 'width';\n var DIMENSION_HEIGHT = 'height';\n var SELECTOR_ACTIVES = '.show, .collapsing';\n var SELECTOR_DATA_TOGGLE$1 = '[data-toggle=\"collapse\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Collapse = /*#__PURE__*/function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$1));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(CLASS_NAME_SHOW$1)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(EVENT_SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(EVENT_SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(CLASS_NAME_SHOW$1)) {\n return;\n }\n\n var startEvent = $.Event(EVENT_HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + \" \" + CLASS_NAME_SHOW$1);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(CLASS_NAME_SHOW$1)) {\n $(trigger).addClass(CLASS_NAME_COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$1, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(DIMENSION_WIDTH);\n return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $(element).hasClass(CLASS_NAME_SHOW$1);\n\n if (triggerArray.length) {\n $(triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$3);\n\n var _config = _extends({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$1, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.5.1';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var EVENT_HIDE$1 = \"hide\" + EVENT_KEY$4;\n var EVENT_HIDDEN$1 = \"hidden\" + EVENT_KEY$4;\n var EVENT_SHOW$1 = \"show\" + EVENT_KEY$4;\n var EVENT_SHOWN$1 = \"shown\" + EVENT_KEY$4;\n var EVENT_CLICK = \"click\" + EVENT_KEY$4;\n var EVENT_CLICK_DATA_API$4 = \"click\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYDOWN_DATA_API = \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var EVENT_KEYUP_DATA_API = \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4;\n var CLASS_NAME_DISABLED = 'disabled';\n var CLASS_NAME_SHOW$2 = 'show';\n var CLASS_NAME_DROPUP = 'dropup';\n var CLASS_NAME_DROPRIGHT = 'dropright';\n var CLASS_NAME_DROPLEFT = 'dropleft';\n var CLASS_NAME_MENURIGHT = 'dropdown-menu-right';\n var CLASS_NAME_POSITION_STATIC = 'position-static';\n var SELECTOR_DATA_TOGGLE$2 = '[data-toggle=\"dropdown\"]';\n var SELECTOR_FORM_CHILD = '.dropdown form';\n var SELECTOR_MENU = '.dropdown-menu';\n var SELECTOR_NAVBAR_NAV = '.navbar-nav';\n var SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n var PLACEMENT_TOP = 'top-start';\n var PLACEMENT_TOPEND = 'top-end';\n var PLACEMENT_BOTTOM = 'bottom-start';\n var PLACEMENT_BOTTOMEND = 'bottom-end';\n var PLACEMENT_RIGHT = 'right-start';\n var PLACEMENT_LEFT = 'left-start';\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Dropdown = /*#__PURE__*/function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var isActive = $(this._menu).hasClass(CLASS_NAME_SHOW$2);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || $(this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(EVENT_SHOW$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(CLASS_NAME_POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $(parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_SHOWN$1, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $(this._element).hasClass(CLASS_NAME_DISABLED) || !$(this._menu).hasClass(CLASS_NAME_SHOW$2)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $(this._menu).toggleClass(CLASS_NAME_SHOW$2);\n $(parent).toggleClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $(this._element).on(EVENT_CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, this.constructor.Default, $(this._element).data(), config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(SELECTOR_MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $(this._element.parentNode);\n var placement = PLACEMENT_BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {\n placement = $(this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {\n placement = PLACEMENT_RIGHT;\n } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {\n placement = PLACEMENT_LEFT;\n } else if ($(this._menu).hasClass(CLASS_NAME_MENURIGHT)) {\n placement = PLACEMENT_BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper.js if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _extends({}, popperConfig, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE$2));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $(toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(CLASS_NAME_SHOW$2)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $.Event(EVENT_HIDE$1, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $(dropdownMenu).removeClass(CLASS_NAME_SHOW$2);\n $(parent).removeClass(CLASS_NAME_SHOW$2).trigger($.Event(EVENT_HIDDEN$1, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n if (this.disabled || $(this).hasClass(CLASS_NAME_DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $(parent).hasClass(CLASS_NAME_SHOW$2);\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n $(parent.querySelector(SELECTOR_DATA_TOGGLE$2)).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function (item) {\n return $(item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$2, Dropdown._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API$4 + \" \" + EVENT_KEYUP_DATA_API, Dropdown._clearMenus).on(EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$2, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), 'toggle');\n }).on(EVENT_CLICK_DATA_API$4, SELECTOR_FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.5.1';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var EVENT_HIDE$2 = \"hide\" + EVENT_KEY$5;\n var EVENT_HIDE_PREVENTED = \"hidePrevented\" + EVENT_KEY$5;\n var EVENT_HIDDEN$2 = \"hidden\" + EVENT_KEY$5;\n var EVENT_SHOW$2 = \"show\" + EVENT_KEY$5;\n var EVENT_SHOWN$2 = \"shown\" + EVENT_KEY$5;\n var EVENT_FOCUSIN = \"focusin\" + EVENT_KEY$5;\n var EVENT_RESIZE = \"resize\" + EVENT_KEY$5;\n var EVENT_CLICK_DISMISS = \"click.dismiss\" + EVENT_KEY$5;\n var EVENT_KEYDOWN_DISMISS = \"keydown.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEUP_DISMISS = \"mouseup.dismiss\" + EVENT_KEY$5;\n var EVENT_MOUSEDOWN_DISMISS = \"mousedown.dismiss\" + EVENT_KEY$5;\n var EVENT_CLICK_DATA_API$5 = \"click\" + EVENT_KEY$5 + DATA_API_KEY$5;\n var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';\n var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';\n var CLASS_NAME_BACKDROP = 'modal-backdrop';\n var CLASS_NAME_OPEN = 'modal-open';\n var CLASS_NAME_FADE$1 = 'fade';\n var CLASS_NAME_SHOW$3 = 'show';\n var CLASS_NAME_STATIC = 'modal-static';\n var SELECTOR_DIALOG = '.modal-dialog';\n var SELECTOR_MODAL_BODY = '.modal-body';\n var SELECTOR_DATA_TOGGLE$3 = '[data-toggle=\"modal\"]';\n var SELECTOR_DATA_DISMISS = '[data-dismiss=\"modal\"]';\n var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n var SELECTOR_STICKY_CONTENT = '.sticky-top';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal = /*#__PURE__*/function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(SELECTOR_DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $.Event(EVENT_SHOW$2, {\n relatedTarget: relatedTarget\n });\n $(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $(this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {\n $(_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $.Event(EVENT_HIDE$2);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(EVENT_FOCUSIN);\n $(this._element).removeClass(CLASS_NAME_SHOW$3);\n $(this._element).off(EVENT_CLICK_DISMISS);\n $(this._dialog).off(EVENT_MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n\n $(document).off(EVENT_FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$3, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n if (this._config.backdrop === 'static') {\n var hideEventPrevented = $.Event(EVENT_HIDE_PREVENTED);\n $(this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.defaultPrevented) {\n return;\n }\n\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._element).off(Util.TRANSITION_END);\n $(this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(CLASS_NAME_STATIC);\n\n if (!isModalOverflowing) {\n $(_this3._element).one(Util.TRANSITION_END, function () {\n _this3._element.style.overflowY = '';\n }).emulateTransitionEnd(_this3._element, modalTransitionDuration);\n }\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n } else {\n this.hide();\n }\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $(this._element).hasClass(CLASS_NAME_FADE$1);\n var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n if ($(this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(CLASS_NAME_SHOW$3);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $.Event(EVENT_SHOWN$2, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $(_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $(document).off(EVENT_FOCUSIN) // Guard against infinite focus loop\n .on(EVENT_FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown) {\n $(this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {\n if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n event.preventDefault();\n\n _this6.hide();\n } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE$1) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(EVENT_KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $(window).on(EVENT_RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $(window).off(EVENT_RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $(document.body).removeClass(CLASS_NAME_OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $(_this8._element).trigger(EVENT_HIDDEN$2);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $(this._element).hasClass(CLASS_NAME_FADE$1) ? CLASS_NAME_FADE$1 : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = CLASS_NAME_BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(EVENT_CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n _this9._triggerBackdropTransition();\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(CLASS_NAME_SHOW$3);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(CLASS_NAME_SHOW$3);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(CLASS_NAME_FADE$1)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding\n\n $(fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $(stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $(element).css('margin-right');\n $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $(document.body).css('padding-right');\n $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $(document.body).addClass(CLASS_NAME_OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));\n $(fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + SELECTOR_STICKY_CONTENT));\n $(elements).each(function (index, element) {\n var margin = $(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $(document.body).data('padding-right');\n $(document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$5);\n\n var _config = _extends({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $(this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$5, SELECTOR_DATA_TOGGLE$3, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $(target).data(DATA_KEY$5) ? 'toggle' : _extends({}, $(target).data(), $(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $(target).one(EVENT_SHOW$2, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(EVENT_HIDDEN$2, function () {\n if ($(_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.5.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, len = regExp.length; i < len; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.5.1';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '' + '' + '',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HOVER_STATE_SHOW = 'show';\n var HOVER_STATE_OUT = 'out';\n var Event = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var CLASS_NAME_FADE$2 = 'fade';\n var CLASS_NAME_SHOW$4 = 'show';\n var SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n var SELECTOR_ARROW = '.arrow';\n var TRIGGER_HOVER = 'hover';\n var TRIGGER_FOCUS = 'focus';\n var TRIGGER_CLICK = 'click';\n var TRIGGER_MANUAL = 'manual';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip = /*#__PURE__*/function () {\n function Tooltip(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($(this.getTipElement()).hasClass(CLASS_NAME_SHOW$4)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\n $(this.element).off(this.constructor.EVENT_KEY);\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(CLASS_NAME_FADE$2);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));\n $(tip).addClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HOVER_STATE_OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(tip).removeClass(CLASS_NAME_SHOW$4); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n\n if ($(this.tip).hasClass(CLASS_NAME_FADE$2)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($(tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());\n $(tip).removeClass(CLASS_NAME_FADE$2 + \" \" + CLASS_NAME_SHOW$4);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($(content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: SELECTOR_ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _extends({}, defaultBsConfig, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $(_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _extends({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n }\n\n if ($(context.getTipElement()).hasClass(CLASS_NAME_SHOW$4) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HOVER_STATE_OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $(this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _extends({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n this.tip = popperData.instance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $(tip).removeClass(CLASS_NAME_FADE$2);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.5.1';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _extends({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '' + '' + '' + ''\n });\n\n var DefaultType$5 = _extends({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var CLASS_NAME_FADE$3 = 'fade';\n var CLASS_NAME_SHOW$5 = 'show';\n var SELECTOR_TITLE = '.popover-header';\n var SELECTOR_CONTENT = '.popover-body';\n var Event$1 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover = /*#__PURE__*/function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(SELECTOR_CONTENT), content);\n $tip.removeClass(CLASS_NAME_FADE$3 + \" \" + CLASS_NAME_SHOW$5);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$1;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.5.1';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var EVENT_ACTIVATE = \"activate\" + EVENT_KEY$8;\n var EVENT_SCROLL = \"scroll\" + EVENT_KEY$8;\n var EVENT_LOAD_DATA_API$2 = \"load\" + EVENT_KEY$8 + DATA_API_KEY$6;\n var CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n var CLASS_NAME_ACTIVE$2 = 'active';\n var SELECTOR_DATA_SPY = '[data-spy=\"scroll\"]';\n var SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n var SELECTOR_NAV_LINKS = '.nav-link';\n var SELECTOR_NAV_ITEMS = '.nav-item';\n var SELECTOR_LIST_ITEMS = '.list-group-item';\n var SELECTOR_DROPDOWN = '.dropdown';\n var SELECTOR_DROPDOWN_ITEMS = '.dropdown-item';\n var SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n var METHOD_OFFSET = 'offset';\n var METHOD_POSITION = 'position';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy = /*#__PURE__*/function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + SELECTOR_NAV_LINKS + \",\" + (this._config.target + \" \" + SELECTOR_LIST_ITEMS + \",\") + (this._config.target + \" \" + SELECTOR_DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(EVENT_SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$6, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string' && Util.isElement(config.target)) {\n var id = $(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n for (var i = this._offsets.length; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {\n $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE$2);\n $link.addClass(CLASS_NAME_ACTIVE$2);\n } else {\n // Set triggered link as active\n $link.addClass(CLASS_NAME_ACTIVE$2); // Set triggered links parents as active\n // With both and markup a parent is the previous sibling of any nav ancestor\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + \", \" + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE$2); // Handle special case when .nav-link is inside .nav-item\n\n $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE$2);\n }\n\n $(this._scrollElement).trigger(EVENT_ACTIVATE, {\n relatedTarget: target\n });\n };\n\n _proto._clear = function _clear() {\n [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {\n return node.classList.contains(CLASS_NAME_ACTIVE$2);\n }).forEach(function (node) {\n return node.classList.remove(CLASS_NAME_ACTIVE$2);\n });\n } // Static\n ;\n\n ScrollSpy._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$8);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new ScrollSpy(this, _config);\n $(this).data(DATA_KEY$8, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(ScrollSpy, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$8;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$6;\n }\n }]);\n\n return ScrollSpy;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(window).on(EVENT_LOAD_DATA_API$2, function () {\n var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));\n var scrollSpysLength = scrollSpys.length;\n\n for (var i = scrollSpysLength; i--;) {\n var $spy = $(scrollSpys[i]);\n\n ScrollSpy._jQueryInterface.call($spy, $spy.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$8] = ScrollSpy._jQueryInterface;\n $.fn[NAME$8].Constructor = ScrollSpy;\n\n $.fn[NAME$8].noConflict = function () {\n $.fn[NAME$8] = JQUERY_NO_CONFLICT$8;\n return ScrollSpy._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$9 = 'tab';\n var VERSION$9 = '4.5.1';\n var DATA_KEY$9 = 'bs.tab';\n var EVENT_KEY$9 = \".\" + DATA_KEY$9;\n var DATA_API_KEY$7 = '.data-api';\n var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9];\n var EVENT_HIDE$3 = \"hide\" + EVENT_KEY$9;\n var EVENT_HIDDEN$3 = \"hidden\" + EVENT_KEY$9;\n var EVENT_SHOW$3 = \"show\" + EVENT_KEY$9;\n var EVENT_SHOWN$3 = \"shown\" + EVENT_KEY$9;\n var EVENT_CLICK_DATA_API$6 = \"click\" + EVENT_KEY$9 + DATA_API_KEY$7;\n var CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n var CLASS_NAME_ACTIVE$3 = 'active';\n var CLASS_NAME_DISABLED$1 = 'disabled';\n var CLASS_NAME_FADE$4 = 'fade';\n var CLASS_NAME_SHOW$6 = 'show';\n var SELECTOR_DROPDOWN$1 = '.dropdown';\n var SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n var SELECTOR_ACTIVE$2 = '.active';\n var SELECTOR_ACTIVE_UL = '> li > .active';\n var SELECTOR_DATA_TOGGLE$4 = '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]';\n var SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n var SELECTOR_DROPDOWN_ACTIVE_CHILD = '> .dropdown-menu .active';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tab = /*#__PURE__*/function () {\n function Tab(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Tab.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(CLASS_NAME_ACTIVE$3) || $(this._element).hasClass(CLASS_NAME_DISABLED$1)) {\n return;\n }\n\n var target;\n var previous;\n var listElement = $(this._element).closest(SELECTOR_NAV_LIST_GROUP$1)[0];\n var selector = Util.getSelectorFromElement(this._element);\n\n if (listElement) {\n var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE$2;\n previous = $.makeArray($(listElement).find(itemSelector));\n previous = previous[previous.length - 1];\n }\n\n var hideEvent = $.Event(EVENT_HIDE$3, {\n relatedTarget: this._element\n });\n var showEvent = $.Event(EVENT_SHOW$3, {\n relatedTarget: previous\n });\n\n if (previous) {\n $(previous).trigger(hideEvent);\n }\n\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n this._activate(this._element, listElement);\n\n var complete = function complete() {\n var hiddenEvent = $.Event(EVENT_HIDDEN$3, {\n relatedTarget: _this._element\n });\n var shownEvent = $.Event(EVENT_SHOWN$3, {\n relatedTarget: previous\n });\n $(previous).trigger(hiddenEvent);\n $(_this._element).trigger(shownEvent);\n };\n\n if (target) {\n this._activate(target, target.parentNode, complete);\n } else {\n complete();\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$9);\n this._element = null;\n } // Private\n ;\n\n _proto._activate = function _activate(element, container, callback) {\n var _this2 = this;\n\n var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(SELECTOR_ACTIVE_UL) : $(container).children(SELECTOR_ACTIVE$2);\n var active = activeElements[0];\n var isTransitioning = callback && active && $(active).hasClass(CLASS_NAME_FADE$4);\n\n var complete = function complete() {\n return _this2._transitionComplete(element, active, callback);\n };\n\n if (active && isTransitioning) {\n var transitionDuration = Util.getTransitionDurationFromElement(active);\n $(active).removeClass(CLASS_NAME_SHOW$6).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._transitionComplete = function _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(CLASS_NAME_ACTIVE$3);\n var dropdownChild = $(active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(CLASS_NAME_ACTIVE$3);\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false);\n }\n }\n\n $(element).addClass(CLASS_NAME_ACTIVE$3);\n\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true);\n }\n\n Util.reflow(element);\n\n if (element.classList.contains(CLASS_NAME_FADE$4)) {\n element.classList.add(CLASS_NAME_SHOW$6);\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(CLASS_NAME_DROPDOWN_MENU)) {\n var dropdownElement = $(element).closest(SELECTOR_DROPDOWN$1)[0];\n\n if (dropdownElement) {\n var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE$1));\n $(dropdownToggleList).addClass(CLASS_NAME_ACTIVE$3);\n }\n\n element.setAttribute('aria-expanded', true);\n }\n\n if (callback) {\n callback();\n }\n } // Static\n ;\n\n Tab._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$9);\n\n if (!data) {\n data = new Tab(this);\n $this.data(DATA_KEY$9, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tab, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$9;\n }\n }]);\n\n return Tab;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$4, function (event) {\n event.preventDefault();\n\n Tab._jQueryInterface.call($(this), 'show');\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$9] = Tab._jQueryInterface;\n $.fn[NAME$9].Constructor = Tab;\n\n $.fn[NAME$9].noConflict = function () {\n $.fn[NAME$9] = JQUERY_NO_CONFLICT$9;\n return Tab._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$a = 'toast';\n var VERSION$a = '4.5.1';\n var DATA_KEY$a = 'bs.toast';\n var EVENT_KEY$a = \".\" + DATA_KEY$a;\n var JQUERY_NO_CONFLICT$a = $.fn[NAME$a];\n var EVENT_CLICK_DISMISS$1 = \"click.dismiss\" + EVENT_KEY$a;\n var EVENT_HIDE$4 = \"hide\" + EVENT_KEY$a;\n var EVENT_HIDDEN$4 = \"hidden\" + EVENT_KEY$a;\n var EVENT_SHOW$4 = \"show\" + EVENT_KEY$a;\n var EVENT_SHOWN$4 = \"shown\" + EVENT_KEY$a;\n var CLASS_NAME_FADE$5 = 'fade';\n var CLASS_NAME_HIDE = 'hide';\n var CLASS_NAME_SHOW$7 = 'show';\n var CLASS_NAME_SHOWING = 'showing';\n var DefaultType$7 = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number'\n };\n var Default$7 = {\n animation: true,\n autohide: true,\n delay: 500\n };\n var SELECTOR_DATA_DISMISS$1 = '[data-dismiss=\"toast\"]';\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Toast = /*#__PURE__*/function () {\n function Toast(element, config) {\n this._element = element;\n this._config = this._getConfig(config);\n this._timeout = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Toast.prototype;\n\n // Public\n _proto.show = function show() {\n var _this = this;\n\n var showEvent = $.Event(EVENT_SHOW$4);\n $(this._element).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._clearTimeout();\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE$5);\n }\n\n var complete = function complete() {\n _this._element.classList.remove(CLASS_NAME_SHOWING);\n\n _this._element.classList.add(CLASS_NAME_SHOW$7);\n\n $(_this._element).trigger(EVENT_SHOWN$4);\n\n if (_this._config.autohide) {\n _this._timeout = setTimeout(function () {\n _this.hide();\n }, _this._config.delay);\n }\n };\n\n this._element.classList.remove(CLASS_NAME_HIDE);\n\n Util.reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOWING);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto.hide = function hide() {\n if (!this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n return;\n }\n\n var hideEvent = $.Event(EVENT_HIDE$4);\n $(this._element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._close();\n };\n\n _proto.dispose = function dispose() {\n this._clearTimeout();\n\n if (this._element.classList.contains(CLASS_NAME_SHOW$7)) {\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n }\n\n $(this._element).off(EVENT_CLICK_DISMISS$1);\n $.removeData(this._element, DATA_KEY$a);\n this._element = null;\n this._config = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _extends({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {});\n Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._setListeners = function _setListeners() {\n var _this2 = this;\n\n $(this._element).on(EVENT_CLICK_DISMISS$1, SELECTOR_DATA_DISMISS$1, function () {\n return _this2.hide();\n });\n };\n\n _proto._close = function _close() {\n var _this3 = this;\n\n var complete = function complete() {\n _this3._element.classList.add(CLASS_NAME_HIDE);\n\n $(_this3._element).trigger(EVENT_HIDDEN$4);\n };\n\n this._element.classList.remove(CLASS_NAME_SHOW$7);\n\n if (this._config.animation) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n };\n\n _proto._clearTimeout = function _clearTimeout() {\n clearTimeout(this._timeout);\n this._timeout = null;\n } // Static\n ;\n\n Toast._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY$a);\n\n var _config = typeof config === 'object' && config;\n\n if (!data) {\n data = new Toast(this, _config);\n $element.data(DATA_KEY$a, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](this);\n }\n });\n };\n\n _createClass(Toast, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$a;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$7;\n }\n }]);\n\n return Toast;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$a] = Toast._jQueryInterface;\n $.fn[NAME$a].Constructor = Toast;\n\n $.fn[NAME$a].noConflict = function () {\n $.fn[NAME$a] = JQUERY_NO_CONFLICT$a;\n return Toast._jQueryInterface;\n };\n\n exports.Alert = Alert;\n exports.Button = Button;\n exports.Carousel = Carousel;\n exports.Collapse = Collapse;\n exports.Dropdown = Dropdown;\n exports.Modal = Modal;\n exports.Popover = Popover;\n exports.Scrollspy = ScrollSpy;\n exports.Tab = Tab;\n exports.Toast = Toast;\n exports.Tooltip = Tooltip;\n exports.Util = Util;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=bootstrap.js.map\n","/*!\n * Lightbox for Bootstrap by @ashleydw\n * https://github.com/ashleydw/lightbox\n *\n * License: https://github.com/ashleydw/lightbox/blob/master/LICENSE\n */\n+function ($) {\n\n'use strict';\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nvar Lightbox = (function ($) {\n\n\tvar NAME = 'ekkoLightbox';\n\tvar JQUERY_NO_CONFLICT = $.fn[NAME];\n\n\tvar Default = {\n\t\ttitle: '',\n\t\tfooter: '',\n\t\tmaxWidth: 9999,\n\t\tmaxHeight: 9999,\n\t\tshowArrows: true, //display the left / right arrows or not\n\t\twrapping: true, //if true, gallery loops infinitely\n\t\ttype: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it\n\t\talwaysShowClose: false, //always show the close button, even if there is no title\n\t\tloadingMessage: '', // http://tobiasahlin.com/spinkit/\n\t\tleftArrow: '❮',\n\t\trightArrow: '❯',\n\t\tstrings: {\n\t\t\tclose: 'Close',\n\t\t\tfail: 'Failed to load image:',\n\t\t\ttype: 'Could not detect remote target type. Force the type using data-type'\n\t\t},\n\t\tdoc: document, // if in an iframe can specify top.document\n\t\tonShow: function onShow() {},\n\t\tonShown: function onShown() {},\n\t\tonHide: function onHide() {},\n\t\tonHidden: function onHidden() {},\n\t\tonNavigate: function onNavigate() {},\n\t\tonContentLoaded: function onContentLoaded() {}\n\t};\n\n\tvar Lightbox = (function () {\n\t\t_createClass(Lightbox, null, [{\n\t\t\tkey: 'Default',\n\n\t\t\t/**\n Class properties:\n \t _$element: null -> the element currently being displayed\n _$modal: The bootstrap modal generated\n _$modalDialog: The .modal-dialog\n _$modalContent: The .modal-content\n _$modalBody: The .modal-body\n _$modalHeader: The .modal-header\n _$modalFooter: The .modal-footer\n _$lightboxContainerOne: Container of the first lightbox element\n _$lightboxContainerTwo: Container of the second lightbox element\n _$lightboxBody: First element in the container\n _$modalArrows: The overlayed arrows container\n \t _$galleryItems: Other 's available for this gallery\n _galleryName: Name of the current data('gallery') showing\n _galleryIndex: The current index of the _$galleryItems being shown\n \t _config: {} the options for the modal\n _modalId: unique id for the current lightbox\n _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content\n \t */\n\n\t\t\tget: function get() {\n\t\t\t\treturn Default;\n\t\t\t}\n\t\t}]);\n\n\t\tfunction Lightbox($element, config) {\n\t\t\tvar _this = this;\n\n\t\t\t_classCallCheck(this, Lightbox);\n\n\t\t\tthis._config = $.extend({}, Default, config);\n\t\t\tthis._$modalArrows = null;\n\t\t\tthis._galleryIndex = 0;\n\t\t\tthis._galleryName = null;\n\t\t\tthis._padding = null;\n\t\t\tthis._border = null;\n\t\t\tthis._titleIsShown = false;\n\t\t\tthis._footerIsShown = false;\n\t\t\tthis._wantedWidth = 0;\n\t\t\tthis._wantedHeight = 0;\n\t\t\tthis._touchstartX = 0;\n\t\t\tthis._touchendX = 0;\n\n\t\t\tthis._modalId = 'ekkoLightbox-' + Math.floor(Math.random() * 1000 + 1);\n\t\t\tthis._$element = $element instanceof jQuery ? $element : $($element);\n\n\t\t\tthis._isBootstrap3 = $.fn.modal.Constructor.VERSION[0] == 3;\n\n\t\t\tvar h4 = '' + (this._config.title || \" \") + '';\n\t\t\tvar btn = '×';\n\n\t\t\tvar header = '' + (this._isBootstrap3 ? btn + h4 : h4 + btn) + '';\n\t\t\tvar footer = '';\n\t\t\tvar body = '';\n\t\t\tvar dialog = '' + header + body + footer + '';\n\t\t\t$(this._config.doc.body).append('' + dialog + '');\n\n\t\t\tthis._$modal = $('#' + this._modalId, this._config.doc);\n\t\t\tthis._$modalDialog = this._$modal.find('.modal-dialog').first();\n\t\t\tthis._$modalContent = this._$modal.find('.modal-content').first();\n\t\t\tthis._$modalBody = this._$modal.find('.modal-body').first();\n\t\t\tthis._$modalHeader = this._$modal.find('.modal-header').first();\n\t\t\tthis._$modalFooter = this._$modal.find('.modal-footer').first();\n\n\t\t\tthis._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first();\n\t\t\tthis._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first();\n\t\t\tthis._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first();\n\n\t\t\tthis._border = this._calculateBorders();\n\t\t\tthis._padding = this._calculatePadding();\n\n\t\t\tthis._galleryName = this._$element.data('gallery');\n\t\t\tif (this._galleryName) {\n\t\t\t\tthis._$galleryItems = $(document.body).find('*[data-gallery=\"' + this._galleryName + '\"]');\n\t\t\t\tthis._galleryIndex = this._$galleryItems.index(this._$element);\n\t\t\t\t$(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this));\n\n\t\t\t\t// add the directional arrows to the modal\n\t\t\t\tif (this._config.showArrows && this._$galleryItems.length > 1) {\n\t\t\t\t\tthis._$lightboxContainer.append('' + this._config.leftArrow + '' + this._config.rightArrow + '');\n\t\t\t\t\tthis._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first();\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:first-child', function (event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn _this.navigateLeft();\n\t\t\t\t\t});\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:last-child', function (event) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn _this.navigateRight();\n\t\t\t\t\t});\n\t\t\t\t\tthis.updateNavigation();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._$modal.on('show.bs.modal', this._config.onShow.bind(this)).on('shown.bs.modal', function () {\n\t\t\t\t_this._toggleLoading(true);\n\t\t\t\t_this._handle();\n\t\t\t\treturn _this._config.onShown.call(_this);\n\t\t\t}).on('hide.bs.modal', this._config.onHide.bind(this)).on('hidden.bs.modal', function () {\n\t\t\t\tif (_this._galleryName) {\n\t\t\t\t\t$(document).off('keydown.ekkoLightbox');\n\t\t\t\t\t$(window).off('resize.ekkoLightbox');\n\t\t\t\t}\n\t\t\t\t_this._$modal.remove();\n\t\t\t\treturn _this._config.onHidden.call(_this);\n\t\t\t}).modal(this._config);\n\n\t\t\t$(window).on('resize.ekkoLightbox', function () {\n\t\t\t\t_this._resize(_this._wantedWidth, _this._wantedHeight);\n\t\t\t});\n\t\t\tthis._$lightboxContainer.on('touchstart', function () {\n\t\t\t\t_this._touchstartX = event.changedTouches[0].screenX;\n\t\t\t}).on('touchend', function () {\n\t\t\t\t_this._touchendX = event.changedTouches[0].screenX;\n\t\t\t\t_this._swipeGesure();\n\t\t\t});\n\t\t}\n\n\t\t_createClass(Lightbox, [{\n\t\t\tkey: 'element',\n\t\t\tvalue: function element() {\n\t\t\t\treturn this._$element;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'modal',\n\t\t\tvalue: function modal() {\n\t\t\t\treturn this._$modal;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'navigateTo',\n\t\t\tvalue: function navigateTo(index) {\n\n\t\t\t\tif (index < 0 || index > this._$galleryItems.length - 1) return this;\n\n\t\t\t\tthis._galleryIndex = index;\n\n\t\t\t\tthis.updateNavigation();\n\n\t\t\t\tthis._$element = $(this._$galleryItems.get(this._galleryIndex));\n\t\t\t\tthis._handle();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'navigateLeft',\n\t\t\tvalue: function navigateLeft() {\n\n\t\t\t\tif (!this._$galleryItems) return;\n\n\t\t\t\tif (this._$galleryItems.length === 1) return;\n\n\t\t\t\tif (this._galleryIndex === 0) {\n\t\t\t\t\tif (this._config.wrapping) this._galleryIndex = this._$galleryItems.length - 1;else return;\n\t\t\t\t} else //circular\n\t\t\t\t\tthis._galleryIndex--;\n\n\t\t\t\tthis._config.onNavigate.call(this, 'left', this._galleryIndex);\n\t\t\t\treturn this.navigateTo(this._galleryIndex);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'navigateRight',\n\t\t\tvalue: function navigateRight() {\n\n\t\t\t\tif (!this._$galleryItems) return;\n\n\t\t\t\tif (this._$galleryItems.length === 1) return;\n\n\t\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1) {\n\t\t\t\t\tif (this._config.wrapping) this._galleryIndex = 0;else return;\n\t\t\t\t} else //circular\n\t\t\t\t\tthis._galleryIndex++;\n\n\t\t\t\tthis._config.onNavigate.call(this, 'right', this._galleryIndex);\n\t\t\t\treturn this.navigateTo(this._galleryIndex);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'updateNavigation',\n\t\t\tvalue: function updateNavigation() {\n\t\t\t\tif (!this._config.wrapping) {\n\t\t\t\t\tvar $nav = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay');\n\t\t\t\t\tif (this._galleryIndex === 0) $nav.find('a:first-child').addClass('disabled');else $nav.find('a:first-child').removeClass('disabled');\n\n\t\t\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1) $nav.find('a:last-child').addClass('disabled');else $nav.find('a:last-child').removeClass('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: 'close',\n\t\t\tvalue: function close() {\n\t\t\t\treturn this._$modal.modal('hide');\n\t\t\t}\n\n\t\t\t// helper private methods\n\t\t}, {\n\t\t\tkey: '_navigationalBinder',\n\t\t\tvalue: function _navigationalBinder(event) {\n\t\t\t\tevent = event || window.event;\n\t\t\t\tif (event.keyCode === 39) return this.navigateRight();\n\t\t\t\tif (event.keyCode === 37) return this.navigateLeft();\n\t\t\t}\n\n\t\t\t// type detection private methods\n\t\t}, {\n\t\t\tkey: '_detectRemoteType',\n\t\t\tvalue: function _detectRemoteType(src, type) {\n\n\t\t\t\ttype = type || false;\n\n\t\t\t\tif (!type && this._isImage(src)) type = 'image';\n\t\t\t\tif (!type && this._getYoutubeId(src)) type = 'youtube';\n\t\t\t\tif (!type && this._getVimeoId(src)) type = 'vimeo';\n\t\t\t\tif (!type && this._getInstagramId(src)) type = 'instagram';\n\n\t\t\t\tif (!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0) type = 'url';\n\n\t\t\t\treturn type;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_isImage',\n\t\t\tvalue: function _isImage(string) {\n\t\t\t\treturn string && string.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_containerToUse',\n\t\t\tvalue: function _containerToUse() {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\t// if currently showing an image, fade it out and remove\n\t\t\t\tvar $toUse = this._$lightboxBodyTwo;\n\t\t\t\tvar $current = this._$lightboxBodyOne;\n\n\t\t\t\tif (this._$lightboxBodyTwo.hasClass('in')) {\n\t\t\t\t\t$toUse = this._$lightboxBodyOne;\n\t\t\t\t\t$current = this._$lightboxBodyTwo;\n\t\t\t\t}\n\n\t\t\t\t$current.removeClass('in show');\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tif (!_this2._$lightboxBodyTwo.hasClass('in')) _this2._$lightboxBodyTwo.empty();\n\t\t\t\t\tif (!_this2._$lightboxBodyOne.hasClass('in')) _this2._$lightboxBodyOne.empty();\n\t\t\t\t}, 500);\n\n\t\t\t\t$toUse.addClass('in show');\n\t\t\t\treturn $toUse;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_handle',\n\t\t\tvalue: function _handle() {\n\n\t\t\t\tvar $toUse = this._containerToUse();\n\t\t\t\tthis._updateTitleAndFooter();\n\n\t\t\t\tvar currentRemote = this._$element.attr('data-remote') || this._$element.attr('href');\n\t\t\t\tvar currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false);\n\n\t\t\t\tif (['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0) return this._error(this._config.strings.type);\n\n\t\t\t\tswitch (currentType) {\n\t\t\t\t\tcase 'image':\n\t\t\t\t\t\tthis._preloadImage(currentRemote, $toUse);\n\t\t\t\t\t\tthis._preloadImageByIndex(this._galleryIndex, 3);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'youtube':\n\t\t\t\t\t\tthis._showYoutubeVideo(currentRemote, $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'vimeo':\n\t\t\t\t\t\tthis._showVimeoVideo(this._getVimeoId(currentRemote), $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'instagram':\n\t\t\t\t\t\tthis._showInstagramVideo(this._getInstagramId(currentRemote), $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'video':\n\t\t\t\t\t\tthis._showHtml5Video(currentRemote, $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t// url\n\t\t\t\t\t\tthis._loadRemoteContent(currentRemote, $toUse);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_getYoutubeId',\n\t\t\tvalue: function _getYoutubeId(string) {\n\t\t\t\tif (!string) return false;\n\t\t\t\tvar matches = string.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/);\n\t\t\t\treturn matches && matches[2].length === 11 ? matches[2] : false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_getVimeoId',\n\t\t\tvalue: function _getVimeoId(string) {\n\t\t\t\treturn string && string.indexOf('vimeo') > 0 ? string : false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_getInstagramId',\n\t\t\tvalue: function _getInstagramId(string) {\n\t\t\t\treturn string && string.indexOf('instagram') > 0 ? string : false;\n\t\t\t}\n\n\t\t\t// layout private methods\n\t\t}, {\n\t\t\tkey: '_toggleLoading',\n\t\t\tvalue: function _toggleLoading(show) {\n\t\t\t\tshow = show || false;\n\t\t\t\tif (show) {\n\t\t\t\t\tthis._$modalDialog.css('display', 'none');\n\t\t\t\t\tthis._$modal.removeClass('in show');\n\t\t\t\t\t$('.modal-backdrop').append(this._config.loadingMessage);\n\t\t\t\t} else {\n\t\t\t\t\tthis._$modalDialog.css('display', 'block');\n\t\t\t\t\tthis._$modal.addClass('in show');\n\t\t\t\t\t$('.modal-backdrop').find('.ekko-lightbox-loader').remove();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_calculateBorders',\n\t\t\tvalue: function _calculateBorders() {\n\t\t\t\treturn {\n\t\t\t\t\ttop: this._totalCssByAttribute('border-top-width'),\n\t\t\t\t\tright: this._totalCssByAttribute('border-right-width'),\n\t\t\t\t\tbottom: this._totalCssByAttribute('border-bottom-width'),\n\t\t\t\t\tleft: this._totalCssByAttribute('border-left-width')\n\t\t\t\t};\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_calculatePadding',\n\t\t\tvalue: function _calculatePadding() {\n\t\t\t\treturn {\n\t\t\t\t\ttop: this._totalCssByAttribute('padding-top'),\n\t\t\t\t\tright: this._totalCssByAttribute('padding-right'),\n\t\t\t\t\tbottom: this._totalCssByAttribute('padding-bottom'),\n\t\t\t\t\tleft: this._totalCssByAttribute('padding-left')\n\t\t\t\t};\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_totalCssByAttribute',\n\t\t\tvalue: function _totalCssByAttribute(attribute) {\n\t\t\t\treturn parseInt(this._$modalDialog.css(attribute), 10) + parseInt(this._$modalContent.css(attribute), 10) + parseInt(this._$modalBody.css(attribute), 10);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_updateTitleAndFooter',\n\t\t\tvalue: function _updateTitleAndFooter() {\n\t\t\t\tvar title = this._$element.data('title') || \"\";\n\t\t\t\tvar caption = this._$element.data('footer') || \"\";\n\n\t\t\t\tthis._titleIsShown = false;\n\t\t\t\tif (title || this._config.alwaysShowClose) {\n\t\t\t\t\tthis._titleIsShown = true;\n\t\t\t\t\tthis._$modalHeader.css('display', '').find('.modal-title').html(title || \" \");\n\t\t\t\t} else this._$modalHeader.css('display', 'none');\n\n\t\t\t\tthis._footerIsShown = false;\n\t\t\t\tif (caption) {\n\t\t\t\t\tthis._footerIsShown = true;\n\t\t\t\t\tthis._$modalFooter.css('display', '').html(caption);\n\t\t\t\t} else this._$modalFooter.css('display', 'none');\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showYoutubeVideo',\n\t\t\tvalue: function _showYoutubeVideo(remote, $containerForElement) {\n\t\t\t\tvar id = this._getYoutubeId(remote);\n\t\t\t\tvar query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : '';\n\t\t\t\tvar width = this._$element.data('width') || 560;\n\t\t\t\tvar height = this._$element.data('height') || width / (560 / 315);\n\t\t\t\treturn this._showVideoIframe('//www.youtube.com/embed/' + id + '?badge=0&autoplay=1&html5=1' + query, width, height, $containerForElement);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showVimeoVideo',\n\t\t\tvalue: function _showVimeoVideo(id, $containerForElement) {\n\t\t\t\tvar width = this._$element.data('width') || 500;\n\t\t\t\tvar height = this._$element.data('height') || width / (560 / 315);\n\t\t\t\treturn this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showInstagramVideo',\n\t\t\tvalue: function _showInstagramVideo(id, $containerForElement) {\n\t\t\t\t// instagram load their content into iframe's so this can be put straight into the element\n\t\t\t\tvar width = this._$element.data('width') || 612;\n\t\t\t\tvar height = width + 80;\n\t\t\t\tid = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash\n\t\t\t\t$containerForElement.html('');\n\t\t\t\tthis._resize(width, height);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\tif (this._$modalArrows) //hide the arrows when showing video\n\t\t\t\t\tthis._$modalArrows.css('display', 'none');\n\t\t\t\tthis._toggleLoading(false);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showVideoIframe',\n\t\t\tvalue: function _showVideoIframe(url, width, height, $containerForElement) {\n\t\t\t\t// should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\t\theight = height || width; // default to square\n\t\t\t\t$containerForElement.html('');\n\t\t\t\tthis._resize(width, height);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\tif (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\t\tthis._toggleLoading(false);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_showHtml5Video',\n\t\t\tvalue: function _showHtml5Video(url, $containerForElement) {\n\t\t\t\t// should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\t\tvar width = this._$element.data('width') || 560;\n\t\t\t\tvar height = this._$element.data('height') || width / (560 / 315);\n\t\t\t\t$containerForElement.html('');\n\t\t\t\tthis._resize(width, height);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\tif (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\t\tthis._toggleLoading(false);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_loadRemoteContent',\n\t\t\tvalue: function _loadRemoteContent(url, $containerForElement) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar width = this._$element.data('width') || 560;\n\t\t\t\tvar height = this._$element.data('height') || 560;\n\n\t\t\t\tvar disableExternalCheck = this._$element.data('disableExternalCheck') || false;\n\t\t\t\tthis._toggleLoading(false);\n\n\t\t\t\t// external urls are loading into an iframe\n\t\t\t\t// local ajax can be loaded into the container itself\n\t\t\t\tif (!disableExternalCheck && !this._isExternal(url)) {\n\t\t\t\t\t$containerForElement.load(url, $.proxy(function () {\n\t\t\t\t\t\treturn _this3._$element.trigger('loaded.bs.modal');l;\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\t$containerForElement.html('');\n\t\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t\t}\n\n\t\t\t\tif (this._$modalArrows) //hide the arrows when remote content\n\t\t\t\t\tthis._$modalArrows.css('display', 'none');\n\n\t\t\t\tthis._resize(width, height);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_isExternal',\n\t\t\tvalue: function _isExternal(url) {\n\t\t\t\tvar match = url.match(/^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/);\n\t\t\t\tif (typeof match[1] === \"string\" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) return true;\n\n\t\t\t\tif (typeof match[2] === \"string\" && match[2].length > 0 && match[2].replace(new RegExp(':(' + ({\n\t\t\t\t\t\"http:\": 80,\n\t\t\t\t\t\"https:\": 443\n\t\t\t\t})[location.protocol] + ')?$'), \"\") !== location.host) return true;\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_error',\n\t\t\tvalue: function _error(message) {\n\t\t\t\tconsole.error(message);\n\t\t\t\tthis._containerToUse().html(message);\n\t\t\t\tthis._resize(300, 300);\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_preloadImageByIndex',\n\t\t\tvalue: function _preloadImageByIndex(startIndex, numberOfTimes) {\n\n\t\t\t\tif (!this._$galleryItems) return;\n\n\t\t\t\tvar next = $(this._$galleryItems.get(startIndex), false);\n\t\t\t\tif (typeof next == 'undefined') return;\n\n\t\t\t\tvar src = next.attr('data-remote') || next.attr('href');\n\t\t\t\tif (next.attr('data-type') === 'image' || this._isImage(src)) this._preloadImage(src, false);\n\n\t\t\t\tif (numberOfTimes > 0) return this._preloadImageByIndex(startIndex + 1, numberOfTimes - 1);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_preloadImage',\n\t\t\tvalue: function _preloadImage(src, $containerForImage) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\t$containerForImage = $containerForImage || false;\n\n\t\t\t\tvar img = new Image();\n\t\t\t\tif ($containerForImage) {\n\t\t\t\t\t(function () {\n\n\t\t\t\t\t\t// if loading takes > 200ms show a loader\n\t\t\t\t\t\tvar loadingTimeout = setTimeout(function () {\n\t\t\t\t\t\t\t$containerForImage.append(_this4._config.loadingMessage);\n\t\t\t\t\t\t}, 200);\n\n\t\t\t\t\t\timg.onload = function () {\n\t\t\t\t\t\t\tif (loadingTimeout) clearTimeout(loadingTimeout);\n\t\t\t\t\t\t\tloadingTimeout = null;\n\t\t\t\t\t\t\tvar image = $('');\n\t\t\t\t\t\t\timage.attr('src', img.src);\n\t\t\t\t\t\t\timage.addClass('img-fluid');\n\n\t\t\t\t\t\t\t// backward compatibility for bootstrap v3\n\t\t\t\t\t\t\timage.css('width', '100%');\n\n\t\t\t\t\t\t\t$containerForImage.html(image);\n\t\t\t\t\t\t\tif (_this4._$modalArrows) _this4._$modalArrows.css('display', ''); // remove display to default to css property\n\n\t\t\t\t\t\t\t_this4._resize(img.width, img.height);\n\t\t\t\t\t\t\t_this4._toggleLoading(false);\n\t\t\t\t\t\t\treturn _this4._config.onContentLoaded.call(_this4);\n\t\t\t\t\t\t};\n\t\t\t\t\t\timg.onerror = function () {\n\t\t\t\t\t\t\t_this4._toggleLoading(false);\n\t\t\t\t\t\t\treturn _this4._error(_this4._config.strings.fail + (' ' + src));\n\t\t\t\t\t\t};\n\t\t\t\t\t})();\n\t\t\t\t}\n\n\t\t\t\timg.src = src;\n\t\t\t\treturn img;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_swipeGesure',\n\t\t\tvalue: function _swipeGesure() {\n\t\t\t\tif (this._touchendX < this._touchstartX) {\n\t\t\t\t\treturn this.navigateRight();\n\t\t\t\t}\n\t\t\t\tif (this._touchendX > this._touchstartX) {\n\t\t\t\t\treturn this.navigateLeft();\n\t\t\t\t}\n\t\t\t}\n\t\t}, {\n\t\t\tkey: '_resize',\n\t\t\tvalue: function _resize(width, height) {\n\n\t\t\t\theight = height || width;\n\t\t\t\tthis._wantedWidth = width;\n\t\t\t\tthis._wantedHeight = height;\n\n\t\t\t\tvar imageAspecRatio = width / height;\n\n\t\t\t\t// if width > the available space, scale down the expected width and height\n\t\t\t\tvar widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right;\n\n\t\t\t\t// force 10px margin if window size > 575px\n\t\t\t\tvar addMargin = this._config.doc.body.clientWidth > 575 ? 20 : 0;\n\t\t\t\tvar discountMargin = this._config.doc.body.clientWidth > 575 ? 0 : 20;\n\n\t\t\t\tvar maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth - addMargin, this._config.maxWidth);\n\n\t\t\t\tif (width + widthBorderAndPadding > maxWidth) {\n\t\t\t\t\theight = (maxWidth - widthBorderAndPadding - discountMargin) / imageAspecRatio;\n\t\t\t\t\twidth = maxWidth;\n\t\t\t\t} else width = width + widthBorderAndPadding;\n\n\t\t\t\tvar headerHeight = 0,\n\t\t\t\t footerHeight = 0;\n\n\t\t\t\t// as the resize is performed the modal is show, the calculate might fail\n\t\t\t\t// if so, default to the default sizes\n\t\t\t\tif (this._footerIsShown) footerHeight = this._$modalFooter.outerHeight(true) || 55;\n\n\t\t\t\tif (this._titleIsShown) headerHeight = this._$modalHeader.outerHeight(true) || 67;\n\n\t\t\t\tvar borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top;\n\n\t\t\t\t//calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins\n\t\t\t\tvar margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom'));\n\n\t\t\t\tvar maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight, this._config.maxHeight - borderPadding - headerHeight - footerHeight);\n\n\t\t\t\tif (height > maxHeight) {\n\t\t\t\t\t// if height > the available height, scale down the width\n\t\t\t\t\twidth = Math.ceil(maxHeight * imageAspecRatio) + widthBorderAndPadding;\n\t\t\t\t}\n\n\t\t\t\tthis._$lightboxContainer.css('height', maxHeight);\n\t\t\t\tthis._$modalDialog.css('flex', 1).css('maxWidth', width);\n\n\t\t\t\tvar modal = this._$modal.data('bs.modal');\n\t\t\t\tif (modal) {\n\t\t\t\t\t// v4 method is mistakenly protected\n\t\t\t\t\ttry {\n\t\t\t\t\t\tmodal._handleUpdate();\n\t\t\t\t\t} catch (Exception) {\n\t\t\t\t\t\tmodal.handleUpdate();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}], [{\n\t\t\tkey: '_jQueryInterface',\n\t\t\tvalue: function _jQueryInterface(config) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tconfig = config || {};\n\t\t\t\treturn this.each(function () {\n\t\t\t\t\tvar $this = $(_this5);\n\t\t\t\t\tvar _config = $.extend({}, Lightbox.Default, $this.data(), typeof config === 'object' && config);\n\n\t\t\t\t\tnew Lightbox(_this5, _config);\n\t\t\t\t});\n\t\t\t}\n\t\t}]);\n\n\t\treturn Lightbox;\n\t})();\n\n\t$.fn[NAME] = Lightbox._jQueryInterface;\n\t$.fn[NAME].Constructor = Lightbox;\n\t$.fn[NAME].noConflict = function () {\n\t\t$.fn[NAME] = JQUERY_NO_CONFLICT;\n\t\treturn Lightbox._jQueryInterface;\n\t};\n\n\treturn Lightbox;\n})(jQuery);\n//# sourceMappingURL=ekko-lightbox.js.map\n\n}(jQuery);\n","// The semi-colon before the function invocation is a safety \r\n// net against concatenated scripts and/or other plugins \r\n// that are not closed properly.\r\n; (function ($, window, document, undefined) {\r\n\r\n // undefined is used here as the undefined global \r\n // variable in ECMAScript 3 and is mutable (i.e. it can \r\n // be changed by someone else). undefined isn't really \r\n // being passed in so we can ensure that its value is \r\n // truly undefined. In ES5, undefined can no longer be \r\n // modified.\r\n\r\n // window and document are passed through as local \r\n // variables rather than as globals, because this (slightly) \r\n // quickens the resolution process and can be more \r\n // efficiently minified (especially when both are \r\n // regularly referenced in your plugin).\r\n\r\n // Create the defaults once\r\n var pluginName = 'noreferrer';\r\n var defaults = {};\r\n\r\n // The actual plugin constructor\r\n function Plugin(element, options) {\r\n this.element = element;\r\n this.$element = $(element);\r\n\r\n this.options = $.extend({}, defaults, options);\r\n\r\n this._defaults = defaults;\r\n this._name = pluginName;\r\n\r\n this.init();\r\n }\r\n\r\n Plugin.prototype.init = function () {\r\n var $base = this;\r\n\r\n $('a[target=\"_blank\"],a[href^=\"http\"]', $base.$element).each(function() {\r\n var $a = $(this);\r\n\r\n var rel = $a.attr('rel');\r\n\r\n // For some browsers, `attr` is undefined; for others,\r\n // `attr` is false. Check for both.\r\n if (typeof rel !== typeof undefined && rel !== false && rel.length > 0) {\r\n return true;\r\n }\r\n \r\n $a.attr('rel', 'noreferrer');\r\n return true;\r\n });\r\n };\r\n\r\n // A really lightweight plugin wrapper around the constructor, \r\n // preventing against multiple instantiations\r\n $.fn[pluginName] = function (options) {\r\n return this.each(function () {\r\n if (!$.data(this, pluginName)) {\r\n $.data(this, pluginName, new Plugin(this, options));\r\n }\r\n });\r\n };\r\n})(jQuery, window, document);",";(function ($) {\r\n // Namespace all events.\r\n var eventNamespace = 'furilloWaitForImages';\r\n\r\n // CSS properties which contain references to images.\r\n $.furilloWaitForImages = {\r\n hasImageProperties: ['backgroundImage', 'listStyleImage', 'borderImage', 'borderCornerImage', 'cursor']\r\n };\r\n \r\n $.fn.furilloWaitForImages = function (finishedCallback) {\r\n // Ensure callbacks are functions.\r\n if (!$.isFunction(finishedCallback))\r\n throw new TypeError('An invalid callback was supplied.');\r\n\r\n return this.each(function () {\r\n // Build a list of all imgs, dependent on what images will be considered.\r\n var obj = $(this);\r\n var allImgs = [];\r\n \r\n // CSS properties which may contain an image.\r\n var hasImgProperties = $.furilloWaitForImages.hasImageProperties || [];\r\n\r\n // To match `url()` references.\r\n // Spec: http://www.w3.org/TR/CSS2/syndata.html#value-def-uri\r\n var matchUrl = /url\\(\\s*(['\"]?)(.*?)\\1\\s*\\)/g;\r\n \r\n // Get all elements (including the original), as any one of them could have a background image.\r\n obj.find('*').addBack().each(function () {\r\n var element = $(this);\r\n\r\n // We only want to calculate once, check if nested.\r\n if (element.parents('.equal-height').length > 1 && element.parents('.equal-height')[0] != obj[0])\r\n return true;\r\n\r\n // If an `img` element, add it. But keep iterating in case it has a background image too.\r\n if (element.is('img') && element.prop('src') != '') {\r\n allImgs.push({\r\n src: element.prop('src'),\r\n element: element[0]\r\n });\r\n }\r\n\r\n $.each(hasImgProperties, function (i, property) {\r\n var propertyValue = element.css(property);\r\n var match;\r\n\r\n // If it doesn't contain this property, skip.\r\n if (propertyValue === undefined || !propertyValue || propertyValue == 'none' || propertyValue == 'auto') {\r\n return true;\r\n }\r\n\r\n // Get all url() of this element.\r\n while (match = matchUrl.exec(propertyValue)) {\r\n allImgs.push({\r\n src: match[2],\r\n element: element[0]\r\n });\r\n }\r\n });\r\n });\r\n \r\n\r\n // If no images found, don't bother.\r\n if (allImgs.length === 0) {\r\n finishedCallback();\r\n }\r\n\r\n obj.addClass('eqh-tmp');\r\n obj.prop('eqh-tmp-images', allImgs.length);\r\n obj.prop('eqh-tmp-loaded', 0);\r\n \r\n $.each(allImgs, function (i, img) {\r\n\r\n var image = new Image();\r\n \r\n // Handle the image loading and error with the same callback.\r\n $(image).on('load.' + eventNamespace + ' error.' + eventNamespace, function (event) {\r\n\r\n var eqhTmp = $($(img.element).parents('.eqh-tmp')[0]);\r\n eqhTmp.prop('eqh-tmp-loaded', (eqhTmp.prop('eqh-tmp-loaded') + 1));\r\n \r\n if (eqhTmp.attr('eqh-tmp-images') == eqhTmp.attr('eqh-tmp-loaded')) {\r\n eqhTmp.removeClass('eqh-tmp');\r\n eqhTmp.removeProp('eqh-tmp-images');\r\n eqhTmp.removeProp('eqh-tmp-loaded');\r\n finishedCallback();\r\n return false;\r\n }\r\n\r\n });\r\n\r\n image.src = img.src;\r\n });\r\n });\r\n };\r\n}(jQuery));","/*\r\nCustom equal height function for Furillo Blocks within Bootstrap 3.x framwork.\r\n\r\nDependencies\r\n- jQuery 1.9.1 (or higher)\r\n- ba-resize.jquery.js\r\n*/\r\n(function ($) { \r\n $.fn.furilloEqualHeight = function (parent) {\r\n \r\n var rows = [];\r\n var setHighest = function (elements) {\r\n elements.each(function () {\r\n $(this).height('auto');\r\n });\r\n\r\n if (elements.length <= 1)\r\n return;\r\n \r\n var maxHeight = Math.max.apply(Math, $(elements).map(function () {\r\n return $(this).outerHeight();\r\n }));\r\n var height = maxHeight + 'px';\r\n elements.each(function () {\r\n $(this).outerHeight(height);\r\n });\r\n };\r\n\r\n var calculateRows = function (elements) {\r\n var parentWidth = parent.outerWidth();\r\n var currentRowWidth = 0;\r\n var currentRowElements = [];\r\n\r\n // Add a safety margin for when column widths can't be divided in to whole number \r\n // but in theory needs a decimal (e.g. 33% of container - 33.33333xx px 33.33333xx px 33.33333xx px).\r\n // Basically this is only for IE that will provide faulty widths for columns setting all to same even that it is too wide. Chrome, Safari, FireFox etc.\r\n // will create a pattern that is \"correct\" (e.g. 33 34 33). We add this safety margin for all browsers though.\r\n parentWidth += 6;\r\n\r\n elements.each(function (index, item) {\r\n var element = $(item);\r\n var colElement = element.parent();\r\n\r\n // If not visible for this resolution, skip it\r\n if (colElement.is(':hidden'))\r\n return true;\r\n\r\n currentRowWidth += colElement.outerWidth();\r\n if (currentRowWidth > parentWidth) {\r\n rows.push({ elements: currentRowElements });\r\n currentRowElements = [];\r\n currentRowWidth = colElement.outerWidth();\r\n }\r\n\r\n // Exclude certain block types from getting equal height, we need to have them in the row calculation though\r\n //if (!element.is('[class*=\"List\"],[class*=\"Accordion\"]') && !element.hasClass('no-equal-height')) {\r\n if (!element.is('[class*=\"Accordion\"]') && !element.hasClass('no-equal-height')) {\r\n currentRowElements.push(element);\r\n }\r\n\r\n if ((index + 1) == elements.length)\r\n rows.push({ elements: currentRowElements });\r\n\r\n return true;\r\n });\r\n };\r\n\r\n calculateRows($(this));\r\n\r\n for (var i = 0; i < rows.length; i++) {\r\n setHighest($(rows[i].elements));\r\n }\r\n\r\n return this;\r\n };\r\n})(jQuery);\r\n\r\n$(window).on('load', function () {\r\n \r\n var setFurilloEqualHeight = function (container) {\r\n if (!container)\r\n return;\r\n\r\n if (!(container instanceof jQuery))\r\n container = $(container.currentTarget);\r\n\r\n if (!container || !(container instanceof jQuery))\r\n return;\r\n \r\n container.each(function () {\r\n $('div.galleryItem .thumbnail', $(this)).furilloEqualHeight($(this));\r\n $('.block', $(this)).furilloEqualHeight($(this));\r\n });\r\n };\r\n\r\n var initFurilloEqualHeight = function () {\r\n $('.equal-height').each(function () {\r\n var container = $(this);\r\n \r\n container.furilloWaitForImages(function () {\r\n setFurilloEqualHeight(container);\r\n container.resize(setFurilloEqualHeight); // Makes use of ba-resize.jquery.js\r\n });\r\n });\r\n };\r\n $(window).on('resize', function() {\r\n initFurilloEqualHeight(); \r\n });\r\n initFurilloEqualHeight();\r\n});\r\n\r\n$(document).ready(function () {\r\n var makeEditorImagesResponsive = function () {\r\n $('div.accordion-body p img, div.card-block p img').addClass('img-fluid');\r\n };\r\n\r\n makeEditorImagesResponsive();\r\n});","\r\n\r\n\r\n$(document).ready(function() {\r\n\r\n var getExpiryDate = function(days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n\r\n return date.toGMTString();\r\n };\r\n\r\n var availableApartments = function () {\r\n\r\n var $wrapper = $('.ContentBlockFreeApartments');\r\n if (!$wrapper || $wrapper.length === 0)\r\n return;\r\n\r\n var $container = $('.nr-appartments-result', $wrapper);\r\n if (!$container || $container.length === 0)\r\n return;\r\n\r\n var areaId = parseInt($container.data('area'));\r\n if (isNaN(areaId))\r\n return;\r\n\r\n var getMappedAreaId = function () {\r\n var areaMapping = [\r\n { areaId: 0, name: 'Alla', mappedId: null },\r\n { areaId: 1, name: 'Handen', mappedId: 'AREA_7' },\r\n { areaId: 2, name: 'Jordbro', mappedId: 'AREA_10' },\r\n { areaId: 3, name: 'Vendels�', mappedId: 'AREA_8' },\r\n { areaId: 4, name: 'Dalar�', mappedId: 'AREA_6' },\r\n { areaId: 5, name: 'V�sterhaninge', mappedId: 'AREA_11' },\r\n { areaId: 6, name: 'Tungelsta', mappedId: 'AREA_12' },\r\n { areaId: 8, name: 'Ut�', mappedId: 'AREA_13' },\r\n { areaId: 9, name: 'Vega', mappedId: 'AREA_9' },\r\n { areaId: 10, name: 'Haninge', mappedId: 'AREA_3' },\r\n { areaId: 11, name: 'Handen - H�ggv�gen', mappedId: 'AREA_14' }\r\n ];\r\n\r\n var map = $.grep(areaMapping, function (item, index) { return item.areaId === areaId; });\r\n if (map.length === 0)\r\n return null;\r\n\r\n return map[0].mappedId;\r\n };\r\n\r\n var mappedAreaId = getMappedAreaId();\r\n var objectGroupId = parseInt($container.data('objectgroup'));\r\n\r\n // Test: https://core.vitec.net/haningebostader/portal/coreexternal/api/publishedobjects\r\n\r\n var apiUrl = 'https://portalws01.vitec.net/haningebostader/coreexternal/api/publishedobjects';\r\n if (!isNaN(objectGroupId) && objectGroupId > 0) {\r\n apiUrl = apiUrl + '/' + objectGroupId;\r\n }\r\n\r\n $.ajax({\r\n url: '/CorsProxy.aspx?' + apiUrl,\r\n dataType: 'json',\r\n success: function (data) {\r\n if (!data || data.length === 0) {\r\n return;\r\n }\r\n\r\n var count = data.length;\r\n if (mappedAreaId && mappedAreaId !== null) {\r\n count = $.grep(data, function (item, index) { return item.areaid === mappedAreaId; }).length;\r\n }\r\n\r\n $container.text(count);\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n console.log(jqXHR);\r\n console.log(textStatus);\r\n console.log(errorThrown);\r\n }\r\n });\r\n };\r\n\r\n var initMenuOverrides = function () {\r\n\r\n var $navbarToggler = $('button.navbar-toggler');\r\n var $navbar = $($navbarToggler.attr('data-target'));\r\n\r\n // When toggling menu (normally mobile menu), lookup active items\r\n // and add trigger 'show' in order to expand dropdown menus (if any)\r\n $navbarToggler.on('click.furillo', function (e) {\r\n\r\n // When desktop or when closing there's no need to run this\r\n if (!$navbarToggler.is(':visible') || $(this).attr('aria-expanded') === 'true') {\r\n return;\r\n }\r\n\r\n $('.nav-item.dropdown.active', $navbar).each(function () {\r\n $('.collapse', $(this)).first().collapse('show');\r\n });\r\n });\r\n };\r\n \r\n // Inject url to translate link\r\n var $googleTranslateLink = $('nav.navbar-main ul.top-menu a[href=\"https://translate.google.com/\"]');\r\n if ($googleTranslateLink.length > 0) {\r\n var url = 'https://translate.google.com/translate?hl=&sl=auto&tl=en&u=' + window.location.href;\r\n $googleTranslateLink.attr('href', url);\r\n }\r\n\r\n // Cookie bar\r\n $(document).on('click', '.cookies .cookies-close', function (e) {\r\n e.preventDefault();\r\n $(this).parent().hide();\r\n\r\n document.cookie = 'accepted_cookies=true; expires=' + getExpiryDate(30) + '; path=/';\r\n });\r\n\r\n // Alerts\r\n $('body > .site-wrapper > .fixed-content > .alert').on('close.bs.alert', function() {\r\n var cookieId = $(this).data('id');\r\n document.cookie = cookieId + '=true; expires=' + getExpiryDate(30) + '; path=/';\r\n });\r\n\r\n // Search\r\n $('.search-container .search-btn').on('click', function(e) {\r\n $(this).parent().submit();\r\n });\r\n\r\n $('body').noreferrer();\r\n\r\n availableApartments();\r\n initMenuOverrides();\r\n});\r\n\r\n\r\n\r\n//(function () {\r\n// 'use strict';\r\n\r\n// window.arr_weekdays = ['S�NDAG', 'M�NDAG', 'TISDAG', 'ONSDAG', 'TORSDAG', 'FREDAG', 'L�RDAG'];\r\n// window.arr_monthnames = [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"];\r\n\r\n// // GET SIZE OF WINDOW\r\n// function getSize() {\r\n// return getComputedStyle(document.body, ':before').getPropertyValue('content').replace(/['\"]+/g, '');\r\n// }\r\n\r\n// // VIEWPORT SIZE\r\n// var viewPortWidth, viewPortHeight;\r\n\r\n// function viewPortSize() {\r\n// viewPortWidth = Math.round(Math.max(document.documentElement.clientWidth, window.innerWidth || 0));\r\n// viewPortHeight = Math.round(Math.max(document.documentElement.clientHeight, window.innerHeight || 0));\r\n// }\r\n\r\n// function isEmpty(el) {\r\n// return !$.trim(el.html());\r\n// }\r\n\r\n// // Fire after first focus\r\n// $('input').blur(function () { // TODO: More robust please\r\n// $(this).addClass('focused');\r\n// });\r\n\r\n// // Check if checkboxes are checked\r\n// function checkCheckboxes(el) {\r\n// var allChecked = false;\r\n\r\n// el.parents().eq(2).find('> li').each(function () {\r\n// if (!$(this).find('input[type=checkbox]').prop('checked')) {\r\n// allChecked = false;\r\n// return false;\r\n// } else {\r\n// allChecked = true;\r\n// }\r\n// });\r\n\r\n// if (allChecked) {\r\n// el.parents().eq(3).find('> .check-box > input[type=checkbox]').prop('checked', true);\r\n\r\n// if (el.parents().eq(5).find('> .check-box > input[type=checkbox]').length) {\r\n// checkCheckboxes(el.parents().eq(3).find('> .check-box > input[type=checkbox]'));\r\n// }\r\n// }\r\n// }\r\n\r\n// // IFRAME HEIGHT\r\n// function iframeHeight() {\r\n// var tease = 115;\r\n// var showNextSection = viewPortHeight - headerHeight - tease;\r\n\r\n// $('.iframe').css('min-height', showNextSection);\r\n// }\r\n// function setGallerySizes() {\r\n// $('.gallery-img').each(function () {\r\n// var row = $(this).parents().closest('.gallery-thumb-wrapper');\r\n// var firstclass = row.children('.image-wrapper:first-child').attr('class');\r\n// var parent = $(this).parent().closest('div');\r\n// var thisclass = parent.attr('class');\r\n// if (firstclass !== thisclass) {\r\n// parent.attr('class', firstclass);\r\n// }\r\n// var width = parent.outerWidth();\r\n\r\n// $(this).attr('src', $(this).attr('src').replace('height=##', 'height=' + width).replace('width=##', 'width=' + width));\r\n// });\r\n// }\r\n// // WHERE AM I?\r\n// function whereAmI() { // TODO: Store section variables not on scroll but on resize\r\n// var sectionId = 'section-1';\r\n\r\n// $('[id^=section-]').each(function () {\r\n// var sectionPos = Math.round($(this).offset().top) - navInlineHeight;\r\n\r\n// if (sectionPos <= scrollPos) {\r\n// sectionId = $(this).attr('id');\r\n// }\r\n// });\r\n\r\n// return sectionId;\r\n// }\r\n\r\n\r\n// // CLOSE ALL SUB MENUS\r\n// function closeMenu(el) {\r\n// $(el + ' .closed').each(function () {\r\n// var subMenu = $(this).find('.sub-items');\r\n// var subMenuHeight = subMenu.outerHeight();\r\n\r\n// subMenu.css('margin-top', -subMenuHeight);\r\n// });\r\n// }\r\n// function getHeight(ratio, width) {\r\n// if (ratio === \"16by9\")\r\n// return (width / 16) * 9;\r\n// if (ratio === \"4by3\")\r\n// return (width / 4) * 3;\r\n// if (ratio === \"21by9\")\r\n// return (width / 21) * 9;\r\n// return width;\r\n// }\r\n\r\n// function getUrlVars() {\r\n// var vars = [], hash;\r\n// var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');\r\n// for (var i = 0; i < hashes.length; i++) {\r\n// hash = hashes[i].split('=');\r\n// vars.push(hash[0]);\r\n// vars[hash[0]] = hash[1];\r\n// }\r\n// return vars;\r\n// }\r\n// function getFormatedDate(date) {\r\n// var arr = date.split(\"-\");\r\n// var month = arr[0];\r\n// var day = arr[1];\r\n// var year = arr[2];\r\n// if (month.length === 1)\r\n// month = \"0\" + month;\r\n// if (day.length === 1)\r\n// day = \"0\" + day;\r\n// return year + \"-\" + month + \"-\" + day;\r\n// }\r\n// function redirect(arg) {\r\n// var clickedDate = $('span[data-date=\"' + arg + '\"]', $('.dzscalendar'));\r\n// var url = $('.dzscalendar').data('url');\r\n// if (!$(clickedDate).hasClass('hasEvent')) {\r\n// return;\r\n// }\r\n// var tag = getUrlVars()[\"caltag\"];\r\n// var date = \"\";\r\n// if (arg !== null && arg.length > 0) {\r\n// date = getFormatedDate(arg);\r\n// }\r\n// if (tag !== null && tag.length > 0) {\r\n// window.location.href = url + '?caldate=' + date + '&caltag=' + getUrlVars()[\"caltag\"];\r\n// return;\r\n// }\r\n\r\n// window.location.href = url + '?caldate=' + date;\r\n// }\r\n\r\n\r\n\r\n// viewPortSize();\r\n// var currMq = getSize();\r\n\r\n// var scrollPos;\r\n// var $body = $('body'); // TODO: Look left, no good\r\n// var $viewport = $('html, body');\r\n// // CHECK IF ELEMENTS EXISTS\r\n// var checkNavInline = $('.inline').length;\r\n// var checkIframe = $('.iframe').length;\r\n// var checkTablesaw = $('.tablesaw').length;\r\n// var checkGalleries = $('.gallery-img').length;\r\n// var checkSliders = $('.tp-banner').length;\r\n\r\n\r\n// // DOCUMENT READY\r\n// //////////////////////////////////////////////////////////////////////\r\n// $(document).ready(function () {\r\n\r\n// // CLICK EVENTS\r\n// $(document).on('click', '.photo-list .image-inner', function () {\r\n// var $this = $(this);\r\n// var imageId = $this.attr('data-image-id'); // TODO: Should be element index of collection but...\r\n// var imageName = $this.attr('data-image-src');\r\n// var module = $this.closest('.photo-list');\r\n// var images = [];\r\n// var slider = 'St�ng';\r\n\r\n// module.find('.image-inner').each(function () {\r\n// images.push($(this).attr('data-image-src'));\r\n// });\r\n\r\n// var noOfImages = images.length;\r\n\r\n// for (var i = 0; i < noOfImages; i++) {\r\n// slider += '';\r\n// }\r\n\r\n// slider += '';\r\n\r\n// $(slider).hide().appendTo('.site-wrapper').fadeIn();\r\n\r\n// $('.photo-gallery > ul').slick({\r\n// mobileFirst: true,\r\n// initialSlide: parseInt(imageId)\r\n// });\r\n\r\n\r\n// });\r\n// $('.dzscalendar').each(function () {\r\n\r\n// $(this).dzscalendar({\r\n// design_transitionDesc: 'tooltipDef',\r\n// start_weekday: 'Monday',\r\n// mode: 'datepicker'\r\n// });\r\n// document.getElementById($(this).attr('id')).arr_datepicker_events.push(redirect);\r\n// });\r\n\r\n// var appendMapData = function () {\r\n\r\n\r\n// $('div.google-map').each(function () {\r\n// var gMapMarkers = [];\r\n// var longitude = parseFloat($(this).attr('data-longitude'));\r\n// var latitude = parseFloat($(this).attr('data-latitude'));\r\n// var ratio = $(this).attr('data-ratio');\r\n// var zooms = parseFloat($(this).attr('data-zoom'));\r\n// if (isNaN(longitude) || isNaN(latitude))\r\n// return true;\r\n\r\n// var html = '';\r\n// var icon = {\r\n// iconsize: [24, 35],\r\n// iconanchor: [16, 35],\r\n// infowindowanchor: [15, 0]\r\n// };\r\n// gMapMarkers.push({\r\n// latitude: latitude,\r\n// longitude: longitude,\r\n// html: html,\r\n// icon: icon\r\n// });\r\n// if (gMapMarkers.length === 0) {\r\n// $(this).css('display', 'none');\r\n// return false;\r\n// }\r\n// $('.map-canvas').css(\"height\", getHeight(ratio, $('.map-canvas').outerWidth()));\r\n// $('.map-canvas', $(this)).gMap({\r\n// markers: gMapMarkers,\r\n// zoom: zooms,\r\n// scrollwheel: true,\r\n// maptype: 'ROADMAP',\r\n// controls: {\r\n// panControl: true,\r\n// zoomControl: true,\r\n// mapTypeControl: false,\r\n// scaleControl: false,\r\n// streetViewControl: false,\r\n// overviewMapControl: false\r\n// },\r\n// onMarkerClick: function () {\r\n\r\n// }\r\n// });\r\n\r\n// $('.map-canvas', $(this)).resize(function () {\r\n// var gmap = $('.map-canvas', $(this)).data('gMap.reference');\r\n// var bounds = $('.map-canvas', $(this)).data('gMap.bounds');\r\n\r\n// google.maps.event.trigger(gmap, 'resize');\r\n// gmap.fitBounds(bounds);\r\n// });\r\n// return true;\r\n// });\r\n\r\n\r\n// };\r\n\r\n\r\n\r\n// $(document).on('click', '.menu-open, .menu-close', function () {\r\n// window.scrollTo(0, 0);\r\n// $body.toggleClass('off-canvas-left-opened');\r\n// });\r\n\r\n\r\n// $(document).on('click', '.hidden-section .expand-section', function () {\r\n// $(this).parent().addClass('opened');\r\n// });\r\n\r\n// $(document).on('click', '.modal-open', function (e) {\r\n// e.preventDefault();\r\n// var modalName = $(this).attr('data-modal-name');\r\n\r\n// $('.modal-layer.' + modalName).fadeToggle();\r\n// });\r\n\r\n// // TODO: PROPER ACCORDION THIS!\r\n// $(document).on('click', '.accordion .closed .item-heading', function () {\r\n// var $thisLi = $(this).parent();\r\n\r\n// $thisLi.siblings('.opened').find('> .item-heading').trigger('click');\r\n// });\r\n\r\n// $(document).on('click', '.modal-layer-close, .modal-layer, .iframe-opened .overlay', function (e) {\r\n// if ($(e.target).is('.modal-layer-close, .modal-layer, .iframe-opened .overlay')) {\r\n// $(this).closest('.modal-layer').fadeOut(); // TODO: Fade toggle function\r\n// // TODO: One close function for overlays\r\n// }\r\n// });\r\n\r\n// $(document).on('click', '.search-btn', function () {\r\n// $(this).parent().submit();\r\n// });\r\n// $(document).on('click', '.toggle-search', function () {\r\n// $('.search-modal').toggleClass('closed opened');\r\n// if (currMq !== 'handheld') {\r\n// $('.overlay').css('opacity', 1);\r\n// $('.overlay').css('z-index', 7);\r\n// }\r\n// });\r\n// $(document).on('click', '.toggle-search-menu', function () {\r\n// $(this).toggleClass('icon-search icon-cancel');\r\n// $('.search-container').toggleClass('opened');\r\n// });\r\n// $(document).on('click', '.search-modal .close', function () {\r\n// $('.search-modal').toggleClass('closed opened');\r\n// });\r\n// $(document).on('click', '.iframe-close', function () {\r\n// $body.removeClass('iframe-opened');\r\n// });\r\n\r\n\r\n// // TOGGLE SUB\r\n// $(document).on('click', 'span.item-heading, h3.item-heading, h4.item-heading, h5.item-heading, .sub-menu-toggle', function (e) { // TODO: Better selector maybe?\r\n// e.preventDefault();\r\n// var parentItem = $(this).parent();\r\n// var subMenu = parentItem.children('.sub-items');\r\n\r\n// subMenu.css('position', 'relative');\r\n\r\n// if (parentItem.hasClass('opened')) {\r\n// var subMenuHeight = subMenu.outerHeight();\r\n// if (parentItem.parent().hasClass('accordion')) {\r\n// subMenuHeight = subMenuHeight + 23;\r\n// }\r\n// subMenu.css('margin-top', -subMenuHeight);\r\n// parentItem.toggleClass('opened closed');\r\n// } else {\r\n// subMenu.css('margin-top', 0);\r\n// parentItem.toggleClass('opened closed');\r\n// }\r\n// });\r\n\r\n// // CLOSE INTERACTION BY CLICKING ON OVERLAY\r\n// $('.overlay').on('click', function () {\r\n// $('body:not(.off-canvas-left-opened, .off-canvas-right-opened)').removeClass('search-opened').removeClass('suggestions-opened');\r\n// $body.removeClass('off-canvas-left-opened off-canvas-right-opened');\r\n\r\n// if ($('.flag-menu').hasClass('opened')) {\r\n// $('.flag-menu').toggleClass('closed opened');\r\n// $('.overlay').css('opacity', 0);\r\n// $('.overlay').css('z-index', '-10');\r\n// }\r\n// if ($('.search-modal').hasClass('opened')) {\r\n// $('.search-modal').toggleClass('closed opened');\r\n// $('.overlay').css('opacity', 0);\r\n// $('.overlay').css('z-index', '-10');\r\n// }\r\n// });\r\n\r\n\r\n// if (checkIframe) {\r\n// iframeHeight();\r\n// }\r\n\r\n// if (checkTablesaw) {\r\n// checkDots();\r\n// }\r\n// if (checkGalleries) {\r\n// setGallerySizes();\r\n// }\r\n// if (checkNavInline) {\r\n// $body.addClass('has-nav-inline');\r\n// }\r\n// if (checkSliders) {\r\n// $('.tp-banner').revolution();\r\n// }\r\n// if ($('div.google-map').length) {\r\n// appendMapData();\r\n// }\r\n\r\n// // TODO: Maybe refactor below?\r\n// closeMenu('.left-menu');\r\n// closeMenu('.accordion');\r\n\r\n\r\n\r\n// availableApartments();\r\n// });\r\n// // DOCUMENT ON SCROLL\r\n// //////////////////////////////////////////////////////////////////////\r\n// $(document).on('scroll', function () {\r\n// scrollPos = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;\r\n\r\n// if (checkNavInline) {\r\n// var v = whereAmI();\r\n\r\n// $('.inline li').removeClass('current');\r\n// $('.inline a[href=#' + v + ']').parent().addClass('current');\r\n// }\r\n// });\r\n\r\n\r\n\r\n// // ON RESIZE\r\n// //////////////////////////////////////////////////////////////////////\r\n// window.onresize = function () {\r\n// viewPortSize();\r\n// var newSize = getSize();\r\n// closeMenu('.left-menu');\r\n\r\n// $('.google-map').each(function () {\r\n\r\n// $('.map-canvas', $(this)).css(\"height\", getHeight($(this).data('ratio'), $(this).outerWidth()));\r\n// });\r\n\r\n// if (checkTablesaw) {\r\n// checkDots();\r\n// }\r\n// if (currMq !== 'handheld') {\r\n// $('.overlay').trigger('click');\r\n// }\r\n// // If the current media query is not the same as new size do stuff\r\n// if (currMq !== newSize) {\r\n// console.log('media query changed to: ' + newSize);\r\n\r\n// currMq = newSize;\r\n// }\r\n// $('.sub-items').each(function () {\r\n// if ($(this).parent().hasClass('closed')) {\r\n// var parentItem = $(this).parent();\r\n// var subMenuHeight = $(this).outerHeight();\r\n// if (parentItem.parent().hasClass('accordion')) {\r\n// subMenuHeight = subMenuHeight + 23;\r\n// }\r\n// $(this).css('margin-top', -(subMenuHeight));\r\n// }\r\n// });\r\n\r\n// };\r\n\r\n// //$(window)\r\n// //.on('load',\r\n// // function () {\r\n// // if ($('#momentum').length > 0) {\r\n// // $(\"#momentum\").momentumFrame({ version: 4.2, design: 'hbab', hmsDomain: 'marknad' }); \r\n// // }\r\n\r\n\r\n// // });\r\n\r\n// // KEY UP FUNCTION\r\n// //////////////////////////////////////////////////////////////////////\r\n// $(document).keyup(function (e) {\r\n// if (e.keyCode === 27) {\r\n// $('body:not(.menu-opened, .log-in-opened)').removeClass('search-opened suggestions-opened');\r\n// $body.removeClass('menu-opened log-in-opened');\r\n// }\r\n// });\r\n//}());\r\n\r\n\r\n\r\n\r\n//function isElementInViewport(el) {\r\n// //special bonus for those using jQuery\r\n// /*if (typeof jQuery === \"function\" && el instanceof jQuery) {\r\n//\t\tel = el[0];\r\n//\t}*/\r\n\r\n// var rect = el.getBoundingClientRect();\r\n\r\n// return (\r\n// rect.top >= 0 &&\r\n// //rect.left >= 0 &&\r\n// rect.top <= ((window.innerHeight || document.documentElement.clientHeight) + preloadMargin) //&& /*or $(window).height() */\r\n// //rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */\r\n// );\r\n//}\r\n\r\n//var toLoad = document.querySelectorAll('[data-image-src]');\r\n//var toLoadLength = toLoad.length;\r\n//var nextI = 0;\r\n//var preloadMargin = 200; // <- decides how far ahed we want to load images\r\n\r\n//// console.log('setting up', toLoad);\r\n//function checkImages(e) {\r\n// var currEl;\r\n\r\n// for (; nextI < toLoadLength; nextI++) {\r\n// currEl = toLoad[nextI];\r\n\r\n// if (isElementInViewport(currEl)) {\r\n// test(currEl);\r\n// } else {\r\n// //nextI--;\r\n// break;\r\n// }\r\n// }\r\n//}\r\n//function test(currEl) {\r\n// (function (el) {\r\n// var img = document.createElement('img');\r\n\r\n// img.onload = function (loadEvent) {\r\n// el.style.backgroundImage = 'url(' + this.src + ')';\r\n// el.className += ' loaded';\r\n// img = undefined;\r\n// el = undefined;\r\n// };\r\n\r\n// img.src = el.getAttribute('data-image-src');\r\n// })(currEl);\r\n//}\r\n//checkImages();\r\n//$(window).on('scroll', checkImages);\r\n\r\n"],"file":"site.js"}