{"version":3,"sources":["webpack:///webpack/bootstrap e0592bba9aec2e209f47","webpack:///external \"jQuery\"","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ssr-window/ssr-window.esm.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/dom.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/utils.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-init.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-target.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-virtual-transition-end.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-shadow.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/fizzy-ui-utils/utils.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-element-if-not-defined.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/flickity.js","webpack:///./scripts/util/helper.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-support.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEmit.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/classes-to-selector.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ev-emitter/ev-emitter.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/get-size/get-size.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/swiper.esm.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/core.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/dom7/dom7.esm.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-device.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-browser.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/resize/resize.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/observer/observer.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events-emitter.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSize.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlides.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateAutoHeight.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesOffset.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesProgress.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateProgress.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesClasses.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateActiveIndex.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateClickedSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/getTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/setTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/minTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/maxTranslate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/translateTo.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/setTransition.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionStart.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEnd.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideTo.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToLoop.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideNext.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slidePrev.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideReset.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClosest.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClickedSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopCreate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopFix.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopDestroy.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchStart.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchMove.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchEnd.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onResize.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onClick.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onScroll.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/addClasses.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/removeClasses.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/loadImage.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/preloadImages.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/check-overflow/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/defaults.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/moduleExtendParams.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/virtual/virtual.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/keyboard/keyboard.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/mousewheel/mousewheel.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/navigation/navigation.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/pagination/pagination.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/scrollbar/scrollbar.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/parallax/parallax.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/zoom/zoom.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/lazy/lazy.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/controller/controller.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/a11y/a11y.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/history/history.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/autoplay/autoplay.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/thumbs/thumbs.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/free-mode/free-mode.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/grid/grid.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/manipulation.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-fade/effect-fade.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cube/effect-cube.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-flip/effect-flip.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-creative/effect-creative.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cards/effect-cards.js","webpack:///./scripts/util/autoPadding.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unipointer/unipointer.js","webpack:///./scripts/components/alert.js","webpack:///./scripts/main.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/dist/flickity.pkgd.js","webpack:///./scripts/vendor/jquery.overlayScrollbars.js","webpack:///./scripts/vendor/jquery.txtTruncate.js","webpack:///./scripts/autoload/_bootstrap.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/bootstrap/dist/js/bootstrap.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/popper.js/dist/esm/popper.js","webpack:///(webpack)/buildin/global.js","webpack:///./scripts/util/Router.js","webpack:///./scripts/util/camelCase.js","webpack:///./scripts/routes/common.js","webpack:///./scripts/components/flexible-video.js","webpack:///./scripts/routes/home.js","webpack:///./scripts/routes/about.js","webpack:///./scripts/components/sliders/index.js","webpack:///./scripts/components/sliders/category-slider.js","webpack:///./scripts/components/sliders/product-slider.js","webpack:///./scripts/components/sliders/feature-slider.js","webpack:///./scripts/components/sliders/article-slider.js","webpack:///./scripts/components/sliders/trustbar-slider.js","webpack:///./scripts/components/sliders/quote.js","webpack:///./scripts/vendor/jquery.rateyo.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/vanilla-lazyload/dist/lazyload.min.js","webpack:///./scripts/util/plusItem.js","webpack:///./scripts/util/crossPlatform.js","webpack:///./scripts/util/ellipsis.js","webpack:///./scripts/util/backgroundSwitcher.js","webpack:///./scripts/util/articleFilter.js","webpack:///./scripts/util/lateRender.js","webpack:///./scripts/components/nav.js","webpack:///./scripts/components/headroom.js","webpack:///./scripts/vendor/headroom.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/index.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/desandro-matches-selector/matches-selector.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/cell.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/slide.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/animate.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/drag.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unidragger/unidragger.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/prev-next-button.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/page-dots.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/player.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/add-remove-cell.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/lazyload.js","webpack:///./scripts/components/filter.js","webpack:///./scripts/components/dropdown.js","webpack:///./scripts/components/picker.js","webpack:///./scripts/components/resellers.js","webpack:///./scripts/components/video.js","webpack:///./scripts/components/listing.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/jquery-bridget/jquery-bridget.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/masonry-layout/masonry.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/outlayer.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/item.js","webpack:///./scripts/components/instagram.js","webpack:///./scripts/components/newsletter.js","webpack:///./scripts/util/Rule.js","webpack:///./scripts/components/category.js","webpack:///./scripts/components/product-selected.js","webpack:///./scripts/components/product.js","webpack:///./scripts/components/cart.js","webpack:///./scripts/components/search.js","webpack:///./scripts/components/checkout.js","webpack:///C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/sticky-sidebar/dist/sticky-sidebar.js","webpack:///./scripts/components/scroll.js","webpack:///./scripts/components/backgroundSwitch.js","webpack:///./scripts/components/articles.js","webpack:///./scripts/components/forms.js","webpack:///./scripts/components/tripleMedia.js","webpack:///./scripts/components/bottomBar.js","webpack:///./scripts/components/splashScreen.js","webpack:///./styles/main.scss?c0e8"],"names":["const","let","this","arguments"],"mappings":";AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;AC7DA,wB;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,YAAY;AACZ,wBAAwB,EAAE;AAC1B,2BAA2B,EAAE;AAC7B;AACA,gBAAgB,EAAE;AAClB;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,yBAAyB,EAAE;AAC3B;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,qBAAqB;AACrB,4BAA4B,EAAE;AAC9B;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,wBAAwB,EAAE;AAC1B,qBAAqB,EAAE;AACvB,cAAc,EAAE;AAChB,gBAAgB,EAAE;AAClB,KAAK;AACL;AACA;AACA,KAAK;AACL,wBAAwB,EAAE;AAC1B,2BAA2B,EAAE;AAC7B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL,aAAa,EAAE;AACf,YAAY,EAAE;AACd,cAAc;AACd,kBAAkB,EAAE;AACpB,oBAAoB,EAAE;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEkE;;;;;;;;ACnJlE;AAAyU;AACzU;AACA,EAAE,gEAAQ;AACV,EAAE,sEAAW;AACb,EAAE,gEAAQ;AACV,EAAE,sEAAW;AACb,EAAE,wDAAI;AACN,EAAE,oEAAU;AACZ,EAAE,kEAAS;AACX,EAAE,oEAAU;AACZ,EAAE,oDAAE;AACJ,EAAE,sDAAG;AACL,EAAE,8DAAO;AACT,EAAE,0EAAa;AACf,EAAE,oEAAU;AACZ,EAAE,sEAAW;AACb,EAAE,4DAAM;AACR,EAAE,4DAAM;AACR,EAAE,sDAAG;AACL,EAAE,wDAAI;AACN,EAAE,wDAAI;AACN,EAAE,wDAAI;AACN,EAAE,oDAAE;AACJ,EAAE,0DAAK;AACP,EAAE,oDAAE;AACJ,EAAE,4DAAM;AACR,EAAE,8DAAO;AACT,EAAE,wDAAI;AACN,EAAE,8DAAO;AACT,EAAE,wDAAI;AACN,EAAE,8DAAO;AACT,EAAE,4DAAM;AACR,EAAE,8DAAO;AACT,EAAE,8DAAO;AACT,EAAE,wDAAI;AACN,EAAE,gEAAQ;AACV,EAAE,4DAAM;AACR,EAAE,4DAAM;AACR;AACA;AACA,wBAAwB,+CAAC;AACzB;AACA;AACA,GAAG;AACH,CAAC;AACc,wGAAC,E;;;;;;;AC7ChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA,KAAK,YAAY;AACjB;;AAEA;AACA;AACA,KAAK,YAAY;AACjB;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK,4DAA4D;AACjE;;;AAGA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,mEAAmE;AACnE,yEAAyE;AACzE;AACA;;AAEA;AACA;AACA,mEAAmE;AACnE,yEAAyE;AACzE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;;AAEA,qDAAqD,iBAAiB;AACtE;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;;;AClMA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,8BAA8B,qCAAqC,EAAE,OAAO;;AAE5E;AACA,gCAAgC,qCAAqC;AACrE;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC9BA;AAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,C;;;;;;;ACTA;AAAe;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C;AACA;AACA,KAAK;AACL;AACA,C;;;;;;;AClCA;AAAA;AAAyB;AACV;AACf,4CAA4C,WAAW,KAAK,OAAO;AACnE;AACA,gDAAgD,YAAY;;AAE5D;AACA,gBAAgB,gEAAC,mCAAmC,WAAW,KAAK,OAAO;AAC3E;AACA;;AAEA;AACA,C;;;;;;ACZA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,wBAA4C;AAClD,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,GAAG;AACH;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;;AChPD;AAAA;AAAyC;AAC1B;AACf,mBAAmB,uEAAW;;AAE9B;AACA;AACA;AACA,8CAA8C,gBAAgB;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,C;;;;;;ACtBA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAuB;AAC7B,MAAM,uBAAmB;AACzB,MAAM,sBAAsB;AAC5B,MAAM,wBAAQ;AACd,MAAM,wBAAS;AACf,MAAM,wBAAW;AACjB,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AAC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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,oCAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAE;AACrB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;AC9MD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE4D;AACM;AACG;AACM;AACA;AACA;AACH;AACH;AACZ;AACA;AACkB;AAClB;AACS;AACuB;AACpB;AACN;AACQ;AACd;AACwB;AACJ;AACA;AACA;AACe;AACH;;;;;;;;ACnCzF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACyC;AACR;AAC6B;AACR;AACF;AACE;AACN;AACM;AACN;AACT;AACM;AACE;AACV;AACF;AACa;AACT;AACU;AACR;AACF;AACe;AACjB;AACoB;AACzD;AACA,EAAE,kFAAa;AACf,EAAE,yEAAM;AACR,EAAE,gFAAS;AACX,EAAE,kFAAU;AACZ,EAAE,wEAAK;AACP,EAAE,sEAAI;AACN,EAAE,mFAAU;AACZ,EAAE,0EAAM;AACR,EAAE,oFAAW;AACb,EAAE,yFAAa;AACf,EAAE,4EAAO;AACT,EAAE,0EAAM;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,aAAa,wEAAM,GAAG;AACtB;;AAEA,qBAAqB,uEAAC;AACtB;AACA,MAAM,uEAAC;AACP,0BAA0B,wEAAM,GAAG;AACnC;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA,KAAK;;;AAGL;AACA;AACA,qBAAqB,kFAAU;AAC/B,oBAAoB,gFAAS;AAC7B;AACA,KAAK;AACL,qBAAqB,kFAAU;AAC/B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,gFAAkB;AACxC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK,EAAE;;AAEP,yBAAyB,wEAAM,GAAG,EAAE,8DAAQ,oBAAoB;;AAEhE,oBAAoB,wEAAM,GAAG;AAC7B,4BAA4B,wEAAM,GAAG;AACrC,0BAA0B,wEAAM,GAAG,UAAU;;AAE7C;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,KAAK;;;AAGL,eAAe,+DAAC,CAAC;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qEAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL,2BAA2B;;AAE3B;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,QAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,qCAAqC,mBAAmB;AACxD;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,qCAAqC,QAAQ;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,8BAA8B,qCAAqC,EAAE,iBAAiB,eAAe,qCAAqC,EAAE,aAAa;AACzJ;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;;AAEpC,gBAAgB,uEAAC;AACjB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,iBAAiB,+DAA+D;AAChF;;AAEA;AACA;AACA,oBAAoB,uEAAC,oDAAoD;;AAEzE;;AAEA;AACA;;AAEA;AACA,MAAM;;;AAGN;;AAEA;AACA,uBAAuB,uEAAW;AAClC;AACA,mBAAmB,uEAAC;AACpB;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA,KAAK;;;AAGL,wBAAwB;;AAExB;AACA;AACA,KAAK;;;AAGL,wBAAwB;;AAExB;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK;AACL;AACA,KAAK;;;AAGL,0BAA0B;;AAE1B,8BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,iCAAiC;;AAEjC,+BAA+B;;AAE/B,0BAA0B;;AAE1B;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM,6EAAW;AACjB;;AAEA;AACA;AACA;;AAEA;AACA,IAAI,wEAAM;AACV;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,8DAAQ;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACD,YAAY,0EAAM,EAAE,8EAAQ;AACb,+DAAM,E;;;;;;;ACjmBrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACoD;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B,mBAAmB,uEAAW;AAC9B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,kCAAkC;AACvD;AACA;AACA,KAAK;AACL;AACA,KAAK;;AAEL,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;;AAErB;AACA;AACA;AACA;AACA,GAAG;AACH,mBAAmB,0BAA0B;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uDAAuD,sDAAsD;AAC7G;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,+BAA+B;AACpD;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;;AAGH,iBAAiB,iBAAiB;AAClC;;AAEA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC,yEAAyE,SAAS;AAClF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wEAAwE;AACxE,0CAA0C;;AAE1C,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,yCAAyC,QAAQ;AACjD;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,qEAAS;AAC5B,qBAAqB,uEAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B,iBAAiB,iBAAiB;AAClC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,eAAe,iBAAiB;AAChC,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,eAAe,wBAAwB;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,wBAAwB;AACvC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;;AAEV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,uEAAW;;AAE9B,iBAAiB,gBAAgB;AACjC;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,uBAAuB,qBAAqB;AAC5C;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,uEAAW;AAC9B;AACA;;AAEA,aAAa,iBAAiB;AAC9B;AACA;AACA;;AAEA,6CAA6C,QAAQ;AACrD;AACA;AACA,KAAK;AACL,iBAAiB,qBAAqB;AACtC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;AACA,KAAK;AACL,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC;;AAEvC;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,2CAA2C;;AAE3C;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;;AAErB,iBAAiB,iBAAiB;AAClC,oCAAoC;;AAEpC;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;;AAEA,mBAAmB,kBAAkB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB;;AAEtB,iBAAiB,iBAAiB;AAClC;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,gBAAgB;AAC7B;;AAEA,eAAe,kBAAkB;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,iBAAiB;AAClC;;AAEA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;;AAElB,mBAAmB;;AAEnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH,CAAC;;;AAGD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,SAAS;AACT,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,2EAAC,EAAC;AACotB;;;;;;;;ACr8CruB;AAAA;AAAA;AAAuC;AACO;AAC9C;;AAEA;AACA;AACA,CAAC,KAAK;AACN,kBAAkB,2EAAU;AAC5B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;;AAE1D;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;;AAEA,gEAAgE,YAAY,GAAG,aAAa;AAC5F;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;;;;;;;;;ACtDA;AAAA;AAAuC;AACvC;;AAEA;AACA,iBAAiB,qEAAS;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;ACvBA;AAAA;AAAuC;AACxB;AACf;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACnEA;AAAA;AAAuC;AACxB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,iBAAiB,qEAAS;;AAE1B,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,qBAAqB,6BAA6B;AAClD;AACA;AACA,KAAK;;;AAGL;AACA;AACA,KAAK,EAAE;;AAEP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;AC1EA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;AAEA,CAAC,E;;;;;;;AC3GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACI;AACQ;AACI;AACI;AACZ;AACU;AACJ;AACE;AAC1C;AACf,EAAE,2EAAU;AACZ,EAAE,+EAAY;AACd,EAAE,uFAAgB;AAClB,EAAE,2FAAkB;AACpB,EAAE,+FAAoB;AACtB,EAAE,mFAAc;AAChB,EAAE,6FAAmB;AACrB,EAAE,yFAAiB;AACnB,EAAE,2FAAkB;AACpB,CAAC,E;;;;;;;ACnBD;AAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AChCA;AAAA;AAAuD;AACxC;AACf;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,yCAAyC,yBAAyB;AAClE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;AACA;AACA;AACA,GAAG,EAAE;;AAEL;AACA,IAAI,gFAAc;AAClB,IAAI,gFAAc;AAClB;;AAEA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;;AAEH,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;;AAEA;AACA,yDAAyD,UAAU;AACnE;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,gBAAgB,yCAAyC;AACzD,KAAK;AACL;;AAEA;AACA;AACA,uCAAuC,yCAAyC;AAChF,KAAK;AACL;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA,mBAAmB,qBAAqB;AACxC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,KAAK;AACL,gBAAgB,aAAa;AAC7B,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,IAAI,gFAAc,yDAAyD,aAAa;AACxF,IAAI,gFAAc,wDAAwD,kEAAkE;AAC5I;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACpTA;AAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,IAAI;;;AAGJ;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,iBAAiB,4CAA4C;AAC7D;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH,aAAa,yBAAyB;AACtC;AACA;AACA;AACA;AACA,GAAG;;;AAGH,oDAAoD,UAAU;AAC9D,C;;;;;;;AChDA;AAAe;AACf;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA,C;;;;;;;ACPA;AAAA;AAAoC;AACrB;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,uEAAC;AAC1B,C;;;;;;;AC3CA;AAAe;AACf;;AAEA;AACA,oDAAoD;;AAEpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACjDA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,wBAAwB,GAAG,sBAAsB,GAAG,sBAAsB,GAAG,iCAAiC,GAAG,+BAA+B,GAAG,+BAA+B;AAC1M;;AAEA;AACA,6CAA6C,kBAAkB,4BAA4B,YAAY;AACvG,GAAG;AACH;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,UAAU;AAC1H,KAAK;AACL,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,UAAU;AACpH;AACA,GAAG;;;AAGH,0CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA,GAAG;;;AAGH,0CAA0C,kBAAkB;;AAE5D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAC1J,KAAK;AACL,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AACpJ;;AAEA;AACA,8BAA8B,kBAAkB,QAAQ,2BAA2B,6BAA6B,0CAA0C;AAC1J,KAAK;AACL,8BAA8B,kBAAkB,GAAG,2BAA2B,4BAA4B,0CAA0C;AACpJ;AACA;;AAEA;AACA,C;;;;;;;AC/DA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACrEA;AAAA;AAAoC;AACrB;AACf;AACA;AACA,gBAAgB,uEAAC,uBAAuB,kBAAkB;AAC1D;AACA;;AAEA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qCAAqC,uEAAC;AACtC,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAA;AAA6C;AACA;AACA;AACA;AACF;AAC5B;AACf,EAAE,+EAAY;AACd,EAAE,+EAAY;AACd,EAAE,+EAAY;AACd,EAAE,+EAAY;AACd,EAAE,6EAAW;AACb,CAAC,E;;;;;;;ACXD;AAAA;AAAqD;AACtC;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB,8EAAY;AACrC;AACA;AACA,C;;;;;;;ACrBA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,wCAAwC,EAAE,MAAM,EAAE,MAAM,EAAE;AAC1D;;AAEA;AACA,mDAAmD;;AAEnD;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;AC/CA;AAAe;AACf;AACA,C;;;;;;;ACFA;AAAe;AACf;AACA,C;;;;;;;ACFA;AAAA;AAA6D;AAC9C;AACf;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA,+EAA+E,kFAAkF,8BAA8B;;AAE/L;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,QAAQ,sFAAoB;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACpFA;AAAA;AAAA;AAA+C;AACI;AACJ;AAChC;AACf,EAAE,iFAAa;AACf,EAAE,qFAAe;AACjB,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACPD;AAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACRA;AAAA;AAAiD;AAClC;AACf;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA,EAAE,2EAAc;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AClBA;AAAA;AAAiD;AAClC;AACf;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE,2EAAc;AAChB;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmC;AACQ;AACJ;AACA;AACE;AACQ;AACU;AAC5C;AACf,EAAE,qEAAO;AACT,EAAE,6EAAW;AACb,EAAE,yEAAS;AACX,EAAE,yEAAS;AACX,EAAE,2EAAU;AACZ,EAAE,mFAAc;AAChB,EAAE,6FAAmB;AACrB,CAAC,E;;;;;;;ACfD;AAAA;AAA6D;AAC9C;AACf;AACA,+FAA+F,aAAa;AAC5G;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA,4FAA4F,MAAM;AAClG,KAAK;AACL;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,yCAAyC;;AAEzC,mCAAmC;;AAEnC;AACA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,sDAAsD,yBAAyB;;AAElI;AACA,yCAAyC;;AAEzC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA,QAAQ,sFAAoB;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;AC5LA;AAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACTA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;;AAEA;AACA,C;;;;;;;ACzBA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,qBAAqB;;AAErB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;AC1DA;AAAA;AACe;AACf;AACA;AACA,C;;;;;;;ACJA;AAAA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;AC/BA;AAAA;AAAA;AAAoC;AACa;AAClC;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,uEAAC;;AAE1B;AACA;AACA;AACA,+CAA+C,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AAC5I,QAAQ,0EAAQ;AAChB;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA,6CAA6C,kBAAkB,4BAA4B,UAAU,UAAU,2BAA2B;AAC1I,MAAM,0EAAQ;AACd;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;ACtCA;AAAA;AAAA;AAAyC;AACN;AACQ;AAC5B;AACf,EAAE,2EAAU;AACZ,EAAE,qEAAO;AACT,EAAE,6EAAW;AACb,CAAC,E;;;;;;;ACPD;AAAA;AAAA;AAAyC;AACL;AACrB;AACf;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA,GAAG,UAAU;;AAEb,oBAAoB,uEAAC;AACrB,yBAAyB,kBAAkB,GAAG,2BAA2B;AACzE,sCAAsC,kBAAkB;;AAExD;AACA;;AAEA;AACA,qBAAqB,oBAAoB;AACzC,0BAA0B,uEAAC,4CAA4C,kBAAkB,GAAG,uBAAuB;AACnH;AACA;;AAEA,sCAAsC,kBAAkB;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,uEAAC;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH,iBAAiB,yBAAyB;AAC1C,qBAAqB,uEAAC;AACtB;;AAEA,wCAAwC,QAAQ;AAChD,sBAAsB,uEAAC;AACvB;AACA,C;;;;;;;AC1DA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,qDAAqD;;AAErD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;ACxCA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,kBAAkB,GAAG,2BAA2B,IAAI,kBAAkB,GAAG,uBAAuB;AAC1H;AACA,C;;;;;;;ACTA;AAAA;AAA+C;AACI;AACpC;AACf,EAAE,iFAAa;AACf,EAAE,qFAAe;AACjB,CAAC,E;;;;;;;ACLD;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACRA;AAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACI;AACF;AACF;AACJ;AACF;AACE;AACrC;;AAEA;;AAEA;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA,6HAA6H,6DAAQ;AACrI,GAAG;AACH,2CAA2C,6DAAQ;AACnD;AACA;;AAEA;AACA;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA,GAAG;AACH,wBAAwB,iEAAY;AACpC,uBAAuB,gEAAW;AAClC,sBAAsB,+DAAU;;AAEhC;AACA,sBAAsB,6DAAQ;AAC9B;;AAEA,mBAAmB,4DAAO;;AAE1B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,CAAC,E;;;;;;;AChGD;AAAA;AAAA;AAAA;AAAoD;AAChB;AACQ;;AAE5C;AACA;AACA,sBAAsB,uEAAW,aAAa,qEAAS;AACvD;AACA;AACA;AACA;;AAEA;AACA;;AAEe;AACf;AACA,mBAAmB,uEAAW;AAC9B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,uEAAC;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;;AAEA;AACA,gBAAgB,uEAAC;AACjB;;AAEA,sFAAsF,sBAAsB;AAC5G,6DAA6D;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,wBAAwB,qEAAG;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,uEAAC;AACnC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACjHA;AAAA;AAAA;AAAA;AAAyC;AACL;AACQ;AAC7B;AACf,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,4BAA4B,qEAAG;AAC/B;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,+CAA+C,uEAAC;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,qDAAqD;;AAErD;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH,+CAA+C;;AAE/C;AACA,C;;;;;;;AC7NA;AAAA;AAAsD;AACvC;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH,uBAAuB,qEAAG;AAC1B,sDAAsD;;AAEtD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,qEAAG;AAC1B,EAAE,0EAAQ;AACV;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;;AAGH;AACA;;AAEA,iBAAiB,uBAAuB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iFAAiF;AACjF;;AAEA;AACA,oFAAoF;AACpF;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA,C;;;;;;;AC9IA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,yCAAyC;;AAEzC;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA,GAAG,UAAU;;AAEb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;AC1CA;AAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACZA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;AClCA;AAAA;AAA+C;AACA;AAChC;AACf,EAAE,iFAAa;AACf,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACLD;AAAA;AAA+C;;AAE/C;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,mFAAmF;;AAEnF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,8BAA8B,OAAO,8BAA8B;AAC1F;AACA,GAAG;AACH,oBAAoB,8BAA8B;;AAElD;AACA,sBAAsB,8BAA8B;AACpD;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,wEAAM;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACvEA;AAAA;AAAuC;AACxB;AACf;AACA;AACA,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA,KAAK;;AAEL;AACA,2CAA2C,MAAM;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,C;;;;;;;ACvCA;AAAA;AAAyC;AACM;AAChC;AACf,EAAE,2EAAU;AACZ,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACLD;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,UAAU;;AAEb;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;ACnDA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;ACRA;AAAA;AAAuC;AACQ;AAChC;AACf,EAAE,yEAAS;AACX,EAAE,iFAAa;AACf,CAAC,E;;;;;;;ACLD;AAAA;AAAA;AAAuC;AACH;AACrB;AACf,iBAAiB,qEAAS;AAC1B;;AAEA;AACA;AACA;;AAEA,oBAAoB,uEAAC;;AAErB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,C;;;;;;;ACpCA;AAAe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gCAAgC;AACjD;AACA;AACA;AACA,C;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC,E;;;;;;;ACrCc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,E;;;;;;;ACvHD;AAAA;AAA4C;AAC7B;AACf,uCAAuC;AACvC;AACA;;AAEA;AACA,MAAM,wEAAM;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,wEAAM;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,wEAAM;AACV;AACA,C;;;;;;;ACrCA;AAAA;AAAA;AAAoC;AACmB;AACxC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,0CAA0C,uEAAC,kDAAkD,uEAAC,gBAAgB,yBAAyB,6BAA6B,MAAM,IAAI,MAAM;AACpL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,kDAAkD;AAClD;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,SAAS;AACrC;AACA;;AAEA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,iCAAiC,yBAAyB;AAC1D,KAAK;AACL,gCAAgC,iBAAiB;AACjD;AACA,qCAAqC,yBAAyB,4BAA4B,EAAE;AAC5F;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,mEAAmE,OAAO;AAC1E;AACA;;AAEA;AACA;AACA,qBAAqB,mBAAmB;AACxC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,QAAQ;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,qCAAqC;AACnE;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,MAAM,gFAAc,+CAA+C,mBAAmB;AACtF;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AClSA;AAAA;AAAA;AAAA;AACoD;AAChB;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB,uEAAW;AAC9B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,6CAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB;;AAEzB,iCAAiC,yBAAyB,wCAAwC,+BAA+B;AACjI;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,wBAAwB;AAC7C;;AAEA;AACA,yDAAyD;;AAEzD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA,KAAK;AACL;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI,uEAAC;AACL;AACA;;AAEA;AACA;AACA,IAAI,uEAAC;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AClIA;AAAA;AAAA;AAAA;AAAA;AACuC;AACH;AACkB;AACvC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,uBAAuB,qEAAG;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA,eAAe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,kDAAkD,qEAAG;AACrD;AACA;AACA,KAAK;AACL;AACA;;;AAGA,+BAA+B,qEAAG;AAClC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;;AAGL,iDAAiD;;AAEjD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,eAAe,uEAAC;AAChB;;AAEA;AACA,6CAA6C;;AAE7C;AACA;AACA;;AAEA;AACA;AACA,4FAA4F;AAC5F,OAAO,8EAA8E;AACrF,KAAK;AACL;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,qEAAG;AACjB;AACA;AACA;AACA,QAAQ;;AAER;AACA,kCAAkC;AAClC;;AAEA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,qEAAG;AACjB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;AACtC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAQ;AAC9B;AACA,aAAa,KAAK,aAAa;AAC/B;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,0EAAQ;AAC9B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;;;AAGT,kDAAkD;;AAElD,yGAAyG;;AAEzG;AACA;AACA;;AAEA,6CAA6C;AAC7C;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,uEAAC;AAChB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACraA;AAAA;AAAA;AAAsF;AAClD;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,YAAY,uEAAC;;AAEb;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+BAA+B,iGAAyB;AACxD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,iDAAiD,uEAAC,2BAA2B,uEAAC;AAC9E;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACxLA;AAAA;AAAA;AAAA;AAAoC;AACgC;AACkB;AACvE;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,IAAI;AAC1B,4BAA4B,IAAI;AAChC,wBAAwB,IAAI;AAC5B,uBAAuB,IAAI;AAC3B,qBAAqB,IAAI;AACzB,sBAAsB,IAAI;AAC1B,+BAA+B,IAAI;AACnC,mCAAmC,IAAI;AACvC,yBAAyB,IAAI;AAC7B,oBAAoB,IAAI;AACxB,0BAA0B,IAAI;AAC9B,wBAAwB,IAAI;AAC5B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,sCAAsC,kBAAkB,GAAG,SAAS,2BAA2B,kBAAkB,GAAG,SAAS,GAAG,SAAS;AACzI;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,6CAA6C;;AAE5G;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uGAAuG,yBAAyB,EAAE,OAAO;;AAEzI;AACA;AACA,0BAA0B,uEAAC;AAC3B;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,yBAAyB;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kCAAkC,gBAAgB;AAClD,sCAAsC,yBAAyB;AAC/D;;AAEA;AACA;AACA,qDAAqD,QAAQ;AAC7D,2DAA2D,yBAAyB;AACpF;;AAEA,qFAAqF,yBAAyB;AAC9G,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mEAAmE,cAAc;AACjF;AACA;;AAEA;AACA,eAAe,uFAAiB;AAChC,eAAe,uFAAiB;AAChC;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA,eAAe,uFAAiB,sEAAsE,OAAO,WAAW,OAAO;AAC/H;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;AACA;AACA,SAAS;AACT,gCAAgC,qBAAqB,UAAU,mBAAmB,MAAM,qBAAqB;AAC7G;AACA;;AAEA;AACA,2CAA2C,uFAAiB;AAC5D;;AAEA;AACA;AACA;AACA,OAAO;AACP,yCAAyC,oBAAoB,qCAAqC,kBAAkB;AACpH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,yCAAyC,4BAA4B;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B,iGAAyB;AACxD;AACA,KAAK;AACL;AACA;AACA,cAAc,uEAAC;AACf;;AAEA;AACA,uCAAuC;;AAEvC;AACA;AACA,cAAc,uEAAC;AACf;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,qBAAqB,EAAE,YAAY;AACzD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,uFAAiB;AACvC;AACA,oBAAoB,uEAAC;AACrB;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,uFAAiB;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;;AAEL,kGAAkG,uEAAC;AACnG;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACzZA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACL;AACa;AACqC;AACvE;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,mBAAmB,uEAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,uCAAuC,OAAO;AAC9C,kCAAkC,QAAQ;AAC1C,KAAK;AACL,4CAA4C,OAAO;AACnD,mCAAmC,QAAQ;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C,KAAK;AACL,mCAAmC,SAAS;AAC5C;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,0EAAQ;AAC5B;AACA;AACA,OAAO;AACP;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,8BAA8B,iGAAyB;AACvD;AACA,KAAK;AACL;AACA;AACA,cAAc,uEAAC;;AAEf;AACA;AACA;;AAEA,+BAA+B,kCAAkC;;AAEjE;AACA,gBAAgB,uEAAC,gBAAgB,kCAAkC;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACxWA;AAAA;AAAoC;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,gBAAgB,uEAAC;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,aAAa,uCAAuC;AACpD,KAAK;AACL,aAAa,yBAAyB;AACtC;;AAEA;AACA,aAAa,2BAA2B;AACxC,KAAK;AACL,aAAa,aAAa;AAC1B;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,EAAE,IAAI,EAAE;AAC3C,KAAK;AACL;AACA,mCAAmC,EAAE,IAAI,EAAE,eAAe,aAAa;AACvE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA,MAAM,uEAAC;AACP;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,0BAA0B,uEAAC;AAC3B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACjHA;AAAA;AAAA;AAAA;AAAuC;AACH;AACiB;AACtC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,uEAAC,uBAAuB,yBAAyB;AAC1E;AACA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2DAA2D,WAAW;AACtE;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2FAA2F,WAAW;AACtG;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,8EAAY;AACjC,qBAAqB,8EAAY;AACjC;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,eAAe,MAAM,eAAe;AACtF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;;AAE5D;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,eAAe,MAAM,eAAe;AACnH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,uEAAC,uBAAuB,yBAAyB;AAC5E;;AAEA;AACA;AACA,4DAA4D,+BAA+B;AAC3F,SAAS;AACT;AACA;AACA;;AAEA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,kEAAkE,WAAW,MAAM,WAAW;AAC9F,2EAA2E,WAAW;AACtF;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0DAA0D,+BAA+B;AACzF,OAAO;AACP;AACA;;AAEA,mDAAmD,sBAAsB;AACzE,yDAAyD,sBAAsB;AAC/E;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,yBAAyB;AACxC;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6CAA6C;;AAE7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL,sDAAsD,kCAAkC;AACxF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,6CAA6C;;AAE7C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL,uDAAuD,kCAAkC;AACzF;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACnmBA;AAAA;AAAA;AAAuC;AACH;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE,yBAAyB,4BAA4B,MAAM;AAC3H,sCAAsC,oBAAoB,QAAQ,mBAAmB,SAAS,oBAAoB;;AAElH;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,uEAAC;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,WAAW;AAC9D;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,8BAA8B,uEAAC;;AAE/B;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,sBAAsB;;AAEhD;AACA;;AAEA;AACA,0FAA0F,mBAAmB,UAAU,kCAAkC;AACzJ;AACA,WAAW;AACX,mEAAmE,kCAAkC,4BAA4B,mBAAmB;AACpJ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,wBAAwB,4BAA4B,MAAM;AAC9F;AACA;AACA,OAAO;;AAEP;AACA;;AAEA;AACA;AACA,eAAe,uEAAC;AAChB;;AAEA,aAAa,uEAAC;AACd;;AAEA;;AAEA;AACA,8BAA8B,+BAA+B;AAC7D,kCAAkC,uEAAC,4CAA4C,uEAAC;AAChF;AACA,OAAO;AACP,KAAK;AACL,+BAA+B,iCAAiC;AAChE;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0EAA0E;;AAE1E,iDAAiD,cAAc;AAC/D;AACA,SAAS;;;AAGT,8BAA8B,iBAAiB;AAC/C;AACA;AACA,OAAO;AACP,kDAAkD,4BAA4B;AAC9E;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;AACA,iEAAiE,uEAAC,wCAAwC,uEAAC;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,mBAAmB,wBAAwB;AAC3C;;AAEA;AACA,uDAAuD;;AAEvD;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC1RA;AAAA;AAAA,iCAAiC,kBAAkB;AACF;AAClC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA;;AAEA;AACA,wBAAwB;;AAExB;AACA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC;AAClC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,0EAAQ;AAClB;AACA,WAAW;AACX;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA,iBAAiB,uBAAuB;AACxC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC9LA;AAAA;AAAA;AAAoE;AAChC;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,OAAO;AACrD,4BAA4B,OAAO,KAAK,cAAc;AACtD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,uEAAC;;AAEvB;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,0CAA0C,uFAAiB;AAC3D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0BAA0B,uEAAC;AAC3B;;AAEA;AACA;AACA,0EAA0E,EAAE,OAAO,EAAE;AACrF;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;AAElC;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,iEAAiE,oBAAoB;AACrF;AACA;AACA,gCAAgC;;AAEhC;AACA,2BAA2B,uEAAC;AAC5B;;AAEA,cAAc,uEAAC;AACf;AACA;AACA,uBAAuB,uEAAC;AACxB;AACA,mEAAmE,EAAE,OAAO,EAAE,8BAA8B,EAAE,cAAc,EAAE;AAC9H;AACA,KAAK,EAAE;;AAEP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,0CAA0C,uFAAiB;AAC3D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,2CAA2C,uFAAiB;AAC5D;AACA;;AAEA;AACA,iBAAiB,uEAAC,iBAAiB,qCAAqC;AACxE,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC1RA;AAAA;AAAuC;AACxB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,KAAK,GAAG,IAAI,GAAG,MAAM;AACtC,KAAK;AACL,iBAAiB,IAAI,GAAG,MAAM;AAC9B;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;AAC5B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,qEAAS;;AAE5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACrJA;AAAA;AAAA;AAAoD;AAChB;AACrB;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,mBAAmB,uEAAW;AAC9B,iBAAiB,qEAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA,sDAAsD,yBAAyB,cAAc,QAAQ;AACrG;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,kDAAkD,uDAAuD;AACzG;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,oDAAoD,YAAY;AAChE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,uEAAC;AACP;AACA;;AAEA;AACA;AACA,MAAM,uEAAC;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC/FA;AAAA;AAAA;AAAA;;AAEA;AACyC;AACQ;AAClC;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,0EAAQ;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;;AAEA,kEAAkE;AAClE;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,qBAAqB,uEAAW;;AAEhC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,uEAAW;AAClC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,uEAAW;AAChC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC7NA;AAAA;AAAA;AAAiD;AACb;AACrB;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAC;AACzB;AACA;;AAEA;AACA,8BAA8B,uEAAC;AAC/B,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,yBAAyB;;AAEzB;AACA;AACA;;AAEA,4FAA4F,aAAa;AACzG,4FAA4F,aAAa;AACzG,qEAAqE,oEAAoE,uFAAuF;AAChO;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP,KAAK,UAAU,0EAAQ;AACvB,iDAAiD;AACjD;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA,SAAS;;;AAGT,gHAAgH,iBAAiB;AACjI,gHAAgH,iBAAiB;;AAEjI;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS,4FAA4F;AACrG;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,sBAAsB;AAC3C,sEAAsE,qBAAqB;AAC3F;AACA,KAAK;AACL,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;AC3MA;AAAA;AAA4C;AAC7B;AACf;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK,UAAU;;AAEf;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,YAAY,qEAAG;AACf,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,UAAU;;AAEf,yBAAyB,qEAAG;AAC5B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;;AAGA,0BAA0B,qEAAG;AAC7B;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA,OAAO;AACP;;AAEA,uBAAuB,qBAAqB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;;;AAGP;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,C;;;;;;;ACpPA;AAAe;AACf;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK,sBAAsB;;AAE3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,8EAA8E,aAAa;AAC3F;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uCAAuC,kCAAkC;AACzE,KAAK;;AAEL;AACA;AACA;;AAEA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;ACnHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAmD;AACE;AACR;AACM;AACQ;AAC5C;AACf;AACA,CAAC;AACD;AACA,iBAAiB,wEAAW;AAC5B,kBAAkB,yEAAY;AAC9B,cAAc,qEAAQ;AACtB,iBAAiB,wEAAW;AAC5B,qBAAqB,4EAAe;AACpC,GAAG;AACH,C;;;;;;;ACfA;AAAe;AACf;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,C;;;;;;;AC1BA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;;;;;;ACjCA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8BAA8B,YAAY;AAC1C;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA,GAAG;AACH;AACA;;AAEA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;AC/DA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,4CAA4C,kBAAkB;AAC9D;;AAEA;AACA;;AAEA;AACA,mBAAmB,0BAA0B;AAC7C;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,C;;;;;;;AC9CA;AAAe;AACf;AACA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;;AAEA;AACA,C;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAqD;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,iFAAY;AACpC;AACA;AACA,OAAO,2BAA2B,GAAG,MAAM,GAAG;AAC9C;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACrEA;AAAA;AAAA;AAAoC;AACiB;AACtC;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,uEAAC;AAC3B;AACA;;AAEA;AACA,qBAAqB,YAAY;AACjC,SAAS;AACT,OAAO;AACP;;AAEA;AACA,0BAA0B,uEAAC;AAC3B;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC,+BAA+B,eAAe,8BAA8B,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG;;AAEvJ;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,uEAAC,oCAAoC,8BAA8B;AAC5F;AACA;;AAEA;AACA,wBAAwB,uEAAC,oCAAoC,kCAAkC;AAC/F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,eAAe;AAC7D,sCAAsC,eAAe;AACrD,KAAK;;AAEL;AACA;AACA,oDAAoD,sCAAsC,MAAM,iBAAiB,yCAAyC,mBAAmB;AAC7K,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO,OAAO,OAAO,qBAAqB,0BAA0B,MAAM,2BAA2B;AAChJ;AACA;;AAEA;AACA,8CAA8C,QAAQ,cAAc,0CAA0C,eAAe,2CAA2C;AACxK;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACnLA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,iFAAY;AACrC;;AAEA;AACA,wBAAwB,iFAAY;AACpC;;AAEA;AACA;AACA;;AAEA,uCAAuC,GAAG,MAAM,GAAG,mBAAmB,QAAQ,eAAe,QAAQ;AACrG,wBAAwB,iFAAY;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACrGA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC1C;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mCAAmC;;AAEnC,2CAA2C,YAAY;AACvD;AACA;AACA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA,sEAAsE;;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW,KAAK,WAAW,KAAK,WAAW,eAAe,QAAQ,eAAe,QAAQ,aAAa,MAAM;AACxJ,wBAAwB,iFAAY;AACpC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,iFAAY;AACxC;;AAEA;AACA,2BAA2B,iFAAY;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACtGA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,MAAM;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,oDAAoD,OAAO;AAC3D;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;;;AAGP;AACA,2BAA2B,MAAM,QAAQ,yCAAyC,KAAK,gCAAgC;AACvH,OAAO,EAAE;;AAET;AACA;AACA,OAAO;AACP;AACA;AACA,sCAAsC,KAAK,eAAe,KAAK,eAAe,KAAK;AACnF,0DAA0D,qDAAqD,cAAc,qDAAqD;AAClL;AACA,uCAAuC,gBAAgB,IAAI,aAAa,GAAG,YAAY,EAAE;;AAEzF;AACA;;AAEA;AACA,sBAAsB,iFAAY;AAClC;;AAEA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,iFAAY;AACpC;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;ACzJA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACJ;AACI;AAC8B;AACxE;AACf;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;;AAEA;AACA,kDAAkD,sBAAsB;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uCAAuC;AACvD;;AAEA;AACA;AACA,qBAAqB,GAAG,QAAQ,2BAA2B;AAC3D,OAAO;AACP;AACA,qBAAqB,GAAG,SAAS,2BAA2B;AAC5D,OAAO;AACP,gBAAgB,GAAG;AACnB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,2BAA2B,OAAO,2BAA2B;AACzG;AACA,sBAAsB,GAAG,IAAI,GAAG,IAAI,GAAG;AACvC,kBAAkB,OAAO;AACzB,gBAAgB,YAAY;AAC5B;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,iFAAY;AAClC;;AAEA;AACA;;AAEA;AACA,wBAAwB,iFAAY;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,iGAA0B;AAC9B;AACA;AACA;AACA,KAAK;AACL;;AAEA,EAAE,+EAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;AC5HA,kDAAC,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,SAAS,EAAE;EACtC,IAAI,OAAO,GAAG;MACV,MAAM,EAAE,IAAI;KACb;IACD,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,SAAS,EAAE,QAAM,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;;EAEjD,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;IACV,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;GACpD,CAAC,CAAC;;EAEH,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,YAAY;IAC3B,OAAO,CAAC,GAAG,CAAC;MACV,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;KACpD,CAAC,CAAC;GACJ,CAAC,CAAC;CACJ,CAAC;;;;;;;;ACjBF;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAuB;AAC7B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;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A;;AAEA,gDAAgD,IAAI;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gDAAgD,UAAU;AAC1D;AACA;AACA;AACA;AACA,wBAAwB,UAAU;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAAgC,OAAO,6jBAAE;AAC7C,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAA4B,OAAO,yjBAAE;AACzC,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAAqD,OAAO,klBAAE;AAClE,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA+B;AACnC,MAAM,0BAA4C;AAClD,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAuB;AACzC;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,GAAG;AACH;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA2B;AAC/B,MAAM,0BAAmB;AACzB,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,uCAA4B,OAAO,yjBAAE;AACzC,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA8B;AAClC,MAAM,0BAAsB;AAC5B,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA+B;AACnC,MAAM,0BAAuB;AAC7B,MAAM,0BAAmB;AACzB,MAAM,0BAAsB;AAC5B,MAAM,0BAAQ;AACd,MAAM,0BAAS;AACf,MAAM,0BAAW;AACjB,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;;;AAIA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iCAAiC;AACjC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,sBAAsB;AAC5C;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAgC;AACpC,MAAM,0BAAuB;AAC7B,KAAK,iCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAgC;AACpC,MAAM,0BAAuB;AAC7B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA2B;AAC/B,MAAM,0BAAY;AAClB,MAAM,2BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO,IAAI,YAAY,OAAO,UAAU,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,EAAE,sBAAsB,eAAe;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAuC;AAC3C,MAAM,0BAAY;AAClB,MAAM,0BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAgC;AACpC,MAAM,0BAAY;AAClB,MAAM,0BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;;;AAIA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA6B;AACjC,MAAM,0BAAuB;AAC7B,MAAM,0BAAsB;AAC5B,MAAM,0BAAY;AAClB,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAsC;AAC1C,MAAM,0BAAY;AAClB,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA+B;AACnC,MAAM,0BAAY;AAClB,MAAM,0BAAsB;AAC5B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAA4B;AAChC,MAAM,0BAAY;AAClB,MAAM,2BAAQ;AACd,MAAM,2BAAoB;AAC1B,MAAM,2BAAa;AACnB,MAAM,2BAAU;AAChB,MAAM,2BAAmB;AACzB,MAAM,2BAAY;AAClB,KAAK,oCAAE,OAAO;AAAA;AAAA,oHAAE;AAChB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAyC;AAC7C,MAAM,2BAAmB;AACzB,MAAM,0BAAsB;AAC5B,KAAK,oCAAE,OAAO;AAAA;AAAA;AAAA,oGAAE;AAChB,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;AAID;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA,+BAA+B;AAC/B;;AAEA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAoC;AACxC,MAAM,0BAAuB;AAC7B,KAAK,kCAAE;AACP;AACA,KAAK,gDAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;;;AAIA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,iCAAiC;AAC5C,WAAW,mBAAmB;AAC9B,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,KAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,2BAAmB;AACzB,MAAM,2BAA2B;AACjC,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAA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AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;AAMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,gBAAgB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yDAAyD;;AAE9E;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;;AAEA,qCAAqC;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB,aAAa,WAAW;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,mBAAmB;AAClC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,IAAI;AACJ;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,iDAAiD,uCAAuC,kDAAkD;AAC1I,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;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CA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,oCAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAE;AACrB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,qBAAqB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA,CAAC;;;;;;;ACpDD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAmB;AACzB,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;ACrGD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,oCAAQ,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAE;AACrB,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,CAAC;;;;;;;ACzED;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;ACxMD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,wBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,aAAa,OAAO,IAAI,YAAY,OAAO,UAAU,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB,EAAE,sBAAsB,eAAe;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACxYD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,wBAAuB;AAC7B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,eAAe;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;ACtRD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,wBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AClND;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,wBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC3LD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAuB;AAC7B,MAAM,sBAAsB;AAC5B,MAAM,uBAAY;AAClB,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC9LD;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,MAAM,uBAAY;AAClB,MAAM,sBAAsB;AAC5B,KAAK,mCAAE;AACP;AACA,KAAK;AAAA,oGAAC;AACN,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,yBAAyB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA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AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;AC9ID;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,QAAQ,wBAAmB;AAC3B,QAAQ,uBAAmB;AAC3B,OAAO,oCACD,OAAO;AAAA;AAAA;AAAA,oGAAE;AACf,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,eAAe;AACjC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,YAAY;AAC9C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC9OD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,QAAQ,uBAAuB;AAC/B,QAAQ,uBAAmB;AAC3B,QAAQ,sBAAsB;AAC9B,QAAQ,wBAAQ;AAChB,OAAO,mCACD;AACN;AACA,OAAO;AAAA,oGACF;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;;AAEA;AACA;AACA,iCAAiC;AACjC,yBAAyB;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,WAAW,iCAAiC;AAC5C,aAAa,MAAM;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,oCAAoC;AAC/C,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,WAAW,MAAM,GAAG,QAAQ,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM,GAAG,QAAQ,GAAG,SAAS;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,aAAa,cAAc;AAC3B;AACA;AACA;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA,WAAW,6BAA6B;AACxC;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA,yCAAyC;;AAEzC;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA,CAAC;;;;;;;AC16BD;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO,IAAyC;AAChD;AACA,IAAI,iCAAQ;AACZ,QAAQ,uBAAuB;AAC/B,QAAQ,uBAAmB;AAC3B,OAAO,oCACD,OAAO;AAAA;AAAA;AAAA,oGACR;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,YAAY,cAAc;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,cAAc;;AAE1B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,kBAAkB;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,CAAC;;;;;;;ACziBD,6CAAI,SAAS,GAAG,EAAE,CAAC;;AAEnB,SAAS,iBAAiB,GAAG;EAC3B,IAAI,cAAc,GAAG,CAAC,CAAC,uCAAuC,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9E,IAAI,UAAU,GAAG,CAAC,CAAC,oCAAoC,CAAC,CAAC,WAAW,EAAE,CAAC;EACvE,IAAI,aAAa,GAAG,CAAC,CAAC,wBAAwB,CAAC,CAAC;;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ACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,iDAAiD,gCAAgC;AACjF,iDAAiD,gCAAgC;;AAEjF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA,qBAAqB,UAAU,WAAW;AAC1C;;AAEA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,wBAAwB,oBAAoB;AACtF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;;AAEA,4CAA4C,2BAA2B;AACvE,4CAA4C;AAC5C,kEAAkE;;AAElE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,wGAAwG;;AAExG;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA,4FAA4F,0EAA0E;AACtK;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,oDAAoD,iBAAiB;AACrE,oDAAoD,iBAAiB;;AAErE;AACA;;AAEA;;AAEA,0BAA0B,UAAU,WAAW;;AAE/C,4BAA4B;AAC5B,4BAA4B;;AAE5B;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB,kBAAkB;AAClB;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA,kDAAkD,eAAe;AACjE,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,+EAA+E;AAC/E;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AACA;AACA,kEAAkE;AAClE;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,iBAAiB,OAAO;AACxB;;AAEA,KAAK;AACL;AACA;AA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","file":"scripts/main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/wp-content/themes/stinaaj/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 111);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap e0592bba9aec2e209f47","module.exports = jQuery;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"jQuery\"\n// module id = 0\n// module chunks = 0 1 2","/**\n * SSR Window 4.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n    Object.keys(src).forEach((key) => {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nconst ssrDocument = {\n    body: {},\n    addEventListener() { },\n    removeEventListener() { },\n    activeElement: {\n        blur() { },\n        nodeName: '',\n    },\n    querySelector() {\n        return null;\n    },\n    querySelectorAll() {\n        return [];\n    },\n    getElementById() {\n        return null;\n    },\n    createEvent() {\n        return {\n            initEvent() { },\n        };\n    },\n    createElement() {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute() { },\n            getElementsByTagName() {\n                return [];\n            },\n        };\n    },\n    createElementNS() {\n        return {};\n    },\n    importNode() {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nfunction getDocument() {\n    const doc = typeof document !== 'undefined' ? document : {};\n    extend(doc, ssrDocument);\n    return doc;\n}\n\nconst ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState() { },\n        pushState() { },\n        go() { },\n        back() { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener() { },\n    removeEventListener() { },\n    getComputedStyle() {\n        return {\n            getPropertyValue() {\n                return '';\n            },\n        };\n    },\n    Image() { },\n    Date() { },\n    screen: {},\n    setTimeout() { },\n    clearTimeout() { },\n    matchMedia() {\n        return {};\n    },\n    requestAnimationFrame(callback) {\n        if (typeof setTimeout === 'undefined') {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame(id) {\n        if (typeof setTimeout === 'undefined') {\n            return;\n        }\n        clearTimeout(id);\n    },\n};\nfunction getWindow() {\n    const win = typeof window !== 'undefined' ? window : {};\n    extend(win, ssrWindow);\n    return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ssr-window/ssr-window.esm.js\n// module id = 1\n// module chunks = 0 1","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  transform,\n  transition,\n  on,\n  off,\n  trigger,\n  transitionEnd,\n  outerWidth,\n  outerHeight,\n  styles,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove\n};\nObject.keys(Methods).forEach(methodName => {\n  Object.defineProperty($.fn, methodName, {\n    value: Methods[methodName],\n    writable: true\n  });\n});\nexport default $;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/dom.js\n// module id = 2\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {// no getter for object\n    }\n\n    try {\n      delete object[key];\n    } catch (e) {// something got wrong\n    }\n  });\n}\n\nfunction nextTick(callback, delay = 0) {\n  return setTimeout(callback, delay);\n}\n\nfunction now() {\n  return Date.now();\n}\n\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n\n  if (!style) {\n    style = el.style;\n  }\n\n  return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el, null);\n\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    } // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n\n\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n\n  return curTransform || 0;\n}\n\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[i];\n\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n\n  return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n  swiper,\n  targetPosition,\n  side\n}) {\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n\n  const animate = () => {\n    time = new Date().getTime();\n\n    if (startTime === null) {\n      startTime = time;\n    }\n\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n\n  animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/utils.js\n// module id = 3\n// module chunks = 0 1","export default function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-init.js\n// module id = 4\n// module chunks = 0 1","export default function effectTarget(effectParams, $slideEl) {\n  if (effectParams.transformEl) {\n    return $slideEl.find(effectParams.transformEl).css({\n      'backface-visibility': 'hidden',\n      '-webkit-backface-visibility': 'hidden'\n    });\n  }\n\n  return $slideEl;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-target.js\n// module id = 5\n// module chunks = 0 1","export default function effectVirtualTransitionEnd({\n  swiper,\n  duration,\n  transformEl,\n  allSlides\n}) {\n  const {\n    slides,\n    activeIndex,\n    $wrapperEl\n  } = swiper;\n\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let $transitionEndTarget;\n\n    if (allSlides) {\n      $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n    } else {\n      $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n    }\n\n    $transitionEndTarget.transitionEnd(() => {\n      if (eventTriggered) return;\n      if (!swiper || swiper.destroyed) return;\n      eventTriggered = true;\n      swiper.animating = false;\n      const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n      for (let i = 0; i < triggerEvents.length; i += 1) {\n        $wrapperEl.trigger(triggerEvents[i]);\n      }\n    });\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/effect-virtual-transition-end.js\n// module id = 6\n// module chunks = 0 1","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-shadow.js\n// module id = 7\n// module chunks = 0 1","/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'desandro-matches-selector/matches-selector'\n    ], function( matchesSelector ) {\n      return factory( window, matchesSelector );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('desandro-matches-selector')\n    );\n  } else {\n    // browser global\n    window.fizzyUIUtils = factory(\n      window,\n      window.matchesSelector\n    );\n  }\n\n}( window, function factory( window, matchesSelector ) {\n\n'use strict';\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n  return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n  // return empty array if undefined or null. #6\n  if ( obj === null || obj === undefined ) {\n    return [];\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n  var index = ary.indexOf( obj );\n  if ( index != -1 ) {\n    ary.splice( index, 1 );\n  }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n  while ( elem.parentNode && elem != document.body ) {\n    elem = elem.parentNode;\n    if ( matchesSelector( elem, selector ) ) {\n      return elem;\n    }\n  }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n  if ( typeof elem == 'string' ) {\n    return document.querySelector( elem );\n  }\n  return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n  // make array of elems\n  elems = utils.makeArray( elems );\n  var ffElems = [];\n\n  elems.forEach( function( elem ) {\n    // check that elem is an actual element\n    if ( !( elem instanceof HTMLElement ) ) {\n      return;\n    }\n    // add elem if no selector\n    if ( !selector ) {\n      ffElems.push( elem );\n      return;\n    }\n    // filter & find items if we have a selector\n    // filter\n    if ( matchesSelector( elem, selector ) ) {\n      ffElems.push( elem );\n    }\n    // find children\n    var childElems = elem.querySelectorAll( selector );\n    // concat childElems to filterFound array\n    for ( var i=0; i < childElems.length; i++ ) {\n      ffElems.push( childElems[i] );\n    }\n  });\n\n  return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n  threshold = threshold || 100;\n  // original method\n  var method = _class.prototype[ methodName ];\n  var timeoutName = methodName + 'Timeout';\n\n  _class.prototype[ methodName ] = function() {\n    var timeout = this[ timeoutName ];\n    clearTimeout( timeout );\n\n    var args = arguments;\n    var _this = this;\n    this[ timeoutName ] = setTimeout( function() {\n      method.apply( _this, args );\n      delete _this[ timeoutName ];\n    }, threshold );\n  };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n  var readyState = document.readyState;\n  if ( readyState == 'complete' || readyState == 'interactive' ) {\n    // do async to allow for other scripts to run. metafizzy/flickity#441\n    setTimeout( callback );\n  } else {\n    document.addEventListener( 'DOMContentLoaded', callback );\n  }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n  return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n    return $1 + '-' + $2;\n  }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n  utils.docReady( function() {\n    var dashedNamespace = utils.toDashed( namespace );\n    var dataAttr = 'data-' + dashedNamespace;\n    var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n    var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n    var elems = utils.makeArray( dataAttrElems )\n      .concat( utils.makeArray( jsDashElems ) );\n    var dataOptionsAttr = dataAttr + '-options';\n    var jQuery = window.jQuery;\n\n    elems.forEach( function( elem ) {\n      var attr = elem.getAttribute( dataAttr ) ||\n        elem.getAttribute( dataOptionsAttr );\n      var options;\n      try {\n        options = attr && JSON.parse( attr );\n      } catch ( error ) {\n        // log error, do not initialize\n        if ( console ) {\n          console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n          ': ' + error );\n        }\n        return;\n      }\n      // initialize\n      var instance = new WidgetClass( elem, options );\n      // make available via $().data('namespace')\n      if ( jQuery ) {\n        jQuery.data( elem, namespace, instance );\n      }\n    });\n\n  });\n};\n\n// -----  ----- //\n\nreturn utils;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/fizzy-ui-utils/utils.js\n// module id = 8\n// module chunks = 0","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  const document = getDocument();\n\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n        if (!element) {\n          element = document.createElement('div');\n          element.className = checkProps[key];\n          swiper.$el.append(element);\n        }\n\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n\n  return params;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/create-element-if-not-defined.js\n// module id = 9\n// module chunks = 0 1","// Flickity main\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter',\n      'get-size/get-size',\n      'fizzy-ui-utils/utils',\n      './cell',\n      './slide',\n      './animate'\n    ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n      return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter'),\n      require('get-size'),\n      require('fizzy-ui-utils'),\n      require('./cell'),\n      require('./slide'),\n      require('./animate')\n    );\n  } else {\n    // browser global\n    var _Flickity = window.Flickity;\n\n    window.Flickity = factory(\n      window,\n      window.EvEmitter,\n      window.getSize,\n      window.fizzyUIUtils,\n      _Flickity.Cell,\n      _Flickity.Slide,\n      _Flickity.animatePrototype\n    );\n  }\n\n}( window, function factory( window, EvEmitter, getSize,\n  utils, Cell, Slide, animatePrototype ) {\n\n'use strict';\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n  elems = utils.makeArray( elems );\n  while ( elems.length ) {\n    toElem.appendChild( elems.shift() );\n  }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n  var queryElement = utils.getQueryElement( element );\n  if ( !queryElement ) {\n    if ( console ) {\n      console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n    }\n    return;\n  }\n  this.element = queryElement;\n  // do not initialize twice on same element\n  if ( this.element.flickityGUID ) {\n    var instance = instances[ this.element.flickityGUID ];\n    instance.option( options );\n    return instance;\n  }\n\n  // add jQuery\n  if ( jQuery ) {\n    this.$element = jQuery( this.element );\n  }\n  // options\n  this.options = utils.extend( {}, this.constructor.defaults );\n  this.option( options );\n\n  // kick things off\n  this._create();\n}\n\nFlickity.defaults = {\n  accessibility: true,\n  // adaptiveHeight: false,\n  cellAlign: 'center',\n  // cellSelector: undefined,\n  // contain: false,\n  freeScrollFriction: 0.075, // friction when free-scrolling\n  friction: 0.28, // friction when selecting\n  namespaceJQueryEvents: true,\n  // initialIndex: 0,\n  percentPosition: true,\n  resize: true,\n  selectedAttraction: 0.025,\n  setGallerySize: true\n  // watchCSS: false,\n  // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n  // add id for Flickity.data\n  var id = this.guid = ++GUID;\n  this.element.flickityGUID = id; // expando\n  instances[ id ] = this; // associate via id\n  // initial properties\n  this.selectedIndex = 0;\n  // how many frames slider has been in same position\n  this.restingFrames = 0;\n  // initial physics properties\n  this.x = 0;\n  this.velocity = 0;\n  this.originSide = this.options.rightToLeft ? 'right' : 'left';\n  // create viewport & slider\n  this.viewport = document.createElement('div');\n  this.viewport.className = 'flickity-viewport';\n  this._createSlider();\n\n  if ( this.options.resize || this.options.watchCSS ) {\n    window.addEventListener( 'resize', this );\n  }\n\n  // add listeners from on option\n  for ( var eventName in this.options.on ) {\n    var listener = this.options.on[ eventName ];\n    this.on( eventName, listener );\n  }\n\n  Flickity.createMethods.forEach( function( method ) {\n    this[ method ]();\n  }, this );\n\n  if ( this.options.watchCSS ) {\n    this.watchCSS();\n  } else {\n    this.activate();\n  }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n  utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n  if ( this.isActive ) {\n    return;\n  }\n  this.isActive = true;\n  this.element.classList.add('flickity-enabled');\n  if ( this.options.rightToLeft ) {\n    this.element.classList.add('flickity-rtl');\n  }\n\n  this.getSize();\n  // move initial cell elements so they can be loaded as cells\n  var cellElems = this._filterFindCellElements( this.element.children );\n  moveElements( cellElems, this.slider );\n  this.viewport.appendChild( this.slider );\n  this.element.appendChild( this.viewport );\n  // get cells from children\n  this.reloadCells();\n\n  if ( this.options.accessibility ) {\n    // allow element to focusable\n    this.element.tabIndex = 0;\n    // listen for key presses\n    this.element.addEventListener( 'keydown', this );\n  }\n\n  this.emitEvent('activate');\n  this.selectInitialIndex();\n  // flag for initial activation, for using initialIndex\n  this.isInitActivated = true;\n  // ready event. #493\n  this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n  // slider element does all the positioning\n  var slider = document.createElement('div');\n  slider.className = 'flickity-slider';\n  slider.style[ this.originSide ] = 0;\n  this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n  return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n  // collection of item elements\n  this.cells = this._makeCells( this.slider.children );\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n  var cellElems = this._filterFindCellElements( elems );\n\n  // create new Flickity for collection\n  var cells = cellElems.map( function( cellElem ) {\n    return new Cell( cellElem, this );\n  }, this );\n\n  return cells;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n  return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n  // size all cells\n  this._sizeCells( this.cells );\n  // position all cells\n  this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n  index = index || 0;\n  // also measure maxCellHeight\n  // start 0 if positioning all cells\n  this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n  var cellX = 0;\n  // get cellX\n  if ( index > 0 ) {\n    var startCell = this.cells[ index - 1 ];\n    cellX = startCell.x + startCell.size.outerWidth;\n  }\n  var len = this.cells.length;\n  for ( var i=index; i < len; i++ ) {\n    var cell = this.cells[i];\n    cell.setPosition( cellX );\n    cellX += cell.size.outerWidth;\n    this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n  }\n  // keep track of cellX for wrap-around\n  this.slideableWidth = cellX;\n  // slides\n  this.updateSlides();\n  // contain slides target\n  this._containSlides();\n  // update slidesWidth\n  this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function( cells ) {\n  cells.forEach( function( cell ) {\n    cell.getSize();\n  });\n};\n\n// --------------------------  -------------------------- //\n\nproto.updateSlides = function() {\n  this.slides = [];\n  if ( !this.cells.length ) {\n    return;\n  }\n\n  var slide = new Slide( this );\n  this.slides.push( slide );\n  var isOriginLeft = this.originSide == 'left';\n  var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n  var canCellFit = this._getCanCellFit();\n\n  this.cells.forEach( function( cell, i ) {\n    // just add cell if first cell in slide\n    if ( !slide.cells.length ) {\n      slide.addCell( cell );\n      return;\n    }\n\n    var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n      ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n    if ( canCellFit.call( this, i, slideWidth ) ) {\n      slide.addCell( cell );\n    } else {\n      // doesn't fit, new slide\n      slide.updateTarget();\n\n      slide = new Slide( this );\n      this.slides.push( slide );\n      slide.addCell( cell );\n    }\n  }, this );\n  // last slide\n  slide.updateTarget();\n  // update .selectedSlide\n  this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n  var groupCells = this.options.groupCells;\n  if ( !groupCells ) {\n    return function() {\n      return false;\n    };\n  } else if ( typeof groupCells == 'number' ) {\n    // group by number. 3 -> [0,1,2], [3,4,5], ...\n    var number = parseInt( groupCells, 10 );\n    return function( i ) {\n      return ( i % number ) !== 0;\n    };\n  }\n  // default, group by width of slide\n  // parse '75%\n  var percentMatch = typeof groupCells == 'string' &&\n    groupCells.match(/^(\\d+)%$/);\n  var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n  return function( i, slideWidth ) {\n    return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n  };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n  this.positionCells();\n  this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n  this.setCellAlign();\n  this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n  // cell align, then based on origin side\n  center: {\n    left: 0.5,\n    right: 0.5\n  },\n  left: {\n    left: 0,\n    right: 1\n  },\n  right: {\n    right: 0,\n    left: 1\n  }\n};\n\nproto.setCellAlign = function() {\n  var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n  this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n  if ( this.options.setGallerySize ) {\n    var height = this.options.adaptiveHeight && this.selectedSlide ?\n      this.selectedSlide.height : this.maxCellHeight;\n    this.viewport.style.height = height + 'px';\n  }\n};\n\nproto._getWrapShiftCells = function() {\n  // only for wrap-around\n  if ( !this.options.wrapAround ) {\n    return;\n  }\n  // unshift previous cells\n  this._unshiftCells( this.beforeShiftCells );\n  this._unshiftCells( this.afterShiftCells );\n  // get before cells\n  // initial gap\n  var gapX = this.cursorPosition;\n  var cellIndex = this.cells.length - 1;\n  this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n  // get after cells\n  // ending gap between last cell and end of gallery viewport\n  gapX = this.size.innerWidth - this.cursorPosition;\n  // start cloning at first cell, working forwards\n  this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n  // keep adding cells until the cover the initial gap\n  var cells = [];\n  while ( gapX > 0 ) {\n    var cell = this.cells[ cellIndex ];\n    if ( !cell ) {\n      break;\n    }\n    cells.push( cell );\n    cellIndex += increment;\n    gapX -= cell.size.outerWidth;\n  }\n  return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n  if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n    return;\n  }\n  var isRightToLeft = this.options.rightToLeft;\n  var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n  var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n  var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n  // content is less than gallery size\n  var isContentSmaller = contentWidth < this.size.innerWidth;\n  // bounds\n  var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n  var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n  // contain each cell target\n  this.slides.forEach( function( slide ) {\n    if ( isContentSmaller ) {\n      // all cells fit inside gallery\n      slide.target = contentWidth * this.cellAlign;\n    } else {\n      // contain to bounds\n      slide.target = Math.max( slide.target, beginBound );\n      slide.target = Math.min( slide.target, endBound );\n    }\n  }, this );\n};\n\n// -----  ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n  var emitArgs = event ? [ event ].concat( args ) : args;\n  this.emitEvent( type, emitArgs );\n\n  if ( jQuery && this.$element ) {\n    // default trigger with type if no event\n    type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n    var $event = type;\n    if ( event ) {\n      // create jQuery event\n      var jQEvent = jQuery.Event( event );\n      jQEvent.type = type;\n      $event = jQEvent;\n    }\n    this.$element.trigger( $event, args );\n  }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n  if ( !this.isActive ) {\n    return;\n  }\n  index = parseInt( index, 10 );\n  this._wrapSelect( index );\n\n  if ( this.options.wrapAround || isWrap ) {\n    index = utils.modulo( index, this.slides.length );\n  }\n  // bail if invalid index\n  if ( !this.slides[ index ] ) {\n    return;\n  }\n  var prevIndex = this.selectedIndex;\n  this.selectedIndex = index;\n  this.updateSelectedSlide();\n  if ( isInstant ) {\n    this.positionSliderAtSelected();\n  } else {\n    this.startAnimation();\n  }\n  if ( this.options.adaptiveHeight ) {\n    this.setGallerySize();\n  }\n  // events\n  this.dispatchEvent( 'select', null, [ index ] );\n  // change event if new index\n  if ( index != prevIndex ) {\n    this.dispatchEvent( 'change', null, [ index ] );\n  }\n  // old v1 event name, remove in v3\n  this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n  var len = this.slides.length;\n  var isWrapping = this.options.wrapAround && len > 1;\n  if ( !isWrapping ) {\n    return index;\n  }\n  var wrapIndex = utils.modulo( index, len );\n  // go to shortest\n  var delta = Math.abs( wrapIndex - this.selectedIndex );\n  var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n  var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n  if ( !this.isDragSelect && backWrapDelta < delta ) {\n    index += len;\n  } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n    index -= len;\n  }\n  // wrap position so slider is within normal area\n  if ( index < 0 ) {\n    this.x -= this.slideableWidth;\n  } else if ( index >= len ) {\n    this.x += this.slideableWidth;\n  }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n  var slide = this.slides[ this.selectedIndex ];\n  // selectedIndex could be outside of slides, if triggered before resize()\n  if ( !slide ) {\n    return;\n  }\n  // unselect previous selected slide\n  this.unselectSelectedSlide();\n  // update new selected slide\n  this.selectedSlide = slide;\n  slide.select();\n  this.selectedCells = slide.cells;\n  this.selectedElements = slide.getCellElements();\n  // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n  // Remove in v3?\n  this.selectedCell = slide.cells[0];\n  this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n  if ( this.selectedSlide ) {\n    this.selectedSlide.unselect();\n  }\n};\n\nproto.selectInitialIndex = function() {\n  var initialIndex = this.options.initialIndex;\n  // already activated, select previous selectedIndex\n  if ( this.isInitActivated ) {\n    this.select( this.selectedIndex, false, true );\n    return;\n  }\n  // select with selector string\n  if ( initialIndex && typeof initialIndex == 'string' ) {\n    var cell = this.queryCell( initialIndex );\n    if ( cell ) {\n      this.selectCell( initialIndex, false, true );\n      return;\n    }\n  }\n\n  var index = 0;\n  // select with number\n  if ( initialIndex && this.slides[ initialIndex ] ) {\n    index = initialIndex;\n  }\n  // select instantly\n  this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n  // get cell\n  var cell = this.queryCell( value );\n  if ( !cell ) {\n    return;\n  }\n\n  var index = this.getCellSlideIndex( cell );\n  this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n  // get index of slides that has cell\n  for ( var i=0; i < this.slides.length; i++ ) {\n    var slide = this.slides[i];\n    var index = slide.cells.indexOf( cell );\n    if ( index != -1 ) {\n      return i;\n    }\n  }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.getCell = function( elem ) {\n  // loop through cells to get the one that matches\n  for ( var i=0; i < this.cells.length; i++ ) {\n    var cell = this.cells[i];\n    if ( cell.element == elem ) {\n      return cell;\n    }\n  }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n  elems = utils.makeArray( elems );\n  var cells = [];\n  elems.forEach( function( elem ) {\n    var cell = this.getCell( elem );\n    if ( cell ) {\n      cells.push( cell );\n    }\n  }, this );\n  return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function( elem ) {\n  // first check if elem is cell\n  var cell = this.getCell( elem );\n  if ( cell ) {\n    return cell;\n  }\n  // try to get parent cell elem\n  elem = utils.getParent( elem, '.flickity-slider > *' );\n  return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n  if ( !adjCount ) {\n    return this.selectedSlide.getCellElements();\n  }\n  index = index === undefined ? this.selectedIndex : index;\n\n  var len = this.slides.length;\n  if ( 1 + ( adjCount * 2 ) >= len ) {\n    return this.getCellElements();\n  }\n\n  var cellElems = [];\n  for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n    var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n    var slide = this.slides[ slideIndex ];\n    if ( slide ) {\n      cellElems = cellElems.concat( slide.getCellElements() );\n    }\n  }\n  return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n  if ( typeof selector == 'number' ) {\n    // use number as index\n    return this.cells[ selector ];\n  }\n  if ( typeof selector == 'string' ) {\n    // do not select invalid selectors from hash: #123, #/. #791\n    if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n      return;\n    }\n    // use string as selector, get element\n    selector = this.element.querySelector( selector );\n  }\n  // get cell from element\n  return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n  this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n  // HACK iOS does not allow touch events to bubble up?!\n  if ( event.type != 'touchstart' ) {\n    event.preventDefault();\n  }\n  this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n  this.watchCSS();\n  this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.getSize();\n  // wrap values\n  if ( this.options.wrapAround ) {\n    this.x = utils.modulo( this.x, this.slideableWidth );\n  }\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  this.emitEvent('resize');\n  // update selected index for group slides, instant\n  // TODO: position can be lost between groups of various numbers\n  var selectedElement = this.selectedElements && this.selectedElements[0];\n  this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n  var watchOption = this.options.watchCSS;\n  if ( !watchOption ) {\n    return;\n  }\n\n  var afterContent = getComputedStyle( this.element, ':after' ).content;\n  // activate if :after { content: 'flickity' }\n  if ( afterContent.indexOf('flickity') != -1 ) {\n    this.activate();\n  } else {\n    this.deactivate();\n  }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n  // only work if element is in focus\n  var isNotFocused = document.activeElement && document.activeElement != this.element;\n  if ( !this.options.accessibility ||isNotFocused ) {\n    return;\n  }\n\n  var handler = Flickity.keyboardHandlers[ event.keyCode ];\n  if ( handler ) {\n    handler.call( this );\n  }\n};\n\nFlickity.keyboardHandlers = {\n  // left arrow\n  37: function() {\n    var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n    this.uiChange();\n    this[ leftMethod ]();\n  },\n  // right arrow\n  39: function() {\n    var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n    this.uiChange();\n    this[ rightMethod ]();\n  },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n  // TODO remove scrollTo once focus options gets more support\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n  var prevScrollY = window.pageYOffset;\n  this.element.focus({ preventScroll: true });\n  // hack to fix scroll jump after focus, #76\n  if ( window.pageYOffset != prevScrollY ) {\n    window.scrollTo( window.pageXOffset, prevScrollY );\n  }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.element.classList.remove('flickity-enabled');\n  this.element.classList.remove('flickity-rtl');\n  this.unselectSelectedSlide();\n  // destroy cells\n  this.cells.forEach( function( cell ) {\n    cell.destroy();\n  });\n  this.element.removeChild( this.viewport );\n  // move child elements back into element\n  moveElements( this.slider.children, this.element );\n  if ( this.options.accessibility ) {\n    this.element.removeAttribute('tabIndex');\n    this.element.removeEventListener( 'keydown', this );\n  }\n  // set flags\n  this.isActive = false;\n  this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n  this.deactivate();\n  window.removeEventListener( 'resize', this );\n  this.allOff();\n  this.emitEvent('destroy');\n  if ( jQuery && this.$element ) {\n    jQuery.removeData( this.element, 'flickity' );\n  }\n  delete this.element.flickityGUID;\n  delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var id = elem && elem.flickityGUID;\n  return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n  jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n  jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/flickity.js\n// module id = 10\n// module chunks = 0","// Create Element.remove() function if not exist // BECAUSE IE 11\r\nif (!('remove' in Element.prototype)) {\r\n    Element.prototype.remove = function() {\r\n        if (this.parentNode) {\r\n            this.parentNode.removeChild(this);\r\n        }\r\n    };\r\n}\r\n\r\n// var stokpress = {};\r\n\r\nexport const stokpress = {\r\n  init() {\r\n    return true\r\n  },\r\n\r\n  strToBool(str) {\r\n    console.log(typeof str);\r\n    if(typeof str == 'boolean') {\r\n      return str;\r\n    }\r\n    switch(str.toLowerCase().trim()){\r\n      case 'true': case 'yes': case '1': return true;\r\n      case 'false': case 'no': case '0': case null: return false;\r\n      default: return Boolean(str);\r\n    }\r\n  },\r\n\r\n  findAncestor(el, cls) {\r\n    while ((el = el.parentElement) && !el.classList.contains(cls));\r\n    return el;\r\n  },\r\n\r\n  isMobile() {\r\n      let result = false;\r\n      ( function ( a ) {\r\n        result = /Android|webOS|iPhone|iPad|BlackBerry|Windows Phone|Opera Mini|IEMobile|Mobile/i.test( a );\r\n      } )( navigator.userAgent || navigator.vendor || window.opera );\r\n\r\n      return result;\r\n  },\r\n\r\n  isInView(el, view) {\r\n    var rect = el.getBoundingClientRect();\r\n    var html = document.documentElement;\r\n\r\n    if(view == 'completely') {\r\n      // to check if completely visible\r\n      return (\r\n        rect.top >= 0 &&\r\n        rect.bottom <= (window.innerHeight || html.clientHeight)\r\n      );\r\n    } else if(view == 'partially') {\r\n      // to check if partially visible\r\n      return (\r\n        rect.bottom >= 0 &&\r\n        rect.top < (window.innerHeight || html.clientHeight)\r\n      );\r\n    } else {\r\n      // if partially visible or above current fold,\r\n      return (\r\n        rect.top < (window.innerHeight || html.clientHeight)\r\n      );\r\n    }\r\n  },\r\n\r\n  getScript(source, callback) {\r\n      var script = document.createElement( 'script' );\r\n      var prior = document.getElementsByTagName( 'script' )[0];\r\n      script.async = 1;\r\n\r\n      script.onload = script.onreadystatechange = function ( _, isAbort ) {\r\n        if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {\r\n          script.onload = script.onreadystatechange = null;\r\n          script = undefined;\r\n\r\n          if ( !isAbort ) {\r\n            if ( callback ) {\r\n              callback();\r\n            }\r\n          }\r\n        }\r\n      };\r\n\r\n      script.src = source;\r\n      prior.parentNode.insertBefore( script, prior );\r\n  },\r\n\r\n  setCookie(cname, cvalue, exdays) {\r\n    var d = new Date();\r\n    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n    var expires = 'expires=' + d.toUTCString();\r\n    document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n  },\r\n\r\n  getCookie(cname) {\r\n    var name = cname + '=';\r\n    var decodedCookie = decodeURIComponent(document.cookie);\r\n    var ca = decodedCookie.split(';');\r\n    for(var i = 0; i <ca.length; i++) {\r\n        var c = ca[i];\r\n        while (c.charAt(0) == ' ') {\r\n            c = c.substring(1);\r\n        }\r\n        if (c.indexOf(name) == 0) {\r\n            return c.substring(name.length, c.length);\r\n        }\r\n    }\r\n    return '';\r\n  },\r\n}\r\n\r\nexport const stokpressViewPort = {\r\n  init() {\r\n    return true\r\n  },\r\n\r\n  documentWidth() {\r\n    let e = window, a = 'inner';\r\n\r\n    if( !( 'innerWidth' in window ) ) {\r\n      a = 'client';\r\n      e = document.documentElement || document.body;\r\n    }\r\n\r\n    return { width : e[ a+'Width' ] , height : e[ a+'Height' ] };\r\n  },\r\n}\r\n\r\n// stokpress.cartItems;\r\n\r\n// stokpress.cartHeight = function() {\r\n//   var e = window, a = 'inner';\r\n\r\n//   if( !( 'innerHeight' in window ) ) {\r\n//     a = 'client';\r\n//     e = document.documentElement || document.body;\r\n//   }\r\n\r\n//   (function () {\r\n//       if ( typeof NodeList.prototype.forEach === 'function' ) return false;\r\n//       NodeList.prototype.forEach = Array.prototype.forEach;\r\n//   })();\r\n\r\n//   stokpress.cartItems.forEach(function(element) {\r\n//     element.style.setProperty('--cartheight', e[ a+'Height' ]+'px');\r\n//   });\r\n// }\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/helper.js","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n    passiveListener: function checkPassiveListener() {\n      let supportsPassive = false;\n\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          }\n\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {// No support\n      }\n\n      return supportsPassive;\n    }(),\n    gestures: function checkGestures() {\n      return 'ongesturestart' in window;\n    }()\n  };\n}\n\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n\n  return support;\n}\n\nexport { getSupport };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-support.js\n// module id = 12\n// module chunks = 0 1","export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n\n  swiper.emit(`transition${step}`);\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n\n    swiper.emit(`slideChangeTransition${step}`);\n\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEmit.js\n// module id = 13\n// module chunks = 0 1","export default function classesToSelector(classes = '') {\n  return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/classes-to-selector.js\n// module id = 14\n// module chunks = 0 1","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, window */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD - RequireJS\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory();\n  } else {\n    // Browser globals\n    global.EvEmitter = factory();\n  }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // set events hash\n  var events = this._events = this._events || {};\n  // set listeners array\n  var listeners = events[ eventName ] = events[ eventName ] || [];\n  // only add once\n  if ( listeners.indexOf( listener ) == -1 ) {\n    listeners.push( listener );\n  }\n\n  return this;\n};\n\nproto.once = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // add event\n  this.on( eventName, listener );\n  // set once flag\n  // set onceEvents hash\n  var onceEvents = this._onceEvents = this._onceEvents || {};\n  // set onceListeners object\n  var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n  // set flag\n  onceListeners[ listener ] = true;\n\n  return this;\n};\n\nproto.off = function( eventName, listener ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  var index = listeners.indexOf( listener );\n  if ( index != -1 ) {\n    listeners.splice( index, 1 );\n  }\n\n  return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  // copy over to avoid interference if .off() in listener\n  listeners = listeners.slice(0);\n  args = args || [];\n  // once stuff\n  var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n  for ( var i=0; i < listeners.length; i++ ) {\n    var listener = listeners[i]\n    var isOnce = onceListeners && onceListeners[ listener ];\n    if ( isOnce ) {\n      // remove listener\n      // remove before trigger to prevent recursion\n      this.off( eventName, listener );\n      // unset once flag\n      delete onceListeners[ listener ];\n    }\n    // trigger listener\n    listener.apply( this, args );\n  }\n\n  return this;\n};\n\nproto.allOff = function() {\n  delete this._events;\n  delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/ev-emitter/ev-emitter.js\n// module id = 15\n// module chunks = 0","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n  /* jshint strict: false */ /* globals define, module */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.getSize = factory();\n  }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n  var num = parseFloat( value );\n  // not a percent like '100%', and a number\n  var isValid = value.indexOf('%') == -1 && !isNaN( num );\n  return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n  function( message ) {\n    console.error( message );\n  };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n  'paddingLeft',\n  'paddingRight',\n  'paddingTop',\n  'paddingBottom',\n  'marginLeft',\n  'marginRight',\n  'marginTop',\n  'marginBottom',\n  'borderLeftWidth',\n  'borderRightWidth',\n  'borderTopWidth',\n  'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n  var size = {\n    width: 0,\n    height: 0,\n    innerWidth: 0,\n    innerHeight: 0,\n    outerWidth: 0,\n    outerHeight: 0\n  };\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    size[ measurement ] = 0;\n  }\n  return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    logError( 'Style returned ' + style +\n      '. Are you running this code in a hidden iframe on Firefox? ' +\n      'See https://bit.ly/getsizebug1' );\n  }\n  return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n  // setup once\n  if ( isSetup ) {\n    return;\n  }\n  isSetup = true;\n\n  // -------------------------- box sizing -------------------------- //\n\n  /**\n   * Chrome & Safari measure the outer-width on style.width on border-box elems\n   * IE11 & Firefox<29 measures the inner-width\n   */\n  var div = document.createElement('div');\n  div.style.width = '200px';\n  div.style.padding = '1px 2px 3px 4px';\n  div.style.borderStyle = 'solid';\n  div.style.borderWidth = '1px 2px 3px 4px';\n  div.style.boxSizing = 'border-box';\n\n  var body = document.body || document.documentElement;\n  body.appendChild( div );\n  var style = getStyle( div );\n  // round value for browser zoom. desandro/masonry#928\n  isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n  getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n  body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n  setup();\n\n  // use querySeletor if elem is string\n  if ( typeof elem == 'string' ) {\n    elem = document.querySelector( elem );\n  }\n\n  // do not proceed on non-objects\n  if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n    return;\n  }\n\n  var style = getStyle( elem );\n\n  // if hidden, everything is 0\n  if ( style.display == 'none' ) {\n    return getZeroSize();\n  }\n\n  var size = {};\n  size.width = elem.offsetWidth;\n  size.height = elem.offsetHeight;\n\n  var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n  // get all measurements\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    var value = style[ measurement ];\n    var num = parseFloat( value );\n    // any 'auto', 'medium' value will be 0\n    size[ measurement ] = !isNaN( num ) ? num : 0;\n  }\n\n  var paddingWidth = size.paddingLeft + size.paddingRight;\n  var paddingHeight = size.paddingTop + size.paddingBottom;\n  var marginWidth = size.marginLeft + size.marginRight;\n  var marginHeight = size.marginTop + size.marginBottom;\n  var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n  var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n  var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n  // overwrite width and height if we can get it from style\n  var styleWidth = getStyleSize( style.width );\n  if ( styleWidth !== false ) {\n    size.width = styleWidth +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n  }\n\n  var styleHeight = getStyleSize( style.height );\n  if ( styleHeight !== false ) {\n    size.height = styleHeight +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n  }\n\n  size.innerWidth = size.width - ( paddingWidth + borderWidth );\n  size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n  size.outerWidth = size.width + marginWidth;\n  size.outerHeight = size.height + marginHeight;\n\n  return size;\n}\n\nreturn getSize;\n\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/get-size/get-size.js\n// module id = 16\n// module chunks = 0","/**\n * Swiper 7.2.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2021 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: October 27, 2021\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/swiper.esm.js\n// module id = 17\n// module chunks = 0 1","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events,\n  breakpoints,\n  checkOverflow,\n  classes,\n  images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n  constructor(...args) {\n    let el;\n    let params;\n\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    if (params.el && $(params.el).length > 1) {\n      const swipers = [];\n      $(params.el).each(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    } // Swiper Instance\n\n\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    }); // Extend defaults with modules params\n\n    const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params); // add event listeners\n\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    } // Save Dom lib\n\n\n    swiper.$ = $; // Extend Swiper\n\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEvents: function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3]\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2]\n        };\n        return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }(),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper'); // Init\n\n    if (swiper.params.init) {\n      swiper.init();\n    } // Return app instance\n\n\n    return swiper;\n  }\n\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    swiper.emit('enable');\n  }\n\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n\n    swiper.emit('disable');\n  }\n\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.each(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n\n  slidesPerViewDynamic(view = 'current', exact = false) {\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper; // Breakpoints\n\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n\n    let translated;\n\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n      setTranslate();\n\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n\n      if (!translated) {\n        setTranslate();\n      }\n    }\n\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n\n    swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.each(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n\n  mount(el) {\n    const swiper = this;\n    if (swiper.mounted) return true; // Find el\n\n    const $el = $(el || swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return false;\n    }\n\n    el.swiper = swiper;\n\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n        res.children = options => $el.children(options);\n\n        return res;\n      }\n\n      return $el.children(getWrapperSelector());\n    }; // Find Wrapper\n\n\n    let $wrapperEl = getWrapper();\n\n    if ($wrapperEl.length === 0 && swiper.params.createElements) {\n      const document = getDocument();\n      const wrapper = document.createElement('div');\n      $wrapperEl = $(wrapper);\n      wrapper.className = swiper.params.wrapperClass;\n      $el.append(wrapper);\n      $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n        $wrapperEl.append(slideEl);\n      });\n    }\n\n    Object.assign(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n    });\n    return true;\n  }\n\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit'); // Set breakpoint\n\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    } // Add Classes\n\n\n    swiper.addClasses(); // Create loop\n\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    } // Update size\n\n\n    swiper.updateSize(); // Update slides\n\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    } // Set Grab Cursor\n\n\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    } // Slide To Initial Slide\n\n\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    } // Attach events\n\n\n    swiper.attachEvents(); // Init Flag\n\n    swiper.initialized = true; // Emit\n\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params,\n      $el,\n      $wrapperEl,\n      slides\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy'); // Init Flag\n\n    swiper.initialized = false; // Detach events\n\n    swiper.detachEvents(); // Destroy loop\n\n    if (params.loop) {\n      swiper.loopDestroy();\n    } // Cleanup styles\n\n\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n\n      if (slides && slides.length) {\n        slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy'); // Detach emitter events\n\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      deleteProps(swiper);\n    }\n\n    swiper.destroyed = true;\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n\n    Swiper.installModule(module);\n    return Swiper;\n  }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/core.js\n// module id = 18\n// module chunks = 0 1","/**\n * Dom7 4.0.1\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: October 27, 2021\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n  const proto = obj.__proto__;\n  Object.defineProperty(obj, '__proto__', {\n    get() {\n      return proto;\n    },\n\n    set(value) {\n      proto.__proto__ = value;\n    }\n\n  });\n}\n\nclass Dom7 extends Array {\n  constructor(items) {\n    super(...(items || []));\n    makeReactive(this);\n  }\n\n}\n\nfunction arrayFlat(arr = []) {\n  const res = [];\n  arr.forEach(el => {\n    if (Array.isArray(el)) {\n      res.push(...arrayFlat(el));\n    } else {\n      res.push(el);\n    }\n  });\n  return res;\n}\nfunction arrayFilter(arr, callback) {\n  return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n  const uniqueArray = [];\n\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n  if (typeof selector !== 'string') {\n    return [selector];\n  }\n\n  const a = [];\n  const res = context.querySelectorAll(selector);\n\n  for (let i = 0; i < res.length; i += 1) {\n    a.push(res[i]);\n  }\n\n  return a;\n}\n\nfunction $(selector, context) {\n  const window = getWindow();\n  const document = getDocument();\n  let arr = [];\n\n  if (!context && selector instanceof Dom7) {\n    return selector;\n  }\n\n  if (!selector) {\n    return new Dom7(arr);\n  }\n\n  if (typeof selector === 'string') {\n    const html = selector.trim();\n\n    if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n      let toCreate = 'div';\n      if (html.indexOf('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.add(...classNames);\n  });\n  return this;\n}\n\nfunction removeClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    el.classList.remove(...classNames);\n  });\n  return this;\n}\n\nfunction toggleClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  this.forEach(el => {\n    classNames.forEach(className => {\n      el.classList.toggle(className);\n    });\n  });\n}\n\nfunction hasClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => c.split(' ')));\n  return arrayFilter(this, el => {\n    return classNames.filter(className => el.classList.contains(className)).length > 0;\n  }).length > 0;\n}\n\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  } // Set attrs\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n\n  return this;\n}\n\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction data(key, value) {\n  let el;\n\n  if (typeof value === 'undefined') {\n    el = this[0];\n    if (!el) return undefined; // Get value\n\n    if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n      return el.dom7ElementDataStorage[key];\n    }\n\n    const dataKey = el.getAttribute(`data-${key}`);\n\n    if (dataKey) {\n      return dataKey;\n    }\n\n    return undefined;\n  } // Set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n\n  return this;\n}\n\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\n\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n\n  if (el.dataset) {\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      const attr = el.attributes[i];\n\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n\n  return dataset;\n}\n\nfunction val(value) {\n  if (typeof value === 'undefined') {\n    // get value\n    const el = this[0];\n    if (!el) return undefined;\n\n    if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n      const values = [];\n\n      for (let i = 0; i < el.selectedOptions.length; i += 1) {\n        values.push(el.selectedOptions[i].value);\n      }\n\n      return values;\n    }\n\n    return el.value;\n  } // set value\n\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n\n  return this;\n}\n\nfunction value(value) {\n  return this.val(value);\n}\n\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transform = transform;\n  }\n\n  return this;\n}\n\nfunction transition(duration) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n  }\n\n  return this;\n}\n\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n      const parents = $(target).parents(); // eslint-disable-line\n\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n\n    listener.apply(this, eventData);\n  }\n\n  const events = eventType.split(' ');\n  let j;\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  if (!capture) capture = false;\n  const events = eventType.split(' ');\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n  const window = getWindow();\n  const events = args[0].split(' ');\n  const eventData = args[1];\n\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n\n      if (window.CustomEvent) {\n        const evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true\n        });\n        el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n        el.dispatchEvent(evt);\n        el.dom7EventData = [];\n        delete el.dom7EventData;\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction transitionEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction animationEnd(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('animationend', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('animationend', fireCallBack);\n  }\n\n  return this;\n}\n\nfunction width() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\n\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n\n    return this[0].offsetWidth;\n  }\n\n  return null;\n}\n\nfunction height() {\n  const window = getWindow();\n\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\n\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n\n    return this[0].offsetHeight;\n  }\n\n  return null;\n}\n\nfunction offset() {\n  if (this.length > 0) {\n    const window = getWindow();\n    const document = getDocument();\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: box.top + scrollTop - clientTop,\n      left: box.left + scrollLeft - clientLeft\n    };\n  }\n\n  return null;\n}\n\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n\n  return this;\n}\n\nfunction show() {\n  const window = getWindow();\n\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n\n  return this;\n}\n\nfunction styles() {\n  const window = getWindow();\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\n\nfunction css(props, value) {\n  const window = getWindow();\n  let i;\n\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      // .css('width')\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      // .css({ width: '100px' })\n      for (i = 0; i < this.length; i += 1) {\n        for (const prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n\n      return this;\n    }\n  }\n\n  if (arguments.length === 2 && typeof props === 'string') {\n    // .css('width', '100px')\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n\n    return this;\n  }\n\n  return this;\n}\n\nfunction each(callback) {\n  if (!callback) return this;\n  this.forEach((el, index) => {\n    callback.apply(el, [el, index]);\n  });\n  return this;\n}\n\nfunction filter(callback) {\n  const result = arrayFilter(this, callback);\n  return $(result);\n}\n\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n\n  return this;\n}\n\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    return this[0] ? this[0].textContent.trim() : null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n\n  return this;\n}\n\nfunction is(selector) {\n  const window = getWindow();\n  const document = getDocument();\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n    compareWith = $(selector);\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  if (selector === document) {\n    return el === document;\n  }\n\n  if (selector === window) {\n    return el === window;\n  }\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n\n    return false;\n  }\n\n  return false;\n}\n\nfunction index() {\n  let child = this[0];\n  let i;\n\n  if (child) {\n    i = 0; // eslint-disable-next-line\n\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n\n    return i;\n  }\n\n  return undefined;\n}\n\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n\n  if (index > length - 1) {\n    return $([]);\n  }\n\n  if (index < 0) {\n    const returnIndex = length + index;\n    if (returnIndex < 0) return $([]);\n    return $([this[returnIndex]]);\n  }\n\n  return $([this[index]]);\n}\n\nfunction append(...els) {\n  let newChild;\n  const document = getDocument();\n\n  for (let k = 0; k < els.length; k += 1) {\n    newChild = els[k];\n\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\n\nfunction prepend(newChild) {\n  const document = getDocument();\n  let i;\n  let j;\n\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n\n  return this;\n}\n\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\n\nfunction insertBefore(selector) {\n  const before = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\n\nfunction insertAfter(selector) {\n  const after = $(selector);\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\n\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return $([this[0].nextElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n\n    el = next;\n  }\n\n  return $(nextEls);\n}\n\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return $([el.previousElementSibling]);\n      }\n\n      return $([]);\n    }\n\n    if (el.previousElementSibling) return $([el.previousElementSibling]);\n    return $([]);\n  }\n\n  return $([]);\n}\n\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return $([]);\n\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n\n    el = prev;\n  }\n\n  return $(prevEls);\n}\n\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n\n  return $(parents);\n}\n\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n\n      parent = parent.parentNode;\n    }\n  }\n\n  return $(parents);\n}\n\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n\n  if (typeof selector === 'undefined') {\n    return $([]);\n  }\n\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n\n  return closest;\n}\n\nfunction find(selector) {\n  const foundElements = [];\n\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n\n  return $(foundElements);\n}\n\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].children;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector || $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n\n  return $(children);\n}\n\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n\n  return this;\n}\n\nfunction detach() {\n  return this.remove();\n}\n\nfunction add(...els) {\n  const dom = this;\n  let i;\n  let j;\n\n  for (i = 0; i < els.length; i += 1) {\n    const toAdd = $(els[i]);\n\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom.push(toAdd[j]);\n    }\n  }\n\n  return dom;\n}\n\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n\n      el.textContent = '';\n    }\n  }\n\n  return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n  const window = getWindow();\n  let [left, top, duration, easing, callback] = args;\n\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n\n  if (typeof easing === 'undefined') easing = 'swing';\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n\n    let scrollLeft; // eslint-disable-line\n\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n\n    if (animateTop) {\n      currentTop = el.scrollTop;\n\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n\n    if (!duration) return;\n\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n      let done;\n      if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n      if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      window.requestAnimationFrame(render);\n    }\n\n    window.requestAnimationFrame(render);\n  });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n\n  const dom = this;\n\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n  const window = getWindow();\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing' // or 'linear'\n\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n\n    }, initialParams),\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - Math.cos(progress * Math.PI) / 2;\n      }\n\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n\n      return progress;\n    },\n\n    stop() {\n      if (a.frameId) {\n        window.cancelAnimationFrame(a.frameId);\n      }\n\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n\n    done(complete) {\n      a.animating = false;\n      a.elements.each(el => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n\n      const elements = []; // Define & Cache Initials & Units\n\n      a.elements.each((el, index) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n        elements[index] = {\n          container: el\n        };\n        Object.keys(props).forEach(prop => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue\n          };\n        });\n      });\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress; // let el;\n\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n\n        if (startTime === null) {\n          startTime = time;\n        }\n\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n        }\n\n        elements.forEach(element => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach(prop => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const {\n              initialValue,\n              finalValue,\n              unit\n            } = el[prop];\n            el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n            const currentValue = el[prop].currentValue;\n\n            if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return; // Then call\n\n        a.frameId = window.requestAnimationFrame(render);\n      }\n\n      a.frameId = window.requestAnimationFrame(render);\n      return a;\n    }\n\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n  function eventHandler(...args) {\n    if (typeof args[0] === 'undefined') {\n      for (let i = 0; i < this.length; i += 1) {\n        if (noTrigger.indexOf(name) < 0) {\n          if (name in this[i]) this[i][name]();else {\n            $(this[i]).trigger(name);\n          }\n        }\n      }\n\n      return this;\n    }\n\n    return this.on(name, ...args);\n  }\n\n  return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/dom7/dom7.esm.js\n// module id = 19\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n  userAgent\n} = {}) {\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  } // Android\n\n\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  } // Export object\n\n\n  return device;\n}\n\nfunction getDevice(overrides = {}) {\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n\n  return deviceCached;\n}\n\nexport { getDevice };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-device.js\n// module id = 20\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n  const window = getWindow();\n\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n\n  return {\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\n\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n\n  return browser;\n}\n\nexport { getBrowser };\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/shared/get-browser.js\n// module id = 21\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  let observer = null;\n\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      const {\n        width,\n        height\n      } = swiper;\n      let newWidth = width;\n      let newHeight = height;\n      entries.forEach(({\n        contentBoxSize,\n        contentRect,\n        target\n      }) => {\n        if (target && target !== swiper.el) return;\n        newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n        newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n      });\n\n      if (newWidth !== width || newHeight !== height) {\n        resizeHandler();\n      }\n    });\n    observer.observe(swiper.el);\n  };\n\n  const removeObserver = () => {\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/resize/resize.js\n// module id = 22\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function Observer({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n\n  const init = () => {\n    if (!swiper.params.observer) return;\n\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    } // Observe container\n\n\n    attach(swiper.$el[0], {\n      childList: swiper.params.observeSlideChildren\n    }); // Observe wrapper\n\n    attach(swiper.$wrapperEl[0], {\n      attributes: false\n    });\n  };\n\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/modules/observer/observer.js\n// module id = 23\n// module chunks = 0 1","/* eslint-disable no-underscore-dangle */\nexport default {\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n\n      handler.apply(self, args);\n    }\n\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n\n  onAny(handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n\n    return self;\n  },\n\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n\n    return self;\n  },\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events-emitter.js\n// module id = 24\n// module chunks = 0 1","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/index.js\n// module id = 25\n// module chunks = 0 1","export default function updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  } // Subtract paddings\n\n\n  width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n  height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSize.js\n// module id = 26\n// module chunks = 0 1","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n  const swiper = this;\n\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    } // prettier-ignore\n\n\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n\n  const params = swiper.params;\n  const {\n    $wrapperEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween; // reset margins\n\n  if (rtl) slides.css({\n    marginLeft: '',\n    marginBottom: '',\n    marginTop: ''\n  });else slides.css({\n    marginRight: '',\n    marginBottom: '',\n    marginTop: ''\n  }); // reset cssMode offsets\n\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n  }\n\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  } // Calc slides\n\n\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n\n      const slideStyles = getComputedStyle(slide[0]);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide[0];\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n\n    slidesSizesGrid.push(slideSize);\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({\n      width: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (params.setWrapperSize) {\n    $wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n    });\n  }\n\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  } // Remove last grid elements depending on width\n\n\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n\n    snapGrid = newSlidesGrid;\n\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode) return true;\n\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n\n      return true;\n    }).css({\n      [key]: `${spaceBetween}px`\n    });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlides.js\n// module id = 27\n// module chunks = 0 1","export default function updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n    }\n\n    return swiper.slides.eq(index)[0];\n  }; // Find slides currently in view\n\n\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  } // Find new height from highest slide in view\n\n\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  } // Update Height\n\n\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateAutoHeight.js\n// module id = 28\n// module chunks = 0 1","export default function updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesOffset.js\n// module id = 29\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate; // Visible Slides\n\n  slides.removeClass(params.slideVisibleClass);\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides.eq(i).addClass(params.slideVisibleClass);\n    }\n\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesProgress.js\n// module id = 30\n// module chunks = 0 1","export default function updateProgress(translate) {\n  const swiper = this;\n\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n\n  Object.assign(swiper, {\n    progress,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateProgress.js\n// module id = 31\n// module chunks = 0 1","export default function updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    $wrapperEl,\n    activeIndex,\n    realIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n  let activeSlide;\n\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  } // Active classes\n\n\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n    }\n  } // Next Slide\n\n\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  } // Prev Slide\n\n\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n    }\n\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n    }\n  }\n\n  swiper.emitSlidesClasses();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateSlidesClasses.js\n// module id = 32\n// module chunks = 0 1","export default function updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid,\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    } // Normalize slideIndex\n\n\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n\n    return;\n  } // Get real index\n\n\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n  Object.assign(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateActiveIndex.js\n// module id = 33\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  let slideIndex;\n\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/update/updateClickedSlide.js\n// module id = 34\n// module chunks = 0 1","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/index.js\n// module id = 35\n// module chunks = 0 1","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    $wrapperEl\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/getTranslate.js\n// module id = 36\n// module chunks = 0 1","export default function setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    $wrapperEl,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/setTranslate.js\n// module id = 37\n// module chunks = 0 1","export default function minTranslate() {\n  return -this.snapGrid[0];\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/minTranslate.js\n// module id = 38\n// module chunks = 0 1","export default function maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/maxTranslate.js\n// module id = 39\n// module chunks = 0 1","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n\n    if (!swiper.animating) {\n      swiper.animating = true;\n\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/translate/translateTo.js\n// module id = 40\n// module chunks = 0 1","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/index.js\n// module id = 41\n// module chunks = 0 1","export default function setTransition(duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/setTransition.js\n// module id = 42\n// module chunks = 0 1","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionStart.js\n// module id = 43\n// module chunks = 0 1","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/transition/transitionEnd.js\n// module id = 44\n// module chunks = 0 1","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/index.js\n// module id = 45\n// module chunks = 0 1","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n  if (typeof index !== 'number' && typeof index !== 'string') {\n    throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n  }\n\n  if (typeof index === 'string') {\n    /**\n     * The `index` argument converted from `string` to `number`.\n     * @type {number}\n     */\n    const indexAsNumber = parseInt(index, 10);\n    /**\n     * Determines whether the `index` argument is a valid `number`\n     * after being converted from the `string` type.\n     * @type {boolean}\n     */\n\n    const isValidNumber = isFinite(indexAsNumber);\n\n    if (!isValidNumber) {\n      throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n    } // Knowing that the converted `index` is a valid number,\n    // we can update the original argument's value.\n\n\n    index = indexAsNumber;\n  }\n\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex]; // Update progress\n\n  swiper.updateProgress(translate); // Normalize slideIndex\n\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  } // Directions locks\n\n\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex); // Update Height\n\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n\n    swiper.updateSlidesClasses();\n\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n\n    return false;\n  }\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._swiperImmediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n\n    if (!swiper.animating) {\n      swiper.animating = true;\n\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideTo.js\n// module id = 46\n// module chunks = 0 1","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToLoop.js\n// module id = 47\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    animating,\n    enabled,\n    params\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideNext.js\n// module id = 48\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params,\n    animating,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return swiper;\n\n  if (params.loop) {\n    if (animating && params.loopPreventsSlide) return false;\n    swiper.loopFix(); // eslint-disable-next-line\n\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n\n  let prevIndex = 0;\n\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slidePrev.js\n// module id = 49\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideReset.js\n// module id = 50\n// module chunks = 0 1","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClosest.js\n// module id = 51\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/slide/slideToClickedSlide.js\n// module id = 52\n// module chunks = 0 1","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/index.js\n// module id = 53\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    $wrapperEl\n  } = swiper; // Remove duplicated slides\n\n  const $selector = $($wrapperEl.children()[0].parentNode);\n  $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n  let slides = $selector.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $selector.append(blankNode);\n      }\n\n      slides = $selector.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n\n    if (index < swiper.loopedSlides) {\n      appendSlides.push(el);\n    }\n\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n      prependSlides.push(el);\n    }\n\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopCreate.js\n// module id = 54\n// module chunks = 0 1","export default function loopFix() {\n  const swiper = this;\n  swiper.emit('beforeLoopFix');\n  const {\n    activeIndex,\n    slides,\n    loopedSlides,\n    allowSlidePrev,\n    allowSlideNext,\n    snapGrid,\n    rtlTranslate: rtl\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n  if (activeIndex < loopedSlides) {\n    newIndex = slides.length - loopedSlides * 3 + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  swiper.emit('loopFix');\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopFix.js\n// module id = 55\n// module chunks = 0 1","export default function loopDestroy() {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    slides\n  } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/loop/loopDestroy.js\n// module id = 56\n// module chunks = 0 1","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/index.js\n// module id = 57\n// module chunks = 0 1","export default function setGrabCursor(moving) {\n  const swiper = this;\n  if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/setGrabCursor.js\n// module id = 58\n// module chunks = 0 1","export default function unsetGrabCursor() {\n  const swiper = this;\n\n  if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/grab-cursor/unsetGrabCursor.js\n// module id = 59\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    touchEvents,\n    el,\n    wrapperEl,\n    device,\n    support\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method; // Touch Events\n\n  if (!support.touch) {\n    el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n    document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n    document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n    el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n      passive: false,\n      capture\n    } : capture);\n    el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n    if (touchEvents.cancel) {\n      el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n    }\n  } // Prevent Links Clicks\n\n\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  } // Resize handler\n\n\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n};\n\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params,\n    support\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  if (support.touch && !dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n\n  events(swiper, 'on');\n}\n\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\n\nexport default {\n  attachEvents,\n  detachEvents\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/index.js\n// module id = 60\n// module chunks = 0 1","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    return found || __closestFrom(el.getRootNode().host);\n  }\n\n  return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n    $targetEl = $(event.path[0]);\n  }\n\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, e.target) : $targetEl.closest(noSwipingSelector)[0])) {\n    swiper.allowClick = true;\n    return;\n  }\n\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.focusableElements)) preventDefault = false;\n\n    if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n      document.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n      e.preventDefault();\n    }\n  }\n\n  swiper.emit('touchStart', e);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchStart.js\n// module id = 61\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n\n    return;\n  }\n\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n\n  if (data.isTouchEvent && document.activeElement) {\n    if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n\n  if (!data.startMoving) {\n    return;\n  }\n\n  swiper.allowClick = false;\n\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop && !params.cssMode) {\n      swiper.loopFix();\n    }\n\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n\n    data.allowMomentumBounce = false; // Grab Cursor\n\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n\n    swiper.emit('sliderFirstMove', e);\n  }\n\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n\n  if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  } // Directions locks\n\n\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  } // Threshold\n\n\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  } // Update progress\n\n\n  swiper.updateProgress(data.currentTranslate); // Update translate\n\n  swiper.setTranslate(data.currentTranslate);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchMove.js\n// module id = 62\n// module chunks = 0 1","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n\n  data.allowTouchCallbacks = false;\n\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  } // Return Grab Cursor\n\n\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  } // Time diff\n\n\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (swiper.params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  } // Find current slide\n\n\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  } // Find current slide size\n\n\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onTouchEnd.js\n// module id = 63\n// module chunks = 0 1","export default function onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return; // Breakpoints\n\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  } // Save locks\n\n\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper; // Disable locks on resize\n\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  } // Return locks after resize\n\n\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onResize.js\n// module id = 64\n// module chunks = 0 1","export default function onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onClick.js\n// module id = 65\n// module chunks = 0 1","export default function onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  } // eslint-disable-next-line\n\n\n  if (swiper.translate === -0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/events/onScroll.js\n// module id = 66\n// module chunks = 0 1","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/index.js\n// module id = 67\n// module chunks = 0 1","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n  const swiper = this;\n  const {\n    activeIndex,\n    initialized,\n    loopedSlides = 0,\n    params,\n    $el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n\n  if (wasMultiRow && !isMultiRow) {\n    $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    $el.addClass(`${params.containerModifierClass}grid`);\n\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      $el.addClass(`${params.containerModifierClass}grid-column`);\n    }\n\n    swiper.emitContainerClasses();\n  }\n\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate();\n    swiper.updateSlides();\n    swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n  }\n\n  swiper.emit('breakpoint', breakpointParams);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/setBreakpoint.js\n// module id = 68\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n\n  return breakpoint || 'max';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/breakpoints/getBreakpoint.js\n// module id = 69\n// module chunks = 0 1","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/index.js\n// module id = 70\n// module chunks = 0 1","function prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\n\nexport default function addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    $el,\n    device,\n    support\n  } = swiper; // prettier-ignore\n\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'pointer-events': !support.touch\n  }, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  $el.addClass([...classNames].join(' '));\n  swiper.emitContainerClasses();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/addClasses.js\n// module id = 71\n// module chunks = 0 1","export default function removeClasses() {\n  const swiper = this;\n  const {\n    $el,\n    classNames\n  } = swiper;\n  $el.removeClass(classNames.join(' '));\n  swiper.emitContainerClasses();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/classes/removeClasses.js\n// module id = 72\n// module chunks = 0 1","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/index.js\n// module id = 73\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n  const window = getWindow();\n  let image;\n\n  function onReady() {\n    if (callback) callback();\n  }\n\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n\n      if (sizes) {\n        image.sizes = sizes;\n      }\n\n      if (srcset) {\n        image.srcset = srcset;\n      }\n\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/loadImage.js\n// module id = 74\n// module chunks = 0 1","export default function preloadImages() {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/images/preloadImages.js\n// module id = 75\n// module chunks = 0 1","function checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\n\nexport default {\n  checkOverflow\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/check-overflow/index.js\n// module id = 76\n// module chunks = 0 1","export default {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n  loopPreventsSlide: true,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/defaults.js\n// module id = 77\n// module chunks = 0 1","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj = {}) {\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        auto: true\n      };\n    }\n\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/core/moduleExtendParams.js\n// module id = 78\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n\n    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  }\n\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n\n      swiper.updateProgress();\n      return;\n    }\n\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n\n          return slidesToRender;\n        }()\n      });\n\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      }\n\n      return;\n    }\n\n    const prependIndexes = [];\n    const appendIndexes = [];\n\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n\n    appendIndexes.forEach(index => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach(index => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  }\n\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n\n    update(true);\n  }\n\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    swiper.virtual.slides = swiper.params.virtual.slides;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/virtual/virtual.js\n// module id = 79\n// module chunks = 0 1","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/keyboard/keyboard.js\n// module id = 80\n// module chunks = 0 1","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n    // Legacy\n\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    } // side scrolling on FF with DOMMouseScroll\n\n\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    } // Fall-back if spin cannot be determined\n\n\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    } // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n\n\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    } // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n\n\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    } // If you got here is because an animation has been triggered so store the current time\n\n\n    lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n    return false;\n  }\n\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n\n    return false;\n  }\n\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta; // Get the scroll positions\n\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      }; // Keep the most recent events\n\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      } // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n\n\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        } // Emit event\n\n\n        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n\n    if (swiper.mousewheel.enabled) return false;\n    events('on');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n\n    if (!swiper.mousewheel.enabled) return false;\n    events('off');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/mousewheel/mousewheel.js\n// module id = 81\n// module chunks = 0 1","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $nextEl: null,\n    prevEl: null,\n    $prevEl: null\n  };\n\n  function getEl(el) {\n    let $el;\n\n    if (el) {\n      $el = $(el);\n\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n        $el = swiper.$el.find(el);\n      }\n    }\n\n    return $el;\n  }\n\n  function toggleEl($el, disabled) {\n    const params = swiper.params.navigation;\n\n    if ($el && $el.length > 0) {\n      $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n      if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n      }\n    }\n  }\n\n  function update() {\n    // Update Navigation Buttons\n    if (swiper.params.loop) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    toggleEl($prevEl, swiper.isBeginning);\n    toggleEl($nextEl, swiper.isEnd);\n  }\n\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  }\n\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    const $nextEl = getEl(params.nextEl);\n    const $prevEl = getEl(params.prevEl);\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', onNextClick);\n    }\n\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', onPrevClick);\n    }\n\n    Object.assign(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0]\n    });\n\n    if (!swiper.enabled) {\n      if ($nextEl) $nextEl.addClass(params.lockClass);\n      if ($prevEl) $prevEl.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  }\n\n  on('init', () => {\n    init();\n    update();\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($nextEl) {\n      $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n\n    if ($prevEl) {\n      $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n    }\n  });\n  on('click', (_s, e) => {\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n    const targetEl = e.target;\n\n    if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n\n      if ($nextEl) {\n        isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n      } else if ($prevEl) {\n        isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n\n      if ($nextEl) {\n        $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n\n      if ($prevEl) {\n        $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n      }\n    }\n  });\n  Object.assign(swiper.navigation, {\n    update,\n    init,\n    destroy\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/navigation/navigation.js\n// module id = 82\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n  }\n\n  function setSideBullets($bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n  }\n\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el; // Current/Total\n\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n      if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n        current -= slidesLength - swiper.loopedSlides * 2;\n      }\n\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    } // Types\n\n\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n\n      if (params.dynamicBullets) {\n        bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          dynamicBulletIndex += current - swiper.previousIndex;\n\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n\n        firstIndex = current - dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n\n      bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n      if ($el.length > 1) {\n        bullets.each(bullet => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n\n            if (bulletIndex === firstIndex) {\n              setSideBullets($bullet, 'prev');\n            }\n\n            if (bulletIndex === lastIndex) {\n              setSideBullets($bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              setSideBullets($firstDisplayedBullet, 'prev');\n              setSideBullets($lastDisplayedBullet, 'next');\n            }\n          } else {\n            setSideBullets($firstDisplayedBullet, 'prev');\n            setSideBullets($lastDisplayedBullet, 'next');\n          }\n        }\n      }\n\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n\n    if (params.type === 'fraction') {\n      $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n      $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n    }\n\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n\n      $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      emit('paginationRender', $el[0]);\n    } else {\n      emit('paginationUpdate', $el[0]);\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  }\n\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n    }\n\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n\n      $el.html(paginationHTML);\n    }\n\n    if (params.type !== 'custom') {\n      emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  }\n\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n      $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n      if ($el.length > 1) {\n        $el = $el.filter(el => {\n          if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n          return true;\n        });\n      }\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n    $el.addClass(params.modifierClass + swiper.params.direction);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      dynamicBulletIndex = 0;\n\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Object.assign(swiper.pagination, {\n      $el,\n      el: $el[0]\n    });\n\n    if (!swiper.enabled) {\n      $el.addClass(params.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const $el = swiper.pagination.$el;\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    $el.removeClass(params.modifierClass + swiper.params.direction);\n    if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n    if (params.clickable) {\n      $el.off('click', classesToSelector(params.bulletClass));\n    }\n  }\n\n  on('init', () => {\n    init();\n    render();\n    update();\n  });\n  on('activeIndexChange', () => {\n    if (swiper.params.loop) {\n      update();\n    } else if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    if (!swiper.params.loop) {\n      update();\n    }\n  });\n  on('slidesLengthChange', () => {\n    if (swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('snapGridLengthChange', () => {\n    if (!swiper.params.loop) {\n      render();\n      update();\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.pagination;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const {\n      $el\n    } = swiper.pagination;\n\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n\n      $el.toggleClass(swiper.params.pagination.hiddenClass);\n    }\n  });\n  Object.assign(swiper.pagination, {\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/pagination/pagination.js\n// module id = 83\n// module chunks = 0 1","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag'\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    disableDraggable();\n  }\n\n  on('init', () => {\n    init();\n    updateSize();\n    setTranslate();\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  Object.assign(swiper.scrollbar, {\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/scrollbar/scrollbar.js\n// module id = 84\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nexport default function Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n      setTransform(el, progress);\n    });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n        setTransform(el, slideProgress);\n      });\n    });\n  };\n\n  const setTransition = (duration = swiper.params.speed) => {\n    const {\n      $el\n    } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n      const $parallaxEl = $(parallaxEl);\n      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      $parallaxEl.transition(parallaxDuration);\n    });\n  };\n\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/parallax/parallax.js\n// module id = 85\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\n    $slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    $imageEl: undefined,\n    $imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n\n      scale = value;\n    }\n\n  });\n\n  function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  } // Events\n\n\n  function onGestureStart(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n\n    isScaling = true;\n  }\n\n  function onGestureChange(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    }\n\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function onGestureEnd(e) {\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n\n      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n        return;\n      }\n\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  }\n\n  function onTouchMove(e) {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n    } // Define if we need image drag\n\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    e.stopPropagation();\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    } // Velocity\n\n\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY; // Define if we need image drag\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      }\n\n      if (!gesture.$slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  } // Toggle Zoom\n\n\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = swiper.support;\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = support.passiveListener ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  function getSlideSelector() {\n    return `.${swiper.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const {\n      passiveListener\n    } = getListeners();\n    const slideSelector = getSlideSelector();\n    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  } // Attach/Detach Events\n\n\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = swiper.support;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/zoom/zoom.js\n// module id = 86\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader'\n    }\n  });\n  swiper.lazy = {};\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate = true) {\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images.push($slideEl[0]);\n    }\n\n    if ($images.length === 0) return;\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const {\n      $wrapperEl,\n      params: swiperParams,\n      slides,\n      activeIndex\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n    let slidesPerView = swiperParams.slidesPerView;\n\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n\n    if (swiper.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        } // Prev Slides\n\n\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!swiper || swiper.destroyed) return;\n    const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const swiperOffset = swiper.$el.offset();\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let inView = false;\n    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n    for (let i = 0; i < swiperCoord.length; i += 1) {\n      const point = swiperCoord[i];\n\n      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n        inView = true;\n      }\n    }\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n      swiper.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n        if (swiper.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const {\n      lazy,\n      cssMode,\n      watchSlidesProgress,\n      touchReleaseOnEdges,\n      resistanceRatio\n    } = swiper.params;\n\n    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n      load();\n    }\n  });\n  Object.assign(swiper.lazy, {\n    load,\n    loadInSlide\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/lazy/lazy.js\n// module id = 87\n// module chunks = 0 1","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n\n    }\n  });\n  swiper.controller = {\n    control: undefined\n  };\n\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n\n        return maxIndex;\n      };\n    }();\n\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n\n    return this;\n  } // xxx: for now i will just save one spline function to to\n\n\n  function getInterpolateFunction(c) {\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  }\n\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n\n      if (duration !== 0) {\n        c.transitionStart();\n\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n\n          c.transitionEnd();\n        });\n      }\n    }\n\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n\n  on('beforeInit', () => {\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/controller/controller.js\n// module id = 88\n// module chunks = 0 1","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group'\n    }\n  });\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\n\n  function getRandomNumber(size = 16) {\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n\n  function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n  }\n\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const $targetEl = $(e.target);\n\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (swiper.params.loop || !swiper.navigation) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n\n  function updatePagination() {\n    const params = swiper.params.a11y;\n\n    if (hasPagination()) {\n      swiper.pagination.bullets.each(bulletEl => {\n        const $bulletEl = $(bulletEl);\n        makeElFocusable($bulletEl);\n\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n        }\n      });\n    }\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n\n  function init() {\n    const params = swiper.params.a11y;\n    swiper.$el.append(liveRegion); // Container\n\n    const $containerEl = swiper.$el;\n\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    } // Wrapper\n\n\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live); // Slide\n\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    addElRole($(swiper.slides), params.slideRole);\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n    swiper.slides.each((slideEl, index) => {\n      const $slideEl = $(slideEl);\n      const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n      const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n      addElLabel($slideEl, ariaLabelMessage);\n    }); // Navigation\n\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    } // Pagination\n\n\n    if (hasPagination()) {\n      swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    }\n  }\n\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    } // Pagination\n\n\n    if (hasPagination()) {\n      swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    }\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n    updateNavigation();\n  });\n  on('toEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('fromEdge', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/a11y/a11y.js\n// module id = 89\n// module chunks = 0 1","import { getWindow } from 'ssr-window';\nexport default function History({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides'\n    }\n  });\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n\n    const slide = swiper.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n\n    const currentState = window.history.state;\n\n    if (currentState && currentState.value === value) {\n      return;\n    }\n\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = slugify(slide.attr('data-history'));\n\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, swiper.paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  const destroy = () => {\n    const window = getWindow();\n\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/history/history.js\n// module id = 90\n// module chunks = 0 1","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  };\n\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n      emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/hash-navigation/hash-navigation.js\n// module id = 91\n// module chunks = 0 1","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  let timeout;\n  swiper.autoplay = {\n    running: false,\n    paused: false\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n\n  function run() {\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n\n    clearTimeout(timeout);\n    timeout = nextTick(() => {\n      let autoplayResult;\n\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          emit('autoplay');\n        } else {\n          stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.isEnd) {\n        autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n        emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n        emit('autoplay');\n      } else {\n        stop();\n      }\n\n      if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n        run();\n      }\n    }, delay);\n  }\n\n  function start() {\n    if (typeof timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    emit('autoplayStart');\n    run();\n    return true;\n  }\n\n  function stop() {\n    if (!swiper.autoplay.running) return false;\n    if (typeof timeout === 'undefined') return false;\n\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = undefined;\n    }\n\n    swiper.autoplay.running = false;\n    emit('autoplayStop');\n    return true;\n  }\n\n  function pause(speed) {\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (timeout) clearTimeout(timeout);\n    swiper.autoplay.paused = true;\n\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      run();\n    } else {\n      ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n        swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n      });\n    }\n  }\n\n  function onVisibilityChange() {\n    const document = getDocument();\n\n    if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n      pause();\n    }\n\n    if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n      run();\n      swiper.autoplay.paused = false;\n    }\n  }\n\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n    if (e.target !== swiper.$wrapperEl[0]) return;\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n    swiper.autoplay.paused = false;\n\n    if (!swiper.autoplay.running) {\n      stop();\n    } else {\n      run();\n    }\n  }\n\n  function onMouseEnter() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n    } else {\n      pause();\n    }\n\n    ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n      swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n    });\n  }\n\n  function onMouseLeave() {\n    if (swiper.params.autoplay.disableOnInteraction) {\n      return;\n    }\n\n    swiper.autoplay.paused = false;\n    run();\n  }\n\n  function attachMouseEvents() {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.$el.on('mouseenter', onMouseEnter);\n      swiper.$el.on('mouseleave', onMouseLeave);\n    }\n  }\n\n  function detachMouseEvents() {\n    swiper.$el.off('mouseenter', onMouseEnter);\n    swiper.$el.off('mouseleave', onMouseLeave);\n  }\n\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      start();\n      const document = getDocument();\n      document.addEventListener('visibilitychange', onVisibilityChange);\n      attachMouseEvents();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.autoplay.running) {\n      if (internal || !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.pause(speed);\n      } else {\n        stop();\n      }\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.autoplay.running) {\n      if (swiper.params.autoplay.disableOnInteraction) {\n        stop();\n      } else {\n        pause();\n      }\n    }\n  });\n  on('touchEnd', () => {\n    if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n      run();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n\n    if (swiper.autoplay.running) {\n      stop();\n    }\n\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  });\n  Object.assign(swiper.autoplay, {\n    pause,\n    run,\n    start,\n    stop\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/autoplay/autoplay.js\n// module id = 92\n// module chunks = 0 1","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix(); // eslint-disable-next-line\n\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n    }\n\n    swiper.slideTo(slideToIndex);\n  }\n\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        } // Find actual thumbs index to slide to\n\n\n        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    } // Activate thumbs\n\n\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    if (!swiper.thumbs.swiper) return;\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    if (swiperCreated && thumbsSwiper) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/thumbs/thumbs.js\n// module id = 93\n// module chunks = 0 1","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n  swiper,\n  extendParams,\n  emit,\n  once\n}) {\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n\n  function onTouchMove() {\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper; // Velocity\n\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n\n  function onTouchEnd({\n    currentPos\n  }) {\n    const {\n      params,\n      $wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper; // Time diff\n\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n\n      return;\n    }\n\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        } // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n\n\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n\n        newPosition = -newPosition;\n      }\n\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      } // Fix duration\n\n\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/free-mode/free-mode.js\n// module id = 94\n// module chunks = 0 1","export default function Grid({\n  swiper,\n  extendParams\n}) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup,\n      spaceBetween\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid; // Set slides order\n\n    let newSlideOrderIndex;\n    let column;\n    let row;\n\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n\n    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      spaceBetween,\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n    });\n\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\n      const newSlidesGrid = [];\n\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/grid/grid.js\n// module id = 95\n// module chunks = 0 1","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n  swiper\n}) {\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/manipulation.js\n// module id = 96\n// module chunks = 0 1","export default function appendSlide(slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/appendSlide.js\n// module id = 97\n// module chunks = 0 1","export default function prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  let newActiveIndex = activeIndex + 1;\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/prependSlide.js\n// module id = 98\n// module chunks = 0 1","export default function addSlide(index, slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  const baseLength = swiper.slides.length;\n\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/addSlide.js\n// module id = 99\n// module chunks = 0 1","export default function removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeSlide.js\n// module id = 100\n// module chunks = 0 1","export default function removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n\n  swiper.removeSlide(slidesIndexes);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/manipulation/methods/removeAllSlides.js\n// module id = 101\n// module chunks = 0 1","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    fadeEffect: {\n      crossFade: false,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.css({\n        opacity: slideOpacity\n      }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.fadeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-fade/effect-fade.js\n// module id = 102\n// module chunks = 0 1","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n\n        $cubeShadowEl.css({\n          height: `${swiperWidth}px`\n        });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n\n      $slideEl.transform(transform);\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  };\n\n  const setTransition = duration => {\n    const {\n      $el,\n      slides\n    } = swiper;\n    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cube/effect-cube.js\n// module id = 103\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if (shadowBefore.length === 0) {\n          shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n        }\n\n        if (shadowAfter.length === 0) {\n          shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n        }\n\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.flipEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-flip/effect-flip.js\n// module id = 104\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth; // Each slide offset from center\n\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = (center - slideOffset - slideSize / 2) / slideSize * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n        }\n\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.coverflowEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n  };\n\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-coverflow/effect-coverflow.js\n// module id = 105\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    creativeEffect: {\n      transformEl: null,\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      $wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      } // set translate\n\n\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      }); // set rotates\n\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n      if (custom && data.shadow || !custom) {\n        let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0 && data.shadow) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform).css({\n        opacity: opacityString\n      });\n\n      if (data.origin) {\n        $targetEl.css('transform-origin', data.origin);\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.creativeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-creative/effect-creative.js\n// module id = 106\n// module chunks = 0 1","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = swiper.translate;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = $slideEl[0].swiperSlideOffset;\n\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n      }\n\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -2 * progress;\n      let tXAdd = 8 - Math.abs(progress) * 0.75;\n      const isSwipeToNext = (i === activeIndex || i === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (i === activeIndex || i === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${rotate}deg)\n        scale(${scaleString})\n      `;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.cardsEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/swiper/modules/effect-cards/effect-cards.js\n// module id = 107\n// module chunks = 0 1","$.fn.autoPadding = function ($settings) {\r\n  var $config = {\r\n      source: null,\r\n    },\r\n    $target = $(this);\r\n\r\n  if ($settings) jQuery.extend($config, $settings);\r\n\r\n  $(this).css({\r\n    paddingTop: $config.source.outerHeight(true) + 'px',\r\n  });\r\n\r\n  $(window).resize(function () {\r\n    $target.css({\r\n      paddingTop: $config.source.outerHeight(true) + 'px',\r\n    });\r\n  });\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/autoPadding.js","/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /*global define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.Unipointer = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n  // default to mouse events\n  var startEvent = 'mousedown';\n  if ( window.PointerEvent ) {\n    // Pointer Events\n    startEvent = 'pointerdown';\n  } else if ( 'ontouchstart' in window ) {\n    // Touch Events. iOS Safari\n    startEvent = 'touchstart';\n  }\n  elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n  for ( var i=0; i < touches.length; i++ ) {\n    var touch = touches[i];\n    if ( touch.identifier == this.pointerIdentifier ) {\n      return touch;\n    }\n  }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n  // dismiss clicks from right or middle buttons\n  var button = event.button;\n  if ( button && ( button !== 0 && button !== 1 ) ) {\n    return;\n  }\n  this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n  this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n  this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n  // dismiss right click and other pointers\n  // button = 0 is okay, 1-4 not\n  if ( event.button || this.isPointerDown ) {\n    return;\n  }\n\n  this.isPointerDown = true;\n  // save pointer identifier to match up touch events\n  this.pointerIdentifier = pointer.pointerId !== undefined ?\n    // pointerId for pointer events, touch.indentifier for touch events\n    pointer.pointerId : pointer.identifier;\n\n  this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n  mousedown: [ 'mousemove', 'mouseup' ],\n  touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n  pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n  if ( !event ) {\n    return;\n  }\n  // get proper events to match start event\n  var events = postStartEvents[ event.type ];\n  // bind events to node\n  events.forEach( function( eventName ) {\n    window.addEventListener( eventName, this );\n  }, this );\n  // save these arguments\n  this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n  // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n  if ( !this._boundPointerEvents ) {\n    return;\n  }\n  this._boundPointerEvents.forEach( function( eventName ) {\n    window.removeEventListener( eventName, this );\n  }, this );\n\n  delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n  this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerMove( event, event );\n  }\n};\n\nproto.ontouchmove = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerMove( event, touch );\n  }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n  this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n  this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n  this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerUp( event, event );\n  }\n};\n\nproto.ontouchend = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerUp( event, touch );\n  }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n  this._pointerReset();\n  this._unbindPostStartEvents();\n  this.pointerDone();\n};\n\nproto._pointerReset = function() {\n  // reset properties\n  this.isPointerDown = false;\n  delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerCancel( event, event );\n  }\n};\n\nproto.ontouchcancel = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerCancel( event, touch );\n  }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n  this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// -----  ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n  return {\n    x: pointer.pageX,\n    y: pointer.pageY\n  };\n};\n\n// -----  ----- //\n\nreturn Unipointer;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unipointer/unipointer.js\n// module id = 109\n// module chunks = 0","/**\r\n * Created by STOK on 13/06/2019.\r\n */\r\nvar Alert = {};\r\n\r\n(function ( $ ) {\r\n    var target = $( '#js-alert' ), \r\n        image = target.find( '#js-alert-image' ), \r\n        title = target.find( '#js-alert-title' ),\r\n        text = target.find( '#js-alert-text' ), \r\n        button = target.find( '#js-alert-button' );\r\n\r\n    Alert.show = function ( type, header, message, buttonText ) {\r\n        if ( target.length === 0 ) {\r\n            return;\r\n        }\r\n\r\n        var alertClass = target.data( 'classDefault' ) + ' ', \r\n            buttonClass = button.data( 'classDefault' ), \r\n            imageSource = '';\r\n\r\n        switch ( type ) {\r\n            case 'success':\r\n                alertClass += target.data( 'classSuccess' );\r\n                buttonClass = button.data( 'classSpecial' );\r\n                imageSource = image.data( 'iconSuccess' );             \r\n                break;\r\n            case 'warning':\r\n                alertClass += target.data( 'classWarning' );\r\n                imageSource = image.data( 'iconWarning' );               \r\n                break;\r\n            case 'danger':\r\n                alertClass += target.data( 'classDanger' );\r\n                imageSource = image.data( 'iconDanger' );              \r\n                break;\r\n            default:\r\n                return;\r\n        }\r\n\r\n        target.attr( 'class', alertClass );\r\n        image.attr( 'src', imageSource );\r\n\r\n        title.html( header );\r\n        title.attr( 'class', title.data('class-'+ type) );\r\n\r\n        text.html( message );\r\n        text.attr( 'class', text.data('class-'+ type) );\r\n\r\n        button.text( buttonText );\r\n        button.attr( 'class', buttonClass );\r\n\r\n        target.slideDown( 'slow' );\r\n    };\r\n\r\n    $( function () {\r\n        if ( target.length === 0 ) {\r\n            return;\r\n        }\r\n\r\n        button.click( function () {\r\n            target.slideUp( 'slow' );\r\n        } );\r\n    } )\r\n\r\n})( jQuery );\r\n\r\nwindow.Alert = Alert;\r\n\r\nmodule.exports = Alert;\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/alert.js","// import external dependencies\r\nimport 'jquery';\r\n\r\n// Require/Import vendors\r\nrequire('../../../node_modules/flickity/dist/flickity.pkgd')\r\nrequire('./vendor/jquery.overlayScrollbars');\r\nrequire('./vendor/jquery.txtTruncate');\r\n\r\n\r\n// Import everything from autoload\r\nimport './autoload/_bootstrap.js'\r\n\r\n\r\n// import local dependencies/utils\r\nimport Router from './util/Router';\r\nimport common from './routes/common';\r\nimport home from './routes/home';\r\nimport aboutUs from './routes/about';\r\nimport { sliders } from './components/sliders';\r\nimport LazyLoad from 'vanilla-lazyload';\r\nrequire('./util/plusItem');\r\nrequire('./util/crossPlatform');\r\nrequire('./util/autoPadding');\r\nrequire('./util/ellipsis');\r\nrequire('./util/backgroundSwitcher');\r\nrequire('./util/articleFilter');\r\nrequire('./util/lateRender');\r\n\r\n// Require Components\r\nrequire('./components/nav');\r\nrequire('./components/headroom');\r\nrequire('./components/filter');\r\nrequire('./components/dropdown');\r\nrequire('./components/picker');\r\nrequire('./components/resellers');\r\nrequire('./components/video');\r\nrequire('./components/listing');\r\nrequire('./components/instagram');\r\nrequire('./components/newsletter');\r\nrequire('./components/alert');\r\nrequire('./components/category');\r\nrequire('./components/product-selected');\r\nrequire('./components/product');\r\nrequire('./components/cart');\r\nrequire('./components/search');\r\nrequire('./components/checkout');\r\nrequire('./components/scroll');\r\nrequire('./components/backgroundSwitch');\r\nrequire('./components/articles');\r\nrequire('./components/forms');\r\nrequire('./components/tripleMedia');\r\nrequire('./components/bottomBar');\r\nrequire('./components/splashScreen');\r\n\r\n/** Populate Router instance with DOM routes */\r\nconst routes = new Router({\r\n  // All pages\r\n  common,\r\n  // Home page\r\n  home,\r\n  // About Us page, note the change from about-us to aboutUs.\r\n  aboutUs,\r\n});\r\n\r\n// Load Events\r\njQuery(document).ready(() => {\r\n  routes.loadEvents();\r\n  sliders.init();\r\n\r\n  if ($('.js-plus-item').length) {\r\n    $.each($('.js-plus-item'), function (i, el) {\r\n      $(el).plusItem();\r\n    });\r\n  }\r\n\r\n  if ($('body').hasClass('nav-is-transparent')) {\r\n    $('body').autoPadding({\r\n      source: $('#js-main-nav-msg'),\r\n    });\r\n  }\r\n\r\n  else {\r\n   $('body').autoPadding({\r\n      source: $('.js-header'),\r\n    });\r\n  }\r\n\r\n  let options = {\r\n    container: '.size-available-toggle',\r\n    trigger: 'focus',\r\n  }\r\n\r\n  if (matchMedia('(min-width: 1024px)').matches) {\r\n    options = {\r\n      container: 'body',\r\n      trigger: 'hover',\r\n    }\r\n  } else {\r\n    if ($('body').hasClass('isApple iphone')) {\r\n      options = {\r\n        container: 'body',\r\n        trigger: 'focus',\r\n      }\r\n    }\r\n  }\r\n\r\n  $('[data-toggle=\"popover\"]').popover(options);\r\n\r\n  let lazyLoadInstance = new LazyLoad({\r\n    threshold: 500,\r\n    elements_selector: '.lazy',\r\n  });\r\n\r\n  if (lazyLoadInstance) {\r\n    lazyLoadInstance.update();\r\n  }\r\n\r\n  window.lazyLoadInstance = lazyLoadInstance;\r\n\r\n  setTimeout(function() {\r\n    let bodyTopPadding = window.getComputedStyle(document.body).getPropertyValue('padding-top');\r\n    let topBarMessage = document.getElementById('js-main-nav-msg');\r\n\r\n    document.documentElement.style.setProperty('--bodyTopPadding', bodyTopPadding);\r\n\r\n    if (document.body.classList.contains('admin-bar')) {\r\n        let adminBarHeight = document.getElementById('wpadminbar').offsetHeight;\r\n        document.documentElement.style.setProperty('--adminBarHeight', adminBarHeight + 'px');\r\n    }\r\n\r\n    if (topBarMessage) {\r\n      document.body.classList.add('has-top-bar');\r\n      document.documentElement.style.setProperty('--topBarMessageHeight','47px');\r\n    }\r\n}, 1000);\r\n\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/main.js","/*!\n * Flickity PACKAGED v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /* globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'jquery-bridget/jquery-bridget',[ 'jquery' ], function( jQuery ) {\n      return factory( window, jQuery );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('jquery')\n    );\n  } else {\n    // browser global\n    window.jQueryBridget = factory(\n      window,\n      window.jQuery\n    );\n  }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n  function( message ) {\n    console.error( message );\n  };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n  $ = $ || jQuery || window.jQuery;\n  if ( !$ ) {\n    return;\n  }\n\n  // add option method -> $().plugin('option', {...})\n  if ( !PluginClass.prototype.option ) {\n    // option setter\n    PluginClass.prototype.option = function( opts ) {\n      // bail out if not an object\n      if ( !$.isPlainObject( opts ) ){\n        return;\n      }\n      this.options = $.extend( true, this.options, opts );\n    };\n  }\n\n  // make jQuery plugin\n  $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n    if ( typeof arg0 == 'string' ) {\n      // method call $().plugin( 'methodName', { options } )\n      // shift arguments by 1\n      var args = arraySlice.call( arguments, 1 );\n      return methodCall( this, arg0, args );\n    }\n    // just $().plugin({ options })\n    plainCall( this, arg0 );\n    return this;\n  };\n\n  // $().plugin('methodName')\n  function methodCall( $elems, methodName, args ) {\n    var returnValue;\n    var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n    $elems.each( function( i, elem ) {\n      // get instance\n      var instance = $.data( elem, namespace );\n      if ( !instance ) {\n        logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n          pluginMethodStr );\n        return;\n      }\n\n      var method = instance[ methodName ];\n      if ( !method || methodName.charAt(0) == '_' ) {\n        logError( pluginMethodStr + ' is not a valid method' );\n        return;\n      }\n\n      // apply method, get return value\n      var value = method.apply( instance, args );\n      // set return value if value is returned, use only first value\n      returnValue = returnValue === undefined ? value : returnValue;\n    });\n\n    return returnValue !== undefined ? returnValue : $elems;\n  }\n\n  function plainCall( $elems, options ) {\n    $elems.each( function( i, elem ) {\n      var instance = $.data( elem, namespace );\n      if ( instance ) {\n        // set options & init\n        instance.option( options );\n        instance._init();\n      } else {\n        // initialize new instance\n        instance = new PluginClass( elem, options );\n        $.data( elem, namespace, instance );\n      }\n    });\n  }\n\n  updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n  if ( !$ || ( $ && $.bridget ) ) {\n    return;\n  }\n  $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// -----  ----- //\n\nreturn jQueryBridget;\n\n}));\n\n/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, window */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD - RequireJS\n    define( 'ev-emitter/ev-emitter',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory();\n  } else {\n    // Browser globals\n    global.EvEmitter = factory();\n  }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // set events hash\n  var events = this._events = this._events || {};\n  // set listeners array\n  var listeners = events[ eventName ] = events[ eventName ] || [];\n  // only add once\n  if ( listeners.indexOf( listener ) == -1 ) {\n    listeners.push( listener );\n  }\n\n  return this;\n};\n\nproto.once = function( eventName, listener ) {\n  if ( !eventName || !listener ) {\n    return;\n  }\n  // add event\n  this.on( eventName, listener );\n  // set once flag\n  // set onceEvents hash\n  var onceEvents = this._onceEvents = this._onceEvents || {};\n  // set onceListeners object\n  var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n  // set flag\n  onceListeners[ listener ] = true;\n\n  return this;\n};\n\nproto.off = function( eventName, listener ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  var index = listeners.indexOf( listener );\n  if ( index != -1 ) {\n    listeners.splice( index, 1 );\n  }\n\n  return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n  var listeners = this._events && this._events[ eventName ];\n  if ( !listeners || !listeners.length ) {\n    return;\n  }\n  // copy over to avoid interference if .off() in listener\n  listeners = listeners.slice(0);\n  args = args || [];\n  // once stuff\n  var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n  for ( var i=0; i < listeners.length; i++ ) {\n    var listener = listeners[i]\n    var isOnce = onceListeners && onceListeners[ listener ];\n    if ( isOnce ) {\n      // remove listener\n      // remove before trigger to prevent recursion\n      this.off( eventName, listener );\n      // unset once flag\n      delete onceListeners[ listener ];\n    }\n    // trigger listener\n    listener.apply( this, args );\n  }\n\n  return this;\n};\n\nproto.allOff = function() {\n  delete this._events;\n  delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\n\n/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n  /* jshint strict: false */ /* globals define, module */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'get-size/get-size',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.getSize = factory();\n  }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n  var num = parseFloat( value );\n  // not a percent like '100%', and a number\n  var isValid = value.indexOf('%') == -1 && !isNaN( num );\n  return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n  function( message ) {\n    console.error( message );\n  };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n  'paddingLeft',\n  'paddingRight',\n  'paddingTop',\n  'paddingBottom',\n  'marginLeft',\n  'marginRight',\n  'marginTop',\n  'marginBottom',\n  'borderLeftWidth',\n  'borderRightWidth',\n  'borderTopWidth',\n  'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n  var size = {\n    width: 0,\n    height: 0,\n    innerWidth: 0,\n    innerHeight: 0,\n    outerWidth: 0,\n    outerHeight: 0\n  };\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    size[ measurement ] = 0;\n  }\n  return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    logError( 'Style returned ' + style +\n      '. Are you running this code in a hidden iframe on Firefox? ' +\n      'See https://bit.ly/getsizebug1' );\n  }\n  return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n  // setup once\n  if ( isSetup ) {\n    return;\n  }\n  isSetup = true;\n\n  // -------------------------- box sizing -------------------------- //\n\n  /**\n   * Chrome & Safari measure the outer-width on style.width on border-box elems\n   * IE11 & Firefox<29 measures the inner-width\n   */\n  var div = document.createElement('div');\n  div.style.width = '200px';\n  div.style.padding = '1px 2px 3px 4px';\n  div.style.borderStyle = 'solid';\n  div.style.borderWidth = '1px 2px 3px 4px';\n  div.style.boxSizing = 'border-box';\n\n  var body = document.body || document.documentElement;\n  body.appendChild( div );\n  var style = getStyle( div );\n  // round value for browser zoom. desandro/masonry#928\n  isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n  getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n  body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n  setup();\n\n  // use querySeletor if elem is string\n  if ( typeof elem == 'string' ) {\n    elem = document.querySelector( elem );\n  }\n\n  // do not proceed on non-objects\n  if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n    return;\n  }\n\n  var style = getStyle( elem );\n\n  // if hidden, everything is 0\n  if ( style.display == 'none' ) {\n    return getZeroSize();\n  }\n\n  var size = {};\n  size.width = elem.offsetWidth;\n  size.height = elem.offsetHeight;\n\n  var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n  // get all measurements\n  for ( var i=0; i < measurementsLength; i++ ) {\n    var measurement = measurements[i];\n    var value = style[ measurement ];\n    var num = parseFloat( value );\n    // any 'auto', 'medium' value will be 0\n    size[ measurement ] = !isNaN( num ) ? num : 0;\n  }\n\n  var paddingWidth = size.paddingLeft + size.paddingRight;\n  var paddingHeight = size.paddingTop + size.paddingBottom;\n  var marginWidth = size.marginLeft + size.marginRight;\n  var marginHeight = size.marginTop + size.marginBottom;\n  var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n  var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n  var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n  // overwrite width and height if we can get it from style\n  var styleWidth = getStyleSize( style.width );\n  if ( styleWidth !== false ) {\n    size.width = styleWidth +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n  }\n\n  var styleHeight = getStyleSize( style.height );\n  if ( styleHeight !== false ) {\n    size.height = styleHeight +\n      // add padding and border unless it's already including it\n      ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n  }\n\n  size.innerWidth = size.width - ( paddingWidth + borderWidth );\n  size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n  size.outerWidth = size.width + marginWidth;\n  size.outerHeight = size.height + marginHeight;\n\n  return size;\n}\n\nreturn getSize;\n\n});\n\n/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  /*global define: false, module: false */\n  'use strict';\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'desandro-matches-selector/matches-selector',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.matchesSelector = factory();\n  }\n\n}( window, function factory() {\n  'use strict';\n\n  var matchesMethod = ( function() {\n    var ElemProto = window.Element.prototype;\n    // check for the standard method name first\n    if ( ElemProto.matches ) {\n      return 'matches';\n    }\n    // check un-prefixed\n    if ( ElemProto.matchesSelector ) {\n      return 'matchesSelector';\n    }\n    // check vendor prefixes\n    var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n    for ( var i=0; i < prefixes.length; i++ ) {\n      var prefix = prefixes[i];\n      var method = prefix + 'MatchesSelector';\n      if ( ElemProto[ method ] ) {\n        return method;\n      }\n    }\n  })();\n\n  return function matchesSelector( elem, selector ) {\n    return elem[ matchesMethod ]( selector );\n  };\n\n}));\n\n/**\n * Fizzy UI utils v2.0.7\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'fizzy-ui-utils/utils',[\n      'desandro-matches-selector/matches-selector'\n    ], function( matchesSelector ) {\n      return factory( window, matchesSelector );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('desandro-matches-selector')\n    );\n  } else {\n    // browser global\n    window.fizzyUIUtils = factory(\n      window,\n      window.matchesSelector\n    );\n  }\n\n}( window, function factory( window, matchesSelector ) {\n\n\n\nvar utils = {};\n\n// ----- extend ----- //\n\n// extends objects\nutils.extend = function( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n};\n\n// ----- modulo ----- //\n\nutils.modulo = function( num, div ) {\n  return ( ( num % div ) + div ) % div;\n};\n\n// ----- makeArray ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nutils.makeArray = function( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n  // return empty array if undefined or null. #6\n  if ( obj === null || obj === undefined ) {\n    return [];\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n};\n\n// ----- removeFrom ----- //\n\nutils.removeFrom = function( ary, obj ) {\n  var index = ary.indexOf( obj );\n  if ( index != -1 ) {\n    ary.splice( index, 1 );\n  }\n};\n\n// ----- getParent ----- //\n\nutils.getParent = function( elem, selector ) {\n  while ( elem.parentNode && elem != document.body ) {\n    elem = elem.parentNode;\n    if ( matchesSelector( elem, selector ) ) {\n      return elem;\n    }\n  }\n};\n\n// ----- getQueryElement ----- //\n\n// use element as selector string\nutils.getQueryElement = function( elem ) {\n  if ( typeof elem == 'string' ) {\n    return document.querySelector( elem );\n  }\n  return elem;\n};\n\n// ----- handleEvent ----- //\n\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\nutils.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// ----- filterFindElements ----- //\n\nutils.filterFindElements = function( elems, selector ) {\n  // make array of elems\n  elems = utils.makeArray( elems );\n  var ffElems = [];\n\n  elems.forEach( function( elem ) {\n    // check that elem is an actual element\n    if ( !( elem instanceof HTMLElement ) ) {\n      return;\n    }\n    // add elem if no selector\n    if ( !selector ) {\n      ffElems.push( elem );\n      return;\n    }\n    // filter & find items if we have a selector\n    // filter\n    if ( matchesSelector( elem, selector ) ) {\n      ffElems.push( elem );\n    }\n    // find children\n    var childElems = elem.querySelectorAll( selector );\n    // concat childElems to filterFound array\n    for ( var i=0; i < childElems.length; i++ ) {\n      ffElems.push( childElems[i] );\n    }\n  });\n\n  return ffElems;\n};\n\n// ----- debounceMethod ----- //\n\nutils.debounceMethod = function( _class, methodName, threshold ) {\n  threshold = threshold || 100;\n  // original method\n  var method = _class.prototype[ methodName ];\n  var timeoutName = methodName + 'Timeout';\n\n  _class.prototype[ methodName ] = function() {\n    var timeout = this[ timeoutName ];\n    clearTimeout( timeout );\n\n    var args = arguments;\n    var _this = this;\n    this[ timeoutName ] = setTimeout( function() {\n      method.apply( _this, args );\n      delete _this[ timeoutName ];\n    }, threshold );\n  };\n};\n\n// ----- docReady ----- //\n\nutils.docReady = function( callback ) {\n  var readyState = document.readyState;\n  if ( readyState == 'complete' || readyState == 'interactive' ) {\n    // do async to allow for other scripts to run. metafizzy/flickity#441\n    setTimeout( callback );\n  } else {\n    document.addEventListener( 'DOMContentLoaded', callback );\n  }\n};\n\n// ----- htmlInit ----- //\n\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\nutils.toDashed = function( str ) {\n  return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\n    return $1 + '-' + $2;\n  }).toLowerCase();\n};\n\nvar console = window.console;\n/**\n * allow user to initialize classes via [data-namespace] or .js-namespace class\n * htmlInit( Widget, 'widgetName' )\n * options are parsed from data-namespace-options\n */\nutils.htmlInit = function( WidgetClass, namespace ) {\n  utils.docReady( function() {\n    var dashedNamespace = utils.toDashed( namespace );\n    var dataAttr = 'data-' + dashedNamespace;\n    var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\n    var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\n    var elems = utils.makeArray( dataAttrElems )\n      .concat( utils.makeArray( jsDashElems ) );\n    var dataOptionsAttr = dataAttr + '-options';\n    var jQuery = window.jQuery;\n\n    elems.forEach( function( elem ) {\n      var attr = elem.getAttribute( dataAttr ) ||\n        elem.getAttribute( dataOptionsAttr );\n      var options;\n      try {\n        options = attr && JSON.parse( attr );\n      } catch ( error ) {\n        // log error, do not initialize\n        if ( console ) {\n          console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\n          ': ' + error );\n        }\n        return;\n      }\n      // initialize\n      var instance = new WidgetClass( elem, options );\n      // make available via $().data('namespace')\n      if ( jQuery ) {\n        jQuery.data( elem, namespace, instance );\n      }\n    });\n\n  });\n};\n\n// -----  ----- //\n\nreturn utils;\n\n}));\n\n// Flickity.Cell\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/cell',[\n      'get-size/get-size'\n    ], function( getSize ) {\n      return factory( window, getSize );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('get-size')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Cell = factory(\n      window,\n      window.getSize\n    );\n  }\n\n}( window, function factory( window, getSize ) {\n\n\n\nfunction Cell( elem, parent ) {\n  this.element = elem;\n  this.parent = parent;\n\n  this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n  this.element.style.position = 'absolute';\n  this.element.setAttribute( 'aria-hidden', 'true' );\n  this.x = 0;\n  this.shift = 0;\n};\n\nproto.destroy = function() {\n  // reset style\n  this.unselect();\n  this.element.style.position = '';\n  var side = this.parent.originSide;\n  this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n  this.x = x;\n  this.updateTarget();\n  this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n  var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n  this.target = this.x + this.size[ marginProperty ] +\n    this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n  // render position of cell with in slider\n  var side = this.parent.originSide;\n  this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n  this.element.classList.add('is-selected');\n  this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n  this.element.classList.remove('is-selected');\n  this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n  this.shift = shift;\n  this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n  this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n\n// slide\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/slide',factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Slide = factory();\n  }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n  this.parent = parent;\n  this.isOriginLeft = parent.originSide == 'left';\n  this.cells = [];\n  this.outerWidth = 0;\n  this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n  this.cells.push( cell );\n  this.outerWidth += cell.size.outerWidth;\n  this.height = Math.max( cell.size.outerHeight, this.height );\n  // first cell stuff\n  if ( this.cells.length == 1 ) {\n    this.x = cell.x; // x comes from first cell\n    var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n    this.firstMargin = cell.size[ beginMargin ];\n  }\n};\n\nproto.updateTarget = function() {\n  var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n  var lastCell = this.getLastCell();\n  var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n  var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n  this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n  this.cells.forEach( function( cell ) {\n    cell.select();\n  });\n};\n\nproto.unselect = function() {\n  this.cells.forEach( function( cell ) {\n    cell.unselect();\n  });\n};\n\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  });\n};\n\nreturn Slide;\n\n}));\n\n// animate\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/animate',[\n      'fizzy-ui-utils/utils'\n    ], function( utils ) {\n      return factory( window, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.animatePrototype = factory(\n      window,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, utils ) {\n\n\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n  if ( this.isAnimating ) {\n    return;\n  }\n\n  this.isAnimating = true;\n  this.restingFrames = 0;\n  this.animate();\n};\n\nproto.animate = function() {\n  this.applyDragForce();\n  this.applySelectedAttraction();\n\n  var previousX = this.x;\n\n  this.integratePhysics();\n  this.positionSlider();\n  this.settle( previousX );\n  // animate next frame\n  if ( this.isAnimating ) {\n    var _this = this;\n    requestAnimationFrame( function animateFrame() {\n      _this.animate();\n    });\n  }\n};\n\nproto.positionSlider = function() {\n  var x = this.x;\n  // wrap position around\n  if ( this.options.wrapAround && this.cells.length > 1 ) {\n    x = utils.modulo( x, this.slideableWidth );\n    x = x - this.slideableWidth;\n    this.shiftWrapCells( x );\n  }\n\n  this.setTranslateX( x, this.isAnimating );\n  this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n  x += this.cursorPosition;\n  // reverse if right-to-left and using transform\n  x = this.options.rightToLeft ? -x : x;\n  var translateX = this.getPositionValue( x );\n  // use 3D tranforms for hardware acceleration on iOS\n  // but use 2D when settled, for better font-rendering\n  this.slider.style.transform = is3d ?\n    'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n  var firstSlide = this.slides[0];\n  if ( !firstSlide ) {\n    return;\n  }\n  var positionX = -this.x - firstSlide.target;\n  var progress = positionX / this.slidesWidth;\n  this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n  if ( !this.cells.length ) {\n    return;\n  }\n  this.x = -this.selectedSlide.target;\n  this.velocity = 0; // stop wobble\n  this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n  if ( this.options.percentPosition ) {\n    // percent position, round to 2 digits, like 12.34%\n    return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n  } else {\n    // pixel positioning\n    return Math.round( position ) + 'px';\n  }\n};\n\nproto.settle = function( previousX ) {\n  // keep track of frames where x hasn't moved\n  if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n    this.restingFrames++;\n  }\n  // stop animating if resting for 3 or more frames\n  if ( this.restingFrames > 2 ) {\n    this.isAnimating = false;\n    delete this.isFreeScrolling;\n    // render position with translateX when settled\n    this.positionSlider();\n    this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n  }\n};\n\nproto.shiftWrapCells = function( x ) {\n  // shift before cells\n  var beforeGap = this.cursorPosition + x;\n  this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n  // shift after cells\n  var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n  this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n  for ( var i=0; i < cells.length; i++ ) {\n    var cell = cells[i];\n    var cellShift = gap > 0 ? shift : 0;\n    cell.wrapShift( cellShift );\n    gap -= cell.size.outerWidth;\n  }\n};\n\nproto._unshiftCells = function( cells ) {\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  for ( var i=0; i < cells.length; i++ ) {\n    cells[i].wrapShift( 0 );\n  }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n  this.x += this.velocity;\n  this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n  this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n  return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n  // my thanks to Steven Wittens, who simplified this math greatly\n  return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n  if ( !this.isDraggable || !this.isPointerDown ) {\n    return;\n  }\n  // change the position to drag position by applying force\n  var dragVelocity = this.dragX - this.x;\n  var dragForce = dragVelocity - this.velocity;\n  this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n  // do not attract if pointer down or no slides\n  var dragDown = this.isDraggable && this.isPointerDown;\n  if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n    return;\n  }\n  var distance = this.selectedSlide.target * -1 - this.x;\n  var force = distance * this.options.selectedAttraction;\n  this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n\n// Flickity main\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/flickity',[\n      'ev-emitter/ev-emitter',\n      'get-size/get-size',\n      'fizzy-ui-utils/utils',\n      './cell',\n      './slide',\n      './animate'\n    ], function( EvEmitter, getSize, utils, Cell, Slide, animatePrototype ) {\n      return factory( window, EvEmitter, getSize, utils, Cell, Slide, animatePrototype );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter'),\n      require('get-size'),\n      require('fizzy-ui-utils'),\n      require('./cell'),\n      require('./slide'),\n      require('./animate')\n    );\n  } else {\n    // browser global\n    var _Flickity = window.Flickity;\n\n    window.Flickity = factory(\n      window,\n      window.EvEmitter,\n      window.getSize,\n      window.fizzyUIUtils,\n      _Flickity.Cell,\n      _Flickity.Slide,\n      _Flickity.animatePrototype\n    );\n  }\n\n}( window, function factory( window, EvEmitter, getSize,\n  utils, Cell, Slide, animatePrototype ) {\n\n\n\n// vars\nvar jQuery = window.jQuery;\nvar getComputedStyle = window.getComputedStyle;\nvar console = window.console;\n\nfunction moveElements( elems, toElem ) {\n  elems = utils.makeArray( elems );\n  while ( elems.length ) {\n    toElem.appendChild( elems.shift() );\n  }\n}\n\n// -------------------------- Flickity -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Flickity intances\nvar instances = {};\n\nfunction Flickity( element, options ) {\n  var queryElement = utils.getQueryElement( element );\n  if ( !queryElement ) {\n    if ( console ) {\n      console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );\n    }\n    return;\n  }\n  this.element = queryElement;\n  // do not initialize twice on same element\n  if ( this.element.flickityGUID ) {\n    var instance = instances[ this.element.flickityGUID ];\n    instance.option( options );\n    return instance;\n  }\n\n  // add jQuery\n  if ( jQuery ) {\n    this.$element = jQuery( this.element );\n  }\n  // options\n  this.options = utils.extend( {}, this.constructor.defaults );\n  this.option( options );\n\n  // kick things off\n  this._create();\n}\n\nFlickity.defaults = {\n  accessibility: true,\n  // adaptiveHeight: false,\n  cellAlign: 'center',\n  // cellSelector: undefined,\n  // contain: false,\n  freeScrollFriction: 0.075, // friction when free-scrolling\n  friction: 0.28, // friction when selecting\n  namespaceJQueryEvents: true,\n  // initialIndex: 0,\n  percentPosition: true,\n  resize: true,\n  selectedAttraction: 0.025,\n  setGallerySize: true\n  // watchCSS: false,\n  // wrapAround: false\n};\n\n// hash of methods triggered on _create()\nFlickity.createMethods = [];\n\nvar proto = Flickity.prototype;\n// inherit EventEmitter\nutils.extend( proto, EvEmitter.prototype );\n\nproto._create = function() {\n  // add id for Flickity.data\n  var id = this.guid = ++GUID;\n  this.element.flickityGUID = id; // expando\n  instances[ id ] = this; // associate via id\n  // initial properties\n  this.selectedIndex = 0;\n  // how many frames slider has been in same position\n  this.restingFrames = 0;\n  // initial physics properties\n  this.x = 0;\n  this.velocity = 0;\n  this.originSide = this.options.rightToLeft ? 'right' : 'left';\n  // create viewport & slider\n  this.viewport = document.createElement('div');\n  this.viewport.className = 'flickity-viewport';\n  this._createSlider();\n\n  if ( this.options.resize || this.options.watchCSS ) {\n    window.addEventListener( 'resize', this );\n  }\n\n  // add listeners from on option\n  for ( var eventName in this.options.on ) {\n    var listener = this.options.on[ eventName ];\n    this.on( eventName, listener );\n  }\n\n  Flickity.createMethods.forEach( function( method ) {\n    this[ method ]();\n  }, this );\n\n  if ( this.options.watchCSS ) {\n    this.watchCSS();\n  } else {\n    this.activate();\n  }\n\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n  utils.extend( this.options, opts );\n};\n\nproto.activate = function() {\n  if ( this.isActive ) {\n    return;\n  }\n  this.isActive = true;\n  this.element.classList.add('flickity-enabled');\n  if ( this.options.rightToLeft ) {\n    this.element.classList.add('flickity-rtl');\n  }\n\n  this.getSize();\n  // move initial cell elements so they can be loaded as cells\n  var cellElems = this._filterFindCellElements( this.element.children );\n  moveElements( cellElems, this.slider );\n  this.viewport.appendChild( this.slider );\n  this.element.appendChild( this.viewport );\n  // get cells from children\n  this.reloadCells();\n\n  if ( this.options.accessibility ) {\n    // allow element to focusable\n    this.element.tabIndex = 0;\n    // listen for key presses\n    this.element.addEventListener( 'keydown', this );\n  }\n\n  this.emitEvent('activate');\n  this.selectInitialIndex();\n  // flag for initial activation, for using initialIndex\n  this.isInitActivated = true;\n  // ready event. #493\n  this.dispatchEvent('ready');\n};\n\n// slider positions the cells\nproto._createSlider = function() {\n  // slider element does all the positioning\n  var slider = document.createElement('div');\n  slider.className = 'flickity-slider';\n  slider.style[ this.originSide ] = 0;\n  this.slider = slider;\n};\n\nproto._filterFindCellElements = function( elems ) {\n  return utils.filterFindElements( elems, this.options.cellSelector );\n};\n\n// goes through all children\nproto.reloadCells = function() {\n  // collection of item elements\n  this.cells = this._makeCells( this.slider.children );\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n};\n\n/**\n * turn elements into Flickity.Cells\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Flickity Cells\n */\nproto._makeCells = function( elems ) {\n  var cellElems = this._filterFindCellElements( elems );\n\n  // create new Flickity for collection\n  var cells = cellElems.map( function( cellElem ) {\n    return new Cell( cellElem, this );\n  }, this );\n\n  return cells;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.getLastSlide = function() {\n  return this.slides[ this.slides.length - 1 ];\n};\n\n// positions all cells\nproto.positionCells = function() {\n  // size all cells\n  this._sizeCells( this.cells );\n  // position all cells\n  this._positionCells( 0 );\n};\n\n/**\n * position certain cells\n * @param {Integer} index - which cell to start with\n */\nproto._positionCells = function( index ) {\n  index = index || 0;\n  // also measure maxCellHeight\n  // start 0 if positioning all cells\n  this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;\n  var cellX = 0;\n  // get cellX\n  if ( index > 0 ) {\n    var startCell = this.cells[ index - 1 ];\n    cellX = startCell.x + startCell.size.outerWidth;\n  }\n  var len = this.cells.length;\n  for ( var i=index; i < len; i++ ) {\n    var cell = this.cells[i];\n    cell.setPosition( cellX );\n    cellX += cell.size.outerWidth;\n    this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );\n  }\n  // keep track of cellX for wrap-around\n  this.slideableWidth = cellX;\n  // slides\n  this.updateSlides();\n  // contain slides target\n  this._containSlides();\n  // update slidesWidth\n  this.slidesWidth = len ? this.getLastSlide().target - this.slides[0].target : 0;\n};\n\n/**\n * cell.getSize() on multiple cells\n * @param {Array} cells\n */\nproto._sizeCells = function( cells ) {\n  cells.forEach( function( cell ) {\n    cell.getSize();\n  });\n};\n\n// --------------------------  -------------------------- //\n\nproto.updateSlides = function() {\n  this.slides = [];\n  if ( !this.cells.length ) {\n    return;\n  }\n\n  var slide = new Slide( this );\n  this.slides.push( slide );\n  var isOriginLeft = this.originSide == 'left';\n  var nextMargin = isOriginLeft ? 'marginRight' : 'marginLeft';\n\n  var canCellFit = this._getCanCellFit();\n\n  this.cells.forEach( function( cell, i ) {\n    // just add cell if first cell in slide\n    if ( !slide.cells.length ) {\n      slide.addCell( cell );\n      return;\n    }\n\n    var slideWidth = ( slide.outerWidth - slide.firstMargin ) +\n      ( cell.size.outerWidth - cell.size[ nextMargin ] );\n\n    if ( canCellFit.call( this, i, slideWidth ) ) {\n      slide.addCell( cell );\n    } else {\n      // doesn't fit, new slide\n      slide.updateTarget();\n\n      slide = new Slide( this );\n      this.slides.push( slide );\n      slide.addCell( cell );\n    }\n  }, this );\n  // last slide\n  slide.updateTarget();\n  // update .selectedSlide\n  this.updateSelectedSlide();\n};\n\nproto._getCanCellFit = function() {\n  var groupCells = this.options.groupCells;\n  if ( !groupCells ) {\n    return function() {\n      return false;\n    };\n  } else if ( typeof groupCells == 'number' ) {\n    // group by number. 3 -> [0,1,2], [3,4,5], ...\n    var number = parseInt( groupCells, 10 );\n    return function( i ) {\n      return ( i % number ) !== 0;\n    };\n  }\n  // default, group by width of slide\n  // parse '75%\n  var percentMatch = typeof groupCells == 'string' &&\n    groupCells.match(/^(\\d+)%$/);\n  var percent = percentMatch ? parseInt( percentMatch[1], 10 ) / 100 : 1;\n  return function( i, slideWidth ) {\n    return slideWidth <= ( this.size.innerWidth + 1 ) * percent;\n  };\n};\n\n// alias _init for jQuery plugin .flickity()\nproto._init =\nproto.reposition = function() {\n  this.positionCells();\n  this.positionSliderAtSelected();\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n  this.setCellAlign();\n  this.cursorPosition = this.size.innerWidth * this.cellAlign;\n};\n\nvar cellAlignShorthands = {\n  // cell align, then based on origin side\n  center: {\n    left: 0.5,\n    right: 0.5\n  },\n  left: {\n    left: 0,\n    right: 1\n  },\n  right: {\n    right: 0,\n    left: 1\n  }\n};\n\nproto.setCellAlign = function() {\n  var shorthand = cellAlignShorthands[ this.options.cellAlign ];\n  this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;\n};\n\nproto.setGallerySize = function() {\n  if ( this.options.setGallerySize ) {\n    var height = this.options.adaptiveHeight && this.selectedSlide ?\n      this.selectedSlide.height : this.maxCellHeight;\n    this.viewport.style.height = height + 'px';\n  }\n};\n\nproto._getWrapShiftCells = function() {\n  // only for wrap-around\n  if ( !this.options.wrapAround ) {\n    return;\n  }\n  // unshift previous cells\n  this._unshiftCells( this.beforeShiftCells );\n  this._unshiftCells( this.afterShiftCells );\n  // get before cells\n  // initial gap\n  var gapX = this.cursorPosition;\n  var cellIndex = this.cells.length - 1;\n  this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );\n  // get after cells\n  // ending gap between last cell and end of gallery viewport\n  gapX = this.size.innerWidth - this.cursorPosition;\n  // start cloning at first cell, working forwards\n  this.afterShiftCells = this._getGapCells( gapX, 0, 1 );\n};\n\nproto._getGapCells = function( gapX, cellIndex, increment ) {\n  // keep adding cells until the cover the initial gap\n  var cells = [];\n  while ( gapX > 0 ) {\n    var cell = this.cells[ cellIndex ];\n    if ( !cell ) {\n      break;\n    }\n    cells.push( cell );\n    cellIndex += increment;\n    gapX -= cell.size.outerWidth;\n  }\n  return cells;\n};\n\n// ----- contain ----- //\n\n// contain cell targets so no excess sliding\nproto._containSlides = function() {\n  if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {\n    return;\n  }\n  var isRightToLeft = this.options.rightToLeft;\n  var beginMargin = isRightToLeft ? 'marginRight' : 'marginLeft';\n  var endMargin = isRightToLeft ? 'marginLeft' : 'marginRight';\n  var contentWidth = this.slideableWidth - this.getLastCell().size[ endMargin ];\n  // content is less than gallery size\n  var isContentSmaller = contentWidth < this.size.innerWidth;\n  // bounds\n  var beginBound = this.cursorPosition + this.cells[0].size[ beginMargin ];\n  var endBound = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );\n  // contain each cell target\n  this.slides.forEach( function( slide ) {\n    if ( isContentSmaller ) {\n      // all cells fit inside gallery\n      slide.target = contentWidth * this.cellAlign;\n    } else {\n      // contain to bounds\n      slide.target = Math.max( slide.target, beginBound );\n      slide.target = Math.min( slide.target, endBound );\n    }\n  }, this );\n};\n\n// -----  ----- //\n\n/**\n * emits events via eventEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n  var emitArgs = event ? [ event ].concat( args ) : args;\n  this.emitEvent( type, emitArgs );\n\n  if ( jQuery && this.$element ) {\n    // default trigger with type if no event\n    type += this.options.namespaceJQueryEvents ? '.flickity' : '';\n    var $event = type;\n    if ( event ) {\n      // create jQuery event\n      var jQEvent = jQuery.Event( event );\n      jQEvent.type = type;\n      $event = jQEvent;\n    }\n    this.$element.trigger( $event, args );\n  }\n};\n\n// -------------------------- select -------------------------- //\n\n/**\n * @param {Integer} index - index of the slide\n * @param {Boolean} isWrap - will wrap-around to last/first if at the end\n * @param {Boolean} isInstant - will immediately set position at selected cell\n */\nproto.select = function( index, isWrap, isInstant ) {\n  if ( !this.isActive ) {\n    return;\n  }\n  index = parseInt( index, 10 );\n  this._wrapSelect( index );\n\n  if ( this.options.wrapAround || isWrap ) {\n    index = utils.modulo( index, this.slides.length );\n  }\n  // bail if invalid index\n  if ( !this.slides[ index ] ) {\n    return;\n  }\n  var prevIndex = this.selectedIndex;\n  this.selectedIndex = index;\n  this.updateSelectedSlide();\n  if ( isInstant ) {\n    this.positionSliderAtSelected();\n  } else {\n    this.startAnimation();\n  }\n  if ( this.options.adaptiveHeight ) {\n    this.setGallerySize();\n  }\n  // events\n  this.dispatchEvent( 'select', null, [ index ] );\n  // change event if new index\n  if ( index != prevIndex ) {\n    this.dispatchEvent( 'change', null, [ index ] );\n  }\n  // old v1 event name, remove in v3\n  this.dispatchEvent('cellSelect');\n};\n\n// wraps position for wrapAround, to move to closest slide. #113\nproto._wrapSelect = function( index ) {\n  var len = this.slides.length;\n  var isWrapping = this.options.wrapAround && len > 1;\n  if ( !isWrapping ) {\n    return index;\n  }\n  var wrapIndex = utils.modulo( index, len );\n  // go to shortest\n  var delta = Math.abs( wrapIndex - this.selectedIndex );\n  var backWrapDelta = Math.abs( ( wrapIndex + len ) - this.selectedIndex );\n  var forewardWrapDelta = Math.abs( ( wrapIndex - len ) - this.selectedIndex );\n  if ( !this.isDragSelect && backWrapDelta < delta ) {\n    index += len;\n  } else if ( !this.isDragSelect && forewardWrapDelta < delta ) {\n    index -= len;\n  }\n  // wrap position so slider is within normal area\n  if ( index < 0 ) {\n    this.x -= this.slideableWidth;\n  } else if ( index >= len ) {\n    this.x += this.slideableWidth;\n  }\n};\n\nproto.previous = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex - 1, isWrap, isInstant );\n};\n\nproto.next = function( isWrap, isInstant ) {\n  this.select( this.selectedIndex + 1, isWrap, isInstant );\n};\n\nproto.updateSelectedSlide = function() {\n  var slide = this.slides[ this.selectedIndex ];\n  // selectedIndex could be outside of slides, if triggered before resize()\n  if ( !slide ) {\n    return;\n  }\n  // unselect previous selected slide\n  this.unselectSelectedSlide();\n  // update new selected slide\n  this.selectedSlide = slide;\n  slide.select();\n  this.selectedCells = slide.cells;\n  this.selectedElements = slide.getCellElements();\n  // HACK: selectedCell & selectedElement is first cell in slide, backwards compatibility\n  // Remove in v3?\n  this.selectedCell = slide.cells[0];\n  this.selectedElement = this.selectedElements[0];\n};\n\nproto.unselectSelectedSlide = function() {\n  if ( this.selectedSlide ) {\n    this.selectedSlide.unselect();\n  }\n};\n\nproto.selectInitialIndex = function() {\n  var initialIndex = this.options.initialIndex;\n  // already activated, select previous selectedIndex\n  if ( this.isInitActivated ) {\n    this.select( this.selectedIndex, false, true );\n    return;\n  }\n  // select with selector string\n  if ( initialIndex && typeof initialIndex == 'string' ) {\n    var cell = this.queryCell( initialIndex );\n    if ( cell ) {\n      this.selectCell( initialIndex, false, true );\n      return;\n    }\n  }\n\n  var index = 0;\n  // select with number\n  if ( initialIndex && this.slides[ initialIndex ] ) {\n    index = initialIndex;\n  }\n  // select instantly\n  this.select( index, false, true );\n};\n\n/**\n * select slide from number or cell element\n * @param {Element or Number} elem\n */\nproto.selectCell = function( value, isWrap, isInstant ) {\n  // get cell\n  var cell = this.queryCell( value );\n  if ( !cell ) {\n    return;\n  }\n\n  var index = this.getCellSlideIndex( cell );\n  this.select( index, isWrap, isInstant );\n};\n\nproto.getCellSlideIndex = function( cell ) {\n  // get index of slides that has cell\n  for ( var i=0; i < this.slides.length; i++ ) {\n    var slide = this.slides[i];\n    var index = slide.cells.indexOf( cell );\n    if ( index != -1 ) {\n      return i;\n    }\n  }\n};\n\n// -------------------------- get cells -------------------------- //\n\n/**\n * get Flickity.Cell, given an Element\n * @param {Element} elem\n * @returns {Flickity.Cell} item\n */\nproto.getCell = function( elem ) {\n  // loop through cells to get the one that matches\n  for ( var i=0; i < this.cells.length; i++ ) {\n    var cell = this.cells[i];\n    if ( cell.element == elem ) {\n      return cell;\n    }\n  }\n};\n\n/**\n * get collection of Flickity.Cells, given Elements\n * @param {Element, Array, NodeList} elems\n * @returns {Array} cells - Flickity.Cells\n */\nproto.getCells = function( elems ) {\n  elems = utils.makeArray( elems );\n  var cells = [];\n  elems.forEach( function( elem ) {\n    var cell = this.getCell( elem );\n    if ( cell ) {\n      cells.push( cell );\n    }\n  }, this );\n  return cells;\n};\n\n/**\n * get cell elements\n * @returns {Array} cellElems\n */\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  });\n};\n\n/**\n * get parent cell from an element\n * @param {Element} elem\n * @returns {Flickit.Cell} cell\n */\nproto.getParentCell = function( elem ) {\n  // first check if elem is cell\n  var cell = this.getCell( elem );\n  if ( cell ) {\n    return cell;\n  }\n  // try to get parent cell elem\n  elem = utils.getParent( elem, '.flickity-slider > *' );\n  return this.getCell( elem );\n};\n\n/**\n * get cells adjacent to a slide\n * @param {Integer} adjCount - number of adjacent slides\n * @param {Integer} index - index of slide to start\n * @returns {Array} cells - array of Flickity.Cells\n */\nproto.getAdjacentCellElements = function( adjCount, index ) {\n  if ( !adjCount ) {\n    return this.selectedSlide.getCellElements();\n  }\n  index = index === undefined ? this.selectedIndex : index;\n\n  var len = this.slides.length;\n  if ( 1 + ( adjCount * 2 ) >= len ) {\n    return this.getCellElements();\n  }\n\n  var cellElems = [];\n  for ( var i = index - adjCount; i <= index + adjCount ; i++ ) {\n    var slideIndex = this.options.wrapAround ? utils.modulo( i, len ) : i;\n    var slide = this.slides[ slideIndex ];\n    if ( slide ) {\n      cellElems = cellElems.concat( slide.getCellElements() );\n    }\n  }\n  return cellElems;\n};\n\n/**\n * select slide from number or cell element\n * @param {Element, Selector String, or Number} selector\n */\nproto.queryCell = function( selector ) {\n  if ( typeof selector == 'number' ) {\n    // use number as index\n    return this.cells[ selector ];\n  }\n  if ( typeof selector == 'string' ) {\n    // do not select invalid selectors from hash: #123, #/. #791\n    if ( selector.match(/^[#\\.]?[\\d\\/]/) ) {\n      return;\n    }\n    // use string as selector, get element\n    selector = this.element.querySelector( selector );\n  }\n  // get cell from element\n  return this.getCell( selector );\n};\n\n// -------------------------- events -------------------------- //\n\nproto.uiChange = function() {\n  this.emitEvent('uiChange');\n};\n\n// keep focus on element when child UI elements are clicked\nproto.childUIPointerDown = function( event ) {\n  // HACK iOS does not allow touch events to bubble up?!\n  if ( event.type != 'touchstart' ) {\n    event.preventDefault();\n  }\n  this.focus();\n};\n\n// ----- resize ----- //\n\nproto.onresize = function() {\n  this.watchCSS();\n  this.resize();\n};\n\nutils.debounceMethod( Flickity, 'onresize', 150 );\n\nproto.resize = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.getSize();\n  // wrap values\n  if ( this.options.wrapAround ) {\n    this.x = utils.modulo( this.x, this.slideableWidth );\n  }\n  this.positionCells();\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  this.emitEvent('resize');\n  // update selected index for group slides, instant\n  // TODO: position can be lost between groups of various numbers\n  var selectedElement = this.selectedElements && this.selectedElements[0];\n  this.selectCell( selectedElement, false, true );\n};\n\n// watches the :after property, activates/deactivates\nproto.watchCSS = function() {\n  var watchOption = this.options.watchCSS;\n  if ( !watchOption ) {\n    return;\n  }\n\n  var afterContent = getComputedStyle( this.element, ':after' ).content;\n  // activate if :after { content: 'flickity' }\n  if ( afterContent.indexOf('flickity') != -1 ) {\n    this.activate();\n  } else {\n    this.deactivate();\n  }\n};\n\n// ----- keydown ----- //\n\n// go previous/next if left/right keys pressed\nproto.onkeydown = function( event ) {\n  // only work if element is in focus\n  var isNotFocused = document.activeElement && document.activeElement != this.element;\n  if ( !this.options.accessibility ||isNotFocused ) {\n    return;\n  }\n\n  var handler = Flickity.keyboardHandlers[ event.keyCode ];\n  if ( handler ) {\n    handler.call( this );\n  }\n};\n\nFlickity.keyboardHandlers = {\n  // left arrow\n  37: function() {\n    var leftMethod = this.options.rightToLeft ? 'next' : 'previous';\n    this.uiChange();\n    this[ leftMethod ]();\n  },\n  // right arrow\n  39: function() {\n    var rightMethod = this.options.rightToLeft ? 'previous' : 'next';\n    this.uiChange();\n    this[ rightMethod ]();\n  },\n};\n\n// ----- focus ----- //\n\nproto.focus = function() {\n  // TODO remove scrollTo once focus options gets more support\n  // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Browser_compatibility\n  var prevScrollY = window.pageYOffset;\n  this.element.focus({ preventScroll: true });\n  // hack to fix scroll jump after focus, #76\n  if ( window.pageYOffset != prevScrollY ) {\n    window.scrollTo( window.pageXOffset, prevScrollY );\n  }\n};\n\n// -------------------------- destroy -------------------------- //\n\n// deactivate all Flickity functionality, but keep stuff available\nproto.deactivate = function() {\n  if ( !this.isActive ) {\n    return;\n  }\n  this.element.classList.remove('flickity-enabled');\n  this.element.classList.remove('flickity-rtl');\n  this.unselectSelectedSlide();\n  // destroy cells\n  this.cells.forEach( function( cell ) {\n    cell.destroy();\n  });\n  this.element.removeChild( this.viewport );\n  // move child elements back into element\n  moveElements( this.slider.children, this.element );\n  if ( this.options.accessibility ) {\n    this.element.removeAttribute('tabIndex');\n    this.element.removeEventListener( 'keydown', this );\n  }\n  // set flags\n  this.isActive = false;\n  this.emitEvent('deactivate');\n};\n\nproto.destroy = function() {\n  this.deactivate();\n  window.removeEventListener( 'resize', this );\n  this.allOff();\n  this.emitEvent('destroy');\n  if ( jQuery && this.$element ) {\n    jQuery.removeData( this.element, 'flickity' );\n  }\n  delete this.element.flickityGUID;\n  delete instances[ this.guid ];\n};\n\n// -------------------------- prototype -------------------------- //\n\nutils.extend( proto, animatePrototype );\n\n// -------------------------- extras -------------------------- //\n\n/**\n * get Flickity instance from element\n * @param {Element} elem\n * @returns {Flickity}\n */\nFlickity.data = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var id = elem && elem.flickityGUID;\n  return id && instances[ id ];\n};\n\nutils.htmlInit( Flickity, 'flickity' );\n\nif ( jQuery && jQuery.bridget ) {\n  jQuery.bridget( 'flickity', Flickity );\n}\n\n// set internal jQuery, for Webpack + jQuery v3, #478\nFlickity.setJQuery = function( jq ) {\n  jQuery = jq;\n};\n\nFlickity.Cell = Cell;\nFlickity.Slide = Slide;\n\nreturn Flickity;\n\n}));\n\n/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /*global define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'unipointer/unipointer',[\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.Unipointer = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n}( window, function factory( window, EvEmitter ) {\n\n\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n  this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n  // default to mouse events\n  var startEvent = 'mousedown';\n  if ( window.PointerEvent ) {\n    // Pointer Events\n    startEvent = 'pointerdown';\n  } else if ( 'ontouchstart' in window ) {\n    // Touch Events. iOS Safari\n    startEvent = 'touchstart';\n  }\n  elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n  for ( var i=0; i < touches.length; i++ ) {\n    var touch = touches[i];\n    if ( touch.identifier == this.pointerIdentifier ) {\n      return touch;\n    }\n  }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n  // dismiss clicks from right or middle buttons\n  var button = event.button;\n  if ( button && ( button !== 0 && button !== 1 ) ) {\n    return;\n  }\n  this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n  this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n  this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n  // dismiss right click and other pointers\n  // button = 0 is okay, 1-4 not\n  if ( event.button || this.isPointerDown ) {\n    return;\n  }\n\n  this.isPointerDown = true;\n  // save pointer identifier to match up touch events\n  this.pointerIdentifier = pointer.pointerId !== undefined ?\n    // pointerId for pointer events, touch.indentifier for touch events\n    pointer.pointerId : pointer.identifier;\n\n  this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n  mousedown: [ 'mousemove', 'mouseup' ],\n  touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n  pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n  if ( !event ) {\n    return;\n  }\n  // get proper events to match start event\n  var events = postStartEvents[ event.type ];\n  // bind events to node\n  events.forEach( function( eventName ) {\n    window.addEventListener( eventName, this );\n  }, this );\n  // save these arguments\n  this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n  // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n  if ( !this._boundPointerEvents ) {\n    return;\n  }\n  this._boundPointerEvents.forEach( function( eventName ) {\n    window.removeEventListener( eventName, this );\n  }, this );\n\n  delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n  this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerMove( event, event );\n  }\n};\n\nproto.ontouchmove = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerMove( event, touch );\n  }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n  this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n  this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n  this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerUp( event, event );\n  }\n};\n\nproto.ontouchend = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerUp( event, touch );\n  }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n  this._pointerReset();\n  this._unbindPostStartEvents();\n  this.pointerDone();\n};\n\nproto._pointerReset = function() {\n  // reset properties\n  this.isPointerDown = false;\n  delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n  if ( event.pointerId == this.pointerIdentifier ) {\n    this._pointerCancel( event, event );\n  }\n};\n\nproto.ontouchcancel = function( event ) {\n  var touch = this.getTouch( event.changedTouches );\n  if ( touch ) {\n    this._pointerCancel( event, touch );\n  }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n  this._pointerDone();\n  this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n  this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// -----  ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n  return {\n    x: pointer.pageX,\n    y: pointer.pageY\n  };\n};\n\n// -----  ----- //\n\nreturn Unipointer;\n\n}));\n\n/*!\n * Unidragger v2.3.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'unidragger/unidragger',[\n      'unipointer/unipointer'\n    ], function( Unipointer ) {\n      return factory( window, Unipointer );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('unipointer')\n    );\n  } else {\n    // browser global\n    window.Unidragger = factory(\n      window,\n      window.Unipointer\n    );\n  }\n\n}( window, function factory( window, Unipointer ) {\n\n\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n  this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n  this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  // bind each handle\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n  var touchAction = isAdd ? this._touchActionValue : '';\n  for ( var i=0; i < this.handles.length; i++ ) {\n    var handle = this.handles[i];\n    this._bindStartEvent( handle, isAdd );\n    handle[ bindMethod ]( 'click', this );\n    // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n    if ( window.PointerEvent ) {\n      handle.style.touchAction = touchAction;\n    }\n  }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n  // track start event position\n  this.pointerDownPointer = pointer;\n\n  event.preventDefault();\n  this.pointerDownBlur();\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n  TEXTAREA: true,\n  INPUT: true,\n  SELECT: true,\n  OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n  radio: true,\n  checkbox: true,\n  button: true,\n  submit: true,\n  image: true,\n  file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n  var isCursorNode = cursorNodes[ event.target.nodeName ];\n  var isClickType = clickTypes[ event.target.type ];\n  var isOkay = !isCursorNode || isClickType;\n  if ( !isOkay ) {\n    this._pointerReset();\n  }\n  return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n  var focused = document.activeElement;\n  // do not blur body for IE10, metafizzy/flickity#117\n  var canBlur = focused && focused.blur && focused != document.body;\n  if ( canBlur ) {\n    focused.blur();\n  }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n  var moveVector = {\n    x: pointer.pageX - this.pointerDownPointer.pageX,\n    y: pointer.pageY - this.pointerDownPointer.pageY\n  };\n  // start drag if pointer has moved far enough to start drag\n  if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n    this._dragStart( event, pointer );\n  }\n  return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n  if ( this.isDragging ) {\n    this._dragEnd( event, pointer );\n  } else {\n    // pointer didn't move enough for drag to start\n    this._staticClick( event, pointer );\n  }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n  this.isDragging = true;\n  // prevent clicks\n  this.isPreventingClicks = true;\n  this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n  this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n  // do not drag if not dragging yet\n  if ( !this.isDragging ) {\n    return;\n  }\n\n  this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  event.preventDefault();\n  this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n  // set flags\n  this.isDragging = false;\n  // re-enable clicking async\n  setTimeout( function() {\n    delete this.isPreventingClicks;\n  }.bind( this ) );\n\n  this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n  if ( this.isPreventingClicks ) {\n    event.preventDefault();\n  }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n  // ignore emulated mouse up clicks\n  if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n    return;\n  }\n\n  this.staticClick( event, pointer );\n\n  // set flag for emulated clicks 300ms after touchend\n  if ( event.type != 'mouseup' ) {\n    this.isIgnoringMouseUp = true;\n    // reset flag after 300ms\n    setTimeout( function() {\n      delete this.isIgnoringMouseUp;\n    }.bind( this ), 400 );\n  }\n};\n\nproto.staticClick = function( event, pointer ) {\n  this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// -----  ----- //\n\nreturn Unidragger;\n\n}));\n\n// drag\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/drag',[\n      './flickity',\n      'unidragger/unidragger',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unidragger, utils ) {\n      return factory( window, Flickity, Unidragger, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unidragger'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window,\n      window.Flickity,\n      window.Unidragger,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n  draggable: '>1',\n  dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// --------------------------  -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n  this.on( 'activate', this.onActivateDrag );\n  this.on( 'uiChange', this._uiChangeDrag );\n  this.on( 'deactivate', this.onDeactivateDrag );\n  this.on( 'cellChange', this.updateDraggable );\n  // TODO updateDraggable on resize? if groupCells & slides change\n  // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n  // #457, RubaXa/Sortable#973\n  if ( isTouch && !isTouchmoveScrollCanceled ) {\n    window.addEventListener( 'touchmove', function() {});\n    isTouchmoveScrollCanceled = true;\n  }\n};\n\nproto.onActivateDrag = function() {\n  this.handles = [ this.viewport ];\n  this.bindHandles();\n  this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n  this.unbindHandles();\n  this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n  // disable dragging if less than 2 slides. #278\n  if ( this.options.draggable == '>1' ) {\n    this.isDraggable = this.slides.length > 1;\n  } else {\n    this.isDraggable = this.options.draggable;\n  }\n  if ( this.isDraggable ) {\n    this.element.classList.add('is-draggable');\n  } else {\n    this.element.classList.remove('is-draggable');\n  }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n  this.options.draggable = true;\n  this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n  this.options.draggable = false;\n  this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n  delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    this._pointerDownDefault( event, pointer );\n    return;\n  }\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n\n  this._pointerDownPreventDefault( event );\n  this.pointerDownFocus( event );\n  // blur\n  if ( document.activeElement != this.element ) {\n    // do not blur if already focused\n    this.pointerDownBlur();\n  }\n\n  // stop if it was moving\n  this.dragX = this.x;\n  this.viewport.classList.add('is-pointer-down');\n  // track scrolling\n  this.pointerDownScroll = getScrollPosition();\n  window.addEventListener( 'scroll', this );\n\n  this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n  // track start event position\n  // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n  this.pointerDownPointer = {\n    pageX: pointer.pageX,\n    pageY: pointer.pageY,\n  };\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n  INPUT: true,\n  TEXTAREA: true,\n  SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isFocusNode ) {\n    this.focus();\n  }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n  var isTouchStart = event.type == 'touchstart';\n  var isTouchPointer = event.pointerType == 'touch';\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n    event.preventDefault();\n  }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n  delete this.isTouchScrolling;\n  this.viewport.classList.remove('is-pointer-down');\n  this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n  window.removeEventListener( 'scroll', this );\n  delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  this.dragStartPosition = this.x;\n  this.startAnimation();\n  window.removeEventListener( 'scroll', this );\n  this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  event.preventDefault();\n\n  this.previousDragX = this.dragX;\n  // reverse if right-to-left\n  var direction = this.options.rightToLeft ? -1 : 1;\n  if ( this.options.wrapAround ) {\n    // wrap around move. #589\n    moveVector.x = moveVector.x % this.slideableWidth;\n  }\n  var dragX = this.dragStartPosition + moveVector.x * direction;\n\n  if ( !this.options.wrapAround && this.slides.length ) {\n    // slow drag\n    var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n    dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n    var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n    dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n  }\n\n  this.dragX = dragX;\n\n  this.dragMoveTime = new Date();\n  this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  if ( this.options.freeScroll ) {\n    this.isFreeScrolling = true;\n  }\n  // set selectedIndex based on where flick will end up\n  var index = this.dragEndRestingSelect();\n\n  if ( this.options.freeScroll && !this.options.wrapAround ) {\n    // if free-scroll & not wrap around\n    // do not free-scroll if going outside of bounding slides\n    // so bounding slides can attract slider, and keep it in bounds\n    var restingX = this.getRestingPosition();\n    this.isFreeScrolling = -restingX > this.slides[0].target &&\n      -restingX < this.getLastSlide().target;\n  } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n    // boost selection if selected index has not changed\n    index += this.dragEndBoostSelect();\n  }\n  delete this.previousDragX;\n  // apply selection\n  // TODO refactor this, selecting here feels weird\n  // HACK, set flag so dragging stays in correct direction\n  this.isDragSelect = this.options.wrapAround;\n  this.select( index );\n  delete this.isDragSelect;\n  this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n  var restingX = this.getRestingPosition();\n  // how far away from selected slide\n  var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n  // get closet resting going up and going down\n  var positiveResting = this._getClosestResting( restingX, distance, 1 );\n  var negativeResting = this._getClosestResting( restingX, distance, -1 );\n  // use closer resting for wrap-around\n  var index = positiveResting.distance < negativeResting.distance ?\n    positiveResting.index : negativeResting.index;\n  return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n  var index = this.selectedIndex;\n  var minDistance = Infinity;\n  var condition = this.options.contain && !this.options.wrapAround ?\n    // if contain, keep going if distance is equal to minDistance\n    function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n  while ( condition( distance, minDistance ) ) {\n    // measure distance to next cell\n    index += increment;\n    minDistance = distance;\n    distance = this.getSlideDistance( -restingX, index );\n    if ( distance === null ) {\n      break;\n    }\n    distance = Math.abs( distance );\n  }\n  return {\n    distance: minDistance,\n    // selected was previous index\n    index: index - increment\n  };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n  var len = this.slides.length;\n  // wrap around if at least 2 slides\n  var isWrapAround = this.options.wrapAround && len > 1;\n  var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n  var slide = this.slides[ slideIndex ];\n  if ( !slide ) {\n    return null;\n  }\n  // add distance for wrap-around slides\n  var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n  return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n  // do not boost if no previousDragX or dragMoveTime\n  if ( this.previousDragX === undefined || !this.dragMoveTime ||\n    // or if drag was held for 100 ms\n    new Date() - this.dragMoveTime > 100 ) {\n    return 0;\n  }\n\n  var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n  var delta = this.previousDragX - this.dragX;\n  if ( distance > 0 && delta > 0 ) {\n    // boost to next if moving towards the right, and positive velocity\n    return 1;\n  } else if ( distance < 0 && delta < 0 ) {\n    // boost to previous if moving towards the left, and negative velocity\n    return -1;\n  }\n  return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n  // get clickedCell, if cell was clicked\n  var clickedCell = this.getParentCell( event.target );\n  var cellElem = clickedCell && clickedCell.element;\n  var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n  this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n  var scroll = getScrollPosition();\n  var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n  var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n  // cancel click/tap if scroll is too much\n  if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n    this._pointerDone();\n  }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n}\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n// prev/next buttons\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/prev-next-button',[\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unipointer'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.Unipointer,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n  this.direction = direction;\n  this.parent = parent;\n  this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n  // properties\n  this.isEnabled = true;\n  this.isPrevious = this.direction == -1;\n  var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n  this.isLeft = this.direction == leftDirection;\n\n  var element = this.element = document.createElement('button');\n  element.className = 'flickity-button flickity-prev-next-button';\n  element.className += this.isPrevious ? ' previous' : ' next';\n  // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n  element.setAttribute( 'type', 'button' );\n  // init as disabled\n  this.disable();\n\n  element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n  // create arrow\n  var svg = this.createSVG();\n  element.appendChild( svg );\n  // events\n  this.parent.on( 'select', this.update.bind( this ) );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n  this.bindStartEvent( this.element );\n  this.element.addEventListener( 'click', this );\n  // add to DOM\n  this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n  // remove from DOM\n  this.parent.element.removeChild( this.element );\n  // click events\n  this.unbindStartEvent( this.element );\n  this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n  var svg = document.createElementNS( svgURI, 'svg');\n  svg.setAttribute( 'class', 'flickity-button-icon' );\n  svg.setAttribute( 'viewBox', '0 0 100 100' );\n  var path = document.createElementNS( svgURI, 'path');\n  var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n  path.setAttribute( 'd', pathMovements );\n  path.setAttribute( 'class', 'arrow' );\n  // rotate arrow\n  if ( !this.isLeft ) {\n    path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n  }\n  svg.appendChild( path );\n  return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n  // use shape as movement if string\n  if ( typeof shape == 'string' ) {\n    return shape;\n  }\n  // create movement string\n  return 'M ' + shape.x0 + ',50' +\n    ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n    ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n    ' L ' + shape.x3 + ',50 ' +\n    ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n    ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n    ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.parent.uiChange();\n  var method = this.isPrevious ? 'previous' : 'next';\n  this.parent[ method ]();\n};\n\n// -----  ----- //\n\nPrevNextButton.prototype.enable = function() {\n  if ( this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = false;\n  this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = true;\n  this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n  // index of first or last slide, if previous or next\n  var slides = this.parent.slides;\n  // enable is wrapAround and at least 2 slides\n  if ( this.parent.options.wrapAround && slides.length > 1 ) {\n    this.enable();\n    return;\n  }\n  var lastIndex = slides.length ? slides.length - 1 : 0;\n  var boundIndex = this.isPrevious ? 0 : lastIndex;\n  var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n  this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  prevNextButtons: true,\n  arrowShape: {\n    x0: 10,\n    x1: 60, y1: 50,\n    x2: 70, y2: 40,\n    x3: 30\n  }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n  if ( !this.options.prevNextButtons ) {\n    return;\n  }\n\n  this.prevButton = new PrevNextButton( -1, this );\n  this.nextButton = new PrevNextButton( 1, this );\n\n  this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n  this.prevButton.activate();\n  this.nextButton.activate();\n  this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n  this.prevButton.deactivate();\n  this.nextButton.deactivate();\n  this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// --------------------------  -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n\n// page dots\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/page-dots',[\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unipointer'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.Unipointer,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n\n\nfunction PageDots( parent ) {\n  this.parent = parent;\n  this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n  // create holder element\n  this.holder = document.createElement('ol');\n  this.holder.className = 'flickity-page-dots';\n  // create dots, array of elements\n  this.dots = [];\n  // events\n  this.handleClick = this.onClick.bind( this );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n  this.setDots();\n  this.holder.addEventListener( 'click', this.handleClick );\n  this.bindStartEvent( this.holder );\n  // add to DOM\n  this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n  this.holder.removeEventListener( 'click', this.handleClick );\n  this.unbindStartEvent( this.holder );\n  // remove from DOM\n  this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n  // get difference between number of slides and number of dots\n  var delta = this.parent.slides.length - this.dots.length;\n  if ( delta > 0 ) {\n    this.addDots( delta );\n  } else if ( delta < 0 ) {\n    this.removeDots( -delta );\n  }\n};\n\nPageDots.prototype.addDots = function( count ) {\n  var fragment = document.createDocumentFragment();\n  var newDots = [];\n  var length = this.dots.length;\n  var max = length + count;\n\n  for ( var i = length; i < max; i++ ) {\n    var dot = document.createElement('li');\n    dot.className = 'dot';\n    dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n    fragment.appendChild( dot );\n    newDots.push( dot );\n  }\n\n  this.holder.appendChild( fragment );\n  this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n  // remove from this.dots collection\n  var removeDots = this.dots.splice( this.dots.length - count, count );\n  // remove from DOM\n  removeDots.forEach( function( dot ) {\n    this.holder.removeChild( dot );\n  }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n  // remove selected class on previous\n  if ( this.selectedDot ) {\n    this.selectedDot.className = 'dot';\n    this.selectedDot.removeAttribute('aria-current');\n  }\n  // don't proceed if no dots\n  if ( !this.dots.length ) {\n    return;\n  }\n  this.selectedDot = this.dots[ this.parent.selectedIndex ];\n  this.selectedDot.className = 'dot is-selected';\n  this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n  var target = event.target;\n  // only care about dot clicks\n  if ( target.nodeName != 'LI' ) {\n    return;\n  }\n\n  this.parent.uiChange();\n  var index = this.dots.indexOf( target );\n  this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n  if ( !this.options.pageDots ) {\n    return;\n  }\n  this.pageDots = new PageDots( this );\n  // events\n  this.on( 'activate', this.activatePageDots );\n  this.on( 'select', this.updateSelectedPageDots );\n  this.on( 'cellChange', this.updatePageDots );\n  this.on( 'resize', this.updatePageDots );\n  this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n  this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n  this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n  this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n  this.pageDots.deactivate();\n};\n\n// -----  ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n\n// player & autoPlay\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/player',[\n      'ev-emitter/ev-emitter',\n      'fizzy-ui-utils/utils',\n      './flickity'\n    ], function( EvEmitter, utils, Flickity ) {\n      return factory( EvEmitter, utils, Flickity );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('ev-emitter'),\n      require('fizzy-ui-utils'),\n      require('./flickity')\n    );\n  } else {\n    // browser global\n    factory(\n      window.EvEmitter,\n      window.fizzyUIUtils,\n      window.Flickity\n    );\n  }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n  this.parent = parent;\n  this.state = 'stopped';\n  // visibility change event handler\n  this.onVisibilityChange = this.visibilityChange.bind( this );\n  this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n  if ( this.state == 'playing' ) {\n    return;\n  }\n  // do not play if page is hidden, start playing when page is visible\n  var isPageHidden = document.hidden;\n  if ( isPageHidden ) {\n    document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n    return;\n  }\n\n  this.state = 'playing';\n  // listen to visibility change\n  document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n  // start ticking\n  this.tick();\n};\n\nPlayer.prototype.tick = function() {\n  // do not tick if not playing\n  if ( this.state != 'playing' ) {\n    return;\n  }\n\n  var time = this.parent.options.autoPlay;\n  // default to 3 seconds\n  time = typeof time == 'number' ? time : 3000;\n  var _this = this;\n  // HACK: reset ticks if stopped and started within interval\n  this.clear();\n  this.timeout = setTimeout( function() {\n    _this.parent.next( true );\n    _this.tick();\n  }, time );\n};\n\nPlayer.prototype.stop = function() {\n  this.state = 'stopped';\n  this.clear();\n  // remove visibility change event\n  document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n  clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n  if ( this.state == 'playing' ) {\n    this.state = 'paused';\n    this.clear();\n  }\n};\n\nPlayer.prototype.unpause = function() {\n  // re-start play if paused\n  if ( this.state == 'paused' ) {\n    this.play();\n  }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n  var isPageHidden = document.hidden;\n  this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n  this.play();\n  document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n  this.player = new Player( this );\n\n  this.on( 'activate', this.activatePlayer );\n  this.on( 'uiChange', this.stopPlayer );\n  this.on( 'pointerDown', this.stopPlayer );\n  this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n  if ( !this.options.autoPlay ) {\n    return;\n  }\n  this.player.play();\n  this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n  this.player.play();\n};\n\nproto.stopPlayer = function() {\n  this.player.stop();\n};\n\nproto.pausePlayer = function() {\n  this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n  this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n  this.player.stop();\n  this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n  if ( !this.options.pauseAutoPlayOnHover ) {\n    return;\n  }\n  this.player.pause();\n  this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n  this.player.unpause();\n  this.element.removeEventListener( 'mouseleave', this );\n};\n\n// -----  ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n\n// add, remove cell\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/add-remove-cell',[\n      './flickity',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n\n\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n  var fragment = document.createDocumentFragment();\n  cells.forEach( function( cell ) {\n    fragment.appendChild( cell.element );\n  });\n  return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n  var cells = this._makeCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  var len = this.cells.length;\n  // default to append\n  index = index === undefined ? len : index;\n  // add cells with document fragment\n  var fragment = getCellsFragment( cells );\n  // append to slider\n  var isAppend = index == len;\n  if ( isAppend ) {\n    this.slider.appendChild( fragment );\n  } else {\n    var insertCellElement = this.cells[ index ].element;\n    this.slider.insertBefore( fragment, insertCellElement );\n  }\n  // add to this.cells\n  if ( index === 0 ) {\n    // prepend, add to start\n    this.cells = cells.concat( this.cells );\n  } else if ( isAppend ) {\n    // append, add to end\n    this.cells = this.cells.concat( cells );\n  } else {\n    // insert in this.cells\n    var endCells = this.cells.splice( index, len - index );\n    this.cells = this.cells.concat( cells ).concat( endCells );\n  }\n\n  this._sizeCells( cells );\n  this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n  this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n  this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n  var cells = this.getCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n\n  var minCellIndex = this.cells.length - 1;\n  // remove cells from collection & DOM\n  cells.forEach( function( cell ) {\n    cell.remove();\n    var index = this.cells.indexOf( cell );\n    minCellIndex = Math.min( index, minCellIndex );\n    utils.removeFrom( this.cells, cell );\n  }, this );\n\n  this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n  var cell = this.getCell( elem );\n  if ( !cell ) {\n    return;\n  }\n  cell.getSize();\n\n  var index = this.cells.indexOf( cell );\n  this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n  var prevSelectedElem = this.selectedElement;\n  this._positionCells( changedCellIndex );\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  // update selectedIndex\n  // try to maintain position & select previous selected element\n  var cell = this.getCell( prevSelectedElem );\n  if ( cell ) {\n    this.selectedIndex = this.getCellSlideIndex( cell );\n  }\n  this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n  this.emitEvent( 'cellChange', [ changedCellIndex ] );\n  // position slider\n  this.select( this.selectedIndex );\n  // do not position slider after lazy load\n  if ( isPositioningSlider ) {\n    this.positionSliderAtSelected();\n  }\n};\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n// lazyload\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/lazyload',[\n      './flickity',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n  this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n  var lazyLoad = this.options.lazyLoad;\n  if ( !lazyLoad ) {\n    return;\n  }\n  // get adjacent cells, use lazyLoad option for adjacent count\n  var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n  var cellElems = this.getAdjacentCellElements( adjCount );\n  // get lazy images in those cells\n  var lazyImages = [];\n  cellElems.forEach( function( cellElem ) {\n    var lazyCellImages = getCellLazyImages( cellElem );\n    lazyImages = lazyImages.concat( lazyCellImages );\n  });\n  // load lazy images\n  lazyImages.forEach( function( img ) {\n    new LazyLoader( img, this );\n  }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n  // check if cell element is lazy image\n  if ( cellElem.nodeName == 'IMG' ) {\n    var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n    var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n    var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n    if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n      return [ cellElem ];\n    }\n  }\n  // select lazy images in cell\n  var lazySelector = 'img[data-flickity-lazyload], ' +\n    'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n  var imgs = cellElem.querySelectorAll( lazySelector );\n  return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n  this.img = img;\n  this.flickity = flickity;\n  this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  // get src & srcset\n  var src = this.img.getAttribute('data-flickity-lazyload') ||\n    this.img.getAttribute('data-flickity-lazyload-src');\n  var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n  // set src & serset\n  this.img.src = src;\n  if ( srcset ) {\n    this.img.setAttribute( 'srcset', srcset );\n  }\n  // remove attr\n  this.img.removeAttribute('data-flickity-lazyload');\n  this.img.removeAttribute('data-flickity-lazyload-src');\n  this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n  this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n  this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n  // unbind events\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n\n  var cell = this.flickity.getParentCell( this.img );\n  var cellElem = cell && cell.element;\n  this.flickity.cellSizeChange( cellElem );\n\n  this.img.classList.add( className );\n  this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// -----  ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n\n/*!\n * Flickity v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity/js/index',[\n      './flickity',\n      './drag',\n      './prev-next-button',\n      './page-dots',\n      './player',\n      './add-remove-cell',\n      './lazyload'\n    ], factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('./flickity'),\n      require('./drag'),\n      require('./prev-next-button'),\n      require('./page-dots'),\n      require('./player'),\n      require('./add-remove-cell'),\n      require('./lazyload')\n    );\n  }\n\n})( window, function factory( Flickity ) {\n  /*jshint strict: false*/\n  return Flickity;\n});\n\n/*!\n * Flickity asNavFor v2.0.1\n * enable asNavFor for Flickity\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true*/\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'flickity-as-nav-for/as-nav-for',[\n      'flickity/js/index',\n      'fizzy-ui-utils/utils'\n    ], factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( Flickity, utils ) {\n\n\n\n// -------------------------- asNavFor prototype -------------------------- //\n\n// Flickity.defaults.asNavFor = null;\n\nFlickity.createMethods.push('_createAsNavFor');\n\nvar proto = Flickity.prototype;\n\nproto._createAsNavFor = function() {\n  this.on( 'activate', this.activateAsNavFor );\n  this.on( 'deactivate', this.deactivateAsNavFor );\n  this.on( 'destroy', this.destroyAsNavFor );\n\n  var asNavForOption = this.options.asNavFor;\n  if ( !asNavForOption ) {\n    return;\n  }\n  // HACK do async, give time for other flickity to be initalized\n  var _this = this;\n  setTimeout( function initNavCompanion() {\n    _this.setNavCompanion( asNavForOption );\n  });\n};\n\nproto.setNavCompanion = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var companion = Flickity.data( elem );\n  // stop if no companion or companion is self\n  if ( !companion || companion == this ) {\n    return;\n  }\n\n  this.navCompanion = companion;\n  // companion select\n  var _this = this;\n  this.onNavCompanionSelect = function() {\n    _this.navCompanionSelect();\n  };\n  companion.on( 'select', this.onNavCompanionSelect );\n  // click\n  this.on( 'staticClick', this.onNavStaticClick );\n\n  this.navCompanionSelect( true );\n};\n\nproto.navCompanionSelect = function( isInstant ) {\n  if ( !this.navCompanion ) {\n    return;\n  }\n  // select slide that matches first cell of slide\n  var selectedCell = this.navCompanion.selectedCells[0];\n  var firstIndex = this.navCompanion.cells.indexOf( selectedCell );\n  var lastIndex = firstIndex + this.navCompanion.selectedCells.length - 1;\n  var selectIndex = Math.floor( lerp( firstIndex, lastIndex,\n    this.navCompanion.cellAlign ) );\n  this.selectCell( selectIndex, false, isInstant );\n  // set nav selected class\n  this.removeNavSelectedElements();\n  // stop if companion has more cells than this one\n  if ( selectIndex >= this.cells.length ) {\n    return;\n  }\n\n  var selectedCells = this.cells.slice( firstIndex, lastIndex + 1 );\n  this.navSelectedElements = selectedCells.map( function( cell ) {\n    return cell.element;\n  });\n  this.changeNavSelectedClass('add');\n};\n\nfunction lerp( a, b, t ) {\n  return ( b - a ) * t + a;\n}\n\nproto.changeNavSelectedClass = function( method ) {\n  this.navSelectedElements.forEach( function( navElem ) {\n    navElem.classList[ method ]('is-nav-selected');\n  });\n};\n\nproto.activateAsNavFor = function() {\n  this.navCompanionSelect( true );\n};\n\nproto.removeNavSelectedElements = function() {\n  if ( !this.navSelectedElements ) {\n    return;\n  }\n  this.changeNavSelectedClass('remove');\n  delete this.navSelectedElements;\n};\n\nproto.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {\n  if ( typeof cellIndex == 'number' ) {\n    this.navCompanion.selectCell( cellIndex );\n  }\n};\n\nproto.deactivateAsNavFor = function() {\n  this.removeNavSelectedElements();\n};\n\nproto.destroyAsNavFor = function() {\n  if ( !this.navCompanion ) {\n    return;\n  }\n  this.navCompanion.off( 'select', this.onNavCompanionSelect );\n  this.off( 'staticClick', this.onNavStaticClick );\n  delete this.navCompanion;\n};\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n/*!\n * imagesLoaded v4.1.4\n * JavaScript is all like \"You images are done yet or what?\"\n * MIT License\n */\n\n( function( window, factory ) { 'use strict';\n  // universal module definition\n\n  /*global define: false, module: false, require: false */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( 'imagesloaded/imagesloaded',[\n      'ev-emitter/ev-emitter'\n    ], function( EvEmitter ) {\n      return factory( window, EvEmitter );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('ev-emitter')\n    );\n  } else {\n    // browser global\n    window.imagesLoaded = factory(\n      window,\n      window.EvEmitter\n    );\n  }\n\n})( typeof window !== 'undefined' ? window : this,\n\n// --------------------------  factory -------------------------- //\n\nfunction factory( window, EvEmitter ) {\n\n\n\nvar $ = window.jQuery;\nvar console = window.console;\n\n// -------------------------- helpers -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n  for ( var prop in b ) {\n    a[ prop ] = b[ prop ];\n  }\n  return a;\n}\n\nvar arraySlice = Array.prototype.slice;\n\n// turn element or nodeList into an array\nfunction makeArray( obj ) {\n  if ( Array.isArray( obj ) ) {\n    // use object if already an array\n    return obj;\n  }\n\n  var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\n  if ( isArrayLike ) {\n    // convert nodeList to array\n    return arraySlice.call( obj );\n  }\n\n  // array of single index\n  return [ obj ];\n}\n\n// -------------------------- imagesLoaded -------------------------- //\n\n/**\n * @param {Array, Element, NodeList, String} elem\n * @param {Object or Function} options - if function, use as callback\n * @param {Function} onAlways - callback function\n */\nfunction ImagesLoaded( elem, options, onAlways ) {\n  // coerce ImagesLoaded() without new, to be new ImagesLoaded()\n  if ( !( this instanceof ImagesLoaded ) ) {\n    return new ImagesLoaded( elem, options, onAlways );\n  }\n  // use elem as selector string\n  var queryElem = elem;\n  if ( typeof elem == 'string' ) {\n    queryElem = document.querySelectorAll( elem );\n  }\n  // bail if bad element\n  if ( !queryElem ) {\n    console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\n    return;\n  }\n\n  this.elements = makeArray( queryElem );\n  this.options = extend( {}, this.options );\n  // shift arguments if no options set\n  if ( typeof options == 'function' ) {\n    onAlways = options;\n  } else {\n    extend( this.options, options );\n  }\n\n  if ( onAlways ) {\n    this.on( 'always', onAlways );\n  }\n\n  this.getImages();\n\n  if ( $ ) {\n    // add jQuery Deferred object\n    this.jqDeferred = new $.Deferred();\n  }\n\n  // HACK check async to allow time to bind listeners\n  setTimeout( this.check.bind( this ) );\n}\n\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\n\nImagesLoaded.prototype.options = {};\n\nImagesLoaded.prototype.getImages = function() {\n  this.images = [];\n\n  // filter & find items if we have an item selector\n  this.elements.forEach( this.addElementImages, this );\n};\n\n/**\n * @param {Node} element\n */\nImagesLoaded.prototype.addElementImages = function( elem ) {\n  // filter siblings\n  if ( elem.nodeName == 'IMG' ) {\n    this.addImage( elem );\n  }\n  // get background image on element\n  if ( this.options.background === true ) {\n    this.addElementBackgroundImages( elem );\n  }\n\n  // find children\n  // no non-element nodes, #143\n  var nodeType = elem.nodeType;\n  if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\n    return;\n  }\n  var childImgs = elem.querySelectorAll('img');\n  // concat childElems to filterFound array\n  for ( var i=0; i < childImgs.length; i++ ) {\n    var img = childImgs[i];\n    this.addImage( img );\n  }\n\n  // get child background images\n  if ( typeof this.options.background == 'string' ) {\n    var children = elem.querySelectorAll( this.options.background );\n    for ( i=0; i < children.length; i++ ) {\n      var child = children[i];\n      this.addElementBackgroundImages( child );\n    }\n  }\n};\n\nvar elementNodeTypes = {\n  1: true,\n  9: true,\n  11: true\n};\n\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\n  var style = getComputedStyle( elem );\n  if ( !style ) {\n    // Firefox returns null if in a hidden iframe https://bugzil.la/548397\n    return;\n  }\n  // get url inside url(\"...\")\n  var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\n  var matches = reURL.exec( style.backgroundImage );\n  while ( matches !== null ) {\n    var url = matches && matches[2];\n    if ( url ) {\n      this.addBackground( url, elem );\n    }\n    matches = reURL.exec( style.backgroundImage );\n  }\n};\n\n/**\n * @param {Image} img\n */\nImagesLoaded.prototype.addImage = function( img ) {\n  var loadingImage = new LoadingImage( img );\n  this.images.push( loadingImage );\n};\n\nImagesLoaded.prototype.addBackground = function( url, elem ) {\n  var background = new Background( url, elem );\n  this.images.push( background );\n};\n\nImagesLoaded.prototype.check = function() {\n  var _this = this;\n  this.progressedCount = 0;\n  this.hasAnyBroken = false;\n  // complete if no images\n  if ( !this.images.length ) {\n    this.complete();\n    return;\n  }\n\n  function onProgress( image, elem, message ) {\n    // HACK - Chrome triggers event before object properties have changed. #83\n    setTimeout( function() {\n      _this.progress( image, elem, message );\n    });\n  }\n\n  this.images.forEach( function( loadingImage ) {\n    loadingImage.once( 'progress', onProgress );\n    loadingImage.check();\n  });\n};\n\nImagesLoaded.prototype.progress = function( image, elem, message ) {\n  this.progressedCount++;\n  this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\n  // progress event\n  this.emitEvent( 'progress', [ this, image, elem ] );\n  if ( this.jqDeferred && this.jqDeferred.notify ) {\n    this.jqDeferred.notify( this, image );\n  }\n  // check if completed\n  if ( this.progressedCount == this.images.length ) {\n    this.complete();\n  }\n\n  if ( this.options.debug && console ) {\n    console.log( 'progress: ' + message, image, elem );\n  }\n};\n\nImagesLoaded.prototype.complete = function() {\n  var eventName = this.hasAnyBroken ? 'fail' : 'done';\n  this.isComplete = true;\n  this.emitEvent( eventName, [ this ] );\n  this.emitEvent( 'always', [ this ] );\n  if ( this.jqDeferred ) {\n    var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\n    this.jqDeferred[ jqMethod ]( this );\n  }\n};\n\n// --------------------------  -------------------------- //\n\nfunction LoadingImage( img ) {\n  this.img = img;\n}\n\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\n\nLoadingImage.prototype.check = function() {\n  // If complete is true and browser supports natural sizes,\n  // try to check for image status manually.\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    // report based on naturalWidth\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    return;\n  }\n\n  // If none of the checks above matched, simulate loading on detached element.\n  this.proxyImage = new Image();\n  this.proxyImage.addEventListener( 'load', this );\n  this.proxyImage.addEventListener( 'error', this );\n  // bind to image as well for Firefox. #191\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.proxyImage.src = this.img.src;\n};\n\nLoadingImage.prototype.getIsImageComplete = function() {\n  // check for non-zero, non-undefined naturalWidth\n  // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\n  return this.img.complete && this.img.naturalWidth;\n};\n\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.img, message ] );\n};\n\n// ----- events ----- //\n\n// trigger specified handler for event type\nLoadingImage.prototype.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\nLoadingImage.prototype.onload = function() {\n  this.confirm( true, 'onload' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.onerror = function() {\n  this.confirm( false, 'onerror' );\n  this.unbindEvents();\n};\n\nLoadingImage.prototype.unbindEvents = function() {\n  this.proxyImage.removeEventListener( 'load', this );\n  this.proxyImage.removeEventListener( 'error', this );\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\n// -------------------------- Background -------------------------- //\n\nfunction Background( url, element ) {\n  this.url = url;\n  this.element = element;\n  this.img = new Image();\n}\n\n// inherit LoadingImage prototype\nBackground.prototype = Object.create( LoadingImage.prototype );\n\nBackground.prototype.check = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  this.img.src = this.url;\n  // check if image is already complete\n  var isComplete = this.getIsImageComplete();\n  if ( isComplete ) {\n    this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\n    this.unbindEvents();\n  }\n};\n\nBackground.prototype.unbindEvents = function() {\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n};\n\nBackground.prototype.confirm = function( isLoaded, message ) {\n  this.isLoaded = isLoaded;\n  this.emitEvent( 'progress', [ this, this.element, message ] );\n};\n\n// -------------------------- jQuery -------------------------- //\n\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\n  jQuery = jQuery || window.jQuery;\n  if ( !jQuery ) {\n    return;\n  }\n  // set local variable\n  $ = jQuery;\n  // $().imagesLoaded()\n  $.fn.imagesLoaded = function( options, callback ) {\n    var instance = new ImagesLoaded( this, options, callback );\n    return instance.jqDeferred.promise( $(this) );\n  };\n};\n// try making plugin\nImagesLoaded.makeJQueryPlugin();\n\n// --------------------------  -------------------------- //\n\nreturn ImagesLoaded;\n\n});\n\n/*!\n * Flickity imagesLoaded v2.0.0\n * enables imagesLoaded option for Flickity\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'flickity/js/index',\n      'imagesloaded/imagesloaded'\n    ], function( Flickity, imagesLoaded ) {\n      return factory( window, Flickity, imagesLoaded );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('flickity'),\n      require('imagesloaded')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window,\n      window.Flickity,\n      window.imagesLoaded\n    );\n  }\n\n}( window, function factory( window, Flickity, imagesLoaded ) {\n'use strict';\n\nFlickity.createMethods.push('_createImagesLoaded');\n\nvar proto = Flickity.prototype;\n\nproto._createImagesLoaded = function() {\n  this.on( 'activate', this.imagesLoaded );\n};\n\nproto.imagesLoaded = function() {\n  if ( !this.options.imagesLoaded ) {\n    return;\n  }\n  var _this = this;\n  function onImagesLoadedProgress( instance, image ) {\n    var cell = _this.getParentCell( image.img );\n    _this.cellSizeChange( cell && cell.element );\n    if ( !_this.options.freeScroll ) {\n      _this.positionSliderAtSelected();\n    }\n  }\n  imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );\n};\n\nreturn Flickity;\n\n}));\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/dist/flickity.pkgd.js\n// module id = 113\n// module chunks = 0","/*!\r\n * OverlayScrollbars\r\n * https://github.com/KingSora/OverlayScrollbars\r\n *\r\n * Version: 1.9.1\r\n *\r\n * Copyright KingSora | Rene Haas.\r\n * https://github.com/KingSora\r\n *\r\n * Released under the MIT license.\r\n * Date: 03.08.2019\r\n */\r\n\r\n(function (global, factory) {\r\n    if (typeof define === 'function' && define.amd)\r\n        define(['jquery'], function(framework) { return factory(global, global.document, undefined, framework); });\r\n    else if (typeof module === 'object' && typeof module.exports === 'object')\r\n        module.exports = factory(global, global.document, undefined, require('jquery'));\r\n    else\r\n        factory(global, global.document, undefined, global.jQuery);\r\n}(typeof window !== 'undefined' ? window : this,\r\n    function(window, document, undefined, framework) {\r\n        'use strict';\r\n        var PLUGINNAME = 'OverlayScrollbars';\r\n        var TYPES = {\r\n            o : 'object',\r\n            f : 'function',\r\n            a : 'array',\r\n            s : 'string',\r\n            b : 'boolean',\r\n            n : 'number',\r\n            u : 'undefined',\r\n            z : 'null'\r\n            //d : 'date',\r\n            //e : 'error',\r\n            //r : 'regexp',\r\n            //y : 'symbol'\r\n        };\r\n        var LEXICON = {\r\n            c : 'class',\r\n            s : 'style',\r\n            i : 'id',\r\n            l : 'length',\r\n            p : 'prototype',\r\n            oH : 'offsetHeight',\r\n            cH : 'clientHeight',\r\n            sH : 'scrollHeight',\r\n            oW : 'offsetWidth',\r\n            cW : 'clientWidth',\r\n            sW : 'scrollWidth',\r\n            hOP : 'hasOwnProperty'\r\n        };\r\n        var VENDORS = {\r\n            //https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix\r\n            _jsCache : { },\r\n            _cssCache : { },\r\n            _cssPrefixes : ['-webkit-', '-moz-', '-o-', '-ms-'],\r\n            _jsPrefixes : ['WebKit', 'Moz', 'O', 'MS'],\r\n            _cssProperty : function(name) {\r\n                var cache = this._cssCache;\r\n\r\n                if(cache[name])\r\n                    return cache[name];\r\n\r\n                var prefixes = this._cssPrefixes;\r\n                var uppercasedName = this._firstLetterToUpper(name);\r\n                var elmStyle = document.createElement('div')[LEXICON.s];\r\n                var resultPossibilities;\r\n                var i = 0;\r\n                var v = 0;\r\n                var currVendorWithoutDashes;\r\n\r\n                for (; i < prefixes.length; i++) {\r\n                    currVendorWithoutDashes = prefixes[i].replace(/-/g, '');\r\n                    resultPossibilities = [\r\n                        name, //transition\r\n                        prefixes[i] + name, //-webkit-transition\r\n                        currVendorWithoutDashes + uppercasedName, //webkitTransition\r\n                        this._firstLetterToUpper(currVendorWithoutDashes) + uppercasedName //WebkitTransition\r\n                    ];\r\n                    for(v = 0; v < resultPossibilities[LEXICON.l]; v++) {\r\n                        if(elmStyle[resultPossibilities[v]] !== undefined) {\r\n                            cache[name] = resultPossibilities[v];\r\n                            return resultPossibilities[v];\r\n                        }\r\n                    }\r\n                }\r\n\r\n                return null;\r\n            },\r\n            _jsAPI : function(name, isInterface, fallback) {\r\n                var prefixes = this._jsPrefixes;\r\n                var cache = this._jsCache;\r\n                var i = 0;\r\n                var result = cache[name];\r\n                if(!result) {\r\n                    result = window[name];\r\n                    for(; i < prefixes[LEXICON.l]; i++)\r\n                        result = result || window[(isInterface ? prefixes[i] : prefixes[i].toLowerCase()) + this._firstLetterToUpper(name)];\r\n                    cache[name] = result;\r\n                }\r\n                return result || fallback;\r\n            },\r\n            _firstLetterToUpper : function(str) {\r\n                return str.charAt(0).toUpperCase() + str.slice(1);\r\n            }\r\n        };\r\n        var COMPATIBILITY = {\r\n            /**\r\n             * Gets the current window width.\r\n             * @returns {Number|number} The current window width in pixel.\r\n             */\r\n            wW: function() {\r\n                return window.innerWidth || document.documentElement[LEXICON.cW] || document.body[LEXICON.cW];\r\n            },\r\n\r\n            /**\r\n             * Gets the current window height.\r\n             * @returns {Number|number} The current window height in pixel.\r\n             */\r\n            wH: function() {\r\n                return window.innerHeight || document.documentElement[LEXICON.cH] || document.body[LEXICON.cH];\r\n            },\r\n\r\n            /**\r\n             * Gets the MutationObserver Object or undefined if not supported.\r\n             * @returns {MutationObserver|*|undefined} The MutationsObserver Object or undefined.\r\n             */\r\n            mO: function() {\r\n                return VENDORS._jsAPI('MutationObserver', true);\r\n            },\r\n\r\n            /**\r\n             * Gets the ResizeObserver Object or undefined if not supported.\r\n             * @returns {MutationObserver|*|undefined} The ResizeObserver Object or undefined.\r\n             */\r\n            rO: function() {\r\n                return VENDORS._jsAPI('ResizeObserver', true);\r\n            },\r\n\r\n            /**\r\n             * Gets the RequestAnimationFrame method or it's corresponding polyfill.\r\n             * @returns {*|Function} The RequestAnimationFrame method or it's corresponding polyfill.\r\n             */\r\n            rAF: function() {\r\n                return VENDORS._jsAPI('requestAnimationFrame', false, function (func) { return window.setTimeout(func, 1000 / 60); });\r\n            },\r\n\r\n            /**\r\n             * Gets the CancelAnimationFrame method or it's corresponding polyfill.\r\n             * @returns {*|Function} The CancelAnimationFrame method or it's corresponding polyfill.\r\n             */\r\n            cAF: function() {\r\n                return VENDORS._jsAPI('cancelAnimationFrame', false, function (id) { return window.clearTimeout(id); });\r\n            },\r\n\r\n            /**\r\n             * Gets the current time.\r\n             * @returns {number} The current time.\r\n             */\r\n            now: function() {\r\n                return Date.now && Date.now() || new Date().getTime();\r\n            },\r\n\r\n            /**\r\n             * Stops the propagation of the given event.\r\n             * @param event The event of which the propagation shall be stoped.\r\n             */\r\n            stpP: function(event) {\r\n                if(event.stopPropagation)\r\n                    event.stopPropagation();\r\n                else\r\n                    event.cancelBubble = true;\r\n            },\r\n\r\n            /**\r\n             * Prevents the default action of the given event.\r\n             * @param event The event of which the default action shall be prevented.\r\n             */\r\n            prvD: function(event) {\r\n                if(event.preventDefault && event.cancelable)\r\n                    event.preventDefault();\r\n                else\r\n                    event.returnValue = false;\r\n            },\r\n\r\n            /**\r\n             * Gets the pageX and pageY values of the given mouse event.\r\n             * @param event The mouse event of which the pageX and pageX shall be got.\r\n             * @returns {{x: number, y: number}} x = pageX value, y = pageY value.\r\n             */\r\n            page: function(event) {\r\n                event = event.originalEvent || event;\r\n\r\n                var strPage = 'page';\r\n                var strClient = 'client';\r\n                var strX = 'X';\r\n                var strY = 'Y';\r\n                var target = event.target || event.srcElement || document;\r\n                var eventDoc = target.ownerDocument || document;\r\n                var doc = eventDoc.documentElement;\r\n                var body = eventDoc.body;\r\n\r\n                //if touch event return return pageX/Y of it\r\n                if(event.touches !== undefined) {\r\n                    var touch = event.touches[0];\r\n                    return {\r\n                        x : touch[strPage + strX],\r\n                        y : touch[strPage + strY]\r\n                    }\r\n                }\r\n\r\n                // Calculate pageX/Y if not native supported\r\n                if (!event[strPage + strX] && event[strClient + strX] && event[strClient + strX] != null) {\r\n\r\n                    return {\r\n                        x : event[strClient + strX] +\r\n                        (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\r\n                        (doc && doc.clientLeft || body && body.clientLeft || 0),\r\n                        y : event[strClient + strY] +\r\n                        (doc && doc.scrollTop || body && body.scrollTop || 0) -\r\n                        (doc && doc.clientTop || body && body.clientTop || 0)\r\n                    }\r\n                }\r\n                return {\r\n                    x : event[strPage + strX],\r\n                    y : event[strPage + strY]\r\n                };\r\n            },\r\n\r\n            /**\r\n             * Gets the clicked mouse button of the given mouse event.\r\n             * @param event The mouse event of which the clicked button shal be got.\r\n             * @returns {number} The number of the clicked mouse button. (0 : none | 1 : leftButton | 2 : middleButton | 3 : rightButton)\r\n             */\r\n            mBtn: function(event) {\r\n                var button = event.button;\r\n                if (!event.which && button !== undefined)\r\n                    return (button & 1 ? 1 : (button & 2 ? 3 : (button & 4 ? 2 : 0)));\r\n                else\r\n                    return event.which;\r\n            },\r\n\r\n            /**\r\n             * Checks whether a item is in the given array and returns its index.\r\n             * @param item The item of which the position in the array shall be determined.\r\n             * @param arr The array.\r\n             * @returns {number} The zero based index of the item or -1 if the item isn't in the array.\r\n             */\r\n            inA : function(item, arr) {\r\n                for (var i = 0; i < arr[LEXICON.l]; i++)\r\n                    //Sometiems in IE a \"SCRIPT70\" Permission denied error occurs if HTML elements in a iFrame are compared\r\n                    try {\r\n                        if (arr[i] === item)\r\n                            return i;\r\n                    }\r\n                    catch(e) { }\r\n                return -1;\r\n            },\r\n\r\n            /**\r\n             * Returns true if the given value is a array.\r\n             * @param arr The potential array.\r\n             * @returns {boolean} True if the given value is a array, false otherwise.\r\n             */\r\n            isA: function(arr) {\r\n                var def = Array.isArray;\r\n                return def ? def(arr) : this.type(arr) == TYPES.a;\r\n            },\r\n\r\n            /**\r\n             * Determine the internal JavaScript [[Class]] of the given object.\r\n             * @param obj The object of which the type shall be determined.\r\n             * @returns {string} The type of the given object.\r\n             */\r\n            type: function(obj) {\r\n                if (obj === undefined)\r\n                    return obj + \"\";\r\n                if (obj === null)\r\n                    return obj + \"\";\r\n                return Object[LEXICON.p].toString.call(obj).replace(/^\\[object (.+)\\]$/, '$1').toLowerCase();\r\n            },\r\n\r\n\r\n            bind: function(func, thisObj) {\r\n                if (typeof func != TYPES.f) {\r\n                    throw \"Can't bind function!\";\r\n                    // closest thing possible to the ECMAScript 5\r\n                    // internal IsCallable function\r\n                    //throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\r\n                }\r\n                var proto     = LEXICON.p;\r\n                var aArgs   = Array[proto].slice.call(arguments, 2);\r\n                var fNOP    = function() {};\r\n                var fBound  = function() { return func.apply(this instanceof fNOP ? this : thisObj, aArgs.concat(Array[proto].slice.call(arguments))); };\r\n\r\n                if (func[proto])\r\n                    fNOP[proto] = func[proto]; // Function.prototype doesn't have a prototype property\r\n                fBound[proto] = new fNOP();\r\n\r\n                return fBound;\r\n            }\r\n\r\n            /**\r\n             * Gets the vendor-prefixed CSS property by the given name.\r\n             * For example the given name is \"transform\" and you're using a old Firefox browser then the returned value would be \"-moz-transform\".\r\n             * If the browser doesn't need a vendor-prefix, then the returned string is the given name.\r\n             * If the browser doesn't support the given property name at all (not even with a vendor-prefix) the returned value is null.\r\n             * @param propName The unprefixed CSS property name.\r\n             * @returns {string|null} The vendor-prefixed CSS property or null if the browser doesn't support the given CSS property.\r\n\r\n            cssProp : function(propName) {\r\n                return VENDORS._cssProperty(propName);\r\n            }\r\n            */\r\n        };\r\n\r\n        var MATH = Math;\r\n        var JQUERY = framework;\r\n        var EASING = framework.easing;\r\n        var FRAMEWORK = framework;\r\n        var INSTANCES = (function() {\r\n            var _targets = [ ];\r\n            var _instancePropertyString = '__overlayScrollbars__';\r\n\r\n            /**\r\n             * Register, unregister or get a certain (or all) instances.\r\n             * Register: Pass the target and the instance.\r\n             * Unregister: Pass the target and null.\r\n             * Get Instance: Pass the target from which the instance shall be got.\r\n             * Get Targets: Pass no arguments.\r\n             * @param target The target to which the instance shall be registered / from which the instance shall be unregistered / the instance shall be got\r\n             * @param instance The instance.\r\n             * @returns {*|void} Returns the instance from the given target.\r\n             */\r\n            return function (target, instance) {\r\n                var argLen = arguments[LEXICON.l];\r\n                if(argLen < 1) {\r\n                    //return all targets\r\n                    return _targets;\r\n                }\r\n                else {\r\n                    if(instance) {\r\n                        //register instance\r\n                        target[_instancePropertyString] = instance;\r\n                        _targets.push(target);\r\n                    }\r\n                    else {\r\n                        var index = COMPATIBILITY.inA(target, _targets);\r\n                        if (index > -1) {\r\n                            if(argLen > 1) {\r\n                                //unregister instance\r\n                                delete target[_instancePropertyString];\r\n                                _targets.splice(index, 1);\r\n                            }\r\n                            else {\r\n                                //get instance from target\r\n                                return _targets[index][_instancePropertyString];\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        })();\r\n        var PLUGIN = (function() {\r\n            var _plugin;\r\n            var _pluginsGlobals;\r\n            var _pluginsAutoUpdateLoop;\r\n            var _pluginsExtensions = [ ];\r\n            var _pluginsOptions = (function() {\r\n                var type = COMPATIBILITY.type;\r\n                var possibleTemplateTypes = [\r\n                    TYPES.b, //boolean\r\n                    TYPES.n, //number\r\n                    TYPES.s, //string\r\n                    TYPES.a, //array\r\n                    TYPES.o, //object\r\n                    TYPES.f, //function\r\n                    TYPES.z  //null\r\n                ];\r\n                var restrictedStringsSplit = ' ';\r\n                var restrictedStringsPossibilitiesSplit = ':';\r\n                var classNameAllowedValues = [TYPES.z, TYPES.s];\r\n                var numberAllowedValues = TYPES.n;\r\n                var booleanNullAllowedValues = [TYPES.z, TYPES.b];\r\n                var booleanTrueTemplate = [true, TYPES.b];\r\n                var booleanFalseTemplate = [false, TYPES.b];\r\n                var callbackTemplate = [null,  [TYPES.z, TYPES.f]];\r\n                var inheritedAttrsTemplate = [['style', 'class'], [TYPES.s, TYPES.a, TYPES.z]];\r\n                var resizeAllowedValues = 'n:none b:both h:horizontal v:vertical';\r\n                var overflowBehaviorAllowedValues = 'v-h:visible-hidden v-s:visible-scroll s:scroll h:hidden';\r\n                var scrollbarsVisibilityAllowedValues = 'v:visible h:hidden a:auto';\r\n                var scrollbarsAutoHideAllowedValues = 'n:never s:scroll l:leave m:move';\r\n                var optionsDefaultsAndTemplate = {\r\n                    className: ['os-theme-dark', classNameAllowedValues],                //null || string\r\n                    resize: ['none', resizeAllowedValues],                               //none || both  || horizontal || vertical || n || b || h || v\r\n                    sizeAutoCapable: booleanTrueTemplate,                                //true || false\r\n                    clipAlways: booleanTrueTemplate,                                     //true || false\r\n                    normalizeRTL: booleanTrueTemplate,                                   //true || false\r\n                    paddingAbsolute: booleanFalseTemplate,                               //true || false\r\n                    autoUpdate: [null, booleanNullAllowedValues],                        //true || false || null\r\n                    autoUpdateInterval: [33, numberAllowedValues],                       //number\r\n                    nativeScrollbarsOverlaid: {\r\n                        showNativeScrollbars: booleanFalseTemplate,                      //true || false\r\n                        initialize: booleanTrueTemplate                                  //true || false\r\n                    },\r\n                    overflowBehavior: {\r\n                        x: ['scroll', overflowBehaviorAllowedValues],                    //visible-hidden  || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n                        y: ['scroll', overflowBehaviorAllowedValues]                     //visible-hidden  || visible-scroll || hidden || scroll || v-h || v-s || h || s\r\n                    },\r\n                    scrollbars: {\r\n                        visibility: ['auto', scrollbarsVisibilityAllowedValues],         //visible || hidden || auto || v || h || a\r\n                        autoHide: ['never', scrollbarsAutoHideAllowedValues],            //never || scroll || leave || move || n || s || l || m\r\n                        autoHideDelay: [800, numberAllowedValues],                       //number\r\n                        dragScrolling: booleanTrueTemplate,                              //true || false\r\n                        clickScrolling: booleanFalseTemplate,                            //true || false\r\n                        touchSupport: booleanTrueTemplate,                               //true || false\r\n                        snapHandle: booleanFalseTemplate                                 //true || false\r\n                    },\r\n                    textarea: {\r\n                        dynWidth: booleanFalseTemplate,                                  //true || false\r\n                        dynHeight: booleanFalseTemplate,                                 //true || false\r\n                        inheritedAttrs : inheritedAttrsTemplate                          //string || array || null\r\n                    },\r\n                    callbacks: {\r\n                        onInitialized: callbackTemplate,                                 //null || function\r\n                        onInitializationWithdrawn: callbackTemplate,                     //null || function\r\n                        onDestroyed: callbackTemplate,                                   //null || function\r\n                        onScrollStart: callbackTemplate,                                 //null || function\r\n                        onScroll: callbackTemplate,                                      //null || function\r\n                        onScrollStop: callbackTemplate,                                  //null || function\r\n                        onOverflowChanged: callbackTemplate,                             //null || function\r\n                        onOverflowAmountChanged: callbackTemplate,                       //null || function\r\n                        onDirectionChanged: callbackTemplate,                            //null || function\r\n                        onContentSizeChanged: callbackTemplate,                          //null || function\r\n                        onHostSizeChanged: callbackTemplate,                             //null || function\r\n                        onUpdated: callbackTemplate                                      //null || function\r\n                    }\r\n                };\r\n                var convert = function(template) {\r\n                    var recursive = function(obj) {\r\n                        var key;\r\n                        var val;\r\n                        var valType;\r\n                        for(key in obj) {\r\n                            if(!obj[LEXICON.hOP](key))\r\n                                continue;\r\n                            val = obj[key];\r\n                            valType = type(val);\r\n                            if(valType == TYPES.a)\r\n                                obj[key] = val[template ? 1 : 0];\r\n                            else if(valType == TYPES.o)\r\n                                obj[key] = recursive(val);\r\n                        }\r\n                        return obj;\r\n                    };\r\n                    return recursive(FRAMEWORK.extend(true, { }, optionsDefaultsAndTemplate));\r\n                };\r\n\r\n                return {\r\n                    _defaults : convert(),\r\n\r\n                    _template : convert(true),\r\n\r\n                    /**\r\n                     * Validates the passed object by the passed template.\r\n                     * @param obj The object which shall be validated.\r\n                     * @param template The template which defines the allowed values and types.\r\n                     * @param writeErrors True if errors shall be logged to the console.\r\n                     * @param diffObj If a object is passed then only valid differences to this object will be returned.\r\n                     * @returns {{}} A object which contains two objects called \"default\" and \"prepared\" which contains only the valid properties of the passed original object and discards not different values compared to the passed diffObj.\r\n                     */\r\n                    _validate : function (obj, template, writeErrors, diffObj) {\r\n                        var validatedOptions = { };\r\n                        var validatedOptionsPrepared = { };\r\n                        var objectCopy = FRAMEWORK.extend(true, { }, obj);\r\n                        var inArray = FRAMEWORK.inArray;\r\n                        var isEmptyObj = FRAMEWORK.isEmptyObject;\r\n                        var checkObjectProps = function(data, template, diffData, validatedOptions, validatedOptionsPrepared, prevPropName) {\r\n                            for (var prop in template) {\r\n                                if (template[LEXICON.hOP](prop) && data[LEXICON.hOP](prop)) {\r\n                                    var isValid = false;\r\n                                    var isDiff = false;\r\n                                    var templateValue = template[prop];\r\n                                    var templateValueType = type(templateValue);\r\n                                    var templateIsComplex = templateValueType == TYPES.o;\r\n                                    var templateTypes = type(templateValue) != TYPES.a ? [ templateValue ] : templateValue;\r\n                                    var dataDiffValue = diffData[prop];\r\n                                    var dataValue = data[prop];\r\n                                    var dataValueType = type(dataValue);\r\n                                    var propPrefix = prevPropName ? prevPropName + \".\" : \"\";\r\n                                    var error = \"The option \\\"\" + propPrefix + prop + \"\\\" wasn't set, because\";\r\n                                    var errorPossibleTypes = [ ];\r\n                                    var errorRestrictedStrings = [ ];\r\n                                    var restrictedStringValuesSplit;\r\n                                    var restrictedStringValuesPossibilitiesSplit;\r\n                                    var isRestrictedValue;\r\n                                    var mainPossibility;\r\n                                    var currType;\r\n                                    var i;\r\n                                    var v;\r\n                                    var j;\r\n\r\n                                    dataDiffValue = dataDiffValue === undefined ? { } : dataDiffValue;\r\n                                    \r\n                                    //if the template has a object as value, it means that the options are complex (verschachtelt)\r\n                                    if(templateIsComplex && dataValueType == TYPES.o) {\r\n                                        validatedOptions[prop] = { };\r\n                                        validatedOptionsPrepared[prop] = { };\r\n                                        checkObjectProps(dataValue, templateValue, dataDiffValue, validatedOptions[prop], validatedOptionsPrepared[prop], propPrefix + prop);\r\n                                        FRAMEWORK.each([ data, validatedOptions, validatedOptionsPrepared ], function(index, value) {\r\n                                            if(isEmptyObj(value[prop])) {\r\n                                                delete value[prop];\r\n                                            }\r\n                                        });\r\n                                    }\r\n                                    else if(!templateIsComplex) {\r\n                                        for(i = 0; i < templateTypes[LEXICON.l]; i++) {\r\n                                            currType = templateTypes[i];\r\n                                            templateValueType = type(currType);\r\n                                            //if currtype is string and starts with restrictedStringPrefix and end with restrictedStringSuffix\r\n                                            isRestrictedValue = templateValueType == TYPES.s && inArray(currType, possibleTemplateTypes) === -1;\r\n                                            if(isRestrictedValue) {\r\n                                                errorPossibleTypes.push(TYPES.s);\r\n\r\n                                                //split it into a array which contains all possible values for example: [\"y:yes\", \"n:no\", \"m:maybe\"]\r\n                                                restrictedStringValuesSplit = currType.split(restrictedStringsSplit);\r\n                                                errorRestrictedStrings = errorRestrictedStrings.concat(restrictedStringValuesSplit);\r\n                                                for(v = 0; v < restrictedStringValuesSplit[LEXICON.l]; v++) {\r\n                                                    //split the possible values into their possibiliteis for example: [\"y\", \"yes\"] -> the first is always the mainPossibility\r\n                                                    restrictedStringValuesPossibilitiesSplit = restrictedStringValuesSplit[v].split(restrictedStringsPossibilitiesSplit);\r\n                                                    mainPossibility = restrictedStringValuesPossibilitiesSplit[0];\r\n                                                    for(j = 0; j < restrictedStringValuesPossibilitiesSplit[LEXICON.l]; j++) {\r\n                                                        //if any possibility matches with the dataValue, its valid\r\n                                                        if(dataValue === restrictedStringValuesPossibilitiesSplit[j]) {\r\n                                                            isValid = true;\r\n                                                            break;\r\n                                                        }\r\n                                                    }\r\n                                                    if(isValid)\r\n                                                        break;\r\n                                                }\r\n                                            }\r\n                                            else {\r\n                                                errorPossibleTypes.push(currType);\r\n\r\n                                                if(dataValueType === currType) {\r\n                                                    isValid = true;\r\n                                                    break;\r\n                                                }\r\n                                            }\r\n                                        }\r\n\r\n                                        if(isValid) {\r\n                                            isDiff = dataValue !== dataDiffValue;\r\n                                            \r\n                                            if(isDiff)\r\n                                                validatedOptions[prop] = dataValue;\r\n                                            \r\n                                            if(isRestrictedValue ? inArray(dataDiffValue, restrictedStringValuesPossibilitiesSplit) < 0 : isDiff)\r\n                                                validatedOptionsPrepared[prop] = isRestrictedValue ? mainPossibility : dataValue;\r\n                                        }\r\n                                        else if(writeErrors) {\r\n                                            console.warn(error + \" it doesn't accept the type [ \" + dataValueType.toUpperCase() + \" ] with the value of \\\"\" + dataValue + \"\\\".\\r\\n\" +\r\n                                                \"Accepted types are: [ \" + errorPossibleTypes.join(\", \").toUpperCase() + \" ].\" +\r\n                                                (errorRestrictedStrings[length] > 0 ? \"\\r\\nValid strings are: [ \" + errorRestrictedStrings.join(\", \").split(restrictedStringsPossibilitiesSplit).join(\", \") + \" ].\" : \"\"));\r\n                                        }\r\n                                        delete data[prop];\r\n                                    }\r\n                                }\r\n                            }\r\n                        };\r\n                        checkObjectProps(objectCopy, template, diffObj || { }, validatedOptions, validatedOptionsPrepared);\r\n\r\n                        //add values which aren't specified in the template to the finished validated object to prevent them from being discarded\r\n                        /*\r\n                        if(keepForeignProps) {\r\n                            FRAMEWORK.extend(true, validatedOptions, objectCopy);\r\n                            FRAMEWORK.extend(true, validatedOptionsPrepared, objectCopy);\r\n                        }\r\n                        */\r\n                        \r\n                        if(!isEmptyObj(objectCopy) && writeErrors)\r\n                            console.warn(\"The following options are discarded due to invalidity:\\r\\n\" + window.JSON.stringify(objectCopy, null, 2));\r\n\r\n                        return {\r\n                            _default : validatedOptions,\r\n                            _prepared : validatedOptionsPrepared\r\n                        };\r\n                    }\r\n                }\r\n            }());\r\n\r\n            /**\r\n             * Initializes the object which contains global information about the plugin and each instance of it.\r\n             */\r\n            function initOverlayScrollbarsStatics() {\r\n                if(!_pluginsGlobals)\r\n                    _pluginsGlobals = new OverlayScrollbarsGlobals(_pluginsOptions._defaults);\r\n                if(!_pluginsAutoUpdateLoop)\r\n                    _pluginsAutoUpdateLoop = new OverlayScrollbarsAutoUpdateLoop(_pluginsGlobals);\r\n            }\r\n\r\n            /**\r\n             * The global object for the OverlayScrollbars objects. It contains resources which every OverlayScrollbars object needs. This object is initialized only once: if the first OverlayScrollbars object gets initialized.\r\n             * @param defaultOptions\r\n             * @constructor\r\n             */\r\n            function OverlayScrollbarsGlobals(defaultOptions) {\r\n                var _base = this;\r\n                var strOverflow = 'overflow';\r\n                var strHidden = 'hidden';\r\n                var strScroll = 'scroll';\r\n                var bodyElement = FRAMEWORK('body');\r\n                var scrollbarDummyElement = FRAMEWORK('<div id=\"os-dummy-scrollbar-size\"><div></div></div>');\r\n                var scrollbarDummyElement0 = scrollbarDummyElement[0];\r\n                var dummyContainerChild = FRAMEWORK(scrollbarDummyElement.children('div').eq(0));\r\n\r\n                bodyElement.append(scrollbarDummyElement);\r\n                scrollbarDummyElement.hide().show(); //fix IE8 bug (incorrect measuring)\r\n\r\n                var nativeScrollbarSize = calcNativeScrollbarSize(scrollbarDummyElement0);\r\n                var nativeScrollbarIsOverlaid = {\r\n                    x: nativeScrollbarSize.x === 0,\r\n                    y: nativeScrollbarSize.y === 0\r\n                };\r\n\r\n                FRAMEWORK.extend(_base, {\r\n                    defaultOptions : defaultOptions,\r\n                    autoUpdateLoop : false,\r\n                    autoUpdateRecommended : !COMPATIBILITY.mO(),\r\n                    nativeScrollbarSize : nativeScrollbarSize,\r\n                    nativeScrollbarIsOverlaid : nativeScrollbarIsOverlaid,\r\n                    nativeScrollbarStyling : (function() {\r\n                        var result = false;\r\n                        scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible');\r\n                        try {\r\n                            result = scrollbarDummyElement.css('scrollbar-width') === 'none' || window.getComputedStyle(scrollbarDummyElement0, '::-webkit-scrollbar').getPropertyValue('display') === 'none';\r\n                        } catch (ex) { }\r\n                        \r\n                        //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style.\r\n                        //and set overflow to scroll\r\n                        //scrollbarDummyElement.css(strOverflow, strHidden).hide().css(strOverflow, strScroll).show();\r\n                        //return (scrollbarDummyElement0[LEXICON.oH] - scrollbarDummyElement0[LEXICON.cH]) === 0 && (scrollbarDummyElement0[LEXICON.oW] - scrollbarDummyElement0[LEXICON.cW]) === 0;\r\n                        \r\n                        return result;\r\n                    })(),\r\n                    overlayScrollbarDummySize : { x: 30, y: 30 },\r\n                    msie : (function() {\r\n                        var ua = window.navigator.userAgent;\r\n                        var strIndexOf = 'indexOf';\r\n                        var strSubString = 'substring';\r\n                        var msie = ua[strIndexOf]('MSIE ');\r\n                        var trident = ua[strIndexOf]('Trident/');\r\n                        var edge = ua[strIndexOf]('Edge/');\r\n                        var rv = ua[strIndexOf]('rv:');\r\n                        var result;\r\n                        var parseIntFunc = parseInt;\r\n\r\n                        // IE 10 or older => return version number\r\n                        if (msie > 0)\r\n                            result = parseIntFunc(ua[strSubString](msie + 5, ua[strIndexOf]('.', msie)), 10);\r\n\r\n                        // IE 11 => return version number\r\n                        else if (trident > 0)\r\n                            result = parseIntFunc(ua[strSubString](rv + 3, ua[strIndexOf]('.', rv)), 10);\r\n\r\n                        // Edge (IE 12+) => return version number\r\n                        else if (edge > 0)\r\n                            result = parseIntFunc(ua[strSubString](edge + 5, ua[strIndexOf]('.', edge)), 10);\r\n\r\n                        // other browser\r\n                        return result;\r\n                    })(),\r\n                    cssCalc : (function() {\r\n                        var dummyStyle = document.createElement('div')[LEXICON.s];\r\n                        var strCalc = 'calc';\r\n                        var i = -1;\r\n                        var prop;\r\n\r\n                        for(; i < VENDORS._cssPrefixes[LEXICON.l]; i++) {\r\n                            prop = i < 0 ? strCalc : VENDORS._cssPrefixes[i] + strCalc;\r\n                            dummyStyle.cssText = 'width:' + prop + '(1px);';\r\n                            if (dummyStyle[LEXICON.l])\r\n                                return prop;\r\n                        }\r\n                        return null;\r\n                    })(),\r\n                    restrictedMeasuring : (function() {\r\n                        //https://bugzilla.mozilla.org/show_bug.cgi?id=1439305\r\n                        scrollbarDummyElement.css(strOverflow, strHidden);\r\n                        var scrollSize = {\r\n                            w : scrollbarDummyElement0[LEXICON.sW],\r\n                            h : scrollbarDummyElement0[LEXICON.sH]\r\n                        };\r\n                        scrollbarDummyElement.css(strOverflow, 'visible');\r\n                        var scrollSize2 = {\r\n                            w : scrollbarDummyElement0[LEXICON.sW],\r\n                            h : scrollbarDummyElement0[LEXICON.sH]\r\n                        };\r\n                        return (scrollSize.w - scrollSize2.w) !== 0 || (scrollSize.h - scrollSize2.h) !== 0;\r\n                    })(),\r\n                    rtlScrollBehavior : (function() {\r\n                        scrollbarDummyElement.css({ 'overflow-y' : strHidden, 'overflow-x' : strScroll, 'direction' : 'rtl' }).scrollLeft(0);\r\n                        var dummyContainerOffset = scrollbarDummyElement.offset();\r\n                        var dummyContainerChildOffset = dummyContainerChild.offset();\r\n                        scrollbarDummyElement.scrollLeft(999);\r\n                        var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset();\r\n                        return {\r\n                            //origin direction = determines if the zero scroll position is on the left or right side\r\n                            //'i' means 'invert' (i === true means that the axis must be inverted to be correct)\r\n                            //true = on the left side\r\n                            //false = on the right side\r\n                            i : dummyContainerOffset.left === dummyContainerChildOffset.left,\r\n                            //negative = determines if the maximum scroll is positive or negative\r\n                            //'n' means 'negate' (n === true means that the axis must be negated to be correct)\r\n                            //true = negative\r\n                            //false = positive\r\n                            n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0\r\n                        };\r\n                    })(),\r\n                    supportTransform : VENDORS._cssProperty('transform') !== null,\r\n                    supportTransition : VENDORS._cssProperty('transition') !== null,\r\n                    supportPassiveEvents : (function() {\r\n                        var supportsPassive = false;\r\n                        try {\r\n                            window.addEventListener('test', null, Object.defineProperty({ }, 'passive', {\r\n                                get: function() {\r\n                                    supportsPassive = true;\r\n                                }\r\n                            }));\r\n                        } catch (e) { }\r\n                        return supportsPassive;\r\n                    })(),\r\n                    supportResizeObserver : !!COMPATIBILITY.rO(),\r\n                    supportMutationObserver : !!COMPATIBILITY.mO()\r\n                });\r\n\r\n                scrollbarDummyElement.removeAttr(LEXICON.s).remove();\r\n\r\n                //Catch zoom event:\r\n                (function () {\r\n                    if(nativeScrollbarIsOverlaid.x && nativeScrollbarIsOverlaid.y)\r\n                        return;\r\n\r\n                    var abs = MATH.abs;\r\n                    var windowWidth = COMPATIBILITY.wW();\r\n                    var windowHeight = COMPATIBILITY.wH();\r\n                    var windowDpr = getWindowDPR();\r\n                    var onResize = function() {\r\n                        if(INSTANCES().length > 0) {\r\n                            var newW = COMPATIBILITY.wW();\r\n                            var newH = COMPATIBILITY.wH();\r\n                            var deltaW = newW - windowWidth;\r\n                            var deltaH = newH - windowHeight;\r\n\r\n                            if (deltaW === 0 && deltaH === 0)\r\n                                return;\r\n\r\n                            var deltaWRatio = MATH.round(newW / (windowWidth / 100.0));\r\n                            var deltaHRatio = MATH.round(newH / (windowHeight / 100.0));\r\n                            var absDeltaW = abs(deltaW);\r\n                            var absDeltaH = abs(deltaH);\r\n                            var absDeltaWRatio = abs(deltaWRatio);\r\n                            var absDeltaHRatio = abs(deltaHRatio);\r\n                            var newDPR = getWindowDPR();\r\n\r\n                            var deltaIsBigger = absDeltaW > 2 && absDeltaH > 2;\r\n                            var difference = !differenceIsBiggerThanOne(absDeltaWRatio, absDeltaHRatio);\r\n                            var dprChanged = newDPR !== windowDpr && windowDpr > 0;\r\n                            var isZoom = deltaIsBigger && difference && dprChanged;\r\n                            var oldScrollbarSize = _base.nativeScrollbarSize;\r\n                            var newScrollbarSize;\r\n\r\n                            if (isZoom) {\r\n                                bodyElement.append(scrollbarDummyElement);\r\n                                newScrollbarSize = _base.nativeScrollbarSize = calcNativeScrollbarSize(scrollbarDummyElement[0]);\r\n                                scrollbarDummyElement.remove();\r\n                                if(oldScrollbarSize.x !== newScrollbarSize.x || oldScrollbarSize.y !== newScrollbarSize.y) {\r\n                                    FRAMEWORK.each(INSTANCES(), function () {\r\n                                        if(INSTANCES(this))\r\n                                            INSTANCES(this).update('zoom');\r\n                                    });\r\n                                }\r\n                            }\r\n\r\n                            windowWidth = newW;\r\n                            windowHeight = newH;\r\n                            windowDpr = newDPR;\r\n                        }\r\n                    };\r\n\r\n                    function differenceIsBiggerThanOne(valOne, valTwo) {\r\n                        var absValOne = abs(valOne);\r\n                        var absValTwo = abs(valTwo);\r\n                        return !(absValOne === absValTwo || absValOne + 1 === absValTwo || absValOne - 1 === absValTwo);\r\n                    }\r\n\r\n                    function getWindowDPR() {\r\n                        var dDPI = window.screen.deviceXDPI || 0;\r\n                        var sDPI = window.screen.logicalXDPI || 1;\r\n                        return window.devicePixelRatio || (dDPI / sDPI);\r\n                    }\r\n\r\n                    FRAMEWORK(window).on('resize', onResize);\r\n                })();\r\n\r\n                function calcNativeScrollbarSize(measureElement) {\r\n                    return {\r\n                        x: measureElement[LEXICON.oH] - measureElement[LEXICON.cH],\r\n                        y: measureElement[LEXICON.oW] - measureElement[LEXICON.cW]\r\n                    };\r\n                }\r\n            }\r\n\r\n            /**\r\n             * The object which manages the auto update loop for all OverlayScrollbars objects. This object is initialized only once: if the first OverlayScrollbars object gets initialized.\r\n             * @constructor\r\n             */\r\n            function OverlayScrollbarsAutoUpdateLoop(globals) {\r\n                var _base = this;\r\n                var _inArray = FRAMEWORK.inArray;\r\n                var _getNow = COMPATIBILITY.now;\r\n                var _strAutoUpdate = 'autoUpdate';\r\n                var _strAutoUpdateInterval = _strAutoUpdate + 'Interval';\r\n                var _strLength = LEXICON.l;\r\n                var _loopingInstances = [ ];\r\n                var _loopingInstancesIntervalCache = [ ];\r\n                var _loopIsActive = false;\r\n                var _loopIntervalDefault = 33;\r\n                var _loopInterval = _loopIntervalDefault;\r\n                var _loopTimeOld = _getNow();\r\n                var _loopID;\r\n                \r\n\r\n                /**\r\n                 * The auto update loop which will run every 50 milliseconds or less if the update interval of a instance is lower than 50 milliseconds.\r\n                 */\r\n                var loop = function() {\r\n                    if(_loopingInstances[_strLength] > 0 && _loopIsActive) {\r\n                        _loopID = COMPATIBILITY.rAF()(function () {\r\n                            loop();\r\n                        });\r\n                        var timeNew = _getNow();\r\n                        var timeDelta = timeNew - _loopTimeOld;\r\n                        var lowestInterval;\r\n                        var instance;\r\n                        var instanceOptions;\r\n                        var instanceAutoUpdateAllowed;\r\n                        var instanceAutoUpdateInterval;\r\n                        var now;\r\n\r\n                        if (timeDelta > _loopInterval) {\r\n                            _loopTimeOld = timeNew - (timeDelta % _loopInterval);\r\n                            lowestInterval = _loopIntervalDefault;\r\n                            for(var i = 0; i < _loopingInstances[_strLength]; i++) {\r\n                                instance = _loopingInstances[i];\r\n                                if (instance !== undefined) {\r\n                                    instanceOptions = instance.options();\r\n                                    instanceAutoUpdateAllowed = instanceOptions[_strAutoUpdate];\r\n                                    instanceAutoUpdateInterval = MATH.max(1, instanceOptions[_strAutoUpdateInterval]);\r\n                                    now = _getNow();\r\n\r\n                                    if ((instanceAutoUpdateAllowed === true || instanceAutoUpdateAllowed === null) && (now - _loopingInstancesIntervalCache[i]) > instanceAutoUpdateInterval) {\r\n                                        instance.update('auto');\r\n                                        _loopingInstancesIntervalCache[i] = new Date(now += instanceAutoUpdateInterval);\r\n                                    }\r\n\r\n                                    lowestInterval = MATH.max(1, MATH.min(lowestInterval, instanceAutoUpdateInterval));\r\n                                }\r\n                            }\r\n                            _loopInterval = lowestInterval;\r\n                        }\r\n                    } else {\r\n                        _loopInterval = _loopIntervalDefault;\r\n                    }\r\n                };\r\n\r\n                /**\r\n                 * Add OverlayScrollbars instance to the auto update loop. Only successful if the instance isn't already added.\r\n                 * @param instance The instance which shall be updated in a loop automatically.\r\n                 */\r\n                _base.add = function(instance) {\r\n                    if(_inArray(instance, _loopingInstances) === -1) {\r\n                        _loopingInstances.push(instance);\r\n                        _loopingInstancesIntervalCache.push(_getNow());\r\n                        if (_loopingInstances[_strLength] > 0 && !_loopIsActive) {\r\n                            _loopIsActive = true;\r\n                            globals.autoUpdateLoop = _loopIsActive;\r\n                            loop();\r\n                        }\r\n                    }\r\n                };\r\n\r\n                /**\r\n                 * Remove OverlayScrollbars instance from the auto update loop. Only successful if the instance was added before.\r\n                 * @param instance The instance which shall be updated in a loop automatically.\r\n                 */\r\n                _base.remove = function(instance) {\r\n                    var index = _inArray(instance, _loopingInstances);\r\n                    if(index > -1) {\r\n                        //remove from loopingInstances list\r\n                        _loopingInstancesIntervalCache.splice(index, 1);\r\n                        _loopingInstances.splice(index, 1);\r\n\r\n                        //correct update loop behavior\r\n                        if (_loopingInstances[_strLength] === 0 && _loopIsActive) {\r\n                            _loopIsActive = false;\r\n                            globals.autoUpdateLoop = _loopIsActive;\r\n                            if(_loopID !== undefined) {\r\n                                COMPATIBILITY.cAF()(_loopID);\r\n                                _loopID = -1;\r\n                            }\r\n                        }\r\n                    }\r\n                };\r\n            }\r\n\r\n            /**\r\n             * A object which manages the scrollbars visibility of the target element.\r\n             * @param pluginTargetElement The element from which the scrollbars shall be hidden.\r\n             * @param options The custom options.\r\n             * @param extensions The custom extensions.\r\n             * @param globals\r\n             * @param autoUpdateLoop\r\n             * @returns {*}\r\n             * @constructor\r\n             */\r\n            function OverlayScrollbarsInstance(pluginTargetElement, options, extensions, globals, autoUpdateLoop) {\r\n                //shortcuts\r\n                var type = COMPATIBILITY.type;\r\n                var inArray = FRAMEWORK.inArray;\r\n                var each = FRAMEWORK.each;\r\n                \r\n                //make correct instanceof\r\n                var _base = new _plugin();\r\n                var _frameworkProto = FRAMEWORK[LEXICON.p];\r\n                \r\n                //if passed element is no HTML element: skip and return\r\n                if(!isHTMLElement(pluginTargetElement))\r\n                    return;\r\n                \r\n                //if passed element is already initialized: set passed options if there are any and return its instance\r\n                if(INSTANCES(pluginTargetElement)) {\r\n                    var inst = INSTANCES(pluginTargetElement);\r\n                    inst.options(options);\r\n                    return inst;\r\n                }\r\n\r\n                //globals:\r\n                var _nativeScrollbarIsOverlaid;\r\n                var _overlayScrollbarDummySize;\r\n                var _rtlScrollBehavior;\r\n                var _autoUpdateRecommended;\r\n                var _msieVersion;\r\n                var _nativeScrollbarStyling;\r\n                var _cssCalc;\r\n                var _nativeScrollbarSize;\r\n                var _supportTransition;\r\n                var _supportTransform;\r\n                var _supportPassiveEvents;\r\n                var _supportResizeObserver;\r\n                var _supportMutationObserver;\r\n                var _restrictedMeasuring;\r\n\r\n                //general readonly:\r\n                var _initialized;\r\n                var _destroyed;\r\n                var _isTextarea;\r\n                var _isBody;\r\n                var _documentMixed;\r\n                var _isTextareaHostGenerated;\r\n\r\n                //general:\r\n                var _isBorderBox;\r\n                var _sizeAutoObserverAdded;\r\n                var _paddingX;\r\n                var _paddingY;\r\n                var _borderX;\r\n                var _borderY;\r\n                var _marginX;\r\n                var _marginY;\r\n                var _isRTL;\r\n                var _sleeping;\r\n                var _contentBorderSize = { };\r\n                var _scrollHorizontalInfo = { };\r\n                var _scrollVerticalInfo = { };\r\n                var _viewportSize = { };\r\n                var _nativeScrollbarMinSize = { };\r\n\r\n                //naming:\r\n                var _strMinusHidden = '-hidden';\r\n                var _strMarginMinus = 'margin-';\r\n                var _strPaddingMinus = 'padding-';\r\n                var _strBorderMinus = 'border-';\r\n                var _strTop = 'top';\r\n                var _strRight = 'right';\r\n                var _strBottom = 'bottom';\r\n                var _strLeft = 'left';\r\n                var _strMinMinus = 'min-';\r\n                var _strMaxMinus = 'max-';\r\n                var _strWidth = 'width';\r\n                var _strHeight = 'height';\r\n                var _strFloat = 'float';\r\n                var _strEmpty = '';\r\n                var _strAuto = 'auto';\r\n                var _strSync = 'sync';\r\n                var _strScroll = 'scroll';\r\n                var _strHundredPercent = '100%';\r\n                var _strX = 'x';\r\n                var _strY = 'y';\r\n                var _strDot = '.';\r\n                var _strSpace = ' ';\r\n                var _strScrollbar = 'scrollbar';\r\n                var _strMinusHorizontal = '-horizontal';\r\n                var _strMinusVertical = '-vertical';\r\n                var _strScrollLeft = _strScroll + 'Left';\r\n                var _strScrollTop = _strScroll + 'Top';\r\n                var _strMouseTouchDownEvent = 'mousedown touchstart';\r\n                var _strMouseTouchUpEvent = 'mouseup touchend touchcancel';\r\n                var _strMouseTouchMoveEvent = 'mousemove touchmove';\r\n                var _strMouseTouchEnter = 'mouseenter';\r\n                var _strMouseTouchLeave = 'mouseleave';\r\n                var _strKeyDownEvent = 'keydown';\r\n                var _strKeyUpEvent = 'keyup';\r\n                var _strSelectStartEvent = 'selectstart';\r\n                var _strTransitionEndEvent = 'transitionend webkitTransitionEnd oTransitionEnd';\r\n                var _strResizeObserverProperty = '__overlayScrollbarsRO__';\r\n\r\n                //class names:\r\n                var _cassNamesPrefix = 'os-';\r\n                var _classNameHTMLElement = _cassNamesPrefix + 'html';\r\n                var _classNameHostElement = _cassNamesPrefix + 'host';\r\n                var _classNameHostTextareaElement = _classNameHostElement + '-textarea';\r\n                var _classNameHostScrollbarHorizontalHidden = _classNameHostElement + '-' + _strScrollbar + _strMinusHorizontal + _strMinusHidden;\r\n                var _classNameHostScrollbarVerticalHidden = _classNameHostElement + '-' + _strScrollbar + _strMinusVertical + _strMinusHidden;\r\n                var _classNameHostTransition = _classNameHostElement + '-transition';\r\n                var _classNameHostRTL = _classNameHostElement + '-rtl';\r\n                var _classNameHostResizeDisabled = _classNameHostElement + '-resize-disabled';\r\n                var _classNameHostScrolling = _classNameHostElement + '-scrolling';\r\n                var _classNameHostOverflow = _classNameHostElement + '-overflow';\r\n                var _classNameHostOverflowX = _classNameHostOverflow + '-x';\r\n                var _classNameHostOverflowY = _classNameHostOverflow + '-y';\r\n                var _classNameTextareaElement = _cassNamesPrefix + 'textarea';\r\n                var _classNameTextareaCoverElement = _classNameTextareaElement + '-cover';\r\n                var _classNamePaddingElement = _cassNamesPrefix + 'padding';\r\n                var _classNameViewportElement = _cassNamesPrefix + 'viewport';\r\n                var _classNameViewportNativeScrollbarsInvisible = _classNameViewportElement + '-native-scrollbars-invisible';\r\n                var _classNameViewportNativeScrollbarsOverlaid = _classNameViewportElement + '-native-scrollbars-overlaid';\r\n                var _classNameContentElement = _cassNamesPrefix + 'content';\r\n                var _classNameContentArrangeElement = _cassNamesPrefix + 'content-arrange';\r\n                var _classNameContentGlueElement = _cassNamesPrefix + 'content-glue';\r\n                var _classNameSizeAutoObserverElement = _cassNamesPrefix + 'size-auto-observer';\r\n                var _classNameResizeObserverElement = _cassNamesPrefix + 'resize-observer';\r\n                var _classNameResizeObserverItemElement = _cassNamesPrefix + 'resize-observer-item';\r\n                var _classNameResizeObserverItemFinalElement = _classNameResizeObserverItemElement + '-final';\r\n                var _classNameTextInherit = _cassNamesPrefix + 'text-inherit';\r\n                var _classNameScrollbar = _cassNamesPrefix + _strScrollbar;\r\n                var _classNameScrollbarTrack = _classNameScrollbar + '-track';\r\n                var _classNameScrollbarTrackOff = _classNameScrollbarTrack + '-off';\r\n                var _classNameScrollbarHandle = _classNameScrollbar + '-handle';\r\n                var _classNameScrollbarHandleOff = _classNameScrollbarHandle + '-off';\r\n                var _classNameScrollbarUnusable = _classNameScrollbar + '-unusable';\r\n                var _classNameScrollbarAutoHidden = _classNameScrollbar + '-' + _strAuto + _strMinusHidden;\r\n                var _classNameScrollbarCorner = _classNameScrollbar + '-corner';\r\n                var _classNameScrollbarCornerResize = _classNameScrollbarCorner + '-resize';\r\n                var _classNameScrollbarCornerResizeB = _classNameScrollbarCornerResize + '-both';\r\n                var _classNameScrollbarCornerResizeH = _classNameScrollbarCornerResize + _strMinusHorizontal;\r\n                var _classNameScrollbarCornerResizeV = _classNameScrollbarCornerResize + _strMinusVertical;\r\n                var _classNameScrollbarHorizontal = _classNameScrollbar + _strMinusHorizontal;\r\n                var _classNameScrollbarVertical = _classNameScrollbar + _strMinusVertical;\r\n                var _classNameDragging = _cassNamesPrefix + 'dragging';\r\n                var _classNameThemeNone = _cassNamesPrefix + 'theme-none';\r\n\r\n                //callbacks:\r\n                var _callbacksInitQeueue = [ ];\r\n\r\n                //options:\r\n                var _defaultOptions;\r\n                var _currentOptions;\r\n                var _currentPreparedOptions;\r\n\r\n                //extensions:\r\n                var _extensions = { };\r\n                var _extensionsPrivateMethods = 'added removed on contract';\r\n\r\n                //update\r\n                var _lastUpdateTime;\r\n                var _swallowedUpdateHints = { };\r\n                var _swallowedUpdateTimeout;\r\n                var _swallowUpdateLag = 42;\r\n                var _imgs = [ ];\r\n\r\n                //DOM elements:\r\n                var _windowElement;\r\n                var _documentElement;\r\n                var _htmlElement;\r\n                var _bodyElement;\r\n                var _targetElement;                     //the target element of this OverlayScrollbars object\r\n                var _hostElement;                       //the host element of this OverlayScrollbars object -> may be the same as targetElement\r\n                var _sizeAutoObserverElement;           //observes size auto changes\r\n                var _sizeObserverElement;               //observes size and padding changes\r\n                var _paddingElement;                    //manages the padding\r\n                var _viewportElement;                   //is the viewport of our scrollbar model\r\n                var _contentElement;                    //the element which holds the content\r\n                var _contentArrangeElement;             //is needed for correct sizing of the content element (only if native scrollbars are overlays)\r\n                var _contentGlueElement;                //has always the size of the content element\r\n                var _textareaCoverElement;              //only applied if target is a textarea element. Used for correct size calculation and for prevention of uncontrolled scrolling\r\n                var _scrollbarCornerElement;\r\n                var _scrollbarHorizontalElement;\r\n                var _scrollbarHorizontalTrackElement;\r\n                var _scrollbarHorizontalHandleElement;\r\n                var _scrollbarVerticalElement;\r\n                var _scrollbarVerticalTrackElement;\r\n                var _scrollbarVerticalHandleElement;\r\n                var _windowElementNative;\r\n                var _documentElementNative;\r\n                var _targetElementNative;\r\n                var _hostElementNative;\r\n                var _sizeAutoObserverElementNative;\r\n                var _sizeObserverElementNative;\r\n                var _paddingElementNative;\r\n                var _viewportElementNative;\r\n                var _contentElementNative;\r\n\r\n                //Cache:\r\n                var _hostSizeCache;\r\n                var _contentScrollSizeCache;\r\n                var _arrangeContentSizeCache;\r\n                var _hasOverflowCache;\r\n                var _hideOverflowCache;\r\n                var _widthAutoCache;\r\n                var _heightAutoCache;\r\n                var _cssMaxValueCache;\r\n                var _cssBoxSizingCache;\r\n                var _cssPaddingCache;\r\n                var _cssBorderCache;\r\n                var _cssMarginCache;\r\n                var _cssDirectionCache;\r\n                var _cssDirectionDetectedCache;\r\n                var _paddingAbsoluteCache;\r\n                var _clipAlwaysCache;\r\n                var _contentGlueSizeCache;\r\n                var _overflowBehaviorCache;\r\n                var _overflowAmountCache;\r\n                var _ignoreOverlayScrollbarHidingCache;\r\n                var _autoUpdateCache;\r\n                var _sizeAutoCapableCache;\r\n                var _contentElementScrollSizeChangeDetectedCache;\r\n                var _hostElementSizeChangeDetectedCache;\r\n                var _scrollbarsVisibilityCache;\r\n                var _scrollbarsAutoHideCache;\r\n                var _scrollbarsClickScrollingCache;\r\n                var _scrollbarsDragScrollingCache;\r\n                var _resizeCache;\r\n                var _normalizeRTLCache;\r\n                var _classNameCache;\r\n                var _oldClassName;\r\n                var _textareaAutoWrappingCache;\r\n                var _textareaInfoCache;\r\n                var _textareaSizeCache;\r\n                var _textareaDynHeightCache;\r\n                var _textareaDynWidthCache;\r\n                var _bodyMinSizeCache;\r\n                var _viewportScrollSizeCache;\r\n                var _displayIsHiddenCache;\r\n                var _updateAutoCache = { };\r\n\r\n                //MutationObserver:\r\n                var _mutationObserverHost;\r\n                var _mutationObserverContent;\r\n                var _mutationObserverHostCallback;\r\n                var _mutationObserverContentCallback;\r\n                var _mutationObserversConnected;\r\n                var _mutationObserverAttrsTextarea = ['wrap', 'cols', 'rows'];\r\n                var _mutationObserverAttrsHost = [LEXICON.i, LEXICON.c, LEXICON.s, 'open'];\r\n\r\n                //textarea:\r\n                var _textareaEvents;\r\n                var _textareaHasFocus;\r\n\r\n                //scrollbars:\r\n                var _scrollbarsAutoHideTimeoutId;\r\n                var _scrollbarsAutoHideMoveTimeoutId;\r\n                var _scrollbarsAutoHideDelay;\r\n                var _scrollbarsAutoHideNever;\r\n                var _scrollbarsAutoHideScroll;\r\n                var _scrollbarsAutoHideMove;\r\n                var _scrollbarsAutoHideLeave;\r\n                var _scrollbarsHandleHovered;\r\n                var _scrollbarsHandlesDefineScrollPos;\r\n\r\n                //resize\r\n                var _resizeReconnectMutationObserver;\r\n                var _resizeNone;\r\n                var _resizeBoth;\r\n                var _resizeHorizontal;\r\n                var _resizeVertical;\r\n                var _resizeOnMouseTouchDown;\r\n                \r\n                \r\n                //==== Passive Event Listener ====//\r\n\r\n                /**\r\n                 * Adds or removes a passive event listener from the given element.\r\n                 * @param element The element to which the event listener shall be applied or removed.\r\n                 * @param eventNames The name(s) of the events.\r\n                 * @param listener The method which shall be called.\r\n                 * @param remove True if the handler shall be removed, false or undefined if the handler shall be added.\r\n                 */\r\n                function setupPassiveEventListener(element, eventNames, listener, remove, notPassive) {\r\n                    var method = remove ? 'removeEventListener' : 'addEventListener';\r\n                    var events = eventNames.split(_strSpace);\r\n                    var i = 0;\r\n\r\n                    for (; i < events[LEXICON.l]; i++) {\r\n                        element[0][method](events[i], listener, { passive: !notPassive });\r\n                    }\r\n                }\r\n\r\n\r\n                //==== Resize Observer ====//\r\n\r\n                /**\r\n                 * Adds or removes a resize observer from the given element.\r\n                 * @param targetElement The element to which the resize observer shall be added or removed.\r\n                 * @param onElementResizedCallback The callback which is fired every time the resize observer registers a size change or false / undefined if the resizeObserver shall be removed.\r\n                 */\r\n                function setupResizeObserver(targetElement, onElementResizedCallback) {\r\n                    if(targetElement) {\r\n                        //add resize observer:\r\n                        if(onElementResizedCallback) {\r\n                            var constMaximum = 3333333;\r\n                            var resizeObserver = COMPATIBILITY.rO();\r\n                            var strAnimationStartEvent = 'animationstart mozAnimationStart webkitAnimationStart MSAnimationStart';\r\n                            var strChildNodes = 'childNodes';\r\n                            var callback = function () {\r\n                                targetElement[_strScrollTop](constMaximum)[_strScrollLeft](_isRTL ? _rtlScrollBehavior.n ? -constMaximum : _rtlScrollBehavior.i ? 0 : constMaximum : constMaximum);\r\n                                onElementResizedCallback();\r\n                            };\r\n                            if (_supportResizeObserver) {\r\n                                var element = targetElement.append(generateDiv(_classNameResizeObserverElement + ' observed')).contents()[0];\r\n                                var observer = element[_strResizeObserverProperty] = new resizeObserver(callback);\r\n                                observer.observe(element);\r\n                            }\r\n                            else {\r\n                                if (_msieVersion > 9 || !_autoUpdateRecommended) {\r\n                                    targetElement.prepend(\r\n                                        generateDiv(_classNameResizeObserverElement,\r\n                                            generateDiv({ className : _classNameResizeObserverItemElement, dir : \"ltr\" },\r\n                                                generateDiv(_classNameResizeObserverItemElement,\r\n                                                    generateDiv(_classNameResizeObserverItemFinalElement)\r\n                                                ) +\r\n                                                generateDiv(_classNameResizeObserverItemElement,\r\n                                                    generateDiv({ className : _classNameResizeObserverItemFinalElement, style : 'width: 200%; height: 200%' })\r\n                                                )\r\n                                            )\r\n                                        )\r\n                                    );\r\n\r\n                                    var observerElement = targetElement[0][strChildNodes][0][strChildNodes][0];\r\n                                    var shrinkElement = FRAMEWORK(observerElement[strChildNodes][1]);\r\n                                    var expandElement = FRAMEWORK(observerElement[strChildNodes][0]);\r\n                                    var expandElementChild = FRAMEWORK(expandElement[0][strChildNodes][0]);\r\n                                    var widthCache = observerElement[LEXICON.oW];\r\n                                    var heightCache = observerElement[LEXICON.oH];\r\n                                    var isDirty;\r\n                                    var rAFId;\r\n                                    var currWidth;\r\n                                    var currHeight;\r\n                                    var factor = 2;\r\n                                    var nativeScrollbarSize = globals.nativeScrollbarSize; //care don't make changes to this object!!!\r\n                                    var reset = function () {\r\n                                        /*\r\n                                         var sizeResetWidth = observerElement[LEXICON.oW] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y;\r\n                                         var sizeResetHeight = observerElement[LEXICON.oH] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y;\r\n                                         var expandChildCSS = {};\r\n                                         expandChildCSS[_strWidth] = sizeResetWidth;\r\n                                         expandChildCSS[_strHeight] = sizeResetHeight;\r\n                                         expandElementChild.css(expandChildCSS);\r\n\r\n\r\n                                         expandElement[_strScrollLeft](sizeResetWidth)[_strScrollTop](sizeResetHeight);\r\n                                         shrinkElement[_strScrollLeft](sizeResetWidth)[_strScrollTop](sizeResetHeight);\r\n                                         */\r\n                                        expandElement[_strScrollLeft](constMaximum)[_strScrollTop](constMaximum);\r\n                                        shrinkElement[_strScrollLeft](constMaximum)[_strScrollTop](constMaximum);\r\n                                    };\r\n                                    var onResized = function () {\r\n                                        rAFId = 0;\r\n                                        if (!isDirty)\r\n                                            return;\r\n\r\n                                        widthCache = currWidth;\r\n                                        heightCache = currHeight;\r\n                                        callback();\r\n                                    };\r\n                                    var onScroll = function (event) {\r\n                                        currWidth = observerElement[LEXICON.oW];\r\n                                        currHeight = observerElement[LEXICON.oH];\r\n                                        isDirty = currWidth != widthCache || currHeight != heightCache;\r\n\r\n                                        if (event && isDirty && !rAFId) {\r\n                                            COMPATIBILITY.cAF()(rAFId);\r\n                                            rAFId = COMPATIBILITY.rAF()(onResized);\r\n                                        }\r\n                                        else if(!event)\r\n                                            onResized();\r\n\r\n                                        reset();\r\n                                        if (event) {\r\n                                            COMPATIBILITY.prvD(event);\r\n                                            COMPATIBILITY.stpP(event);\r\n                                        }\r\n                                        return false;\r\n                                    };\r\n                                    var expandChildCSS = {};\r\n                                    var observerElementCSS = {};\r\n\r\n                                    setTopRightBottomLeft(observerElementCSS, _strEmpty, [\r\n                                        -((nativeScrollbarSize.y + 1) * factor),\r\n                                        nativeScrollbarSize.x * -factor,\r\n                                        nativeScrollbarSize.y * -factor,\r\n                                        -((nativeScrollbarSize.x + 1) * factor)\r\n                                    ]);\r\n\r\n                                    FRAMEWORK(observerElement).css(observerElementCSS);\r\n                                    expandElement.on(_strScroll, onScroll);\r\n                                    shrinkElement.on(_strScroll, onScroll);\r\n                                    targetElement.on(strAnimationStartEvent, function () {\r\n                                        onScroll(false);\r\n                                    });\r\n                                    //lets assume that the divs will never be that large and a constant value is enough\r\n                                    expandChildCSS[_strWidth] = constMaximum;\r\n                                    expandChildCSS[_strHeight] = constMaximum;\r\n                                    expandElementChild.css(expandChildCSS);\r\n\r\n                                    reset();\r\n                                }\r\n                                else {\r\n                                    var attachEvent = _documentElementNative.attachEvent;\r\n                                    var isIE = _msieVersion !== undefined;\r\n                                    if (attachEvent) {\r\n                                        targetElement.prepend(generateDiv(_classNameResizeObserverElement));\r\n                                        findFirst(targetElement, _strDot + _classNameResizeObserverElement)[0].attachEvent('onresize', callback);\r\n                                    }\r\n                                    else {\r\n                                        var obj = _documentElementNative.createElement(TYPES.o);\r\n                                        obj.setAttribute('tabindex', '-1');\r\n                                        obj.setAttribute(LEXICON.c, _classNameResizeObserverElement);\r\n                                        obj.onload = function () {\r\n                                            var wnd = this.contentDocument.defaultView;\r\n                                            wnd.addEventListener('resize', callback);\r\n                                            wnd.document.documentElement.style.display = 'none';\r\n                                        };\r\n                                        obj.type = 'text/html';\r\n                                        if (isIE)\r\n                                            targetElement.prepend(obj);\r\n                                        obj.data = 'about:blank';\r\n                                        if (!isIE)\r\n                                            targetElement.prepend(obj);\r\n                                        targetElement.on(strAnimationStartEvent, callback);\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            //direction change detection:\r\n                            if (targetElement[0] === _sizeObserverElementNative) {\r\n                                var directionChanged = function () {\r\n                                    var dir = _hostElement.css('direction');\r\n                                    var css = {};\r\n                                    var scrollLeftValue = 0;\r\n                                    var result = false;\r\n                                    if (dir !== _cssDirectionDetectedCache) {\r\n                                        if (dir === 'ltr') {\r\n                                            css[_strLeft] = 0;\r\n                                            css[_strRight] = _strAuto;\r\n                                            scrollLeftValue = constMaximum;\r\n                                        }\r\n                                        else {\r\n                                            css[_strLeft] = _strAuto;\r\n                                            css[_strRight] = 0;\r\n                                            scrollLeftValue = _rtlScrollBehavior.n ? -constMaximum : _rtlScrollBehavior.i ? 0 : constMaximum;\r\n                                        }\r\n                                        _sizeObserverElement.children().eq(0).css(css);\r\n                                        targetElement[_strScrollLeft](scrollLeftValue)[_strScrollTop](constMaximum);\r\n                                        _cssDirectionDetectedCache = dir;\r\n                                        result = true;\r\n                                    }\r\n                                    return result;\r\n                                };\r\n                                directionChanged();\r\n                                targetElement.on(_strScroll, function (event) {\r\n                                    if (directionChanged())\r\n                                        update();\r\n                                    COMPATIBILITY.prvD(event);\r\n                                    COMPATIBILITY.stpP(event);\r\n                                    return false;\r\n                                });\r\n                            }\r\n                        }\r\n                        //remove resize observer:\r\n                        else {\r\n                            if (_supportResizeObserver) {\r\n                                var element = targetElement.contents()[0];\r\n                                var resizeObserverObj = element[_strResizeObserverProperty];\r\n                                if(resizeObserverObj) {\r\n                                    resizeObserverObj.disconnect();\r\n                                    delete element[_strResizeObserverProperty];\r\n                                }\r\n                            }\r\n                            else {\r\n                                remove(targetElement.children(_strDot + _classNameResizeObserverElement).eq(0));\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Freezes or unfreezes the given resize observer.\r\n                 * @param targetElement The element to which the target resize observer is applied.\r\n                 * @param freeze True if the resize observer shall be frozen, false otherwise.\r\n                 \r\n                function freezeResizeObserver(targetElement, freeze) {\r\n                    if (targetElement !== undefined) {\r\n                        if(freeze) {\r\n                            if (_supportResizeObserver) {\r\n                                var element = targetElement.contents()[0];\r\n                                element[_strResizeObserverProperty].unobserve(element);\r\n                            }\r\n                            else {\r\n                                targetElement = targetElement.children(_strDot + _classNameResizeObserverElement).eq(0);\r\n                                var w = targetElement.css(_strWidth);\r\n                                var h = targetElement.css(_strHeight);\r\n                                var css = {};\r\n                                css[_strWidth] = w;\r\n                                css[_strHeight] = h;\r\n                                targetElement.css(css);\r\n                            }\r\n                        }\r\n                        else {\r\n                            if (_supportResizeObserver) {\r\n                                var element = targetElement.contents()[0];\r\n                                element[_strResizeObserverProperty].observe(element);\r\n                            }\r\n                            else {\r\n                                var css = { };\r\n                                css[_strHeight] = _strEmpty;\r\n                                css[_strWidth] = _strEmpty;\r\n                                targetElement.children(_strDot + _classNameResizeObserverElement).eq(0).css(css);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n                */\r\n\r\n\r\n                //==== Mutation Observers ====//\r\n\r\n                /**\r\n                 * Creates MutationObservers for the host and content Element if they are supported.\r\n                 */\r\n                function createMutationObservers() {\r\n                    if (_supportMutationObserver) {\r\n                        var mutationObserverContentLag = 11;\r\n                        var mutationObserver = COMPATIBILITY.mO();\r\n                        var contentLastUpdate = COMPATIBILITY.now();\r\n                        var mutationTarget;\r\n                        var mutationAttrName;\r\n                        var contentTimeout;\r\n                        var now;\r\n                        var sizeAuto;\r\n                        var action;\r\n\r\n                        _mutationObserverHostCallback = function(mutations) {\r\n                            var doUpdate = false;\r\n                            var mutation;\r\n                                \r\n                            if (_initialized && !_sleeping) {\r\n                                each(mutations, function () {\r\n                                    mutation = this;\r\n                                    mutationTarget = mutation.target;\r\n                                    mutationAttrName = mutation.attributeName;\r\n\r\n                                    if (mutationAttrName === LEXICON.c)\r\n                                        doUpdate = hostClassNamesChanged(mutation.oldValue, mutationTarget.className);\r\n                                    else if (mutationAttrName === LEXICON.s)\r\n                                        doUpdate = mutation.oldValue !== mutationTarget[LEXICON.s].cssText;\r\n                                    else\r\n                                        doUpdate = true;\r\n\r\n                                    if (doUpdate)\r\n                                        return false;\r\n                                });\r\n\r\n                                if (doUpdate)\r\n                                    _base.update(_strAuto);\r\n                            }\r\n                            return doUpdate;\r\n                        };\r\n                        _mutationObserverContentCallback = function (mutations) {\r\n                            var doUpdate = false;\r\n                            var mutation;\r\n                            \r\n                            if (_initialized && !_sleeping) {\r\n                                each(mutations, function () {\r\n                                    mutation = this;\r\n                                    doUpdate = isUnknownMutation(mutation);\r\n                                    return !doUpdate;\r\n                                });\r\n\r\n                                if (doUpdate) {\r\n                                    now = COMPATIBILITY.now();\r\n                                    sizeAuto = (_heightAutoCache || _widthAutoCache);\r\n                                    action = function () {\r\n                                        if(!_destroyed) {\r\n                                            contentLastUpdate = now;\r\n\r\n                                            //if cols, rows or wrap attr was changed\r\n                                            if (_isTextarea)\r\n                                                textareaUpdate();\r\n\r\n                                            if (sizeAuto)\r\n                                                update();\r\n                                            else\r\n                                                _base.update(_strAuto);\r\n                                        }\r\n                                    };\r\n                                    clearTimeout(contentTimeout);\r\n                                    if (mutationObserverContentLag <= 0 || now - contentLastUpdate > mutationObserverContentLag || !sizeAuto)\r\n                                        action();\r\n                                    else\r\n                                        contentTimeout = setTimeout(action, mutationObserverContentLag);\r\n                                }\r\n                            }\r\n                            return doUpdate;\r\n                        }\r\n\r\n                        _mutationObserverHost = new mutationObserver(_mutationObserverHostCallback);\r\n                        _mutationObserverContent = new mutationObserver(_mutationObserverContentCallback);\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Connects the MutationObservers if they are supported.\r\n                 */\r\n                function connectMutationObservers() {\r\n                    if (_supportMutationObserver && !_mutationObserversConnected) {\r\n                        _mutationObserverHost.observe(_hostElementNative, {\r\n                            attributes: true,\r\n                            attributeOldValue: true,\r\n                            attributeFilter: _mutationObserverAttrsHost\r\n                        });\r\n\r\n                        _mutationObserverContent.observe(_isTextarea ? _targetElementNative : _contentElementNative, {\r\n                            attributes: true,\r\n                            attributeOldValue: true,\r\n                            subtree: !_isTextarea,\r\n                            childList: !_isTextarea,\r\n                            characterData: !_isTextarea,\r\n                            attributeFilter: _isTextarea ? _mutationObserverAttrsTextarea : _mutationObserverAttrsHost\r\n                        });\r\n\r\n                        _mutationObserversConnected = true;\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Disconnects the MutationObservers if they are supported.\r\n                 */\r\n                function disconnectMutationObservers() {\r\n                    if (_supportMutationObserver && _mutationObserversConnected) {\r\n                        _mutationObserverHost.disconnect();\r\n                        _mutationObserverContent.disconnect();\r\n\r\n                        _mutationObserversConnected = false;\r\n                    }\r\n                }\r\n\r\n               \r\n               //==== Events of elements ====//\r\n\r\n                /**\r\n                 * This method gets called every time the host element gets resized. IMPORTANT: Padding changes are detected too!!\r\n                 * It refreshes the hostResizedEventArgs and the hostSizeResizeCache.\r\n                 * If there are any size changes, the update method gets called.\r\n                 */\r\n                function hostOnResized() {\r\n                    if (!_sleeping) {\r\n                        var changed;\r\n                        var hostSize = {\r\n                            w: _sizeObserverElementNative[LEXICON.sW],\r\n                            h: _sizeObserverElementNative[LEXICON.sH]\r\n                        };\r\n                        \r\n                        changed = checkCache(hostSize, _hostElementSizeChangeDetectedCache);\r\n                        _hostElementSizeChangeDetectedCache = hostSize;\r\n                        if (changed)\r\n                            update({ _hostSizeChanged : true });\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * The mouse enter event of the host element. This event is only needed for the autoHide feature.\r\n                 */\r\n                function hostOnMouseEnter() {\r\n                    if (_scrollbarsAutoHideLeave)\r\n                        refreshScrollbarsAutoHide(true);\r\n                }\r\n\r\n                /**\r\n                 * The mouse leave event of the host element. This event is only needed for the autoHide feature.\r\n                 */\r\n                function hostOnMouseLeave() {\r\n                    if (_scrollbarsAutoHideLeave && !_bodyElement.hasClass(_classNameDragging))\r\n                        refreshScrollbarsAutoHide(false);\r\n                }\r\n\r\n                /**\r\n                 * The mouse move event of the host element. This event is only needed for the autoHide \"move\" feature.\r\n                 */\r\n                function hostOnMouseMove() {\r\n                    if (_scrollbarsAutoHideMove) {\r\n                        refreshScrollbarsAutoHide(true);\r\n                        clearTimeout(_scrollbarsAutoHideMoveTimeoutId);\r\n                        _scrollbarsAutoHideMoveTimeoutId = setTimeout(function () {\r\n                            if (_scrollbarsAutoHideMove && !_destroyed)\r\n                                refreshScrollbarsAutoHide(false);\r\n                        }, 100);\r\n                    }\r\n                }\r\n\r\n                 /**\r\n                 * Adds or removes mouse & touch events of the host element. (for handling auto-hiding of the scrollbars)\r\n                 * @param destroy Indicates whether the events shall be added or removed.\r\n                 */\r\n                function setupHostMouseTouchEvents(destroy) {\r\n                    var strOnOff = destroy ? 'off' : 'on';\r\n                    var setupEvent = function(target, name, listener) {\r\n                        if(_supportPassiveEvents)\r\n                            setupPassiveEventListener(target, name, listener, destroy);\r\n                        else\r\n                            target[strOnOff](name, listener);\r\n                    };\r\n\r\n                    if(_scrollbarsAutoHideMove && !destroy)\r\n                        setupEvent(_hostElement, _strMouseTouchMoveEvent, hostOnMouseMove);\r\n                    else {\r\n                        if(destroy)\r\n                            setupEvent(_hostElement, _strMouseTouchMoveEvent, hostOnMouseMove);\r\n                        setupEvent(_hostElement, _strMouseTouchEnter, hostOnMouseEnter);\r\n                        setupEvent(_hostElement, _strMouseTouchLeave, hostOnMouseLeave);\r\n                    }\r\n\r\n                    //if the plugin is initialized and the mouse is over the host element, make the scrollbars visible\r\n                    if(!_initialized && !destroy)\r\n                        _hostElement.one(\"mouseover\", hostOnMouseEnter);\r\n                }\r\n\r\n                /**\r\n                 * Prevents text from deselection if attached to the document element on the mousedown event of a DOM element.\r\n                 * @param event The select start event.\r\n                 */\r\n                function documentOnSelectStart(event) {\r\n                    COMPATIBILITY.prvD(event);\r\n                    return false;\r\n                }\r\n\r\n                /**\r\n                 * A callback which will be called after a img element has downloaded its src asynchronous.\r\n                 */\r\n                function imgOnLoad() {\r\n                    update({ _contentSizeChanged : true });\r\n                }\r\n\r\n\r\n                //==== Update Detection ====//\r\n\r\n                /**\r\n                 * Measures the min width and min height of the body element and refreshes the related cache.\r\n                 * @returns {boolean} True if the min width or min height has changed, false otherwise.\r\n                 */\r\n                function bodyMinSizeChanged() {\r\n                    var bodyMinSize = {};\r\n                    if (_isBody && _contentArrangeElement) {\r\n                        bodyMinSize.w = parseToZeroOrNumber(_contentArrangeElement.css(_strMinMinus + _strWidth));\r\n                        bodyMinSize.h = parseToZeroOrNumber(_contentArrangeElement.css(_strMinMinus + _strHeight));\r\n                        bodyMinSize.c = checkCache(bodyMinSize, _bodyMinSizeCache);\r\n                        bodyMinSize.f = true; //flag for \"measured at least once\"\r\n                    }\r\n                    _bodyMinSizeCache = bodyMinSize;\r\n                    return !!bodyMinSize.c;\r\n                }\r\n\r\n                /**\r\n                 * Returns true if the class names really changed (new class without plugin host prefix)\r\n                 * @param oldCassNames The old ClassName string.\r\n                 * @param newClassNames The new ClassName string.\r\n                 * @returns {boolean} True if the class names has really changed, false otherwise.\r\n                 */\r\n                function hostClassNamesChanged(oldCassNames, newClassNames) {\r\n                    var currClasses = (newClassNames !== undefined && newClassNames !== null) ? newClassNames.split(_strSpace) : _strEmpty;\r\n                    var oldClasses = (oldCassNames !== undefined && oldCassNames !== null) ? oldCassNames.split(_strSpace) : _strEmpty;\r\n                    if (currClasses === _strEmpty && oldClasses === _strEmpty)\r\n                        return false;\r\n                    var diff = getArrayDifferences(oldClasses, currClasses);\r\n                    var changed = false;\r\n                    var oldClassNames = _oldClassName !== undefined && _oldClassName !== null ? _oldClassName.split(_strSpace) : [_strEmpty];\r\n                    var currClassNames = _classNameCache !== undefined && _classNameCache !== null ? _classNameCache.split(_strSpace) : [_strEmpty];\r\n\r\n                    //remove none theme from diff list to prevent update\r\n                    var idx = inArray(_classNameThemeNone, diff);\r\n                    var curr;\r\n                    var i;\r\n                    var v;\r\n                    var o;\r\n                    var c;\r\n\r\n                    if (idx > -1)\r\n                        diff.splice(idx, 1);\r\n\r\n                    for (i = 0; i < diff.length; i++) {\r\n                        curr = diff[i];\r\n                        if (curr.indexOf(_classNameHostElement) !== 0) {\r\n                            o = true;\r\n                            c = true;\r\n                            for (v = 0; v < oldClassNames.length; v++) {\r\n                                if (curr === oldClassNames[v]) {\r\n                                    o = false;\r\n                                    break;\r\n                                }\r\n                            }\r\n                            for (v = 0; v < currClassNames.length; v++) {\r\n                                if (curr === currClassNames[v]) {\r\n                                    c = false;\r\n                                    break;\r\n                                }\r\n                            }\r\n                            if (o && c) {\r\n                                changed = true;\r\n                                break;\r\n                            }\r\n                        }\r\n\r\n                    }\r\n                    return changed;\r\n                }\r\n\r\n                /**\r\n                 * Returns true if the given mutation is not from a from the plugin generated element. If the target element is a textarea the mutation is always unknown.\r\n                 * @param mutation The mutation which shall be checked.\r\n                 * @returns {boolean} True if the mutation is from a unknown element, false otherwise.\r\n                 */\r\n                function isUnknownMutation(mutation) {\r\n                    var attributeName = mutation.attributeName;\r\n                    var mutationTarget = mutation.target;\r\n                    var mutationType = mutation.type;\r\n                    var strClosest = 'closest';\r\n\r\n                    if (mutationTarget === _contentElementNative)\r\n                        return attributeName === null;\r\n                    if (mutationType === 'attributes' && (attributeName === LEXICON.c || attributeName === LEXICON.s) && !_isTextarea) {\r\n                        //ignore className changes by the plugin\r\n                        if (attributeName === LEXICON.c && FRAMEWORK(mutationTarget).hasClass(_classNameHostElement))\r\n                            return hostClassNamesChanged(mutation.oldValue, mutationTarget.getAttribute(LEXICON.c));\r\n\r\n                        //only do it of browser support it natively\r\n                        if (typeof mutationTarget[strClosest] != TYPES.f)\r\n                            return true;\r\n                        if (mutationTarget[strClosest](_strDot + _classNameResizeObserverElement) !== null ||\r\n                            mutationTarget[strClosest](_strDot + _classNameScrollbar) !== null ||\r\n                            mutationTarget[strClosest](_strDot + _classNameScrollbarCorner) !== null)\r\n                            return false;\r\n                    }\r\n                    return true;\r\n                }\r\n\r\n                /**\r\n                 * Returns true if the content size was changed since the last time this method was called.\r\n                 * @returns {boolean} True if the content size was changed, false otherwise.\r\n                 */\r\n                function updateAutoContentSizeChanged() {\r\n                    if (_sleeping)\r\n                        return false;\r\n                    \r\n                    var contentMeasureElement = getContentMeasureElement();\r\n                    var textareaValueLength = _isTextarea && _widthAutoCache && !_textareaAutoWrappingCache ? _targetElement.val().length : 0;\r\n                    var setCSS = !_mutationObserversConnected && _widthAutoCache && !_isTextarea;\r\n                    var viewportScrollSize = { };\r\n                    var css = { };\r\n                    var float;\r\n                    var bodyMinSizeC;\r\n                    var changed;\r\n                    var viewportScrollSizeChanged;\r\n                    var contentElementScrollSize;\r\n\r\n                    //fix for https://bugzilla.mozilla.org/show_bug.cgi?id=1439305, it only works with \"clipAlways : true\"\r\n                    //it can work with \"clipAlways : false\" too, but I had to set the overflow of the viewportElement to hidden every time before measuring\r\n                    if(_restrictedMeasuring) {\r\n                        viewportScrollSize = {\r\n                            x : _viewportElementNative[LEXICON.sW],\r\n                            y : _viewportElementNative[LEXICON.sH]\r\n                        }\r\n                    }\r\n                    if (setCSS) {\r\n                        float = _contentElement.css(_strFloat);\r\n                        css[_strFloat] = _isRTL ? _strRight : _strLeft;\r\n                        css[_strWidth] = _strAuto;\r\n                        _contentElement.css(css);\r\n                    }\r\n                    contentElementScrollSize = {\r\n                        w: contentMeasureElement[LEXICON.sW] + textareaValueLength,\r\n                        h: contentMeasureElement[LEXICON.sH] + textareaValueLength\r\n                    };\r\n                    if (setCSS) {\r\n                        css[_strFloat] = float;\r\n                        css[_strWidth] = _strHundredPercent;\r\n                        _contentElement.css(css);\r\n                    }\r\n\r\n                    bodyMinSizeC = bodyMinSizeChanged();\r\n                    changed = checkCache(contentElementScrollSize, _contentElementScrollSizeChangeDetectedCache);\r\n                    viewportScrollSizeChanged = checkCache(viewportScrollSize, _viewportScrollSizeCache);\r\n\r\n                    _contentElementScrollSizeChangeDetectedCache = contentElementScrollSize;\r\n                    _viewportScrollSizeCache = viewportScrollSize;\r\n\r\n                    return changed || bodyMinSizeC || viewportScrollSizeChanged;\r\n                }\r\n\r\n                /**\r\n                 * Returns true when a attribute which the MutationObserver would observe has changed.  \r\n                 * @returns {boolean} True if one of the attributes which a MutationObserver would observe has changed, false or undefined otherwise.\r\n                 */\r\n                function meaningfulAttrsChanged() {\r\n                    if (_sleeping || _mutationObserversConnected)\r\n                        return;\r\n                    \r\n                    var changed;\r\n                    var elem;\r\n                    var curr;\r\n                    var cache;\r\n                    var checks = [\r\n                        {\r\n                            _elem: _hostElement, \r\n                            _props : _mutationObserverAttrsHost.concat(':visible')\r\n                        },\r\n                        {\r\n                            _elem: _isTextarea ? _targetElement : undefined, \r\n                            _props : _mutationObserverAttrsTextarea\r\n                        }\r\n                    ];\r\n                    \r\n                    each(checks, function(index, check) { \r\n                        elem = check._elem;\r\n                        if(elem) {\r\n                            each(check._props, function(index, prop) { \r\n                                curr = prop.charAt(0) === ':' ? elem.is(prop) : elem.attr(prop);\r\n                                cache = _updateAutoCache[prop];\r\n                                \r\n                                changed = changed || checkCache(curr, cache);\r\n                                \r\n                                _updateAutoCache[prop] = curr;\r\n                            });\r\n                        }\r\n                    });\r\n                    \r\n                    return changed;\r\n                }\r\n\r\n                /**\r\n                 * Checks is a CSS Property of a child element is affecting the scroll size of the content.\r\n                 * @param propertyName The CSS property name.\r\n                 * @returns {boolean} True if the property is affecting the content scroll size, false otherwise.\r\n                 */\r\n                function isSizeAffectingCSSProperty(propertyName) {\r\n                    if (!_initialized)\r\n                        return true;\r\n                    var flexGrow = 'flex-grow';\r\n                    var flexShrink = 'flex-shrink';\r\n                    var flexBasis = 'flex-basis';\r\n                    var affectingPropsX = [\r\n                        _strWidth,\r\n                        _strMinMinus + _strWidth,\r\n                        _strMaxMinus + _strWidth,\r\n                        _strMarginMinus + _strLeft,\r\n                        _strMarginMinus + _strRight,\r\n                        _strLeft,\r\n                        _strRight,\r\n                        'font-weight',\r\n                        'word-spacing',\r\n                        flexGrow,\r\n                        flexShrink,\r\n                        flexBasis\r\n                    ];\r\n                    var affectingPropsXContentBox = [\r\n                        _strPaddingMinus + _strLeft,\r\n                        _strPaddingMinus + _strRight,\r\n                        _strBorderMinus + _strLeft + _strWidth,\r\n                        _strBorderMinus + _strRight + _strWidth\r\n                    ];\r\n                    var affectingPropsY = [\r\n                        _strHeight,\r\n                        _strMinMinus + _strHeight,\r\n                        _strMaxMinus + _strHeight,\r\n                        _strMarginMinus + _strTop,\r\n                        _strMarginMinus + _strBottom,\r\n                        _strTop,\r\n                        _strBottom,\r\n                        'line-height',\r\n                        flexGrow,\r\n                        flexShrink,\r\n                        flexBasis\r\n                    ];\r\n                    var affectingPropsYContentBox = [\r\n                        _strPaddingMinus + _strTop,\r\n                        _strPaddingMinus + _strBottom,\r\n                        _strBorderMinus + _strTop + _strWidth,\r\n                        _strBorderMinus + _strBottom + _strWidth\r\n                    ];\r\n                    var _strS = 's';\r\n                    var _strVS = 'v-s';\r\n                    var checkX = _overflowBehaviorCache.x === _strS || _overflowBehaviorCache.x === _strVS;\r\n                    var checkY = _overflowBehaviorCache.y === _strS || _overflowBehaviorCache.y === _strVS;\r\n                    var sizeIsAffected = false;\r\n                    var checkPropertyName = function (arr, name) {\r\n                        for (var i = 0; i < arr[LEXICON.l]; i++) {\r\n                            if (arr[i] === name)\r\n                                return true;\r\n                        }\r\n                        return false;\r\n                    };\r\n\r\n                    if (checkY) {\r\n                        sizeIsAffected = checkPropertyName(affectingPropsY, propertyName);\r\n                        if (!sizeIsAffected && !_isBorderBox)\r\n                            sizeIsAffected = checkPropertyName(affectingPropsYContentBox, propertyName);\r\n                    }\r\n                    if (checkX && !sizeIsAffected) {\r\n                        sizeIsAffected = checkPropertyName(affectingPropsX, propertyName);\r\n                        if (!sizeIsAffected && !_isBorderBox)\r\n                            sizeIsAffected = checkPropertyName(affectingPropsXContentBox, propertyName);\r\n                    }\r\n                    return sizeIsAffected;\r\n                }\r\n\r\n                \r\n                //==== Update ====//\r\n\r\n                /**\r\n                 * Updates the variables and size of the textarea element, and manages the scroll on new line or new character.\r\n                 */\r\n                function textareaUpdate() {\r\n                    if (!_sleeping) {\r\n                        var wrapAttrOff = !_textareaAutoWrappingCache;\r\n                        var minWidth = _viewportSize.w;\r\n                        var minHeight = _viewportSize.h;\r\n                        var css = { };\r\n                        var doMeasure = _widthAutoCache || wrapAttrOff;\r\n                        var origWidth;\r\n                        var width;\r\n                        var origHeight;\r\n                        var height;\r\n\r\n                        //reset min size\r\n                        css[_strMinMinus + _strWidth] = _strEmpty;\r\n                        css[_strMinMinus + _strHeight] = _strEmpty;\r\n\r\n                        //set width auto\r\n                        css[_strWidth] = _strAuto;\r\n                        _targetElement.css(css);\r\n\r\n                        //measure width\r\n                        origWidth = _targetElementNative[LEXICON.oW];\r\n                        width = doMeasure ? MATH.max(origWidth, _targetElementNative[LEXICON.sW] - 1) : 1;\r\n                        /*width += (_widthAutoCache ? _marginX + (!_isBorderBox ? wrapAttrOff ? 0 : _paddingX + _borderX : 0) : 0);*/\r\n\r\n                        //set measured width\r\n                        css[_strWidth] = _widthAutoCache ? _strAuto /*width*/ : _strHundredPercent;\r\n                        css[_strMinMinus + _strWidth] = _strHundredPercent;\r\n\r\n                        //set height auto\r\n                        css[_strHeight] = _strAuto;\r\n                        _targetElement.css(css);\r\n\r\n                        //measure height\r\n                        origHeight = _targetElementNative[LEXICON.oH];\r\n                        height = MATH.max(origHeight, _targetElementNative[LEXICON.sH] - 1);\r\n\r\n                        //append correct size values\r\n                        css[_strWidth] = width;\r\n                        css[_strHeight] = height;\r\n                        _textareaCoverElement.css(css);\r\n\r\n                        //apply min width / min height to prevent textarea collapsing\r\n                        css[_strMinMinus + _strWidth] = minWidth /*+ (!_isBorderBox && _widthAutoCache ? _paddingX + _borderX : 0)*/;\r\n                        css[_strMinMinus + _strHeight] = minHeight /*+ (!_isBorderBox && _heightAutoCache ? _paddingY + _borderY : 0)*/;\r\n                        _targetElement.css(css);\r\n\r\n                        return {\r\n                            _originalWidth: origWidth,\r\n                            _originalHeight: origHeight,\r\n                            _dynamicWidth: width,\r\n                            _dynamicHeight: height\r\n                        };\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Updates the plugin and DOM to the current options.\r\n                 * This method should only be called if a update is 100% required.\r\n                 * @param updateHints A objects which contains hints for this update:\r\n                 * {\r\n                 *   _hostSizeChanged : boolean,\r\n                 *   _contentSizeChanged : boolean,\r\n                 *   _force : boolean,                             == preventSwallowing\r\n                 *   _changedOptions : { },                        == preventSwallowing && preventSleep\r\n                *  }\r\n                 */\r\n                function update(updateHints) {\r\n                    clearTimeout(_swallowedUpdateTimeout);\r\n                    updateHints = updateHints || { };\r\n                    _swallowedUpdateHints._hostSizeChanged |= updateHints._hostSizeChanged;\r\n                    _swallowedUpdateHints._contentSizeChanged |= updateHints._contentSizeChanged;\r\n                    _swallowedUpdateHints._force |= updateHints._force;\r\n                    \r\n                    var now = COMPATIBILITY.now();\r\n                    var hostSizeChanged = !!_swallowedUpdateHints._hostSizeChanged;\r\n                    var contentSizeChanged = !!_swallowedUpdateHints._contentSizeChanged;\r\n                    var force = !!_swallowedUpdateHints._force;\r\n                    var changedOptions = updateHints._changedOptions;    \r\n                    var swallow = _swallowUpdateLag > 0 && _initialized && !_destroyed && !force && !changedOptions && (now - _lastUpdateTime) < _swallowUpdateLag && (!_heightAutoCache && !_widthAutoCache);                    \r\n                    var displayIsHidden;\r\n\r\n                    if(swallow)\r\n                        _swallowedUpdateTimeout = setTimeout(update, _swallowUpdateLag);\r\n\r\n                    //abort update due to:\r\n                    //destroyed\r\n                    //swallowing\r\n                    //sleeping\r\n                    //host is hidden or has false display\r\n                    if (_destroyed || swallow || (_sleeping && !changedOptions) || (_initialized && !force && (displayIsHidden = _hostElement.is(':hidden'))) || _hostElement.css('display') === 'inline')\r\n                        return;\r\n\r\n                    _lastUpdateTime = now;\r\n                    _swallowedUpdateHints = { };\r\n                    \r\n                    //if scrollbar styling is possible and native scrollbars aren't overlaid the scrollbar styling will be applied which hides the native scrollbars completely.\r\n                    if (_nativeScrollbarStyling && !(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)) {\r\n                        //native scrollbars are hidden, so change the values to zero\r\n                        _nativeScrollbarSize.x = 0;\r\n                        _nativeScrollbarSize.y = 0;\r\n                    }\r\n                    else {\r\n                        //refresh native scrollbar size (in case of zoom)\r\n                        _nativeScrollbarSize = extendDeep({}, globals.nativeScrollbarSize);\r\n                    }\r\n\r\n                    // Scrollbar padding is needed for firefox, because firefox hides scrollbar automatically if the size of the div is too small.\r\n                    // The calculation: [scrollbar size +3 *3]\r\n                    // (+3 because of possible decoration e.g. borders, margins etc., but only if native scrollbar is NOT a overlaid scrollbar)\r\n                    // (*3 because (1)increase / (2)decrease -button and (3)resize handle)\r\n                    _nativeScrollbarMinSize = {\r\n                        x: (_nativeScrollbarSize.x + (_nativeScrollbarIsOverlaid.x ? 0 : 3)) * 3,\r\n                        y: (_nativeScrollbarSize.y + (_nativeScrollbarIsOverlaid.y ? 0 : 3)) * 3\r\n                    };\r\n                    \r\n                    //changedOptions = changedOptions || { };\r\n                    //freezeResizeObserver(_sizeObserverElement, true);\r\n                    //freezeResizeObserver(_sizeAutoObserverElement, true);\r\n                    \r\n                    var checkCacheAutoForce = function () {\r\n                        return checkCache.apply(this, [].slice.call(arguments).concat([ force ]));\r\n                    };\r\n                    \r\n                    //save current scroll offset\r\n                    var currScroll = {\r\n                        x: _viewportElement[_strScrollLeft](),\r\n                        y: _viewportElement[_strScrollTop]()\r\n                    };\r\n\r\n                    var currentPreparedOptionsScrollbars = _currentPreparedOptions.scrollbars;\r\n                    var currentPreparedOptionsTextarea = _currentPreparedOptions.textarea;\r\n\r\n                    //scrollbars visibility:\r\n                    var scrollbarsVisibility = currentPreparedOptionsScrollbars.visibility;\r\n                    var scrollbarsVisibilityChanged = checkCacheAutoForce(scrollbarsVisibility, _scrollbarsVisibilityCache);\r\n\r\n                    //scrollbars autoHide:\r\n                    var scrollbarsAutoHide = currentPreparedOptionsScrollbars.autoHide;\r\n                    var scrollbarsAutoHideChanged = checkCacheAutoForce(scrollbarsAutoHide, _scrollbarsAutoHideCache);\r\n\r\n                    //scrollbars click scrolling\r\n                    var scrollbarsClickScrolling = currentPreparedOptionsScrollbars.clickScrolling;\r\n                    var scrollbarsClickScrollingChanged = checkCacheAutoForce(scrollbarsClickScrolling, _scrollbarsClickScrollingCache);\r\n\r\n                    //scrollbars drag scrolling\r\n                    var scrollbarsDragScrolling = currentPreparedOptionsScrollbars.dragScrolling;\r\n                    var scrollbarsDragScrollingChanged = checkCacheAutoForce(scrollbarsDragScrolling, _scrollbarsDragScrollingCache);\r\n\r\n                    //className\r\n                    var className = _currentPreparedOptions.className;\r\n                    var classNameChanged = checkCacheAutoForce(className, _classNameCache);\r\n\r\n                    //resize\r\n                    var resize = _currentPreparedOptions.resize;\r\n                    var resizeChanged = checkCacheAutoForce(resize, _resizeCache) && !_isBody; //body can't be resized since the window itself acts as resize possibility.\r\n\r\n                    //paddingAbsolute\r\n                    var paddingAbsolute = _currentPreparedOptions.paddingAbsolute;\r\n                    var paddingAbsoluteChanged = checkCacheAutoForce(paddingAbsolute, _paddingAbsoluteCache);\r\n\r\n                    //clipAlways\r\n                    var clipAlways = _currentPreparedOptions.clipAlways;\r\n                    var clipAlwaysChanged = checkCacheAutoForce(clipAlways, _clipAlwaysCache);\r\n\r\n                    //sizeAutoCapable\r\n                    var sizeAutoCapable = _currentPreparedOptions.sizeAutoCapable && !_isBody; //body can never be size auto, because it shall be always as big as the viewport.\r\n                    var sizeAutoCapableChanged = checkCacheAutoForce(sizeAutoCapable, _sizeAutoCapableCache);\r\n\r\n                    //showNativeScrollbars\r\n                    var ignoreOverlayScrollbarHiding = _currentPreparedOptions.nativeScrollbarsOverlaid.showNativeScrollbars;\r\n                    var ignoreOverlayScrollbarHidingChanged = checkCacheAutoForce(ignoreOverlayScrollbarHiding, _ignoreOverlayScrollbarHidingCache);\r\n\r\n                    //autoUpdate\r\n                    var autoUpdate = _currentPreparedOptions.autoUpdate;\r\n                    var autoUpdateChanged = checkCacheAutoForce(autoUpdate, _autoUpdateCache);\r\n\r\n                    //overflowBehavior\r\n                    var overflowBehavior = _currentPreparedOptions.overflowBehavior;\r\n                    var overflowBehaviorChanged = checkCacheAutoForce(overflowBehavior, _overflowBehaviorCache, force);\r\n\r\n                    //dynWidth:\r\n                    var textareaDynWidth = currentPreparedOptionsTextarea.dynWidth;\r\n                    var textareaDynWidthChanged = checkCacheAutoForce(_textareaDynWidthCache, textareaDynWidth);\r\n\r\n                    //dynHeight:\r\n                    var textareaDynHeight = currentPreparedOptionsTextarea.dynHeight;\r\n                    var textareaDynHeightChanged = checkCacheAutoForce(_textareaDynHeightCache, textareaDynHeight);\r\n\r\n                    //scrollbars visibility\r\n                    _scrollbarsAutoHideNever = scrollbarsAutoHide === 'n';\r\n                    _scrollbarsAutoHideScroll = scrollbarsAutoHide === 's';\r\n                    _scrollbarsAutoHideMove = scrollbarsAutoHide === 'm';\r\n                    _scrollbarsAutoHideLeave = scrollbarsAutoHide === 'l';\r\n\r\n                    //scrollbars autoHideDelay\r\n                    _scrollbarsAutoHideDelay = currentPreparedOptionsScrollbars.autoHideDelay;\r\n\r\n                    //old className\r\n                    _oldClassName = _classNameCache;\r\n\r\n                    //resize\r\n                    _resizeNone = resize === 'n';\r\n                    _resizeBoth = resize === 'b';\r\n                    _resizeHorizontal = resize === 'h';\r\n                    _resizeVertical = resize === 'v';\r\n\r\n                    //normalizeRTL\r\n                    _normalizeRTLCache = _currentPreparedOptions.normalizeRTL;\r\n\r\n                    //ignore overlay scrollbar hiding\r\n                    ignoreOverlayScrollbarHiding = ignoreOverlayScrollbarHiding && (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y);\r\n\r\n                    //refresh options cache\r\n                    _scrollbarsVisibilityCache = scrollbarsVisibility;\r\n                    _scrollbarsAutoHideCache = scrollbarsAutoHide;\r\n                    _scrollbarsClickScrollingCache = scrollbarsClickScrolling;\r\n                    _scrollbarsDragScrollingCache = scrollbarsDragScrolling;\r\n                    _classNameCache = className;\r\n                    _resizeCache = resize;\r\n                    _paddingAbsoluteCache = paddingAbsolute;\r\n                    _clipAlwaysCache = clipAlways;\r\n                    _sizeAutoCapableCache = sizeAutoCapable;\r\n                    _ignoreOverlayScrollbarHidingCache = ignoreOverlayScrollbarHiding;\r\n                    _autoUpdateCache = autoUpdate;\r\n                    _overflowBehaviorCache = extendDeep({}, overflowBehavior);\r\n                    _textareaDynWidthCache = textareaDynWidth;\r\n                    _textareaDynHeightCache = textareaDynHeight;\r\n                    _hasOverflowCache = _hasOverflowCache || { x: false, y: false };\r\n\r\n                    //set correct class name to the host element\r\n                    if (classNameChanged) {\r\n                        removeClass(_hostElement, _oldClassName + _strSpace + _classNameThemeNone);\r\n                        addClass(_hostElement, className !== undefined && className !== null && className.length > 0 ? className : _classNameThemeNone);\r\n                    }\r\n\r\n                    //set correct auto Update\r\n                    if (autoUpdateChanged) {\r\n                        if (autoUpdate === true) {\r\n                            disconnectMutationObservers();\r\n                            autoUpdateLoop.add(_base);\r\n                        }\r\n                        else if (autoUpdate === null) {\r\n                            if (_autoUpdateRecommended) {\r\n                                disconnectMutationObservers();\r\n                                autoUpdateLoop.add(_base);\r\n                            }\r\n                            else {\r\n                                autoUpdateLoop.remove(_base);\r\n                                connectMutationObservers();\r\n                            }\r\n                        }\r\n                        else {\r\n                            autoUpdateLoop.remove(_base);\r\n                            connectMutationObservers();\r\n                        }\r\n                    }\r\n\r\n                    //activate or deactivate size auto capability\r\n                    if (sizeAutoCapableChanged) {\r\n                        if (sizeAutoCapable) {\r\n                            if (!_contentGlueElement) {\r\n                                _contentGlueElement = FRAMEWORK(generateDiv(_classNameContentGlueElement));\r\n                                _paddingElement.before(_contentGlueElement);\r\n                            }\r\n                            else {\r\n                                _contentGlueElement.show();\r\n                            }\r\n                            if (_sizeAutoObserverAdded) {\r\n                                _sizeAutoObserverElement.show();\r\n                            }\r\n                            else {\r\n                                _sizeAutoObserverElement = FRAMEWORK(generateDiv(_classNameSizeAutoObserverElement));\r\n                                _sizeAutoObserverElementNative = _sizeAutoObserverElement[0];\r\n\r\n                                _contentGlueElement.before(_sizeAutoObserverElement);\r\n                                var oldSize = {w: -1, h: -1};\r\n                                setupResizeObserver(_sizeAutoObserverElement, function () {\r\n                                    var newSize = {\r\n                                        w: _sizeAutoObserverElementNative[LEXICON.oW],\r\n                                        h: _sizeAutoObserverElementNative[LEXICON.oH]\r\n                                    };\r\n                                    if (checkCache(newSize, oldSize)) {\r\n                                        if (_initialized && (_heightAutoCache && newSize.h > 0) || (_widthAutoCache && newSize.w > 0)) {\r\n                                            update();\r\n                                        }\r\n                                        else if (_initialized && (!_heightAutoCache && newSize.h === 0) || (!_widthAutoCache && newSize.w === 0)) {\r\n                                            update();\r\n                                        }\r\n                                    }\r\n                                    oldSize = newSize;\r\n                                });\r\n                                _sizeAutoObserverAdded = true;\r\n                                //fix heightAuto detector bug if height is fixed but contentHeight is 0.\r\n                                //the probability this bug will ever happen is very very low, thats why its ok if we use calc which isn't supported in IE8.\r\n                                if (_cssCalc !== null)\r\n                                    _sizeAutoObserverElement.css(_strHeight, _cssCalc + '(100% + 1px)');\r\n                            }\r\n                        }\r\n                        else {\r\n                            if (_sizeAutoObserverAdded)\r\n                                _sizeAutoObserverElement.hide();\r\n                            if (_contentGlueElement)\r\n                                _contentGlueElement.hide();\r\n                        }\r\n                    }\r\n\r\n                    //if force, update all resizeObservers too\r\n                    if (force) {\r\n                        _sizeObserverElement.find('*').trigger(_strScroll);\r\n                        if (_sizeAutoObserverAdded)\r\n                            _sizeAutoObserverElement.find('*').trigger(_strScroll);\r\n                    }\r\n\r\n                    //display hidden:\r\n                    displayIsHidden = displayIsHidden === undefined ? _hostElement.is(':hidden') : displayIsHidden;\r\n                    var displayIsHiddenChanged = checkCacheAutoForce(displayIsHidden, _displayIsHiddenCache);\r\n\r\n                    //textarea AutoWrapping:\r\n                    var textareaAutoWrapping = _isTextarea ? _targetElement.attr('wrap') !== 'off' : false;\r\n                    var textareaAutoWrappingChanged = checkCacheAutoForce(textareaAutoWrapping, _textareaAutoWrappingCache);\r\n\r\n                    //detect direction:\r\n                    var cssDirection = _hostElement.css('direction');\r\n                    var cssDirectionChanged = checkCacheAutoForce(cssDirection, _cssDirectionCache);\r\n\r\n                    //detect box-sizing:\r\n                    var boxSizing = _hostElement.css('box-sizing');\r\n                    var boxSizingChanged = checkCacheAutoForce(boxSizing, _cssBoxSizingCache);\r\n\r\n                    //detect padding:\r\n                    var padding = {\r\n                        c: force,\r\n                        t: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strTop)),\r\n                        r: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strRight)),\r\n                        b: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strBottom)),\r\n                        l: parseToZeroOrNumber(_hostElement.css(_strPaddingMinus + _strLeft))\r\n                    };\r\n                    \r\n                    //width + height auto detecting var:\r\n                    var sizeAutoObserverElementBCRect;\r\n                    //exception occurs in IE8 sometimes (unknown exception)\r\n                    try {\r\n                        sizeAutoObserverElementBCRect = _sizeAutoObserverAdded ? _sizeAutoObserverElementNative.getBoundingClientRect() : null;\r\n                    } catch (ex) {\r\n                        return;\r\n                    }\r\n\r\n                    _isRTL = cssDirection === 'rtl';\r\n                    _isBorderBox = (boxSizing === 'border-box');\r\n                    var isRTLLeft = _isRTL ? _strLeft : _strRight;\r\n                    var isRTLRight = _isRTL ? _strRight : _strLeft;\r\n\r\n                    //detect width auto:\r\n                    var widthAutoResizeDetection = false;\r\n                    var widthAutoObserverDetection = (_sizeAutoObserverAdded && (_hostElement.css(_strFloat) !== 'none' /*|| _isTextarea */)) ? (MATH.round(sizeAutoObserverElementBCRect.right - sizeAutoObserverElementBCRect.left) === 0) && (!paddingAbsolute ? (_hostElementNative[LEXICON.cW] - _paddingX) > 0 : true) : false;\r\n                    if (sizeAutoCapable && !widthAutoObserverDetection) {\r\n                        var tmpCurrHostWidth = _hostElementNative[LEXICON.oW];\r\n                        var tmpCurrContentGlueWidth = _contentGlueElement.css(_strWidth);\r\n                        _contentGlueElement.css(_strWidth, _strAuto);\r\n\r\n                        var tmpNewHostWidth = _hostElementNative[LEXICON.oW];\r\n                        _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth);\r\n                        widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth;\r\n                        if (!widthAutoResizeDetection) {\r\n                            _contentGlueElement.css(_strWidth, tmpCurrHostWidth + 1);\r\n                            tmpNewHostWidth = _hostElementNative[LEXICON.oW];\r\n                            _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth);\r\n                            widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth;\r\n                        }\r\n                    }\r\n                    var widthAuto = (widthAutoObserverDetection || widthAutoResizeDetection) && sizeAutoCapable && !displayIsHidden;\r\n                    var widthAutoChanged = checkCacheAutoForce(widthAuto, _widthAutoCache);\r\n                    var wasWidthAuto = !widthAuto && _widthAutoCache;\r\n\r\n                    //detect height auto:\r\n                    var heightAuto = _sizeAutoObserverAdded && sizeAutoCapable && !displayIsHidden ? (MATH.round(sizeAutoObserverElementBCRect.bottom - sizeAutoObserverElementBCRect.top) === 0) /* && (!paddingAbsolute && (_msieVersion > 9 || !_msieVersion) ? true : true) */ : false;\r\n                    var heightAutoChanged = checkCacheAutoForce(heightAuto, _heightAutoCache);\r\n                    var wasHeightAuto = !heightAuto && _heightAutoCache;\r\n\r\n                    //detect border:\r\n                    //we need the border only if border box and auto size\r\n                    var strMinusWidth = '-' + _strWidth;\r\n                    var updateBorderX = (widthAuto && _isBorderBox) || !_isBorderBox;\r\n                    var updateBorderY = (heightAuto && _isBorderBox) || !_isBorderBox;\r\n                    var border = {\r\n                        c: force,\r\n                        t: updateBorderY ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strTop + strMinusWidth), true) : 0,\r\n                        r: updateBorderX ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strRight + strMinusWidth), true) : 0,\r\n                        b: updateBorderY ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strBottom + strMinusWidth), true) : 0,\r\n                        l: updateBorderX ? parseToZeroOrNumber(_hostElement.css(_strBorderMinus + _strLeft + strMinusWidth), true) : 0\r\n                    };\r\n\r\n                    //detect margin:\r\n                    var margin = {\r\n                        c: force,\r\n                        t: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strTop)),\r\n                        r: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strRight)),\r\n                        b: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strBottom)),\r\n                        l: parseToZeroOrNumber(_hostElement.css(_strMarginMinus + _strLeft))\r\n                    };\r\n\r\n                    //detect css max width & height:\r\n                    var cssMaxValue = {\r\n                        h: String(_hostElement.css(_strMaxMinus + _strHeight)),\r\n                        w: String(_hostElement.css(_strMaxMinus + _strWidth))\r\n                    };\r\n\r\n                    //vars to apply correct css\r\n                    var contentElementCSS = { };\r\n                    var contentGlueElementCSS = { };\r\n\r\n                    //funcs\r\n                    var getHostSize = function() {\r\n                        //has to be clientSize because offsetSize respect borders\r\n                        return {\r\n                            w: _hostElementNative[LEXICON.cW],\r\n                            h: _hostElementNative[LEXICON.cH]\r\n                        };\r\n                    };\r\n                    var getViewportSize = function() {\r\n                        //viewport size is padding container because it never has padding, margin and a border\r\n                        //determine zoom rounding error -> sometimes scrollWidth/Height is smaller than clientWidth/Height\r\n                        //if this happens add the difference to the viewportSize to compensate the rounding error\r\n                        return {\r\n                            w: _paddingElementNative[LEXICON.oW] + MATH.max(0, _contentElementNative[LEXICON.cW] - _contentElementNative[LEXICON.sW]),\r\n                            h: _paddingElementNative[LEXICON.oH] + MATH.max(0, _contentElementNative[LEXICON.cH] - _contentElementNative[LEXICON.sH])\r\n                        };\r\n                    };\r\n\r\n                    //set info for padding\r\n                    var paddingAbsoluteX = _paddingX = padding.l + padding.r;\r\n                    var paddingAbsoluteY = _paddingY = padding.t + padding.b;\r\n                    paddingAbsoluteX *= paddingAbsolute ? 1 : 0;\r\n                    paddingAbsoluteY *= paddingAbsolute ? 1 : 0;\r\n                    padding.c = checkCacheAutoForce(padding, _cssPaddingCache);\r\n\r\n                    //set info for border\r\n                    _borderX = border.l + border.r;\r\n                    _borderY = border.t + border.b;\r\n                    border.c = checkCacheAutoForce(border, _cssBorderCache);\r\n\r\n                    //set info for margin\r\n                    _marginX = margin.l + margin.r;\r\n                    _marginY = margin.t + margin.b;\r\n                    margin.c = checkCacheAutoForce(margin, _cssMarginCache);\r\n\r\n                    //set info for css max value\r\n                    cssMaxValue.ih = parseToZeroOrNumber(cssMaxValue.h); //ih = integer height\r\n                    cssMaxValue.iw = parseToZeroOrNumber(cssMaxValue.w); //iw = integer width\r\n                    cssMaxValue.ch = cssMaxValue.h.indexOf('px') > -1; //ch = correct height\r\n                    cssMaxValue.cw = cssMaxValue.w.indexOf('px') > -1; //cw = correct width\r\n                    cssMaxValue.c = checkCacheAutoForce(cssMaxValue, _cssMaxValueCache);\r\n\r\n                    //refresh cache\r\n                    _displayIsHiddenCache = displayIsHidden;\r\n                    _textareaAutoWrappingCache = textareaAutoWrapping;\r\n                    _cssDirectionCache = cssDirection;\r\n                    _cssBoxSizingCache = boxSizing;\r\n                    _widthAutoCache = widthAuto;\r\n                    _heightAutoCache = heightAuto;\r\n                    _cssPaddingCache = padding;\r\n                    _cssBorderCache = border;\r\n                    _cssMarginCache = margin;\r\n                    _cssMaxValueCache = cssMaxValue;\r\n                        \r\n                    //IEFix direction changed\r\n                    if (cssDirectionChanged && _sizeAutoObserverAdded)\r\n                        _sizeAutoObserverElement.css(_strFloat, isRTLRight);\r\n\r\n                    //apply padding:\r\n                    if (padding.c || cssDirectionChanged || paddingAbsoluteChanged || widthAutoChanged || heightAutoChanged || boxSizingChanged || sizeAutoCapableChanged) {\r\n                        var paddingElementCSS = {};\r\n                        var textareaCSS = {};\r\n                        setTopRightBottomLeft(contentGlueElementCSS, _strMarginMinus, [-padding.t, -padding.r, -padding.b, -padding.l]);\r\n                        if (paddingAbsolute) {\r\n                            setTopRightBottomLeft(paddingElementCSS, _strEmpty, [padding.t, padding.r, padding.b, padding.l]);\r\n                            if (_isTextarea)\r\n                                setTopRightBottomLeft(textareaCSS, _strPaddingMinus);\r\n                            else\r\n                                setTopRightBottomLeft(contentElementCSS, _strPaddingMinus);\r\n                        }\r\n                        else {\r\n                            setTopRightBottomLeft(paddingElementCSS, _strEmpty);\r\n                            if (_isTextarea)\r\n                                setTopRightBottomLeft(textareaCSS, _strPaddingMinus, [padding.t, padding.r, padding.b, padding.l]);\r\n                            else\r\n                                setTopRightBottomLeft(contentElementCSS, _strPaddingMinus, [padding.t, padding.r, padding.b, padding.l]);\r\n                        }\r\n                        _paddingElement.css(paddingElementCSS);\r\n                        _targetElement.css(textareaCSS);\r\n                    }\r\n\r\n                    //viewport size is padding container because it never has padding, margin and a border.\r\n                    _viewportSize = getViewportSize();\r\n\r\n                    //update Textarea\r\n                    var textareaSize = _isTextarea ? textareaUpdate() : false;\r\n                    var textareaSizeChanged = _isTextarea && checkCacheAutoForce(textareaSize, _textareaSizeCache);\r\n                    var textareaDynOrigSize = _isTextarea && textareaSize ? {\r\n                        w : textareaDynWidth ? textareaSize._dynamicWidth : textareaSize._originalWidth,\r\n                        h : textareaDynHeight ? textareaSize._dynamicHeight : textareaSize._originalHeight\r\n                    } : { };\r\n                    _textareaSizeCache = textareaSize;\r\n\r\n                    //fix height auto / width auto in cooperation with current padding & boxSizing behavior:\r\n                    if (heightAuto && (heightAutoChanged || paddingAbsoluteChanged || boxSizingChanged || cssMaxValue.c || padding.c || border.c)) {\r\n                        /*\r\n                        if (cssMaxValue.ch)\r\n                            contentElementCSS[_strMaxMinus + _strHeight] =\r\n                                (cssMaxValue.ch ? (cssMaxValue.ih - paddingAbsoluteY + (_isBorderBox ? -_borderY : _paddingY))\r\n                                : _strEmpty);\r\n                        */\r\n                        contentElementCSS[_strHeight] = _strAuto;\r\n                    }\r\n                    else if (heightAutoChanged || paddingAbsoluteChanged) {\r\n                        contentElementCSS[_strMaxMinus + _strHeight] = _strEmpty;\r\n                        contentElementCSS[_strHeight] = _strHundredPercent;\r\n                    }\r\n                    if (widthAuto && (widthAutoChanged || paddingAbsoluteChanged || boxSizingChanged || cssMaxValue.c || padding.c || border.c || cssDirectionChanged)) {\r\n                        /*\r\n                        if (cssMaxValue.cw)\r\n                            contentElementCSS[_strMaxMinus + _strWidth] =\r\n                                (cssMaxValue.cw ? (cssMaxValue.iw - paddingAbsoluteX + (_isBorderBox ? -_borderX : _paddingX)) +\r\n                                (_nativeScrollbarIsOverlaid.y ? _overlayScrollbarDummySize.y : 0)\r\n                                : _strEmpty);\r\n                        */\r\n                        contentElementCSS[_strWidth] = _strAuto;\r\n                        contentGlueElementCSS[_strMaxMinus + _strWidth] = _strHundredPercent; //IE Fix\r\n                    }\r\n                    else if (widthAutoChanged || paddingAbsoluteChanged) {\r\n                        contentElementCSS[_strMaxMinus + _strWidth] = _strEmpty;\r\n                        contentElementCSS[_strWidth] = _strHundredPercent;\r\n                        contentElementCSS[_strFloat] = _strEmpty;\r\n                        contentGlueElementCSS[_strMaxMinus + _strWidth] = _strEmpty; //IE Fix\r\n                    }\r\n                    if (widthAuto) {\r\n                        if (!cssMaxValue.cw)\r\n                            contentElementCSS[_strMaxMinus + _strWidth] = _strEmpty;\r\n                        //textareaDynOrigSize.w || _strAuto :: doesnt works because applied margin will shift width\r\n                        contentGlueElementCSS[_strWidth] = _strAuto;\r\n\r\n                        contentElementCSS[_strWidth] = _strAuto;\r\n                        contentElementCSS[_strFloat] = isRTLRight;\r\n                    }\r\n                    else {\r\n                        contentGlueElementCSS[_strWidth] = _strEmpty;\r\n                    }\r\n                    if (heightAuto) {\r\n                        if (!cssMaxValue.ch)\r\n                            contentElementCSS[_strMaxMinus + _strHeight] = _strEmpty;\r\n                        //textareaDynOrigSize.h || _contentElementNative[LEXICON.cH] :: use for anti scroll jumping\r\n                        contentGlueElementCSS[_strHeight] = textareaDynOrigSize.h || _contentElementNative[LEXICON.cH];\r\n                    }\r\n                    else {\r\n                        contentGlueElementCSS[_strHeight] = _strEmpty;\r\n                    }\r\n                    if (sizeAutoCapable)\r\n                        _contentGlueElement.css(contentGlueElementCSS);\r\n                    _contentElement.css(contentElementCSS);\r\n\r\n                    //CHECKPOINT HERE ~\r\n                    contentElementCSS = {};\r\n                    contentGlueElementCSS = {};\r\n\r\n                    //if [content(host) client / scroll size, or target element direction, or content(host) max-sizes] changed, or force is true\r\n                    if (hostSizeChanged || contentSizeChanged || textareaSizeChanged || cssDirectionChanged || boxSizingChanged || paddingAbsoluteChanged || widthAutoChanged || widthAuto || heightAutoChanged || heightAuto || cssMaxValue.c || ignoreOverlayScrollbarHidingChanged || overflowBehaviorChanged || clipAlwaysChanged || resizeChanged || scrollbarsVisibilityChanged || scrollbarsAutoHideChanged || scrollbarsDragScrollingChanged || scrollbarsClickScrollingChanged || textareaDynWidthChanged || textareaDynHeightChanged || textareaAutoWrappingChanged) {\r\n                        var strOverflow = 'overflow';\r\n                        var strOverflowX = strOverflow + '-x';\r\n                        var strOverflowY = strOverflow + '-y';\r\n                        var strHidden = 'hidden';\r\n                        var strVisible = 'visible';\r\n                        //decide whether the content overflow must get hidden for correct overflow measuring, it !MUST! be always hidden if the height is auto\r\n                        var hideOverflow4CorrectMeasuring = _restrictedMeasuring ?\r\n                        (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || //it must be hidden if native scrollbars are overlaid\r\n                        (_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) || //it must be hidden if host-element is too small\r\n                        heightAuto || displayIsHiddenChanged //it must be hidden if height is auto or display was changed\r\n                            : heightAuto; //if there is not the restricted Measuring bug, it must be hidden if the height is auto\r\n\r\n                        //Reset the viewport (very important for natively overlaid scrollbars and zoom change\r\n                        //don't change the overflow prop as it is very expensive and affects performance !A LOT!\r\n                        var viewportElementResetCSS = { };\r\n                        var resetXTmp = _hasOverflowCache.y && _hideOverflowCache.ys && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.y ? _viewportElement.css(isRTLLeft) : -_nativeScrollbarSize.y) : 0;\r\n                        var resetBottomTmp = _hasOverflowCache.x && _hideOverflowCache.xs && !ignoreOverlayScrollbarHiding && !_nativeScrollbarStyling ? (_nativeScrollbarIsOverlaid.x ? _viewportElement.css(_strBottom) : -_nativeScrollbarSize.x) : 0;\r\n                        setTopRightBottomLeft(viewportElementResetCSS, _strEmpty);\r\n                        _viewportElement.css(viewportElementResetCSS);\r\n                        if(hideOverflow4CorrectMeasuring)\r\n                            _contentElement.css(strOverflow, strHidden);\r\n\r\n                        //measure several sizes:\r\n                        var contentMeasureElement = getContentMeasureElement();\r\n                        //in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid\r\n                        var contentMeasureElementGuaranty = _restrictedMeasuring && !hideOverflow4CorrectMeasuring ? _viewportElementNative : contentMeasureElement;\r\n                        var contentSize = {\r\n                            //use clientSize because natively overlaidScrollbars add borders\r\n                            w: textareaDynOrigSize.w || contentMeasureElement[LEXICON.cW],\r\n                            h: textareaDynOrigSize.h || contentMeasureElement[LEXICON.cH]\r\n                        };\r\n                        var scrollSize = {\r\n                            w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),\r\n                            h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])\r\n                        };\r\n\r\n                        //apply the correct viewport style and measure viewport size\r\n                        viewportElementResetCSS[_strBottom] = wasHeightAuto ? _strEmpty : resetBottomTmp;\r\n                        viewportElementResetCSS[isRTLLeft] = wasWidthAuto ? _strEmpty : resetXTmp;\r\n                        _viewportElement.css(viewportElementResetCSS);\r\n                        _viewportSize = getViewportSize();\r\n\r\n                        //measure and correct several sizes\r\n                        var hostSize = getHostSize();\r\n                        var contentGlueSize = {\r\n                            //client/scrollSize + AbsolutePadding -> because padding is only applied to the paddingElement if its absolute, so you have to add it manually\r\n                            //hostSize is clientSize -> so padding should be added manually, right? FALSE! Because content glue is inside hostElement, so we don't have to worry about padding\r\n                            w: MATH.max((widthAuto ? contentSize.w : scrollSize.w) + paddingAbsoluteX, hostSize.w),\r\n                            h: MATH.max((heightAuto ? contentSize.h : scrollSize.h) + paddingAbsoluteY, hostSize.h)\r\n                        };\r\n                        contentGlueSize.c = checkCacheAutoForce(contentGlueSize, _contentGlueSizeCache);\r\n                        _contentGlueSizeCache = contentGlueSize;\r\n\r\n                        //apply correct contentGlue size\r\n                        if (sizeAutoCapable) {\r\n                            //size contentGlue correctly to make sure the element has correct size if the sizing switches to auto\r\n                            if (contentGlueSize.c || (heightAuto || widthAuto)) {\r\n                                contentGlueElementCSS[_strWidth] = contentGlueSize.w;\r\n                                contentGlueElementCSS[_strHeight] = contentGlueSize.h;\r\n\r\n                                //textarea-sizes are already calculated correctly at this point\r\n                                if(!_isTextarea) {\r\n                                    contentSize = {\r\n                                        //use clientSize because natively overlaidScrollbars add borders\r\n                                        w: contentMeasureElement[LEXICON.cW],\r\n                                        h: contentMeasureElement[LEXICON.cH]\r\n                                    };\r\n                                }\r\n                            }\r\n                            var textareaCoverCSS = {};\r\n                            var setContentGlueElementCSSfunction = function(horizontal) {\r\n                                var scrollbarVars = getScrollbarVars(horizontal);\r\n                                var wh = scrollbarVars._w_h;\r\n                                var strWH = scrollbarVars._width_height;\r\n                                var autoSize = horizontal ? widthAuto : heightAuto;\r\n                                var borderSize = horizontal ? _borderX : _borderY;\r\n                                var paddingSize = horizontal ? _paddingX : _paddingY;\r\n                                var marginSize = horizontal ? _marginX : _marginY;\r\n                                var maxSize = contentGlueElementCSS[strWH] + (_isBorderBox ? borderSize : -paddingSize);\r\n\r\n                                //make contentGlue size -1 if element is not auto sized, to make sure that a resize event happens when the element shrinks\r\n                                if (!autoSize || (!autoSize && border.c))\r\n                                    contentGlueElementCSS[strWH] = hostSize[wh] - (_isBorderBox ? 0 : paddingSize + borderSize) - 1 - marginSize;\r\n\r\n                                //if size is auto and host is same size as max size, make content glue size +1 to make sure size changes will be detected\r\n                                if (autoSize && cssMaxValue['c' + wh] && cssMaxValue['i' + wh] === maxSize)\r\n                                    contentGlueElementCSS[strWH] = maxSize + (_isBorderBox ? 0 : paddingSize) + 1;\r\n\r\n                                //if size is auto and host is smaller than size as min size, make content glue size -1 to make sure size changes will be detected (this is only needed if padding is 0)\r\n                                if (autoSize && (contentSize[wh] < _viewportSize[wh]) && (horizontal && _isTextarea ? !textareaAutoWrapping : true)) {\r\n                                    if (_isTextarea)\r\n                                        textareaCoverCSS[strWH] = parseToZeroOrNumber(_textareaCoverElement.css(strWH)) - 1;\r\n                                    contentGlueElementCSS[strWH] -= 1;\r\n                                }\r\n\r\n                                //make sure content glue size is at least 1\r\n                                if (contentSize[wh] > 0)\r\n                                    contentGlueElementCSS[strWH] = MATH.max(1, contentGlueElementCSS[strWH]);\r\n                            };\r\n                            setContentGlueElementCSSfunction(true);\r\n                            setContentGlueElementCSSfunction(false);\r\n\r\n                            if (_isTextarea)\r\n                                _textareaCoverElement.css(textareaCoverCSS);\r\n                            _contentGlueElement.css(contentGlueElementCSS);\r\n                        }\r\n                        if (widthAuto)\r\n                            contentElementCSS[_strWidth] = _strHundredPercent;\r\n                        if (widthAuto && !_isBorderBox && !_mutationObserversConnected)\r\n                            contentElementCSS[_strFloat] = 'none';\r\n\r\n                        //apply and reset content style\r\n                        _contentElement.css(contentElementCSS);\r\n                        contentElementCSS = {};\r\n\r\n                        //measure again, but this time all correct sizes:\r\n                        var contentScrollSize = {\r\n                            w: MATH.max(contentMeasureElement[LEXICON.sW], contentMeasureElementGuaranty[LEXICON.sW]),\r\n                            h: MATH.max(contentMeasureElement[LEXICON.sH], contentMeasureElementGuaranty[LEXICON.sH])\r\n                        };\r\n                        contentScrollSize.c = contentSizeChanged = checkCacheAutoForce(contentScrollSize, _contentScrollSizeCache);\r\n                        _contentScrollSizeCache = contentScrollSize;\r\n\r\n                        //remove overflow hidden to restore overflow\r\n                        if(hideOverflow4CorrectMeasuring)\r\n                            _contentElement.css(strOverflow, _strEmpty);\r\n                        \r\n                        //refresh viewport size after correct measuring\r\n                        _viewportSize = getViewportSize();\r\n\r\n                        hostSize = getHostSize();\r\n                        hostSizeChanged = checkCacheAutoForce(hostSize, _hostSizeCache);\r\n                        _hostSizeCache = hostSize;\r\n\r\n                        var hideOverflowForceTextarea = _isTextarea && (_viewportSize.w === 0 || _viewportSize.h === 0);\r\n                        var previousOverflow = _overflowAmountCache;\r\n                        var overflowBehaviorIsVS = { };\r\n                        var overflowBehaviorIsVH = { };\r\n                        var overflowBehaviorIsS = { };\r\n                        var overflowAmount = { };\r\n                        var hasOverflow = { };\r\n                        var hideOverflow = { };\r\n                        var canScroll = { };\r\n                        var viewportRect = _paddingElementNative.getBoundingClientRect();\r\n                        var setOverflowVariables = function(horizontal) {\r\n                            var scrollbarVars = getScrollbarVars(horizontal);\r\n                            var scrollbarVarsInverted = getScrollbarVars(!horizontal);\r\n                            var xyI = scrollbarVarsInverted._x_y;\r\n                            var xy = scrollbarVars._x_y;\r\n                            var wh = scrollbarVars._w_h;\r\n                            var widthHeight = scrollbarVars._width_height;\r\n                            var scrollMax = _strScroll + scrollbarVars._Left_Top + 'Max';\r\n                            var fractionalOverflowAmount = viewportRect[widthHeight] ? MATH.abs(viewportRect[widthHeight] - _viewportSize[wh]) : 0;\r\n                            overflowBehaviorIsVS[xy] = overflowBehavior[xy] === 'v-s';\r\n                            overflowBehaviorIsVH[xy] = overflowBehavior[xy] === 'v-h';\r\n                            overflowBehaviorIsS[xy] = overflowBehavior[xy] === 's';\r\n                            overflowAmount[xy] = MATH.max(0, MATH.round((contentScrollSize[wh] - _viewportSize[wh]) * 100) / 100);\r\n                            overflowAmount[xy] *= (hideOverflowForceTextarea || (_viewportElementNative[scrollMax] === 0 && fractionalOverflowAmount > 0 && fractionalOverflowAmount < 1)) ? 0 : 1;\r\n                            hasOverflow[xy] = overflowAmount[xy] > 0;\r\n\r\n                            //hideOverflow:\r\n                            //x || y : true === overflow is hidden by \"overflow: scroll\" OR \"overflow: hidden\"\r\n                            //xs || ys : true === overflow is hidden by \"overflow: scroll\"\r\n                            hideOverflow[xy] = overflowBehaviorIsVS[xy] || overflowBehaviorIsVH[xy] ? (hasOverflow[xyI] && !overflowBehaviorIsVS[xyI] && !overflowBehaviorIsVH[xyI]) : hasOverflow[xy];\r\n                            hideOverflow[xy + 's'] = hideOverflow[xy] ? (overflowBehaviorIsS[xy] || overflowBehaviorIsVS[xy]) : false;\r\n\r\n                            canScroll[xy] = hasOverflow[xy] && hideOverflow[xy + 's'];\r\n                        };\r\n                        setOverflowVariables(true);\r\n                        setOverflowVariables(false);\r\n\r\n                        overflowAmount.c = checkCacheAutoForce(overflowAmount, _overflowAmountCache);\r\n                        _overflowAmountCache = overflowAmount;\r\n                        hasOverflow.c = checkCacheAutoForce(hasOverflow, _hasOverflowCache);\r\n                        _hasOverflowCache = hasOverflow;\r\n                        hideOverflow.c = checkCacheAutoForce(hideOverflow, _hideOverflowCache);\r\n                        _hideOverflowCache = hideOverflow;\r\n\r\n                        //if native scrollbar is overlay at x OR y axis, prepare DOM\r\n                        if (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) {\r\n                            var borderDesign = 'px solid transparent';\r\n                            var contentArrangeElementCSS = { };\r\n                            var arrangeContent = { };\r\n                            var arrangeChanged = force;\r\n                            var setContentElementCSS;\r\n\r\n                            if (hasOverflow.x || hasOverflow.y) {\r\n                                arrangeContent.w = _nativeScrollbarIsOverlaid.y && hasOverflow.y ? contentScrollSize.w + _overlayScrollbarDummySize.y : _strEmpty;\r\n                                arrangeContent.h = _nativeScrollbarIsOverlaid.x && hasOverflow.x ? contentScrollSize.h + _overlayScrollbarDummySize.x : _strEmpty;\r\n                                arrangeChanged = checkCacheAutoForce(arrangeContent, _arrangeContentSizeCache);\r\n                                _arrangeContentSizeCache = arrangeContent;\r\n                            }\r\n\r\n                            if (hasOverflow.c || hideOverflow.c || contentScrollSize.c || cssDirectionChanged || widthAutoChanged || heightAutoChanged || widthAuto || heightAuto || ignoreOverlayScrollbarHidingChanged) {\r\n                                contentElementCSS[_strMarginMinus + isRTLRight] = contentElementCSS[_strBorderMinus + isRTLRight] = _strEmpty;\r\n                                setContentElementCSS = function(horizontal) {\r\n                                    var scrollbarVars = getScrollbarVars(horizontal);\r\n                                    var scrollbarVarsInverted = getScrollbarVars(!horizontal);\r\n                                    var xy = scrollbarVars._x_y;\r\n                                    var strDirection = horizontal ? _strBottom : isRTLLeft;\r\n                                    var invertedAutoSize = horizontal ? heightAuto : widthAuto;\r\n\r\n                                    if (_nativeScrollbarIsOverlaid[xy] && hasOverflow[xy] && hideOverflow[xy + 's']) {\r\n                                        contentElementCSS[_strMarginMinus + strDirection] = invertedAutoSize ? (ignoreOverlayScrollbarHiding ? _strEmpty : _overlayScrollbarDummySize[xy]) : _strEmpty;\r\n                                        contentElementCSS[_strBorderMinus + strDirection] = ((horizontal ? !invertedAutoSize : true) && !ignoreOverlayScrollbarHiding) ? (_overlayScrollbarDummySize[xy] + borderDesign) : _strEmpty;\r\n                                    }\r\n                                    else {\r\n                                        arrangeContent[scrollbarVarsInverted._w_h] =\r\n                                        contentElementCSS[_strMarginMinus + strDirection] =\r\n                                        contentElementCSS[_strBorderMinus + strDirection] = _strEmpty;\r\n                                        arrangeChanged = true;\r\n                                    }\r\n                                };\r\n\r\n                                if (_nativeScrollbarStyling) {\r\n                                    if (ignoreOverlayScrollbarHiding) \r\n                                        removeClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible);\r\n                                    else\r\n                                        addClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible);\r\n                                }\r\n                                else {\r\n                                    setContentElementCSS(true);\r\n                                    setContentElementCSS(false);\r\n                                }\r\n                            }\r\n                            if (ignoreOverlayScrollbarHiding) {\r\n                                arrangeContent.w = arrangeContent.h = _strEmpty;\r\n                                arrangeChanged = true;\r\n                            }\r\n                            if (arrangeChanged && !_nativeScrollbarStyling) {\r\n                                contentArrangeElementCSS[_strWidth] = hideOverflow.y ? arrangeContent.w : _strEmpty;\r\n                                contentArrangeElementCSS[_strHeight] = hideOverflow.x ? arrangeContent.h : _strEmpty;\r\n\r\n                                if (!_contentArrangeElement) {\r\n                                    _contentArrangeElement = FRAMEWORK(generateDiv(_classNameContentArrangeElement));\r\n                                    _viewportElement.prepend(_contentArrangeElement);\r\n                                }\r\n                                _contentArrangeElement.css(contentArrangeElementCSS);\r\n                            }\r\n                            _contentElement.css(contentElementCSS);\r\n                        }\r\n\r\n                        var viewportElementCSS = {};\r\n                        var paddingElementCSS = {};\r\n                        var setViewportCSS;\r\n                        if (hostSizeChanged || hasOverflow.c || hideOverflow.c || contentScrollSize.c || overflowBehaviorChanged || boxSizingChanged || ignoreOverlayScrollbarHidingChanged || cssDirectionChanged || clipAlwaysChanged || heightAutoChanged) {\r\n                            viewportElementCSS[isRTLRight] = _strEmpty;\r\n                            setViewportCSS = function(horizontal) {\r\n                                var scrollbarVars = getScrollbarVars(horizontal);\r\n                                var scrollbarVarsInverted = getScrollbarVars(!horizontal);\r\n                                var xy = scrollbarVars._x_y;\r\n                                var XY = scrollbarVars._X_Y;\r\n                                var strDirection = horizontal ? _strBottom : isRTLLeft;\r\n\r\n                                var reset = function () {\r\n                                    viewportElementCSS[strDirection] = _strEmpty;\r\n                                    _contentBorderSize[scrollbarVarsInverted._w_h] = 0;\r\n                                };\r\n                                if (hasOverflow[xy] && hideOverflow[xy + 's']) {\r\n                                    viewportElementCSS[strOverflow + XY] = _strScroll;\r\n                                    if (ignoreOverlayScrollbarHiding || _nativeScrollbarStyling) {\r\n                                        reset();\r\n                                    }\r\n                                    else {\r\n                                        viewportElementCSS[strDirection] =  -(_nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[xy] : _nativeScrollbarSize[xy]);\r\n                                        _contentBorderSize[scrollbarVarsInverted._w_h] = _nativeScrollbarIsOverlaid[xy] ? _overlayScrollbarDummySize[scrollbarVarsInverted._x_y] : 0;\r\n                                    }\r\n                                } else {\r\n                                    viewportElementCSS[strOverflow + XY] = _strEmpty;\r\n                                    reset();\r\n                                }\r\n                            };\r\n                            setViewportCSS(true);\r\n                            setViewportCSS(false);\r\n                            \r\n                            // if the scroll container is too small and if there is any overflow with no overlay scrollbar (and scrollbar styling isn't possible), \r\n                            // make viewport element greater in size (Firefox hide Scrollbars fix)\r\n                            // because firefox starts hiding scrollbars on too small elements\r\n                            // with this behavior the overflow calculation may be incorrect or the scrollbars would appear suddenly\r\n                            // https://bugzilla.mozilla.org/show_bug.cgi?id=292284\r\n                            if (!_nativeScrollbarStyling \r\n                                && (_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y)\r\n                                && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) {\r\n                                viewportElementCSS[_strPaddingMinus + _strTop] = _nativeScrollbarMinSize.x;\r\n                                viewportElementCSS[_strMarginMinus + _strTop] = -_nativeScrollbarMinSize.x;\r\n\r\n                                viewportElementCSS[_strPaddingMinus + isRTLRight] = _nativeScrollbarMinSize.y;\r\n                                viewportElementCSS[_strMarginMinus + isRTLRight] = -_nativeScrollbarMinSize.y;\r\n                            }\r\n                            else {\r\n                                viewportElementCSS[_strPaddingMinus + _strTop] =\r\n                                viewportElementCSS[_strMarginMinus + _strTop] =\r\n                                viewportElementCSS[_strPaddingMinus + isRTLRight] =\r\n                                viewportElementCSS[_strMarginMinus + isRTLRight] = _strEmpty;\r\n                            }\r\n                            viewportElementCSS[_strPaddingMinus + isRTLLeft] =\r\n                            viewportElementCSS[_strMarginMinus + isRTLLeft] = _strEmpty;\r\n\r\n                            //if there is any overflow (x OR y axis) and this overflow shall be hidden, make overflow hidden, else overflow visible\r\n                            if ((hasOverflow.x && hideOverflow.x) || (hasOverflow.y && hideOverflow.y) || hideOverflowForceTextarea) {\r\n                                //only hide if is Textarea\r\n                                if (_isTextarea && hideOverflowForceTextarea) {\r\n                                    paddingElementCSS[strOverflowX] =\r\n                                    paddingElementCSS[strOverflowY] = strHidden;\r\n                                }\r\n                            }\r\n                            else {\r\n                                if (!clipAlways || (overflowBehaviorIsVH.x || overflowBehaviorIsVS.x || overflowBehaviorIsVH.y || overflowBehaviorIsVS.y)) {\r\n                                    //only un-hide if Textarea\r\n                                    if (_isTextarea) {\r\n                                        paddingElementCSS[strOverflowX] =\r\n                                        paddingElementCSS[strOverflowY] = _strEmpty;\r\n                                    }\r\n                                    viewportElementCSS[strOverflowX] =\r\n                                    viewportElementCSS[strOverflowY] = strVisible;\r\n                                }\r\n                            }\r\n\r\n                            _paddingElement.css(paddingElementCSS);\r\n                            _viewportElement.css(viewportElementCSS);\r\n                            viewportElementCSS = { };\r\n\r\n                            //force soft redraw in webkit because without the scrollbars will may appear because DOM wont be redrawn under special conditions\r\n                            if ((hasOverflow.c || boxSizingChanged || widthAutoChanged || heightAutoChanged) && !(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)) {\r\n                                var elementStyle = _contentElementNative[LEXICON.s];\r\n                                var dump;\r\n                                elementStyle.webkitTransform = 'scale(1)';\r\n                                elementStyle.display = 'run-in';\r\n                                dump = _contentElementNative[LEXICON.oH];\r\n                                elementStyle.display = _strEmpty; //|| dump; //use dump to prevent it from deletion if minify\r\n                                elementStyle.webkitTransform = _strEmpty;\r\n                            }\r\n                            /*\r\n                            //force hard redraw in webkit if native overlaid scrollbars shall appear\r\n                            if (ignoreOverlayScrollbarHidingChanged && ignoreOverlayScrollbarHiding) {\r\n                                _hostElement.hide();\r\n                                var dump = _hostElementNative[LEXICON.oH];\r\n                                _hostElement.show();\r\n                            }\r\n                            */\r\n                        }\r\n\r\n                        //change to direction RTL and width auto Bugfix in Webkit\r\n                        //without this fix, the DOM still thinks the scrollbar is LTR and thus the content is shifted to the left\r\n                        contentElementCSS = {};\r\n                        if (cssDirectionChanged || widthAutoChanged || heightAutoChanged) {\r\n                            if (_isRTL && widthAuto) {\r\n                                var floatTmp = _contentElement.css(_strFloat);\r\n                                var posLeftWithoutFloat = MATH.round(_contentElement.css(_strFloat, _strEmpty).css(_strLeft, _strEmpty).position().left);\r\n                                _contentElement.css(_strFloat, floatTmp);\r\n                                var posLeftWithFloat = MATH.round(_contentElement.position().left);\r\n\r\n                                if (posLeftWithoutFloat !== posLeftWithFloat)\r\n                                    contentElementCSS[_strLeft] = posLeftWithoutFloat;\r\n                            }\r\n                            else {\r\n                                contentElementCSS[_strLeft] = _strEmpty;\r\n                            }\r\n                        }\r\n                        _contentElement.css(contentElementCSS);\r\n\r\n                        //handle scroll position\r\n                        if (_isTextarea && contentSizeChanged) {\r\n                            var textareaInfo = getTextareaInfo();\r\n                            if (textareaInfo) {\r\n                                var textareaRowsChanged = _textareaInfoCache === undefined ? true : textareaInfo._rows !== _textareaInfoCache._rows;\r\n                                var cursorRow = textareaInfo._cursorRow;\r\n                                var cursorCol = textareaInfo._cursorColumn;\r\n                                var widestRow = textareaInfo._widestRow;\r\n                                var lastRow = textareaInfo._rows;\r\n                                var lastCol = textareaInfo._columns;\r\n                                var cursorPos = textareaInfo._cursorPosition;\r\n                                var cursorMax = textareaInfo._cursorMax;\r\n                                var cursorIsLastPosition = (cursorPos >= cursorMax && _textareaHasFocus);\r\n                                var textareaScrollAmount = {\r\n                                    x: (!textareaAutoWrapping && (cursorCol === lastCol && cursorRow === widestRow)) ? _overflowAmountCache.x : -1,\r\n                                    y: (textareaAutoWrapping ? cursorIsLastPosition || textareaRowsChanged && (previousOverflow !== undefined ? (currScroll.y === previousOverflow.y) : false) : (cursorIsLastPosition || textareaRowsChanged) && cursorRow === lastRow) ? _overflowAmountCache.y : -1\r\n                                };\r\n                                currScroll.x = textareaScrollAmount.x > -1 ? (_isRTL && _normalizeRTLCache && _rtlScrollBehavior.i ? 0 : textareaScrollAmount.x) : currScroll.x; //if inverted, scroll to 0 -> normalized this means to max scroll offset.\r\n                                currScroll.y = textareaScrollAmount.y > -1 ? textareaScrollAmount.y : currScroll.y;\r\n                            }\r\n                            _textareaInfoCache = textareaInfo;\r\n                        }\r\n                        if (_isRTL && _rtlScrollBehavior.i && _nativeScrollbarIsOverlaid.y && hasOverflow.x && _normalizeRTLCache)\r\n                            currScroll.x += _contentBorderSize.w || 0;\r\n                        if(widthAuto)\r\n                            _hostElement[_strScrollLeft](0);\r\n                        if(heightAuto)\r\n                            _hostElement[_strScrollTop](0);\r\n                        _viewportElement[_strScrollLeft](currScroll.x)[_strScrollTop](currScroll.y);\r\n\r\n                        //scrollbars management:\r\n                        var scrollbarsVisibilityVisible = scrollbarsVisibility === 'v';\r\n                        var scrollbarsVisibilityHidden = scrollbarsVisibility === 'h';\r\n                        var scrollbarsVisibilityAuto = scrollbarsVisibility === 'a';\r\n\r\n                        var showScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, true, canScroll.x);\r\n                        var showScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, true, canScroll.y);\r\n                        var hideScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, false, canScroll.x);\r\n                        var hideScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, false, canScroll.y);\r\n\r\n                        //manage class name which indicates scrollable overflow\r\n                        if (hideOverflow.x || hideOverflow.y)\r\n                            addClass(_hostElement, _classNameHostOverflow);\r\n                        else\r\n                            removeClass(_hostElement, _classNameHostOverflow);\r\n                        if (hideOverflow.x)\r\n                            addClass(_hostElement, _classNameHostOverflowX);\r\n                        else\r\n                            removeClass(_hostElement, _classNameHostOverflowX);\r\n                        if (hideOverflow.y)\r\n                            addClass(_hostElement, _classNameHostOverflowY);\r\n                        else\r\n                            removeClass(_hostElement, _classNameHostOverflowY);\r\n\r\n                        //add or remove rtl class name for styling purposes\r\n                        if (cssDirectionChanged) {\r\n                            if (_isRTL)\r\n                                addClass(_hostElement, _classNameHostRTL);\r\n                            else\r\n                                removeClass(_hostElement, _classNameHostRTL);\r\n                        }\r\n\r\n                        //manage the resize feature (CSS3 resize \"polyfill\" for this plugin)\r\n                        if (_isBody)\r\n                            addClass(_hostElement, _classNameHostResizeDisabled);\r\n                        if (resizeChanged) {\r\n                            var setupCornerEvents = function(remove) {\r\n                                if(_supportPassiveEvents)\r\n                                    setupPassiveEventListener(_scrollbarCornerElement, _strMouseTouchDownEvent, _resizeOnMouseTouchDown, remove, true);\r\n                                else\r\n                                    _scrollbarCornerElement[remove ? 'off' : 'on'](_strMouseTouchDownEvent, _resizeOnMouseTouchDown);\r\n                            };\r\n                            removeClass(_scrollbarCornerElement, [ \r\n                                    _classNameScrollbarCornerResize,\r\n                                    _classNameScrollbarCornerResizeB,\r\n                                    _classNameScrollbarCornerResizeH,\r\n                                    _classNameScrollbarCornerResizeV].join(_strSpace));\r\n                            if (_resizeNone) {\r\n                                addClass(_hostElement, _classNameHostResizeDisabled);\r\n                                setupCornerEvents(true);\r\n                            }\r\n                            else {\r\n                                removeClass(_hostElement, _classNameHostResizeDisabled);\r\n                                addClass(_scrollbarCornerElement, _classNameScrollbarCornerResize);\r\n                                if (_resizeBoth)\r\n                                    addClass(_scrollbarCornerElement, _classNameScrollbarCornerResizeB);\r\n                                else if (_resizeHorizontal)\r\n                                    addClass(_scrollbarCornerElement, _classNameScrollbarCornerResizeH);\r\n                                else if (_resizeVertical)\r\n                                    addClass(_scrollbarCornerElement, _classNameScrollbarCornerResizeV);\r\n\r\n                                setupCornerEvents(true);\r\n                                setupCornerEvents();\r\n                            }\r\n                        }\r\n\r\n                        //manage the scrollbars general visibility + the scrollbar interactivity (unusable class name)\r\n                        if (scrollbarsVisibilityChanged || overflowBehaviorChanged || hideOverflow.c || hasOverflow.c || ignoreOverlayScrollbarHidingChanged) {\r\n                            if (ignoreOverlayScrollbarHiding) {\r\n                                if (ignoreOverlayScrollbarHidingChanged) {\r\n                                    removeClass(_hostElement, _classNameHostScrolling);\r\n                                    if (ignoreOverlayScrollbarHiding) {\r\n                                        hideScrollbarH();\r\n                                        hideScrollbarV();\r\n                                    }\r\n                                }\r\n                            }\r\n                            else if (scrollbarsVisibilityAuto) {\r\n                                if (canScroll.x)\r\n                                    showScrollbarH();\r\n                                else\r\n                                    hideScrollbarH();\r\n\r\n                                if (canScroll.y)\r\n                                    showScrollbarV();\r\n                                else\r\n                                    hideScrollbarV();\r\n                            }\r\n                            else if (scrollbarsVisibilityVisible) {\r\n                                showScrollbarH();\r\n                                showScrollbarV();\r\n                            }\r\n                            else if (scrollbarsVisibilityHidden) {\r\n                                hideScrollbarH();\r\n                                hideScrollbarV();\r\n                            }\r\n                        }\r\n\r\n                        //manage the scrollbars auto hide feature (auto hide them after specific actions)\r\n                        if (scrollbarsAutoHideChanged || ignoreOverlayScrollbarHidingChanged) {\r\n                            if (_scrollbarsAutoHideLeave || _scrollbarsAutoHideMove) {\r\n                                setupHostMouseTouchEvents(true);\r\n                                setupHostMouseTouchEvents();\r\n                            }\r\n                            else {\r\n                                setupHostMouseTouchEvents(true);\r\n                            }\r\n\r\n                            if (_scrollbarsAutoHideNever)\r\n                                refreshScrollbarsAutoHide(true);\r\n                            else\r\n                                refreshScrollbarsAutoHide(false, true);\r\n                        }\r\n\r\n                        //manage scrollbars handle length & offset - don't remove!\r\n                        if (hostSizeChanged || overflowAmount.c || heightAutoChanged || widthAutoChanged || resizeChanged || boxSizingChanged || paddingAbsoluteChanged || ignoreOverlayScrollbarHidingChanged || cssDirectionChanged) {\r\n                            refreshScrollbarHandleLength(true);\r\n                            refreshScrollbarHandleOffset(true);\r\n                            refreshScrollbarHandleLength(false);\r\n                            refreshScrollbarHandleOffset(false);\r\n                        }\r\n\r\n                        //manage interactivity\r\n                        if (scrollbarsClickScrollingChanged)\r\n                            refreshScrollbarsInteractive(true, scrollbarsClickScrolling);\r\n                        if (scrollbarsDragScrollingChanged)\r\n                            refreshScrollbarsInteractive(false, scrollbarsDragScrolling);\r\n\r\n                        //callbacks:\r\n                        if (cssDirectionChanged) {\r\n                            dispatchCallback(\"onDirectionChanged\", {\r\n                                isRTL: _isRTL,\r\n                                dir: cssDirection\r\n                            });\r\n                        }\r\n                        if (hostSizeChanged) {\r\n                            dispatchCallback(\"onHostSizeChanged\", {\r\n                                width: _hostSizeCache.w,\r\n                                height: _hostSizeCache.h\r\n                            });\r\n                        }\r\n                        if (contentSizeChanged) {\r\n                            dispatchCallback(\"onContentSizeChanged\", {\r\n                                width: _contentScrollSizeCache.w,\r\n                                height: _contentScrollSizeCache.h\r\n                            });\r\n                        }\r\n                        if (hasOverflow.c || hideOverflow.c) {\r\n                            dispatchCallback(\"onOverflowChanged\", {\r\n                                x: hasOverflow.x,\r\n                                y: hasOverflow.y,\r\n                                xScrollable: hideOverflow.xs,\r\n                                yScrollable: hideOverflow.ys,\r\n                                clipped: hideOverflow.x || hideOverflow.y\r\n                            });\r\n                        }\r\n                        if (overflowAmount.c) {\r\n                            dispatchCallback(\"onOverflowAmountChanged\", {\r\n                                x: overflowAmount.x,\r\n                                y: overflowAmount.y\r\n                            });\r\n                        }\r\n                    }\r\n\r\n                    //fix body min size\r\n                    if (_isBody && _bodyMinSizeCache && (_hasOverflowCache.c || _bodyMinSizeCache.c)) {\r\n                        //its possible that no min size was measured until now, because the content arrange element was just added now, in this case, measure now the min size.\r\n                        if (!_bodyMinSizeCache.f)\r\n                            bodyMinSizeChanged();\r\n                        if (_nativeScrollbarIsOverlaid.y && _hasOverflowCache.x)\r\n                            _contentElement.css(_strMinMinus + _strWidth, _bodyMinSizeCache.w + _overlayScrollbarDummySize.y);\r\n                        if (_nativeScrollbarIsOverlaid.x && _hasOverflowCache.y)\r\n                            _contentElement.css(_strMinMinus + _strHeight, _bodyMinSizeCache.h + _overlayScrollbarDummySize.x);\r\n                        _bodyMinSizeCache.c = false;\r\n                    }\r\n\r\n                    //freezeResizeObserver(_sizeObserverElement, false);\r\n                    //freezeResizeObserver(_sizeAutoObserverElement, false);\r\n\r\n                    dispatchCallback(\"onUpdated\", { forced: force });\r\n                }\r\n\r\n                \r\n                //==== Options ====//\r\n\r\n                /**\r\n                 * Sets new options but doesn't call the update method.\r\n                 * @param newOptions The object which contains the new options.\r\n                 * @returns {*} A object which contains the changed options.\r\n                 */\r\n                function setOptions(newOptions) {\r\n                    var validatedOpts = _pluginsOptions._validate(newOptions, _pluginsOptions._template, true, _currentOptions)\r\n\r\n                    _currentOptions = extendDeep({}, _currentOptions, validatedOpts._default);\r\n                    _currentPreparedOptions = extendDeep({}, _currentPreparedOptions, validatedOpts._prepared);\r\n                    \r\n                    return validatedOpts._prepared;\r\n                }\r\n\r\n\r\n                //==== Structure ====//\r\n\r\n                /**\r\n                 * Builds or destroys the wrapper and helper DOM elements.\r\n                 * @param destroy Indicates whether the DOM shall be build or destroyed.\r\n                 */\r\n                function setupStructureDOM(destroy) {\r\n                    var adoptAttrs = _currentPreparedOptions.textarea.inheritedAttrs;\r\n                    var adoptAttrsMap = { };\r\n                    var applyAdoptedAttrs = function() {\r\n                        var applyAdoptedAttrsElm = destroy ? _targetElement : _hostElement;\r\n                        each(adoptAttrsMap, function(k, v) {\r\n                            if(type(v) == TYPES.s) {\r\n                                if(k == LEXICON.c)\r\n                                    applyAdoptedAttrsElm.addClass(v);\r\n                                else\r\n                                    applyAdoptedAttrsElm.attr(k, v);\r\n                            }\r\n                        });\r\n                    };\r\n                    var hostElementClassNames = [\r\n                        _classNameHostElement,\r\n                        _classNameHostTextareaElement,\r\n                        _classNameHostResizeDisabled,\r\n                        _classNameHostRTL,\r\n                        _classNameHostScrollbarHorizontalHidden,\r\n                        _classNameHostScrollbarVerticalHidden,\r\n                        _classNameHostTransition,\r\n                        _classNameHostScrolling,\r\n                        _classNameHostOverflow,\r\n                        _classNameHostOverflowX,\r\n                        _classNameHostOverflowY,\r\n                        _classNameThemeNone,\r\n                        _classNameTextareaElement,\r\n                        _classNameTextInherit,\r\n                        _classNameCache].join(_strSpace);\r\n                    adoptAttrs = type(adoptAttrs) == TYPES.s ? adoptAttrs.split(' ') : adoptAttrs;\r\n                    if(type(adoptAttrs) == TYPES.a) {\r\n                        each(adoptAttrs, function(i, v) {\r\n                            if(type(v) == TYPES.s)\r\n                                adoptAttrsMap[v] = destroy ? _hostElement.attr(v) : _targetElement.attr(v);\r\n                        });\r\n                    }\r\n\r\n                    if(!destroy) {\r\n                        if (_isTextarea) {\r\n                            var hostElementCSS = {};\r\n                            var parent = _targetElement.parent();\r\n                            _isTextareaHostGenerated = !(parent.hasClass(_classNameHostTextareaElement) && parent.children()[LEXICON.l] === 1);\r\n\r\n                            if (!_currentPreparedOptions.sizeAutoCapable) {\r\n                                hostElementCSS[_strWidth] = _targetElement.css(_strWidth);\r\n                                hostElementCSS[_strHeight] = _targetElement.css(_strHeight);\r\n                            }\r\n                            if(_isTextareaHostGenerated)\r\n                                _targetElement.wrap(generateDiv(_classNameHostTextareaElement));\r\n\r\n                            _hostElement = _targetElement.parent();\r\n                            _hostElement.css(hostElementCSS)\r\n                                .wrapInner(generateDiv(_classNameContentElement + _strSpace + _classNameTextInherit))\r\n                                .wrapInner(generateDiv(_classNameViewportElement + _strSpace + _classNameTextInherit))\r\n                                .wrapInner(generateDiv(_classNamePaddingElement + _strSpace + _classNameTextInherit));\r\n                            _contentElement = findFirst(_hostElement, _strDot + _classNameContentElement);\r\n                            _viewportElement = findFirst(_hostElement, _strDot + _classNameViewportElement);\r\n                            _paddingElement = findFirst(_hostElement, _strDot + _classNamePaddingElement);\r\n                            _textareaCoverElement = FRAMEWORK(generateDiv(_classNameTextareaCoverElement));\r\n                            _contentElement.prepend(_textareaCoverElement);\r\n\r\n                            addClass(_targetElement, _classNameTextareaElement + _strSpace + _classNameTextInherit);\r\n\r\n                            if(_isTextareaHostGenerated)\r\n                                applyAdoptedAttrs();\r\n                        }\r\n                        else {\r\n                            _hostElement = _targetElement;\r\n                            _hostElement.wrapInner(generateDiv(_classNameContentElement))\r\n                                .wrapInner(generateDiv(_classNameViewportElement))\r\n                                .wrapInner(generateDiv(_classNamePaddingElement));\r\n                            _contentElement = findFirst(_hostElement, _strDot + _classNameContentElement);\r\n                            _viewportElement = findFirst(_hostElement, _strDot + _classNameViewportElement);\r\n                            _paddingElement = findFirst(_hostElement, _strDot + _classNamePaddingElement);\r\n\r\n                            addClass(_targetElement, _classNameHostElement);\r\n                        }\r\n                        \r\n                        if (_nativeScrollbarStyling)\r\n                            addClass(_viewportElement, _classNameViewportNativeScrollbarsInvisible);\r\n                        if(_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y)\r\n                            addClass(_viewportElement, _classNameViewportNativeScrollbarsOverlaid);\r\n                        if (_isBody)\r\n                            addClass(_htmlElement, _classNameHTMLElement);\r\n\r\n                        _sizeObserverElement = FRAMEWORK(generateDiv('os-resize-observer-host'));\r\n                        _hostElement.prepend(_sizeObserverElement);\r\n\r\n                        _sizeObserverElementNative = _sizeObserverElement[0];\r\n                        _hostElementNative = _hostElement[0];\r\n                        _paddingElementNative = _paddingElement[0];\r\n                        _viewportElementNative = _viewportElement[0];\r\n                        _contentElementNative = _contentElement[0];\r\n                    }\r\n                    else {\r\n                        _contentElement.contents()\r\n                            .unwrap()\r\n                            .unwrap()\r\n                            .unwrap();\r\n\r\n                        removeClass(_hostElement, hostElementClassNames);\r\n                        if (_isTextarea) {\r\n                            _targetElement.removeAttr(LEXICON.s);\r\n\r\n                            if(_isTextareaHostGenerated)\r\n                                applyAdoptedAttrs();\r\n\r\n                            removeClass(_targetElement, hostElementClassNames);\r\n                            remove(_textareaCoverElement);\r\n\r\n                            if(_isTextareaHostGenerated) {\r\n                                _targetElement.unwrap();\r\n                                remove(_hostElement);\r\n                            }\r\n                            else {\r\n                                addClass(_hostElement, _classNameHostTextareaElement);\r\n                            }\r\n                        }\r\n                        else {\r\n                            removeClass(_targetElement, _classNameHostElement);\r\n                        }\r\n\r\n                        if (_isBody)\r\n                            removeClass(_htmlElement, _classNameHTMLElement);\r\n\r\n                        remove(_sizeObserverElement);\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Adds or removes all wrapper elements interactivity events.\r\n                 * @param destroy Indicates whether the Events shall be added or removed.\r\n                 */\r\n                function setupStructureEvents(destroy) {\r\n                    var textareaKeyDownRestrictedKeyCodes = [\r\n                        112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123,    //F1 to F12\r\n                        33, 34,                                                   //page up, page down\r\n                        37, 38, 39, 40,                                           //left, up, right, down arrows\r\n                        16, 17, 18, 19, 20, 144                                   //Shift, Ctrl, Alt, Pause, CapsLock, NumLock\r\n                    ];\r\n                    var textareaKeyDownKeyCodesList = [ ];\r\n                    var textareaUpdateIntervalID;\r\n                    var scrollStopDelay = 175;\r\n                    var scrollStopTimeoutId;\r\n                    var strOnOff = destroy ? 'off' : 'on';\r\n                    var updateTextarea;\r\n                    var viewportOnScroll;\r\n\r\n                    if(!destroy && _isTextarea) {\r\n                        _textareaEvents = { };\r\n                        updateTextarea = function(doClearInterval) {\r\n                            textareaUpdate();\r\n                            _base.update(_strAuto);\r\n                            if(doClearInterval)\r\n                                clearInterval(textareaUpdateIntervalID);\r\n                        };\r\n                        _textareaEvents[_strScroll] = function(event) {\r\n                            _targetElement[_strScrollLeft](_rtlScrollBehavior.i && _normalizeRTLCache ? 9999999 : 0);\r\n                            _targetElement[_strScrollTop](0);\r\n                            COMPATIBILITY.prvD(event);\r\n                            COMPATIBILITY.stpP(event);\r\n                            return false;\r\n                        };\r\n                        _textareaEvents['drop'] = function() {\r\n                            setTimeout(function () {\r\n                                if(!_destroyed)\r\n                                    updateTextarea();\r\n                            }, 50);\r\n                        };\r\n                        _textareaEvents['focus'] = function() {\r\n                            _textareaHasFocus = true;\r\n                        };\r\n                        _textareaEvents['focusout'] = function() {\r\n                            _textareaHasFocus = false;\r\n                            textareaKeyDownKeyCodesList = [ ];\r\n                            updateTextarea(true);\r\n                        };\r\n                        if (_msieVersion > 9 || !_autoUpdateRecommended) {\r\n                            _textareaEvents['input'] = function textareaOnInput() {\r\n                                updateTextarea();\r\n                            }\r\n                        }\r\n                        else {\r\n                            _textareaEvents[_strKeyDownEvent] = function textareaOnKeyDown(event) {\r\n                                var keyCode = event.keyCode;\r\n                                if (inArray(keyCode, textareaKeyDownRestrictedKeyCodes) > -1)\r\n                                    return;\r\n                                if (!textareaKeyDownKeyCodesList.length) {\r\n                                    updateTextarea();\r\n                                    textareaUpdateIntervalID = setInterval(updateTextarea, 1000 / 60);\r\n                                }\r\n                                if (inArray(keyCode, textareaKeyDownKeyCodesList) === -1)\r\n                                    textareaKeyDownKeyCodesList.push(keyCode);\r\n                            };\r\n                            _textareaEvents[_strKeyUpEvent] = function(event) {\r\n                                var keyCode = event.keyCode;\r\n                                var index = inArray(keyCode, textareaKeyDownKeyCodesList);\r\n\r\n                                if (inArray(keyCode, textareaKeyDownRestrictedKeyCodes) > -1)\r\n                                    return;\r\n                                if (index > -1)\r\n                                    textareaKeyDownKeyCodesList.splice(index, 1);\r\n                                if (!textareaKeyDownKeyCodesList.length)\r\n                                    updateTextarea(true);\r\n                            };\r\n                        }\r\n                    }\r\n\r\n                    if (_isTextarea) {\r\n                        each(_textareaEvents, function(key, value) {\r\n                            _targetElement[strOnOff](key, value);\r\n                        });\r\n                    }\r\n                    else {\r\n                        _contentElement[strOnOff](_strTransitionEndEvent, function (event) {\r\n                            if (_autoUpdateCache === true)\r\n                                return;\r\n                            event = event.originalEvent || event;\r\n                            if (isSizeAffectingCSSProperty(event.propertyName))\r\n                                _base.update(_strAuto);\r\n                        });\r\n                    }\r\n\r\n                    if(!destroy) {\r\n                        viewportOnScroll = function(event) {\r\n                            if (!_sleeping) {\r\n                                if (scrollStopTimeoutId !== undefined)\r\n                                    clearTimeout(scrollStopTimeoutId);\r\n                                else {\r\n                                    if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n                                        refreshScrollbarsAutoHide(true);\r\n\r\n                                    if (!nativeOverlayScrollbarsAreActive())\r\n                                        addClass(_hostElement, _classNameHostScrolling);\r\n\r\n                                    dispatchCallback(\"onScrollStart\", event);\r\n                                }\r\n\r\n                                //if a scrollbars handle gets dragged, the mousemove event is responsible for refreshing the handle offset\r\n                                //because if CSS scroll-snap is used, the handle offset gets only refreshed on every snap point\r\n                                //this looks laggy & clunky, it looks much better if the offset refreshes with the mousemove\r\n                                if(!_scrollbarsHandlesDefineScrollPos) {\r\n                                    refreshScrollbarHandleOffset(true);\r\n                                    refreshScrollbarHandleOffset(false);\r\n                                }\r\n                                dispatchCallback(\"onScroll\", event);\r\n\r\n                                scrollStopTimeoutId = setTimeout(function () {\r\n                                    if(!_destroyed) {\r\n                                        //OnScrollStop:\r\n                                        clearTimeout(scrollStopTimeoutId);\r\n                                        scrollStopTimeoutId = undefined;\r\n\r\n                                        if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n                                            refreshScrollbarsAutoHide(false);\r\n\r\n                                        if (!nativeOverlayScrollbarsAreActive())\r\n                                            removeClass(_hostElement, _classNameHostScrolling);\r\n\r\n                                        dispatchCallback(\"onScrollStop\", event);\r\n                                    }\r\n                                }, scrollStopDelay);\r\n                            }\r\n                        };\r\n\r\n                        if (_supportPassiveEvents)\r\n                            setupPassiveEventListener(_viewportElement, _strScroll, viewportOnScroll);\r\n                        else\r\n                            _viewportElement.on(_strScroll, viewportOnScroll);\r\n                    }\r\n                }\r\n\r\n\r\n\r\n                //==== Scrollbars ====//\r\n\r\n                /**\r\n                 * Builds or destroys all scrollbar DOM elements (scrollbar, track, handle)\r\n                 * @param destroy Indicates whether the DOM shall be build or destroyed.\r\n                 */\r\n                function setupScrollbarsDOM(destroy) {\r\n                    if(!destroy) {\r\n                        _scrollbarHorizontalElement = FRAMEWORK(generateDiv(_classNameScrollbar + _strSpace + _classNameScrollbarHorizontal));\r\n                        _scrollbarHorizontalTrackElement = FRAMEWORK(generateDiv(_classNameScrollbarTrack));\r\n                        _scrollbarHorizontalHandleElement = FRAMEWORK(generateDiv(_classNameScrollbarHandle));\r\n                        _scrollbarVerticalElement = FRAMEWORK(generateDiv(_classNameScrollbar + _strSpace + _classNameScrollbarVertical));\r\n                        _scrollbarVerticalTrackElement = FRAMEWORK(generateDiv(_classNameScrollbarTrack));\r\n                        _scrollbarVerticalHandleElement = FRAMEWORK(generateDiv(_classNameScrollbarHandle));\r\n\r\n                        _scrollbarHorizontalElement.append(_scrollbarHorizontalTrackElement);\r\n                        _scrollbarHorizontalTrackElement.append(_scrollbarHorizontalHandleElement);\r\n                        _scrollbarVerticalElement.append(_scrollbarVerticalTrackElement);\r\n                        _scrollbarVerticalTrackElement.append(_scrollbarVerticalHandleElement);\r\n\r\n                        _paddingElement.after(_scrollbarVerticalElement);\r\n                        _paddingElement.after(_scrollbarHorizontalElement);\r\n                    }\r\n                    else {\r\n                        remove(_scrollbarHorizontalElement);\r\n                        remove(_scrollbarVerticalElement);\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Initializes all scrollbar interactivity events. (track and handle dragging, clicking, scrolling)\r\n                 * @param isHorizontal True if the target scrollbar is the horizontal scrollbar, false if the target scrollbar is the vertical scrollbar.\r\n                 */\r\n                function setupScrollbarEvents(isHorizontal) {\r\n                    var scrollbarVars = getScrollbarVars(isHorizontal);\r\n                    var scrollbarVarsInfo = scrollbarVars._info;\r\n                    var insideIFrame = _windowElementNative.top !== _windowElementNative;\r\n                    var xy = scrollbarVars._x_y;\r\n                    var XY = scrollbarVars._X_Y;\r\n                    var scroll = _strScroll + scrollbarVars._Left_Top;\r\n                    var strActive = 'active';\r\n                    var strSnapHandle = 'snapHandle';\r\n                    var scrollDurationFactor = 1;\r\n                    var increaseDecreaseScrollAmountKeyCodes = [ 16, 17 ]; //shift, ctrl\r\n                    var trackTimeout;\r\n                    var mouseDownScroll;\r\n                    var mouseDownOffset;\r\n                    var mouseDownInvertedScale;\r\n                    \r\n                    function setupEvent(element, eventNames, listener) {\r\n                        var collected = type(eventNames) == TYPES.a && type(listener) == TYPES.a;\r\n                        var i = 0;\r\n                        \r\n                        if(collected) {\r\n                            for (; i < eventNames[LEXICON.l]; i++)\r\n                                setupEvent(element, eventNames[i], listener[i]);\r\n                        }\r\n                        else {\r\n                            if(_supportPassiveEvents)\r\n                                setupPassiveEventListener(element, eventNames, listener, false, true);\r\n                            else\r\n                                element.on(eventNames, listener);\r\n                        }\r\n                    }\r\n                    function getPointerPosition(event) {\r\n                        return _msieVersion && insideIFrame ? event['screen' + XY] : COMPATIBILITY.page(event)[xy]; //use screen coordinates in EDGE & IE because the page values are incorrect in frames.\r\n                    }\r\n                    function getPreparedScrollbarsOption(name) {\r\n                        return _currentPreparedOptions.scrollbars[name];\r\n                    }\r\n                    function increaseTrackScrollAmount() {\r\n                        scrollDurationFactor = 0.5;\r\n                    }\r\n                    function decreaseTrackScrollAmount() {\r\n                        scrollDurationFactor = 1;\r\n                    }\r\n                    function documentKeyDown(event) {\r\n                        if (inArray(event.keyCode, increaseDecreaseScrollAmountKeyCodes) > -1)\r\n                            increaseTrackScrollAmount();\r\n                    }\r\n                    function documentKeyUp(event) {\r\n                        if (inArray(event.keyCode, increaseDecreaseScrollAmountKeyCodes) > -1)\r\n                            decreaseTrackScrollAmount();\r\n                    }\r\n                    function onMouseTouchDownContinue(event) {\r\n                        var originalEvent = event.originalEvent || event;\r\n                        var isTouchEvent = originalEvent.touches !== undefined;\r\n                        return _sleeping || _destroyed || nativeOverlayScrollbarsAreActive() || !_scrollbarsDragScrollingCache || (isTouchEvent && !getPreparedScrollbarsOption('touchSupport')) ? false : COMPATIBILITY.mBtn(event) === 1 || isTouchEvent;\r\n                    }\r\n                    function documentDragMove(event) {\r\n                        if(onMouseTouchDownContinue(event)) {\r\n                            var trackLength = scrollbarVarsInfo._trackLength;\r\n                            var handleLength = scrollbarVarsInfo._handleLength;\r\n                            var scrollRange = scrollbarVarsInfo._maxScroll;\r\n                            var scrollRaw = (getPointerPosition(event) - mouseDownOffset) * mouseDownInvertedScale;\r\n                            var scrollDeltaPercent = scrollRaw / (trackLength - handleLength);\r\n                            var scrollDelta = (scrollRange * scrollDeltaPercent);\r\n                            scrollDelta = isFinite(scrollDelta) ? scrollDelta : 0;\r\n                            if (_isRTL && isHorizontal && !_rtlScrollBehavior.i)\r\n                                scrollDelta *= -1;\r\n\r\n                            _viewportElement[scroll](MATH.round(mouseDownScroll + scrollDelta));\r\n\r\n                            if(_scrollbarsHandlesDefineScrollPos)\r\n                                refreshScrollbarHandleOffset(isHorizontal, mouseDownScroll + scrollDelta);\r\n\r\n                            if (!_supportPassiveEvents)\r\n                                COMPATIBILITY.prvD(event);\r\n                        }\r\n                        else\r\n                            documentMouseTouchUp(event);\r\n                    }\r\n                    function documentMouseTouchUp(event) {\r\n                        event = event || event.originalEvent;\r\n\r\n                        _documentElement.off(_strMouseTouchMoveEvent, documentDragMove)\r\n                            .off(_strMouseTouchUpEvent, documentMouseTouchUp)\r\n                            .off(_strKeyDownEvent, documentKeyDown)\r\n                            .off(_strKeyUpEvent, documentKeyUp)\r\n                            .off(_strSelectStartEvent, documentOnSelectStart);\r\n\r\n                        if(_scrollbarsHandlesDefineScrollPos)\r\n                            refreshScrollbarHandleOffset(isHorizontal, true);\r\n\r\n                        _scrollbarsHandlesDefineScrollPos = false;\r\n                        removeClass(_bodyElement, _classNameDragging);\r\n                        removeClass(scrollbarVars._handle, strActive);\r\n                        removeClass(scrollbarVars._track, strActive);\r\n                        removeClass(scrollbarVars._scrollbar, strActive);\r\n\r\n                        mouseDownScroll = undefined;\r\n                        mouseDownOffset = undefined;\r\n                        mouseDownInvertedScale = 1;\r\n\r\n                        decreaseTrackScrollAmount();\r\n\r\n                        if (trackTimeout !== undefined) {\r\n                            _base.scrollStop();\r\n                            clearTimeout(trackTimeout);\r\n                            trackTimeout = undefined;\r\n                        }\r\n\r\n                        if(event) {\r\n                            var rect = _hostElementNative.getBoundingClientRect();\r\n                            var mouseInsideHost = event.clientX >= rect.left && event.clientX <= rect.right && event.clientY >= rect.top && event.clientY <= rect.bottom;\r\n\r\n                            //if mouse is outside host element\r\n                            if (!mouseInsideHost)\r\n                                hostOnMouseLeave();\r\n\r\n                            if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n                                refreshScrollbarsAutoHide(false);\r\n                        }\r\n                    }\r\n                    function onHandleMouseTouchDown(event) {\r\n                        if (onMouseTouchDownContinue(event))\r\n                            onHandleMouseTouchDownAction(event);\r\n                    }\r\n                    function onHandleMouseTouchDownAction(event) {\r\n                        mouseDownScroll = _viewportElement[scroll]();\r\n                        mouseDownScroll = isNaN(mouseDownScroll) ? 0 : mouseDownScroll;\r\n                        if (_isRTL && isHorizontal && !_rtlScrollBehavior.n || !_isRTL)\r\n                            mouseDownScroll = mouseDownScroll < 0 ? 0 : mouseDownScroll;\r\n\r\n                        mouseDownInvertedScale = getHostElementInvertedScale()[xy];\r\n                        mouseDownOffset = getPointerPosition(event);\r\n\r\n                        _scrollbarsHandlesDefineScrollPos = !getPreparedScrollbarsOption(strSnapHandle);\r\n                        addClass(_bodyElement, _classNameDragging);\r\n                        addClass(scrollbarVars._handle, strActive);\r\n                        addClass(scrollbarVars._scrollbar, strActive);\r\n\r\n                        _documentElement.on(_strMouseTouchMoveEvent, documentDragMove)\r\n                            .on(_strMouseTouchUpEvent, documentMouseTouchUp)\r\n                            .on(_strSelectStartEvent, documentOnSelectStart);\r\n\r\n                        if(_msieVersion || !_documentMixed)\r\n                            COMPATIBILITY.prvD(event);\r\n                        COMPATIBILITY.stpP(event);\r\n                    }\r\n                    function onTrackMouseTouchDown(event) {\r\n                        if (onMouseTouchDownContinue(event)) {\r\n                            var scrollDistance = MATH.round(_viewportSize[scrollbarVars._w_h]);\r\n                            var trackOffset = scrollbarVars._track.offset()[scrollbarVars._left_top];\r\n                            var ctrlKey = event.ctrlKey;\r\n                            var instantScroll = event.shiftKey;\r\n                            var instantScrollTransition = instantScroll && ctrlKey;\r\n                            var isFirstIteration = true;\r\n                            var easing = 'linear';\r\n                            var decreaseScroll;\r\n                            var finishedCondition;\r\n                            var scrollActionFinsished = function(transition) {\r\n                                if(_scrollbarsHandlesDefineScrollPos)\r\n                                    refreshScrollbarHandleOffset(isHorizontal, transition);\r\n                            };\r\n                            var scrollActionInstantFinished = function() {\r\n                                scrollActionFinsished();\r\n                                onHandleMouseTouchDownAction(event);\r\n                            };\r\n                            var scrollAction = function () {\r\n                                if(!_destroyed) {\r\n                                    var mouseOffset = (mouseDownOffset - trackOffset) * mouseDownInvertedScale;\r\n                                    var handleOffset = scrollbarVarsInfo._handleOffset;\r\n                                    var trackLength = scrollbarVarsInfo._trackLength;\r\n                                    var handleLength = scrollbarVarsInfo._handleLength;\r\n                                    var scrollRange = scrollbarVarsInfo._maxScroll;\r\n                                    var currScroll = scrollbarVarsInfo._currentScroll;\r\n                                    var scrollDuration = 270 * scrollDurationFactor;\r\n                                    var timeoutDelay = isFirstIteration ? MATH.max(400, scrollDuration) : scrollDuration;\r\n                                    var instantScrollPosition = scrollRange * ((mouseOffset - (handleLength / 2)) / (trackLength - handleLength)); // 100% * positionPercent\r\n                                    var rtlIsNormal = _isRTL && isHorizontal && ((!_rtlScrollBehavior.i && !_rtlScrollBehavior.n) || _normalizeRTLCache);\r\n                                    var decreaseScrollCondition = rtlIsNormal ? handleOffset < mouseOffset : handleOffset > mouseOffset;\r\n                                    var scrollObj = { };\r\n                                    var animationObj = {\r\n                                        easing : easing,\r\n                                        step : function(now) {\r\n                                            if(_scrollbarsHandlesDefineScrollPos) {\r\n                                                _viewportElement[scroll](now); //https://github.com/jquery/jquery/issues/4340\r\n                                                refreshScrollbarHandleOffset(isHorizontal, now);\r\n                                            }\r\n                                        }\r\n                                    };\r\n                                    instantScrollPosition = isFinite(instantScrollPosition) ? instantScrollPosition : 0;\r\n                                    instantScrollPosition = _isRTL && isHorizontal && !_rtlScrollBehavior.i ? (scrollRange - instantScrollPosition) : instantScrollPosition;\r\n\r\n                                    //_base.scrollStop();\r\n\r\n                                    if(instantScroll) {\r\n                                        _viewportElement[scroll](instantScrollPosition); //scroll instantly to new position\r\n                                        if(instantScrollTransition) {\r\n                                            //get the scroll position after instant scroll (in case CSS Snap Points are used) to get the correct snapped scroll position\r\n                                            //and the animation stops at the correct point\r\n                                            instantScrollPosition = _viewportElement[scroll]();\r\n                                            //scroll back to the position before instant scrolling so animation can be performed\r\n                                            _viewportElement[scroll](currScroll);\r\n\r\n                                            instantScrollPosition = rtlIsNormal && _rtlScrollBehavior.i ? (scrollRange - instantScrollPosition) : instantScrollPosition;\r\n                                            instantScrollPosition = rtlIsNormal && _rtlScrollBehavior.n ? -instantScrollPosition : instantScrollPosition;\r\n\r\n                                            scrollObj[xy] = instantScrollPosition;\r\n                                            _base.scroll(scrollObj, extendDeep(animationObj, {\r\n                                                duration : 130,\r\n                                                complete : scrollActionInstantFinished\r\n                                            }));\r\n                                        }\r\n                                        else\r\n                                            scrollActionInstantFinished();\r\n                                    }\r\n                                    else {\r\n                                        decreaseScroll = isFirstIteration ? decreaseScrollCondition : decreaseScroll;\r\n                                        finishedCondition = rtlIsNormal\r\n                                            ? (decreaseScroll ? handleOffset + handleLength >= mouseOffset : handleOffset <= mouseOffset)\r\n                                            : (decreaseScroll ? handleOffset <= mouseOffset : handleOffset + handleLength >= mouseOffset);\r\n\r\n                                        if (finishedCondition) {\r\n                                            clearTimeout(trackTimeout);\r\n                                            _base.scrollStop();\r\n                                            trackTimeout = undefined;\r\n                                            scrollActionFinsished(true);\r\n                                        }\r\n                                        else {\r\n                                            trackTimeout = setTimeout(scrollAction, timeoutDelay);\r\n\r\n                                            scrollObj[xy] = (decreaseScroll ? '-=' : '+=') + scrollDistance;\r\n                                            _base.scroll(scrollObj, extendDeep(animationObj, {\r\n                                                duration: scrollDuration\r\n                                            }));\r\n                                        }\r\n                                        isFirstIteration = false;\r\n                                    }\r\n                                }\r\n                            };\r\n                            if (ctrlKey)\r\n                                increaseTrackScrollAmount();\r\n\r\n                            mouseDownInvertedScale = getHostElementInvertedScale()[xy];\r\n                            mouseDownOffset = COMPATIBILITY.page(event)[xy];\r\n\r\n                            _scrollbarsHandlesDefineScrollPos = !getPreparedScrollbarsOption(strSnapHandle);\r\n                            addClass(_bodyElement, _classNameDragging);\r\n                            addClass(scrollbarVars._track, strActive);\r\n                            addClass(scrollbarVars._scrollbar, strActive);\r\n\r\n                            _documentElement.on(_strMouseTouchUpEvent, documentMouseTouchUp)\r\n                                .on(_strKeyDownEvent, documentKeyDown)\r\n                                .on(_strKeyUpEvent, documentKeyUp)\r\n                                .on(_strSelectStartEvent, documentOnSelectStart);\r\n\r\n                            scrollAction();\r\n                            COMPATIBILITY.prvD(event);\r\n                            COMPATIBILITY.stpP(event);\r\n                        }\r\n                    }\r\n                    function onTrackMouseTouchEnter(event) {\r\n                        //make sure both scrollbars will stay visible if one scrollbar is hovered if autoHide is \"scroll\" or \"move\".\r\n                        _scrollbarsHandleHovered = true;\r\n                        if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n                            refreshScrollbarsAutoHide(true);\r\n                    }\r\n                    function onTrackMouseTouchLeave(event) {\r\n                        _scrollbarsHandleHovered = false;\r\n                        if (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove)\r\n                            refreshScrollbarsAutoHide(false);\r\n                    }\r\n                    function onScrollbarMouseTouchDown(event) {\r\n                        COMPATIBILITY.stpP(event);\r\n                    }\r\n                    \r\n                    setupEvent(scrollbarVars._handle, \r\n                        _strMouseTouchDownEvent, \r\n                        onHandleMouseTouchDown);\r\n                    setupEvent(scrollbarVars._track,\r\n                        [_strMouseTouchDownEvent, _strMouseTouchEnter, _strMouseTouchLeave], \r\n                        [onTrackMouseTouchDown, onTrackMouseTouchEnter, onTrackMouseTouchLeave]);\r\n                    setupEvent(scrollbarVars._scrollbar, \r\n                        _strMouseTouchDownEvent, \r\n                        onScrollbarMouseTouchDown);\r\n\r\n                    if (_supportTransition) {\r\n                        scrollbarVars._scrollbar.on(_strTransitionEndEvent, function(event) {\r\n                            if (event.target !== scrollbarVars._scrollbar[0])\r\n                                return;\r\n                            refreshScrollbarHandleLength(isHorizontal);\r\n                            refreshScrollbarHandleOffset(isHorizontal);\r\n                        });\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Shows or hides the given scrollbar and applied a class name which indicates if the scrollbar is scrollable or not.\r\n                 * @param isHorizontal True if the horizontal scrollbar is the target, false if the vertical scrollbar is the target.\r\n                 * @param shallBeVisible True if the scrollbar shall be shown, false if hidden.\r\n                 * @param canScroll True if the scrollbar is scrollable, false otherwise.\r\n                 */\r\n                function refreshScrollbarAppearance(isHorizontal, shallBeVisible, canScroll) {\r\n                    var scrollbarClassName = isHorizontal ? _classNameHostScrollbarHorizontalHidden : _classNameHostScrollbarVerticalHidden;\r\n                    var scrollbarElement = isHorizontal ? _scrollbarHorizontalElement : _scrollbarVerticalElement;\r\n\r\n                    if (shallBeVisible)\r\n                        removeClass(_hostElement, scrollbarClassName);\r\n                    else\r\n                        addClass(_hostElement, scrollbarClassName);\r\n\r\n                    if (canScroll)\r\n                        removeClass(scrollbarElement, _classNameScrollbarUnusable);\r\n                    else\r\n                        addClass(scrollbarElement, _classNameScrollbarUnusable);\r\n                }\r\n\r\n                /**\r\n                 * Autoshows / autohides both scrollbars with.\r\n                 * @param shallBeVisible True if the scrollbars shall be autoshown (only the case if they are hidden by a autohide), false if the shall be auto hidden.\r\n                 * @param delayfree True if the scrollbars shall be hidden without a delay, false or undefined otherwise.\r\n                 */\r\n                function refreshScrollbarsAutoHide(shallBeVisible, delayfree) {\r\n                    clearTimeout(_scrollbarsAutoHideTimeoutId);\r\n                    if (shallBeVisible) {\r\n                        //if(_hasOverflowCache.x && _hideOverflowCache.xs)\r\n                        removeClass(_scrollbarHorizontalElement, _classNameScrollbarAutoHidden);\r\n                        //if(_hasOverflowCache.y && _hideOverflowCache.ys)\r\n                        removeClass(_scrollbarVerticalElement, _classNameScrollbarAutoHidden);\r\n                    }\r\n                    else {\r\n                        var anyActive;\r\n                        var strActive = 'active';\r\n                        var hide = function () {\r\n                            if (!_scrollbarsHandleHovered && !_destroyed) {\r\n                                anyActive = _scrollbarHorizontalHandleElement.hasClass(strActive) || _scrollbarVerticalHandleElement.hasClass(strActive);\r\n                                if (!anyActive && (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove || _scrollbarsAutoHideLeave))\r\n                                    addClass(_scrollbarHorizontalElement, _classNameScrollbarAutoHidden);\r\n                                if (!anyActive && (_scrollbarsAutoHideScroll || _scrollbarsAutoHideMove || _scrollbarsAutoHideLeave))\r\n                                    addClass(_scrollbarVerticalElement, _classNameScrollbarAutoHidden);\r\n                            }\r\n                        };\r\n                        if (_scrollbarsAutoHideDelay > 0 && delayfree !== true)\r\n                            _scrollbarsAutoHideTimeoutId = setTimeout(hide, _scrollbarsAutoHideDelay);\r\n                        else\r\n                            hide();\r\n                    }\r\n                }\r\n\r\n                /**\r\n                 * Refreshes the handle length of the given scrollbar.\r\n                 * @param isHorizontal True if the horizontal scrollbar handle shall be refreshed, false if the vertical one shall be refreshed.\r\n                 */\r\n                function refreshScrollbarHandleLength(isHorizontal) {\r\n                    var handleCSS = {};\r\n                    var scrollbarVars = getScrollbarVars(isHorizontal);\r\n                    var scrollbarVarsInfo = scrollbarVars._info;\r\n                    var digit = 1000000;\r\n                    //get and apply intended handle length\r\n                    var handleRatio = MATH.min(1, (_hostSizeCache[scrollbarVars._w_h] - (_paddingAbsoluteCache ? (isHorizontal ? _paddingX : _paddingY) : 0)) / _contentScrollSizeCache[scrollbarVars._w_h]);\r\n                    handleCSS[scrollbarVars._width_height] = (MATH.floor(handleRatio * 100 * digit) / digit) + \"%\"; //the last * digit / digit is for flooring to the 4th digit\r\n\r\n                    if (!nativeOverlayScrollbarsAreActive())\r\n                        scrollbarVars._handle.css(handleCSS);\r\n\r\n                    //measure the handle length to respect min & max length\r\n                    scrollbarVarsInfo._handleLength = scrollbarVars._handle[0]['offset' + scrollbarVars._Width_Height];\r\n                    scrollbarVarsInfo._handleLengthRatio = handleRatio;\r\n                }\r\n\r\n                /**\r\n                 * Refreshes the handle offset of the given scrollbar.\r\n                 * @param isHorizontal True if the horizontal scrollbar handle shall be refreshed, false if the vertical one shall be refreshed.\r\n                 * @param scrollOrTransition The scroll position of the given scrollbar axis to which the handle shall be moved or a boolean which indicates whether a transition shall be applied. If undefined or boolean if the current scroll-offset is taken. (if isHorizontal ? scrollLeft : scrollTop)\r\n                 */\r\n                function refreshScrollbarHandleOffset(isHorizontal, scrollOrTransition) {\r\n                    var transition = type(scrollOrTransition) == TYPES.b;\r\n                    var transitionDuration = 250;\r\n                    var isRTLisHorizontal = _isRTL && isHorizontal;\r\n                    var scrollbarVars = getScrollbarVars(isHorizontal);\r\n                    var scrollbarVarsInfo = scrollbarVars._info;\r\n                    var strTranslateBrace = 'translate(';\r\n                    var strTransform = VENDORS._cssProperty('transform');\r\n                    var strTransition = VENDORS._cssProperty('transition');\r\n                    var nativeScroll = isHorizontal ? _viewportElement[_strScrollLeft]() : _viewportElement[_strScrollTop]();\r\n                    var currentScroll = scrollOrTransition === undefined || transition ? nativeScroll : scrollOrTransition;\r\n\r\n                    //measure the handle length to respect min & max length\r\n                    var handleLength = scrollbarVarsInfo._handleLength;\r\n                    var trackLength = scrollbarVars._track[0]['offset' + scrollbarVars._Width_Height];\r\n                    var handleTrackDiff = trackLength - handleLength;\r\n                    var handleCSS = {};\r\n                    var transformOffset;\r\n                    var translateValue;\r\n\r\n                    //DONT use the variable '_contentScrollSizeCache[scrollbarVars._w_h]' instead of '_viewportElement[0]['scroll' + scrollbarVars._Width_Height]'\r\n                    // because its a bit behind during the small delay when content size updates\r\n                    //(delay = mutationObserverContentLag, if its 0 then this var could be used)\r\n                    var maxScroll = (_viewportElementNative[_strScroll + scrollbarVars._Width_Height] - _viewportElementNative['client' + scrollbarVars._Width_Height]) * (_rtlScrollBehavior.n && isRTLisHorizontal ? -1 : 1); //* -1 if rtl scroll max is negative\r\n                    var getScrollRatio = function(base) {\r\n                        return isNaN(base / maxScroll) ? 0 : MATH.max(0, MATH.min(1, base / maxScroll));\r\n                    };\r\n                    var getHandleOffset = function(scrollRatio) {\r\n                        var offset = handleTrackDiff * scrollRatio;\r\n                        offset = isNaN(offset) ? 0 : offset;\r\n                        offset = (isRTLisHorizontal && !_rtlScrollBehavior.i) ? (trackLength - handleLength - offset) : offset;\r\n                        offset = MATH.max(0, offset);\r\n                        return offset;\r\n                    };\r\n                    var scrollRatio = getScrollRatio(nativeScroll);\r\n                    var unsnappedScrollRatio = getScrollRatio(currentScroll);\r\n                    var handleOffset = getHandleOffset(unsnappedScrollRatio);\r\n                    var snappedHandleOffset = getHandleOffset(scrollRatio);\r\n\r\n                    scrollbarVarsInfo._maxScroll = maxScroll;\r\n                    scrollbarVarsInfo._currentScroll = nativeScroll;\r\n                    scrollbarVarsInfo._currentScrollRatio = scrollRatio;\r\n\r\n                    if (_supportTransform) {\r\n                        transformOffset = isRTLisHorizontal ? -(trackLength - handleLength - handleOffset) : handleOffset; //in px\r\n                        //transformOffset = (transformOffset / trackLength * 100) * (trackLength / handleLength); //in %\r\n                        translateValue = isHorizontal ? strTranslateBrace + transformOffset + 'px, 0)' : strTranslateBrace + '0, ' + transformOffset + 'px)';\r\n\r\n                        handleCSS[strTransform] = translateValue;\r\n\r\n                        //apply or clear up transition\r\n                        if(_supportTransition)\r\n                            handleCSS[strTransition] = transition && MATH.abs(handleOffset - scrollbarVarsInfo._handleOffset) > 1 ? getCSSTransitionString(scrollbarVars._handle) + ', ' +  (strTransform + _strSpace + transitionDuration + 'ms') : _strEmpty;\r\n                    }\r\n                    else\r\n                        handleCSS[scrollbarVars._left_top] = handleOffset;\r\n\r\n\r\n                    //only apply css if offset has changed and overflow exists.\r\n                    if (!nativeOverlayScrollbarsAreActive()) {\r\n                        scrollbarVars._handle.css(handleCSS);\r\n\r\n                        //clear up transition\r\n                        if(_supportTransform && _supportTransition && transition) {\r\n                            scrollbarVars._handle.one(_strTransitionEndEvent, function() {\r\n                                if(!_destroyed)\r\n                                    scrollbarVars._handle.css(strTransition, _strEmpty);\r\n                            });\r\n                        }\r\n                    }\r\n\r\n                    scrollbarVarsInfo._handleOffset = handleOffset;\r\n                    scrollbarVarsInfo._snappedHandleOffset = snappedHandleOffset;\r\n                    scrollbarVarsInfo._trackLength = trackLength;\r\n                }\r\n\r\n                /**\r\n                 * Refreshes the interactivity of the given scrollbar element.\r\n                 * @param isTrack True if the track element is the target, false if the handle element is the target.\r\n                 * @param value True for interactivity false for no interactivity.\r\n                 */\r\n                function refreshScrollbarsInteractive(isTrack, value) {\r\n                    var action = value ? 'removeClass' : 'addClass';\r\n                    var element1 = isTrack ? _scrollbarHorizontalTrackElement : _scrollbarHorizontalHandleElement;\r\n                    var element2 = isTrack ? _scrollbarVerticalTrackElement : _scrollbarVerticalHandleElement;\r\n                    var className = isTrack ? _classNameScrollbarTrackOff : _classNameScrollbarHandleOff;\r\n\r\n                    element1[action](className);\r\n                    element2[action](className);\r\n                }\r\n\r\n                /**\r\n                 * Returns a object which is used for fast access for specific variables.\r\n                 * @param isHorizontal True if the horizontal scrollbar vars shall be accessed, false if the vertical scrollbar vars shall be accessed.\r\n                 * @returns {{wh: string, WH: string, lt: string, _wh: string, _lt: string, t: *, h: *, c: {}, s: *}}\r\n                 */\r\n                function getScrollbarVars(isHorizontal) {\r\n                    return {\r\n                        _width_height: isHorizontal ? _strWidth : _strHeight,\r\n                        _Width_Height: isHorizontal ? 'Width' : 'Height',\r\n                        _left_top: isHorizontal ? _strLeft : _strTop,\r\n                        _Left_Top: isHorizontal ? 'Left' : 'Top',\r\n                        _x_y: isHorizontal ? _strX : _strY,\r\n                        _X_Y: isHorizontal ? 'X' : 'Y',\r\n                        _w_h: isHorizontal ? 'w' : 'h',\r\n                        _l_t: isHorizontal ? 'l' : 't',\r\n                        _track: isHorizontal ? _scrollbarHorizontalTrackElement : _scrollbarVerticalTrackElement,\r\n                        _handle: isHorizontal ? _scrollbarHorizontalHandleElement : _scrollbarVerticalHandleElement,\r\n                        _scrollbar: isHorizontal ? _scrollbarHorizontalElement : _scrollbarVerticalElement,\r\n                        _info: isHorizontal ? _scrollHorizontalInfo : _scrollVerticalInfo\r\n                    };\r\n                }\r\n\r\n\r\n                //==== Scrollbar Corner ====//\r\n\r\n                /**\r\n                 * Builds or destroys the scrollbar corner DOM element.\r\n                 * @param destroy Indicates whether the DOM shall be build or destroyed.\r\n                 */\r\n                function setupScrollbarCornerDOM(destroy) {\r\n                    if(!destroy) {\r\n                         _scrollbarCornerElement = FRAMEWORK(generateDiv(_classNameScrollbarCorner));\r\n                        _hostElement.append(_scrollbarCornerElement);\r\n                    }\r\n                    else {\r\n                        remove(_scrollbarCornerElement);\r\n                    }\r\n                 }\r\n\r\n                /**\r\n                 * Initializes all scrollbar corner interactivity events.\r\n                 */\r\n                function setupScrollbarCornerEvents() {\r\n                    var insideIFrame = _windowElementNative.top !== _windowElementNative;\r\n                    var mouseDownPosition = { };\r\n                    var mouseDownSize = { };\r\n                    var mouseDownInvertedScale = { };\r\n\r\n                    _resizeOnMouseTouchDown = function(event) {\r\n                        if (onMouseTouchDownContinue(event)) {\r\n                            if (_mutationObserversConnected) {\r\n                                _resizeReconnectMutationObserver = true;\r\n                                disconnectMutationObservers();\r\n                            }\r\n\r\n                            mouseDownPosition = getCoordinates(event);\r\n\r\n                            mouseDownSize.w = _hostElementNative[LEXICON.oW] - (!_isBorderBox ? _paddingX : 0);\r\n                            mouseDownSize.h = _hostElementNative[LEXICON.oH] - (!_isBorderBox ? _paddingY : 0);\r\n                            mouseDownInvertedScale = getHostElementInvertedScale();\r\n\r\n                            _documentElement.on(_strSelectStartEvent, documentOnSelectStart)\r\n                                .on(_strMouseTouchMoveEvent, documentDragMove)\r\n                                .on(_strMouseTouchUpEvent, documentMouseTouchUp);\r\n\r\n                            addClass(_bodyElement, _classNameDragging);\r\n                            if (_scrollbarCornerElement.setCapture)\r\n                                _scrollbarCornerElement.setCapture();\r\n\r\n                            COMPATIBILITY.prvD(event);\r\n                            COMPATIBILITY.stpP(event);\r\n                        }\r\n                    };\r\n                    function documentDragMove(event) {\r\n                        if (onMouseTouchDownContinue(event)) {\r\n                            var pageOffset = getCoordinates(event);\r\n                            var hostElementCSS = { };\r\n                            if (_resizeHorizontal || _resizeBoth)\r\n                                hostElementCSS[_strWidth] = (mouseDownSize.w + (pageOffset.x - mouseDownPosition.x) * mouseDownInvertedScale.x);\r\n                            if (_resizeVertical || _resizeBoth)\r\n                                hostElementCSS[_strHeight] = (mouseDownSize.h + (pageOffset.y - mouseDownPosition.y) * mouseDownInvertedScale.y);\r\n                            _hostElement.css(hostElementCSS);\r\n                            COMPATIBILITY.stpP(event);\r\n                        }\r\n                        else {\r\n                            documentMouseTouchUp(event);\r\n                        }\r\n                    }\r\n                    function documentMouseTouchUp(event) {\r\n                        var eventIsTrusted = event !== undefined;\r\n\r\n                        _documentElement.off(_strSelectStartEvent, documentOnSelectStart)\r\n                            .off(_strMouseTouchMoveEvent, documentDragMove)\r\n                            .off(_strMouseTouchUpEvent, documentMouseTouchUp);\r\n\r\n                        removeClass(_bodyElement, _classNameDragging);\r\n                        if (_scrollbarCornerElement.releaseCapture)\r\n                            _scrollbarCornerElement.releaseCapture();\r\n\r\n                        if (eventIsTrusted) {\r\n                            if (_resizeReconnectMutationObserver)\r\n                                connectMutationObservers();\r\n                            _base.update(_strAuto);\r\n                        }\r\n                        _resizeReconnectMutationObserver = false;\r\n                    }\r\n                    function onMouseTouchDownContinue(event) {\r\n                        var originalEvent = event.originalEvent || event;\r\n                        var isTouchEvent = originalEvent.touches !== undefined;\r\n                        return _sleeping || _destroyed ? false : COMPATIBILITY.mBtn(event) === 1 || isTouchEvent;\r\n                    }\r\n                    function getCoordinates(event) {\r\n                        return _msieVersion && insideIFrame ? { x : event.screenX , y : event.screenY } : COMPATIBILITY.page(event);\r\n                    }\r\n                }\r\n\r\n\r\n                //==== Utils ====//\r\n\r\n                /**\r\n                 * Calls the callback with the given name. The Context of this callback is always _base (this).\r\n                 * @param name The name of the target which shall be called.\r\n                 * @param args The args with which the callback shall be called.\r\n                 */\r\n                function dispatchCallback(name, args) {\r\n                    if(_initialized) {\r\n                        var callback = _currentPreparedOptions.callbacks[name];\r\n                        var extensionOnName = name;\r\n                        var ext;\r\n\r\n                        if(extensionOnName.substr(0, 2) === 'on')\r\n                            extensionOnName = extensionOnName.substr(2, 1).toLowerCase() + extensionOnName.substr(3);\r\n\r\n                        if(type(callback) == TYPES.f)\r\n                            callback.call(_base, args);\r\n\r\n                        each(_extensions, function() {\r\n                            ext = this;\r\n                            if(type(ext.on) == TYPES.f)\r\n                                ext.on(extensionOnName, args);\r\n                        });\r\n                    }\r\n                    else if(!_destroyed)\r\n                        _callbacksInitQeueue.push({ n : name, a : args });\r\n                }\r\n\r\n                /**\r\n                 * Sets the \"top, right, bottom, left\" properties, with a given prefix, of the given css object.\r\n                 * @param targetCSSObject The css object to which the values shall be applied.\r\n                 * @param prefix The prefix of the \"top, right, bottom, left\" css properties. (example: 'padding-' is a valid prefix)\r\n                 * @param values A array of values which shall be applied to the \"top, right, bottom, left\" -properties. The array order is [top, right, bottom, left].\r\n                 * If this argument is undefined the value '' (empty string) will be applied to all properties.\r\n                 */\r\n                function setTopRightBottomLeft(targetCSSObject, prefix, values) {\r\n                    if (values === undefined)\r\n                        values = [_strEmpty, _strEmpty, _strEmpty, _strEmpty];\r\n\r\n                    targetCSSObject[prefix + _strTop] = values[0];\r\n                    targetCSSObject[prefix + _strRight] = values[1];\r\n                    targetCSSObject[prefix + _strBottom] = values[2];\r\n                    targetCSSObject[prefix + _strLeft] = values[3];\r\n                }\r\n\r\n                /**\r\n                 * Returns the computed CSS transition string from the given element.\r\n                 * @param element The element from which the transition string shall be returned.\r\n                 * @returns {string} The CSS transition string from the given element.\r\n                 */\r\n                function getCSSTransitionString(element) {\r\n                    var transitionStr = VENDORS._cssProperty('transition');\r\n                    var assembledValue = element.css(transitionStr);\r\n                    if(assembledValue)\r\n                        return assembledValue;\r\n                    var regExpString = '\\\\s*(' + '([^,(]+(\\\\(.+?\\\\))?)+' + ')[\\\\s,]*';\r\n                    var regExpMain = new RegExp(regExpString);\r\n                    var regExpValidate = new RegExp('^(' + regExpString + ')+$');\r\n                    var properties = 'property duration timing-function delay'.split(' ');\r\n                    var result = [ ];\r\n                    var strResult;\r\n                    var valueArray;\r\n                    var i = 0;\r\n                    var j;\r\n                    var splitCssStyleByComma = function(str) {\r\n                        strResult = [ ];\r\n                        if (!str.match(regExpValidate))\r\n                            return str;\r\n                        while (str.match(regExpMain)) {\r\n                            strResult.push(RegExp.$1);\r\n                            str = str.replace(regExpMain, _strEmpty);\r\n                        }\r\n\r\n                        return strResult;\r\n                    };\r\n                    for (; i < properties[LEXICON.l]; i++) {\r\n                        valueArray = splitCssStyleByComma(element.css(transitionStr + '-' + properties[i]));\r\n                        for (j = 0; j < valueArray[LEXICON.l]; j++)\r\n                            result[j] = (result[j] ? result[j] + _strSpace : _strEmpty) + valueArray[j];\r\n                    }\r\n                    return result.join(', ');\r\n                }\r\n\r\n                /**\r\n                 * Calculates the host-elements inverted scale. (invertedScale = 1 / scale)\r\n                 * @returns {{x: number, y: number}} The scale of the host-element.\r\n                 */\r\n                function getHostElementInvertedScale() {\r\n                    var rect = _paddingElementNative.getBoundingClientRect();\r\n                    return {\r\n                        x :  _supportTransform ? 1 / (MATH.round(rect.width) / _paddingElementNative[LEXICON.oW]) || 1 : 1,\r\n                        y :  _supportTransform ? 1 / (MATH.round(rect.height) / _paddingElementNative[LEXICON.oH]) || 1 : 1\r\n                    };\r\n                }\r\n\r\n                /**\r\n                 * Checks whether the given object is a HTMLElement.\r\n                 * @param o The object which shall be checked.\r\n                 * @returns {boolean} True the given object is a HTMLElement, false otherwise.\r\n                 */\r\n                function isHTMLElement(o) {\r\n                    var strOwnerDocument = 'ownerDocument';\r\n                    var strHTMLElement = 'HTMLElement';\r\n                    var wnd = o && o[strOwnerDocument] ? (o[strOwnerDocument].parentWindow || window) : window;\r\n                    return (\r\n                        typeof wnd[strHTMLElement] == TYPES.o ? o instanceof wnd[strHTMLElement] : //DOM2\r\n                        o && typeof o == TYPES.o && o !== null && o.nodeType === 1 && typeof o.nodeName == TYPES.s\r\n                    );\r\n                }\r\n\r\n                /**\r\n                 * Compares 2 arrays and returns the differences between them as a array.\r\n                 * @param a1 The first array which shall be compared.\r\n                 * @param a2 The second array which shall be compared.\r\n                 * @returns {Array} The differences between the two arrays.\r\n                 */\r\n                function getArrayDifferences(a1, a2) {\r\n                    var a = [ ];\r\n                    var diff = [ ];\r\n                    var i;\r\n                    var k;\r\n                    for (i = 0; i < a1.length; i++)\r\n                        a[a1[i]] = true;\r\n                    for (i = 0; i < a2.length; i++) {\r\n                        if (a[a2[i]])\r\n                            delete a[a2[i]];\r\n                        else\r\n                            a[a2[i]] = true;\r\n                    }\r\n                    for (k in a)\r\n                        diff.push(k);\r\n                    return diff;\r\n                }\r\n\r\n                /**\r\n                 * Returns Zero or the number to which the value can be parsed.\r\n                 * @param value The value which shall be parsed.\r\n                 * @param toFloat Indicates whether the number shall be parsed to a float.\r\n                 */\r\n                function parseToZeroOrNumber(value, toFloat) {\r\n                    var num = toFloat ? parseFloat(value) : parseInt(value, 10);\r\n                    return isNaN(num) ? 0 : num;\r\n                }\r\n\r\n                /**\r\n                 * Gets several information of the textarea and returns them as a object or undefined if the browser doesn't support it.\r\n                 * @returns {{cursorRow: Number, cursorCol, rows: Number, cols: number, wRow: number, pos: number, max : number}} or undefined if not supported.\r\n                 */\r\n                function getTextareaInfo() {\r\n                    //read needed values\r\n                    var textareaCursorPosition = _targetElementNative.selectionStart;\r\n                    if (textareaCursorPosition === undefined)\r\n                        return;\r\n\r\n                    var textareaValue = _targetElement.val();\r\n                    var textareaLength = textareaValue[LEXICON.l];\r\n                    var textareaRowSplit = textareaValue.split('\\n');\r\n                    var textareaLastRow = textareaRowSplit[LEXICON.l];\r\n                    var textareaCurrentCursorRowSplit = textareaValue.substr(0, textareaCursorPosition).split('\\n');\r\n                    var widestRow = 0;\r\n                    var textareaLastCol = 0;\r\n                    var cursorRow = textareaCurrentCursorRowSplit[LEXICON.l];\r\n                    var cursorCol = textareaCurrentCursorRowSplit[textareaCurrentCursorRowSplit[LEXICON.l] - 1][LEXICON.l];\r\n                    var rowCols;\r\n                    var i;\r\n\r\n                    //get widest Row and the last column of the textarea\r\n                    for (i = 0; i < textareaRowSplit[LEXICON.l]; i++) {\r\n                        rowCols = textareaRowSplit[i][LEXICON.l];\r\n                        if (rowCols > textareaLastCol) {\r\n                            widestRow = i + 1;\r\n                            textareaLastCol = rowCols;\r\n                        }\r\n                    }\r\n\r\n                    return {\r\n                        _cursorRow: cursorRow, //cursorRow\r\n                        _cursorColumn: cursorCol, //cursorCol\r\n                        _rows: textareaLastRow, //rows\r\n                        _columns: textareaLastCol, //cols\r\n                        _widestRow: widestRow, //wRow\r\n                        _cursorPosition: textareaCursorPosition, //pos\r\n                        _cursorMax: textareaLength //max\r\n                    };\r\n                }\r\n\r\n                /**\r\n                 * Determines whether native overlay scrollbars are active.\r\n                 * @returns {boolean} True if native overlay scrollbars are active, false otherwise.\r\n                 */\r\n                function nativeOverlayScrollbarsAreActive() {\r\n                    return (_ignoreOverlayScrollbarHidingCache && (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.y));\r\n                }\r\n\r\n                /**\r\n                 * Gets the element which is used to measure the content size.\r\n                 * @returns {*} TextareaCover if target element is textarea else the ContentElement.\r\n                 */\r\n                function getContentMeasureElement() {\r\n                    return _isTextarea ? _textareaCoverElement[0] : _contentElementNative;\r\n                }\r\n\r\n                /**\r\n                 * Generates a string which represents a HTML div with the given classes or attributes.\r\n                 * @param classesOrAttrs The class of the div as string or a object which represents the attributes of the div. (The class attribute can also be written as \"className\".)\r\n                 * @param content The content of the div as string.\r\n                 * @returns {string} The concated string which represents a HTML div and its content.\r\n                 */\r\n                function generateDiv(classesOrAttrs, content) {\r\n                    return '<div ' + (classesOrAttrs ? type(classesOrAttrs) == TYPES.s ?\r\n                        'class=\"' + classesOrAttrs + '\"' :\r\n                            (function() {\r\n                                var key;\r\n                                var attrs = '';\r\n                                if(FRAMEWORK.isPlainObject(classesOrAttrs)) {\r\n                                    for (key in classesOrAttrs)\r\n                                        attrs += (key === 'className' ? 'class' : key) + '=\"' + classesOrAttrs[key] + '\" ';\r\n                                }\r\n                                return attrs;\r\n                            })() :\r\n                            _strEmpty) +\r\n                        '>' +\r\n                        (content ? content : _strEmpty) +\r\n                        '</div>';\r\n                }\r\n\r\n                /**\r\n                 * Gets the value of the given property from the given object.\r\n                 * @param obj The object from which the property value shall be got.\r\n                 * @param path The property of which the value shall be got.\r\n                 * @returns {*} Returns the value of the searched property or undefined of the property wasn't found.\r\n                 */\r\n                function getObjectPropVal(obj, path) {\r\n                    var splits = path.split(_strDot);\r\n                    var i = 0;\r\n                    var val;\r\n                    for(; i < splits.length; i++) {\r\n                        if(!obj[LEXICON.hOP](splits[i]))\r\n                            return;\r\n                        val = obj[splits[i]];\r\n                        if(i < splits.length && type(val) == TYPES.o)\r\n                            obj = val;\r\n                    }\r\n                    return val;\r\n                }\r\n\r\n                /**\r\n                 * Sets the value of the given property from the given object.\r\n                 * @param obj The object from which the property value shall be set.\r\n                 * @param path The property of which the value shall be set.\r\n                 * @param val The value of the property which shall be set.\r\n                 */\r\n                function setObjectPropVal(obj, path, val) {\r\n                    var splits = path.split(_strDot);\r\n                    var splitsLength = splits.length;\r\n                    var i = 0;\r\n                    var extendObj = { };\r\n                    var extendObjRoot = extendObj;\r\n                    for(; i < splitsLength; i++)\r\n                        extendObj = extendObj[splits[i]] = i + 1 < splitsLength ? { } : val;\r\n                    FRAMEWORK.extend(obj, extendObjRoot, true);\r\n                }\r\n\r\n\r\n                //==== Utils Cache ====//\r\n\r\n                /**\r\n                 * Compares two values or objects and returns true if they aren't equal.\r\n                 * @param current The first value or object which shall be compared.\r\n                 * @param cache The second value or object which shall be compared.\r\n                 * @param force If true the returned value is always true.\r\n                 * @returns {boolean} True if both values or objects aren't equal or force is true, false otherwise.\r\n                 */\r\n                function checkCache(current, cache, force) {\r\n                    if (force)\r\n                        return force;\r\n                    if(type(current) == TYPES.o && type(cache) == TYPES.o) {\r\n                        for (var prop in current) {\r\n                            if(prop !== 'c') {\r\n                                if (current[LEXICON.hOP](prop) && cache[LEXICON.hOP](prop)) {\r\n                                    if(checkCache(current[prop], cache[prop]))\r\n                                        return true;\r\n                                }\r\n                                else {\r\n                                    return true;\r\n                                }\r\n                            }\r\n                        }\r\n                    }\r\n                    else {\r\n                        return current !== cache;\r\n                    }\r\n                    return false;\r\n                }\r\n\r\n\r\n                //==== Shortcuts ====//\r\n\r\n                /**\r\n                 * jQuery extend method shortcut with a appended \"true\" as first argument.\r\n                 */\r\n                function extendDeep() {\r\n                    return FRAMEWORK.extend.apply(this, [ true ].concat([].slice.call(arguments)));\r\n                }\r\n\r\n                /**\r\n                 * jQuery addClass method shortcut.\r\n                 */\r\n                function addClass(el, classes) {\r\n                    return _frameworkProto.addClass.call(el, classes);\r\n                }\r\n\r\n                /**\r\n                 * jQuery removeClass method shortcut.\r\n                 */\r\n                function removeClass(el, classes) {\r\n                    return _frameworkProto.removeClass.call(el, classes);\r\n                }\r\n\r\n                /**\r\n                 * jQuery remove method shortcut.\r\n                 */\r\n                function remove(el) {\r\n                    return _frameworkProto.remove.call(el);\r\n                }\r\n\r\n                /**\r\n                 * Finds the first child element with the given selector of the given element.\r\n                 * @param el The root element from which the selector shall be valid.\r\n                 * @param selector The selector of the searched element.\r\n                 * @returns {*} The first element which is a child of the given element and matches the givens selector.\r\n                 */\r\n                function findFirst(el, selector) {\r\n                    return _frameworkProto.find.call(el, selector).eq(0);\r\n                }\r\n\r\n\r\n                //==== API ====//\r\n\r\n                /**\r\n                 * Puts the instance to sleep. It wont respond to any changes in the DOM and won't update. Scrollbar Interactivity is also disabled as well as the resize handle.\r\n                 * This behavior can be reset by calling the update method.\r\n                 */\r\n                _base.sleep = function () {\r\n                    _sleeping = true;\r\n                };\r\n\r\n                /**\r\n                 * Updates the plugin and DOM to the current options.\r\n                 * This method should only be called if a update is 100% required.\r\n                 * @param force True if every property shall be updated and the cache shall be ignored.\r\n                 * !INTERNAL USAGE! : force can be a string \"auto\", \"sync\" or \"zoom\" too\r\n                 * if \"auto\" then before a real update the content size and host element attributes gets checked, and if they changed only then the update method will be called.\r\n                 * if \"sync\" then the async update process (MutationObserver or UpdateLoop) gets synchronized and a corresponding update takes place if one was needed due to pending changes.\r\n                 * if \"zoom\" then a update takes place where it's assumed that content and host size changed\r\n                 * @returns {boolean|undefined} \r\n                 * If force is \"sync\" then a boolean is returned which indicates whether a update was needed due to pending changes.\r\n                 * If force is \"auto\" then a boolean is returned whether a update was needed due to attribute or size changes.\r\n                 * undefined otherwise.\r\n                 */\r\n                _base.update = function (force) {\r\n                    var attrsChanged;\r\n                    var contentSizeC;\r\n                    var isString = type(force) == TYPES.s;\r\n                    var imgElementSelector = 'img';\r\n                    var imgElementLoadEvent = 'load';\r\n                    var doUpdateAuto;\r\n                    var mutHost;\r\n                    var mutContent;\r\n                    if(isString) {\r\n                        if (force === _strAuto) {\r\n                            attrsChanged = meaningfulAttrsChanged();\r\n                            contentSizeC = updateAutoContentSizeChanged();\r\n                            doUpdateAuto = attrsChanged || contentSizeC;\r\n                            if (doUpdateAuto) {\r\n                                update({\r\n                                    _contentSizeChanged : contentSizeC,\r\n                                    _changedOptions : _initialized ? undefined : _currentPreparedOptions\r\n                                });\r\n                            }\r\n                        }\r\n                        else if (force === _strSync) {\r\n                            if(_mutationObserversConnected) {\r\n                                mutHost = _mutationObserverHostCallback(_mutationObserverHost.takeRecords());\r\n                                mutContent = _mutationObserverContentCallback(_mutationObserverContent.takeRecords());\r\n                            }\r\n                            else {\r\n                                mutHost = _base.update(_strAuto);\r\n                            }\r\n                        }\r\n                        else if (force === 'zoom') {\r\n                            update({\r\n                                _hostSizeChanged : true,\r\n                                _contentSizeChanged : true\r\n                            });\r\n                        }\r\n                    }\r\n                    else {\r\n                        force = _sleeping || force;\r\n                        _sleeping = false;\r\n                        if(!_base.update(_strSync) || force)\r\n                            update({ _force : force });\r\n                    }\r\n                    if(!_isTextarea) {\r\n                        _contentElement.find(imgElementSelector).each(function(i, el) {\r\n                            var index = COMPATIBILITY.inA(el, _imgs);\r\n                            if (index === -1)\r\n                                FRAMEWORK(el).off(imgElementLoadEvent, imgOnLoad).on(imgElementLoadEvent, imgOnLoad);\r\n                        });\r\n                    }\r\n                    return doUpdateAuto || mutHost || mutContent;\r\n                };\r\n\r\n                /**\r\n                 Gets or sets the current options. The update method will be called automatically if new options were set.\r\n                 * @param newOptions If new options are given, then the new options will be set, if new options aren't given (undefined or a not a plain object) then the current options will be returned.\r\n                 * @param value If new options is a property path string, then this value will be used to set the option to which the property path string leads.\r\n                 * @returns {*}\r\n                 */\r\n                _base.options = function (newOptions, value) {\r\n                    var option = { };\r\n                    var changedOps;\r\n                    \r\n                    //return current options if newOptions are undefined or empty\r\n                    if (FRAMEWORK.isEmptyObject(newOptions) || !FRAMEWORK.isPlainObject(newOptions)) {\r\n                        if (type(newOptions) == TYPES.s) {\r\n                            if (arguments.length > 1) {\r\n                                setObjectPropVal(option, newOptions, value);\r\n                                changedOps = setOptions(option);\r\n                            }\r\n                            else\r\n                                return getObjectPropVal(_currentOptions, newOptions);\r\n                        }\r\n                        else\r\n                            return _currentOptions;\r\n                    }\r\n                    else {\r\n                        changedOps = setOptions(newOptions);\r\n                    }\r\n                    \r\n                    if(!FRAMEWORK.isEmptyObject(changedOps)) {\r\n                        update({ _changedOptions : changedOps });\r\n                    }    \r\n                };\r\n\r\n                /**\r\n                 * Restore the DOM, disconnects all observers, remove all resize observers and put the instance to sleep.\r\n                 */\r\n                _base.destroy = function () {\r\n                    //remove this instance from auto update loop\r\n                    autoUpdateLoop.remove(_base);\r\n\r\n                    //disconnect all mutation observers\r\n                    disconnectMutationObservers();\r\n\r\n                    //remove all resize observers\r\n                    setupResizeObserver(_sizeObserverElement);\r\n                    setupResizeObserver(_sizeAutoObserverElement);\r\n\r\n                    //remove all extensions\r\n                    for(var extName in _extensions)\r\n                        _base.removeExt(extName);\r\n\r\n                    //remove all events from host element\r\n                    setupHostMouseTouchEvents(true);\r\n\r\n                    //remove all events from structure\r\n                    setupStructureEvents(true);\r\n\r\n                    //remove all helper / detection elements\r\n                    if (_contentGlueElement)\r\n                        remove(_contentGlueElement);\r\n                    if (_contentArrangeElement)\r\n                        remove(_contentArrangeElement);\r\n                    if (_sizeAutoObserverAdded)\r\n                        remove(_sizeAutoObserverElement);\r\n\r\n                    //remove all generated DOM\r\n                    setupScrollbarsDOM(true);\r\n                    setupScrollbarCornerDOM(true);\r\n                    setupStructureDOM(true);\r\n\r\n                    //remove all generated image load events\r\n                    for(var i = 0; i < _imgs[LEXICON.l]; i++)\r\n                        FRAMEWORK(_imgs[i]).off('load', imgOnLoad);\r\n                    _imgs = undefined;\r\n\r\n                    _destroyed = true;\r\n                    _sleeping = true;\r\n\r\n                    //remove this instance from the instances list\r\n                    INSTANCES(pluginTargetElement, 0);\r\n                    dispatchCallback(\"onDestroyed\");\r\n\r\n                    //remove all properties and methods\r\n                    //for (var property in _base)\r\n                    //    delete _base[property];\r\n                    //_base = undefined;\r\n                };\r\n\r\n                /**\r\n                 * Scrolls to a given position or element.\r\n                 * @param coordinates\r\n                 * 1. Can be \"coordinates\" which looks like:\r\n                 *    { x : ?, y : ? } OR          Object with x and y properties\r\n                 *    { left : ?, top : ? } OR     Object with left and top properties\r\n                 *    { l : ?, t : ? } OR          Object with l and t properties\r\n                 *    [ ?, ? ] OR                  Array where the first two element are the coordinates (first is x, second is y)\r\n                 *    ?                            A single value which stays for both axis\r\n                 *    A value can be a number, a string or a calculation.\r\n                 *\r\n                 *    Operators:\r\n                 *    [NONE]  The current scroll will be overwritten by the value.\r\n                 *    '+='    The value will be added to the current scroll offset\r\n                 *    '-='    The value will be subtracted from the current scroll offset\r\n                 *    '*='    The current scroll wil be multiplicated by the value.\r\n                 *    '/='    The current scroll wil be divided by the value.\r\n                 *\r\n                 *    Units:\r\n                 *    [NONE]  The value is the final scroll amount.                   final = (value * 1)\r\n                 *    'px'    Same as none\r\n                 *    '%'     The value is dependent on the current scroll value.     final = ((currentScrollValue / 100) * value)\r\n                 *    'vw'    The value is multiplicated by the viewport width.       final = (value * viewportWidth)\r\n                 *    'vh'    The value is multiplicated by the viewport height.      final = (value * viewportHeight)\r\n                 *\r\n                 *    example final values:\r\n                 *    200, '200px', '50%', '1vw', '1vh', '+=200', '/=1vw', '*=2px', '-=5vh', '+=33%', '+= 50% - 2px', '-= 1vw - 50%'\r\n                 *\r\n                 * 2. Can be a HTML or jQuery element:\r\n                 *    The final scroll offset is the offset (without margin) of the given HTML / jQuery element.\r\n                 *\r\n                 * 3. Can be a object with a HTML or jQuery element with additional settings:\r\n                 *    {\r\n                 *      el : [HTMLElement, jQuery element],             MUST be specified, else this object isn't valid.\r\n                 *      scroll : [string, array, object],               Default value is 'always'.\r\n                 *      block : [string, array, object],                Default value is 'begin'.\r\n                 *      margin : [number, boolean, array, object]       Default value is false.\r\n                 *    }\r\n                 *\r\n                 *    Possible scroll settings are:\r\n                 *    'always'      Scrolls always.\r\n                 *    'ifneeded'    Scrolls only if the element isnt fully in view.\r\n                 *    'never'       Scrolls never.\r\n                 *\r\n                 *    Possible block settings are:\r\n                 *    'begin'   Both axis shall be docked to the \"begin\" edge. - The element will be docked to the top and left edge of the viewport.\r\n                 *    'end'     Both axis shall be docked to the \"end\" edge. - The element will be docked to the bottom and right edge of the viewport. (If direction is RTL to the bottom and left edge.)\r\n                 *    'center'  Both axis shall be docked to \"center\". - The element will be centered in the viewport.\r\n                 *    'nearest' The element will be docked to the nearest edge(s).\r\n                 *\r\n                 *    Possible margin settings are: -- The actual margin of the element wont be affect, this option affects only the final scroll offset.\r\n                 *    [BOOLEAN]                                         If true the css margin of the element will be used, if false no margin will be used.\r\n                 *    [NUMBER]                                          The margin will be used for all edges.\r\n                 *\r\n                 * @param duration The duration of the scroll animation, OR a jQuery animation configuration object.\r\n                 * @param easing The animation easing.\r\n                 * @param complete The animation complete callback.\r\n                 * @returns {{\r\n                 *   position: {x: number, y: number},\r\n                 *   ratio: {x: number, y: number},\r\n                 *   max: {x: number, y: number},\r\n                 *   handleOffset: {x: number, y: number},\r\n                 *   handleLength: {x: number, y: number},\r\n                 *   handleLengthRatio: {x: number, y: number}, t\r\n                 *   rackLength: {x: number, y: number},\r\n                 *   isRTL: boolean,\r\n                 *   isRTLNormalized: boolean\r\n                 *  }}\r\n                 */\r\n                _base.scroll = function (coordinates, duration, easing, complete) {\r\n                    if (arguments.length === 0 || coordinates === undefined) {\r\n                        var infoX = _scrollHorizontalInfo;\r\n                        var infoY = _scrollVerticalInfo;\r\n                        var normalizeInvert = _normalizeRTLCache && _isRTL && _rtlScrollBehavior.i;\r\n                        var normalizeNegate = _normalizeRTLCache && _isRTL && _rtlScrollBehavior.n;\r\n                        var scrollX = infoX._currentScroll;\r\n                        var scrollXRatio = infoX._currentScrollRatio;\r\n                        var maxScrollX = infoX._maxScroll;\r\n                        scrollXRatio = normalizeInvert ? 1 - scrollXRatio : scrollXRatio;\r\n                        scrollX = normalizeInvert ? maxScrollX - scrollX : scrollX;\r\n                        scrollX *= normalizeNegate ? -1 : 1;\r\n                        maxScrollX *= normalizeNegate ? -1 : 1;\r\n\r\n                        return {\r\n                            position : {\r\n                                x : scrollX,\r\n                                y : infoY._currentScroll\r\n                            },\r\n                            ratio : {\r\n                                x : scrollXRatio,\r\n                                y : infoY._currentScrollRatio\r\n                            },\r\n                            max : {\r\n                                x : maxScrollX,\r\n                                y : infoY._maxScroll\r\n                            },\r\n                            handleOffset : {\r\n                                x : infoX._handleOffset,\r\n                                y : infoY._handleOffset\r\n                            },\r\n                            handleLength : {\r\n                                x : infoX._handleLength,\r\n                                y : infoY._handleLength\r\n                            },\r\n                            handleLengthRatio : {\r\n                                x : infoX._handleLengthRatio,\r\n                                y : infoY._handleLengthRatio\r\n                            },\r\n                            trackLength : {\r\n                                x : infoX._trackLength,\r\n                                y : infoY._trackLength\r\n                            },\r\n                            snappedHandleOffset : {\r\n                                x : infoX._snappedHandleOffset,\r\n                                y : infoY._snappedHandleOffset\r\n                            },\r\n                            isRTL: _isRTL,\r\n                            isRTLNormalized: _normalizeRTLCache\r\n                        };\r\n                    }\r\n                    \r\n                    _base.update(_strSync);\r\n                    \r\n                    var normalizeRTL = _normalizeRTLCache;\r\n                    var coordinatesXAxisProps = [_strX, _strLeft, 'l'];\r\n                    var coordinatesYAxisProps = [_strY, _strTop, 't'];\r\n                    var coordinatesOperators = ['+=', '-=', '*=', '/='];\r\n                    var durationIsObject = type(duration) == TYPES.o;\r\n                    var completeCallback = durationIsObject ? duration.complete : complete;\r\n                    var i;\r\n                    var finalScroll = { };\r\n                    var specialEasing = {};\r\n                    var doScrollLeft;\r\n                    var doScrollTop;\r\n                    var animationOptions;\r\n                    var strEnd = 'end';\r\n                    var strBegin = 'begin';\r\n                    var strCenter = 'center';\r\n                    var strNearest = 'nearest';\r\n                    var strAlways = 'always';\r\n                    var strNever = 'never';\r\n                    var strIfNeeded = 'ifneeded';\r\n                    var strLength = LEXICON.l;\r\n                    var settingsAxis;\r\n                    var settingsScroll;\r\n                    var settingsBlock;\r\n                    var settingsMargin;\r\n                    var finalElement;\r\n                    var elementObjSettingsAxisValues = [_strX, _strY, 'xy', 'yx'];\r\n                    var elementObjSettingsBlockValues = [strBegin, strEnd, strCenter, strNearest];\r\n                    var elementObjSettingsScrollValues = [strAlways, strNever, strIfNeeded];\r\n                    var coordinatesIsElementObj = coordinates[LEXICON.hOP]('el');\r\n                    var possibleElement = coordinatesIsElementObj ? coordinates.el : coordinates;\r\n                    var possibleElementIsJQuery = possibleElement instanceof FRAMEWORK || JQUERY ? possibleElement instanceof JQUERY : false;\r\n                    var possibleElementIsHTMLElement = possibleElementIsJQuery ? false : isHTMLElement(possibleElement);\r\n                    var proxyCompleteCallback = type(completeCallback) != TYPES.f ? undefined : function() {\r\n                        if(doScrollLeft)\r\n                            refreshScrollbarHandleOffset(true);\r\n                        if(doScrollTop)\r\n                            refreshScrollbarHandleOffset(false);\r\n                        completeCallback();\r\n                    };\r\n                    var checkSettingsStringValue = function (currValue, allowedValues) {\r\n                        for (i = 0; i < allowedValues[strLength]; i++) {\r\n                            if (currValue === allowedValues[i])\r\n                                return true;\r\n                        }\r\n                        return false;\r\n                    };\r\n                    var getRawScroll = function (isX, coordinates) {\r\n                        var coordinateProps = isX ? coordinatesXAxisProps : coordinatesYAxisProps;\r\n                        coordinates = type(coordinates) == TYPES.s || type(coordinates) == TYPES.n ? [ coordinates, coordinates ] : coordinates;\r\n\r\n                        if (type(coordinates) == TYPES.a)\r\n                            return isX ? coordinates[0] : coordinates[1];\r\n                        else if (type(coordinates) == TYPES.o) {\r\n                            //decides RTL normalization \"hack\" with .n\r\n                            //normalizeRTL = type(coordinates.n) == TYPES.b ? coordinates.n : normalizeRTL; \r\n                            for (i = 0; i < coordinateProps[strLength]; i++)\r\n                                if (coordinateProps[i] in coordinates)\r\n                                    return coordinates[coordinateProps[i]];\r\n                        }\r\n                    };\r\n                    var getFinalScroll = function (isX, rawScroll) {\r\n                        var isString = type(rawScroll) == TYPES.s;\r\n                        var operator;\r\n                        var amount;\r\n                        var scrollInfo = isX ? _scrollHorizontalInfo : _scrollVerticalInfo;\r\n                        var currScroll = scrollInfo._currentScroll;\r\n                        var maxScroll = scrollInfo._maxScroll;\r\n                        var mult = ' * ';\r\n                        var finalValue;\r\n                        var isRTLisX = _isRTL && isX;\r\n                        var normalizeShortcuts = isRTLisX && _rtlScrollBehavior.n && !normalizeRTL;\r\n                        var strReplace = 'replace';\r\n                        var evalFunc = eval;\r\n                        var possibleOperator;\r\n                        if (isString) {\r\n                            //check operator\r\n                            if (rawScroll[strLength] > 2) {\r\n                                possibleOperator = rawScroll.substr(0, 2);\r\n                                if(inArray(possibleOperator, coordinatesOperators) > -1)\r\n                                    operator = possibleOperator;\r\n                            }\r\n\r\n                            //calculate units and shortcuts\r\n                            rawScroll = operator ? rawScroll.substr(2) : rawScroll;\r\n                            rawScroll = rawScroll\r\n                            [strReplace](/min/g, 0) //'min' = 0%\r\n                            [strReplace](/</g, 0)   //'<'   = 0%\r\n                            [strReplace](/max/g, (normalizeShortcuts ? '-' : _strEmpty) + _strHundredPercent)    //'max' = 100%\r\n                            [strReplace](/>/g, (normalizeShortcuts ? '-' : _strEmpty) + _strHundredPercent)      //'>'   = 100%\r\n                            [strReplace](/px/g, _strEmpty)\r\n                            [strReplace](/%/g, mult + (maxScroll * (isRTLisX && _rtlScrollBehavior.n ? -1 : 1) / 100.0))\r\n                            [strReplace](/vw/g, mult + _viewportSize.w)\r\n                            [strReplace](/vh/g, mult + _viewportSize.h);\r\n                            amount = parseToZeroOrNumber(isNaN(rawScroll) ? parseToZeroOrNumber(evalFunc(rawScroll), true).toFixed() : rawScroll);\r\n                        }\r\n                        else {\r\n                            amount = rawScroll;\r\n                        }\r\n\r\n                        if (amount !== undefined && !isNaN(amount) && type(amount) == TYPES.n) {\r\n                            var normalizeIsRTLisX = normalizeRTL && isRTLisX;\r\n                            var operatorCurrScroll = currScroll * (normalizeIsRTLisX && _rtlScrollBehavior.n ? -1 : 1);\r\n                            var invert = normalizeIsRTLisX && _rtlScrollBehavior.i;\r\n                            var negate = normalizeIsRTLisX && _rtlScrollBehavior.n;\r\n                            operatorCurrScroll = invert ? (maxScroll - operatorCurrScroll) : operatorCurrScroll;\r\n                            switch (operator) {\r\n                                case '+=':\r\n                                    finalValue = operatorCurrScroll + amount;\r\n                                    break;\r\n                                case '-=':\r\n                                    finalValue = operatorCurrScroll - amount;\r\n                                    break;\r\n                                case '*=':\r\n                                    finalValue = operatorCurrScroll * amount;\r\n                                    break;\r\n                                case '/=':\r\n                                    finalValue = operatorCurrScroll / amount;\r\n                                    break;\r\n                                default:\r\n                                    finalValue = amount;\r\n                                    break;\r\n                            }\r\n                            finalValue = invert ? maxScroll - finalValue : finalValue;\r\n                            finalValue *= negate ? -1 : 1;\r\n                            finalValue = isRTLisX && _rtlScrollBehavior.n ? MATH.min(0, MATH.max(maxScroll, finalValue)) : MATH.max(0, MATH.min(maxScroll, finalValue));\r\n                        }\r\n                        return finalValue === currScroll ? undefined : finalValue;\r\n                    };\r\n                    var getPerAxisValue = function (value, valueInternalType, defaultValue, allowedValues) {\r\n                        var resultDefault = [ defaultValue, defaultValue ];\r\n                        var valueType = type(value);\r\n                        var valueArrLength;\r\n                        var valueArrItem;\r\n\r\n                        //value can be [ string, or array of two strings ]\r\n                        if (valueType == valueInternalType) {\r\n                            value = [value, value];\r\n                        }\r\n                        else if (valueType == TYPES.a) {\r\n                            valueArrLength = value[strLength];\r\n                            if (valueArrLength > 2 || valueArrLength < 1)\r\n                                value = resultDefault;\r\n                            else {\r\n                                if (valueArrLength === 1)\r\n                                    value[1] = defaultValue;\r\n                                for (i = 0; i < valueArrLength; i++) {\r\n                                    valueArrItem = value[i];\r\n                                    if (type(valueArrItem) != valueInternalType || !checkSettingsStringValue(valueArrItem, allowedValues)) {\r\n                                        value = resultDefault;\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        else if (valueType == TYPES.o)\r\n                            value = [ value[_strX]|| defaultValue, value[_strY] || defaultValue];\r\n                        else\r\n                            value = resultDefault;\r\n                        return { x : value[0], y : value[1] };\r\n                    };\r\n                    var generateMargin = function (marginTopRightBottomLeftArray) {\r\n                        var result = [ ];\r\n                        var currValue;\r\n                        var currValueType;\r\n                        var valueDirections = [ _strTop, _strRight, _strBottom, _strLeft ];\r\n                        for(i = 0; i < marginTopRightBottomLeftArray[strLength]; i++) {\r\n                            if(i === valueDirections[strLength])\r\n                                break;\r\n                            currValue = marginTopRightBottomLeftArray[i];\r\n                            currValueType = type(currValue);\r\n                            if(currValueType == TYPES.b)\r\n                                result.push(currValue ? parseToZeroOrNumber(finalElement.css(_strMarginMinus + valueDirections[i])) : 0);\r\n                            else\r\n                                result.push(currValueType == TYPES.n ? currValue : 0);\r\n                        }\r\n                        return result;\r\n                    };\r\n\r\n                    if (possibleElementIsJQuery || possibleElementIsHTMLElement) {\r\n                        //get settings\r\n                        var margin = coordinatesIsElementObj ? coordinates.margin : 0;\r\n                        var axis = coordinatesIsElementObj ? coordinates.axis : 0;\r\n                        var scroll = coordinatesIsElementObj ? coordinates.scroll : 0;\r\n                        var block = coordinatesIsElementObj ? coordinates.block : 0;\r\n                        var marginDefault = [ 0, 0, 0, 0 ];\r\n                        var marginType = type(margin);\r\n                        var marginLength;\r\n                        finalElement = possibleElementIsJQuery ? possibleElement : FRAMEWORK(possibleElement);\r\n                        if (finalElement[strLength] === 0)\r\n                            return;\r\n\r\n                        //margin can be [ boolean, number, array of 2, array of 4, object ]\r\n                        if (marginType == TYPES.n || marginType == TYPES.b)\r\n                            margin = generateMargin([margin, margin, margin, margin]);\r\n                        else if (marginType == TYPES.a) {\r\n                            marginLength = margin[strLength];\r\n                            if(marginLength === 2)\r\n                                margin = generateMargin([margin[0], margin[1], margin[0], margin[1]]);\r\n                            else if(marginLength >= 4)\r\n                                margin = generateMargin(margin);\r\n                            else\r\n                                margin = marginDefault;\r\n                        }\r\n                        else if (marginType == TYPES.o)\r\n                            margin = generateMargin([margin[_strTop], margin[_strRight], margin[_strBottom], margin[_strLeft]]);\r\n                        else\r\n                            margin = marginDefault;\r\n\r\n                        //block = type(block) === TYPES.b ? block ? [ strNearest, strBegin ] : [ strNearest, strEnd ] : block;\r\n                        settingsAxis = checkSettingsStringValue(axis, elementObjSettingsAxisValues) ? axis : 'xy';\r\n                        settingsScroll = getPerAxisValue(scroll, TYPES.s, strAlways, elementObjSettingsScrollValues);\r\n                        settingsBlock = getPerAxisValue(block, TYPES.s, strBegin, elementObjSettingsBlockValues);\r\n                        settingsMargin = margin;\r\n\r\n                        var viewportScroll = {\r\n                            l: _scrollHorizontalInfo._currentScroll,\r\n                            t: _scrollVerticalInfo._currentScroll\r\n                        };\r\n                        // use padding element instead of viewport element because padding element has never padding, margin or position applied.\r\n                        var viewportOffset = _paddingElement.offset();\r\n\r\n                        //get coordinates\r\n                        var elementOffset = finalElement.offset();\r\n                        var doNotScroll = {\r\n                            x : settingsScroll.x == strNever || settingsAxis == _strY,\r\n                            y : settingsScroll.y == strNever || settingsAxis == _strX\r\n                        };\r\n                        elementOffset[_strTop] -= settingsMargin[0];\r\n                        elementOffset[_strLeft] -= settingsMargin[3];\r\n                        var elementScrollCoordinates = {\r\n                            x: MATH.round(elementOffset[_strLeft] - viewportOffset[_strLeft] + viewportScroll.l),\r\n                            y: MATH.round(elementOffset[_strTop] - viewportOffset[_strTop] + viewportScroll.t)\r\n                        };\r\n                        if (_isRTL) {\r\n                            if (!_rtlScrollBehavior.n && !_rtlScrollBehavior.i)\r\n                                elementScrollCoordinates.x = MATH.round(viewportOffset[_strLeft] - elementOffset[_strLeft] + viewportScroll.l);\r\n                            if (_rtlScrollBehavior.n && normalizeRTL)\r\n                                elementScrollCoordinates.x *= -1;\r\n                            if (_rtlScrollBehavior.i && normalizeRTL)\r\n                                elementScrollCoordinates.x = MATH.round(viewportOffset[_strLeft] - elementOffset[_strLeft] + (_scrollHorizontalInfo._maxScroll - viewportScroll.l));\r\n                        }\r\n\r\n                        //measuring is required\r\n                        if (settingsBlock.x != strBegin || settingsBlock.y != strBegin || settingsScroll.x == strIfNeeded || settingsScroll.y == strIfNeeded || _isRTL) {\r\n                            var measuringElm = finalElement[0];\r\n                            var rawElementSize = _supportTransform ? measuringElm.getBoundingClientRect() : {\r\n                                width : measuringElm[LEXICON.oW],\r\n                                height : measuringElm[LEXICON.oH]\r\n                            };\r\n                            var elementSize = {\r\n                                w: rawElementSize[_strWidth] + settingsMargin[3] + settingsMargin[1],\r\n                                h: rawElementSize[_strHeight] + settingsMargin[0] + settingsMargin[2]\r\n                            };\r\n                            var finalizeBlock = function(isX) {\r\n                                var vars = getScrollbarVars(isX);\r\n                                var wh = vars._w_h;\r\n                                var lt = vars._left_top;\r\n                                var xy = vars._x_y;\r\n                                var blockIsEnd = settingsBlock[xy] == (isX ? _isRTL ? strBegin : strEnd : strEnd);\r\n                                var blockIsCenter = settingsBlock[xy] == strCenter;\r\n                                var blockIsNearest = settingsBlock[xy] == strNearest;\r\n                                var scrollNever = settingsScroll[xy] == strNever;\r\n                                var scrollIfNeeded = settingsScroll[xy] == strIfNeeded;\r\n                                var vpSize = _viewportSize[wh];\r\n                                var vpOffset = viewportOffset[lt];\r\n                                var elSize = elementSize[wh];\r\n                                var elOffset = elementOffset[lt];\r\n                                var divide = blockIsCenter ? 2 : 1;\r\n                                var elementCenterOffset = elOffset + (elSize / 2);\r\n                                var viewportCenterOffset = vpOffset + (vpSize / 2);\r\n                                var isInView =\r\n                                    elSize <= vpSize\r\n                                    && elOffset >= vpOffset\r\n                                    && elOffset + elSize <= vpOffset + vpSize;\r\n\r\n                                if(scrollNever)\r\n                                    doNotScroll[xy] = true;\r\n                                else if(!doNotScroll[xy]) {\r\n                                    if (blockIsNearest || scrollIfNeeded) {\r\n                                        doNotScroll[xy] = scrollIfNeeded ? isInView : false;\r\n                                        blockIsEnd = elSize < vpSize ? elementCenterOffset > viewportCenterOffset : elementCenterOffset < viewportCenterOffset;\r\n                                    }\r\n                                    elementScrollCoordinates[xy] -= blockIsEnd || blockIsCenter ? ((vpSize / divide) - (elSize / divide)) * (isX && _isRTL && normalizeRTL ? -1 : 1) : 0;\r\n                                }\r\n                            };\r\n                            finalizeBlock(true);\r\n                            finalizeBlock(false);\r\n                        }\r\n\r\n                        if (doNotScroll.y)\r\n                            delete elementScrollCoordinates.y;\r\n                        if (doNotScroll.x)\r\n                            delete elementScrollCoordinates.x;\r\n\r\n                        coordinates = elementScrollCoordinates;\r\n                    }\r\n\r\n                    finalScroll[_strScrollLeft] = getFinalScroll(true, getRawScroll(true, coordinates));\r\n                    finalScroll[_strScrollTop] = getFinalScroll(false, getRawScroll(false, coordinates));\r\n                    doScrollLeft = finalScroll[_strScrollLeft] !== undefined;\r\n                    doScrollTop = finalScroll[_strScrollTop] !== undefined;\r\n\r\n                    if ((doScrollLeft || doScrollTop) && (duration > 0 || durationIsObject)) {\r\n                        if (durationIsObject) {\r\n                            duration.complete = proxyCompleteCallback;\r\n                            _viewportElement.animate(finalScroll, duration);\r\n                        }\r\n                        else {\r\n                            animationOptions = {\r\n                                duration: duration,\r\n                                complete: proxyCompleteCallback\r\n                            };\r\n                            if (type(easing) == TYPES.a || FRAMEWORK.isPlainObject(easing)) {\r\n                                specialEasing[_strScrollLeft] = easing[0] || easing.x;\r\n                                specialEasing[_strScrollTop] = easing[1] || easing.y;\r\n                                animationOptions.specialEasing = specialEasing;\r\n                            }\r\n                            else {\r\n                                animationOptions.easing = easing;\r\n                            }\r\n                            _viewportElement.animate(finalScroll, animationOptions);\r\n                        }\r\n                    }\r\n                    else {\r\n                        if (doScrollLeft)\r\n                            _viewportElement[_strScrollLeft](finalScroll[_strScrollLeft]);\r\n                        if (doScrollTop)\r\n                            _viewportElement[_strScrollTop](finalScroll[_strScrollTop]);\r\n                    }\r\n                };\r\n\r\n                /**\r\n                 * Stops all scroll animations.\r\n                 * @returns {*} The current OverlayScrollbars instance (for chaining).\r\n                 */\r\n                _base.scrollStop = function (param1, param2, param3) {\r\n                    _viewportElement.stop(param1, param2, param3);\r\n                    return _base;\r\n                };\r\n\r\n                /**\r\n                 * Returns all relevant elements.\r\n                 * @param elementName The name of the element which shall be returned.\r\n                 * @returns {{target: *, host: *, padding: *, viewport: *, content: *, scrollbarHorizontal: {scrollbar: *, track: *, handle: *}, scrollbarVertical: {scrollbar: *, track: *, handle: *}, scrollbarCorner: *} | *}\r\n                 */\r\n                _base.getElements = function (elementName) {\r\n                    var obj = {\r\n                        target: _targetElementNative,\r\n                        host: _hostElementNative,\r\n                        padding: _paddingElementNative,\r\n                        viewport: _viewportElementNative,\r\n                        content: _contentElementNative,\r\n                        scrollbarHorizontal: {\r\n                            scrollbar: _scrollbarHorizontalElement[0],\r\n                            track: _scrollbarHorizontalTrackElement[0],\r\n                            handle: _scrollbarHorizontalHandleElement[0]\r\n                        },\r\n                        scrollbarVertical: {\r\n                            scrollbar: _scrollbarVerticalElement[0],\r\n                            track: _scrollbarVerticalTrackElement[0],\r\n                            handle: _scrollbarVerticalHandleElement[0]\r\n                        },\r\n                        scrollbarCorner: _scrollbarCornerElement[0]\r\n                    };\r\n                    return type(elementName) == TYPES.s ? getObjectPropVal(obj, elementName) : obj;\r\n                };\r\n\r\n                /**\r\n                 * Returns a object which describes the current state of this instance.\r\n                 * @param stateProperty A specific property from the state object which shall be returned.\r\n                 * @returns {{widthAuto, heightAuto, overflowAmount, hideOverflow, hasOverflow, contentScrollSize, viewportSize, hostSize, autoUpdate} | *}\r\n                 */\r\n                _base.getState = function (stateProperty) {\r\n                    function prepare(obj) {\r\n                        if (!FRAMEWORK.isPlainObject(obj))\r\n                            return obj;\r\n                        var extended = extendDeep({}, obj);\r\n                        var changePropertyName = function (from, to) {\r\n                            if (extended[LEXICON.hOP](from)) {\r\n                                extended[to] = extended[from];\r\n                                delete extended[from];\r\n                            }\r\n                        };\r\n                        changePropertyName('w', _strWidth); //change w to width\r\n                        changePropertyName('h', _strHeight); //change h to height\r\n                        delete extended.c; //delete c (the 'changed' prop)\r\n                        return extended;\r\n                    };\r\n                    var obj = {\r\n                        destroyed: !!prepare(_destroyed),\r\n                        sleeping: !!prepare(_sleeping),\r\n                        autoUpdate: prepare(!_mutationObserversConnected),\r\n                        widthAuto: prepare(_widthAutoCache),\r\n                        heightAuto: prepare(_heightAutoCache),\r\n                        padding: prepare(_cssPaddingCache),\r\n                        overflowAmount: prepare(_overflowAmountCache),\r\n                        hideOverflow: prepare(_hideOverflowCache),\r\n                        hasOverflow: prepare(_hasOverflowCache),\r\n                        contentScrollSize: prepare(_contentScrollSizeCache),\r\n                        viewportSize: prepare(_viewportSize),\r\n                        hostSize: prepare(_hostSizeCache),\r\n                        documentMixed : prepare(_documentMixed)\r\n                    };\r\n                    return type(stateProperty) == TYPES.s ? getObjectPropVal(obj, stateProperty) : obj;\r\n                };\r\n\r\n                /**\r\n                 * Gets all or specific extension instance.\r\n                 * @param extName The name of the extension from which the instance shall be got.\r\n                 * @returns {{}} The instance of the extension with the given name or undefined if the instance couldn't be found.\r\n                 */\r\n                _base.ext = function(extName) {\r\n                    var result;\r\n                    var privateMethods = _extensionsPrivateMethods.split(' ');\r\n                    var i = 0;\r\n                    if(type(extName) == TYPES.s) {\r\n                        if(_extensions[LEXICON.hOP](extName)) {\r\n                            result = extendDeep({}, _extensions[extName]);\r\n                            for (; i < privateMethods.length; i++)\r\n                                delete result[privateMethods[i]];\r\n                        }\r\n                    }\r\n                    else {\r\n                        result = { };\r\n                        for(i in _extensions)\r\n                            result[i] = extendDeep({ }, _base.ext(i));\r\n                    }\r\n                    return result;\r\n                };\r\n\r\n                /**\r\n                 * Adds a extension to this instance.\r\n                 * @param extName The name of the extension which shall be added.\r\n                 * @param extensionOptions The extension options which shall be used.\r\n                 * @returns {{}} The instance of the added extension or undefined if the extension couldn't be added properly.\r\n                 */\r\n                _base.addExt = function(extName, extensionOptions) {\r\n                    var registeredExtensionObj = _plugin.extension(extName);\r\n                    var instance;\r\n                    var instanceAdded;\r\n                    var instanceContract;\r\n                    var contractResult;\r\n                    var contractFulfilled = true;\r\n                    if(registeredExtensionObj) {\r\n                        if(!_extensions[LEXICON.hOP](extName)) {\r\n                            instance = registeredExtensionObj.extensionFactory.call(_base,\r\n                                extendDeep({ }, registeredExtensionObj.defaultOptions),\r\n                                FRAMEWORK,\r\n                                COMPATIBILITY);\r\n\r\n                            if (instance) {\r\n                                instanceContract = instance.contract;\r\n                                if (type(instanceContract) == TYPES.f) {\r\n                                    contractResult = instanceContract(window);\r\n                                    contractFulfilled = type(contractResult) == TYPES.b ? contractResult : contractFulfilled;\r\n                                }\r\n                                if(contractFulfilled) {\r\n                                    _extensions[extName] = instance;\r\n                                    instanceAdded = instance.added;\r\n                                    if(type(instanceAdded) == TYPES.f)\r\n                                        instanceAdded(extensionOptions);\r\n\r\n                                    return _base.ext(extName);\r\n                                }\r\n                            }\r\n                        }\r\n                        else\r\n                            return _base.ext(extName);\r\n                    }\r\n                    else\r\n                        console.warn(\"A extension with the name \\\"\" + extName + \"\\\" isn't registered.\");\r\n                };\r\n\r\n                /**\r\n                 * Removes a extension from this instance.\r\n                 * @param extName The name of the extension which shall be removed.\r\n                 * @returns {boolean} True if the extension was removed, false otherwise e.g. if the extension wasn't added before.\r\n                 */\r\n                _base.removeExt = function(extName) {\r\n                    var instance = _extensions[extName];\r\n                    var instanceRemoved;\r\n                    if(instance) {\r\n                        delete _extensions[extName];\r\n\r\n                        instanceRemoved = instance.removed;\r\n                        if(type(instanceRemoved) == TYPES.f)\r\n                            instanceRemoved();\r\n\r\n                        return true;\r\n                    }\r\n                    return false;\r\n                };\r\n\r\n                /**\r\n                 * Constructs the plugin.\r\n                 * @param targetElement The element to which the plugin shall be applied.\r\n                 * @param options The initial options of the plugin.\r\n                 * @param extensions The extension(s) which shall be added right after the initialization.\r\n                 * @returns {boolean} True if the plugin was successfully initialized, false otherwise.\r\n                 */\r\n                function construct(targetElement, options, extensions) {\r\n                    _defaultOptions = globals.defaultOptions;\r\n                    _nativeScrollbarStyling = globals.nativeScrollbarStyling;\r\n                    _nativeScrollbarSize = extendDeep({}, globals.nativeScrollbarSize);\r\n                    _nativeScrollbarIsOverlaid = extendDeep({}, globals.nativeScrollbarIsOverlaid);\r\n                    _overlayScrollbarDummySize = extendDeep({}, globals.overlayScrollbarDummySize);\r\n                    _rtlScrollBehavior = extendDeep({}, globals.rtlScrollBehavior);\r\n\r\n                    //parse & set options but don't update\r\n                    setOptions(extendDeep({ }, _defaultOptions, options));\r\n\r\n                    //check if the plugin hasn't to be initialized\r\n                    if (_nativeScrollbarIsOverlaid.x && _nativeScrollbarIsOverlaid.x && !_currentPreparedOptions.nativeScrollbarsOverlaid.initialize) {\r\n                        dispatchCallback(\"onInitializationWithdrawn\");\r\n                        return false;\r\n                    }\r\n\r\n                    _cssCalc = globals.cssCalc;\r\n                    _msieVersion = globals.msie;\r\n                    _autoUpdateRecommended = globals.autoUpdateRecommended;\r\n                    _supportTransition = globals.supportTransition;\r\n                    _supportTransform = globals.supportTransform;\r\n                    _supportPassiveEvents = globals.supportPassiveEvents;\r\n                    _supportResizeObserver = globals.supportResizeObserver;\r\n                    _supportMutationObserver = globals.supportMutationObserver;\r\n                    _restrictedMeasuring = globals.restrictedMeasuring;\r\n                    _documentElement = FRAMEWORK(targetElement.ownerDocument);\r\n                    _documentElementNative = _documentElement[0];\r\n                    _windowElement = FRAMEWORK(_documentElementNative.defaultView || _documentElementNative.parentWindow);\r\n                    _windowElementNative = _windowElement[0];\r\n                    _htmlElement = findFirst(_documentElement, 'html');\r\n                    _bodyElement =  findFirst(_htmlElement, 'body');\r\n                    _targetElement = FRAMEWORK(targetElement);\r\n                    _targetElementNative = _targetElement[0];\r\n                    _isTextarea = _targetElement.is('textarea');\r\n                    _isBody = _targetElement.is('body');\r\n                    _documentMixed = _documentElementNative !== document;\r\n\r\n                    var initBodyScroll;\r\n                    if (_isBody) {\r\n                        initBodyScroll = {};\r\n                        initBodyScroll.l = MATH.max(_targetElement[_strScrollLeft](), _htmlElement[_strScrollLeft](), _windowElement[_strScrollLeft]());\r\n                        initBodyScroll.t = MATH.max(_targetElement[_strScrollTop](), _htmlElement[_strScrollTop](), _windowElement[_strScrollTop]());\r\n                    }\r\n\r\n                    //build OverlayScrollbars DOM and Events\r\n                    setupStructureDOM();\r\n                    setupStructureEvents();\r\n\r\n                    //build Scrollbars DOM and Events\r\n                    setupScrollbarsDOM();\r\n                    setupScrollbarEvents(true);\r\n                    setupScrollbarEvents(false);\r\n\r\n                    //build Scrollbar Corner DOM and Events\r\n                    setupScrollbarCornerDOM();\r\n                    setupScrollbarCornerEvents();\r\n\r\n                    //create mutation observers\r\n                    createMutationObservers();\r\n\r\n                    if(_isBody) {\r\n                        //apply the body scroll to handle it right in the update method\r\n                        _viewportElement[_strScrollLeft](initBodyScroll.l)[_strScrollTop](initBodyScroll.t);\r\n\r\n                        //set the focus on the viewport element so you dont have to click on the page to use keyboard keys (up / down / space) for scrolling\r\n                        if(document.activeElement == targetElement && _viewportElementNative.focus) {\r\n                            //set a tabindex to make the viewportElement focusable\r\n                            _viewportElement.attr('tabindex', '-1');\r\n                            _viewportElementNative.focus();\r\n                            /* the tabindex has to be removed due to;\r\n                             * If you set the tabindex attribute on an <div>, then its child content cannot be scrolled with the arrow keys unless you set tabindex on the content, too\r\n                             * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex\r\n                             */\r\n                            _viewportElement.one(_strMouseTouchDownEvent, function() {\r\n                                _viewportElement.removeAttr('tabindex');\r\n                            });\r\n                        }\r\n                    }\r\n\r\n                    //build resize observer for the host element\r\n                    setupResizeObserver(_sizeObserverElement, hostOnResized);\r\n\r\n                    //update for the first time & initialize cache\r\n                    _base.update(_strAuto);\r\n\r\n                    //the plugin is initialized now!\r\n                    _initialized = true;\r\n                    dispatchCallback(\"onInitialized\");\r\n\r\n                    //call all callbacks which would fire before the initialized was complete\r\n                    each(_callbacksInitQeueue, function(index, value) { dispatchCallback(value.n, value.a); });\r\n                    _callbacksInitQeueue = [ ];\r\n\r\n                    //add extensions\r\n                    if(type(extensions) == TYPES.s)\r\n                        extensions = [ extensions ];\r\n                    if(COMPATIBILITY.isA(extensions))\r\n                        each(extensions, function (index, value) {_base.addExt(value); });\r\n                    else if(FRAMEWORK.isPlainObject(extensions))\r\n                        each(extensions, function (key, value) { _base.addExt(key, value); });\r\n\r\n                    //add the transition class for transitions AFTER the first update & AFTER the applied extensions (for preventing unwanted transitions)\r\n                    setTimeout(function () {\r\n                        if (_supportTransition && !_destroyed)\r\n                            addClass(_hostElement, _classNameHostTransition);\r\n                    }, 333);\r\n\r\n                    return _initialized;\r\n                }\r\n\r\n                if (construct(pluginTargetElement, options, extensions)) {\r\n                    INSTANCES(pluginTargetElement, _base);\r\n                    return _base;\r\n                }\r\n                _base = undefined;\r\n            }\r\n\r\n            /**\r\n             * Initializes a new OverlayScrollbarsInstance object or changes options if already initialized or returns the current instance.\r\n             * @param pluginTargetElements The elements to which the Plugin shall be initialized.\r\n             * @param options The custom options with which the plugin shall be initialized.\r\n             * @param extensions The extension(s) which shall be added right after initialization.\r\n             * @returns {*}\r\n             */\r\n            _plugin = window[PLUGINNAME] = function(pluginTargetElements, options, extensions) {\r\n                if(arguments[LEXICON.l] === 0)\r\n                    return this;\r\n\r\n                var arr = [ ];\r\n                var optsIsPlainObj = FRAMEWORK.isPlainObject(options);\r\n                var inst;\r\n                var result;\r\n\r\n                //pluginTargetElements is null or undefined\r\n                if(!pluginTargetElements)\r\n                    return optsIsPlainObj || !options ? result : arr;\r\n\r\n                /*\r\n                   pluginTargetElements will be converted to:\r\n                   1. A jQueryElement Array\r\n                   2. A HTMLElement Array\r\n                   3. A Array with a single HTML Element\r\n                   so pluginTargetElements is always a array.\r\n                */\r\n                pluginTargetElements = pluginTargetElements[LEXICON.l] != undefined ? pluginTargetElements : [ pluginTargetElements[0] || pluginTargetElements ];\r\n                initOverlayScrollbarsStatics();\r\n\r\n                if(pluginTargetElements[LEXICON.l] > 0) {\r\n                    if(optsIsPlainObj) {\r\n                        FRAMEWORK.each(pluginTargetElements, function (i, v) {\r\n                            inst = v;\r\n                            if(inst !== undefined)\r\n                                arr.push(OverlayScrollbarsInstance(inst, options, extensions, _pluginsGlobals, _pluginsAutoUpdateLoop));\r\n                        });\r\n                    }\r\n                    else {\r\n                        FRAMEWORK.each(pluginTargetElements, function(i, v) {\r\n                            inst = INSTANCES(v);\r\n                            if((options === '!' && _plugin.valid(inst)) || (COMPATIBILITY.type(options) == TYPES.f && options(v, inst)))\r\n                                arr.push(inst);\r\n                            else if(options === undefined)\r\n                                arr.push(inst);\r\n                        });\r\n                    }\r\n                    result = arr[LEXICON.l] === 1 ? arr[0] : arr;\r\n                }\r\n                return result;\r\n            };\r\n\r\n            /**\r\n             * Returns a object which contains global information about the plugin and each instance of it.\r\n             * The returned object is just a copy, that means that changes to the returned object won't have any effect to the original object.\r\n             */\r\n            _plugin.globals = function () {\r\n                initOverlayScrollbarsStatics();\r\n                var globals = FRAMEWORK.extend(true, { }, _pluginsGlobals);\r\n                delete globals['msie'];\r\n                return globals;\r\n            };\r\n\r\n            /**\r\n             * Gets or Sets the default options for each new plugin initialization.\r\n             * @param newDefaultOptions The object with which the default options shall be extended.\r\n             */\r\n            _plugin.defaultOptions = function(newDefaultOptions) {\r\n                initOverlayScrollbarsStatics();\r\n                var currDefaultOptions = _pluginsGlobals.defaultOptions;\r\n                if(newDefaultOptions === undefined)\r\n                    return FRAMEWORK.extend(true, { }, currDefaultOptions);\r\n\r\n                //set the new default options\r\n                _pluginsGlobals.defaultOptions = FRAMEWORK.extend(true, { }, currDefaultOptions , _pluginsOptions._validate(newDefaultOptions, _pluginsOptions._template, true, currDefaultOptions)._default);\r\n            };\r\n\r\n            /**\r\n             * Checks whether the passed instance is a non-destroyed OverlayScrollbars instance.\r\n             * @param osInstance The potential OverlayScrollbars instance which shall be checked.\r\n             * @returns {boolean} True if the passed value is a non-destroyed OverlayScrollbars instance, false otherwise.\r\n             */\r\n            _plugin.valid = function (osInstance) {\r\n                return osInstance instanceof _plugin && !osInstance.getState().destroyed;\r\n            };\r\n\r\n            /**\r\n             * Registers, Unregisters or returns a extension.\r\n             * Register: Pass the name and the extension. (defaultOptions is optional)\r\n             * Unregister: Pass the name and anything except a function as extension parameter.\r\n             * Get extension: Pass the name of the extension which shall be got.\r\n             * Get all extensions: Pass no arguments.\r\n             * @param extensionName The name of the extension which shall be registered, unregistered or returned.\r\n             * @param extension A function which generates the instance of the extension or anything other to remove a already registered extension.\r\n             * @param defaultOptions The default options which shall be used for the registered extension.\r\n             */\r\n            _plugin.extension = function(extensionName, extension, defaultOptions) {\r\n                var extNameTypeString = COMPATIBILITY.type(extensionName) == TYPES.s;\r\n                var argLen = arguments[LEXICON.l];\r\n                var i = 0;\r\n                if(argLen < 1 || !extNameTypeString) {\r\n                    //return a copy of all extension objects\r\n                    return FRAMEWORK.extend(true, { length : _pluginsExtensions[LEXICON.l] }, _pluginsExtensions);\r\n                }\r\n                else if(extNameTypeString) {\r\n                    if(COMPATIBILITY.type(extension) == TYPES.f) {\r\n                        //register extension\r\n                        _pluginsExtensions.push({\r\n                            name : extensionName,\r\n                            extensionFactory : extension,\r\n                            defaultOptions : defaultOptions\r\n                        });\r\n                    }\r\n                    else {\r\n                        for(; i < _pluginsExtensions[LEXICON.l]; i++) {\r\n                            if (_pluginsExtensions[i].name === extensionName) {\r\n                                if(argLen > 1)\r\n                                    _pluginsExtensions.splice(i, 1); //remove extension\r\n                                else\r\n                                    return FRAMEWORK.extend(true, { }, _pluginsExtensions[i]); //return extension with the given name\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            };\r\n\r\n            return _plugin;\r\n        })();\r\n\r\n        if(JQUERY && JQUERY.fn) {\r\n            /**\r\n             * The jQuery initialization interface.\r\n             * @param options The initial options for the construction of the plugin. To initialize the plugin, this option has to be a object! If it isn't a object, the instance(s) are returned and the plugin wont be initialized.\r\n             * @param extensions The extension(s) which shall be added right after initialization.\r\n             * @returns {*} After initialization it returns the jQuery element array, else it returns the instance(s) of the elements which are selected.\r\n             */\r\n            JQUERY.fn.overlayScrollbars = function (options, extensions) {\r\n                var _elements = this;\r\n                if(JQUERY.isPlainObject(options)) {\r\n                    JQUERY.each(_elements, function() { PLUGIN(this, options, extensions); });\r\n                    return _elements;\r\n                }\r\n                else\r\n                    return PLUGIN(_elements, options);\r\n            };\r\n        }\r\n        return PLUGIN;\r\n    }\r\n));\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/jquery.overlayScrollbars.js","// txtTruncate - a jQuery plugin to truncate text\r\n// version 1.1.0\r\n// https://github.com/blakehaswell/txtTruncate\r\n//\r\n// Copyright (c) 2011-2012 Blake Haswell\r\n// Licensed under the MIT license: http://opensource.org/licenses/MIT\r\n(function ($) {\r\n\r\n    'use strict';\r\n\r\n\r\n    // Constructor\r\n    function Truncator(elem, options) {\r\n\r\n        // Cache the instance.\r\n        var self = this;\r\n\r\n        self.$elem      = $(elem);\r\n        self.lineHeight = self._getLineHeight();\r\n        self.origHeight = self.$elem.height();\r\n        self.origTxt    = self.$elem.text();\r\n\r\n        // Override default settings with passed options (if any)\r\n        self.settings   = $.extend({}, self._defaults, options || {});\r\n\r\n        self._setLines();\r\n\r\n        self.truncate();\r\n\r\n        // Text should be truncated whenever the window has been resized so that it\r\n        // works as expected on fluid layouts\r\n        var timeout;\r\n        $(window).resize(function(){\r\n\r\n            // Clear any existing timeout.\r\n            clearTimeout(timeout);\r\n\r\n            // Create a new one.\r\n            timeout = setTimeout($.proxy(self.truncate, self), 200);\r\n        });\r\n    }\r\n\r\n\r\n    Truncator.prototype = {\r\n\r\n        /**\r\n         * If the element doesn't fit in the specified number of lines then we\r\n         * collapse the element to the desired height and truncate the text.\r\n         */\r\n        hide: function () {\r\n            if (this._getCurrentLines() > this.settings.lines) {\r\n                this.$elem.animate({\r\n                    height: this.lineHeight * this.settings.lines,\r\n                }, $.proxy(this.truncate, this));\r\n            }\r\n        },\r\n\r\n        /**\r\n         * Restores the element's original text and expands the element to take\r\n         * up the required space.\r\n         */\r\n        show: function () {\r\n\r\n            // Set the element's height to the current height to stop it from\r\n            // getting bigger when we restore the original text\r\n            this.$elem.height(this.$elem.height());\r\n\r\n            this._restoreOrigTxt();\r\n            this.$elem.animate({\r\n                height: this.origHeight,\r\n            });\r\n\r\n        },\r\n\r\n        /**\r\n         * Removes characters from the element until it fits in the specified\r\n         * number of lines.\r\n         */\r\n        truncate: function () {\r\n\r\n            // Prepare the element before calculating the lines\r\n            this._prepareElem();\r\n\r\n            var currTxt      = this._restoreOrigTxt(),\r\n                origTxtLines = this._getCurrentLines(),\r\n                charsPerLine = Math.round(currTxt.length / origTxtLines),\r\n                charsPerHalfLine = Math.round(charsPerLine / 2);\r\n\r\n            // Only continue to truncate if we have more lines than we want\r\n            if (origTxtLines > this.settings.lines) {\r\n\r\n                // If we have way more lines than we want take a guess at how\r\n                // much to cull\r\n                if (origTxtLines > this.settings.lines + 1) {\r\n\r\n                    // Given our charsPerLine value, truncate text so it's about\r\n                    // 1 line too tall\r\n                    currTxt = this._truncateElementTxt((this.settings.lines + 1) * charsPerLine);\r\n\r\n                    // If we still have way too many lines then keep removing\r\n                    // half a line of text until we only have 1 line more than\r\n                    // we want\r\n                    while (this._getCurrentLines() > this.settings.lines + 1) {\r\n                        currTxt = this._truncateElementTxt(currTxt.length - charsPerHalfLine);\r\n                    }\r\n\r\n                }\r\n\r\n                // Take off 1 character at a time until we have the number of\r\n                // lines we want.\r\n                while (this._getCurrentLines() > this.settings.lines) {\r\n\r\n                    // Due to potential weirdness where height() and lineHeight produce different values even for one line, we need to stop infinite loops.\r\n                    // If we're down to half a line and still truncating, something has gone wrong.\r\n                    if (currTxt.length == charsPerHalfLine) {\r\n                        this._recoverFromLoop(currTxt);\r\n                        break;\r\n                    }\r\n\r\n                    // Otherwise, truncate.\r\n                    currTxt = this._truncateElementTxt(currTxt.length - 1);\r\n                }\r\n            }\r\n\r\n            this._restoreElem();\r\n\r\n        },\r\n\r\n        /**\r\n         * The default settings to use if no `options` argument is provided when\r\n         * instantiating the Truncator.\r\n         */\r\n        _defaults: {\r\n            end   : '…',\r\n            lines : null,\r\n        },\r\n\r\n        /**\r\n         * Get the line height, if we're in IE and there's no unit of measurement convert it to a %\r\n         * so jQuery can calculate the right px value and IE doesn't explode.\r\n         */\r\n        _getLineHeight : function () {\r\n            var ieVal = null;\r\n\r\n            // check if IE's 'currentStyle' is available\r\n            if (document.body.currentStyle) {\r\n\r\n                // get the line height as IE reports it - note % are converted to pt\r\n                ieVal = this.$elem.get(0).currentStyle.lineHeight;\r\n\r\n                // if there's no unit of measurement\r\n                if (!ieVal.match(/px|PX|pt|PT|em|EM/)) {\r\n\r\n                    // set the lineHeight to an equivalent % so that IE reports a value\r\n                    // jQuery can work with\r\n                    this.$elem.css('line-height', (ieVal * 100) + '%');\r\n                }\r\n            }\r\n\r\n            return parseInt(this.$elem.css('line-height'), 10);\r\n        },\r\n\r\n        /**\r\n         * Determines how many \"lines\" the element takes up (based on\r\n         * its height).\r\n         */\r\n        _getCurrentLines: function () {\r\n            return Math.round(this.$elem.height() / this.lineHeight);\r\n        },\r\n\r\n        /**\r\n         * Prepares the element to be manipulated by the truncate method by\r\n         * removing CSS properties which influence height.\r\n         *\r\n         * TODO Call at the start of the truncate method and reset properties to their original value at the end?\r\n         */\r\n        _prepareElem: function () {\r\n\r\n            // Store the original CSS values so we can restore them later\r\n            this.css = {\r\n                height    : $.style(this.$elem, 'height') || 'auto',\r\n                maxHeight : this.$elem.css('max-height'),\r\n                minHeight : this.$elem.css('min-height'),\r\n            };\r\n\r\n            // Remove CSS values which influence the height of the element\r\n            this.$elem.css({\r\n                height    : 'auto',\r\n                maxHeight : 'none',\r\n                minHeight : 0,\r\n            });\r\n        },\r\n\r\n        /**\r\n         * Helps recover from infinite loops brought on by stupid discrepancies between height and line-height.\r\n         * @param string currTxt The currently displayed text.\r\n         */\r\n        _recoverFromLoop: function(currTxt){\r\n\r\n            // Grab the current height of the element (which should be the 'ideal' height).\r\n            var height = this.$elem.height();\r\n            var maxLength = this.origTxt.length;\r\n\r\n            // Now keep adding characters back until the height changes, or alternatively, we've restored all the characters.\r\n            while (height == this.$elem.height() && currTxt.length < maxLength) {\r\n                currTxt = this._truncateElementTxt(currTxt.length + 1);\r\n            }\r\n\r\n            // If the height actually changed, take off the last character we added.\r\n            if (this.$elem.height() != height) {\r\n                this._truncateElementTxt(currTxt.length - 1);\r\n            }\r\n\r\n            // If we wound up displaying everything, drop the ...\r\n            if (currTxt.length == maxLength) {\r\n                this._restoreOrigTxt();\r\n            }\r\n        },\r\n\r\n        /**\r\n         * Restores the element's original styles.\r\n         */\r\n        _restoreElem: function () {\r\n            this.$elem.css(this.css);\r\n        },\r\n\r\n        /**\r\n         * Restores the element's original text. Return value is the\r\n         * original text.\r\n         */\r\n        _restoreOrigTxt: function () {\r\n            this.$elem.text(this.origTxt);\r\n            return this.origTxt;\r\n        },\r\n\r\n        /**\r\n         * If a number of lines hasn't been defined in the settings then we set\r\n         * the lines based on the element's `max-height` or, failing that,\r\n         * default to 1 line.\r\n         */\r\n        _setLines: function () {\r\n\r\n            // If a maximum number of lines hasn't been defined then we\r\n            // calculate it\r\n            if (!this.settings.lines) {\r\n\r\n                // If the element's max-height is greater than its line-height\r\n                // we use that to calculate the number of lines\r\n                var maxHeight = parseInt(this.$elem.css('max-height'), 10);\r\n\r\n                if (maxHeight > this.lineHeight) {\r\n                    this.settings.lines = Math.floor(maxHeight / this.lineHeight);\r\n                }\r\n\r\n                // Otherwise we'll just assume that we want to truncate to\r\n                // 1 line\r\n                else {\r\n                    this.settings.lines = 1;\r\n                }\r\n\r\n            }\r\n\r\n        },\r\n\r\n        /**\r\n         * Given a `length`, this method truncates the element's text to that\r\n         * length and adds the prepends the `end` string.\r\n         *\r\n         * Returns the truncated text (not including the `end` string).\r\n         */\r\n        _truncateElementTxt: function (length) {\r\n            var txt = this.origTxt.substring(0, length);\r\n            this.$elem.text(txt + this.settings.end);\r\n            return txt;\r\n        },\r\n\r\n    };\r\n\r\n\r\n    // jQuery plugin\r\n    $.fn.txtTruncate = function (options) {\r\n        return this.each(function () {\r\n            $(this).data('truncator', new Truncator(this, options));\r\n        });\r\n    };\r\n\r\n\r\n}(jQuery));\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/jquery.txtTruncate.js","import 'bootstrap';\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/autoload/_bootstrap.js","/*!\n  * Bootstrap v4.3.1 (https://getbootstrap.com/)\n  * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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 = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, function (exports, $, Popper) { 'use strict';\n\n  $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n  Popper = Popper && Popper.hasOwnProperty('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 _defineProperty(obj, key, value) {\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n\n    return obj;\n  }\n\n  function _objectSpread(target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i] != null ? arguments[i] : {};\n      var ownKeys = Object.keys(source);\n\n      if (typeof Object.getOwnPropertySymbols === 'function') {\n        ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n          return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n        }));\n      }\n\n      ownKeys.forEach(function (key) {\n        _defineProperty(target, key, source[key]);\n      });\n    }\n\n    return target;\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.3.1): util.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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    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; // eslint-disable-line no-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  };\n  setTransitionEndSupport();\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  var NAME = 'alert';\n  var VERSION = '4.3.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 = {\n    DISMISS: '[data-dismiss=\"alert\"]'\n  };\n  var Event = {\n    CLOSE: \"close\" + EVENT_KEY,\n    CLOSED: \"closed\" + EVENT_KEY,\n    CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n  };\n  var ClassName = {\n    ALERT: 'alert',\n    FADE: 'fade',\n    SHOW: 'show'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Alert =\n  /*#__PURE__*/\n  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(\".\" + ClassName.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(ClassName.SHOW);\n\n      if (!$(element).hasClass(ClassName.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.3.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 ClassName$1 = {\n    ACTIVE: 'active',\n    BUTTON: 'btn',\n    FOCUS: 'focus'\n  };\n  var Selector$1 = {\n    DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n    DATA_TOGGLE: '[data-toggle=\"buttons\"]',\n    INPUT: 'input:not([type=\"hidden\"])',\n    ACTIVE: '.active',\n    BUTTON: '.btn'\n  };\n  var Event$1 = {\n    CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n    FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1)\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Button =\n  /*#__PURE__*/\n  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$1.DATA_TOGGLE)[0];\n\n      if (rootElement) {\n        var input = this._element.querySelector(Selector$1.INPUT);\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n              triggerChangeEvent = false;\n            } else {\n              var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n              if (activeElement) {\n                $(activeElement).removeClass(ClassName$1.ACTIVE);\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {\n              return;\n            }\n\n            input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n            $(input).trigger('change');\n          }\n\n          input.focus();\n          addAriaPressed = false;\n        }\n      }\n\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(ClassName$1.ACTIVE);\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$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n    event.preventDefault();\n    var button = event.target;\n\n    if (!$(button).hasClass(ClassName$1.BUTTON)) {\n      button = $(button).closest(Selector$1.BUTTON);\n    }\n\n    Button._jQueryInterface.call($(button), 'toggle');\n  }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n    var button = $(event.target).closest(Selector$1.BUTTON)[0];\n    $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\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.3.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 = {\n    NEXT: 'next',\n    PREV: 'prev',\n    LEFT: 'left',\n    RIGHT: 'right'\n  };\n  var Event$2 = {\n    SLIDE: \"slide\" + EVENT_KEY$2,\n    SLID: \"slid\" + EVENT_KEY$2,\n    KEYDOWN: \"keydown\" + EVENT_KEY$2,\n    MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n    MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n    TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n    TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n    TOUCHEND: \"touchend\" + EVENT_KEY$2,\n    POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n    POINTERUP: \"pointerup\" + EVENT_KEY$2,\n    DRAG_START: \"dragstart\" + EVENT_KEY$2,\n    LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n  };\n  var ClassName$2 = {\n    CAROUSEL: 'carousel',\n    ACTIVE: 'active',\n    SLIDE: 'slide',\n    RIGHT: 'carousel-item-right',\n    LEFT: 'carousel-item-left',\n    NEXT: 'carousel-item-next',\n    PREV: 'carousel-item-prev',\n    ITEM: 'carousel-item',\n    POINTER_EVENT: 'pointer-event'\n  };\n  var Selector$2 = {\n    ACTIVE: '.active',\n    ACTIVE_ITEM: '.active.carousel-item',\n    ITEM: '.carousel-item',\n    ITEM_IMG: '.carousel-item img',\n    NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n    INDICATORS: '.carousel-indicators',\n    DATA_SLIDE: '[data-slide], [data-slide-to]',\n    DATA_RIDE: '[data-ride=\"carousel\"]'\n  };\n  var PointerType = {\n    TOUCH: 'touch',\n    PEN: 'pen'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Carousel =\n  /*#__PURE__*/\n  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$2.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$2.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$2.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$2.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 = _objectSpread({}, 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; // 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$2.KEYDOWN, function (event) {\n          return _this2._keydown(event);\n        });\n      }\n\n      if (this._config.pause === 'hover') {\n        $(this._element).on(Event$2.MOUSEENTER, function (event) {\n          return _this2.pause(event);\n        }).on(Event$2.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$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n        return e.preventDefault();\n      });\n\n      if (this._pointerEvent) {\n        $(this._element).on(Event$2.POINTERDOWN, function (event) {\n          return start(event);\n        });\n        $(this._element).on(Event$2.POINTERUP, function (event) {\n          return end(event);\n        });\n\n        this._element.classList.add(ClassName$2.POINTER_EVENT);\n      } else {\n        $(this._element).on(Event$2.TOUCHSTART, function (event) {\n          return start(event);\n        });\n        $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n          return move(event);\n        });\n        $(this._element).on(Event$2.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        default:\n      }\n    };\n\n    _proto._getItemIndex = function _getItemIndex(element) {\n      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.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$2.ACTIVE_ITEM));\n\n      var slideEvent = $.Event(Event$2.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$2.ACTIVE));\n        $(indicators).removeClass(ClassName$2.ACTIVE);\n\n        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n        if (nextIndicator) {\n          $(nextIndicator).addClass(ClassName$2.ACTIVE);\n        }\n      }\n    };\n\n    _proto._slide = function _slide(direction, element) {\n      var _this4 = this;\n\n      var activeElement = this._element.querySelector(Selector$2.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 = ClassName$2.LEFT;\n        orderClassName = ClassName$2.NEXT;\n        eventDirectionName = Direction.LEFT;\n      } else {\n        directionalClassName = ClassName$2.RIGHT;\n        orderClassName = ClassName$2.PREV;\n        eventDirectionName = Direction.RIGHT;\n      }\n\n      if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\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$2.SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n\n      if ($(this._element).hasClass(ClassName$2.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(ClassName$2.ACTIVE);\n          $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + 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(ClassName$2.ACTIVE);\n        $(nextElement).addClass(ClassName$2.ACTIVE);\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 = _objectSpread({}, Default, $(this).data());\n\n        if (typeof config === 'object') {\n          _config = _objectSpread({}, _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(ClassName$2.CAROUSEL)) {\n        return;\n      }\n\n      var config = _objectSpread({}, $(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$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n  $(window).on(Event$2.LOAD_DATA_API, function () {\n    var carousels = [].slice.call(document.querySelectorAll(Selector$2.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.3.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$3 = {\n    SHOW: \"show\" + EVENT_KEY$3,\n    SHOWN: \"shown\" + EVENT_KEY$3,\n    HIDE: \"hide\" + EVENT_KEY$3,\n    HIDDEN: \"hidden\" + EVENT_KEY$3,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n  };\n  var ClassName$3 = {\n    SHOW: 'show',\n    COLLAPSE: 'collapse',\n    COLLAPSING: 'collapsing',\n    COLLAPSED: 'collapsed'\n  };\n  var Dimension = {\n    WIDTH: 'width',\n    HEIGHT: 'height'\n  };\n  var Selector$3 = {\n    ACTIVES: '.show, .collapsing',\n    DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Collapse =\n  /*#__PURE__*/\n  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$3.DATA_TOGGLE));\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(ClassName$3.SHOW)) {\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(ClassName$3.SHOW)) {\n        return;\n      }\n\n      var actives;\n      var activesData;\n\n      if (this._parent) {\n        actives = [].slice.call(this._parent.querySelectorAll(Selector$3.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(ClassName$3.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$3.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(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n      this._element.style[dimension] = 0;\n\n      if (this._triggerArray.length) {\n        $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n      }\n\n      this.setTransitioning(true);\n\n      var complete = function complete() {\n        $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n        _this._element.style[dimension] = '';\n\n        _this.setTransitioning(false);\n\n        $(_this._element).trigger(Event$3.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(ClassName$3.SHOW)) {\n        return;\n      }\n\n      var startEvent = $.Event(Event$3.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(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\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(ClassName$3.SHOW)) {\n              $(trigger).addClass(ClassName$3.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(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.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 = _objectSpread({}, 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(ClassName$3.SHOW);\n\n      if (triggerArray.length) {\n        $(triggerArray).toggleClass(ClassName$3.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 = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {});\n\n        if (!data && _config.toggle && /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$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n    // preventDefault only for <a> 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.3.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$4 = {\n    HIDE: \"hide\" + EVENT_KEY$4,\n    HIDDEN: \"hidden\" + EVENT_KEY$4,\n    SHOW: \"show\" + EVENT_KEY$4,\n    SHOWN: \"shown\" + EVENT_KEY$4,\n    CLICK: \"click\" + EVENT_KEY$4,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n    KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n    KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n  };\n  var ClassName$4 = {\n    DISABLED: 'disabled',\n    SHOW: 'show',\n    DROPUP: 'dropup',\n    DROPRIGHT: 'dropright',\n    DROPLEFT: 'dropleft',\n    MENURIGHT: 'dropdown-menu-right',\n    MENULEFT: 'dropdown-menu-left',\n    POSITION_STATIC: 'position-static'\n  };\n  var Selector$4 = {\n    DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n    FORM_CHILD: '.dropdown form',\n    MENU: '.dropdown-menu',\n    NAVBAR_NAV: '.navbar-nav',\n    VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n  };\n  var AttachmentMap = {\n    TOP: 'top-start',\n    TOPEND: 'top-end',\n    BOTTOM: 'bottom-start',\n    BOTTOMEND: 'bottom-end',\n    RIGHT: 'right-start',\n    RIGHTEND: 'right-end',\n    LEFT: 'left-start',\n    LEFTEND: 'left-end'\n  };\n  var Default$2 = {\n    offset: 0,\n    flip: true,\n    boundary: 'scrollParent',\n    reference: 'toggle',\n    display: 'dynamic'\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    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Dropdown =\n  /*#__PURE__*/\n  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(ClassName$4.DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n      Dropdown._clearMenus();\n\n      if (isActive) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $.Event(Event$4.SHOW, relatedTarget);\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) {\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(ClassName$4.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$4.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(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n    };\n\n    _proto.show = function show() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $(parent).trigger(showEvent);\n\n      if (showEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n    };\n\n    _proto.hide = function hide() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n        return;\n      }\n\n      var relatedTarget = {\n        relatedTarget: this._element\n      };\n      var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n      var parent = Dropdown._getParentFromElement(this._element);\n\n      $(parent).trigger(hideEvent);\n\n      if (hideEvent.isDefaultPrevented()) {\n        return;\n      }\n\n      $(this._menu).toggleClass(ClassName$4.SHOW);\n      $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, 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$4.CLICK, function (event) {\n        event.preventDefault();\n        event.stopPropagation();\n\n        _this.toggle();\n      });\n    };\n\n    _proto._getConfig = function _getConfig(config) {\n      config = _objectSpread({}, 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$4.MENU);\n        }\n      }\n\n      return this._menu;\n    };\n\n    _proto._getPlacement = function _getPlacement() {\n      var $parentDropdown = $(this._element.parentNode);\n      var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n      if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n        placement = AttachmentMap.TOP;\n\n        if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n          placement = AttachmentMap.TOPEND;\n        }\n      } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n        placement = AttachmentMap.RIGHT;\n      } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n        placement = AttachmentMap.LEFT;\n      } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n        placement = AttachmentMap.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 = _objectSpread({}, 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        } // Disable Popper.js if we have a static display\n\n      };\n\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        };\n      }\n\n      return 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$4.DATA_TOGGLE));\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(ClassName$4.SHOW)) {\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$4.HIDE, 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        $(dropdownMenu).removeClass(ClassName$4.SHOW);\n        $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, 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$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n        return;\n      }\n\n      var parent = Dropdown._getParentFromElement(this);\n\n      var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n        if (event.which === ESCAPE_KEYCODE) {\n          var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n          $(toggle).trigger('focus');\n        }\n\n        $(this).trigger('click');\n        return;\n      }\n\n      var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS));\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$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n    event.preventDefault();\n    event.stopPropagation();\n\n    Dropdown._jQueryInterface.call($(this), 'toggle');\n  }).on(Event$4.CLICK_DATA_API, Selector$4.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.3.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$5 = {\n    HIDE: \"hide\" + EVENT_KEY$5,\n    HIDDEN: \"hidden\" + EVENT_KEY$5,\n    SHOW: \"show\" + EVENT_KEY$5,\n    SHOWN: \"shown\" + EVENT_KEY$5,\n    FOCUSIN: \"focusin\" + EVENT_KEY$5,\n    RESIZE: \"resize\" + EVENT_KEY$5,\n    CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n    KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n    MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n    MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n  };\n  var ClassName$5 = {\n    SCROLLABLE: 'modal-dialog-scrollable',\n    SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n    BACKDROP: 'modal-backdrop',\n    OPEN: 'modal-open',\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$5 = {\n    DIALOG: '.modal-dialog',\n    MODAL_BODY: '.modal-body',\n    DATA_TOGGLE: '[data-toggle=\"modal\"]',\n    DATA_DISMISS: '[data-dismiss=\"modal\"]',\n    FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n    STICKY_CONTENT: '.sticky-top'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Modal =\n  /*#__PURE__*/\n  function () {\n    function Modal(element, config) {\n      this._config = this._getConfig(config);\n      this._element = element;\n      this._dialog = element.querySelector(Selector$5.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(ClassName$5.FADE)) {\n        this._isTransitioning = true;\n      }\n\n      var showEvent = $.Event(Event$5.SHOW, {\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$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n        return _this.hide(event);\n      });\n      $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n        $(_this._element).one(Event$5.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$5.HIDE);\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(ClassName$5.FADE);\n\n      if (transition) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      $(document).off(Event$5.FOCUSIN);\n      $(this._element).removeClass(ClassName$5.SHOW);\n      $(this._element).off(Event$5.CLICK_DISMISS);\n      $(this._dialog).off(Event$5.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$5.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 = _objectSpread({}, Default$3, config);\n      Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n      return config;\n    };\n\n    _proto._showElement = function _showElement(relatedTarget) {\n      var _this3 = this;\n\n      var transition = $(this._element).hasClass(ClassName$5.FADE);\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      if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) {\n        this._dialog.querySelector(Selector$5.MODAL_BODY).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(ClassName$5.SHOW);\n\n      if (this._config.focus) {\n        this._enforceFocus();\n      }\n\n      var shownEvent = $.Event(Event$5.SHOWN, {\n        relatedTarget: relatedTarget\n      });\n\n      var transitionComplete = function transitionComplete() {\n        if (_this3._config.focus) {\n          _this3._element.focus();\n        }\n\n        _this3._isTransitioning = false;\n        $(_this3._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 _this4 = this;\n\n      $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n      .on(Event$5.FOCUSIN, function (event) {\n        if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {\n          _this4._element.focus();\n        }\n      });\n    };\n\n    _proto._setEscapeEvent = function _setEscapeEvent() {\n      var _this5 = this;\n\n      if (this._isShown && this._config.keyboard) {\n        $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n          if (event.which === ESCAPE_KEYCODE$1) {\n            event.preventDefault();\n\n            _this5.hide();\n          }\n        });\n      } else if (!this._isShown) {\n        $(this._element).off(Event$5.KEYDOWN_DISMISS);\n      }\n    };\n\n    _proto._setResizeEvent = function _setResizeEvent() {\n      var _this6 = this;\n\n      if (this._isShown) {\n        $(window).on(Event$5.RESIZE, function (event) {\n          return _this6.handleUpdate(event);\n        });\n      } else {\n        $(window).off(Event$5.RESIZE);\n      }\n    };\n\n    _proto._hideModal = function _hideModal() {\n      var _this7 = 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._isTransitioning = false;\n\n      this._showBackdrop(function () {\n        $(document.body).removeClass(ClassName$5.OPEN);\n\n        _this7._resetAdjustments();\n\n        _this7._resetScrollbar();\n\n        $(_this7._element).trigger(Event$5.HIDDEN);\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 _this8 = this;\n\n      var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div');\n        this._backdrop.className = ClassName$5.BACKDROP;\n\n        if (animate) {\n          this._backdrop.classList.add(animate);\n        }\n\n        $(this._backdrop).appendTo(document.body);\n        $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n          if (_this8._ignoreBackdropClick) {\n            _this8._ignoreBackdropClick = false;\n            return;\n          }\n\n          if (event.target !== event.currentTarget) {\n            return;\n          }\n\n          if (_this8._config.backdrop === 'static') {\n            _this8._element.focus();\n          } else {\n            _this8.hide();\n          }\n        });\n\n        if (animate) {\n          Util.reflow(this._backdrop);\n        }\n\n        $(this._backdrop).addClass(ClassName$5.SHOW);\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(ClassName$5.SHOW);\n\n        var callbackRemove = function callbackRemove() {\n          _this8._removeBackdrop();\n\n          if (callback) {\n            callback();\n          }\n        };\n\n        if ($(this._element).hasClass(ClassName$5.FADE)) {\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 = rect.left + rect.right < window.innerWidth;\n      this._scrollbarWidth = this._getScrollbarWidth();\n    };\n\n    _proto._setScrollbar = function _setScrollbar() {\n      var _this9 = 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$5.FIXED_CONTENT));\n        var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.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) + _this9._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) - _this9._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(ClassName$5.OPEN);\n    };\n\n    _proto._resetScrollbar = function _resetScrollbar() {\n      // Restore fixed content padding\n      var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.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$5.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 = ClassName$5.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 = _objectSpread({}, 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$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n    var _this10 = 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' : _objectSpread({}, $(target).data(), $(this).data());\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault();\n    }\n\n    var $target = $(target).one(Event$5.SHOW, 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$5.HIDDEN, function () {\n        if ($(_this10).is(':visible')) {\n          _this10.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.3.1): tools/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/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', '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     * 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  };\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,[a-z0-9+/]+=*$/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, l = regExp.length; i < l; 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, len);\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.3.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  };\n  var AttachmentMap$1 = {\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: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<div class=\"tooltip-inner\"></div></div>',\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  };\n  var HoverState = {\n    SHOW: 'show',\n    OUT: 'out'\n  };\n  var Event$6 = {\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 ClassName$6 = {\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$6 = {\n    TOOLTIP: '.tooltip',\n    TOOLTIP_INNER: '.tooltip-inner',\n    ARROW: '.arrow'\n  };\n  var Trigger = {\n    HOVER: 'hover',\n    FOCUS: 'focus',\n    CLICK: 'click',\n    MANUAL: 'manual'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Tooltip =\n  /*#__PURE__*/\n  function () {\n    function Tooltip(element, config) {\n      /**\n       * Check for Popper dependency\n       * Popper - https://popper.js.org\n       */\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(ClassName$6.SHOW)) {\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');\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 !== null) {\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(ClassName$6.FADE);\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, {\n          placement: attachment,\n          modifiers: {\n            offset: this._getOffset(),\n            flip: {\n              behavior: this.config.fallbackPlacement\n            },\n            arrow: {\n              element: Selector$6.ARROW\n            },\n            preventOverflow: {\n              boundariesElement: this.config.boundary\n            }\n          },\n          onCreate: function onCreate(data) {\n            if (data.originalPlacement !== data.placement) {\n              _this._handlePopperPlacementChange(data);\n            }\n          },\n          onUpdate: function onUpdate(data) {\n            return _this._handlePopperPlacementChange(data);\n          }\n        });\n        $(tip).addClass(ClassName$6.SHOW); // 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 === HoverState.OUT) {\n            _this._leave(null, _this);\n          }\n        };\n\n        if ($(this.tip).hasClass(ClassName$6.FADE)) {\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 !== HoverState.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(ClassName$6.SHOW); // 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(ClassName$6.FADE)) {\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$6.TOOLTIP_INNER)), this.getTitle());\n      $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\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._getOffset = function _getOffset() {\n      var _this3 = this;\n\n      var offset = {};\n\n      if (typeof this.config.offset === 'function') {\n        offset.fn = function (data) {\n          data.offsets = _objectSpread({}, data.offsets, _this3.config.offset(data.offsets, _this3.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$1[placement.toUpperCase()];\n    };\n\n    _proto._setListeners = function _setListeners() {\n      var _this4 = this;\n\n      var triggers = this.config.trigger.split(' ');\n      triggers.forEach(function (trigger) {\n        if (trigger === 'click') {\n          $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {\n            return _this4.toggle(event);\n          });\n        } else if (trigger !== Trigger.MANUAL) {\n          var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;\n          var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;\n          $(_this4.element).on(eventIn, _this4.config.selector, function (event) {\n            return _this4._enter(event);\n          }).on(eventOut, _this4.config.selector, function (event) {\n            return _this4._leave(event);\n          });\n        }\n      });\n      $(this.element).closest('.modal').on('hide.bs.modal', function () {\n        if (_this4.element) {\n          _this4.hide();\n        }\n      });\n\n      if (this.config.selector) {\n        this.config = _objectSpread({}, 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(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n        context._hoverState = HoverState.SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HoverState.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 === HoverState.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 = HoverState.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 === HoverState.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 = _objectSpread({}, 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      var popperInstance = popperData.instance;\n      this.tip = popperInstance.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(ClassName$6.FADE);\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$6;\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.3.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 = _objectSpread({}, Tooltip.Default, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div></div>'\n  });\n\n  var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, {\n    content: '(string|element|function)'\n  });\n\n  var ClassName$7 = {\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$7 = {\n    TITLE: '.popover-header',\n    CONTENT: '.popover-body'\n  };\n  var Event$7 = {\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     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Popover =\n  /*#__PURE__*/\n  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$7.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$7.CONTENT), content);\n      $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\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$7;\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.3.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$8 = {\n    ACTIVATE: \"activate\" + EVENT_KEY$8,\n    SCROLL: \"scroll\" + EVENT_KEY$8,\n    LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n  };\n  var ClassName$8 = {\n    DROPDOWN_ITEM: 'dropdown-item',\n    DROPDOWN_MENU: 'dropdown-menu',\n    ACTIVE: 'active'\n  };\n  var Selector$8 = {\n    DATA_SPY: '[data-spy=\"scroll\"]',\n    ACTIVE: '.active',\n    NAV_LIST_GROUP: '.nav, .list-group',\n    NAV_LINKS: '.nav-link',\n    NAV_ITEMS: '.nav-item',\n    LIST_ITEMS: '.list-group-item',\n    DROPDOWN: '.dropdown',\n    DROPDOWN_ITEMS: '.dropdown-item',\n    DROPDOWN_TOGGLE: '.dropdown-toggle'\n  };\n  var OffsetMethod = {\n    OFFSET: 'offset',\n    POSITION: 'position'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var ScrollSpy =\n  /*#__PURE__*/\n  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$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      $(this._scrollElement).on(Event$8.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 ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      var offsetBase = offsetMethod === OffsetMethod.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 = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {});\n\n      if (typeof config.target !== 'string') {\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      var offsetLength = this._offsets.length;\n\n      for (var i = offsetLength; 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(ClassName$8.DROPDOWN_ITEM)) {\n        $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n        $link.addClass(ClassName$8.ACTIVE);\n      } else {\n        // Set triggered link as active\n        $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n\n        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + \", \" + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item\n\n        $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE);\n      }\n\n      $(this._scrollElement).trigger(Event$8.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(ClassName$8.ACTIVE);\n      }).forEach(function (node) {\n        return node.classList.remove(ClassName$8.ACTIVE);\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$8.LOAD_DATA_API, function () {\n    var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.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.3.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$9 = {\n    HIDE: \"hide\" + EVENT_KEY$9,\n    HIDDEN: \"hidden\" + EVENT_KEY$9,\n    SHOW: \"show\" + EVENT_KEY$9,\n    SHOWN: \"shown\" + EVENT_KEY$9,\n    CLICK_DATA_API: \"click\" + EVENT_KEY$9 + DATA_API_KEY$7\n  };\n  var ClassName$9 = {\n    DROPDOWN_MENU: 'dropdown-menu',\n    ACTIVE: 'active',\n    DISABLED: 'disabled',\n    FADE: 'fade',\n    SHOW: 'show'\n  };\n  var Selector$9 = {\n    DROPDOWN: '.dropdown',\n    NAV_LIST_GROUP: '.nav, .list-group',\n    ACTIVE: '.active',\n    ACTIVE_UL: '> li > .active',\n    DATA_TOGGLE: '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n    DROPDOWN_TOGGLE: '.dropdown-toggle',\n    DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Tab =\n  /*#__PURE__*/\n  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(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) {\n        return;\n      }\n\n      var target;\n      var previous;\n      var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0];\n      var selector = Util.getSelectorFromElement(this._element);\n\n      if (listElement) {\n        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE;\n        previous = $.makeArray($(listElement).find(itemSelector));\n        previous = previous[previous.length - 1];\n      }\n\n      var hideEvent = $.Event(Event$9.HIDE, {\n        relatedTarget: this._element\n      });\n      var showEvent = $.Event(Event$9.SHOW, {\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$9.HIDDEN, {\n          relatedTarget: _this._element\n        });\n        var shownEvent = $.Event(Event$9.SHOWN, {\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$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE);\n      var active = activeElements[0];\n      var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE);\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(ClassName$9.SHOW).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(ClassName$9.ACTIVE);\n        var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0];\n\n        if (dropdownChild) {\n          $(dropdownChild).removeClass(ClassName$9.ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      $(element).addClass(ClassName$9.ACTIVE);\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(ClassName$9.FADE)) {\n        element.classList.add(ClassName$9.SHOW);\n      }\n\n      if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) {\n        var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0];\n\n        if (dropdownElement) {\n          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE));\n          $(dropdownToggleList).addClass(ClassName$9.ACTIVE);\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$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, 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.3.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$a = {\n    CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$a,\n    HIDE: \"hide\" + EVENT_KEY$a,\n    HIDDEN: \"hidden\" + EVENT_KEY$a,\n    SHOW: \"show\" + EVENT_KEY$a,\n    SHOWN: \"shown\" + EVENT_KEY$a\n  };\n  var ClassName$a = {\n    FADE: 'fade',\n    HIDE: 'hide',\n    SHOW: 'show',\n    SHOWING: 'showing'\n  };\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$a = {\n    DATA_DISMISS: '[data-dismiss=\"toast\"]'\n    /**\n     * ------------------------------------------------------------------------\n     * Class Definition\n     * ------------------------------------------------------------------------\n     */\n\n  };\n\n  var Toast =\n  /*#__PURE__*/\n  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      $(this._element).trigger(Event$a.SHOW);\n\n      if (this._config.animation) {\n        this._element.classList.add(ClassName$a.FADE);\n      }\n\n      var complete = function complete() {\n        _this._element.classList.remove(ClassName$a.SHOWING);\n\n        _this._element.classList.add(ClassName$a.SHOW);\n\n        $(_this._element).trigger(Event$a.SHOWN);\n\n        if (_this._config.autohide) {\n          _this.hide();\n        }\n      };\n\n      this._element.classList.remove(ClassName$a.HIDE);\n\n      this._element.classList.add(ClassName$a.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(withoutTimeout) {\n      var _this2 = this;\n\n      if (!this._element.classList.contains(ClassName$a.SHOW)) {\n        return;\n      }\n\n      $(this._element).trigger(Event$a.HIDE);\n\n      if (withoutTimeout) {\n        this._close();\n      } else {\n        this._timeout = setTimeout(function () {\n          _this2._close();\n        }, this._config.delay);\n      }\n    };\n\n    _proto.dispose = function dispose() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n\n      if (this._element.classList.contains(ClassName$a.SHOW)) {\n        this._element.classList.remove(ClassName$a.SHOW);\n      }\n\n      $(this._element).off(Event$a.CLICK_DISMISS);\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 = _objectSpread({}, 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 _this3 = this;\n\n      $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () {\n        return _this3.hide(true);\n      });\n    };\n\n    _proto._close = function _close() {\n      var _this4 = this;\n\n      var complete = function complete() {\n        _this4._element.classList.add(ClassName$a.HIDE);\n\n        $(_this4._element).trigger(Event$a.HIDDEN);\n      };\n\n      this._element.classList.remove(ClassName$a.SHOW);\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    } // 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  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v4.3.1): index.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  (function () {\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  exports.Util = Util;\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\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n//# sourceMappingURL=bootstrap.js.map\n\n\n\n// WEBPACK FOOTER //\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/bootstrap/dist/js/bootstrap.js","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.7\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n    timeoutDuration = 1;\n    break;\n  }\n}\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var window = element.ownerDocument.defaultView;\n  var css = window.getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent || null;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TH, TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);\n}\n\nfunction getWindowSizes(document) {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\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  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _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/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n  var width = sizes.width || element.clientWidth || result.right - result.left;\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && isHTML) {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop, 10);\n    var marginLeft = parseFloat(styles.marginLeft, 10);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  var parentNode = getParentNode(element);\n  if (!parentNode) {\n    return false;\n  }\n  return isFixed(parentNode);\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(popper.ownerDocument),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  padding = padding || 0;\n  var isPaddingNumber = typeof padding === 'number';\n  boundaries.left += isPaddingNumber ? padding : padding.left || 0;\n  boundaries.top += isPaddingNumber ? padding : padding.top || 0;\n  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;\n  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;\n\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n  var variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var window = element.ownerDocument.defaultView;\n  var styles = window.getComputedStyle(element);\n  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicity asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nfunction getRoundedOffsets(data, shouldRound) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n  var round = Math.round,\n      floor = Math.floor;\n\n  var noRound = function noRound(v) {\n    return v;\n  };\n\n  var referenceWidth = round(reference.width);\n  var popperWidth = round(popper.width);\n\n  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n  var isVariation = data.placement.indexOf('-') !== -1;\n  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;\n  var verticalToInteger = !shouldRound ? noRound : round;\n\n  return {\n    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),\n    top: verticalToInteger(popper.top),\n    bottom: verticalToInteger(popper.bottom),\n    right: horizontalToInteger(popper.right)\n  };\n}\n\nvar isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper;\n\n  // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  var styles = {\n    position: popper.position\n  };\n\n  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);\n\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  var prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  var left = void 0,\n      top = void 0;\n  if (sideA === 'bottom') {\n    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n    // and not the bottom of the html element\n    if (offsetParent.nodeName === 'HTML') {\n      top = -offsetParent.clientHeight + offsets.bottom;\n    } else {\n      top = -offsetParentRect.height + offsets.bottom;\n    }\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    if (offsetParent.nodeName === 'HTML') {\n      left = -offsetParent.clientWidth + offsets.right;\n    } else {\n      left = -offsetParentRect.width + offsets.right;\n    }\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjunction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n    var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unit-less, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the `height`.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * A scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper. This makes sure the popper always has a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near each other\n   * without leaving any gap between the two. Especially useful when the arrow is\n   * enabled and you want to ensure that it points to its reference element.\n   * It cares only about the first axis. You can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjunction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations)\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position.\n     * The popper will never be placed outside of the defined boundaries\n     * (except if `keepTogether` is enabled)\n     */\n    boundariesElement: 'viewport'\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define your own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3D transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties\n     */\n    gpuAcceleration: undefined\n  }\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement.\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled.\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated. This callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, it is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js.\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Creates a new Popper.js instance.\n   * @class Popper\n   * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n   * @param {HTMLElement} popper - The HTML element used as the popper\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    };\n\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = _extends({}, Popper.Defaults, options);\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    })\n    // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    });\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    var eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n\n    /**\n     * Schedules an update. It will run on the next UI update available.\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/popper.js/dist/esm/popper.js\n// module id = 118\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 119\n// module chunks = 0","import camelCase from './camelCase';\r\n\r\n/**\r\n * DOM-based Routing\r\n *\r\n * Based on {@link http://goo.gl/EUTi53|Markup-based Unobtrusive Comprehensive DOM-ready Execution} by Paul Irish\r\n *\r\n * The routing fires all common scripts, followed by the page specific scripts.\r\n * Add additional events for more control over timing e.g. a finalize event\r\n */\r\nclass Router {\r\n\r\n  /**\r\n   * Create a new Router\r\n   * @param {Object} routes\r\n   */\r\n  constructor(routes) {\r\n    this.routes = routes;\r\n  }\r\n\r\n  /**\r\n   * Fire Router events\r\n   * @param {string} route DOM-based route derived from body classes (`<body class=\"...\">`)\r\n   * @param {string} [event] Events on the route. By default, `init` and `finalize` events are called.\r\n   * @param {string} [arg] Any custom argument to be passed to the event.\r\n   */\r\n  fire(route, event = 'init', arg) {\r\n    if(typeof(Event) === 'function') {\r\n      document.dispatchEvent(new CustomEvent('routed', {\r\n        bubbles: true,\r\n        detail: {\r\n          route,\r\n          fn: event,\r\n        },\r\n      }));\r\n    }\r\n\r\n    const fire = route !== '' && this.routes[route] && typeof this.routes[route][event] === 'function';\r\n    if (fire) {\r\n      this.routes[route][event](arg);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Automatically load and fire Router events\r\n   *\r\n   * Events are fired in the following order:\r\n   *  * common init\r\n   *  * page-specific init\r\n   *  * page-specific finalize\r\n   *  * common finalize\r\n   */\r\n  loadEvents() {\r\n    // Fire common init JS\r\n    this.fire('common');\r\n\r\n    // Fire page-specific init JS, and then finalize JS\r\n    document.body.className\r\n      .toLowerCase()\r\n      .replace(/-/g, '_')\r\n      .split(/\\s+/)\r\n      .map(camelCase)\r\n      .forEach((className) => {\r\n        this.fire(className);\r\n        this.fire(className, 'finalize');\r\n      });\r\n\r\n    // Fire common finalize JS\r\n    this.fire('common', 'finalize');\r\n  }\r\n}\r\n\r\nexport default Router;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/Router.js","/**\r\n * the most terrible camelizer on the internet, guaranteed!\r\n * @param {string} str String that isn't camel-case, e.g., CAMeL_CaSEiS-harD\r\n * @return {string} String converted to camel-case, e.g., camelCaseIsHard\r\n */\r\nexport default str => `${str.charAt(0).toLowerCase()}${str.replace(/[\\W_]/g, '|').split('|')\r\n  .map(part => `${part.charAt(0).toUpperCase()}${part.slice(1)}`)\r\n  .join('')\r\n  .slice(1)}`;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/camelCase.js","import flexibleVideo from '../components/flexible-video';\r\n\r\nexport default {\r\n  init() {\r\n    // JavaScript to be fired on all pages\r\n    flexibleVideo();\r\n  },\r\n  finalize() {\r\n    // JavaScript to be fired on all pages, after page specific JS is fired\r\n  },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/routes/common.js","// import initVideo, { pauseVideo } from \"../util/embed\";\r\n\r\n/**\r\n * Add the ff. class are setup in the section to make the video worked\r\n * \r\n * 1. Video tag should have .js-video-tag\r\n * \r\n * 2. The parent container should have .js-video (Ideally, this should \r\n * be added in the div that holds all the content like text, video, \r\n * images and play button)\r\n * \r\n * 3. Add .js-hide-on-play to the elements you want to hide when the \r\n * video is played\r\n * \r\n * 4. The element you want to set as trigger to play/pause the video should have \r\n * .js-playvideo. This is mostly added in the play button.\r\n * \r\n * 5. You can add js-play if you want an image to show if video is paused.\r\n * \r\n */\r\nimport { stokpressViewPort } from '../util/helper';\r\n\r\nconst selector = {\r\n\t'hideOnPlay': '.js-hide-on-play', \r\n  'container': '.js-video2',\r\n};\r\n\r\nconst classes = {\r\n\t'hide': 'd-none',\t\r\n\t'playButton': 'js-playvideo', \r\n};\r\n\r\nconst isAutoplaySupported = (callback) => {\r\n\r\n  if (!sessionStorage.autoPlaySupported) {\r\n    let video = document.createElement('video');\r\n    video.autoplay = true;\r\n    video.muted = true;\r\n    video.setAttribute('webkit-playsinline', 'webkit-playsinline');\r\n    video.setAttribute('playsinline', 'playsinline');    \r\n    video.src = 'data:video/mp4;base64,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';\r\n    video.load();\r\n    video.style.display = 'none';\r\n    video.playing = false;\r\n\r\n    video.play();\r\n\r\n    video.onplay = function() {\r\n      this.playing = true;\r\n    }\r\n\r\n    // Video has loaded, check autoplay support\r\n    video.oncanplay = function() {\r\n      if (video.playing) {\r\n        sessionStorage.autoPlaySupported = 'true';\r\n        callback(true);\r\n\r\n      } else {\r\n        sessionStorage.autoPlaySupported = 'false';\r\n        callback(false);\r\n      }\r\n    }\r\n\r\n  } else {\r\n    if (sessionStorage.autoPlaySupported == 'true') {\r\n      callback(true);\r\n    } else {\r\n      callback(false);\r\n    }\r\n  }\r\n};\r\n\r\n\r\nconst removeElementsOnPlay = (\r\n  el, \r\n  opacity, \r\n  excludeImg = false\r\n) => {\r\n\tif ( !el ) { return; }\r\n\r\n  if (!excludeImg) {\r\n    el\r\n      .find('img:not(.js-play)')\r\n      .css({ opacity: opacity });\r\n  }\r\n\r\n  el \r\n    .find(selector.hideOnPlay)\r\n    .css({ opacity: opacity });  \r\n};\r\n\r\nconst updateVideo = (\r\n  parent, \r\n  video\r\n) => {\r\n  if (!parent || String(video.dataset.multiple) !== 'true') return;\r\n  \r\n  let images = parent.find('img:visible');\r\n  \r\n  let src = 'desktop';\r\n  if (stokpressViewPort.documentWidth().width < 1024) {\r\n    src = 'mobile';\r\n  }\r\n \r\n  var data = JSON.parse(video.dataset[src]);\r\n  if (data.autoplay) {\r\n    video.autoplay = true;\r\n    video.muted = true;\r\n  } else {\r\n    video.autoplay = false;\r\n    video.muted = false;\r\n  }\r\n\r\n  var source = video.querySelector('source'); \r\n  if (data.src != source.src) {\r\n    source.src = data.src;\r\n\r\n    removeElementsOnPlay(parent, 1);\r\n    if (images) $(video).css('zIndex', -1);\r\n  }\r\n\r\n  video.load();  \r\n};\r\n\r\n\r\nconst videoOnClick = (playVideo, videoParent) => {\r\n  if (!playVideo) return;\r\n\r\n  playVideo.off('click').on('click', e => {\r\n    e.preventDefault();\r\n\r\n    let targetParent = $(e.target).parents(selector.container);\r\n    let targetVideo = targetParent.find( 'video' )[0];\r\n    let hasLink = playVideo.hasClass('js-has-link'); //check if video has link\r\n    const excludeImg = $(targetVideo).data('played');\r\n    console.log(hasLink);\r\n\r\n    if (targetVideo.paused == false) {\r\n      targetVideo.pause();\r\n      removeElementsOnPlay(videoParent, 1, excludeImg);\r\n    } else {\r\n      if (hasLink){\r\n        playVideo.hide();\r\n      }\r\n      targetVideo.play();\r\n      $(targetVideo).data('played', true);\r\n      removeElementsOnPlay(videoParent, 0, excludeImg);\r\n    }\r\n\r\n    $(targetVideo).css('zIndex', 0);\r\n  } );\r\n};\r\n\r\nconst flexibleVideo = () => {\r\n  let jsVideo = $('video.js-video-tag');\r\n\r\n  if (jsVideo.length === 0) return;\r\n\r\n  jsVideo.each(function() {\r\n    let _this = $(this);\r\n    let videoParent = _this.parents(selector.container);\r\n    let currentVideo = videoParent.find('video')[0];\r\n\r\n    if (currentVideo) \r\n  \r\n    // Update video src based on window\r\n    updateVideo(videoParent, currentVideo);\r\n\r\n    // Autoplay\r\n    isAutoplaySupported((canAutoplay)=>{\r\n      if (_this.attr('autoplay') && canAutoplay) {\r\n          _this.data('played', true);\r\n          _this.css('zIndex', 0);\r\n          removeElementsOnPlay(videoParent, 0);\r\n          videoParent.find('.' + classes.playButton).hide();\r\n      }\r\n    });    \r\n\r\n    // Play button event\r\n    videoOnClick(videoParent.find('.' + classes.playButton), videoParent);\r\n  });\r\n};\r\n\r\n$(window).on('resize', () => {\r\n  flexibleVideo();\r\n});\r\n\r\nexport default flexibleVideo;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/flexible-video.js","export default {\r\n  init() {\r\n    // JavaScript to be fired on the home page\r\n  },\r\n  finalize() {\r\n    // JavaScript to be fired on the home page, after the init JS\r\n  },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/routes/home.js","export default {\r\n  init() {\r\n    // JavaScript to be fired on the about us page\r\n  },\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/routes/about.js","export const sliders = {\r\n  init() {\r\n    require('./category-slider');\r\n    require('./product-slider');\r\n    require('./feature-slider');\r\n    require('./article-slider');\r\n    require('./trustbar-slider');\r\n    require('./quote');\r\n\r\n    // IOS 13.1.3 Flickity Fix\r\n    let touchingCarousel = false;\r\n    let touchStartCoords;\r\n\r\n    document.body.addEventListener('touchstart', function(e) {\r\n      if (e.target.closest('.flickity-slider')) {\r\n        touchingCarousel = true;\r\n      } else {\r\n        touchingCarousel = false;\r\n        return;\r\n      }\r\n\r\n      touchStartCoords = {\r\n        x: e.touches[0].pageX,\r\n        y: e.touches[0].pageY,\r\n      }\r\n    });\r\n\r\n    document.body.addEventListener('touchmove', function(e) {\r\n      if (!(touchingCarousel && e.cancelable)) {\r\n        return;\r\n      }\r\n\r\n      var moveVector = {\r\n        x: e.touches[0].pageX - touchStartCoords.x,\r\n        y: e.touches[0].pageY - touchStartCoords.y,\r\n      };\r\n\r\n      if (Math.abs(moveVector.x) > 7)\r\n        e.preventDefault()\r\n\r\n    }, {passive: false});\r\n  },\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/index.js","let CategorySlider = {};\r\n\r\nCategorySlider = {\r\n  init() {\r\n    let $categorySlider = $('.js-category-slider');\r\n\r\n    if ($categorySlider.length === 0) {\r\n      return;\r\n    }\r\n\r\n    $.each($categorySlider, function(){\r\n      let $slider = $(this);\r\n\r\n      let options = {\r\n        freeScroll: false,\r\n        pageDots: true,\r\n        groupCells: false,\r\n        cellAlign: 'left',\r\n        percentPosition: false,\r\n        wrapAround: false,\r\n        contain: true,\r\n        dragThreshold: 20,\r\n        prevNextButtons: true,\r\n        selectedAttraction: 0.4,\r\n        friction: 1.2,\r\n        on: {\r\n          ready: function() {\r\n            $slider.removeClass('is-hidden');\r\n            $slider.addClass('first-el');\r\n          },\r\n        },\r\n      };\r\n\r\n      if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n        options = {\r\n          freeScroll: false,\r\n          pageDots: false,\r\n          groupCells: true,\r\n          cellAlign: 'left',\r\n          percentPosition: false,\r\n          wrapAround: true,\r\n          contain: false,\r\n          prevNextButtons: true,\r\n          selectedAttraction: 0.2,\r\n          friction: 0.8,\r\n          on: {\r\n            ready: function() {\r\n              $slider.removeClass('is-hidden');\r\n              $slider.addClass('first-el');\r\n            },\r\n          },\r\n        }\r\n      }\r\n\r\n      let flkty = $slider.flickity(options);\r\n      let flktyData = $slider.data('flickity');\r\n\r\n      if (matchMedia('screen and (max-width: 1023px)').matches) {\r\n        flkty.on('change.flickity', function () {\r\n            if (flktyData.selectedIndex == 0) {\r\n              $slider.addClass('first-el');\r\n            } else {\r\n              $slider.removeClass('first-el');\r\n            }\r\n        });\r\n      } else if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n        flkty.on('change.flickity', function () {\r\n          if (flktyData.selectedIndex == 0) {\r\n            $slider.addClass('is-indented');\r\n          } else {\r\n            $slider.removeClass('is-indented');\r\n          }\r\n      });\r\n      }\r\n    });\r\n  },\r\n}\r\n\r\n$(function () {\r\n  CategorySlider.init();\r\n\r\n  $(window).resize(function () {\r\n    CategorySlider.init();\r\n  });\r\n});\r\n\r\nwindow.ProductSlider = CategorySlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/category-slider.js","let ProductSlider = {};\r\n\r\nProductSlider = {\r\n  init() {\r\n    let $productSlider = $('.js-product-slider');\r\n\r\n    if ($productSlider.length === 0) {\r\n      return;\r\n    }\r\n\r\n    $.each($productSlider, function(){\r\n      let $slider = $(this);\r\n      const $sliderIndex = $slider.attr('data-index');\r\n      const prev = 'button[data-slider-button=\"js-product-slider-button-prev-' + $sliderIndex + '\"]';\r\n      const next ='button[data-slider-button=\"js-product-slider-button-next-' + $sliderIndex + '\"]';\r\n      const prevButton = $(prev);\r\n      const nextButton = $(next);\r\n\r\n      let options = {\r\n        pageDots: true,\r\n        groupCells: false,\r\n        cellAlign: 'left',\r\n        percentPosition: false,\r\n        wrapAround: false,\r\n        contain: true,\r\n        dragThreshold: 10,\r\n        prevNextButtons: true,\r\n        on: {\r\n          ready: function() {\r\n            $slider.removeClass('is-hidden');\r\n            $slider.addClass('first-el');\r\n          },\r\n        },\r\n      };\r\n\r\n      if (matchMedia('screen and (min-width: 768px)').matches) {\r\n        options = {\r\n          pageDots: false,\r\n          groupCells: true,\r\n          cellAlign: 'center',\r\n          percentPosition: false,\r\n          wrapAround: true,\r\n          contain: false,\r\n          dragThreshold: 15,\r\n          prevNextButtons: true,\r\n          on: {\r\n            ready: function() {\r\n              $slider.removeClass('is-hidden');\r\n              $slider.addClass('first-el');\r\n            },\r\n          },\r\n        }\r\n      }\r\n\r\n      let flkty = $slider.flickity(options);\r\n      let flktyData = $slider.data('flickity');\r\n      var count = flktyData.cells.length;\r\n\r\n\r\n      if (count < 6) {\r\n        options.groupCells = false\r\n        options.wrapAround = false\r\n        options.prevNextButtons = false\r\n        options.contain = true\r\n\r\n        if (count == 5) {\r\n          $slider.addClass('is-indented');\r\n        }\r\n\r\n        $slider.flickity(options);\r\n        $slider.addClass('no-prevnext');\r\n      }\r\n\r\n      if (count >= 6) {\r\n        prevButton.on( 'click', function() {\r\n          $slider.flickity('previous');\r\n        });\r\n\r\n        nextButton.on( 'click', function() {\r\n          $slider.flickity('next');\r\n        });\r\n      }\r\n\r\n      if (matchMedia('screen and (max-width: 767px)').matches) {\r\n        flkty.on('change.flickity', function () {\r\n            if (flktyData.selectedIndex == 0) {\r\n              $slider.addClass('first-el');\r\n            } else {\r\n              $slider.removeClass('first-el');\r\n            }\r\n        });\r\n      } else if (matchMedia('screen and (min-width: 768px)').matches) {\r\n        flkty.on('change.flickity', function () {\r\n          if (flktyData.selectedIndex == 0) {\r\n            $slider.addClass('is-indented');\r\n          } else {\r\n            $slider.removeClass('is-indented');\r\n          }\r\n      });\r\n      }\r\n    });\r\n  },\r\n}\r\n\r\n$(function () {\r\n  ProductSlider.init();\r\n\r\n  $(window).resize(function () {\r\n    ProductSlider.init();\r\n  });\r\n});\r\n\r\nwindow.ProductSlider = ProductSlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/product-slider.js","var FeatureSlider = {}, $featureSlider;\r\n\r\nFeatureSlider = {\r\n  init() {\r\n    $featureSlider = $('.js-feature-slider');\r\n\r\n    if ($featureSlider.length === 0) {\r\n      return;\r\n    }\r\n\r\n    $.each( $featureSlider, function() {\r\n      let $slider = $(this),\r\n        $autoplay = $slider.data('autoplay'),\r\n        isInitialized = false;\r\n\r\n      $slider.flickity({\r\n        autoPlay: $autoplay,\r\n        cellAlign: 'left',\r\n        contain: true,\r\n        prevNextButtons: false,\r\n        pageDots: true,\r\n        dragThreshold: 10,\r\n        on: {\r\n          ready: function () {\r\n            if (matchMedia('screen and (max-width: 1023px)').matches) {\r\n              isInitialized = true;\r\n            }\r\n\r\n            if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n              isInitialized = false;\r\n            }\r\n\r\n            if (isInitialized == false) {\r\n              $slider.flickity('destroy');\r\n            }\r\n          },\r\n        },\r\n      });\r\n    });\r\n  },\r\n}\r\n\r\n$(function () {\r\n  FeatureSlider.init();\r\n\r\n  $(window).resize(function () {\r\n    FeatureSlider.init();\r\n  });\r\n});\r\n\r\nwindow.FeatureSlider = FeatureSlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/feature-slider.js","let ArticleSlider = {};\r\n\r\nArticleSlider.slider = function () {\r\n  let $articleSlider = $('#article-slider');\r\n\r\n  $articleSlider.on('ready.flickity', function () {\r\n    $articleSlider.css('visibility', 'visible');\r\n  });\r\n\r\n  var options = {\r\n    contain: true,\r\n    cellAlign: 'left',\r\n    groupCells: false,\r\n    prevNextButtons: true,\r\n    pageDots: true,\r\n    dragThreshold: 10,\r\n  };\r\n\r\n  $articleSlider.flickity(options);\r\n\r\n  let $prevButton = $('.js-flickity-prev');\r\n  let $nextButton = $('.js-flickity-next');\r\n\r\n  $prevButton.click(function () {\r\n    $articleSlider.flickity('previous');\r\n  });\r\n\r\n  $nextButton.click(function () {\r\n    $articleSlider.flickity('next');\r\n  });\r\n};\r\n\r\nArticleSlider.slider();\r\n\r\n$(window).resize(function () {\r\n  ArticleSlider.slider();\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/article-slider.js","var TrustbarSlider = {}, isInitialized = false, $trustbarSlider;\r\n\r\nTrustbarSlider = {\r\n  init() {\r\n    $trustbarSlider = $('.js-trustbar-slider');\r\n\r\n    if ($trustbarSlider.length === 0) {\r\n      return;\r\n    }\r\n\r\n    $.each( $trustbarSlider, function() {\r\n      let $slider = $(this),\r\n        $autoplay = $slider.data('autoplay');\r\n\r\n      $slider.flickity({\r\n        autoPlay: $autoplay,\r\n        pauseAutoPlayOnHover: false,\r\n        cellAlign: 'left',\r\n        contain: true,\r\n        prevNextButtons: false,\r\n        wrapAround: true,\r\n        pageDots: true,\r\n        dragThreshold: 10,\r\n        on: {\r\n          ready: function () {\r\n            if (matchMedia('screen and (max-width: 1023px)').matches) {\r\n              isInitialized = true;\r\n            }\r\n          },\r\n        },\r\n      });\r\n\r\n      if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n        isInitialized = false;\r\n      }\r\n\r\n      if (isInitialized == false) {\r\n        $slider.flickity('destroy');\r\n      }\r\n    } );\r\n  },\r\n}\r\n\r\n$(function () {\r\n  TrustbarSlider.init();\r\n\r\n  $(window).resize(function () {\r\n    TrustbarSlider.init();\r\n  });\r\n});\r\n\r\nwindow.TrustbarSlider = TrustbarSlider;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/trustbar-slider.js","import Swiper, { Autoplay, Thumbs } from 'swiper';\r\nimport '../../vendor/jquery.rateyo';\r\n\r\nlet quoteSlider = {};\r\n\r\nquoteSlider.slider = function () {\r\n  let quoteSwiper = $('.js-quote-slider');\r\n\r\n  if (quoteSwiper.length === 0) {\r\n    return;\r\n  }\r\n\r\n  $.each(quoteSwiper, function () {\r\n    let slider = this;\r\n    let quoteThumbsSwiper = null;\r\n    let quoteThumbs = this.closest('.js-quote-wrapper').querySelector('.js-quote-thumbs');\r\n\r\n    if (quoteThumbs) {\r\n      quoteThumbsSwiper = new Swiper(quoteThumbs, {\r\n        slidesPerView: 5,\r\n        loop: false,\r\n        freeMode: true,\r\n        watchSlidesProgress: true,\r\n      });\r\n    }\r\n\r\n    new Swiper(slider, {\r\n      modules: [Autoplay, Thumbs],\r\n      speed: 1000,\r\n      autoplay: {\r\n        delay: 3000,\r\n      },\r\n      thumbs: {\r\n        swiper: quoteThumbsSwiper,\r\n      },\r\n    });\r\n  });\r\n};\r\n\r\nquoteSlider.rating = function () {\r\n  let rateYo = $('.js-rateYo');\r\n\r\n  if (rateYo.length === 0) {\r\n    return;\r\n  }\r\n\r\n  $.each(rateYo, function () {\r\n    const _this = $(this);\r\n    const maxRating = 5;\r\n\r\n    let ratings = _this.data('rating');\r\n    if (parseInt(ratings) > maxRating) {\r\n      ratings = maxRating;\r\n    }\r\n    \r\n    _this.rateYo({\r\n        rating: ratings,\r\n        numStars: maxRating,\r\n        readOnly: true,\r\n        spacing: '10px',\r\n        starWidth: '24.9px',\r\n        ratedFill: '#000000',\r\n      }).find('.jq-ry-group:first > svg').css({\r\n        'fill': 'transparent',\r\n        'stroke': '#000',\r\n        'stroke-width': '17px',\r\n      });\r\n  });\r\n\r\n};\r\n\r\nquoteSlider.init = function () {\r\n  quoteSlider.slider();\r\n  quoteSlider.rating();\r\n};\r\n\r\nquoteSlider.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/sliders/quote.js","/*****\r\n* rateyo - v2.3.5\r\n* http://prrashi.github.io/rateyo/\r\n* Copyright (c) 2014 Prashanth Pamidi; Licensed MIT\r\n*****/\r\n\r\n(function ($) {\r\n  \"use strict\";\r\n\r\n  // The basic svg string required to generate stars\r\n  var BASICSTAR = \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\"+\r\n                  \"<svg version=\\\"1.1\\\"\"+\r\n                        \"xmlns=\\\"http://www.w3.org/2000/svg\\\"\"+\r\n                        \"viewBox=\\\"0 12.705 512 486.59\\\"\"+\r\n                        \"x=\\\"0px\\\" y=\\\"0px\\\"\"+\r\n                        \"xml:space=\\\"preserve\\\">\"+\r\n                    \"<polygon \"+\r\n                              \"points=\\\"256.814,12.705 317.205,198.566\"+\r\n                                      \" 512.631,198.566 354.529,313.435 \"+\r\n                                      \"414.918,499.295 256.814,384.427 \"+\r\n                                      \"98.713,499.295 159.102,313.435 \"+\r\n                                      \"1,198.566 196.426,198.566 \\\"/>\"+\r\n                  \"</svg>\";\r\n\r\n  // The Default values of different options available in the Plugin\r\n  var DEFAULTS = {\r\n\r\n    starWidth : \"32px\",\r\n    normalFill: \"gray\",\r\n    ratedFill : \"#f39c12\",\r\n    numStars  : 5,\r\n    maxValue  : 5,\r\n    precision : 1,\r\n    rating    : 0,\r\n    fullStar  : false,\r\n    halfStar  : false,\r\n    readOnly  : false,\r\n    spacing   : \"0px\",\r\n    rtl       : false,\r\n    multiColor: null,\r\n    onInit    : null,\r\n    onChange  : null,\r\n    onSet     : null,\r\n    starSvg   : null,\r\n  };\r\n\r\n  //Default colors for multi-color rating\r\n  var MULTICOLOR_OPTIONS = {\r\n\r\n    startColor: \"#c0392b\", //red\r\n    endColor  : \"#f1c40f\",  //yellow\r\n  };\r\n\r\n  // http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser\r\n  function isMobileBrowser () {\r\n    var check = false;\r\n    /* jshint ignore:start */\r\n    (function(a){if(/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera);\r\n    /* jshint ignore:end */\r\n    return check;\r\n  }\r\n\r\n  function checkPrecision (value, minValue, maxValue) {\r\n\r\n    /*\r\n     * This function removes the unnecessary precision, at Min and Max Values\r\n     */\r\n\r\n    // Its like comparing 0.0 with 0, which is true\r\n    if (value === minValue) {\r\n\r\n      value = minValue;\r\n    }\r\n    else if(value === maxValue) {\r\n\r\n      value = maxValue;\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  function checkBounds (value, minValue, maxValue) {\r\n\r\n    /*\r\n     * Check if the value is between min and max values, if not, throw an error\r\n     */\r\n\r\n    var isValid = value >= minValue && value <= maxValue;\r\n\r\n    if(!isValid){\r\n\r\n        throw Error(\"Invalid Rating, expected value between \"+ minValue +\r\n                    \" and \" + maxValue);\r\n    }\r\n\r\n    return value;\r\n  }\r\n\r\n  function isDefined(value) {\r\n\r\n    // Better way to check if a variable is defined or not\r\n    return typeof value !== \"undefined\";\r\n  }\r\n\r\n  // Regex to match Colors in Hex Format like #FF00FF\r\n  var hexRegex = /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i;\r\n\r\n  var hexToRGB = function (hex) {\r\n\r\n    /*\r\n     * Extracts and returns the Red, Blue, Green Channel values,\r\n     * in the form of decimals\r\n     */\r\n\r\n    if (!hexRegex.test(hex)) {\r\n\r\n      return null;\r\n    }\r\n\r\n    var hexValues = hexRegex.exec(hex),\r\n        r = parseInt(hexValues[1], 16),\r\n        g = parseInt(hexValues[2], 16),\r\n        b = parseInt(hexValues[3], 16);\r\n\r\n    return {r:r, g:g, b:b};\r\n  };\r\n\r\n  function getChannelValue(startVal, endVal, percent) {\r\n\r\n    /*\r\n     * Returns a value between `startVal` and `endVal` based on the percent\r\n     */\r\n\r\n    var newVal = (endVal - startVal)*(percent/100);\r\n\r\n    newVal = Math.round(startVal + newVal).toString(16);\r\n\r\n    if (newVal.length === 1) {\r\n\r\n        newVal = \"0\" + newVal;\r\n    }\r\n\r\n    return newVal;\r\n  }\r\n\r\n  function getColor (startColor, endColor, percent) {\r\n\r\n    /*\r\n     * Given the percentage( `percent` ) of `endColor` to be mixed\r\n     * with the `startColor`, returns the mixed color.\r\n     * Colors should be only in Hex Format\r\n     */\r\n\r\n    if (!startColor || !endColor) {\r\n\r\n      return null;\r\n    }\r\n\r\n    percent = isDefined(percent)? percent : 0;\r\n\r\n    startColor = hexToRGB(startColor);\r\n    endColor = hexToRGB(endColor);\r\n\r\n    var r = getChannelValue(startColor.r, endColor.r, percent),\r\n        b = getChannelValue(startColor.b, endColor.b, percent),\r\n        g = getChannelValue(startColor.g, endColor.g, percent);\r\n\r\n    return \"#\" + r + g + b;\r\n  }\r\n\r\n  function RateYo ($node, options) {\r\n\r\n    /*\r\n     * The Contructor, whose instances are used by plugin itself\r\n     */\r\n\r\n    // Storing the HTML element as a property, for future access\r\n    this.node = $node.get(0);\r\n\r\n    var that = this;\r\n\r\n    // Remove any stuff that is present inside the container, and add the plugin class\r\n    $node.empty().addClass(\"jq-ry-container\");\r\n\r\n    /*\r\n     * Basically the plugin displays the rating using two rows of stars lying one above\r\n     * the other, the row that is on the top represents the actual rating, and the one\r\n     * behind acts just like a background.\r\n     *\r\n     * `$groupWrapper`: is an element that wraps both the rows\r\n     * `$normalGroup`: is the container for row of stars thats behind and\r\n     *                 acts as background\r\n     * `$ratedGroup`: is the container for row of stars that display the actual rating.\r\n     *\r\n     * The rating is displayed by adjusting the width of `$ratedGroup`\r\n     */\r\n    var $groupWrapper = $(\"<div/>\").addClass(\"jq-ry-group-wrapper\")\r\n                                   .appendTo($node);\r\n\r\n    var $normalGroup = $(\"<div/>\").addClass(\"jq-ry-normal-group\")\r\n                                  .addClass(\"jq-ry-group\")\r\n                                  .appendTo($groupWrapper);\r\n\r\n    var $ratedGroup = $(\"<div/>\").addClass(\"jq-ry-rated-group\")\r\n                                 .addClass(\"jq-ry-group\")\r\n                                 .appendTo($groupWrapper);\r\n\r\n    /*\r\n     * Variable `step`: store the value of the rating for each star\r\n     *                  eg: if `maxValue` is 5 and `numStars` is 5, value of each star\r\n     *                      is 1.\r\n     * Variable `starWidth`: stores the decimal value of width of star in units of px\r\n     * Variable `percentOfStar`: stores the percentage of width each star takes w.r.t\r\n     *                           the container\r\n     * Variable `spacing`: stores the decimal value of the spacing between stars\r\n     *                     in the units of px\r\n     * Variable `percentOfSpacing`: stores the percentage of width of the spacing\r\n     *                              between stars w.r.t the container\r\n     */\r\n    var step, starWidth, percentOfStar, spacing,\r\n        percentOfSpacing, containerWidth, minValue = 0;\r\n\r\n    /*\r\n     * `currentRating` contains rating that is being displayed at the latest point of\r\n     * time.\r\n     *\r\n     * When ever you hover over the plugin UI, the rating value changes\r\n     * according to the place where you point the cursor, currentRating contains\r\n     * the current value of rating that is being shown in the UI\r\n     */\r\n    var currentRating = options.rating;\r\n\r\n    // A flag to store if the plugin is already being displayed in the UI\r\n    var isInitialized = false;\r\n\r\n    function showRating (ratingVal) {\r\n\r\n      /*\r\n       * The function is responsible for displaying the rating by changing\r\n       * the width of `$ratedGroup`\r\n       */\r\n\r\n      if (!isDefined(ratingVal)) {\r\n\r\n        ratingVal = options.rating;\r\n      }\r\n\r\n      // Storing the value that is being shown in `currentRating`.\r\n      currentRating = ratingVal;\r\n\r\n      var numStarsToShow = ratingVal/step;\r\n\r\n      // calculating the percentage of width of $ratedGroup with respect to its parent\r\n      var percent = numStarsToShow*percentOfStar;\r\n\r\n      if (numStarsToShow > 1) {\r\n\r\n        // adding the percentage of space that is taken by the gap the stars\r\n        percent += (Math.ceil(numStarsToShow) - 1)*percentOfSpacing;\r\n      }\r\n\r\n      setRatedFill(options.ratedFill);\r\n\r\n      percent = options.rtl ? 100 - percent : percent;\r\n\r\n      if (percent < 0) {\r\n\r\n        percent = 0;\r\n      } else if (percent > 100) {\r\n\r\n        percent = 100;\r\n      }\r\n\r\n      $ratedGroup.css(\"width\", percent + \"%\");\r\n    }\r\n\r\n    function setContainerWidth () {\r\n\r\n      /*\r\n       * Set the width of the `this.node` based on the width of each star and\r\n       * the space between them\r\n       */\r\n\r\n      containerWidth = starWidth*options.numStars + spacing*(options.numStars - 1);\r\n\r\n      percentOfStar = (starWidth/containerWidth)*100;\r\n\r\n      percentOfSpacing = (spacing/containerWidth)*100;\r\n\r\n      $node.width(containerWidth);\r\n\r\n      showRating();\r\n    }\r\n\r\n    function setStarWidth (newWidth) {\r\n\r\n      /*\r\n       * Set the width and height of each SVG star, called whenever one changes the\r\n       * `starWidth` option\r\n       */\r\n\r\n      // The width and height of the star should be the same\r\n      var starHeight = options.starWidth = newWidth;\r\n\r\n      starWidth = window.parseFloat(options.starWidth.replace(\"px\", \"\"));\r\n\r\n      $normalGroup.find(\"svg\")\r\n                  .attr({width : options.starWidth,\r\n                         height: starHeight});\r\n\r\n      $ratedGroup.find(\"svg\")\r\n                 .attr({width : options.starWidth,\r\n                        height: starHeight});\r\n\r\n      setContainerWidth();\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setSpacing (newSpacing) {\r\n\r\n      /*\r\n       * Set spacing between the SVG stars, called whenever one changes\r\n       * the `spacing` option\r\n       */\r\n\r\n      options.spacing = newSpacing;\r\n\r\n      spacing = parseFloat(options.spacing.replace(\"px\", \"\"));\r\n\r\n      $normalGroup.find(\"svg:not(:first-child)\")\r\n                  .css({\"margin-left\": newSpacing});\r\n\r\n      $ratedGroup.find(\"svg:not(:first-child)\")\r\n                 .css({\"margin-left\": newSpacing});\r\n\r\n      setContainerWidth();\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setNormalFill (newFill) {\r\n\r\n      /*\r\n       * Set the background fill of the Stars, called whenever one changes the\r\n       * `normalFill` option\r\n       */\r\n\r\n      options.normalFill = newFill;\r\n\r\n      var $svgs = (options.rtl ? $ratedGroup : $normalGroup).find(\"svg\");\r\n\r\n      $svgs.attr({fill: options.normalFill});\r\n\r\n      return $node;\r\n    }\r\n\r\n    /*\r\n     * Store the recent `ratedFill` option in a variable\r\n     * so that if multiColor is unset, we can use the perviously set `ratedFill`\r\n     * from this variable\r\n     */\r\n    var ratedFill = options.ratedFill;\r\n\r\n    function setRatedFill (newFill) {\r\n\r\n      /*\r\n       * Set ratedFill of the stars, called when one changes the `ratedFill` option\r\n       */\r\n\r\n      /*\r\n       * If `multiColor` option is set, `newFill` variable is dynamically set\r\n       * based on the rating, what ever set as parameter will be discarded\r\n       */\r\n      if (options.multiColor) {\r\n\r\n        var ratingDiff = currentRating - minValue,\r\n            percentCovered = (ratingDiff/options.maxValue)*100;\r\n\r\n        var colorOpts  = options.multiColor || {},\r\n            startColor = colorOpts.startColor || MULTICOLOR_OPTIONS.startColor,\r\n            endColor   = colorOpts.endColor || MULTICOLOR_OPTIONS.endColor;\r\n\r\n        newFill = getColor(startColor, endColor, percentCovered);\r\n      } else {\r\n\r\n        ratedFill = newFill;\r\n      }\r\n\r\n      options.ratedFill = newFill;\r\n\r\n      var $svgs = (options.rtl ? $normalGroup : $ratedGroup).find(\"svg\");\r\n\r\n      $svgs.attr({fill: options.ratedFill});\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setRtl (newValue) {\r\n\r\n      newValue = !!newValue;\r\n\r\n      options.rtl = newValue;\r\n\r\n      setNormalFill(options.normalFill);\r\n      showRating();\r\n    }\r\n\r\n    function setMultiColor (colorOptions) {\r\n\r\n      /*\r\n       * called whenever one changes the `multiColor` option\r\n       */\r\n\r\n      options.multiColor = colorOptions;\r\n\r\n      // set the recently set `ratedFill` option, if multiColor Options are unset\r\n      setRatedFill(colorOptions ? colorOptions : ratedFill);\r\n    }\r\n\r\n    function setNumStars (newValue) {\r\n\r\n      /*\r\n       * Set the number of stars to use to display the rating, called whenever one\r\n       * changes the `numStars` option\r\n       */\r\n\r\n      options.numStars = newValue;\r\n\r\n      step = options.maxValue/options.numStars;\r\n\r\n      $normalGroup.empty();\r\n      $ratedGroup.empty();\r\n\r\n      for (var i=0; i<options.numStars; i++) {\r\n\r\n        $normalGroup.append($(options.starSvg || BASICSTAR));\r\n        $ratedGroup.append($(options.starSvg || BASICSTAR));\r\n      }\r\n\r\n      setStarWidth(options.starWidth);\r\n      setNormalFill(options.normalFill);\r\n      setSpacing(options.spacing);\r\n\r\n      showRating();\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setMaxValue (newValue) {\r\n\r\n      /*\r\n       * set the Maximum Value of rating to be allowed, called whenever\r\n       * one changes the `maxValue` option\r\n       */\r\n\r\n      options.maxValue = newValue;\r\n\r\n      step = options.maxValue/options.numStars;\r\n\r\n      if (options.rating > newValue) {\r\n\r\n        setRating(newValue);\r\n      }\r\n\r\n      showRating();\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setPrecision (newValue) {\r\n\r\n      /*\r\n       * Set the precision of the rating value, called if one changes the\r\n       * `precision` option\r\n       */\r\n\r\n      options.precision = newValue;\r\n\r\n      setRating(options.rating);\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setHalfStar (newValue) {\r\n\r\n      /*\r\n       * This function will be called if one changes the `halfStar` option\r\n       */\r\n\r\n      options.halfStar = newValue;\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setFullStar (newValue) {\r\n\r\n      /*\r\n       * This function will be called if one changes the `fullStar` option\r\n       */\r\n\r\n      options.fullStar = newValue;\r\n\r\n      return $node;\r\n    }\r\n\r\n    function round (value) {\r\n\r\n      /*\r\n       * Rounds the value of rating if `halfStar` or `fullStar` options are chosen\r\n       */\r\n\r\n      var remainder = value%step,\r\n          halfStep = step/2,\r\n          isHalfStar = options.halfStar,\r\n          isFullStar = options.fullStar;\r\n\r\n      if (!isFullStar && !isHalfStar) {\r\n\r\n        return value;\r\n      }\r\n\r\n      if (isFullStar || (isHalfStar && remainder > halfStep)) {\r\n\r\n        value += step - remainder;\r\n      } else {\r\n\r\n        value = value - remainder;\r\n\r\n        if (remainder > 0) {\r\n\r\n          value += halfStep;\r\n        }\r\n      }\r\n\r\n      return value;\r\n    }\r\n\r\n    function calculateRating (e) {\r\n\r\n      /*\r\n       * Calculates and returns the rating based on the position of cursor w.r.t the\r\n       * plugin container\r\n       */\r\n\r\n      var position = $normalGroup.offset(),\r\n          nodeStartX = position.left,\r\n          nodeEndX = nodeStartX + $normalGroup.width();\r\n\r\n      var maxValue = options.maxValue;\r\n\r\n      // The x-coordinate(position) of the mouse pointer w.r.t page\r\n      var pageX = e.pageX;\r\n\r\n      var calculatedRating = 0;\r\n\r\n      // If the mouse pointer is to the left of the container\r\n      if(pageX < nodeStartX) {\r\n\r\n        calculatedRating = minValue;\r\n      }else if (pageX > nodeEndX) { // If the mouse pointer is right of the container\r\n\r\n        calculatedRating = maxValue;\r\n      }else { // If the mouse pointer is inside the continer\r\n\r\n        /*\r\n         * The fraction of width covered by the pointer w.r.t to the total width\r\n         * of the container.\r\n         */\r\n        var calcPrcnt = ((pageX - nodeStartX)/(nodeEndX - nodeStartX));\r\n\r\n        if (spacing > 0) {\r\n\r\n          /*\r\n           * If there is spacing between stars, take the percentage of width covered\r\n           * and subtract the percentage of width covered by stars and spacing, to find\r\n           * how many stars are covered, the number of stars covered is the rating\r\n           *\r\n           * TODO: I strongly feel that this logic can be improved!, Please help!\r\n           */\r\n          calcPrcnt *= 100;\r\n\r\n          var remPrcnt = calcPrcnt;\r\n\r\n          while (remPrcnt > 0) {\r\n\r\n            if (remPrcnt > percentOfStar) {\r\n\r\n              calculatedRating += step;\r\n              remPrcnt -= (percentOfStar + percentOfSpacing);\r\n            } else {\r\n\r\n              calculatedRating += remPrcnt/percentOfStar*step;\r\n              remPrcnt = 0;\r\n            }\r\n          }\r\n        } else {\r\n\r\n          /*\r\n           * If there is not spacing between stars, the fraction of width covered per\r\n           * `maxValue` is the rating\r\n           */\r\n          calculatedRating = calcPrcnt * (options.maxValue);\r\n        }\r\n\r\n        // Round the rating if `halfStar` or `fullStar` options are chosen\r\n        calculatedRating = round(calculatedRating);\r\n      }\r\n\r\n      if (options.rtl) {\r\n\r\n        calculatedRating = maxValue - calculatedRating;\r\n      }\r\n\r\n      return parseFloat(calculatedRating);\r\n    }\r\n\r\n    function setReadOnly (newValue) {\r\n\r\n      /*\r\n       * UnBinds mouse event handlers, called when whenever one changes the\r\n       * `readOnly` option\r\n       */\r\n\r\n      options.readOnly = newValue;\r\n\r\n      $node.attr(\"readonly\", true);\r\n\r\n      unbindEvents();\r\n\r\n      if (!newValue) {\r\n\r\n        $node.removeAttr(\"readonly\");\r\n\r\n        bindEvents();\r\n      }\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setRating (newValue) {\r\n\r\n      /*\r\n       * Sets the rating of the Plugin, Called when option `rating` is changed\r\n       * or, when `rating` method is called\r\n       */\r\n\r\n      var rating = newValue;\r\n\r\n      var maxValue = options.maxValue;\r\n\r\n      if (typeof rating === \"string\") {\r\n\r\n        // If rating is given in percentage, maxValue should be 100\r\n        if (rating[rating.length - 1] === \"%\") {\r\n\r\n          rating = rating.substr(0, rating.length - 1);\r\n          maxValue = 100;\r\n\r\n          setMaxValue(maxValue);\r\n        }\r\n\r\n        rating = parseFloat(rating);\r\n      }\r\n\r\n      checkBounds(rating, minValue, maxValue);\r\n\r\n      rating = parseFloat(rating.toFixed(options.precision));\r\n\r\n      checkPrecision(parseFloat(rating), minValue, maxValue);\r\n\r\n      options.rating = rating;\r\n\r\n      showRating();\r\n\r\n      if (isInitialized) {\r\n\r\n        $node.trigger(\"rateyo.set\", {rating: rating});\r\n      }\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setOnInit (method) {\r\n\r\n      /*\r\n       * set what method to be called on Initialization\r\n       */\r\n\r\n      options.onInit = method;\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setOnSet (method) {\r\n\r\n      /*\r\n       * set what method to be called when rating is set\r\n       */\r\n\r\n      options.onSet = method;\r\n\r\n      return $node;\r\n    }\r\n\r\n    function setOnChange (method) {\r\n\r\n      /*\r\n       * set what method to be called rating in the UI is changed\r\n       */\r\n\r\n      options.onChange = method;\r\n\r\n      return $node;\r\n    }\r\n\r\n    this.rating = function (newValue) {\r\n\r\n      /*\r\n       * rating getter/setter\r\n       */\r\n\r\n      if (!isDefined(newValue)) {\r\n\r\n        return options.rating;\r\n      }\r\n\r\n      setRating(newValue);\r\n\r\n      return $node;\r\n    };\r\n\r\n    this.destroy = function () {\r\n\r\n      /*\r\n       * Removes the Rating UI by clearing the content, and removing the custom classes\r\n       */\r\n\r\n      if (!options.readOnly) {\r\n\r\n        unbindEvents();\r\n      }\r\n\r\n      RateYo.prototype.collection = deleteInstance($node.get(0),\r\n                                                   this.collection);\r\n\r\n      $node.removeClass(\"jq-ry-container\").children().remove();\r\n\r\n      return $node;\r\n    };\r\n\r\n    this.method = function (methodName) {\r\n\r\n      /*\r\n       * Method to call the methods of RateYo Instance\r\n       */\r\n\r\n      if (!methodName) {\r\n\r\n        throw Error(\"Method name not specified!\");\r\n      }\r\n\r\n      if (!isDefined(this[methodName])) {\r\n\r\n        throw Error(\"Method \" + methodName + \" doesn't exist!\");\r\n      }\r\n\r\n      var args = Array.prototype.slice.apply(arguments, []),\r\n          params = args.slice(1),\r\n          method = this[methodName];\r\n\r\n      return method.apply(this, params);\r\n    };\r\n\r\n    this.option = function (optionName, param) {\r\n\r\n      /*\r\n       * Method to get/set Options\r\n       */\r\n\r\n      if (!isDefined(optionName)) {\r\n\r\n        return options;\r\n      }\r\n\r\n      var method;\r\n\r\n      switch (optionName) {\r\n\r\n        case \"starWidth\":\r\n\r\n          method = setStarWidth;\r\n          break;\r\n        case \"numStars\":\r\n\r\n          method = setNumStars;\r\n          break;\r\n        case \"normalFill\":\r\n\r\n          method = setNormalFill;\r\n          break;\r\n        case \"ratedFill\":\r\n\r\n          method = setRatedFill;\r\n          break;\r\n        case \"multiColor\":\r\n\r\n          method = setMultiColor;\r\n          break;\r\n        case \"maxValue\":\r\n\r\n          method = setMaxValue;\r\n          break;\r\n        case \"precision\":\r\n\r\n          method = setPrecision;\r\n          break;\r\n        case \"rating\":\r\n\r\n          method = setRating;\r\n          break;\r\n        case \"halfStar\":\r\n\r\n          method = setHalfStar;\r\n          break;\r\n        case \"fullStar\":\r\n\r\n          method = setFullStar;\r\n          break;\r\n        case \"readOnly\":\r\n\r\n          method = setReadOnly;\r\n          break;\r\n        case \"spacing\":\r\n\r\n          method = setSpacing;\r\n          break;\r\n        case \"rtl\":\r\n\r\n          method = setRtl;\r\n          break;\r\n        case \"onInit\":\r\n\r\n          method = setOnInit;\r\n          break;\r\n        case \"onSet\":\r\n\r\n          method = setOnSet;\r\n          break;\r\n        case \"onChange\":\r\n\r\n          method = setOnChange;\r\n          break;\r\n        default:\r\n\r\n          throw Error(\"No such option as \" + optionName);\r\n      }\r\n\r\n      return isDefined(param) ? method(param) : options[optionName];\r\n    };\r\n\r\n    function onMouseEnter (e) {\r\n\r\n      /*\r\n       * If the Mouse Pointer is inside the container, calculate and show the rating\r\n       * in UI\r\n       */\r\n\r\n      var rating = calculateRating(e).toFixed(options.precision);\r\n\r\n      var maxValue = options.maxValue;\r\n\r\n      rating = checkPrecision(parseFloat(rating), minValue, maxValue);\r\n\r\n      showRating(rating);\r\n\r\n      $node.trigger(\"rateyo.change\", {rating: rating});\r\n    }\r\n\r\n    function onMouseLeave () {\r\n      if (isMobileBrowser()) {\r\n        return;\r\n      }\r\n\r\n      /*\r\n       * If mouse leaves, revert the rating in UI to previously set rating,\r\n       * when empty value is passed to showRating, it will take the previously set\r\n       * rating\r\n       */\r\n\r\n      showRating();\r\n\r\n      $node.trigger(\"rateyo.change\", {rating: options.rating});\r\n    }\r\n\r\n    function onMouseClick (e) {\r\n\r\n      /*\r\n       * On clicking the mouse inside the container, calculate and set the rating\r\n       */\r\n\r\n      var resultantRating = calculateRating(e).toFixed(options.precision);\r\n      resultantRating = parseFloat(resultantRating);\r\n\r\n      that.rating(resultantRating);\r\n    }\r\n\r\n    function onInit(e, data) {\r\n\r\n      if(options.onInit && typeof options.onInit === \"function\") {\r\n\r\n        /* jshint validthis:true */\r\n        options.onInit.apply(this, [data.rating, that]);\r\n      }\r\n    }\r\n\r\n    function onChange (e, data) {\r\n\r\n      if(options.onChange && typeof options.onChange === \"function\") {\r\n\r\n        /* jshint validthis:true */\r\n        options.onChange.apply(this, [data.rating, that]);\r\n      }\r\n    }\r\n\r\n    function onSet (e, data) {\r\n\r\n      if(options.onSet && typeof options.onSet === \"function\") {\r\n\r\n        /* jshint validthis:true */\r\n        options.onSet.apply(this, [data.rating, that]);\r\n      }\r\n    }\r\n\r\n    function bindEvents () {\r\n\r\n      $node.on(\"mousemove\", onMouseEnter)\r\n           .on(\"mouseenter\", onMouseEnter)\r\n           .on(\"mouseleave\", onMouseLeave)\r\n           .on(\"click\", onMouseClick)\r\n           .on(\"rateyo.init\", onInit)\r\n           .on(\"rateyo.change\", onChange)\r\n           .on(\"rateyo.set\", onSet);\r\n    }\r\n\r\n    function unbindEvents () {\r\n\r\n      $node.off(\"mousemove\", onMouseEnter)\r\n           .off(\"mouseenter\", onMouseEnter)\r\n           .off(\"mouseleave\", onMouseLeave)\r\n           .off(\"click\", onMouseClick)\r\n           .off(\"rateyo.init\", onInit)\r\n           .off(\"rateyo.change\", onChange)\r\n           .off(\"rateyo.set\", onSet);\r\n    }\r\n\r\n    setNumStars(options.numStars);\r\n    setReadOnly(options.readOnly);\r\n\r\n    if (options.rtl) {\r\n\r\n      setRtl(options.rtl);\r\n    }\r\n\r\n    this.collection.push(this);\r\n    this.rating(options.rating, true);\r\n\r\n    isInitialized = true;\r\n    $node.trigger(\"rateyo.init\", {rating: options.rating});\r\n  }\r\n\r\n  RateYo.prototype.collection = [];\r\n\r\n  function getInstance (node, collection) {\r\n\r\n    /*\r\n     * Given a HTML element (node) and a collection of RateYo instances,\r\n     * this function will search through the collection and return the matched\r\n     * instance having the node\r\n     */\r\n\r\n    var instance;\r\n\r\n    $.each(collection, function () {\r\n\r\n      if(node === this.node){\r\n\r\n        instance = this;\r\n        return false;\r\n      }\r\n    });\r\n\r\n    return instance;\r\n  }\r\n\r\n  function deleteInstance (node, collection) {\r\n\r\n    /*\r\n     * Given a HTML element (node) and a collection of RateYo instances,\r\n     * this function will search through the collection and delete the\r\n     * instance having the node, and return the modified collection\r\n     */\r\n\r\n    $.each(collection, function (index) {\r\n\r\n      if (node === this.node) {\r\n\r\n        var firstPart = collection.slice(0, index),\r\n            secondPart = collection.slice(index+1, collection.length);\r\n\r\n        collection = firstPart.concat(secondPart);\r\n\r\n        return false;\r\n      }\r\n    });\r\n\r\n    return collection;\r\n  }\r\n\r\n  function _rateYo (options) {\r\n\r\n    var rateYoInstances = RateYo.prototype.collection;\r\n\r\n    /* jshint validthis:true */\r\n    var $nodes = $(this);\r\n\r\n    if($nodes.length === 0) {\r\n\r\n      return $nodes;\r\n    }\r\n\r\n    var args = Array.prototype.slice.apply(arguments, []);\r\n\r\n    if (args.length === 0) {\r\n\r\n      //If args length is 0, Initialize the UI with default settings\r\n      options = args[0] = {};\r\n    }else if (args.length === 1 && typeof args[0] === \"object\") {\r\n\r\n      //If an Object is specified as first argument, it is considered as options\r\n      options = args[0];\r\n    }else if (args.length >= 1 && typeof args[0] === \"string\") {\r\n\r\n      /*\r\n       * if there is only one argument, and if its a string, it is supposed to be a\r\n       * method name, if more than one argument is specified, the remaining arguments\r\n       * except the first argument, will be passed as a params to the specified method\r\n       */\r\n\r\n      var methodName = args[0],\r\n          params = args.slice(1);\r\n\r\n      var result = [];\r\n\r\n      $.each($nodes, function (i, node) {\r\n\r\n        var existingInstance = getInstance(node, rateYoInstances);\r\n\r\n        if(!existingInstance) {\r\n\r\n          throw Error(\"Trying to set options before even initialization\");\r\n        }\r\n\r\n        var method = existingInstance[methodName];\r\n\r\n        if (!method) {\r\n\r\n          throw Error(\"Method \" + methodName + \" does not exist!\");\r\n        }\r\n\r\n        var returnVal = method.apply(existingInstance, params);\r\n\r\n        result.push(returnVal);\r\n      });\r\n\r\n      /*\r\n       * If the plugin in being called on only one jQuery Element, return only the\r\n       * first value, to support chaining.\r\n       */\r\n      result = result.length === 1? result[0]: result;\r\n\r\n      return result;\r\n    }else {\r\n\r\n      throw Error(\"Invalid Arguments\");\r\n    }\r\n\r\n    /*\r\n     * if only options are passed, extend default options, and if the plugin is not\r\n     * initialized on a particular jQuery element, initalize RateYo on it\r\n     */\r\n    options = $.extend({}, DEFAULTS, options);\r\n\r\n    return $.each($nodes, function () {\r\n\r\n               var existingInstance = getInstance(this, rateYoInstances);\r\n\r\n               if (existingInstance) {\r\n\r\n                 return existingInstance;\r\n               }\r\n\r\n               var $node = $(this),\r\n                   dataAttrs = {},\r\n                   optionsCopy = $.extend({}, options);\r\n\r\n               $.each($node.data(), function (key, value) {\r\n\r\n                 if (key.indexOf(\"rateyo\") !== 0) {\r\n\r\n                   return;\r\n                 }\r\n\r\n                 var optionName = key.replace(/^rateyo/, \"\");\r\n\r\n                 optionName = optionName[0].toLowerCase() + optionName.slice(1);\r\n\r\n                 dataAttrs[optionName] = value;\r\n\r\n                 delete optionsCopy[optionName];\r\n               });\r\n\r\n               return new RateYo($(this), $.extend({}, dataAttrs, optionsCopy));\r\n           });\r\n  }\r\n\r\n  function rateYo () {\r\n\r\n    /* jshint validthis:true */\r\n    return _rateYo.apply(this, Array.prototype.slice.apply(arguments, []));\r\n  }\r\n\r\n  window.RateYo = RateYo;\r\n  $.fn.rateYo = rateYo;\r\n\r\n}(window.jQuery));\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/jquery.rateyo.js","function _extends(){return(_extends=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(t[o]=n[o])}return t}).apply(this,arguments)}function _typeof(t){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}!function(t,e){\"object\"===(\"undefined\"==typeof exports?\"undefined\":_typeof(exports))&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):t.LazyLoad=e()}(this,function(){\"use strict\";var t=\"undefined\"!=typeof window,e=t&&!(\"onscroll\"in window)||\"undefined\"!=typeof navigator&&/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent),n=t&&\"IntersectionObserver\"in window,o=t&&\"classList\"in document.createElement(\"p\"),r={elements_selector:\"img\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",load_delay:0,auto_unobserve:!0,callback_enter:null,callback_exit:null,callback_reveal:null,callback_loaded:null,callback_error:null,callback_finish:null,use_native:!1},a=function(t,e){var n,o=new t(e);try{n=new CustomEvent(\"LazyLoad::Initialized\",{detail:{instance:o}})}catch(t){(n=document.createEvent(\"CustomEvent\")).initCustomEvent(\"LazyLoad::Initialized\",!1,!1,{instance:o})}window.dispatchEvent(n)};var i=function(t,e){return t.getAttribute(\"data-\"+e)},s=function(t,e,n){var o=\"data-\"+e;null!==n?t.setAttribute(o,n):t.removeAttribute(o)},c=function(t){return\"true\"===i(t,\"was-processed\")},l=function(t,e){return s(t,\"ll-timeout\",e)},u=function(t){return i(t,\"ll-timeout\")},d=function(t,e){t&&t(e)},f=function(t,e){t._loadingCount+=e,0===t._elements.length&&0===t._loadingCount&&d(t._settings.callback_finish)},_=function(t){for(var e,n=[],o=0;e=t.children[o];o+=1)\"SOURCE\"===e.tagName&&n.push(e);return n},v=function(t,e,n){n&&t.setAttribute(e,n)},g=function(t,e){v(t,\"sizes\",i(t,e.data_sizes)),v(t,\"srcset\",i(t,e.data_srcset)),v(t,\"src\",i(t,e.data_src))},m={IMG:function(t,e){var n=t.parentNode;n&&\"PICTURE\"===n.tagName&&_(n).forEach(function(t){g(t,e)});g(t,e)},IFRAME:function(t,e){v(t,\"src\",i(t,e.data_src))},VIDEO:function(t,e){_(t).forEach(function(t){v(t,\"src\",i(t,e.data_src))}),v(t,\"src\",i(t,e.data_src)),t.load()}},b=function(t,e){var n,o,r=e._settings,a=t.tagName,s=m[a];if(s)return s(t,r),f(e,1),void(e._elements=(n=e._elements,o=t,n.filter(function(t){return t!==o})));!function(t,e){var n=i(t,e.data_src),o=i(t,e.data_bg);n&&(t.style.backgroundImage='url(\"'.concat(n,'\")')),o&&(t.style.backgroundImage=o)}(t,r)},h=function(t,e){o?t.classList.add(e):t.className+=(t.className?\" \":\"\")+e},p=function(t,e,n){t.addEventListener(e,n)},y=function(t,e,n){t.removeEventListener(e,n)},E=function(t,e,n){y(t,\"load\",e),y(t,\"loadeddata\",e),y(t,\"error\",n)},w=function(t,e,n){var r=n._settings,a=e?r.class_loaded:r.class_error,i=e?r.callback_loaded:r.callback_error,s=t.target;!function(t,e){o?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\s+)\"+e+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")}(s,r.class_loading),h(s,a),d(i,s),f(n,-1)},I=function(t,e){var n=function n(r){w(r,!0,e),E(t,n,o)},o=function o(r){w(r,!1,e),E(t,n,o)};!function(t,e,n){p(t,\"load\",e),p(t,\"loadeddata\",e),p(t,\"error\",n)}(t,n,o)},k=[\"IMG\",\"IFRAME\",\"VIDEO\"],A=function(t,e){var n=e._observer;z(t,e),n&&e._settings.auto_unobserve&&n.unobserve(t)},L=function(t){var e=u(t);e&&(clearTimeout(e),l(t,null))},x=function(t,e){var n=e._settings.load_delay,o=u(t);o||(o=setTimeout(function(){A(t,e),L(t)},n),l(t,o))},z=function(t,e,n){var o=e._settings;!n&&c(t)||(k.indexOf(t.tagName)>-1&&(I(t,e),h(t,o.class_loading)),b(t,e),function(t){s(t,\"was-processed\",\"true\")}(t),d(o.callback_reveal,t),d(o.callback_set,t))},O=function(t){return!!n&&(t._observer=new IntersectionObserver(function(e){e.forEach(function(e){return function(t){return t.isIntersecting||t.intersectionRatio>0}(e)?function(t,e){var n=e._settings;d(n.callback_enter,t),n.load_delay?x(t,e):A(t,e)}(e.target,t):function(t,e){var n=e._settings;d(n.callback_exit,t),n.load_delay&&L(t)}(e.target,t)})},{root:(e=t._settings).container===document?null:e.container,rootMargin:e.thresholds||e.threshold+\"px\"}),!0);var e},N=[\"IMG\",\"IFRAME\"],C=function(t,e){return function(t){return t.filter(function(t){return!c(t)})}((n=t||function(t){return t.container.querySelectorAll(t.elements_selector)}(e),Array.prototype.slice.call(n)));var n},M=function(t,e){this._settings=function(t){return _extends({},r,t)}(t),this._loadingCount=0,O(this),this.update(e)};return M.prototype={update:function(t){var n,o=this,r=this._settings;(this._elements=C(t,r),!e&&this._observer)?(function(t){return t.use_native&&\"loading\"in HTMLImageElement.prototype}(r)&&((n=this)._elements.forEach(function(t){-1!==N.indexOf(t.tagName)&&(t.setAttribute(\"loading\",\"lazy\"),z(t,n))}),this._elements=C(t,r)),this._elements.forEach(function(t){o._observer.observe(t)})):this.loadAll()},destroy:function(){var t=this;this._observer&&(this._elements.forEach(function(e){t._observer.unobserve(e)}),this._observer=null),this._elements=null,this._settings=null},load:function(t,e){z(t,this,e)},loadAll:function(){var t=this;this._elements.forEach(function(e){A(e,t)})}},t&&function(t,e){if(e)if(e.length)for(var n,o=0;n=e[o];o+=1)a(t,n);else a(t,e)}(M,window.lazyLoadOptions),M});\n//# sourceMappingURL=lazyload.min.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/vanilla-lazyload/dist/lazyload.min.js\n// module id = 134\n// module chunks = 0","$.fn.plusItem = function () {\r\n  let $btn, $items, $desktop_count_limit, $desktop_expanded_count, $mobile_count_limit, $mobile_expanded_count, $btn_text ;\r\n\r\n  $btn = $(this).find('.js-plus-item-btn');\r\n  $items = $(this).find('.item');\r\n  $desktop_count_limit = $(this).data('desktop-count-limit');\r\n  $desktop_expanded_count = $(this).data('desktop-expanded-count');\r\n  $mobile_count_limit = $(this).data('mobile-count-limit');\r\n  $mobile_expanded_count = $(this).data('mobile-expanded-count');\r\n  $btn_text = $(this).data('button-message');\r\n\r\n  if ($(window).innerWidth() > 1024) {\r\n    if ($items.length > $desktop_count_limit) {\r\n      $(this).find(`.item:lt(${$desktop_expanded_count})`).removeClass('d-none');\r\n      $btn.removeClass('d-none');\r\n    } else {\r\n      $btn.addClass('d-none');\r\n      $items.removeClass('d-none');\r\n    }\r\n  } else {\r\n    if ($items.length > $mobile_count_limit) {\r\n      $(this).find(`.item:lt(${$mobile_expanded_count})`).removeClass('d-none');\r\n      $btn.removeClass('d-none');\r\n    } else {\r\n      $btn.addClass('d-none');\r\n      $items.removeClass('d-none');\r\n    }\r\n  }\r\n\r\n  $btn.text('+ ' + $btn_text);\r\n\r\n  $btn.click(function () {\r\n    $items.each(function () {\r\n      setTimeout(() => {\r\n        $(this).removeClass('d-none').fadeIn('slow');\r\n      }, $(this).index() * 50);\r\n    });\r\n    $(this).addClass('d-none');\r\n  });\r\n\r\n  return this;\r\n};\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/plusItem.js","var Platform = {};\r\n\r\n(function () {\r\n\r\n  Platform.detectDevice = function () {\r\n    var body = document.body;\r\n    var ua = navigator.userAgent;\r\n    var checker = {\r\n      // OS\r\n      Windows: ua.match(/Windows/),\r\n      MacOS: ua.match(/Mac/),\r\n      Android: ua.match(/Android/),\r\n\r\n      // Browser\r\n      Msie: ua.match(/Trident/),\r\n      Edge: ua.match(/Edge/),\r\n      Chrome: ua.match(/Chrome/),\r\n      Firefox: ua.match(/Firefox/),\r\n      Safari: ua.match(/Safari/),\r\n\r\n      // Device\r\n      isApple: ua.match(/(iPhone|iPod|iPad)/),\r\n      iPhone: ua.match(/iPhone/),\r\n      iPad: ua.match(/iPad/),\r\n      iPod: ua.match(/iPod/),\r\n    };\r\n\r\n    if (checker.isApple) {\r\n      // Apple\r\n      body.classList.add('isApple');\r\n\r\n      if (checker.iPhone) {\r\n        // Apple iPhone\r\n        body.classList.add('iphone');\r\n      } else if (checker.iPad) {\r\n        // Apple iPad\r\n        body.classList.add('ipad');\r\n      } else if (checker.iPod) {\r\n        // Apple iPod\r\n        body.classList.add('ipod');\r\n      }\r\n\r\n    } else  if (checker.Windows){\r\n      // Windows OS\r\n      body.classList.add('windowsOS');\r\n\r\n      if (checker.Edge){\r\n        // Edge Browser\r\n        body.classList.add('edge');\r\n      } else if (checker.Chrome){\r\n        // Chrome Browser\r\n        body.classList.add('chrome');\r\n      } else if(checker.Safari){\r\n        // Safari Browser\r\n        body.classList.add('safari');\r\n      } else if(checker.Firefox){\r\n        // Firefox Browser\r\n        body.classList.add('firefox');\r\n      } else if(checker.Msie){\r\n        // IE Browser\r\n        body.classList.add('msie');\r\n      }\r\n\r\n    } else if (checker.MacOS){\r\n      // Mac OS\r\n      body.classList.add('macOS');\r\n\r\n      if (checker.Chrome){\r\n        // Chrome Browser\r\n        body.classList.add('chrome');\r\n      } else if(checker.Safari){\r\n        // Safari Browser\r\n        body.classList.add('safari');\r\n      } else if(checker.Firefox){\r\n        // Firefox Browser\r\n        body.classList.add('firefox');\r\n      }\r\n\r\n    } else if (checker.Android){\r\n      // Android OS\r\n      body.classList.add('AndroidOS');\r\n    }\r\n\r\n  }\r\n\r\n  Platform.detectDevice();\r\n\r\n})($);\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/crossPlatform.js","// Promo Box\r\n$('.promo-box-name').txtTruncate({\r\n\tend: '...',\r\n\tlines: 1,\r\n});\r\n\r\n$('.promo-box-description').txtTruncate({\r\n\tend: '...',\r\n\tlines: 2,\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/ellipsis.js","jQuery.fn.backgroundSwitcher = function ( settings ) {\r\n    var config = {\r\n            breakpoint: 991.98,\r\n            bgDesktop: $( this ).data( 'bg-desktop' ),\r\n            bgMobile: $( this ).data( 'bg-mobile' ),\r\n        },\r\n        self = $( this );\r\n\r\n    if ( settings ) jQuery.extend( config, settings );\r\n\r\n    changeBackground();\r\n\r\n    function changeBackground () {\r\n        var imageURL = config.bgDesktop;\r\n\r\n        if ( $( window ).innerWidth() <= config.breakpoint ) {\r\n            imageURL = config.bgMobile;\r\n          }\r\n\r\n          self.css( 'background-image', `url(${imageURL})` );\r\n\r\n        // if ( self.prop( 'tagName' ) === 'IMG' ) {\r\n        //     if ( self.hasClass( 'lazy' ) && !self.hasClass( 'loaded' ) ) {\r\n        //         self.attr( 'data-src', imageURL );\r\n        //     } else {\r\n        //         self.attr( 'src', imageURL );\r\n        //     }\r\n        // } else if ( [ 'DIV', 'SECTION' ].indexOf( self.prop( 'tagName' ) ) !== -1 ) {\r\n        //     if ( self.hasClass( 'lazy' ) && !self.data( 'wasProcessed' ) ) {\r\n        //         self.attr( 'data-bg', `url(${imageURL})` );\r\n        //     } else {\r\n        //         self.css( 'background-image', `url(${imageURL})` );\r\n        //     }\r\n        // }\r\n    }\r\n\r\n    return this;\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/backgroundSwitcher.js","let articleGridFilter = {};\r\n\r\narticleGridFilter.dropdown = function() {\r\n    var $articleDropdown = $('.article-dropdown .article-dropdown-title');\r\n    var $articleContent = $('.article-dropdown .article-dropdown-menu');\r\n\r\n    $articleDropdown.click(function() {\r\n        var thisDropdown = $(this);\r\n\r\n        if (thisDropdown.next('.article-dropdown-menu').hasClass('show')) {\r\n            thisDropdown.next('.article-dropdown-menu').removeClass('show');\r\n        } else {\r\n            $articleContent.removeClass('show');\r\n            thisDropdown.next('.article-dropdown-menu').addClass('show');\r\n        }\r\n    });\r\n\r\n    window.onclick = function(event) {\r\n      if (!event.target.matches('.article-dropdown-title')) {\r\n        var dropdowns = document.getElementsByClassName('article-dropdown-menu');\r\n        var i;\r\n        for (i = 0; i < dropdowns.length; i++) {\r\n          var openDropdown = dropdowns[i];\r\n          if (openDropdown.classList.contains('show')) {\r\n            openDropdown.classList.remove('show');\r\n          }\r\n        }\r\n      }\r\n    }\r\n  };\r\n\r\n  articleGridFilter.dropdown();\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/articleFilter.js","( ( $ ) => {\r\n\t$( '.js-render-late' ).each( ( index, element ) => {\r\n\t\telement = $( element );\r\n\r\n\t\telement.replaceWith( element.data( 'html' ) );\r\n\t} );\r\n} )( jQuery );\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/lateRender.js","var disableBodyScroll = (function () {\r\n  var _selector = false,\r\n    _element = false,\r\n    _clientY;\r\n\r\n\r\n  if (!Element.prototype.matches)\r\n    Element.prototype.matches = Element.prototype.msMatchesSelector ||\r\n    Element.prototype.webkitMatchesSelector;\r\n\r\n  if (!Element.prototype.closest)\r\n    Element.prototype.closest = function (s) {\r\n      var el = this;\r\n      if (!document.documentElement.contains(el)) return null;\r\n      do {\r\n        if (el.matches(s)) return el;\r\n        el = el.parentElement || el.parentNode;\r\n      } while (el !== null && el.nodeType === 1);\r\n      return null;\r\n    };\r\n\r\n  var preventBodyScroll = function (event) {\r\n    if (false === _element || !event.target.closest(_selector)) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  var captureClientY = function (event) {\r\n    if (event.targetTouches.length === 1) {\r\n      _clientY = event.targetTouches[0].clientY;\r\n    }\r\n  };\r\n\r\n  var preventOverscroll = function (event) {\r\n    if (event.targetTouches.length !== 1) {\r\n      return;\r\n    }\r\n\r\n    var clientY = event.targetTouches[0].clientY - _clientY;\r\n\r\n    if (_element.scrollTop === 0 && clientY > 0) {\r\n      event.preventDefault();\r\n    }\r\n\r\n    if ((_element.scrollHeight - _element.scrollTop <= _element.clientHeight) && clientY < 0) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  return function (allow, selector) {\r\n    if (typeof selector !== 'undefined') {\r\n      _selector = selector;\r\n      _element = document.querySelector(selector);\r\n    }\r\n\r\n    if (true === allow) {\r\n      if (false !== _element) {\r\n        _element.addEventListener('touchstart', captureClientY, {\r\n          passive: false,\r\n        });\r\n        _element.addEventListener('touchmove', preventOverscroll, {\r\n          passive: false,\r\n        });\r\n      }\r\n      document.body.addEventListener('touchmove', preventBodyScroll, {\r\n        passive: false,\r\n      });\r\n    } else {\r\n      if (false !== _element) {\r\n        _element.removeEventListener('touchstart', captureClientY, {\r\n          passive: false,\r\n        });\r\n        _element.removeEventListener('touchmove', preventOverscroll, {\r\n          passive: false,\r\n        });\r\n      }\r\n      document.body.removeEventListener('touchmove', preventBodyScroll, {\r\n        passive: false,\r\n      });\r\n    }\r\n  };\r\n}());\r\n\r\nlet Nav = {};\r\n\r\nNav.init = function () {\r\n  Nav.overlay();\r\n  Nav.dropdown();\r\n}\r\n\r\nNav.overlay = function () {\r\n  let cartOverlay = $('.js-cart-overlay');\r\n  let navBarCollapse = $('#navbarNav');\r\n\r\n  // Cart Overlay\r\n  if (!$('body').is('.isApple, .AndroidOS')) {\r\n    cartOverlay.hover(function () {\r\n      $('body').addClass('cart-overlay');\r\n    }, function () {\r\n      $('body').removeClass('cart-overlay');\r\n    });\r\n  }\r\n\r\n  navBarCollapse.on('show.bs.collapse', function () {\r\n    $('body').addClass('nav-overlay');\r\n    document.documentElement.classList.add('no-scroll');\r\n    disableBodyScroll(true, '.navbar-collapse');\r\n  })\r\n\r\n  navBarCollapse.on('hidden.bs.collapse', function () {\r\n    $('body').removeClass('nav-overlay');\r\n    document.documentElement.classList.remove('no-scroll');\r\n    disableBodyScroll(false, '.navbar-collapse');\r\n    $('.js-menu-dropdown').removeClass('show');\r\n    $('.js-menu-body').removeClass('show');\r\n  })\r\n};\r\n\r\nNav.dropdown = function () {\r\n  //Menu Dropdown Mobile\r\n  let menuToggle = $('.js-menu-dropdown');\r\n  let menuBack = $('.js-mega-menu-back');\r\n\r\n  menuToggle.on('click', function () {\r\n    let thisMenu = $(this);\r\n      menuToggle.next('.js-menu-body').removeClass('show');\r\n      menuToggle.removeClass('show');\r\n      thisMenu.next('.js-menu-body').addClass('show');\r\n      thisMenu.addClass('show');\r\n\r\n      disableBodyScroll(false, '.navbar-collapse');\r\n      setTimeout(function () {\r\n        disableBodyScroll(true, '.dropdown-menu');\r\n      }, 400);\r\n  });\r\n\r\n  // Language dropdown for mobile\r\n  let mobileLanguageDropdown = $('.nav-mobile-language-toggle');\r\n\r\n  mobileLanguageDropdown.on('click', function () {\r\n    $(this).parent().toggleClass('is-open')\r\n  });\r\n\r\n  menuBack.on('click', function () {\r\n    $(this).closest('.nav-item').find('.js-menu-dropdown').removeClass('show');\r\n    $(this).closest('.nav-item').find('.js-menu-body').removeClass('show');\r\n    disableBodyScroll(false, '.dropdown-menu');\r\n    setTimeout(function () {\r\n      disableBodyScroll(true, '.navbar-collapse');\r\n    }, 400);\r\n  });\r\n\r\n};\r\n\r\nNav.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/nav.js","/* eslint-disable no-unused-vars */\r\nimport Headroom from '../vendor/headroom';\r\nvar Flickity = require('flickity');\r\nrequire('../util/autoPadding');\r\n\r\nlet headroom = {};\r\n\r\n(function ($) {\r\n  const headroomSlider = document.querySelector('.js-headroom-flickity');\r\n  let flickity = null;\r\n  let isInit = false;\r\n  let tickerSpeed = 1;\r\n\r\n  headroom.init = function () {\r\n    let msg = document.getElementById('js-main-nav-msg');\r\n    let nav = document.getElementById('js-nav-menu');\r\n    let body = document.getElementsByTagName('body')[0];\r\n\r\n    if (msg && nav) {\r\n      let navHeadroom = new Headroom(nav, {\r\n        offset: msg.offsetHeight,\r\n        classes: {\r\n          notTop: 'is-fixed-top',\r\n        },\r\n        onTop: function () {\r\n          msg.classList.remove('d-none');\r\n          body.classList.remove('has-fineprint-hidden');\r\n\r\n          if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n            body.classList.add('nav-is-adjust');\r\n\r\n            if (body.classList.contains('search-active')) {\r\n              body.classList.remove('nav-is-adjust');\r\n            } else {\r\n              body.classList.add('nav-is-adjust');\r\n            }\r\n\r\n            if (body.classList.contains('search-active') && !$('body').hasClass('nav-is-transparent')) {\r\n              $('body').autoPadding({\r\n                source: $('.js-header'),\r\n              });\r\n            }\r\n          }\r\n\r\n        },\r\n        onNotTop: function () {\r\n          msg.classList.add('d-none');\r\n          body.classList.add('has-fineprint-hidden');\r\n\r\n          if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n            body.classList.remove('nav-is-adjust');\r\n          }\r\n        },\r\n      });\r\n\r\n      navHeadroom.init();\r\n    }\r\n  };\r\n\r\n  headroom.usp = function () {\r\n    if (matchMedia('screen and (max-width: 1023px)').matches && headroomSlider) {\r\n      let isPaused = false;\r\n\r\n      const transitionUpdate = () => {\r\n        if (isPaused && !isInit) return;\r\n        if (flickity.slides) {\r\n          flickity.x = (flickity.x - tickerSpeed) % flickity.slideableWidth;\r\n          flickity.selectedIndex = flickity.dragEndRestingSelect();\r\n          flickity.updateSelectedSlide();\r\n          flickity.settle(flickity.x);\r\n        }\r\n        window.requestAnimationFrame(transitionUpdate);\r\n      };\r\n\r\n      flickity = new Flickity(headroomSlider, {\r\n        autoPlay: false,\r\n        prevNextButtons: false,\r\n        pageDots: false,\r\n        draggable: true,\r\n        wrapAround: true,\r\n        selectedAttraction: 0.015,\r\n        friction: 0.25,\r\n        on: {\r\n          ready: function () {\r\n            isInit = true;\r\n            headroomSlider.classList.remove('invisible');\r\n          },\r\n          dragStart: function () {\r\n            isPaused = true;\r\n          },\r\n        },\r\n      });\r\n      flickity.x = 0;\r\n\r\n      transitionUpdate();\r\n    } else {\r\n        if (headroomSlider) {\r\n              headroomSlider.classList.remove('invisible');\r\n        }\r\n      if (isInit == true) {\r\n        flickity.destroy();\r\n        isInit = false;\r\n      }\r\n    }\r\n  };\r\n\r\n  headroom.init();\r\n  headroom.usp();\r\n\r\n})(jQuery);\r\n\r\nwindow.headroom = headroom;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/headroom.js","/*!\r\n * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it\r\n * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js\r\n * License: MIT\r\n */\r\n\r\n(function(root, factory) {\r\n    'use strict';\r\n\r\n    if (typeof define === 'function' && define.amd) {\r\n        // AMD. Register as an anonymous module.\r\n        define([], factory);\r\n    }\r\n    else if (typeof exports === 'object') {\r\n        // COMMONJS\r\n        module.exports = factory();\r\n    }\r\n    else {\r\n        // BROWSER\r\n        root.Headroom = factory();\r\n    }\r\n}(this, function() {\r\n    'use strict';\r\n\r\n    /* exported features */\r\n    \r\n    var features = {\r\n        bind : !!(function(){}.bind),\r\n        classList : 'classList' in document.documentElement,\r\n        rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame),\r\n    };\r\n    window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;\r\n    \r\n    /**\r\n     * Handles debouncing of events via requestAnimationFrame\r\n     * @see http://www.html5rocks.com/en/tutorials/speed/animations/\r\n     * @param {Function} callback The callback to handle whichever event\r\n     */\r\n    function Debouncer (callback) {\r\n        this.callback = callback;\r\n        this.ticking = false;\r\n    }\r\n    Debouncer.prototype = {\r\n        constructor : Debouncer,\r\n    \r\n        /**\r\n         * dispatches the event to the supplied callback\r\n         * @private\r\n         */\r\n        update : function() {\r\n            this.callback && this.callback();\r\n            this.ticking = false;\r\n        },\r\n    \r\n        /**\r\n         * ensures events don't get stacked\r\n         * @private\r\n         */\r\n        requestTick : function() {\r\n            if(!this.ticking) {\r\n                requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));\r\n                this.ticking = true;\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Attach this as the event listeners\r\n         */\r\n        handleEvent : function() {\r\n            this.requestTick();\r\n        },\r\n    };\r\n    /**\r\n     * Check if object is part of the DOM\r\n     * @constructor\r\n     * @param {Object} obj element to check\r\n     */\r\n    function isDOMElement(obj) {\r\n        return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);\r\n    }\r\n    \r\n    /**\r\n     * Helper function for extending objects\r\n     */\r\n    function extend (object /*, objectN ... */) {\r\n        if(arguments.length <= 0) {\r\n            throw new Error('Missing arguments in extend function');\r\n        }\r\n    \r\n        var result = object || {},\r\n                key,\r\n                i;\r\n    \r\n        for (i = 1; i < arguments.length; i++) {\r\n            var replacement = arguments[i] || {};\r\n    \r\n            for (key in replacement) {\r\n                // Recurse into object except if the object is a DOM element\r\n                if(typeof result[key] === 'object' && ! isDOMElement(result[key])) {\r\n                    result[key] = extend(result[key], replacement[key]);\r\n                }\r\n                else {\r\n                    result[key] = result[key] || replacement[key];\r\n                }\r\n            }\r\n        }\r\n    \r\n        return result;\r\n    }\r\n    \r\n    /**\r\n     * Helper function for normalizing tolerance option to object format\r\n     */\r\n    function normalizeTolerance (t) {\r\n        return t === Object(t) ? t : { down : t, up : t };\r\n    }\r\n    \r\n    /**\r\n     * UI enhancement for fixed headers.\r\n     * Hides header when scrolling down\r\n     * Shows header when scrolling up\r\n     * @constructor\r\n     * @param {DOMElement} elem the header element\r\n     * @param {Object} options options for the widget\r\n     */\r\n    function Headroom (elem, options) {\r\n        options = extend(options, Headroom.options);\r\n    \r\n        this.lastKnownScrollY = 0;\r\n        this.elem             = elem;\r\n        this.tolerance        = normalizeTolerance(options.tolerance);\r\n        this.classes          = options.classes;\r\n        this.offset           = options.offset;\r\n        this.scroller         = options.scroller;\r\n        this.initialised      = false;\r\n        this.onPin            = options.onPin;\r\n        this.onUnpin          = options.onUnpin;\r\n        this.onTop            = options.onTop;\r\n        this.onNotTop         = options.onNotTop;\r\n        this.onBottom         = options.onBottom;\r\n        this.onNotBottom      = options.onNotBottom;\r\n    }\r\n    Headroom.prototype = {\r\n        constructor : Headroom,\r\n    \r\n        /**\r\n         * Initialises the widget\r\n         */\r\n        init : function() {\r\n            if(!Headroom.cutsTheMustard) {\r\n                return;\r\n            }\r\n    \r\n            this.debouncer = new Debouncer(this.update.bind(this));\r\n            this.elem.classList.add(this.classes.initial);\r\n    \r\n            // defer event registration to handle browser\r\n            // potentially restoring previous scroll position\r\n            setTimeout(this.attachEvent.bind(this), 100);\r\n    \r\n            return this;\r\n        },\r\n    \r\n        /**\r\n         * Unattaches events and removes any classes that were added\r\n         */\r\n        destroy : function() {\r\n            var classes = this.classes;\r\n    \r\n            this.initialised = false;\r\n    \r\n            for (var key in classes) {\r\n                if(classes.hasOwnProperty(key)) {\r\n                    this.elem.classList.remove(classes[key]);\r\n                }\r\n            }\r\n    \r\n            this.scroller.removeEventListener('scroll', this.debouncer, false);\r\n        },\r\n    \r\n        /**\r\n         * Attaches the scroll event\r\n         * @private\r\n         */\r\n        attachEvent : function() {\r\n            if(!this.initialised){\r\n                this.lastKnownScrollY = this.getScrollY();\r\n                this.initialised = true;\r\n                this.scroller.addEventListener('scroll', this.debouncer, false);\r\n    \r\n                this.debouncer.handleEvent();\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Unpins the header if it's currently pinned\r\n         */\r\n        unpin : function() {\r\n            var classList = this.elem.classList,\r\n                classes = this.classes;\r\n    \r\n            if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {\r\n                classList.add(classes.unpinned);\r\n                classList.remove(classes.pinned);\r\n                this.onUnpin && this.onUnpin.call(this);\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Pins the header if it's currently unpinned\r\n         */\r\n        pin : function() {\r\n            var classList = this.elem.classList,\r\n                classes = this.classes;\r\n    \r\n            if(classList.contains(classes.unpinned)) {\r\n                classList.remove(classes.unpinned);\r\n                classList.add(classes.pinned);\r\n                this.onPin && this.onPin.call(this);\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Handles the top states\r\n         */\r\n        top : function() {\r\n            var classList = this.elem.classList,\r\n                classes = this.classes;\r\n    \r\n            if(!classList.contains(classes.top)) {\r\n                classList.add(classes.top);\r\n                classList.remove(classes.notTop);\r\n                this.onTop && this.onTop.call(this);\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Handles the not top state\r\n         */\r\n        notTop : function() {\r\n            var classList = this.elem.classList,\r\n                classes = this.classes;\r\n    \r\n            if(!classList.contains(classes.notTop)) {\r\n                classList.add(classes.notTop);\r\n                classList.remove(classes.top);\r\n                this.onNotTop && this.onNotTop.call(this);\r\n            }\r\n        },\r\n    \r\n        bottom : function() {\r\n            var classList = this.elem.classList,\r\n                classes = this.classes;\r\n    \r\n            if(!classList.contains(classes.bottom)) {\r\n                classList.add(classes.bottom);\r\n                classList.remove(classes.notBottom);\r\n                this.onBottom && this.onBottom.call(this);\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Handles the not top state\r\n         */\r\n        notBottom : function() {\r\n            var classList = this.elem.classList,\r\n                classes = this.classes;\r\n    \r\n            if(!classList.contains(classes.notBottom)) {\r\n                classList.add(classes.notBottom);\r\n                classList.remove(classes.bottom);\r\n                this.onNotBottom && this.onNotBottom.call(this);\r\n            }\r\n        },\r\n    \r\n        /**\r\n         * Gets the Y scroll position\r\n         * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY\r\n         * @return {Number} pixels the page has scrolled along the Y-axis\r\n         */\r\n        getScrollY : function() {\r\n            return (this.scroller.pageYOffset !== undefined)\r\n                ? this.scroller.pageYOffset\r\n                : (this.scroller.scrollTop !== undefined)\r\n                    ? this.scroller.scrollTop\r\n                    : (document.documentElement || document.body.parentNode || document.body).scrollTop;\r\n        },\r\n    \r\n        /**\r\n         * Gets the height of the viewport\r\n         * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript\r\n         * @return {int} the height of the viewport in pixels\r\n         */\r\n        getViewportHeight : function () {\r\n            return window.innerHeight\r\n                || document.documentElement.clientHeight\r\n                || document.body.clientHeight;\r\n        },\r\n    \r\n        /**\r\n         * Gets the physical height of the DOM element\r\n         * @param  {Object}  elm the element to calculate the physical height of which\r\n         * @return {int}     the physical height of the element in pixels\r\n         */\r\n        getElementPhysicalHeight : function (elm) {\r\n            return Math.max(\r\n                elm.offsetHeight,\r\n                elm.clientHeight\r\n            );\r\n        },\r\n    \r\n        /**\r\n         * Gets the physical height of the scroller element\r\n         * @return {int} the physical height of the scroller element in pixels\r\n         */\r\n        getScrollerPhysicalHeight : function () {\r\n            return (this.scroller === window || this.scroller === document.body)\r\n                ? this.getViewportHeight()\r\n                : this.getElementPhysicalHeight(this.scroller);\r\n        },\r\n    \r\n        /**\r\n         * Gets the height of the document\r\n         * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/\r\n         * @return {int} the height of the document in pixels\r\n         */\r\n        getDocumentHeight : function () {\r\n            var body = document.body,\r\n                documentElement = document.documentElement;\r\n    \r\n            return Math.max(\r\n                body.scrollHeight, documentElement.scrollHeight,\r\n                body.offsetHeight, documentElement.offsetHeight,\r\n                body.clientHeight, documentElement.clientHeight\r\n            );\r\n        },\r\n    \r\n        /**\r\n         * Gets the height of the DOM element\r\n         * @param  {Object}  elm the element to calculate the height of which\r\n         * @return {int}     the height of the element in pixels\r\n         */\r\n        getElementHeight : function (elm) {\r\n            return Math.max(\r\n                elm.scrollHeight,\r\n                elm.offsetHeight,\r\n                elm.clientHeight\r\n            );\r\n        },\r\n    \r\n        /**\r\n         * Gets the height of the scroller element\r\n         * @return {int} the height of the scroller element in pixels\r\n         */\r\n        getScrollerHeight : function () {\r\n            return (this.scroller === window || this.scroller === document.body)\r\n                ? this.getDocumentHeight()\r\n                : this.getElementHeight(this.scroller);\r\n        },\r\n    \r\n        /**\r\n         * determines if the scroll position is outside of document boundaries\r\n         * @param  {int}  currentScrollY the current y scroll position\r\n         * @return {bool} true if out of bounds, false otherwise\r\n         */\r\n        isOutOfBounds : function (currentScrollY) {\r\n            var pastTop  = currentScrollY < 0,\r\n                pastBottom = currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight();\r\n    \r\n            return pastTop || pastBottom;\r\n        },\r\n    \r\n        /**\r\n         * determines if the tolerance has been exceeded\r\n         * @param  {int} currentScrollY the current scroll y position\r\n         * @return {bool} true if tolerance exceeded, false otherwise\r\n         */\r\n        toleranceExceeded : function (currentScrollY, direction) {\r\n            return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance[direction];\r\n        },\r\n    \r\n        /**\r\n         * determine if it is appropriate to unpin\r\n         * @param  {int} currentScrollY the current y scroll position\r\n         * @param  {bool} toleranceExceeded has the tolerance been exceeded?\r\n         * @return {bool} true if should unpin, false otherwise\r\n         */\r\n        shouldUnpin : function (currentScrollY, toleranceExceeded) {\r\n            var scrollingDown = currentScrollY > this.lastKnownScrollY,\r\n                pastOffset = currentScrollY >= this.offset;\r\n    \r\n            return scrollingDown && pastOffset && toleranceExceeded;\r\n        },\r\n    \r\n        /**\r\n         * determine if it is appropriate to pin\r\n         * @param  {int} currentScrollY the current y scroll position\r\n         * @param  {bool} toleranceExceeded has the tolerance been exceeded?\r\n         * @return {bool} true if should pin, false otherwise\r\n         */\r\n        shouldPin : function (currentScrollY, toleranceExceeded) {\r\n            var scrollingUp  = currentScrollY < this.lastKnownScrollY,\r\n                pastOffset = currentScrollY <= this.offset;\r\n    \r\n            return (scrollingUp && toleranceExceeded) || pastOffset;\r\n        },\r\n    \r\n        /**\r\n         * Handles updating the state of the widget\r\n         */\r\n        update : function() {\r\n            var currentScrollY  = this.getScrollY(),\r\n                scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up',\r\n                toleranceExceeded = this.toleranceExceeded(currentScrollY, scrollDirection);\r\n    \r\n            if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX\r\n                return;\r\n            }\r\n    \r\n            if (currentScrollY <= this.offset ) {\r\n                this.top();\r\n            } else {\r\n                this.notTop();\r\n            }\r\n    \r\n            if(currentScrollY + this.getViewportHeight() >= this.getScrollerHeight()) {\r\n                this.bottom();\r\n            }\r\n            else {\r\n                this.notBottom();\r\n            }\r\n    \r\n            if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {\r\n                this.unpin();\r\n            }\r\n            else if(this.shouldPin(currentScrollY, toleranceExceeded)) {\r\n                this.pin();\r\n            }\r\n    \r\n            this.lastKnownScrollY = currentScrollY;\r\n        },\r\n    };\r\n    /**\r\n     * Default options\r\n     * @type {Object}\r\n     */\r\n    Headroom.options = {\r\n        tolerance : {\r\n            up : 0,\r\n            down : 0,\r\n        },\r\n        offset : 0,\r\n        scroller: window,\r\n        classes : {\r\n            pinned : 'headroom--pinned',\r\n            unpinned : 'headroom--unpinned',\r\n            top : 'headroom--top',\r\n            notTop : 'headroom--not-top',\r\n            bottom : 'headroom--bottom',\r\n            notBottom : 'headroom--not-bottom',\r\n            initial : 'headroom',\r\n        },\r\n    };\r\n    Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;\r\n\r\n    return Headroom;\r\n}));\n\n\n// WEBPACK FOOTER //\n// ./scripts/vendor/headroom.js","/*!\n * Flickity v2.2.0\n * Touch, responsive, flickable carousels\n *\n * Licensed GPLv3 for open source use\n * or Flickity Commercial License for commercial use\n *\n * https://flickity.metafizzy.co\n * Copyright 2015-2018 Metafizzy\n */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      './drag',\n      './prev-next-button',\n      './page-dots',\n      './player',\n      './add-remove-cell',\n      './lazyload'\n    ], factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('./flickity'),\n      require('./drag'),\n      require('./prev-next-button'),\n      require('./page-dots'),\n      require('./player'),\n      require('./add-remove-cell'),\n      require('./lazyload')\n    );\n  }\n\n})( window, function factory( Flickity ) {\n  /*jshint strict: false*/\n  return Flickity;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/index.js\n// module id = 144\n// module chunks = 0","/**\n * matchesSelector v2.0.2\n * matchesSelector( element, '.selector' )\n * MIT license\n */\n\n/*jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  /*global define: false, module: false */\n  'use strict';\n  // universal module definition\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.matchesSelector = factory();\n  }\n\n}( window, function factory() {\n  'use strict';\n\n  var matchesMethod = ( function() {\n    var ElemProto = window.Element.prototype;\n    // check for the standard method name first\n    if ( ElemProto.matches ) {\n      return 'matches';\n    }\n    // check un-prefixed\n    if ( ElemProto.matchesSelector ) {\n      return 'matchesSelector';\n    }\n    // check vendor prefixes\n    var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\n\n    for ( var i=0; i < prefixes.length; i++ ) {\n      var prefix = prefixes[i];\n      var method = prefix + 'MatchesSelector';\n      if ( ElemProto[ method ] ) {\n        return method;\n      }\n    }\n  })();\n\n  return function matchesSelector( elem, selector ) {\n    return elem[ matchesMethod ]( selector );\n  };\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/desandro-matches-selector/matches-selector.js\n// module id = 145\n// module chunks = 0","// Flickity.Cell\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'get-size/get-size'\n    ], function( getSize ) {\n      return factory( window, getSize );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('get-size')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Cell = factory(\n      window,\n      window.getSize\n    );\n  }\n\n}( window, function factory( window, getSize ) {\n\n'use strict';\n\nfunction Cell( elem, parent ) {\n  this.element = elem;\n  this.parent = parent;\n\n  this.create();\n}\n\nvar proto = Cell.prototype;\n\nproto.create = function() {\n  this.element.style.position = 'absolute';\n  this.element.setAttribute( 'aria-hidden', 'true' );\n  this.x = 0;\n  this.shift = 0;\n};\n\nproto.destroy = function() {\n  // reset style\n  this.unselect();\n  this.element.style.position = '';\n  var side = this.parent.originSide;\n  this.element.style[ side ] = '';\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n};\n\nproto.setPosition = function( x ) {\n  this.x = x;\n  this.updateTarget();\n  this.renderPosition( x );\n};\n\n// setDefaultTarget v1 method, backwards compatibility, remove in v3\nproto.updateTarget = proto.setDefaultTarget = function() {\n  var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';\n  this.target = this.x + this.size[ marginProperty ] +\n    this.size.width * this.parent.cellAlign;\n};\n\nproto.renderPosition = function( x ) {\n  // render position of cell with in slider\n  var side = this.parent.originSide;\n  this.element.style[ side ] = this.parent.getPositionValue( x );\n};\n\nproto.select = function() {\n  this.element.classList.add('is-selected');\n  this.element.removeAttribute('aria-hidden');\n};\n\nproto.unselect = function() {\n  this.element.classList.remove('is-selected');\n  this.element.setAttribute( 'aria-hidden', 'true' );\n};\n\n/**\n * @param {Integer} factor - 0, 1, or -1\n**/\nproto.wrapShift = function( shift ) {\n  this.shift = shift;\n  this.renderPosition( this.x + this.parent.slideableWidth * shift );\n};\n\nproto.remove = function() {\n  this.element.parentNode.removeChild( this.element );\n};\n\nreturn Cell;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/cell.js\n// module id = 146\n// module chunks = 0","// slide\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory();\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.Slide = factory();\n  }\n\n}( window, function factory() {\n'use strict';\n\nfunction Slide( parent ) {\n  this.parent = parent;\n  this.isOriginLeft = parent.originSide == 'left';\n  this.cells = [];\n  this.outerWidth = 0;\n  this.height = 0;\n}\n\nvar proto = Slide.prototype;\n\nproto.addCell = function( cell ) {\n  this.cells.push( cell );\n  this.outerWidth += cell.size.outerWidth;\n  this.height = Math.max( cell.size.outerHeight, this.height );\n  // first cell stuff\n  if ( this.cells.length == 1 ) {\n    this.x = cell.x; // x comes from first cell\n    var beginMargin = this.isOriginLeft ? 'marginLeft' : 'marginRight';\n    this.firstMargin = cell.size[ beginMargin ];\n  }\n};\n\nproto.updateTarget = function() {\n  var endMargin = this.isOriginLeft ? 'marginRight' : 'marginLeft';\n  var lastCell = this.getLastCell();\n  var lastMargin = lastCell ? lastCell.size[ endMargin ] : 0;\n  var slideWidth = this.outerWidth - ( this.firstMargin + lastMargin );\n  this.target = this.x + this.firstMargin + slideWidth * this.parent.cellAlign;\n};\n\nproto.getLastCell = function() {\n  return this.cells[ this.cells.length - 1 ];\n};\n\nproto.select = function() {\n  this.cells.forEach( function( cell ) {\n    cell.select();\n  });\n};\n\nproto.unselect = function() {\n  this.cells.forEach( function( cell ) {\n    cell.unselect();\n  });\n};\n\nproto.getCellElements = function() {\n  return this.cells.map( function( cell ) {\n    return cell.element;\n  });\n};\n\nreturn Slide;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/slide.js\n// module id = 147\n// module chunks = 0","// animate\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'fizzy-ui-utils/utils'\n    ], function( utils ) {\n      return factory( window, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = window.Flickity || {};\n    window.Flickity.animatePrototype = factory(\n      window,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, utils ) {\n\n'use strict';\n\n// -------------------------- animate -------------------------- //\n\nvar proto = {};\n\nproto.startAnimation = function() {\n  if ( this.isAnimating ) {\n    return;\n  }\n\n  this.isAnimating = true;\n  this.restingFrames = 0;\n  this.animate();\n};\n\nproto.animate = function() {\n  this.applyDragForce();\n  this.applySelectedAttraction();\n\n  var previousX = this.x;\n\n  this.integratePhysics();\n  this.positionSlider();\n  this.settle( previousX );\n  // animate next frame\n  if ( this.isAnimating ) {\n    var _this = this;\n    requestAnimationFrame( function animateFrame() {\n      _this.animate();\n    });\n  }\n};\n\nproto.positionSlider = function() {\n  var x = this.x;\n  // wrap position around\n  if ( this.options.wrapAround && this.cells.length > 1 ) {\n    x = utils.modulo( x, this.slideableWidth );\n    x = x - this.slideableWidth;\n    this.shiftWrapCells( x );\n  }\n\n  this.setTranslateX( x, this.isAnimating );\n  this.dispatchScrollEvent();\n};\n\nproto.setTranslateX = function( x, is3d ) {\n  x += this.cursorPosition;\n  // reverse if right-to-left and using transform\n  x = this.options.rightToLeft ? -x : x;\n  var translateX = this.getPositionValue( x );\n  // use 3D tranforms for hardware acceleration on iOS\n  // but use 2D when settled, for better font-rendering\n  this.slider.style.transform = is3d ?\n    'translate3d(' + translateX + ',0,0)' : 'translateX(' + translateX + ')';\n};\n\nproto.dispatchScrollEvent = function() {\n  var firstSlide = this.slides[0];\n  if ( !firstSlide ) {\n    return;\n  }\n  var positionX = -this.x - firstSlide.target;\n  var progress = positionX / this.slidesWidth;\n  this.dispatchEvent( 'scroll', null, [ progress, positionX ] );\n};\n\nproto.positionSliderAtSelected = function() {\n  if ( !this.cells.length ) {\n    return;\n  }\n  this.x = -this.selectedSlide.target;\n  this.velocity = 0; // stop wobble\n  this.positionSlider();\n};\n\nproto.getPositionValue = function( position ) {\n  if ( this.options.percentPosition ) {\n    // percent position, round to 2 digits, like 12.34%\n    return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';\n  } else {\n    // pixel positioning\n    return Math.round( position ) + 'px';\n  }\n};\n\nproto.settle = function( previousX ) {\n  // keep track of frames where x hasn't moved\n  if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {\n    this.restingFrames++;\n  }\n  // stop animating if resting for 3 or more frames\n  if ( this.restingFrames > 2 ) {\n    this.isAnimating = false;\n    delete this.isFreeScrolling;\n    // render position with translateX when settled\n    this.positionSlider();\n    this.dispatchEvent( 'settle', null, [ this.selectedIndex ] );\n  }\n};\n\nproto.shiftWrapCells = function( x ) {\n  // shift before cells\n  var beforeGap = this.cursorPosition + x;\n  this._shiftCells( this.beforeShiftCells, beforeGap, -1 );\n  // shift after cells\n  var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );\n  this._shiftCells( this.afterShiftCells, afterGap, 1 );\n};\n\nproto._shiftCells = function( cells, gap, shift ) {\n  for ( var i=0; i < cells.length; i++ ) {\n    var cell = cells[i];\n    var cellShift = gap > 0 ? shift : 0;\n    cell.wrapShift( cellShift );\n    gap -= cell.size.outerWidth;\n  }\n};\n\nproto._unshiftCells = function( cells ) {\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  for ( var i=0; i < cells.length; i++ ) {\n    cells[i].wrapShift( 0 );\n  }\n};\n\n// -------------------------- physics -------------------------- //\n\nproto.integratePhysics = function() {\n  this.x += this.velocity;\n  this.velocity *= this.getFrictionFactor();\n};\n\nproto.applyForce = function( force ) {\n  this.velocity += force;\n};\n\nproto.getFrictionFactor = function() {\n  return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];\n};\n\nproto.getRestingPosition = function() {\n  // my thanks to Steven Wittens, who simplified this math greatly\n  return this.x + this.velocity / ( 1 - this.getFrictionFactor() );\n};\n\nproto.applyDragForce = function() {\n  if ( !this.isDraggable || !this.isPointerDown ) {\n    return;\n  }\n  // change the position to drag position by applying force\n  var dragVelocity = this.dragX - this.x;\n  var dragForce = dragVelocity - this.velocity;\n  this.applyForce( dragForce );\n};\n\nproto.applySelectedAttraction = function() {\n  // do not attract if pointer down or no slides\n  var dragDown = this.isDraggable && this.isPointerDown;\n  if ( dragDown || this.isFreeScrolling || !this.slides.length ) {\n    return;\n  }\n  var distance = this.selectedSlide.target * -1 - this.x;\n  var force = distance * this.options.selectedAttraction;\n  this.applyForce( force );\n};\n\nreturn proto;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/animate.js\n// module id = 148\n// module chunks = 0","// drag\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'unidragger/unidragger',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unidragger, utils ) {\n      return factory( window, Flickity, Unidragger, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unidragger'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    window.Flickity = factory(\n      window,\n      window.Flickity,\n      window.Unidragger,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unidragger, utils ) {\n\n'use strict';\n\n// ----- defaults ----- //\n\nutils.extend( Flickity.defaults, {\n  draggable: '>1',\n  dragThreshold: 3,\n});\n\n// ----- create ----- //\n\nFlickity.createMethods.push('_createDrag');\n\n// -------------------------- drag prototype -------------------------- //\n\nvar proto = Flickity.prototype;\nutils.extend( proto, Unidragger.prototype );\nproto._touchActionValue = 'pan-y';\n\n// --------------------------  -------------------------- //\n\nvar isTouch = 'createTouch' in document;\nvar isTouchmoveScrollCanceled = false;\n\nproto._createDrag = function() {\n  this.on( 'activate', this.onActivateDrag );\n  this.on( 'uiChange', this._uiChangeDrag );\n  this.on( 'deactivate', this.onDeactivateDrag );\n  this.on( 'cellChange', this.updateDraggable );\n  // TODO updateDraggable on resize? if groupCells & slides change\n  // HACK - add seemingly innocuous handler to fix iOS 10 scroll behavior\n  // #457, RubaXa/Sortable#973\n  if ( isTouch && !isTouchmoveScrollCanceled ) {\n    window.addEventListener( 'touchmove', function() {});\n    isTouchmoveScrollCanceled = true;\n  }\n};\n\nproto.onActivateDrag = function() {\n  this.handles = [ this.viewport ];\n  this.bindHandles();\n  this.updateDraggable();\n};\n\nproto.onDeactivateDrag = function() {\n  this.unbindHandles();\n  this.element.classList.remove('is-draggable');\n};\n\nproto.updateDraggable = function() {\n  // disable dragging if less than 2 slides. #278\n  if ( this.options.draggable == '>1' ) {\n    this.isDraggable = this.slides.length > 1;\n  } else {\n    this.isDraggable = this.options.draggable;\n  }\n  if ( this.isDraggable ) {\n    this.element.classList.add('is-draggable');\n  } else {\n    this.element.classList.remove('is-draggable');\n  }\n};\n\n// backwards compatibility\nproto.bindDrag = function() {\n  this.options.draggable = true;\n  this.updateDraggable();\n};\n\nproto.unbindDrag = function() {\n  this.options.draggable = false;\n  this.updateDraggable();\n};\n\nproto._uiChangeDrag = function() {\n  delete this.isFreeScrolling;\n};\n\n// -------------------------- pointer events -------------------------- //\n\nproto.pointerDown = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    this._pointerDownDefault( event, pointer );\n    return;\n  }\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n\n  this._pointerDownPreventDefault( event );\n  this.pointerDownFocus( event );\n  // blur\n  if ( document.activeElement != this.element ) {\n    // do not blur if already focused\n    this.pointerDownBlur();\n  }\n\n  // stop if it was moving\n  this.dragX = this.x;\n  this.viewport.classList.add('is-pointer-down');\n  // track scrolling\n  this.pointerDownScroll = getScrollPosition();\n  window.addEventListener( 'scroll', this );\n\n  this._pointerDownDefault( event, pointer );\n};\n\n// default pointerDown logic, used for staticClick\nproto._pointerDownDefault = function( event, pointer ) {\n  // track start event position\n  // Safari 9 overrides pageX and pageY. These values needs to be copied. #779\n  this.pointerDownPointer = {\n    pageX: pointer.pageX,\n    pageY: pointer.pageY,\n  };\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\nvar focusNodes = {\n  INPUT: true,\n  TEXTAREA: true,\n  SELECT: true,\n};\n\nproto.pointerDownFocus = function( event ) {\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isFocusNode ) {\n    this.focus();\n  }\n};\n\nproto._pointerDownPreventDefault = function( event ) {\n  var isTouchStart = event.type == 'touchstart';\n  var isTouchPointer = event.pointerType == 'touch';\n  var isFocusNode = focusNodes[ event.target.nodeName ];\n  if ( !isTouchStart && !isTouchPointer && !isFocusNode ) {\n    event.preventDefault();\n  }\n};\n\n// ----- move ----- //\n\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > this.options.dragThreshold;\n};\n\n// ----- up ----- //\n\nproto.pointerUp = function( event, pointer ) {\n  delete this.isTouchScrolling;\n  this.viewport.classList.remove('is-pointer-down');\n  this.dispatchEvent( 'pointerUp', event, [ pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto.pointerDone = function() {\n  window.removeEventListener( 'scroll', this );\n  delete this.pointerDownScroll;\n};\n\n// -------------------------- dragging -------------------------- //\n\nproto.dragStart = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  this.dragStartPosition = this.x;\n  this.startAnimation();\n  window.removeEventListener( 'scroll', this );\n  this.dispatchEvent( 'dragStart', event, [ pointer ] );\n};\n\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  event.preventDefault();\n\n  this.previousDragX = this.dragX;\n  // reverse if right-to-left\n  var direction = this.options.rightToLeft ? -1 : 1;\n  if ( this.options.wrapAround ) {\n    // wrap around move. #589\n    moveVector.x = moveVector.x % this.slideableWidth;\n  }\n  var dragX = this.dragStartPosition + moveVector.x * direction;\n\n  if ( !this.options.wrapAround && this.slides.length ) {\n    // slow drag\n    var originBound = Math.max( -this.slides[0].target, this.dragStartPosition );\n    dragX = dragX > originBound ? ( dragX + originBound ) * 0.5 : dragX;\n    var endBound = Math.min( -this.getLastSlide().target, this.dragStartPosition );\n    dragX = dragX < endBound ? ( dragX + endBound ) * 0.5 : dragX;\n  }\n\n  this.dragX = dragX;\n\n  this.dragMoveTime = new Date();\n  this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  if ( !this.isDraggable ) {\n    return;\n  }\n  if ( this.options.freeScroll ) {\n    this.isFreeScrolling = true;\n  }\n  // set selectedIndex based on where flick will end up\n  var index = this.dragEndRestingSelect();\n\n  if ( this.options.freeScroll && !this.options.wrapAround ) {\n    // if free-scroll & not wrap around\n    // do not free-scroll if going outside of bounding slides\n    // so bounding slides can attract slider, and keep it in bounds\n    var restingX = this.getRestingPosition();\n    this.isFreeScrolling = -restingX > this.slides[0].target &&\n      -restingX < this.getLastSlide().target;\n  } else if ( !this.options.freeScroll && index == this.selectedIndex ) {\n    // boost selection if selected index has not changed\n    index += this.dragEndBoostSelect();\n  }\n  delete this.previousDragX;\n  // apply selection\n  // TODO refactor this, selecting here feels weird\n  // HACK, set flag so dragging stays in correct direction\n  this.isDragSelect = this.options.wrapAround;\n  this.select( index );\n  delete this.isDragSelect;\n  this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\nproto.dragEndRestingSelect = function() {\n  var restingX = this.getRestingPosition();\n  // how far away from selected slide\n  var distance = Math.abs( this.getSlideDistance( -restingX, this.selectedIndex ) );\n  // get closet resting going up and going down\n  var positiveResting = this._getClosestResting( restingX, distance, 1 );\n  var negativeResting = this._getClosestResting( restingX, distance, -1 );\n  // use closer resting for wrap-around\n  var index = positiveResting.distance < negativeResting.distance ?\n    positiveResting.index : negativeResting.index;\n  return index;\n};\n\n/**\n * given resting X and distance to selected cell\n * get the distance and index of the closest cell\n * @param {Number} restingX - estimated post-flick resting position\n * @param {Number} distance - distance to selected cell\n * @param {Integer} increment - +1 or -1, going up or down\n * @returns {Object} - { distance: {Number}, index: {Integer} }\n */\nproto._getClosestResting = function( restingX, distance, increment ) {\n  var index = this.selectedIndex;\n  var minDistance = Infinity;\n  var condition = this.options.contain && !this.options.wrapAround ?\n    // if contain, keep going if distance is equal to minDistance\n    function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };\n  while ( condition( distance, minDistance ) ) {\n    // measure distance to next cell\n    index += increment;\n    minDistance = distance;\n    distance = this.getSlideDistance( -restingX, index );\n    if ( distance === null ) {\n      break;\n    }\n    distance = Math.abs( distance );\n  }\n  return {\n    distance: minDistance,\n    // selected was previous index\n    index: index - increment\n  };\n};\n\n/**\n * measure distance between x and a slide target\n * @param {Number} x\n * @param {Integer} index - slide index\n */\nproto.getSlideDistance = function( x, index ) {\n  var len = this.slides.length;\n  // wrap around if at least 2 slides\n  var isWrapAround = this.options.wrapAround && len > 1;\n  var slideIndex = isWrapAround ? utils.modulo( index, len ) : index;\n  var slide = this.slides[ slideIndex ];\n  if ( !slide ) {\n    return null;\n  }\n  // add distance for wrap-around slides\n  var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;\n  return x - ( slide.target + wrap );\n};\n\nproto.dragEndBoostSelect = function() {\n  // do not boost if no previousDragX or dragMoveTime\n  if ( this.previousDragX === undefined || !this.dragMoveTime ||\n    // or if drag was held for 100 ms\n    new Date() - this.dragMoveTime > 100 ) {\n    return 0;\n  }\n\n  var distance = this.getSlideDistance( -this.dragX, this.selectedIndex );\n  var delta = this.previousDragX - this.dragX;\n  if ( distance > 0 && delta > 0 ) {\n    // boost to next if moving towards the right, and positive velocity\n    return 1;\n  } else if ( distance < 0 && delta < 0 ) {\n    // boost to previous if moving towards the left, and negative velocity\n    return -1;\n  }\n  return 0;\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n  // get clickedCell, if cell was clicked\n  var clickedCell = this.getParentCell( event.target );\n  var cellElem = clickedCell && clickedCell.element;\n  var cellIndex = clickedCell && this.cells.indexOf( clickedCell );\n  this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );\n};\n\n// ----- scroll ----- //\n\nproto.onscroll = function() {\n  var scroll = getScrollPosition();\n  var scrollMoveX = this.pointerDownScroll.x - scroll.x;\n  var scrollMoveY = this.pointerDownScroll.y - scroll.y;\n  // cancel click/tap if scroll is too much\n  if ( Math.abs( scrollMoveX ) > 3 || Math.abs( scrollMoveY ) > 3 ) {\n    this._pointerDone();\n  }\n};\n\n// ----- utils ----- //\n\nfunction getScrollPosition() {\n  return {\n    x: window.pageXOffset,\n    y: window.pageYOffset\n  };\n}\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/drag.js\n// module id = 149\n// module chunks = 0","/*!\n * Unidragger v2.3.0\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /*globals define, module, require */\n\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'unipointer/unipointer'\n    ], function( Unipointer ) {\n      return factory( window, Unipointer );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('unipointer')\n    );\n  } else {\n    // browser global\n    window.Unidragger = factory(\n      window,\n      window.Unipointer\n    );\n  }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n  this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n  this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n  // munge isAdd, default to true\n  isAdd = isAdd === undefined ? true : isAdd;\n  // bind each handle\n  var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n  var touchAction = isAdd ? this._touchActionValue : '';\n  for ( var i=0; i < this.handles.length; i++ ) {\n    var handle = this.handles[i];\n    this._bindStartEvent( handle, isAdd );\n    handle[ bindMethod ]( 'click', this );\n    // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n    if ( window.PointerEvent ) {\n      handle.style.touchAction = touchAction;\n    }\n  }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n  var isOkay = this.okayPointerDown( event );\n  if ( !isOkay ) {\n    return;\n  }\n  // track start event position\n  this.pointerDownPointer = pointer;\n\n  event.preventDefault();\n  this.pointerDownBlur();\n  // bind move and end events\n  this._bindPostStartEvents( event );\n  this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n  TEXTAREA: true,\n  INPUT: true,\n  SELECT: true,\n  OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n  radio: true,\n  checkbox: true,\n  button: true,\n  submit: true,\n  image: true,\n  file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n  var isCursorNode = cursorNodes[ event.target.nodeName ];\n  var isClickType = clickTypes[ event.target.type ];\n  var isOkay = !isCursorNode || isClickType;\n  if ( !isOkay ) {\n    this._pointerReset();\n  }\n  return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n  var focused = document.activeElement;\n  // do not blur body for IE10, metafizzy/flickity#117\n  var canBlur = focused && focused.blur && focused != document.body;\n  if ( canBlur ) {\n    focused.blur();\n  }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n  var moveVector = this._dragPointerMove( event, pointer );\n  this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n  this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n  var moveVector = {\n    x: pointer.pageX - this.pointerDownPointer.pageX,\n    y: pointer.pageY - this.pointerDownPointer.pageY\n  };\n  // start drag if pointer has moved far enough to start drag\n  if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n    this._dragStart( event, pointer );\n  }\n  return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n  return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n  this.emitEvent( 'pointerUp', [ event, pointer ] );\n  this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n  if ( this.isDragging ) {\n    this._dragEnd( event, pointer );\n  } else {\n    // pointer didn't move enough for drag to start\n    this._staticClick( event, pointer );\n  }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n  this.isDragging = true;\n  // prevent clicks\n  this.isPreventingClicks = true;\n  this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n  this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n  // do not drag if not dragging yet\n  if ( !this.isDragging ) {\n    return;\n  }\n\n  this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n  event.preventDefault();\n  this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n  // set flags\n  this.isDragging = false;\n  // re-enable clicking async\n  setTimeout( function() {\n    delete this.isPreventingClicks;\n  }.bind( this ) );\n\n  this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n  this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n  if ( this.isPreventingClicks ) {\n    event.preventDefault();\n  }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n  // ignore emulated mouse up clicks\n  if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n    return;\n  }\n\n  this.staticClick( event, pointer );\n\n  // set flag for emulated clicks 300ms after touchend\n  if ( event.type != 'mouseup' ) {\n    this.isIgnoringMouseUp = true;\n    // reset flag after 300ms\n    setTimeout( function() {\n      delete this.isIgnoringMouseUp;\n    }.bind( this ), 400 );\n  }\n};\n\nproto.staticClick = function( event, pointer ) {\n  this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// -----  ----- //\n\nreturn Unidragger;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/unidragger/unidragger.js\n// module id = 150\n// module chunks = 0","// prev/next buttons\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unipointer'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.Unipointer,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n'use strict';\n\nvar svgURI = 'http://www.w3.org/2000/svg';\n\n// -------------------------- PrevNextButton -------------------------- //\n\nfunction PrevNextButton( direction, parent ) {\n  this.direction = direction;\n  this.parent = parent;\n  this._create();\n}\n\nPrevNextButton.prototype = Object.create( Unipointer.prototype );\n\nPrevNextButton.prototype._create = function() {\n  // properties\n  this.isEnabled = true;\n  this.isPrevious = this.direction == -1;\n  var leftDirection = this.parent.options.rightToLeft ? 1 : -1;\n  this.isLeft = this.direction == leftDirection;\n\n  var element = this.element = document.createElement('button');\n  element.className = 'flickity-button flickity-prev-next-button';\n  element.className += this.isPrevious ? ' previous' : ' next';\n  // prevent button from submitting form http://stackoverflow.com/a/10836076/182183\n  element.setAttribute( 'type', 'button' );\n  // init as disabled\n  this.disable();\n\n  element.setAttribute( 'aria-label', this.isPrevious ? 'Previous' : 'Next' );\n\n  // create arrow\n  var svg = this.createSVG();\n  element.appendChild( svg );\n  // events\n  this.parent.on( 'select', this.update.bind( this ) );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPrevNextButton.prototype.activate = function() {\n  this.bindStartEvent( this.element );\n  this.element.addEventListener( 'click', this );\n  // add to DOM\n  this.parent.element.appendChild( this.element );\n};\n\nPrevNextButton.prototype.deactivate = function() {\n  // remove from DOM\n  this.parent.element.removeChild( this.element );\n  // click events\n  this.unbindStartEvent( this.element );\n  this.element.removeEventListener( 'click', this );\n};\n\nPrevNextButton.prototype.createSVG = function() {\n  var svg = document.createElementNS( svgURI, 'svg');\n  svg.setAttribute( 'class', 'flickity-button-icon' );\n  svg.setAttribute( 'viewBox', '0 0 100 100' );\n  var path = document.createElementNS( svgURI, 'path');\n  var pathMovements = getArrowMovements( this.parent.options.arrowShape );\n  path.setAttribute( 'd', pathMovements );\n  path.setAttribute( 'class', 'arrow' );\n  // rotate arrow\n  if ( !this.isLeft ) {\n    path.setAttribute( 'transform', 'translate(100, 100) rotate(180) ' );\n  }\n  svg.appendChild( path );\n  return svg;\n};\n\n// get SVG path movmement\nfunction getArrowMovements( shape ) {\n  // use shape as movement if string\n  if ( typeof shape == 'string' ) {\n    return shape;\n  }\n  // create movement string\n  return 'M ' + shape.x0 + ',50' +\n    ' L ' + shape.x1 + ',' + ( shape.y1 + 50 ) +\n    ' L ' + shape.x2 + ',' + ( shape.y2 + 50 ) +\n    ' L ' + shape.x3 + ',50 ' +\n    ' L ' + shape.x2 + ',' + ( 50 - shape.y2 ) +\n    ' L ' + shape.x1 + ',' + ( 50 - shape.y1 ) +\n    ' Z';\n}\n\nPrevNextButton.prototype.handleEvent = utils.handleEvent;\n\nPrevNextButton.prototype.onclick = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.parent.uiChange();\n  var method = this.isPrevious ? 'previous' : 'next';\n  this.parent[ method ]();\n};\n\n// -----  ----- //\n\nPrevNextButton.prototype.enable = function() {\n  if ( this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = false;\n  this.isEnabled = true;\n};\n\nPrevNextButton.prototype.disable = function() {\n  if ( !this.isEnabled ) {\n    return;\n  }\n  this.element.disabled = true;\n  this.isEnabled = false;\n};\n\nPrevNextButton.prototype.update = function() {\n  // index of first or last slide, if previous or next\n  var slides = this.parent.slides;\n  // enable is wrapAround and at least 2 slides\n  if ( this.parent.options.wrapAround && slides.length > 1 ) {\n    this.enable();\n    return;\n  }\n  var lastIndex = slides.length ? slides.length - 1 : 0;\n  var boundIndex = this.isPrevious ? 0 : lastIndex;\n  var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';\n  this[ method ]();\n};\n\nPrevNextButton.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\n// -------------------------- Flickity prototype -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  prevNextButtons: true,\n  arrowShape: {\n    x0: 10,\n    x1: 60, y1: 50,\n    x2: 70, y2: 40,\n    x3: 30\n  }\n});\n\nFlickity.createMethods.push('_createPrevNextButtons');\nvar proto = Flickity.prototype;\n\nproto._createPrevNextButtons = function() {\n  if ( !this.options.prevNextButtons ) {\n    return;\n  }\n\n  this.prevButton = new PrevNextButton( -1, this );\n  this.nextButton = new PrevNextButton( 1, this );\n\n  this.on( 'activate', this.activatePrevNextButtons );\n};\n\nproto.activatePrevNextButtons = function() {\n  this.prevButton.activate();\n  this.nextButton.activate();\n  this.on( 'deactivate', this.deactivatePrevNextButtons );\n};\n\nproto.deactivatePrevNextButtons = function() {\n  this.prevButton.deactivate();\n  this.nextButton.deactivate();\n  this.off( 'deactivate', this.deactivatePrevNextButtons );\n};\n\n// --------------------------  -------------------------- //\n\nFlickity.PrevNextButton = PrevNextButton;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/prev-next-button.js\n// module id = 151\n// module chunks = 0","// page dots\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'unipointer/unipointer',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, Unipointer, utils ) {\n      return factory( window, Flickity, Unipointer, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('unipointer'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.Unipointer,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, Unipointer, utils ) {\n\n// -------------------------- PageDots -------------------------- //\n\n'use strict';\n\nfunction PageDots( parent ) {\n  this.parent = parent;\n  this._create();\n}\n\nPageDots.prototype = Object.create( Unipointer.prototype );\n\nPageDots.prototype._create = function() {\n  // create holder element\n  this.holder = document.createElement('ol');\n  this.holder.className = 'flickity-page-dots';\n  // create dots, array of elements\n  this.dots = [];\n  // events\n  this.handleClick = this.onClick.bind( this );\n  this.on( 'pointerDown', this.parent.childUIPointerDown.bind( this.parent ) );\n};\n\nPageDots.prototype.activate = function() {\n  this.setDots();\n  this.holder.addEventListener( 'click', this.handleClick );\n  this.bindStartEvent( this.holder );\n  // add to DOM\n  this.parent.element.appendChild( this.holder );\n};\n\nPageDots.prototype.deactivate = function() {\n  this.holder.removeEventListener( 'click', this.handleClick );\n  this.unbindStartEvent( this.holder );\n  // remove from DOM\n  this.parent.element.removeChild( this.holder );\n};\n\nPageDots.prototype.setDots = function() {\n  // get difference between number of slides and number of dots\n  var delta = this.parent.slides.length - this.dots.length;\n  if ( delta > 0 ) {\n    this.addDots( delta );\n  } else if ( delta < 0 ) {\n    this.removeDots( -delta );\n  }\n};\n\nPageDots.prototype.addDots = function( count ) {\n  var fragment = document.createDocumentFragment();\n  var newDots = [];\n  var length = this.dots.length;\n  var max = length + count;\n\n  for ( var i = length; i < max; i++ ) {\n    var dot = document.createElement('li');\n    dot.className = 'dot';\n    dot.setAttribute( 'aria-label', 'Page dot ' + ( i + 1 ) );\n    fragment.appendChild( dot );\n    newDots.push( dot );\n  }\n\n  this.holder.appendChild( fragment );\n  this.dots = this.dots.concat( newDots );\n};\n\nPageDots.prototype.removeDots = function( count ) {\n  // remove from this.dots collection\n  var removeDots = this.dots.splice( this.dots.length - count, count );\n  // remove from DOM\n  removeDots.forEach( function( dot ) {\n    this.holder.removeChild( dot );\n  }, this );\n};\n\nPageDots.prototype.updateSelected = function() {\n  // remove selected class on previous\n  if ( this.selectedDot ) {\n    this.selectedDot.className = 'dot';\n    this.selectedDot.removeAttribute('aria-current');\n  }\n  // don't proceed if no dots\n  if ( !this.dots.length ) {\n    return;\n  }\n  this.selectedDot = this.dots[ this.parent.selectedIndex ];\n  this.selectedDot.className = 'dot is-selected';\n  this.selectedDot.setAttribute( 'aria-current', 'step' );\n};\n\nPageDots.prototype.onTap = // old method name, backwards-compatible\nPageDots.prototype.onClick = function( event ) {\n  var target = event.target;\n  // only care about dot clicks\n  if ( target.nodeName != 'LI' ) {\n    return;\n  }\n\n  this.parent.uiChange();\n  var index = this.dots.indexOf( target );\n  this.parent.select( index );\n};\n\nPageDots.prototype.destroy = function() {\n  this.deactivate();\n  this.allOff();\n};\n\nFlickity.PageDots = PageDots;\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pageDots: true\n});\n\nFlickity.createMethods.push('_createPageDots');\n\nvar proto = Flickity.prototype;\n\nproto._createPageDots = function() {\n  if ( !this.options.pageDots ) {\n    return;\n  }\n  this.pageDots = new PageDots( this );\n  // events\n  this.on( 'activate', this.activatePageDots );\n  this.on( 'select', this.updateSelectedPageDots );\n  this.on( 'cellChange', this.updatePageDots );\n  this.on( 'resize', this.updatePageDots );\n  this.on( 'deactivate', this.deactivatePageDots );\n};\n\nproto.activatePageDots = function() {\n  this.pageDots.activate();\n};\n\nproto.updateSelectedPageDots = function() {\n  this.pageDots.updateSelected();\n};\n\nproto.updatePageDots = function() {\n  this.pageDots.setDots();\n};\n\nproto.deactivatePageDots = function() {\n  this.pageDots.deactivate();\n};\n\n// -----  ----- //\n\nFlickity.PageDots = PageDots;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/page-dots.js\n// module id = 152\n// module chunks = 0","// player & autoPlay\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      'ev-emitter/ev-emitter',\n      'fizzy-ui-utils/utils',\n      './flickity'\n    ], function( EvEmitter, utils, Flickity ) {\n      return factory( EvEmitter, utils, Flickity );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('ev-emitter'),\n      require('fizzy-ui-utils'),\n      require('./flickity')\n    );\n  } else {\n    // browser global\n    factory(\n      window.EvEmitter,\n      window.fizzyUIUtils,\n      window.Flickity\n    );\n  }\n\n}( window, function factory( EvEmitter, utils, Flickity ) {\n\n'use strict';\n\n// -------------------------- Player -------------------------- //\n\nfunction Player( parent ) {\n  this.parent = parent;\n  this.state = 'stopped';\n  // visibility change event handler\n  this.onVisibilityChange = this.visibilityChange.bind( this );\n  this.onVisibilityPlay = this.visibilityPlay.bind( this );\n}\n\nPlayer.prototype = Object.create( EvEmitter.prototype );\n\n// start play\nPlayer.prototype.play = function() {\n  if ( this.state == 'playing' ) {\n    return;\n  }\n  // do not play if page is hidden, start playing when page is visible\n  var isPageHidden = document.hidden;\n  if ( isPageHidden ) {\n    document.addEventListener( 'visibilitychange', this.onVisibilityPlay );\n    return;\n  }\n\n  this.state = 'playing';\n  // listen to visibility change\n  document.addEventListener( 'visibilitychange', this.onVisibilityChange );\n  // start ticking\n  this.tick();\n};\n\nPlayer.prototype.tick = function() {\n  // do not tick if not playing\n  if ( this.state != 'playing' ) {\n    return;\n  }\n\n  var time = this.parent.options.autoPlay;\n  // default to 3 seconds\n  time = typeof time == 'number' ? time : 3000;\n  var _this = this;\n  // HACK: reset ticks if stopped and started within interval\n  this.clear();\n  this.timeout = setTimeout( function() {\n    _this.parent.next( true );\n    _this.tick();\n  }, time );\n};\n\nPlayer.prototype.stop = function() {\n  this.state = 'stopped';\n  this.clear();\n  // remove visibility change event\n  document.removeEventListener( 'visibilitychange', this.onVisibilityChange );\n};\n\nPlayer.prototype.clear = function() {\n  clearTimeout( this.timeout );\n};\n\nPlayer.prototype.pause = function() {\n  if ( this.state == 'playing' ) {\n    this.state = 'paused';\n    this.clear();\n  }\n};\n\nPlayer.prototype.unpause = function() {\n  // re-start play if paused\n  if ( this.state == 'paused' ) {\n    this.play();\n  }\n};\n\n// pause if page visibility is hidden, unpause if visible\nPlayer.prototype.visibilityChange = function() {\n  var isPageHidden = document.hidden;\n  this[ isPageHidden ? 'pause' : 'unpause' ]();\n};\n\nPlayer.prototype.visibilityPlay = function() {\n  this.play();\n  document.removeEventListener( 'visibilitychange', this.onVisibilityPlay );\n};\n\n// -------------------------- Flickity -------------------------- //\n\nutils.extend( Flickity.defaults, {\n  pauseAutoPlayOnHover: true\n});\n\nFlickity.createMethods.push('_createPlayer');\nvar proto = Flickity.prototype;\n\nproto._createPlayer = function() {\n  this.player = new Player( this );\n\n  this.on( 'activate', this.activatePlayer );\n  this.on( 'uiChange', this.stopPlayer );\n  this.on( 'pointerDown', this.stopPlayer );\n  this.on( 'deactivate', this.deactivatePlayer );\n};\n\nproto.activatePlayer = function() {\n  if ( !this.options.autoPlay ) {\n    return;\n  }\n  this.player.play();\n  this.element.addEventListener( 'mouseenter', this );\n};\n\n// Player API, don't hate the ... thanks I know where the door is\n\nproto.playPlayer = function() {\n  this.player.play();\n};\n\nproto.stopPlayer = function() {\n  this.player.stop();\n};\n\nproto.pausePlayer = function() {\n  this.player.pause();\n};\n\nproto.unpausePlayer = function() {\n  this.player.unpause();\n};\n\nproto.deactivatePlayer = function() {\n  this.player.stop();\n  this.element.removeEventListener( 'mouseenter', this );\n};\n\n// ----- mouseenter/leave ----- //\n\n// pause auto-play on hover\nproto.onmouseenter = function() {\n  if ( !this.options.pauseAutoPlayOnHover ) {\n    return;\n  }\n  this.player.pause();\n  this.element.addEventListener( 'mouseleave', this );\n};\n\n// resume auto-play on hover off\nproto.onmouseleave = function() {\n  this.player.unpause();\n  this.element.removeEventListener( 'mouseleave', this );\n};\n\n// -----  ----- //\n\nFlickity.Player = Player;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/player.js\n// module id = 153\n// module chunks = 0","// add, remove cell\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n\n'use strict';\n\n// append cells to a document fragment\nfunction getCellsFragment( cells ) {\n  var fragment = document.createDocumentFragment();\n  cells.forEach( function( cell ) {\n    fragment.appendChild( cell.element );\n  });\n  return fragment;\n}\n\n// -------------------------- add/remove cell prototype -------------------------- //\n\nvar proto = Flickity.prototype;\n\n/**\n * Insert, prepend, or append cells\n * @param {Element, Array, NodeList} elems\n * @param {Integer} index\n */\nproto.insert = function( elems, index ) {\n  var cells = this._makeCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n  var len = this.cells.length;\n  // default to append\n  index = index === undefined ? len : index;\n  // add cells with document fragment\n  var fragment = getCellsFragment( cells );\n  // append to slider\n  var isAppend = index == len;\n  if ( isAppend ) {\n    this.slider.appendChild( fragment );\n  } else {\n    var insertCellElement = this.cells[ index ].element;\n    this.slider.insertBefore( fragment, insertCellElement );\n  }\n  // add to this.cells\n  if ( index === 0 ) {\n    // prepend, add to start\n    this.cells = cells.concat( this.cells );\n  } else if ( isAppend ) {\n    // append, add to end\n    this.cells = this.cells.concat( cells );\n  } else {\n    // insert in this.cells\n    var endCells = this.cells.splice( index, len - index );\n    this.cells = this.cells.concat( cells ).concat( endCells );\n  }\n\n  this._sizeCells( cells );\n  this.cellChange( index, true );\n};\n\nproto.append = function( elems ) {\n  this.insert( elems, this.cells.length );\n};\n\nproto.prepend = function( elems ) {\n  this.insert( elems, 0 );\n};\n\n/**\n * Remove cells\n * @param {Element, Array, NodeList} elems\n */\nproto.remove = function( elems ) {\n  var cells = this.getCells( elems );\n  if ( !cells || !cells.length ) {\n    return;\n  }\n\n  var minCellIndex = this.cells.length - 1;\n  // remove cells from collection & DOM\n  cells.forEach( function( cell ) {\n    cell.remove();\n    var index = this.cells.indexOf( cell );\n    minCellIndex = Math.min( index, minCellIndex );\n    utils.removeFrom( this.cells, cell );\n  }, this );\n\n  this.cellChange( minCellIndex, true );\n};\n\n/**\n * logic to be run after a cell's size changes\n * @param {Element} elem - cell's element\n */\nproto.cellSizeChange = function( elem ) {\n  var cell = this.getCell( elem );\n  if ( !cell ) {\n    return;\n  }\n  cell.getSize();\n\n  var index = this.cells.indexOf( cell );\n  this.cellChange( index );\n};\n\n/**\n * logic any time a cell is changed: added, removed, or size changed\n * @param {Integer} changedCellIndex - index of the changed cell, optional\n */\nproto.cellChange = function( changedCellIndex, isPositioningSlider ) {\n  var prevSelectedElem = this.selectedElement;\n  this._positionCells( changedCellIndex );\n  this._getWrapShiftCells();\n  this.setGallerySize();\n  // update selectedIndex\n  // try to maintain position & select previous selected element\n  var cell = this.getCell( prevSelectedElem );\n  if ( cell ) {\n    this.selectedIndex = this.getCellSlideIndex( cell );\n  }\n  this.selectedIndex = Math.min( this.slides.length - 1, this.selectedIndex );\n\n  this.emitEvent( 'cellChange', [ changedCellIndex ] );\n  // position slider\n  this.select( this.selectedIndex );\n  // do not position slider after lazy load\n  if ( isPositioningSlider ) {\n    this.positionSliderAtSelected();\n  }\n};\n\n// -----  ----- //\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/add-remove-cell.js\n// module id = 154\n// module chunks = 0","// lazyload\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n      './flickity',\n      'fizzy-ui-utils/utils'\n    ], function( Flickity, utils ) {\n      return factory( window, Flickity, utils );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('./flickity'),\n      require('fizzy-ui-utils')\n    );\n  } else {\n    // browser global\n    factory(\n      window,\n      window.Flickity,\n      window.fizzyUIUtils\n    );\n  }\n\n}( window, function factory( window, Flickity, utils ) {\n'use strict';\n\nFlickity.createMethods.push('_createLazyload');\nvar proto = Flickity.prototype;\n\nproto._createLazyload = function() {\n  this.on( 'select', this.lazyLoad );\n};\n\nproto.lazyLoad = function() {\n  var lazyLoad = this.options.lazyLoad;\n  if ( !lazyLoad ) {\n    return;\n  }\n  // get adjacent cells, use lazyLoad option for adjacent count\n  var adjCount = typeof lazyLoad == 'number' ? lazyLoad : 0;\n  var cellElems = this.getAdjacentCellElements( adjCount );\n  // get lazy images in those cells\n  var lazyImages = [];\n  cellElems.forEach( function( cellElem ) {\n    var lazyCellImages = getCellLazyImages( cellElem );\n    lazyImages = lazyImages.concat( lazyCellImages );\n  });\n  // load lazy images\n  lazyImages.forEach( function( img ) {\n    new LazyLoader( img, this );\n  }, this );\n};\n\nfunction getCellLazyImages( cellElem ) {\n  // check if cell element is lazy image\n  if ( cellElem.nodeName == 'IMG' ) {\n    var lazyloadAttr = cellElem.getAttribute('data-flickity-lazyload');\n    var srcAttr = cellElem.getAttribute('data-flickity-lazyload-src');\n    var srcsetAttr = cellElem.getAttribute('data-flickity-lazyload-srcset');\n    if ( lazyloadAttr || srcAttr || srcsetAttr ) {\n      return [ cellElem ];\n    }\n  }\n  // select lazy images in cell\n  var lazySelector = 'img[data-flickity-lazyload], ' +\n    'img[data-flickity-lazyload-src], img[data-flickity-lazyload-srcset]';\n  var imgs = cellElem.querySelectorAll( lazySelector );\n  return utils.makeArray( imgs );\n}\n\n// -------------------------- LazyLoader -------------------------- //\n\n/**\n * class to handle loading images\n */\nfunction LazyLoader( img, flickity ) {\n  this.img = img;\n  this.flickity = flickity;\n  this.load();\n}\n\nLazyLoader.prototype.handleEvent = utils.handleEvent;\n\nLazyLoader.prototype.load = function() {\n  this.img.addEventListener( 'load', this );\n  this.img.addEventListener( 'error', this );\n  // get src & srcset\n  var src = this.img.getAttribute('data-flickity-lazyload') ||\n    this.img.getAttribute('data-flickity-lazyload-src');\n  var srcset = this.img.getAttribute('data-flickity-lazyload-srcset');\n  // set src & serset\n  this.img.src = src;\n  if ( srcset ) {\n    this.img.setAttribute( 'srcset', srcset );\n  }\n  // remove attr\n  this.img.removeAttribute('data-flickity-lazyload');\n  this.img.removeAttribute('data-flickity-lazyload-src');\n  this.img.removeAttribute('data-flickity-lazyload-srcset');\n};\n\nLazyLoader.prototype.onload = function( event ) {\n  this.complete( event, 'flickity-lazyloaded' );\n};\n\nLazyLoader.prototype.onerror = function( event ) {\n  this.complete( event, 'flickity-lazyerror' );\n};\n\nLazyLoader.prototype.complete = function( event, className ) {\n  // unbind events\n  this.img.removeEventListener( 'load', this );\n  this.img.removeEventListener( 'error', this );\n\n  var cell = this.flickity.getParentCell( this.img );\n  var cellElem = cell && cell.element;\n  this.flickity.cellSizeChange( cellElem );\n\n  this.img.classList.add( className );\n  this.flickity.dispatchEvent( 'lazyLoad', event, cellElem );\n};\n\n// -----  ----- //\n\nFlickity.LazyLoader = LazyLoader;\n\nreturn Flickity;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/flickity/js/lazyload.js\n// module id = 155\n// module chunks = 0","var disableBodyScroll = (function() {\r\n  var _selector = false,\r\n    _element = false,\r\n    _clientY;\r\n\r\n  if (!Element.prototype.matches)\r\n    Element.prototype.matches = Element.prototype.msMatchesSelector ||\r\n    Element.prototype.webkitMatchesSelector;\r\n\r\n  if (!Element.prototype.closest)\r\n    Element.prototype.closest = function(s) {\r\n        var el = this;\r\n        if (!document.documentElement.contains(el)) return null;\r\n        do {\r\n            if (el.matches(s)) return el;\r\n            el = el.parentElement || el.parentNode;\r\n        } while (el !== null && el.nodeType === 1);\r\n        return null;\r\n    };\r\n\r\n  var preventBodyScroll = function(event) {\r\n    if (false === _element || !event.target.closest(_selector)) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  var captureClientY = function(event) {\r\n    if (event.targetTouches.length === 1) {\r\n      _clientY = event.targetTouches[0].clientY;\r\n    }\r\n  };\r\n\r\n  var preventOverscroll = function(event) {\r\n    if (event.targetTouches.length !== 1) {\r\n      return;\r\n    }\r\n\r\n    var clientY = event.targetTouches[0].clientY - _clientY;\r\n\r\n    if (_element.scrollTop === 0 && clientY > 0) {\r\n      event.preventDefault();\r\n    }\r\n\r\n    if ((_element.scrollHeight - _element.scrollTop <= _element.clientHeight) && clientY < 0) {\r\n      event.preventDefault();\r\n    }\r\n  };\r\n\r\n  return function(allow, selector) {\r\n    if (typeof selector !== 'undefined') {\r\n      _selector = selector;\r\n      _element = document.querySelector(selector);\r\n    }\r\n\r\n    if (true === allow) {\r\n      if (false !== _element) {\r\n        _element.addEventListener('touchstart', captureClientY, {\r\n          passive: false,\r\n        });\r\n        _element.addEventListener('touchmove', preventOverscroll, {\r\n          passive: false,\r\n        });\r\n      }\r\n      document.body.addEventListener('touchmove', preventBodyScroll, {\r\n        passive: false,\r\n      });\r\n    } else {\r\n      if (false !== _element) {\r\n        _element.removeEventListener('touchstart', captureClientY, {\r\n          passive: false,\r\n        });\r\n        _element.removeEventListener('touchmove', preventOverscroll, {\r\n          passive: false,\r\n        });\r\n      }\r\n      document.body.removeEventListener('touchmove', preventBodyScroll, {\r\n        passive: false,\r\n      });\r\n    }\r\n  };\r\n}());\r\n\r\nlet supportsOrientationChange = 'onorientationchange' in window,\r\n    orientationEvent = supportsOrientationChange ? 'orientationchange' : 'resize';\r\n\r\nlet Filter = {};\r\n\r\nFilter.toggle = function() {\r\n  let openFilter = $('.js-filter-open');\r\n  let closeFilter = $('.js-filter-close');\r\n  let filterContent = $('.js-filter-collapse');\r\n\r\n  openFilter.click(function () {\r\n    filterContent.addClass('show');\r\n    $('body').addClass('filter-is-open');\r\n    if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n      disableBodyScroll(true, '.js-filter-collapse');\r\n    }\r\n  });\r\n\r\n  closeFilter.click(function (e) {\r\n    e.preventDefault();\r\n    filterContent.removeClass('show');\r\n    $('body').removeClass('filter-is-open');\r\n    if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n      disableBodyScroll(false, '.js-filter-collapse');\r\n    }\r\n  });\r\n\r\n  if ($('.product-filter')[0]){\r\n    window.addEventListener(orientationEvent, function() {\r\n      filterContent.removeClass('show');\r\n      $('body').removeClass('filter-is-open');\r\n      if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n        disableBodyScroll(false, '.js-filter-collapse');\r\n      }\r\n    }, false);\r\n  }\r\n\r\n  $( document ).on( 'click', '.js-filter-collapse .dropdown-menu', function ( e ) {\r\n    e.stopPropagation();\r\n} );\r\n};\r\n\r\n// Filter.accordion = function() {\r\n//   var toggleAccordion = $('.js-accordion-toggle');\r\n//   var accordionBody = $('.js-accordion-body');\r\n\r\n//   toggleAccordion.click(function() {\r\n//     var thisAccordion = $(this);\r\n//     if (thisAccordion.hasClass('is-open')) {\r\n//       thisAccordion.siblings(accordionBody).removeClass('is-open');\r\n//       thisAccordion.removeClass('is-open');\r\n//     } else {\r\n//       thisAccordion.siblings(accordionBody).addClass('is-open');\r\n//       thisAccordion.addClass('is-open');\r\n//     }\r\n//   });\r\n// };\r\n\r\nFilter.toggle();\r\n// Filter.accordion();\r\n\r\nFilter.dropdownUpdate = function () {\r\n  if ( $( '.product-filter .filter-container' ).length === 0 ) {\r\n    return;\r\n  }\r\n\r\n  var $checkSelector = $( '.product-filter .custom-dropdown' );\r\n  var $checkBox = $( '.product-filter .custom-dropdown .check-selector .custom-control-input' );\r\n\r\n  $checkSelector.each( function () {\r\n      var thisSelector = $( this );\r\n      var count = thisSelector.find( '.check-selector .custom-control-input:checked' ).length;\r\n\r\n      if ( !thisSelector.hasClass( 'sort' ) ) {\r\n          if ( !count == 0 ) {\r\n              thisSelector.addClass( 'has-dash' ).find( '.dropdown-toggle .check-count' ).text( count );\r\n          }\r\n      }\r\n  } );\r\n\r\n  $checkBox.change( function () {\r\n      var countCheckedCheck = $( this ).closest( '.check-selector' ).find( '.custom-control-input:checked' ).length;\r\n\r\n      if ( !countCheckedCheck == 0 ) {\r\n          $( this ).closest( '.custom-dropdown' ).addClass( 'has-dash' ).find( '.dropdown-toggle .check-count' ).text( countCheckedCheck );\r\n      } else {\r\n          $( this ).closest( '.custom-dropdown' ).removeClass( 'has-dash' ).find( '.dropdown-toggle .check-count' ).text( '' );\r\n      }\r\n  } );\r\n\r\n  var dropdownSelector = $( '.product-filter .custom-dropdown .dropdown-menu.sort ul>li' );\r\n  dropdownSelector.off( 'click' ).on( 'click', function() {\r\n    dropdownSelector.each(function() {\r\n      $(this).removeClass( 'selected' );\r\n    });\r\n\r\n    $(this).addClass( 'selected' );\r\n  } );\r\n};\r\n\r\nFilter.dropdownUpdate();\r\n\r\n\r\nvar FilterUpdater = {};\r\n\r\n( function ( $ ) {\r\n    var form = $( '#silkFilterForm' ), isSearch = $( 'body.search' ).length !== 0;\r\n\r\n//    var initialLoad = true;\r\n\r\n    FilterUpdater.update = function (filterProducts) {\r\n\r\n        var products = $( '.products .product' );\r\n\r\n        if( filterProducts ) {\r\n            products = filterProducts;\r\n        }\r\n\r\n        if ( form.length === 0 || products.length === 0 ) {\r\n            return;\r\n        }\r\n\r\n        // Hide all filter items\r\n        if( isSearch ) {\r\n            form.find( 'input[type=checkbox]' ).parents( 'li' ).hide();\r\n        } else {\r\n            form.find( 'input[type=checkbox][name=category],input[type=checkbox][name=material],input[type=checkbox][name=color],input[type=checkbox][name=size],input[type=checkbox][name=model],input[type=checkbox][name=heel]' ).parents( 'li' ).hide();\r\n        }\r\n\r\n        // Show only filter items that matches with the products\r\n        $.each( products, function () {\r\n            var product = $( this ),\r\n                categories = product.data( 'category' ),\r\n                materials = product.data( 'material' ),\r\n                size = product.data( 'size' ),\r\n                color = product.data( 'color' ),\r\n                model = product.data( 'model' ),\r\n                heel = product.data( 'heel' );\r\n\r\n\r\n            // Filter categories only in search page\r\n            if ( categories ) {\r\n                $.each( categories.split( '|' ), function () {\r\n                    form.find( 'input[name=category][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n                } );\r\n            }\r\n\r\n            if ( materials ) {\r\n                $.each( materials.split( '|' ), function () {\r\n                    form.find( 'input[name=material][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n                } );\r\n            }\r\n\r\n            if ( size ) {\r\n              $.each( size.toString().split( '|' ), function () {\r\n                  form.find( 'input[name=size][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n              } );\r\n            }\r\n\r\n            if ( color ) {\r\n              $.each( color.split( '|' ), function () {\r\n                  form.find( 'input[name=color][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n              } );\r\n            }\r\n\r\n            if ( model ) {\r\n              $.each( model.split( '|' ), function () {\r\n                  form.find( 'input[name=model][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n              } );\r\n            }\r\n\r\n            if ( heel ) {\r\n              $.each( heel.split( '|' ), function () {\r\n                  form.find( 'input[name=heel][value=\"' + this + '\"]' ).parents( 'li' ).show();\r\n              } );\r\n            }\r\n/*\r\n            console.log(\"show\");\r\n            console.log( product.data( 'color' ) );\r\n*/\r\n            form.find( 'input[name=color][value=\"' + product.data( 'color' ) + '\"]' ).parents( 'li' ).show();\r\n            form.find( 'input[name=size][value=\"' + product.data( 'size' ) + '\"]' ).parents( 'li' ).show();\r\n        } );\r\n\r\n        // Hide filter group without visible items\r\n        $.each( $( 'ul.check-selector' ), function () {\r\n            var list = $( this ), visibleCount = 0;\r\n\r\n            $.each( list.children( 'li' ), function () {\r\n                visibleCount += $( this ).css( 'display' ) === 'none' ? 0 : 1;\r\n            } );\r\n\r\n            if ( visibleCount < 1 ) {\r\n                list.parents( '.col-lg' ).hide();\r\n            } else {\r\n                list.parents( '.col-lg' ).show();\r\n            }\r\n        } );\r\n    };\r\n\r\n    FilterUpdater.update();\r\n\r\n    window.FilterUpdater = FilterUpdater;\r\n    window.Filter = Filter;\r\n} )( jQuery );\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/filter.js","let Dropdown = {};\r\n\r\nDropdown.init = function() {\r\n  Dropdown.overlayScroll();\r\n};\r\n\r\nDropdown.overlayScroll = function() {\r\n  $('.js-dropdown-overlay').overlayScrollbars({ });\r\n};\r\n\r\n$(window).on('load',function(){\r\n  Dropdown.init();\r\n});\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/dropdown.js","var Filter = {};\r\n\r\n//add class if certain color was detected\r\nFilter.for_color = function () {\r\n  var el = document.getElementsByClassName('js-color');\r\n  if (!el) {\r\n      return;\r\n  }\r\n  for (var i = 0; i < el.length; i++) {\r\n      var bgProp = window.getComputedStyle(el[i], null).getPropertyValue('background-color');\r\n      if (Filter.color_detector(bgProp) == 'light') {\r\n          el[i].classList.add('is-checkmark-dark');\r\n      } else {\r\n          el[i].classList.add('is-checkmark-white');\r\n      }\r\n\r\n\r\n      if (i > 10) {\r\n          break;\r\n      }\r\n  }\r\n\r\n}\r\n\r\n//color detector\r\nFilter.color_detector = function (color) {\r\n  // Variables for red, green, blue values\r\n  var r, g, b, hsp;\r\n\r\n  // Check the format of the color, HEX or RGB?\r\n  if (color.match(/^rgb/)) {\r\n\r\n      // If HEX --> store the red, green, blue values in separate variables\r\n      color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\r\n\r\n      r = color[1];\r\n      g = color[2];\r\n      b = color[3];\r\n  } else {\r\n\r\n      // If RGB --> Convert it to HEX: http://gist.github.com/983661\r\n      color = +('0x' + color.slice(1).replace(\r\n          color.length < 5 && /./g, '$&$&'));\r\n\r\n      r = color >> 16;\r\n      g = color >> 8 & 255;\r\n      b = color & 255;\r\n  }\r\n\r\n  // HSP (Highly Sensitive Poo) equation from http://alienryderflex.com/hsp.html\r\n  hsp = Math.sqrt(\r\n      0.299 * (r * r) +\r\n      0.587 * (g * g) +\r\n      0.114 * (b * b)\r\n  );\r\n\r\n  // Using the HSP value, determine whether the color is light or dark\r\n  if (hsp > 127.5) {\r\n\r\n\r\n      return 'light';\r\n  } else {\r\n\r\n      return 'dark';\r\n  }\r\n}\r\n\r\nFilter.for_color();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/picker.js","$.fn.resellersTable = function () {\r\n  this.each(function () {\r\n    let $tableRows = $(this).find(`.resellers-table-row:gt(${($(this).data('limit') - 1)})`);\r\n    let $btnMore = $(this).find('.js-more');\r\n\r\n    // On window load\r\n    if ($(window).innerWidth() < 768) {\r\n      $tableRows.removeClass('d-md-table-row').addClass('d-none');\r\n    } else {\r\n      $tableRows.removeClass('d-none').addClass('d-md-table-row');\r\n    }\r\n\r\n    // On window resize\r\n    $(window).resize(function () {\r\n      if ($(window).innerWidth() < 768) {\r\n        $tableRows.removeClass('d-md-table-row').addClass('d-none');\r\n      } else {\r\n        $tableRows.removeClass('d-none').addClass('d-md-table-row');\r\n      }\r\n    });\r\n\r\n    // Button more\r\n    $btnMore.click(function () {\r\n      $tableRows.each(function () {\r\n        setTimeout(() => {\r\n          $(this).removeClass('d-none').addClass('d-md-table-row').fadeIn('slow');\r\n        }, $(this).index() * 50);\r\n      });\r\n      $btnMore.fadeOut();\r\n    });\r\n  });\r\n};\r\n\r\nvar $sectionResellers = $('.section.resellers');\r\n\r\n$('.resellers .fifty-fifty:eq(0) .btn').on('click', function (e) {\r\n  e.preventDefault();\r\n\r\n  $('html, body').animate({\r\n    scrollTop: ($sectionResellers.offset().top - $('.js-header').height()) - parseInt($('html').css('margin-top')) + 'px',\r\n  });\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/resellers.js","/* eslint-disable no-unused-vars */\r\n\r\nimport { stokpress, stokpressViewPort } from '../util/helper';\r\n/* eslint-disable no-undef */\r\nvar Video = {};\r\nvar classes = {\r\n  container: 'js-video',\r\n};\r\n\r\nwindow.onPlayerStateChange = function (event) {\r\n  console.log('state changed');\r\n  if (event.data === YT.PlayerState.PLAYING) {\r\n    var target = event.target.g;\r\n    var targetParent = Video.getParentEl(target);\r\n\r\n    if (targetParent) {\r\n      Video.removeElement(\r\n        targetParent.querySelectorAll('.js-hide-on-play')\r\n      );\r\n    }\r\n    \r\n    if (target) {\r\n      target.style.opacity = 1;\r\n      if (typeof target.dataset.zIndex !== 'undefined') {\r\n        target.style.zIndex = target.dataset.zIndex || 1;\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nwindow.onPlayerReady = function (event) {\r\n  event.target.playVideo();\r\n};\r\n\r\n// Youtube callbacks\r\nwindow.onYouTubeIframeAPIReady = function () {\r\n  for (var i = 0; i < Video.iframes.length; i++) {\r\n    new YT.Player(Video.iframes[i].id, {\r\n      events: {\r\n        onReady: onPlayerReady,\r\n        onStateChange: onPlayerStateChange,\r\n      },\r\n    });\r\n  }\r\n};\r\n\r\nVideo.isMobile = function () {\r\n  return stokpress.isMobile() || stokpressViewPort.documentWidth().width < 720;\r\n};\r\n\r\nVideo.getParentEl = function (el) {\r\n  if (!el) return;\r\n\r\n  var videoparent = stokpress.findAncestor(el, classes.container);\r\n  if (videoparent) {\r\n    return videoparent;\r\n  }\r\n\r\n  return el.parentNode.parentNode;\r\n};\r\n\r\nVideo.initializeVimeo = function (iframes) {\r\n  if (iframes.length === 0) {\r\n    return;\r\n  }\r\n\r\n  for (var i = 0; i < iframes.length; i++) {\r\n    var source = iframes[i].getAttribute('data-source');\r\n\r\n    if (source !== 'vimeo') {\r\n      continue;\r\n    }\r\n\r\n    var videoparent = Video.getParentEl(iframes[i]);\r\n    var playVideo = videoparent.querySelector('.js-playvideo');\r\n\r\n    if (!playVideo) {\r\n      continue;\r\n    }\r\n\r\n    playVideo.addEventListener('click', function (event) {\r\n      event.preventDefault();\r\n      var videoparent = Video.getParentEl(this);\r\n      var iframe = videoparent.querySelector('.js-video-iframe');\r\n      var elToHide = videoparent.querySelectorAll('.js-hide-on-play');\r\n\r\n      if (!iframe) {\r\n        return;\r\n      }\r\n\r\n      Video.removeElement(elToHide);\r\n      iframe.style.opacity = 1;\r\n\r\n      if (typeof iframe.dataset.zIndex !== 'undefined') {\r\n        iframe.style.zIndex = iframe.dataset.zIndex || 1;\r\n      }\r\n\r\n      var player = new Vimeo.Player(iframe);\r\n      player.play();\r\n    });\r\n\r\n    if (matchMedia('screen and (max-width: 1023.98px)').matches) {\r\n      if (iframes[i].getAttribute('data-autoplaymobile')) {\r\n        Video.removeElement(videoparent.querySelectorAll('.js-hide-on-play'));\r\n        iframes[i].style.opacity = 1;\r\n\r\n        if (typeof iframes[i].dataset.zIndex !== 'undefined') {\r\n          iframes[i].style.zIndex = iframes[i].dataset.zIndex || 1;\r\n        }\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\nVideo.initializeYoutube = function (iframe) {\r\n  var parent = Video.getParentEl(iframe);\r\n  var playVideo = parent.querySelector('.js-playvideo');\r\n  var elToHide = parent.querySelectorAll('.js-hide-on-play');\r\n\r\n  if (!playVideo) {\r\n    return;\r\n  }\r\n\r\n  playVideo.addEventListener('click', function (event) {\r\n    event.preventDefault();\r\n\r\n    Video.removeElement(elToHide);\r\n    iframe.style.opacity = 1;\r\n    iframe.src += '&autoplay=1';\r\n\r\n    if (typeof iframe.dataset.zIndex !== 'undefined') {\r\n      iframe.style.zIndex = iframe.dataset.zIndex || 1;\r\n    }\r\n  });\r\n};\r\n\r\nVideo.iframeProcess = function () {\r\n  var includeYoutubeScript = false,\r\n    includeVimeoScript = false;\r\n\r\n  for (var i = 0; i < Video.iframes.length; i++) {\r\n    if (!Video.iframes[i].getAttribute('data-autoplay') || Video.isMobile()) {\r\n      var source = Video.iframes[i].getAttribute('data-source'),\r\n        playOnMobile = Video.iframes[i].getAttribute('data-showonmobile');\r\n\r\n      if (source === 'vimeo') {\r\n        includeVimeoScript = true;\r\n      } else if (source === 'youtube') {\r\n        if (Video.isMobile()) {\r\n          if (playOnMobile === 'true') {\r\n            Video.iframes[i].style.zIndex = Video.iframes[i].dataset.zIndex || 5;\r\n            includeYoutubeScript = true;\r\n          }\r\n        } else {\r\n          Video.initializeYoutube(Video.iframes[i]);\r\n        }\r\n      }\r\n    } else {\r\n      var videoparent = Video.getParentEl(Video.iframes[i]);\r\n      Video.removeElement(videoparent.querySelectorAll('.js-hide-on-play'));\r\n\r\n      Video.iframes[i].style.opacity = 1;\r\n      if (typeof Video.iframes[i].dataset.zIndex !== 'undefined') {\r\n        Video.iframes[i].style.zIndex = Video.iframes[i].dataset.zIndex || 1;\r\n      }\r\n    }\r\n  }\r\n\r\n  if (includeVimeoScript) {\r\n    stokpress.getScript('https://player.vimeo.com/api/player.js', function () {\r\n      Video.initializeVimeo(Video.iframes);\r\n    });\r\n  }\r\n\r\n  if (includeYoutubeScript) {\r\n    stokpress.getScript('https://www.youtube.com/iframe_api');\r\n  }\r\n};\r\n\r\nVideo.removeElement = function (elToHide) {\r\n  if (!elToHide) {\r\n    return;\r\n  }\r\n\r\n  Array.prototype.forEach.call(elToHide, function (element) {\r\n    element.parentNode.removeChild(element);\r\n  });\r\n};\r\n\r\nVideo.init = function () {\r\n  Video.iframes = document.querySelectorAll('.' + classes.container + ' iframe.js-video-iframe');\r\n  Video.tags = document.querySelectorAll('.' + classes.container + ' video.js-video-tag');\r\n\r\n  if (Video.iframes.length) {\r\n    Video.iframeProcess();\r\n  }\r\n\r\n  if (Video.tags.length) {\r\n    for (var i = 0; i < Video.tags.length; i++) {\r\n      var videoparent = Video.getParentEl(Video.tags[i]);\r\n\r\n      if (Video.tags[i].getAttribute('autoplay')) {\r\n        Video.removeElement(videoparent.querySelectorAll('.js-hide-on-play'));\r\n        Video.tags[i].style.zIndex = Video.tags[i].dataset.zIndex || 1;\r\n      } else {\r\n        // Play video upon clicking the play button\r\n        var playVideo = videoparent.querySelector('.js-playvideo');\r\n\r\n        if (!playVideo) {\r\n          continue;\r\n        }\r\n\r\n        playVideo.addEventListener('click', function (event) {\r\n          event.preventDefault();\r\n          var targetParent = Video.getParentEl(this);\r\n          var targetVideo = targetParent.querySelector('video');\r\n          var elToHide = targetParent.querySelectorAll('.js-hide-on-play');\r\n\r\n          Video.removeElement(elToHide);\r\n\r\n          targetVideo.play();\r\n          targetVideo.style.zIndex = targetVideo.dataset.zIndex || 1;\r\n        });\r\n      }\r\n    }\r\n  }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n  Video.init();\r\n});\r\n\r\nwindow.Video = Video;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/video.js","import $ from 'jquery';\r\nimport jQueryBridget from 'jquery-bridget';\r\nimport Masonry from 'masonry-layout';\r\n\r\njQueryBridget( 'masonry', Masonry, $ );\r\n\r\nvar flag = true;\r\nlet isMasonry = false;\r\nlet masonryOptions = {\r\n    itemSelector: '.product',\r\n    percentPosition: true,\r\n}\r\n\r\nfunction detectMasonry () {\r\n    if ( matchMedia( 'screen and (min-width: 1024px)' ).matches ) {\r\n        window.productsMasonry = $( '.products' ).masonry( masonryOptions );\r\n        isMasonry = true;\r\n\r\n        if(flag){\r\n            window.productsMasonry.on('layoutComplete', function() {\r\n                titleCardCollapse();\r\n            });\r\n\r\n            flag = false;\r\n        }\r\n\r\n        $( '.products' ).masonry( masonryOptions );\r\n    } else {\r\n        if ( isMasonry ) {\r\n            $( '.products' ).masonry( 'destroy' );\r\n            isMasonry = false;\r\n        }\r\n    }\r\n}\r\n\r\nfunction titleCardCollapse () {\r\n  let titleCard = $( '.product.title-card' );\r\n  let collapseBtn = $( '.product.title-card .button-align .link' );\r\n  let titleCardHeight = titleCard.outerHeight();\r\n\r\n  let titleHeight = titleCard.find( '.title' ).outerHeight( true ) || 0;\r\n  let contentHeight = titleCard.find( '.content' ).outerHeight( true ) || 0;\r\n  let categoryHeight = titleCard.find( '.product-filter-category' ).outerHeight( true ) || 0;\r\n\r\n  let elementsHeight = titleHeight + contentHeight + categoryHeight;\r\n\r\n  // console.log(titleCardHeight)\r\n  // console.log(titleHeight)\r\n  // console.log(contentHeight)\r\n  // console.log(categoryHeight)\r\n\r\n\r\n  if ( elementsHeight < titleCardHeight ) {\r\n      $( '.product.title-card .button-align' ).hide();\r\n  } else {\r\n      $( '.product.title-card .button-align' ).show();\r\n  }\r\n\r\n  collapseBtn.click( function () {\r\n      if ( titleCard.hasClass( 'collapse' ) ) {\r\n          titleCard.removeClass( 'collapse' );\r\n      } else {\r\n          titleCard.addClass( 'collapse' );\r\n      }\r\n  } );\r\n\r\n  $( window ).on( 'resize', function () {\r\n      titleCard.removeClass( 'collapse' );\r\n  } );\r\n}\r\n\r\n// titleCardCollapse();\r\ndetectMasonry();\r\n\r\n$( window ).on( 'resize', function () {\r\n    // titleCardCollapse();\r\n    detectMasonry();\r\n} );\r\n\r\nwindow.titleCardCollapse = titleCardCollapse;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/listing.js","/**\n * Bridget makes jQuery widgets\n * v2.0.1\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n  // universal module definition\n  /*jshint strict: false */ /* globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [ 'jquery' ], function( jQuery ) {\n      return factory( window, jQuery );\n    });\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      window,\n      require('jquery')\n    );\n  } else {\n    // browser global\n    window.jQueryBridget = factory(\n      window,\n      window.jQuery\n    );\n  }\n\n}( window, function factory( window, jQuery ) {\n'use strict';\n\n// ----- utils ----- //\n\nvar arraySlice = Array.prototype.slice;\n\n// helper function for logging errors\n// $.error breaks jQuery chaining\nvar console = window.console;\nvar logError = typeof console == 'undefined' ? function() {} :\n  function( message ) {\n    console.error( message );\n  };\n\n// ----- jQueryBridget ----- //\n\nfunction jQueryBridget( namespace, PluginClass, $ ) {\n  $ = $ || jQuery || window.jQuery;\n  if ( !$ ) {\n    return;\n  }\n\n  // add option method -> $().plugin('option', {...})\n  if ( !PluginClass.prototype.option ) {\n    // option setter\n    PluginClass.prototype.option = function( opts ) {\n      // bail out if not an object\n      if ( !$.isPlainObject( opts ) ){\n        return;\n      }\n      this.options = $.extend( true, this.options, opts );\n    };\n  }\n\n  // make jQuery plugin\n  $.fn[ namespace ] = function( arg0 /*, arg1 */ ) {\n    if ( typeof arg0 == 'string' ) {\n      // method call $().plugin( 'methodName', { options } )\n      // shift arguments by 1\n      var args = arraySlice.call( arguments, 1 );\n      return methodCall( this, arg0, args );\n    }\n    // just $().plugin({ options })\n    plainCall( this, arg0 );\n    return this;\n  };\n\n  // $().plugin('methodName')\n  function methodCall( $elems, methodName, args ) {\n    var returnValue;\n    var pluginMethodStr = '$().' + namespace + '(\"' + methodName + '\")';\n\n    $elems.each( function( i, elem ) {\n      // get instance\n      var instance = $.data( elem, namespace );\n      if ( !instance ) {\n        logError( namespace + ' not initialized. Cannot call methods, i.e. ' +\n          pluginMethodStr );\n        return;\n      }\n\n      var method = instance[ methodName ];\n      if ( !method || methodName.charAt(0) == '_' ) {\n        logError( pluginMethodStr + ' is not a valid method' );\n        return;\n      }\n\n      // apply method, get return value\n      var value = method.apply( instance, args );\n      // set return value if value is returned, use only first value\n      returnValue = returnValue === undefined ? value : returnValue;\n    });\n\n    return returnValue !== undefined ? returnValue : $elems;\n  }\n\n  function plainCall( $elems, options ) {\n    $elems.each( function( i, elem ) {\n      var instance = $.data( elem, namespace );\n      if ( instance ) {\n        // set options & init\n        instance.option( options );\n        instance._init();\n      } else {\n        // initialize new instance\n        instance = new PluginClass( elem, options );\n        $.data( elem, namespace, instance );\n      }\n    });\n  }\n\n  updateJQuery( $ );\n\n}\n\n// ----- updateJQuery ----- //\n\n// set $.bridget for v1 backwards compatibility\nfunction updateJQuery( $ ) {\n  if ( !$ || ( $ && $.bridget ) ) {\n    return;\n  }\n  $.bridget = jQueryBridget;\n}\n\nupdateJQuery( jQuery || window.jQuery );\n\n// -----  ----- //\n\nreturn jQueryBridget;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/jquery-bridget/jquery-bridget.js\n// module id = 162\n// module chunks = 0","/*!\n * Masonry v4.2.2\n * Cascading grid layout library\n * https://masonry.desandro.com\n * MIT License\n * by David DeSandro\n */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /*globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD\n    define( [\n        'outlayer/outlayer',\n        'get-size/get-size'\n      ],\n      factory );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS\n    module.exports = factory(\n      require('outlayer'),\n      require('get-size')\n    );\n  } else {\n    // browser global\n    window.Masonry = factory(\n      window.Outlayer,\n      window.getSize\n    );\n  }\n\n}( window, function factory( Outlayer, getSize ) {\n\n'use strict';\n\n// -------------------------- masonryDefinition -------------------------- //\n\n  // create an Outlayer layout class\n  var Masonry = Outlayer.create('masonry');\n  // isFitWidth -> fitWidth\n  Masonry.compatOptions.fitWidth = 'isFitWidth';\n\n  var proto = Masonry.prototype;\n\n  proto._resetLayout = function() {\n    this.getSize();\n    this._getMeasurement( 'columnWidth', 'outerWidth' );\n    this._getMeasurement( 'gutter', 'outerWidth' );\n    this.measureColumns();\n\n    // reset column Y\n    this.colYs = [];\n    for ( var i=0; i < this.cols; i++ ) {\n      this.colYs.push( 0 );\n    }\n\n    this.maxY = 0;\n    this.horizontalColIndex = 0;\n  };\n\n  proto.measureColumns = function() {\n    this.getContainerWidth();\n    // if columnWidth is 0, default to outerWidth of first item\n    if ( !this.columnWidth ) {\n      var firstItem = this.items[0];\n      var firstItemElem = firstItem && firstItem.element;\n      // columnWidth fall back to item of first element\n      this.columnWidth = firstItemElem && getSize( firstItemElem ).outerWidth ||\n        // if first elem has no width, default to size of container\n        this.containerWidth;\n    }\n\n    var columnWidth = this.columnWidth += this.gutter;\n\n    // calculate columns\n    var containerWidth = this.containerWidth + this.gutter;\n    var cols = containerWidth / columnWidth;\n    // fix rounding errors, typically with gutters\n    var excess = columnWidth - containerWidth % columnWidth;\n    // if overshoot is less than a pixel, round up, otherwise floor it\n    var mathMethod = excess && excess < 1 ? 'round' : 'floor';\n    cols = Math[ mathMethod ]( cols );\n    this.cols = Math.max( cols, 1 );\n  };\n\n  proto.getContainerWidth = function() {\n    // container is parent if fit width\n    var isFitWidth = this._getOption('fitWidth');\n    var container = isFitWidth ? this.element.parentNode : this.element;\n    // check that this.size and size are there\n    // IE8 triggers resize on body size change, so they might not be\n    var size = getSize( container );\n    this.containerWidth = size && size.innerWidth;\n  };\n\n  proto._getItemLayoutPosition = function( item ) {\n    item.getSize();\n    // how many columns does this brick span\n    var remainder = item.size.outerWidth % this.columnWidth;\n    var mathMethod = remainder && remainder < 1 ? 'round' : 'ceil';\n    // round if off by 1 pixel, otherwise use ceil\n    var colSpan = Math[ mathMethod ]( item.size.outerWidth / this.columnWidth );\n    colSpan = Math.min( colSpan, this.cols );\n    // use horizontal or top column position\n    var colPosMethod = this.options.horizontalOrder ?\n      '_getHorizontalColPosition' : '_getTopColPosition';\n    var colPosition = this[ colPosMethod ]( colSpan, item );\n    // position the brick\n    var position = {\n      x: this.columnWidth * colPosition.col,\n      y: colPosition.y\n    };\n    // apply setHeight to necessary columns\n    var setHeight = colPosition.y + item.size.outerHeight;\n    var setMax = colSpan + colPosition.col;\n    for ( var i = colPosition.col; i < setMax; i++ ) {\n      this.colYs[i] = setHeight;\n    }\n\n    return position;\n  };\n\n  proto._getTopColPosition = function( colSpan ) {\n    var colGroup = this._getTopColGroup( colSpan );\n    // get the minimum Y value from the columns\n    var minimumY = Math.min.apply( Math, colGroup );\n\n    return {\n      col: colGroup.indexOf( minimumY ),\n      y: minimumY,\n    };\n  };\n\n  /**\n   * @param {Number} colSpan - number of columns the element spans\n   * @returns {Array} colGroup\n   */\n  proto._getTopColGroup = function( colSpan ) {\n    if ( colSpan < 2 ) {\n      // if brick spans only one column, use all the column Ys\n      return this.colYs;\n    }\n\n    var colGroup = [];\n    // how many different places could this brick fit horizontally\n    var groupCount = this.cols + 1 - colSpan;\n    // for each group potential horizontal position\n    for ( var i = 0; i < groupCount; i++ ) {\n      colGroup[i] = this._getColGroupY( i, colSpan );\n    }\n    return colGroup;\n  };\n\n  proto._getColGroupY = function( col, colSpan ) {\n    if ( colSpan < 2 ) {\n      return this.colYs[ col ];\n    }\n    // make an array of colY values for that one group\n    var groupColYs = this.colYs.slice( col, col + colSpan );\n    // and get the max value of the array\n    return Math.max.apply( Math, groupColYs );\n  };\n\n  // get column position based on horizontal index. #873\n  proto._getHorizontalColPosition = function( colSpan, item ) {\n    var col = this.horizontalColIndex % this.cols;\n    var isOver = colSpan > 1 && col + colSpan > this.cols;\n    // shift to next row if item can't fit on current row\n    col = isOver ? 0 : col;\n    // don't let zero-size items take up space\n    var hasSize = item.size.outerWidth && item.size.outerHeight;\n    this.horizontalColIndex = hasSize ? col + colSpan : this.horizontalColIndex;\n\n    return {\n      col: col,\n      y: this._getColGroupY( col, colSpan ),\n    };\n  };\n\n  proto._manageStamp = function( stamp ) {\n    var stampSize = getSize( stamp );\n    var offset = this._getElementOffset( stamp );\n    // get the columns that this stamp affects\n    var isOriginLeft = this._getOption('originLeft');\n    var firstX = isOriginLeft ? offset.left : offset.right;\n    var lastX = firstX + stampSize.outerWidth;\n    var firstCol = Math.floor( firstX / this.columnWidth );\n    firstCol = Math.max( 0, firstCol );\n    var lastCol = Math.floor( lastX / this.columnWidth );\n    // lastCol should not go over if multiple of columnWidth #425\n    lastCol -= lastX % this.columnWidth ? 0 : 1;\n    lastCol = Math.min( this.cols - 1, lastCol );\n    // set colYs to bottom of the stamp\n\n    var isOriginTop = this._getOption('originTop');\n    var stampMaxY = ( isOriginTop ? offset.top : offset.bottom ) +\n      stampSize.outerHeight;\n    for ( var i = firstCol; i <= lastCol; i++ ) {\n      this.colYs[i] = Math.max( stampMaxY, this.colYs[i] );\n    }\n  };\n\n  proto._getContainerSize = function() {\n    this.maxY = Math.max.apply( Math, this.colYs );\n    var size = {\n      height: this.maxY\n    };\n\n    if ( this._getOption('fitWidth') ) {\n      size.width = this._getContainerFitWidth();\n    }\n\n    return size;\n  };\n\n  proto._getContainerFitWidth = function() {\n    var unusedCols = 0;\n    // count unused columns\n    var i = this.cols;\n    while ( --i ) {\n      if ( this.colYs[i] !== 0 ) {\n        break;\n      }\n      unusedCols++;\n    }\n    // fit container to columns that have been used\n    return ( this.cols - unusedCols ) * this.columnWidth - this.gutter;\n  };\n\n  proto.needsResizeLayout = function() {\n    var previousWidth = this.containerWidth;\n    this.getContainerWidth();\n    return previousWidth != this.containerWidth;\n  };\n\n  return Masonry;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/masonry-layout/masonry.js\n// module id = 163\n// module chunks = 0","/*!\n * Outlayer v2.1.1\n * the brains and guts of a layout library\n * MIT license\n */\n\n( function( window, factory ) {\n  'use strict';\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD - RequireJS\n    define( [\n        'ev-emitter/ev-emitter',\n        'get-size/get-size',\n        'fizzy-ui-utils/utils',\n        './item'\n      ],\n      function( EvEmitter, getSize, utils, Item ) {\n        return factory( window, EvEmitter, getSize, utils, Item);\n      }\n    );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory(\n      window,\n      require('ev-emitter'),\n      require('get-size'),\n      require('fizzy-ui-utils'),\n      require('./item')\n    );\n  } else {\n    // browser global\n    window.Outlayer = factory(\n      window,\n      window.EvEmitter,\n      window.getSize,\n      window.fizzyUIUtils,\n      window.Outlayer.Item\n    );\n  }\n\n}( window, function factory( window, EvEmitter, getSize, utils, Item ) {\n'use strict';\n\n// ----- vars ----- //\n\nvar console = window.console;\nvar jQuery = window.jQuery;\nvar noop = function() {};\n\n// -------------------------- Outlayer -------------------------- //\n\n// globally unique identifiers\nvar GUID = 0;\n// internal store of all Outlayer intances\nvar instances = {};\n\n\n/**\n * @param {Element, String} element\n * @param {Object} options\n * @constructor\n */\nfunction Outlayer( element, options ) {\n  var queryElement = utils.getQueryElement( element );\n  if ( !queryElement ) {\n    if ( console ) {\n      console.error( 'Bad element for ' + this.constructor.namespace +\n        ': ' + ( queryElement || element ) );\n    }\n    return;\n  }\n  this.element = queryElement;\n  // add jQuery\n  if ( jQuery ) {\n    this.$element = jQuery( this.element );\n  }\n\n  // options\n  this.options = utils.extend( {}, this.constructor.defaults );\n  this.option( options );\n\n  // add id for Outlayer.getFromElement\n  var id = ++GUID;\n  this.element.outlayerGUID = id; // expando\n  instances[ id ] = this; // associate via id\n\n  // kick it off\n  this._create();\n\n  var isInitLayout = this._getOption('initLayout');\n  if ( isInitLayout ) {\n    this.layout();\n  }\n}\n\n// settings are for internal use only\nOutlayer.namespace = 'outlayer';\nOutlayer.Item = Item;\n\n// default options\nOutlayer.defaults = {\n  containerStyle: {\n    position: 'relative'\n  },\n  initLayout: true,\n  originLeft: true,\n  originTop: true,\n  resize: true,\n  resizeContainer: true,\n  // item options\n  transitionDuration: '0.4s',\n  hiddenStyle: {\n    opacity: 0,\n    transform: 'scale(0.001)'\n  },\n  visibleStyle: {\n    opacity: 1,\n    transform: 'scale(1)'\n  }\n};\n\nvar proto = Outlayer.prototype;\n// inherit EvEmitter\nutils.extend( proto, EvEmitter.prototype );\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n  utils.extend( this.options, opts );\n};\n\n/**\n * get backwards compatible option value, check old name\n */\nproto._getOption = function( option ) {\n  var oldOption = this.constructor.compatOptions[ option ];\n  return oldOption && this.options[ oldOption ] !== undefined ?\n    this.options[ oldOption ] : this.options[ option ];\n};\n\nOutlayer.compatOptions = {\n  // currentName: oldName\n  initLayout: 'isInitLayout',\n  horizontal: 'isHorizontal',\n  layoutInstant: 'isLayoutInstant',\n  originLeft: 'isOriginLeft',\n  originTop: 'isOriginTop',\n  resize: 'isResizeBound',\n  resizeContainer: 'isResizingContainer'\n};\n\nproto._create = function() {\n  // get items from children\n  this.reloadItems();\n  // elements that affect layout, but are not laid out\n  this.stamps = [];\n  this.stamp( this.options.stamp );\n  // set container style\n  utils.extend( this.element.style, this.options.containerStyle );\n\n  // bind resize method\n  var canBindResize = this._getOption('resize');\n  if ( canBindResize ) {\n    this.bindResize();\n  }\n};\n\n// goes through all children again and gets bricks in proper order\nproto.reloadItems = function() {\n  // collection of item elements\n  this.items = this._itemize( this.element.children );\n};\n\n\n/**\n * turn elements into Outlayer.Items to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - collection of new Outlayer Items\n */\nproto._itemize = function( elems ) {\n\n  var itemElems = this._filterFindItemElements( elems );\n  var Item = this.constructor.Item;\n\n  // create new Outlayer Items for collection\n  var items = [];\n  for ( var i=0; i < itemElems.length; i++ ) {\n    var elem = itemElems[i];\n    var item = new Item( elem, this );\n    items.push( item );\n  }\n\n  return items;\n};\n\n/**\n * get item elements to be used in layout\n * @param {Array or NodeList or HTMLElement} elems\n * @returns {Array} items - item elements\n */\nproto._filterFindItemElements = function( elems ) {\n  return utils.filterFindElements( elems, this.options.itemSelector );\n};\n\n/**\n * getter method for getting item elements\n * @returns {Array} elems - collection of item elements\n */\nproto.getItemElements = function() {\n  return this.items.map( function( item ) {\n    return item.element;\n  });\n};\n\n// ----- init & layout ----- //\n\n/**\n * lays out all items\n */\nproto.layout = function() {\n  this._resetLayout();\n  this._manageStamps();\n\n  // don't animate first layout\n  var layoutInstant = this._getOption('layoutInstant');\n  var isInstant = layoutInstant !== undefined ?\n    layoutInstant : !this._isLayoutInited;\n  this.layoutItems( this.items, isInstant );\n\n  // flag for initalized\n  this._isLayoutInited = true;\n};\n\n// _init is alias for layout\nproto._init = proto.layout;\n\n/**\n * logic before any new layout\n */\nproto._resetLayout = function() {\n  this.getSize();\n};\n\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n};\n\n/**\n * get measurement from option, for columnWidth, rowHeight, gutter\n * if option is String -> get element from selector string, & get size of element\n * if option is Element -> get size of element\n * else use option as a number\n *\n * @param {String} measurement\n * @param {String} size - width or height\n * @private\n */\nproto._getMeasurement = function( measurement, size ) {\n  var option = this.options[ measurement ];\n  var elem;\n  if ( !option ) {\n    // default to 0\n    this[ measurement ] = 0;\n  } else {\n    // use option as an element\n    if ( typeof option == 'string' ) {\n      elem = this.element.querySelector( option );\n    } else if ( option instanceof HTMLElement ) {\n      elem = option;\n    }\n    // use size of element, if element\n    this[ measurement ] = elem ? getSize( elem )[ size ] : option;\n  }\n};\n\n/**\n * layout a collection of item elements\n * @api public\n */\nproto.layoutItems = function( items, isInstant ) {\n  items = this._getItemsForLayout( items );\n\n  this._layoutItems( items, isInstant );\n\n  this._postLayout();\n};\n\n/**\n * get the items to be laid out\n * you may want to skip over some items\n * @param {Array} items\n * @returns {Array} items\n */\nproto._getItemsForLayout = function( items ) {\n  return items.filter( function( item ) {\n    return !item.isIgnored;\n  });\n};\n\n/**\n * layout items\n * @param {Array} items\n * @param {Boolean} isInstant\n */\nproto._layoutItems = function( items, isInstant ) {\n  this._emitCompleteOnItems( 'layout', items );\n\n  if ( !items || !items.length ) {\n    // no items, emit event with empty array\n    return;\n  }\n\n  var queue = [];\n\n  items.forEach( function( item ) {\n    // get x/y object from method\n    var position = this._getItemLayoutPosition( item );\n    // enqueue\n    position.item = item;\n    position.isInstant = isInstant || item.isLayoutInstant;\n    queue.push( position );\n  }, this );\n\n  this._processLayoutQueue( queue );\n};\n\n/**\n * get item layout position\n * @param {Outlayer.Item} item\n * @returns {Object} x and y position\n */\nproto._getItemLayoutPosition = function( /* item */ ) {\n  return {\n    x: 0,\n    y: 0\n  };\n};\n\n/**\n * iterate over array and position each item\n * Reason being - separating this logic prevents 'layout invalidation'\n * thx @paul_irish\n * @param {Array} queue\n */\nproto._processLayoutQueue = function( queue ) {\n  this.updateStagger();\n  queue.forEach( function( obj, i ) {\n    this._positionItem( obj.item, obj.x, obj.y, obj.isInstant, i );\n  }, this );\n};\n\n// set stagger from option in milliseconds number\nproto.updateStagger = function() {\n  var stagger = this.options.stagger;\n  if ( stagger === null || stagger === undefined ) {\n    this.stagger = 0;\n    return;\n  }\n  this.stagger = getMilliseconds( stagger );\n  return this.stagger;\n};\n\n/**\n * Sets position of item in DOM\n * @param {Outlayer.Item} item\n * @param {Number} x - horizontal position\n * @param {Number} y - vertical position\n * @param {Boolean} isInstant - disables transitions\n */\nproto._positionItem = function( item, x, y, isInstant, i ) {\n  if ( isInstant ) {\n    // if not transition, just set CSS\n    item.goTo( x, y );\n  } else {\n    item.stagger( i * this.stagger );\n    item.moveTo( x, y );\n  }\n};\n\n/**\n * Any logic you want to do after each layout,\n * i.e. size the container\n */\nproto._postLayout = function() {\n  this.resizeContainer();\n};\n\nproto.resizeContainer = function() {\n  var isResizingContainer = this._getOption('resizeContainer');\n  if ( !isResizingContainer ) {\n    return;\n  }\n  var size = this._getContainerSize();\n  if ( size ) {\n    this._setContainerMeasure( size.width, true );\n    this._setContainerMeasure( size.height, false );\n  }\n};\n\n/**\n * Sets width or height of container if returned\n * @returns {Object} size\n *   @param {Number} width\n *   @param {Number} height\n */\nproto._getContainerSize = noop;\n\n/**\n * @param {Number} measure - size of width or height\n * @param {Boolean} isWidth\n */\nproto._setContainerMeasure = function( measure, isWidth ) {\n  if ( measure === undefined ) {\n    return;\n  }\n\n  var elemSize = this.size;\n  // add padding and border width if border box\n  if ( elemSize.isBorderBox ) {\n    measure += isWidth ? elemSize.paddingLeft + elemSize.paddingRight +\n      elemSize.borderLeftWidth + elemSize.borderRightWidth :\n      elemSize.paddingBottom + elemSize.paddingTop +\n      elemSize.borderTopWidth + elemSize.borderBottomWidth;\n  }\n\n  measure = Math.max( measure, 0 );\n  this.element.style[ isWidth ? 'width' : 'height' ] = measure + 'px';\n};\n\n/**\n * emit eventComplete on a collection of items events\n * @param {String} eventName\n * @param {Array} items - Outlayer.Items\n */\nproto._emitCompleteOnItems = function( eventName, items ) {\n  var _this = this;\n  function onComplete() {\n    _this.dispatchEvent( eventName + 'Complete', null, [ items ] );\n  }\n\n  var count = items.length;\n  if ( !items || !count ) {\n    onComplete();\n    return;\n  }\n\n  var doneCount = 0;\n  function tick() {\n    doneCount++;\n    if ( doneCount == count ) {\n      onComplete();\n    }\n  }\n\n  // bind callback\n  items.forEach( function( item ) {\n    item.once( eventName, tick );\n  });\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n  // add original event to arguments\n  var emitArgs = event ? [ event ].concat( args ) : args;\n  this.emitEvent( type, emitArgs );\n\n  if ( jQuery ) {\n    // set this.$element\n    this.$element = this.$element || jQuery( this.element );\n    if ( event ) {\n      // create jQuery event\n      var $event = jQuery.Event( event );\n      $event.type = type;\n      this.$element.trigger( $event, args );\n    } else {\n      // just trigger with type if no event available\n      this.$element.trigger( type, args );\n    }\n  }\n};\n\n// -------------------------- ignore & stamps -------------------------- //\n\n\n/**\n * keep item in collection, but do not lay it out\n * ignored items do not get skipped in layout\n * @param {Element} elem\n */\nproto.ignore = function( elem ) {\n  var item = this.getItem( elem );\n  if ( item ) {\n    item.isIgnored = true;\n  }\n};\n\n/**\n * return item to layout collection\n * @param {Element} elem\n */\nproto.unignore = function( elem ) {\n  var item = this.getItem( elem );\n  if ( item ) {\n    delete item.isIgnored;\n  }\n};\n\n/**\n * adds elements to stamps\n * @param {NodeList, Array, Element, or String} elems\n */\nproto.stamp = function( elems ) {\n  elems = this._find( elems );\n  if ( !elems ) {\n    return;\n  }\n\n  this.stamps = this.stamps.concat( elems );\n  // ignore\n  elems.forEach( this.ignore, this );\n};\n\n/**\n * removes elements to stamps\n * @param {NodeList, Array, or Element} elems\n */\nproto.unstamp = function( elems ) {\n  elems = this._find( elems );\n  if ( !elems ){\n    return;\n  }\n\n  elems.forEach( function( elem ) {\n    // filter out removed stamp elements\n    utils.removeFrom( this.stamps, elem );\n    this.unignore( elem );\n  }, this );\n};\n\n/**\n * finds child elements\n * @param {NodeList, Array, Element, or String} elems\n * @returns {Array} elems\n */\nproto._find = function( elems ) {\n  if ( !elems ) {\n    return;\n  }\n  // if string, use argument as selector string\n  if ( typeof elems == 'string' ) {\n    elems = this.element.querySelectorAll( elems );\n  }\n  elems = utils.makeArray( elems );\n  return elems;\n};\n\nproto._manageStamps = function() {\n  if ( !this.stamps || !this.stamps.length ) {\n    return;\n  }\n\n  this._getBoundingRect();\n\n  this.stamps.forEach( this._manageStamp, this );\n};\n\n// update boundingLeft / Top\nproto._getBoundingRect = function() {\n  // get bounding rect for container element\n  var boundingRect = this.element.getBoundingClientRect();\n  var size = this.size;\n  this._boundingRect = {\n    left: boundingRect.left + size.paddingLeft + size.borderLeftWidth,\n    top: boundingRect.top + size.paddingTop + size.borderTopWidth,\n    right: boundingRect.right - ( size.paddingRight + size.borderRightWidth ),\n    bottom: boundingRect.bottom - ( size.paddingBottom + size.borderBottomWidth )\n  };\n};\n\n/**\n * @param {Element} stamp\n**/\nproto._manageStamp = noop;\n\n/**\n * get x/y position of element relative to container element\n * @param {Element} elem\n * @returns {Object} offset - has left, top, right, bottom\n */\nproto._getElementOffset = function( elem ) {\n  var boundingRect = elem.getBoundingClientRect();\n  var thisRect = this._boundingRect;\n  var size = getSize( elem );\n  var offset = {\n    left: boundingRect.left - thisRect.left - size.marginLeft,\n    top: boundingRect.top - thisRect.top - size.marginTop,\n    right: thisRect.right - boundingRect.right - size.marginRight,\n    bottom: thisRect.bottom - boundingRect.bottom - size.marginBottom\n  };\n  return offset;\n};\n\n// -------------------------- resize -------------------------- //\n\n// enable event handlers for listeners\n// i.e. resize -> onresize\nproto.handleEvent = utils.handleEvent;\n\n/**\n * Bind layout to window resizing\n */\nproto.bindResize = function() {\n  window.addEventListener( 'resize', this );\n  this.isResizeBound = true;\n};\n\n/**\n * Unbind layout to window resizing\n */\nproto.unbindResize = function() {\n  window.removeEventListener( 'resize', this );\n  this.isResizeBound = false;\n};\n\nproto.onresize = function() {\n  this.resize();\n};\n\nutils.debounceMethod( Outlayer, 'onresize', 100 );\n\nproto.resize = function() {\n  // don't trigger if size did not change\n  // or if resize was unbound. See #9\n  if ( !this.isResizeBound || !this.needsResizeLayout() ) {\n    return;\n  }\n\n  this.layout();\n};\n\n/**\n * check if layout is needed post layout\n * @returns Boolean\n */\nproto.needsResizeLayout = function() {\n  var size = getSize( this.element );\n  // check that this.size and size are there\n  // IE8 triggers resize on body size change, so they might not be\n  var hasSizes = this.size && size;\n  return hasSizes && size.innerWidth !== this.size.innerWidth;\n};\n\n// -------------------------- methods -------------------------- //\n\n/**\n * add items to Outlayer instance\n * @param {Array or NodeList or Element} elems\n * @returns {Array} items - Outlayer.Items\n**/\nproto.addItems = function( elems ) {\n  var items = this._itemize( elems );\n  // add items to collection\n  if ( items.length ) {\n    this.items = this.items.concat( items );\n  }\n  return items;\n};\n\n/**\n * Layout newly-appended item elements\n * @param {Array or NodeList or Element} elems\n */\nproto.appended = function( elems ) {\n  var items = this.addItems( elems );\n  if ( !items.length ) {\n    return;\n  }\n  // layout and reveal just the new items\n  this.layoutItems( items, true );\n  this.reveal( items );\n};\n\n/**\n * Layout prepended elements\n * @param {Array or NodeList or Element} elems\n */\nproto.prepended = function( elems ) {\n  var items = this._itemize( elems );\n  if ( !items.length ) {\n    return;\n  }\n  // add items to beginning of collection\n  var previousItems = this.items.slice(0);\n  this.items = items.concat( previousItems );\n  // start new layout\n  this._resetLayout();\n  this._manageStamps();\n  // layout new stuff without transition\n  this.layoutItems( items, true );\n  this.reveal( items );\n  // layout previous items\n  this.layoutItems( previousItems );\n};\n\n/**\n * reveal a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.reveal = function( items ) {\n  this._emitCompleteOnItems( 'reveal', items );\n  if ( !items || !items.length ) {\n    return;\n  }\n  var stagger = this.updateStagger();\n  items.forEach( function( item, i ) {\n    item.stagger( i * stagger );\n    item.reveal();\n  });\n};\n\n/**\n * hide a collection of items\n * @param {Array of Outlayer.Items} items\n */\nproto.hide = function( items ) {\n  this._emitCompleteOnItems( 'hide', items );\n  if ( !items || !items.length ) {\n    return;\n  }\n  var stagger = this.updateStagger();\n  items.forEach( function( item, i ) {\n    item.stagger( i * stagger );\n    item.hide();\n  });\n};\n\n/**\n * reveal item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.revealItemElements = function( elems ) {\n  var items = this.getItems( elems );\n  this.reveal( items );\n};\n\n/**\n * hide item elements\n * @param {Array}, {Element}, {NodeList} items\n */\nproto.hideItemElements = function( elems ) {\n  var items = this.getItems( elems );\n  this.hide( items );\n};\n\n/**\n * get Outlayer.Item, given an Element\n * @param {Element} elem\n * @param {Function} callback\n * @returns {Outlayer.Item} item\n */\nproto.getItem = function( elem ) {\n  // loop through items to get the one that matches\n  for ( var i=0; i < this.items.length; i++ ) {\n    var item = this.items[i];\n    if ( item.element == elem ) {\n      // return item\n      return item;\n    }\n  }\n};\n\n/**\n * get collection of Outlayer.Items, given Elements\n * @param {Array} elems\n * @returns {Array} items - Outlayer.Items\n */\nproto.getItems = function( elems ) {\n  elems = utils.makeArray( elems );\n  var items = [];\n  elems.forEach( function( elem ) {\n    var item = this.getItem( elem );\n    if ( item ) {\n      items.push( item );\n    }\n  }, this );\n\n  return items;\n};\n\n/**\n * remove element(s) from instance and DOM\n * @param {Array or NodeList or Element} elems\n */\nproto.remove = function( elems ) {\n  var removeItems = this.getItems( elems );\n\n  this._emitCompleteOnItems( 'remove', removeItems );\n\n  // bail if no items to remove\n  if ( !removeItems || !removeItems.length ) {\n    return;\n  }\n\n  removeItems.forEach( function( item ) {\n    item.remove();\n    // remove item from collection\n    utils.removeFrom( this.items, item );\n  }, this );\n};\n\n// ----- destroy ----- //\n\n// remove and disable Outlayer instance\nproto.destroy = function() {\n  // clean up dynamic styles\n  var style = this.element.style;\n  style.height = '';\n  style.position = '';\n  style.width = '';\n  // destroy items\n  this.items.forEach( function( item ) {\n    item.destroy();\n  });\n\n  this.unbindResize();\n\n  var id = this.element.outlayerGUID;\n  delete instances[ id ]; // remove reference to instance by id\n  delete this.element.outlayerGUID;\n  // remove data for jQuery\n  if ( jQuery ) {\n    jQuery.removeData( this.element, this.constructor.namespace );\n  }\n\n};\n\n// -------------------------- data -------------------------- //\n\n/**\n * get Outlayer instance from element\n * @param {Element} elem\n * @returns {Outlayer}\n */\nOutlayer.data = function( elem ) {\n  elem = utils.getQueryElement( elem );\n  var id = elem && elem.outlayerGUID;\n  return id && instances[ id ];\n};\n\n\n// -------------------------- create Outlayer class -------------------------- //\n\n/**\n * create a layout class\n * @param {String} namespace\n */\nOutlayer.create = function( namespace, options ) {\n  // sub-class Outlayer\n  var Layout = subclass( Outlayer );\n  // apply new options and compatOptions\n  Layout.defaults = utils.extend( {}, Outlayer.defaults );\n  utils.extend( Layout.defaults, options );\n  Layout.compatOptions = utils.extend( {}, Outlayer.compatOptions  );\n\n  Layout.namespace = namespace;\n\n  Layout.data = Outlayer.data;\n\n  // sub-class Item\n  Layout.Item = subclass( Item );\n\n  // -------------------------- declarative -------------------------- //\n\n  utils.htmlInit( Layout, namespace );\n\n  // -------------------------- jQuery bridge -------------------------- //\n\n  // make into jQuery plugin\n  if ( jQuery && jQuery.bridget ) {\n    jQuery.bridget( namespace, Layout );\n  }\n\n  return Layout;\n};\n\nfunction subclass( Parent ) {\n  function SubClass() {\n    Parent.apply( this, arguments );\n  }\n\n  SubClass.prototype = Object.create( Parent.prototype );\n  SubClass.prototype.constructor = SubClass;\n\n  return SubClass;\n}\n\n// ----- helpers ----- //\n\n// how many milliseconds are in each unit\nvar msUnits = {\n  ms: 1,\n  s: 1000\n};\n\n// munge time-like parameter into millisecond number\n// '0.4s' -> 40\nfunction getMilliseconds( time ) {\n  if ( typeof time == 'number' ) {\n    return time;\n  }\n  var matches = time.match( /(^\\d*\\.?\\d*)(\\w*)/ );\n  var num = matches && matches[1];\n  var unit = matches && matches[2];\n  if ( !num.length ) {\n    return 0;\n  }\n  num = parseFloat( num );\n  var mult = msUnits[ unit ] || 1;\n  return num * mult;\n}\n\n// ----- fin ----- //\n\n// back in global\nOutlayer.Item = Item;\n\nreturn Outlayer;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/outlayer.js\n// module id = 164\n// module chunks = 0","/**\n * Outlayer Item\n */\n\n( function( window, factory ) {\n  // universal module definition\n  /* jshint strict: false */ /* globals define, module, require */\n  if ( typeof define == 'function' && define.amd ) {\n    // AMD - RequireJS\n    define( [\n        'ev-emitter/ev-emitter',\n        'get-size/get-size'\n      ],\n      factory\n    );\n  } else if ( typeof module == 'object' && module.exports ) {\n    // CommonJS - Browserify, Webpack\n    module.exports = factory(\n      require('ev-emitter'),\n      require('get-size')\n    );\n  } else {\n    // browser global\n    window.Outlayer = {};\n    window.Outlayer.Item = factory(\n      window.EvEmitter,\n      window.getSize\n    );\n  }\n\n}( window, function factory( EvEmitter, getSize ) {\n'use strict';\n\n// ----- helpers ----- //\n\nfunction isEmptyObj( obj ) {\n  for ( var prop in obj ) {\n    return false;\n  }\n  prop = null;\n  return true;\n}\n\n// -------------------------- CSS3 support -------------------------- //\n\n\nvar docElemStyle = document.documentElement.style;\n\nvar transitionProperty = typeof docElemStyle.transition == 'string' ?\n  'transition' : 'WebkitTransition';\nvar transformProperty = typeof docElemStyle.transform == 'string' ?\n  'transform' : 'WebkitTransform';\n\nvar transitionEndEvent = {\n  WebkitTransition: 'webkitTransitionEnd',\n  transition: 'transitionend'\n}[ transitionProperty ];\n\n// cache all vendor properties that could have vendor prefix\nvar vendorProperties = {\n  transform: transformProperty,\n  transition: transitionProperty,\n  transitionDuration: transitionProperty + 'Duration',\n  transitionProperty: transitionProperty + 'Property',\n  transitionDelay: transitionProperty + 'Delay'\n};\n\n// -------------------------- Item -------------------------- //\n\nfunction Item( element, layout ) {\n  if ( !element ) {\n    return;\n  }\n\n  this.element = element;\n  // parent layout class, i.e. Masonry, Isotope, or Packery\n  this.layout = layout;\n  this.position = {\n    x: 0,\n    y: 0\n  };\n\n  this._create();\n}\n\n// inherit EvEmitter\nvar proto = Item.prototype = Object.create( EvEmitter.prototype );\nproto.constructor = Item;\n\nproto._create = function() {\n  // transition objects\n  this._transn = {\n    ingProperties: {},\n    clean: {},\n    onEnd: {}\n  };\n\n  this.css({\n    position: 'absolute'\n  });\n};\n\n// trigger specified handler for event type\nproto.handleEvent = function( event ) {\n  var method = 'on' + event.type;\n  if ( this[ method ] ) {\n    this[ method ]( event );\n  }\n};\n\nproto.getSize = function() {\n  this.size = getSize( this.element );\n};\n\n/**\n * apply CSS styles to element\n * @param {Object} style\n */\nproto.css = function( style ) {\n  var elemStyle = this.element.style;\n\n  for ( var prop in style ) {\n    // use vendor property if available\n    var supportedProp = vendorProperties[ prop ] || prop;\n    elemStyle[ supportedProp ] = style[ prop ];\n  }\n};\n\n // measure position, and sets it\nproto.getPosition = function() {\n  var style = getComputedStyle( this.element );\n  var isOriginLeft = this.layout._getOption('originLeft');\n  var isOriginTop = this.layout._getOption('originTop');\n  var xValue = style[ isOriginLeft ? 'left' : 'right' ];\n  var yValue = style[ isOriginTop ? 'top' : 'bottom' ];\n  var x = parseFloat( xValue );\n  var y = parseFloat( yValue );\n  // convert percent to pixels\n  var layoutSize = this.layout.size;\n  if ( xValue.indexOf('%') != -1 ) {\n    x = ( x / 100 ) * layoutSize.width;\n  }\n  if ( yValue.indexOf('%') != -1 ) {\n    y = ( y / 100 ) * layoutSize.height;\n  }\n  // clean up 'auto' or other non-integer values\n  x = isNaN( x ) ? 0 : x;\n  y = isNaN( y ) ? 0 : y;\n  // remove padding from measurement\n  x -= isOriginLeft ? layoutSize.paddingLeft : layoutSize.paddingRight;\n  y -= isOriginTop ? layoutSize.paddingTop : layoutSize.paddingBottom;\n\n  this.position.x = x;\n  this.position.y = y;\n};\n\n// set settled position, apply padding\nproto.layoutPosition = function() {\n  var layoutSize = this.layout.size;\n  var style = {};\n  var isOriginLeft = this.layout._getOption('originLeft');\n  var isOriginTop = this.layout._getOption('originTop');\n\n  // x\n  var xPadding = isOriginLeft ? 'paddingLeft' : 'paddingRight';\n  var xProperty = isOriginLeft ? 'left' : 'right';\n  var xResetProperty = isOriginLeft ? 'right' : 'left';\n\n  var x = this.position.x + layoutSize[ xPadding ];\n  // set in percentage or pixels\n  style[ xProperty ] = this.getXValue( x );\n  // reset other property\n  style[ xResetProperty ] = '';\n\n  // y\n  var yPadding = isOriginTop ? 'paddingTop' : 'paddingBottom';\n  var yProperty = isOriginTop ? 'top' : 'bottom';\n  var yResetProperty = isOriginTop ? 'bottom' : 'top';\n\n  var y = this.position.y + layoutSize[ yPadding ];\n  // set in percentage or pixels\n  style[ yProperty ] = this.getYValue( y );\n  // reset other property\n  style[ yResetProperty ] = '';\n\n  this.css( style );\n  this.emitEvent( 'layout', [ this ] );\n};\n\nproto.getXValue = function( x ) {\n  var isHorizontal = this.layout._getOption('horizontal');\n  return this.layout.options.percentPosition && !isHorizontal ?\n    ( ( x / this.layout.size.width ) * 100 ) + '%' : x + 'px';\n};\n\nproto.getYValue = function( y ) {\n  var isHorizontal = this.layout._getOption('horizontal');\n  return this.layout.options.percentPosition && isHorizontal ?\n    ( ( y / this.layout.size.height ) * 100 ) + '%' : y + 'px';\n};\n\nproto._transitionTo = function( x, y ) {\n  this.getPosition();\n  // get current x & y from top/left\n  var curX = this.position.x;\n  var curY = this.position.y;\n\n  var didNotMove = x == this.position.x && y == this.position.y;\n\n  // save end position\n  this.setPosition( x, y );\n\n  // if did not move and not transitioning, just go to layout\n  if ( didNotMove && !this.isTransitioning ) {\n    this.layoutPosition();\n    return;\n  }\n\n  var transX = x - curX;\n  var transY = y - curY;\n  var transitionStyle = {};\n  transitionStyle.transform = this.getTranslate( transX, transY );\n\n  this.transition({\n    to: transitionStyle,\n    onTransitionEnd: {\n      transform: this.layoutPosition\n    },\n    isCleaning: true\n  });\n};\n\nproto.getTranslate = function( x, y ) {\n  // flip cooridinates if origin on right or bottom\n  var isOriginLeft = this.layout._getOption('originLeft');\n  var isOriginTop = this.layout._getOption('originTop');\n  x = isOriginLeft ? x : -x;\n  y = isOriginTop ? y : -y;\n  return 'translate3d(' + x + 'px, ' + y + 'px, 0)';\n};\n\n// non transition + transform support\nproto.goTo = function( x, y ) {\n  this.setPosition( x, y );\n  this.layoutPosition();\n};\n\nproto.moveTo = proto._transitionTo;\n\nproto.setPosition = function( x, y ) {\n  this.position.x = parseFloat( x );\n  this.position.y = parseFloat( y );\n};\n\n// ----- transition ----- //\n\n/**\n * @param {Object} style - CSS\n * @param {Function} onTransitionEnd\n */\n\n// non transition, just trigger callback\nproto._nonTransition = function( args ) {\n  this.css( args.to );\n  if ( args.isCleaning ) {\n    this._removeStyles( args.to );\n  }\n  for ( var prop in args.onTransitionEnd ) {\n    args.onTransitionEnd[ prop ].call( this );\n  }\n};\n\n/**\n * proper transition\n * @param {Object} args - arguments\n *   @param {Object} to - style to transition to\n *   @param {Object} from - style to start transition from\n *   @param {Boolean} isCleaning - removes transition styles after transition\n *   @param {Function} onTransitionEnd - callback\n */\nproto.transition = function( args ) {\n  // redirect to nonTransition if no transition duration\n  if ( !parseFloat( this.layout.options.transitionDuration ) ) {\n    this._nonTransition( args );\n    return;\n  }\n\n  var _transition = this._transn;\n  // keep track of onTransitionEnd callback by css property\n  for ( var prop in args.onTransitionEnd ) {\n    _transition.onEnd[ prop ] = args.onTransitionEnd[ prop ];\n  }\n  // keep track of properties that are transitioning\n  for ( prop in args.to ) {\n    _transition.ingProperties[ prop ] = true;\n    // keep track of properties to clean up when transition is done\n    if ( args.isCleaning ) {\n      _transition.clean[ prop ] = true;\n    }\n  }\n\n  // set from styles\n  if ( args.from ) {\n    this.css( args.from );\n    // force redraw. http://blog.alexmaccaw.com/css-transitions\n    var h = this.element.offsetHeight;\n    // hack for JSHint to hush about unused var\n    h = null;\n  }\n  // enable transition\n  this.enableTransition( args.to );\n  // set styles that are transitioning\n  this.css( args.to );\n\n  this.isTransitioning = true;\n\n};\n\n// dash before all cap letters, including first for\n// WebkitTransform => -webkit-transform\nfunction toDashedAll( str ) {\n  return str.replace( /([A-Z])/g, function( $1 ) {\n    return '-' + $1.toLowerCase();\n  });\n}\n\nvar transitionProps = 'opacity,' + toDashedAll( transformProperty );\n\nproto.enableTransition = function(/* style */) {\n  // HACK changing transitionProperty during a transition\n  // will cause transition to jump\n  if ( this.isTransitioning ) {\n    return;\n  }\n\n  // make `transition: foo, bar, baz` from style object\n  // HACK un-comment this when enableTransition can work\n  // while a transition is happening\n  // var transitionValues = [];\n  // for ( var prop in style ) {\n  //   // dash-ify camelCased properties like WebkitTransition\n  //   prop = vendorProperties[ prop ] || prop;\n  //   transitionValues.push( toDashedAll( prop ) );\n  // }\n  // munge number to millisecond, to match stagger\n  var duration = this.layout.options.transitionDuration;\n  duration = typeof duration == 'number' ? duration + 'ms' : duration;\n  // enable transition styles\n  this.css({\n    transitionProperty: transitionProps,\n    transitionDuration: duration,\n    transitionDelay: this.staggerDelay || 0\n  });\n  // listen for transition end event\n  this.element.addEventListener( transitionEndEvent, this, false );\n};\n\n// ----- events ----- //\n\nproto.onwebkitTransitionEnd = function( event ) {\n  this.ontransitionend( event );\n};\n\nproto.onotransitionend = function( event ) {\n  this.ontransitionend( event );\n};\n\n// properties that I munge to make my life easier\nvar dashedVendorProperties = {\n  '-webkit-transform': 'transform'\n};\n\nproto.ontransitionend = function( event ) {\n  // disregard bubbled events from children\n  if ( event.target !== this.element ) {\n    return;\n  }\n  var _transition = this._transn;\n  // get property name of transitioned property, convert to prefix-free\n  var propertyName = dashedVendorProperties[ event.propertyName ] || event.propertyName;\n\n  // remove property that has completed transitioning\n  delete _transition.ingProperties[ propertyName ];\n  // check if any properties are still transitioning\n  if ( isEmptyObj( _transition.ingProperties ) ) {\n    // all properties have completed transitioning\n    this.disableTransition();\n  }\n  // clean style\n  if ( propertyName in _transition.clean ) {\n    // clean up style\n    this.element.style[ event.propertyName ] = '';\n    delete _transition.clean[ propertyName ];\n  }\n  // trigger onTransitionEnd callback\n  if ( propertyName in _transition.onEnd ) {\n    var onTransitionEnd = _transition.onEnd[ propertyName ];\n    onTransitionEnd.call( this );\n    delete _transition.onEnd[ propertyName ];\n  }\n\n  this.emitEvent( 'transitionEnd', [ this ] );\n};\n\nproto.disableTransition = function() {\n  this.removeTransitionStyles();\n  this.element.removeEventListener( transitionEndEvent, this, false );\n  this.isTransitioning = false;\n};\n\n/**\n * removes style property from element\n * @param {Object} style\n**/\nproto._removeStyles = function( style ) {\n  // clean up transition styles\n  var cleanStyle = {};\n  for ( var prop in style ) {\n    cleanStyle[ prop ] = '';\n  }\n  this.css( cleanStyle );\n};\n\nvar cleanTransitionStyle = {\n  transitionProperty: '',\n  transitionDuration: '',\n  transitionDelay: ''\n};\n\nproto.removeTransitionStyles = function() {\n  // remove transition\n  this.css( cleanTransitionStyle );\n};\n\n// ----- stagger ----- //\n\nproto.stagger = function( delay ) {\n  delay = isNaN( delay ) ? 0 : delay;\n  this.staggerDelay = delay + 'ms';\n};\n\n// ----- show/hide/remove ----- //\n\n// remove element from DOM\nproto.removeElem = function() {\n  this.element.parentNode.removeChild( this.element );\n  // remove display: none\n  this.css({ display: '' });\n  this.emitEvent( 'remove', [ this ] );\n};\n\nproto.remove = function() {\n  // just remove element if no transition support or no transition\n  if ( !transitionProperty || !parseFloat( this.layout.options.transitionDuration ) ) {\n    this.removeElem();\n    return;\n  }\n\n  // start transition\n  this.once( 'transitionEnd', function() {\n    this.removeElem();\n  });\n  this.hide();\n};\n\nproto.reveal = function() {\n  delete this.isHidden;\n  // remove display: none\n  this.css({ display: '' });\n\n  var options = this.layout.options;\n\n  var onTransitionEnd = {};\n  var transitionEndProperty = this.getHideRevealTransitionEndProperty('visibleStyle');\n  onTransitionEnd[ transitionEndProperty ] = this.onRevealTransitionEnd;\n\n  this.transition({\n    from: options.hiddenStyle,\n    to: options.visibleStyle,\n    isCleaning: true,\n    onTransitionEnd: onTransitionEnd\n  });\n};\n\nproto.onRevealTransitionEnd = function() {\n  // check if still visible\n  // during transition, item may have been hidden\n  if ( !this.isHidden ) {\n    this.emitEvent('reveal');\n  }\n};\n\n/**\n * get style property use for hide/reveal transition end\n * @param {String} styleProperty - hiddenStyle/visibleStyle\n * @returns {String}\n */\nproto.getHideRevealTransitionEndProperty = function( styleProperty ) {\n  var optionStyle = this.layout.options[ styleProperty ];\n  // use opacity\n  if ( optionStyle.opacity ) {\n    return 'opacity';\n  }\n  // get first property\n  for ( var prop in optionStyle ) {\n    return prop;\n  }\n};\n\nproto.hide = function() {\n  // set flag\n  this.isHidden = true;\n  // remove display: none\n  this.css({ display: '' });\n\n  var options = this.layout.options;\n\n  var onTransitionEnd = {};\n  var transitionEndProperty = this.getHideRevealTransitionEndProperty('hiddenStyle');\n  onTransitionEnd[ transitionEndProperty ] = this.onHideTransitionEnd;\n\n  this.transition({\n    from: options.visibleStyle,\n    to: options.hiddenStyle,\n    // keep hidden stuff hidden\n    isCleaning: true,\n    onTransitionEnd: onTransitionEnd\n  });\n};\n\nproto.onHideTransitionEnd = function() {\n  // check if still hidden\n  // during transition, item may have been un-hidden\n  if ( this.isHidden ) {\n    this.css({ display: 'none' });\n    this.emitEvent('hide');\n  }\n};\n\nproto.destroy = function() {\n  this.css({\n    position: '',\n    left: '',\n    right: '',\n    top: '',\n    bottom: '',\n    transition: '',\n    transform: ''\n  });\n};\n\nreturn Item;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/outlayer/item.js\n// module id = 165\n// module chunks = 0","var Instagram = {};\r\n\r\nfunction calculatePosition() {\r\n  var tileInfoHeight = $('.instagram-gallery .tile-block-hidden').outerHeight();\r\n  var infoHeight = $('.instagram-gallery .instagram-info').outerHeight();\r\n  var instagramInfo = $('.instagram-info-margin');\r\n\r\n  if (tileInfoHeight > infoHeight) {\r\n    instagramInfo.css({\r\n      'margin-bottom': (tileInfoHeight * -1) + 'px',\r\n      'padding-top': ( tileInfoHeight - infoHeight) + 'px',\r\n    });\r\n    $('.instagram-gallery').removeClass('is-text-overlapping');\r\n  } else {\r\n    instagramInfo.css({\r\n      'margin-bottom': (tileInfoHeight * -1) + 'px',\r\n      'padding-top': '0',\r\n    });\r\n    $('.instagram-gallery').addClass('is-text-overlapping');\r\n  }\r\n}\r\n\r\nInstagram.infoPosition = function() {\r\n  calculatePosition();\r\n\r\n  $(window).resize(function () {\r\n    calculatePosition();\r\n  });\r\n};\r\n\r\nInstagram.infoPosition();\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/instagram.js","import { stokpress } from '../util/helper';\r\nimport Rule from '../util/Rule';\r\nvar Alert = require('../components/alert');\r\n\r\nvar Newsletter = {};\r\n\r\n(function($){\r\n\r\n\tNewsletter.updateErrorHtml = function() {\r\n\t\tvar formError = this.parentNode.querySelector('.js-form-error');\r\n\r\n\t\tif (!formError) {\r\n\t\t\tformError = this.parentNode.parentNode.querySelector('.js-form-error');\r\n\t\t}\r\n\r\n\t\tif (formError && formError.innerText.length > 0) {\r\n\t\t\tformError.innerText = null;\r\n\t\t\tthis.classList.remove( Newsletter.elClasses.error );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.removeErrors = function (wrapperEl) {\r\n\t\tvar inputs = wrapperEl.querySelectorAll( 'input' );\r\n\r\n\t\tif (inputs.length === 0) { \r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tfor (var i=0; i < inputs.length; i++) {\r\n\t\t\tinputs[i].addEventListener( 'focus', Newsletter.updateErrorHtml );\r\n\t\t\tinputs[i].addEventListener( 'click', Newsletter.updateErrorHtml );\r\n\t\t}    \r\n\t};\r\n\r\n\tNewsletter.validateEmail = function( email ) {\r\n\t\tvar re = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\r\n\t\treturn re.test( email );\r\n\t};\r\n\r\n\tNewsletter.formValidation = function( wrapperEl ) {\r\n\t\tvar errorMessages = JSON.parse( wrapperEl.getAttribute( 'data-messages' ) );\r\n\t\tvar email = wrapperEl.querySelector( 'input[name=\"esc_email\"]' );\r\n\t\tvar terms = wrapperEl.querySelector( 'input[name=\"accept_terms\"]' );\r\n\t\tvar errors = {};\r\n\r\n\t\t// Form validation\r\n\t\tif( email.value.length === 0 ) {\r\n\t\t\terrors.email = ( errorMessages && errorMessages.required_email ) ? errorMessages.required_email : 'E-mail field is required';\r\n\t\t} else if ( !Newsletter.validateEmail( email.value ) ) {\r\n\t\t\terrors.email = ( errorMessages && errorMessages.invalid_email ) ? errorMessages.invalid_email : 'Email address is invalid';\r\n\t\t}\r\n\r\n\t\tif( terms.checked === false ) {\r\n\t\t\terrors.terms = ( errorMessages && errorMessages.required_terms ) ? errorMessages.required_terms : 'Accept terms is required';\r\n\t\t}\r\n\r\n\t\t// Return false if no errors\r\n\t\tif (Object.keys(errors).length === 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Display error\r\n\t\tfor( var key in errors ) {\r\n\t\t\tvar errorEl = wrapperEl.querySelector( '.js-form-error[data-field=\"'+ key +'\"]' );\r\n\t\t\tif (errorEl) {\r\n\t\t\t\terrorEl.innerText = errors[ key ];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tvar elToAddClass = key === 'email' ? email : terms;\r\n\t\t\telToAddClass.classList.add( Newsletter.elClasses.error );\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t};\r\n\r\n\tNewsletter.formSubmit = function ( form ) {\r\n\t\tif ( !form ) { return; }\r\n\t\t\r\n\t\tvar formData = new FormData( form );\r\n\t\tformData.append( 'ajax', 1 );\r\n\t\t\r\n\t\tvar button = form.querySelector('button[type=\"submit\"]');\r\n\t\tbutton.classList.add( Newsletter.elClasses.isLoading );\t\r\n\r\n\t\tvar hasErrors = Newsletter.formValidation( form );\r\n\t\tif (hasErrors) {\r\n\t\t\treturn setTimeout( function () {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\r\n\t\t\t}, 500 );\t\t\r\n\t\t}\r\n\r\n\t\tif( form.dataset.formType === 'mailingList' ) {\r\n\t\t\tNewsletter.processRuleMailingList(formData, form, button);\r\n\t\t} else if(formData.has('is_notification')){\r\n\t\t\tNewsletter.processBackInStock(formData, form, button);\r\n\t\t} else {\r\n\t\t\tvar sendData = [];\r\n\r\n\t\t\tformData.forEach(function(value, key){\r\n\t\t\t\tsendData.push( encodeURIComponent(key) + '=' + encodeURIComponent(value) );\t    \r\n\t\t\t});\r\n\t\r\n\t\t\tvar xhr = new XMLHttpRequest();\r\n\t\t\txhr.onreadystatechange = function() {\r\n\t\t\t\tif( xhr.readyState == XMLHttpRequest.DONE ) {\r\n\t\t\t\t\tif (xhr.status == 200) {\r\n\t\t\t\t\t\tvar response = JSON.parse(xhr.response);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (response.success || response.success === true) {\r\n\t\t\t\t\t\t\tsetTimeout( function () {\r\n\t\t\t\t\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\r\n\t\t\t\t\t\t\t\tNewsletter.formSuccess(form);\r\n\t\t\t\t\t\t\t}, 1500 );\r\n\t\r\n\t\t\t\t\t\t\tvar targetEl = $( form.dataset.target );\r\n\t\t\t\t\t\t\tif (targetEl && targetEl.attr('id') === 'js-newsletter-modal') {\r\n\t\t\t\t\t\t\t\tvar displayTime = targetEl.data('display_time');\r\n\t\r\n\t\t\t\t\t\t\t\tif (form.dataset.success_type === 'alert') {\r\n\t\t\t\t\t\t\t\t\tdisplayTime = 0;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\tNewsletter.forceCloseModal( targetEl, displayTime );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\txhr.open( 'POST', '/', true );\r\n\t\t\txhr.setRequestHeader( 'Accept', 'application/json, text/javascript, */*; q=0.01' );\r\n\t\t\txhr.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded;charset=UTF-8' );\r\n\t\t\txhr.send( sendData.join('&') );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.processBackInStock = function(formData, form, button) {\r\n\t\tvar body = new FormData();\r\n\t\t\r\n\t\tbody.append('email', formData.get('esc_email'));\r\n\t\tbody.append('item', formData.get('notify[item]'));\r\n\t\tbody.append('language', formData.get('notify[language]'));\r\n\t\tbody.append('action', 'process_back_in_stock');\r\n\r\n\t\tfetch(window.ajaxURL, {\r\n\t\t\tmethod: 'POST',\r\n\t\t\tbody: body,\r\n\t\t}).then(function(response) {\r\n\t\t\treturn response.json();\r\n\t\t}).then(function(jsonResponse) {\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\r\n\t\t\t}, 1500 );\r\n\t\t\r\n\t\t\tif (jsonResponse.success) {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\t\t\t\r\n\t\t\t\tNewsletter.formSuccess(form, false);\r\n\t\t\t} else {\r\n\t\t\t\tAlert.show( jsonResponse.data.message );\r\n\t\t\t}\r\n\t\t});\t\t\t\r\n\t};\r\n\r\n\tNewsletter.processRuleMailingList = function(formData, form, button) {\r\n\t\tconst email = formData.get('esc_email');\r\n\t\tconst language = formData.get('language');\r\n\t\tconst additionalTags = formData.get('additional_tags');\r\n\t\tconst selectedInterests = formData.getAll('interests');\r\n\r\n\t\tlet interests = '';\r\n\t\tif (selectedInterests.length) {\r\n\t\t\tinterests = selectedInterests.join(',').trim();\r\n\t\t}\r\n\r\n\t\tconst rule = new Rule();\r\n\t\t\r\n\t\trule.addSubscriber(email, interests, additionalTags, language).then(function ( response ) {\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\r\n\t\t\t}, 1500 );\r\n\r\n\t\t\tif (response.success) {\r\n\t\t\t\tbutton.classList.remove( Newsletter.elClasses.isLoading );\t\t\t\t\r\n\t\t\t\tNewsletter.formSuccess(form);\r\n\t\t\t} else {\r\n\t\t\t\tAlert.show( response.data.message );\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tNewsletter.forceCloseModal = function( el, displayTime ) {\r\n\t\tsetTimeout( function () {\r\n\t\t\tel.modal('hide');\r\n\t\t}, displayTime * 1000 );\r\n\t};\t\r\n\r\n\tNewsletter.formSuccess = function(form, reset=true) {\r\n\t\tvar targetContainer = document.querySelector(form.dataset.target);\r\n\t\tvar successType = form.dataset.success_type;\r\n\r\n\t\tif (targetContainer && successType === 'success-message') {\r\n\t\t\ttargetContainer.classList.add('is-success');\r\n\t\t\tNewsletter.displaySuccessMessage( targetContainer, '.js-newsletter-success', '.js-newsletter-content' );\r\n\r\n\t\t} else if( successType === 'alert' ) {\r\n\t\t\tvar btn = document.getElementById( 'js-alert-button' );\r\n\t\t\tvar btnText = btn ? btn.dataset.text : '';\r\n\r\n\t\t\tAlert.show( 'success', form.dataset.alert_title, form.dataset.alert, btnText );\r\n\t\t}\r\n\r\n\t\tif (reset) {\r\n\t\t\tNewsletter.resetForm(targetContainer, form, successType);\r\n\t\t}\t\r\n\t};\r\n\r\n\tNewsletter.resetForm = function( targetContainer, form, successType ) {\r\n\t\tform.querySelector( 'input[name=\"esc_email\"]' ).value = '';\r\n\t\tform.querySelector( 'input[name=\"accept_terms\"]' ).checked = false;\t\r\n\r\n\t\tvar checkboxes = form.querySelectorAll( '.custom-control-input' );\r\n\t\tif (checkboxes.length) {\r\n\t\t\tcheckboxes.forEach(function (item) {\r\n\t\t\t\titem.checked = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (successType === 'success-message') {\r\n\t\t\tsetTimeout( function () {\t\t\t\t\r\n\t\t\t\ttargetContainer.classList.remove('is-success');\r\n\t\t\t\tNewsletter.displaySuccessMessage( targetContainer, '.js-newsletter-content', '.js-newsletter-success' );\r\n\t\t\t}, 10000 );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.displaySuccessMessage = function( targetContainer, toDisplayClass, toHideClass  ) {\r\n\t\tif (!targetContainer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar contentToDisplay = targetContainer.querySelectorAll( toDisplayClass );\r\n\t\tvar contentToHide = targetContainer.querySelectorAll( toHideClass );\r\n\r\n\t\tif( contentToHide.length > 0 ) {\r\n\t\t\tArray.prototype.forEach.call( contentToHide, function ( element ) {\r\n\t\t\t\telement.classList.add( Newsletter.elClasses.hidden );\r\n\t\t\t} );\r\n\t\t}\t\r\n\r\n\t\tif( contentToDisplay.length > 0 ) {\r\n\t\t\tArray.prototype.forEach.call( contentToDisplay, function ( element ) {\r\n\t\t\t\telement.classList.remove( Newsletter.elClasses.hidden );\r\n\t\t\t} );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.modal = function( modal ) {\r\n\t\tif( !modal ) { \r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tvar cookieName = modal.data( 'cookie' );\r\n\t\tvar delay = modal.data( 'delay' );\r\n\t\t\r\n\t\tif( !stokpress.getCookie( cookieName ) ) {\r\n\t\t\t// Show modal\r\n\t\t\tsetTimeout( function () {\r\n\t\t\t\tmodal.modal('show');\r\n\t\t\t\tstokpress.setCookie( cookieName, true, 365 );\r\n\t\t\t}, delay * 1000 );\r\n\t\t}\r\n\t};\r\n\r\n\tNewsletter.init = function ( mainWrapper, modalId ) {\t\r\n\t\tvar container = document.querySelectorAll( mainWrapper );\r\n\t\tif (container.length === 0) { \r\n\t\t\treturn; \r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < container.length; i++) {\r\n\r\n\t\t\t// Form submit\r\n\t\t\tvar form = container[i];\r\n\t\t\tform.addEventListener( 'submit', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\tNewsletter.formSubmit( this );\r\n\t\t\t});\r\n\r\n\t\t\t// Remove Errors on input change\r\n\t\t\tNewsletter.removeErrors( form );\r\n\t\t}\r\n\r\n\t\t// Newsletter Modal\r\n\t\tvar modal = $( modalId );\r\n\t\tif (modal.length) {\r\n\t\t\tNewsletter.modal( modal );\r\n\t\t}\r\n\t};\r\n\r\n\tdocument.addEventListener( 'DOMContentLoaded', function () {\r\n\t\tNewsletter.elClasses = {\r\n\t\t\thidden: 'd-none',\r\n\t\t\tisLoading: 'is-loading',\r\n\t\t\tisDisabled: 'is-disabled',\r\n\t\t\terror: 'is-invalid',\r\n\t\t};\r\n\r\n\t\tNewsletter.init( '.js-newsletter', '#js-newsletter-modal' );\r\n\t} );\r\n\r\n\twindow.Newsletter = Newsletter;\r\n})(jQuery);\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/newsletter.js","export default class Rule {\r\n  constructor() {\r\n    console.log('Rule!');\r\n  }\r\n  addSubscriber(email, interests, additionalTags, language = 'en') {\r\n    return fetch(`/wp-json/stok/v1/rule/subscriber/${email}`, {\r\n      method: 'post',\r\n      headers: {\r\n        'Content-type': 'application/json; charset=UTF-8',\r\n      },\r\n      body: JSON.stringify({\r\n        interests: interests,\r\n        language: language,\r\n        additionalTags: additionalTags,\r\n      }),\r\n    })\r\n      .then((data) => data.json())\r\n      .then(function (data) {\r\n        console.log('Request succeeded with JSON response', data);\r\n        return data;\r\n      })\r\n      .catch(function (error) {\r\n        console.log('Request failed', error);\r\n      });\r\n  }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/util/Rule.js","/*global FilterUpdater, Filter */\r\n\r\n( function ( $ ) {\r\n\r\n    var hashQueryString = window.location.hash,\r\n        currentSort = $( '#js-current-sort' ),\r\n        listingHolder = $( '#js-listing-holder' ),\r\n        holder = $( '.silk-product-item-holder' ),\r\n        firstItem = holder.length > 0 ? holder.children()[0].outerHTML : '',\r\n        loadMore = $( '.silk-loadmore' ),\r\n        language = loadMore.data( 'language' ),\r\n        search = loadMore.data( 'search' ),\r\n        allProducts = $('.products .product').clone(),\r\n        searchHitCountSelector = '.js-hit-count',\r\n        titleCard;\r\n\r\n    if( allProducts.length > 0 ) {\r\n        titleCard = allProducts.eq(0).clone();\r\n        allProducts.eq(0).remove();\r\n    }\r\n\r\n    loadMore.addClass('d-none');\r\n\r\n    if( $( '#silkFilterForm' ).data( 'ajaxurl' ) ) {\r\n        filterDataLoad();\r\n    }\r\n\r\n    if ( hashQueryString != '' ) {\r\n        holder.html( '' );\r\n        loadMore.addClass( 'd-none' );\r\n        $( '.silk-spinner' ).removeClass( 'd-none' );\r\n        //silkProductLoad( 1 );\r\n    }\r\n\r\n    loadMore.click( function () {\r\n        var currentPage = $( this ).data( 'currentpage' );\r\n        var nextPage = currentPage + 1;\r\n        silkProductLoad( nextPage );\r\n        $( this ).data( 'currentpage', nextPage );\r\n    } );\r\n\r\n    $( '.silk-hash-clear' ).click( function (e) {\r\n        e.preventDefault();\r\n        history.pushState( '', document.title, window.location.pathname + window.location.search );\r\n        $( '#silkFilterForm' ).trigger( 'reset' );\r\n        $( '.silk-hash-orderby' ).removeClass( 'active' );\r\n        $( '.check-count' ).each( function () {\r\n            $( this ).html( '<strong></strong>' );\r\n            $( this ).parents( '.dropdown' ).removeClass( 'has-dash' );\r\n        } );\r\n\r\n        filterProducts();\r\n\r\n        //silkProductLoad( 1 );\r\n    } );\r\n\r\n    $( '.silk-hash-orderby' ).click( function ( e ) {\r\n        e.preventDefault();\r\n        $( '.silk-hash-orderby.active' ).removeClass( 'active' );\r\n        $( this ).addClass( 'active' );\r\n        currentSort.text( $( this ).text() );\r\n    } );\r\n\r\n    $( '.silk-hash-filter' ).click( function () {\r\n        filterProducts();\r\n    });\r\n\r\n    function filterProducts() {\r\n\r\n        var colorList = '';\r\n        var sizeList = '';\r\n        var categoryList = '';\r\n        var materialList = '';\r\n        var modelList = '';\r\n        var heelList = '';\r\n        var collectionList = '';\r\n        var collectionFilter = '';\r\n\r\n        var orderBy = $( '.silk-hash-orderby.active' ).data( 'value' ) ? $( '.silk-hash-orderby.active' ).data( 'value' ) : '';\r\n        var comma = '';\r\n\r\n        $( '.silk-hash-filter' ).each( function () {\r\n            var inputName = $( this ).attr( 'name' );\r\n            var inputValue = $( this ).val();\r\n            if ( $( this ).prop( 'checked' ) == true ) {\r\n                switch ( inputName ) {\r\n                    case 'color':\r\n                        comma = '';\r\n                        if ( colorList != '' ) {\r\n                            comma = ',';\r\n                        }\r\n                        colorList += comma + inputValue;\r\n                        break;\r\n                    case 'size':\r\n                        comma = '';\r\n                        if ( sizeList != '' ) {\r\n                            comma = '|';\r\n                        }\r\n                        sizeList += comma + inputValue;\r\n                        break;\r\n                    case 'category':\r\n                        comma = '';\r\n                        if ( categoryList != '' ) {\r\n                            comma = ',';\r\n                        }\r\n                        categoryList += comma + inputValue;\r\n                        break;\r\n                    case 'material':\r\n                        comma = '';\r\n                        if ( materialList != '' ) {\r\n                            comma = ',';\r\n                        }\r\n                        materialList += comma + inputValue;\r\n                        break;\r\n                    case 'model':\r\n                        comma = '';\r\n                        if ( modelList != '' ) {\r\n                            comma = ',';\r\n                        }\r\n                        modelList += comma + inputValue;\r\n                        break;\r\n                    case 'heel':\r\n                        comma = '';\r\n                        if ( heelList != '' ) {\r\n                            comma = ',';\r\n                        }\r\n                        heelList += comma + inputValue;\r\n                        break;\r\n                    case 'collection':\r\n                        comma = '';\r\n                        if ( collectionList != '' ) {\r\n                            comma = ',';\r\n                        }\r\n                        collectionList += comma + inputValue;\r\n                        collectionFilter += comma + $( this ).data('name');\r\n                        break;\r\n                }\r\n            }\r\n        } );\r\n\r\n        // this will be use for Order By\r\n        //$( '.silk-hash-orderby' ).parent( 'label' ).removeClass( 'active' );\r\n        //var checkedOrderBy = $( this ).children( 'input[type=\"radio\"]' ).val();\r\n        //if ( checkedOrderBy != undefined ) {\r\n        //    orderBy = checkedOrderBy;\r\n        //}\r\n\r\n        var filterUrl = '';\r\n\r\n        if ( categoryList != '' ) {\r\n            filterUrl += 'category=' + categoryList;\r\n        } else if(loadMore.data( 'currentcategory' )) {\r\n            filterUrl += 'category=' + loadMore.data( 'currentcategory' );\r\n        }\r\n\r\n        if ( colorList != '' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'color=' + colorList;\r\n            var colorFilter = new RegExp( colorList.replace(/,/g, '|'), 'g');\r\n        }\r\n        if ( sizeList != '' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'size=' + sizeList;\r\n            var sizeFilter = new RegExp( sizeList.replace(/,/g, '|'), 'g');\r\n        }\r\n        if ( materialList != '' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'material=' + materialList;\r\n            var materialFilter = new RegExp( materialList.replace(/,/g, '|'), 'g');\r\n        }\r\n        if ( modelList != '' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'model=' + modelList;\r\n            var modelFilter = new RegExp( modelList.replace(/,/g, '|'), 'g');\r\n        }\r\n        if ( heelList != '' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'heel=' + heelList;\r\n            var heelFilter = new RegExp( heelList.replace(/,/g, '|'), 'g');\r\n        }\r\n        if ( collectionList != '' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'collection=' + collectionList;\r\n            collectionFilter = new RegExp( collectionFilter.replace(/,/g, '|'), 'g');\r\n        }\r\n        if ( orderBy != '' && typeof orderBy !== 'undefined' ) {\r\n            if ( filterUrl != '' ) {\r\n                filterUrl += '&';\r\n            }\r\n            filterUrl += 'orderBy=' + orderBy;\r\n        }\r\n\r\n        filterUrl = '#' + filterUrl;\r\n        window.history.pushState( '', 'Title', filterUrl );\r\n\r\n        var categoryFilter;\r\n\r\n        if ( categoryList != '' ) {\r\n            categoryFilter = new RegExp( `\\\\b${ categoryList.replace(/,/g, '\\\\b|\\\\b') }\\\\b`, 'g');\r\n        } else {\r\n            categoryFilter = new RegExp( `\\\\b${ loadMore.data( 'currentcategory' ) }\\\\b`, 'g');\r\n        }\r\n\r\n        $('.products .product').remove();\r\n\r\n        var filteredResult = '';\r\n\r\n        filteredResult = allProducts.filter(function () { return $(this).data('category') ? $(this).data('category').match(categoryFilter) : false } ).clone();\r\n\r\n        // FilterUpdater.update(filteredResult);\r\n        // Filter.dropdownUpdate();\r\n\r\n        if( colorFilter ) {\r\n            filteredResult = filteredResult.filter(function () { return $(this).data('color') ? $(this).data('color').match(colorFilter) : false } );\r\n        }\r\n        if( sizeFilter ) {\r\n            filteredResult = filteredResult.filter(function () { return $(this).data('size') ? $(this).data('size').toString().match(sizeFilter) : false } );\r\n        }\r\n        if( materialFilter ) {\r\n            filteredResult = filteredResult.filter(function () { return $(this).data('material') ? $(this).data('material').match(materialFilter) : false } );\r\n        }\r\n        if( modelFilter ) {\r\n            filteredResult = filteredResult.filter(function () { return $(this).data('model') ? $(this).data('model').match(modelFilter) : false } );\r\n        }\r\n        if( heelFilter ) {\r\n            filteredResult = filteredResult.filter(function () { return $(this).data('heel') ? $(this).data('heel').match(heelFilter) : false } );\r\n        }\r\n        if( collectionFilter ) {\r\n            filteredResult = filteredResult.filter(function () { return $(this).data('collection') ? $(this).data('collection').match(collectionFilter) : false } );\r\n        }\r\n\r\n        var sortTitleDesc = function(a,b) {\r\n            a = $(a).data('name').toUpperCase();\r\n            b = $(b).data('name').toUpperCase();\r\n            if(a > b) {\r\n                return -1;\r\n            } else if(a < b) {\r\n                return 1;\r\n            } else {\r\n                return 0;\r\n            }\r\n        };\r\n\r\n        var sortTitleAsc = function(a,b) {\r\n            a = $(a).data('name').toUpperCase();\r\n            b = $(b).data('name').toUpperCase();\r\n            if(a < b) {\r\n                return -1;\r\n            } else if(a > b) {\r\n                return 1;\r\n            } else {\r\n                return 0;\r\n            }\r\n        };\r\n\r\n        var sortPrizeDesc = function(a,b) {\r\n            a = parseInt($(a).data('prize'), 10);\r\n            b = parseInt($(b).data('prize'), 10);\r\n            if(a > b) {\r\n                return -1;\r\n            } else if(a < b) {\r\n                return 1;\r\n            } else {\r\n                return 0;\r\n            }\r\n        };\r\n\r\n        var sortPrizeAsc = function(a,b) {\r\n            a = parseInt($(a).data('prize'), 10);\r\n            b = parseInt($(b).data('prize'), 10);\r\n            if(a < b) {\r\n                return -1;\r\n            } else if(a > b) {\r\n                return 1;\r\n            } else {\r\n                return 0;\r\n            }\r\n        };\r\n\r\n        var sortIndexAsc = function(a,b) {\r\n            a = parseInt($(a).data('index'), 10);\r\n            b = parseInt($(b).data('index'), 10);\r\n            if(a < b) {\r\n                return -1;\r\n            } else if(a > b) {\r\n                return 1;\r\n            } else {\r\n                return 0;\r\n            }\r\n        };\r\n\r\n        switch ( orderBy ) {\r\n            case 'price_asc':\r\n                filteredResult = filteredResult.sort(sortPrizeAsc);\r\n                break;\r\n            case 'price_desc':\r\n                filteredResult = filteredResult.sort(sortPrizeDesc);\r\n                break;\r\n            case 'title_desc':\r\n                filteredResult = filteredResult.sort(sortTitleDesc);\r\n                break;\r\n            case 'title_asc':\r\n                filteredResult = filteredResult.sort(sortTitleAsc);\r\n                break;\r\n            default:\r\n                filteredResult = filteredResult.sort(sortIndexAsc);\r\n                break;\r\n        }\r\n\r\n\r\n        if (titleCard) {\r\n            titleCard.appendTo('#js-listing-holder.products');\r\n        }\r\n\r\n        $.each( filteredResult, function(pos, item) {\r\n            $( '#js-listing-holder.products' ).append( item );\r\n        } );\r\n\r\n        if( typeof window.productsMasonry !== 'undefined' ) {\r\n            // Rebuild masonry\r\n            window.productsMasonry.masonry( 'destroy' );\r\n            window.productsMasonry.masonry( {\r\n                itemSelector: '.product',\r\n                percentPosition: true,\r\n            } );\r\n        }\r\n\r\n        // Reinitialize read more link\r\n        // window.titleCardCollapse();\r\n\r\n        if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n            window.lazyLoadInstance.update();\r\n        }\r\n\r\n        // Show Product Bg\r\n        if ( $( '.bg-image' ).hasClass( 'd-none' ) ) {\r\n            $( '.bg-image' ).removeClass( 'd-none' );\r\n        }\r\n\r\n        // Remove 2nd product image for hover if in mobile view\r\n        var currentIsDesktop = matchMedia( 'screen and (min-width: 992px)' ).matches;\r\n        if (currentIsDesktop === false) {\r\n            var productImages = $( '.products .product figure img' );\r\n\r\n            if (productImages.length > 0) {\r\n                $.each( productImages, function() {\r\n                    if ($(this).hasClass( 'second-image' )) {\r\n                        $(this).parent().removeClass( 'has-second-image' );\r\n                        $(this).remove();\r\n                    }\r\n                } );\r\n            }\r\n        }\r\n\r\n        // Update hit count\r\n        if ($( searchHitCountSelector ).length) {\r\n            $.each( $( searchHitCountSelector ), function() {\r\n                $(this).text( filteredResult.length );\r\n            } );\r\n        }\r\n\r\n        // silkProductLoad( 1 );\r\n        // Reset Current Page Count upon Filter update\r\n        loadMore.data( 'currentpage', 1 );\r\n    }\r\n\r\n    function filterDataLoad () {\r\n        var ajaxUrl = $( '#silkFilterForm' ).data( 'ajaxurl' );\r\n        var currentCategory = loadMore.data( 'currentcategory' );\r\n        var currentTermId = loadMore.data( 'currentterm_id' );\r\n\r\n        if (currentCategory && currentTermId) {\r\n            ajaxUrl += '&category=' + currentCategory + '&termid=' + currentTermId;\r\n        }\r\n\r\n        if ( search ) {\r\n            ajaxUrl += '&search=' + encodeURIComponent( search );\r\n        }\r\n\r\n        if (window.user != undefined && window.user) {\r\n            ajaxUrl += '&user=' + window.user;\r\n        }\r\n\r\n        ajaxUrl = ajaxUrl.replace(/per_page=[\\d]{1,4}/,'per_page=1000');\r\n\r\n        $.ajax( {\r\n            url: ajaxUrl + '&lang=' + language,\r\n            type: 'GET',\r\n            error: function ( data, textStatus ) {\r\n                console.log( data );\r\n                console.log( textStatus );\r\n            },\r\n            success: function ( data ) {\r\n                // Sort orderBy index\r\n                var sortIndexAsc = function(a,b) {\r\n                    a = parseInt(a.index, 10);\r\n                    b = parseInt(b.index, 10);\r\n                    if(a < b) {\r\n                        return -1;\r\n                    } else if(a > b) {\r\n                        return 1;\r\n                    } else {\r\n                        return 0;\r\n                    }\r\n                };\r\n                data = data.sort(sortIndexAsc);\r\n\r\n                var html = '';\r\n                var listingHolderContent = '';\r\n\r\n                if ( $( data ).length > 0 ) {\r\n                    html = '';\r\n                    listingHolderContent = '';\r\n\r\n                    $( '.silk-spinner' ).addClass( 'd-none' );\r\n                    loadMore.addClass( 'd-none' );\r\n                    let itemCtr = 0;\r\n\r\n                    $( data ).each( function ( key, val ) {\r\n                        if (val.index == undefined || val.index === false) {\r\n                            return;\r\n                        }\r\n\r\n                        itemCtr++;\r\n\r\n                        // If first page, prepend category/collection texts\r\n                        if ( itemCtr == 1 ) {\r\n                            html += firstItem;\r\n                            listingHolderContent += firstItem;\r\n                        }\r\n\r\n                        listingHolderContent += val.product_item;\r\n\r\n                        html += val.product_item;\r\n                    } );\r\n\r\n                    allProducts = $( html ).clone();\r\n\r\n                    if ( hashQueryString != '' ) {\r\n\r\n                        silkSetFilterUsingHash();\r\n                        filterProducts();\r\n\r\n                    } else {\r\n\r\n                        // holder.html( '' );\r\n                        // holder.append( html );\r\n\r\n                        listingHolder.html( '' );\r\n                        listingHolder.append( listingHolderContent );\r\n\r\n                        // Rebuild masonry\r\n                        if( typeof window.productsMasonry !== 'undefined' ) {\r\n                            window.productsMasonry.masonry( 'destroy' );\r\n                            window.productsMasonry.masonry( {\r\n                                itemSelector: '.product',\r\n                                percentPosition: true,\r\n                            } );\r\n                            window.productsMasonry.masonry('reloadItems');\r\n                        }\r\n\r\n                        // Reinitialize read more link\r\n                        // window.titleCardCollapse();\r\n\r\n                        if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n                            window.lazyLoadInstance.update();\r\n                        }\r\n\r\n                        FilterUpdater.update();\r\n                        Filter.dropdownUpdate();\r\n\r\n                        // Update hit count\r\n                        if ($( searchHitCountSelector ).length) {\r\n                            $.each( $( searchHitCountSelector ), function() {\r\n                                $(this).html( $( data ).length );\r\n                            } );\r\n                        }\r\n\r\n                        // Show Product Bg\r\n                        if ( $( '.bg-image' ).hasClass( 'd-none' ) ) {\r\n                            $( '.bg-image' ).removeClass( 'd-none' );\r\n                        }\r\n                    }\r\n\r\n                } else {\r\n                    holder.html( '<p>' + holder.data( 'alt' ) + '</p>' );\r\n                }\r\n\r\n\r\n            },\r\n        } );\r\n    }\r\n\r\n    function silkProductLoad ( nextPage ) {\r\n        // this will set selected filter\r\n        silkSetFilterUsingHash();\r\n\r\n        var ajaxUrl = $( '#silkFilterForm' ).data( 'ajaxurl' );\r\n        var currentCategory = loadMore.data( 'currentcategory' );\r\n        var currentTermId = loadMore.data( 'currentterm_id' );\r\n        var hashQueryString = window.location.hash;\r\n        var lastScrollPosition;\r\n        hashQueryString = hashQueryString.replace( '#', '&' );\r\n\r\n        if ( hashQueryString != '' ) {\r\n            ajaxUrl = ajaxUrl + hashQueryString;\r\n        } else {\r\n            ajaxUrl = ajaxUrl + '&category=' + currentCategory + '&termid=' + currentTermId;\r\n        }\r\n\r\n        // console.log( ajaxUrl + '&page=' + nextPage );\r\n\r\n        if ( search ) {\r\n            ajaxUrl += '&search=' + encodeURIComponent( search );\r\n        }\r\n\r\n        $.ajax( {\r\n            url: ajaxUrl + '&page=' + nextPage + '&lang=' + language,\r\n            type: 'GET',\r\n            beforeSend: function () {\r\n                loadMore.addClass( 'd-none' );\r\n                $( '.silk-spinner' ).removeClass( 'd-none' );\r\n                lastScrollPosition = jQuery( window ).scrollTop();\r\n            },\r\n            error: function ( data, textStatus ) {\r\n                // console.log( data );\r\n                console.log( textStatus );\r\n            },\r\n            success: function ( data, textStatus, jqXHR ) {\r\n                if ( data ) {\r\n                    loadMore.removeClass( 'd-none' );\r\n                    $( '.silk-spinner' ).addClass( 'd-none' );\r\n\r\n                    // Need to clear list if filter is trigger\r\n                    if ( nextPage == 1 ) {\r\n                        holder.html( '' );\r\n                    }\r\n\r\n                    if ( $( data ).length > 0 ) {\r\n                        var html = '';\r\n\r\n                        $( data ).each( function ( key, val ) {\r\n                            // If first page, prepend category/collection texts\r\n                            if ( nextPage === 1 && key == 0 ) {\r\n                                html += firstItem;\r\n                            }\r\n\r\n                            html += val.product_item;\r\n                        } );\r\n\r\n                        holder.append( html );\r\n\r\n                        // Rebuild masonry\r\n                        window.productsMasonry.masonry( 'destroy' );\r\n                        window.productsMasonry.masonry( {\r\n                            itemSelector: '.product',\r\n                            percentPosition: true,\r\n                        } );\r\n\r\n                        // Reinitialize read more link\r\n                        // window.titleCardCollapse();\r\n\r\n                        if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n                            window.lazyLoadInstance.update();\r\n                        }\r\n\r\n                        // Show Product Bg\r\n                        if ( $( '.bg-image' ).hasClass( 'd-none' ) ) {\r\n                            $( '.bg-image' ).removeClass( 'd-none' );\r\n                        }\r\n                    } else {\r\n                        holder.html( '<p>' + holder.data( 'alt' ) + '</p>' );\r\n                    }\r\n\r\n                    var totalPage = parseInt( jqXHR.getResponseHeader( 'X-WP-TotalPages' ), 10 );\r\n                    if ( loadMore.data( 'currentpage' ) == totalPage || data.length == 0 )\r\n                        loadMore.addClass( 'd-none' ); // if last page, remove the button\r\n                } else {\r\n                    loadMore.addClass( 'd-none' ); // if no data, remove the button as well\r\n                }\r\n\r\n                jQuery( window ).scrollTop( lastScrollPosition );\r\n            },\r\n        } );\r\n    }\r\n\r\n    function silkSetFilterUsingHash () {\r\n        var hash = window.location.hash;\r\n        hash = hash.replace( '#', '' );\r\n        var hashArr = hash.split( '&' );\r\n        if ( hashArr.length > 0 ) {\r\n            $( hashArr ).each( function ( key, queryItem ) {\r\n                var queryItemArr = queryItem.split( '=' );\r\n                // console.log(queryItemArr);\r\n                if ( queryItemArr.length > 0 ) {\r\n                    $( queryItemArr ).each( function ( queryItemKey, queryItemValue ) {\r\n                        var queryItemValueArr = queryItemValue.split( ',' );\r\n\r\n                        if ( queryItemValue.indexOf( '|' ) !== -1 ) {\r\n                            queryItemValueArr = queryItemValue.split( '|' );\r\n                        }\r\n\r\n                        if ( queryItemValueArr.length > 0 ) {\r\n                            $( queryItemValueArr ).each( function ( queryItemSelectedKey, queryItemSelectedValue ) {\r\n                                if ( queryItemSelectedValue != '' ) {\r\n                                    var inputName = queryItemArr[0];\r\n                                    // console.log(inputName+' '+queryItemSelectedValue);\r\n                                    if ( inputName == 'orderBy' ) {\r\n                                        var currentSortField = $( 'a[data-value=' + queryItemSelectedValue + ']' );\r\n                                        $( '.silk-hash-orderby.active' ).removeClass( 'active' );\r\n                                        currentSortField.addClass( 'active' );\r\n                                        currentSort.text( currentSortField.text() );\r\n                                    } else {\r\n                                        $( 'input[name=\"' + inputName + '\"]:checkbox[value=\"' + queryItemSelectedValue + '\"]' ).prop( 'checked', 'true' );\r\n                                    }\r\n                                }\r\n                            } );\r\n                        }\r\n                    } );\r\n                }\r\n            } );\r\n        }\r\n    }\r\n\r\n\r\n    var h1Desktop = document.getElementById( 'js-desktop-h1' ),\r\n        h1Mobile = document.getElementById( 'js-mobile-h1' ),\r\n        isDesktop = true,\r\n        timeOut = false;\r\n\r\n    if ( !h1Desktop || !h1Mobile ) {\r\n        return;\r\n    }\r\n\r\n    var checkH1 = function () {\r\n        var currentIsDesktop = matchMedia( 'screen and (min-width: 992px)' ).matches;\r\n\r\n        if ( isDesktop !== currentIsDesktop ) {\r\n            $( '.js-dynamic-title' ).remove();\r\n\r\n            if ( currentIsDesktop ) {\r\n                $( h1Desktop ).after( unescape( h1Desktop.innerText ) );\r\n            } else {\r\n                $( h1Mobile ).after( unescape( h1Mobile.innerText ) );\r\n            }\r\n        }\r\n\r\n        isDesktop = currentIsDesktop;\r\n    };\r\n\r\n    checkH1();\r\n    $( window ).resize( function () {\r\n        if ( timeOut ) {\r\n            clearTimeout( timeOut );\r\n        }\r\n\r\n        timeOut = setTimeout( function () {\r\n            checkH1();\r\n        }, 100 );\r\n    } );\r\n\r\n    //console.log( matchMedia( 'screen and (min-width: 992px)' ).matches );\r\n} )( jQuery );\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/category.js","// Accordion first child\r\n$('.js-selected-product-accordion .list-group-item:eq(0) .collapse').addClass(\r\n  'show'\r\n);\r\n$('.js-selected-product-accordion .list-group-item:eq(0) .header').removeClass(\r\n  'collapsed'\r\n);\r\n\r\n$('#js-try-again').on('click', function (e) {\r\n  e.preventDefault();\r\n  $('#js-size-helper-result').addClass('d-none');\r\n  $('#js-size-helper-main').removeClass('d-none');\r\n});\r\n\r\n$(document).on('click', '.js-size-guide-helper', function (e) {\r\n  e.preventDefault();\r\n  let navHeight = $('.js-header').height();\r\n  let spacing;\r\n  if ($('body').hasClass('admin-bar')) {\r\n    spacing = navHeight + 32;\r\n  } else {\r\n    spacing = navHeight;\r\n  }\r\n  $('html, body').animate(\r\n    {\r\n      scrollTop: $('#js-size-helper').offset().top - spacing,\r\n    },\r\n    1000\r\n  );\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/product-selected.js","/* eslint-disable no-unused-vars */\r\nimport { stokpress } from '../util/helper';\r\n// var StellarAccordion = require( '../components/accordion' );\r\n/* eslint-disable no-undef */\r\n\r\nconst Product = {};\r\n\r\nlet productSectionsContainer = document.getElementById( 'js-selected-product-sections' ),\r\n    productInfoContainer = document.getElementById( 'js-selected-product-info' ),\r\n    productSwitchSelector = 'js-change-product',\r\n    productSizeSelector = 'js-change-size',\r\n    productNotifySize = 'js-notify-size',\r\n    productSizeDisabled = 'disabled',\r\n    ajaxRequestEnable = true;\r\n\r\nProduct.processChangeProduct = (el) => {\r\n    let url = Product.ajaxUrl + el.dataset.id;\r\n\r\n    if (Product.currentLang) {\r\n        url = url + '?lang=' + Product.currentLang;\r\n    }\r\n\r\n    Product.processRequest( 'GET', url, el.dataset.url );\r\n}\r\n\r\nProduct.processRequest = (action, url, targetUrl) => {\r\n\r\n    // To avoid double send of ajax request\r\n    if( !ajaxRequestEnable ) {\r\n        return;\r\n    }\r\n\r\n    let xhr = new XMLHttpRequest();\r\n\r\n    ajaxRequestEnable = false;\r\n\r\n\txhr.onreadystatechange = function () {\r\n\t\tif ( xhr.readyState !== XMLHttpRequest.DONE ) { return; }\r\n\r\n\t\tif ( xhr.status === 200 ) {\r\n\t\t\ttry {\r\n                let data = JSON.parse( xhr.response );\r\n\r\n                Product.outputResult( data, targetUrl );\r\n                ajaxRequestEnable = true;\r\n\t\t\t}\r\n\t\t\tcatch ( err ) {\r\n                console.log( err );\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t};\r\n\r\n    xhr.open( action, url, true );\r\n    xhr.setRequestHeader( 'X-Requested-With', 'XMLHttpRequest' );\r\n    xhr.send();\r\n}\r\n\r\nProduct.outputResult = (data, targetUrl) => {\r\n    if( !data.product ) {\r\n        return;\r\n    }\r\n\r\n    window.history.pushState( data, '', targetUrl );\r\n    Product.updateHtml( data );\r\n}\r\n\r\nProduct.updateHtml = (data) => {\r\n    productInfoContainer.innerHTML = data.product.info;\r\n    productSectionsContainer.innerHTML = data.product.sections;\r\n\r\n    if (data.product.current_color.name) {\r\n        $( 'title' ).html( data.product.current_color.name );\r\n    }\r\n\r\n    var finePrint = $( '#js-main-nav-msg.fine-print' );\r\n\tvar cartButton = $( '.js-btn-cart-bg' );\r\n\r\n    if(finePrint.length > 0) {\r\n        finePrint.attr('data-bg', data.product.current_color.hex || '');\r\n        finePrint.removeClass('is-light').addClass(data.product.current_color.bgClass || '');\r\n\t\tfinePrint.attr('style',  '--dynamic-bg:'+ (data.product.current_color.hex || 'var(--primary)'));\r\n\r\n        var lightIcon = finePrint.find('.icon-light');\r\n        var darkIcon = finePrint.find('.icon-dark');\r\n\r\n        if (data.product.current_color.bgClass === 'is-light') {\r\n            if (lightIcon.length) lightIcon.addClass('d-none');\r\n            if (darkIcon.length) darkIcon.removeClass('d-none');\r\n        } else {\r\n            if (lightIcon.length) lightIcon.removeClass('d-none');\r\n            if (darkIcon.length) darkIcon.addClass('d-none');\r\n        }\r\n\t} \r\n\r\n\tif(cartButton.length > 0) {\r\n\t\tcartButton.attr('style',  '--dynamic-bg:'+ (data.product.current_color.hex || 'var(--primary)'));\r\n\t} \r\n    \r\n    Product.init( true );\r\n}\r\n\r\nProduct.changeProduct = (items) => {\r\n    if (!items) {\r\n        return;\r\n    }\r\n\r\n    Array.prototype.forEach.call( items, function (item) {\r\n\t\titem.addEventListener( 'click', function () {\r\n            let input = this.querySelector('input');\r\n            if (input && this.dataset.type !== 'heel') {\r\n                input.checked = false;\r\n            }\r\n\r\n            Product.processChangeProduct(item);\r\n\t\t});\r\n\t} );\r\n}\r\n\r\nProduct.changeSize = (items) => {\r\n    if (!items) {\r\n        return;\r\n    }\r\n    \r\n    Array.prototype.forEach.call( items, function (item) {\r\n\t\titem.addEventListener( 'change', function () {\r\n            let input = this.querySelector('input'),\r\n                parent = stokpress.findAncestor(input, 'js-selectProductSingle'),\r\n                button = parent ? parent.querySelector('button[type=\"submit\"]') : null,\r\n                inputWrap = input.parentNode.parentNode,\r\n                sizesWrap = stokpress.findAncestor( input, 'js-dropdown' );\r\n\r\n            if (button) {\r\n                var button_text = button.querySelector('.js-button-text');\r\n\r\n                if (sizesWrap) $(sizesWrap).find('.js-selected-label').removeClass('is-active');\r\n\r\n                if (input.classList.contains(productSizeDisabled)) {\r\n                    button_text.innerHTML = button.dataset.soldout || 'Soldout';  \r\n                    button.setAttribute('disabled', true);\r\n                    \r\n                    const target = input.dataset.target;\r\n\r\n\t\t\t\t\tif (target) {\r\n                        let sizeName =  input.getAttribute('data-product-name'),\r\n                        itemId =  input.getAttribute('data-product-item');\r\n                        console.log(sizeName, itemId);\r\n            \r\n                        $(target).find('#notify-size-name').html(sizeName);\r\n                        $(target).find('#no-size-item-value').val( itemId );\r\n\t\t\t\t\t}\r\n                } else {\r\n                    button_text.innerHTML = button.dataset.text || 'Add to cart';\r\n                    button.removeAttribute('disabled');\r\n                    \r\n                    if (inputWrap) $(inputWrap).addClass('is-active'); \r\n                }\r\n            }\r\n\t\t});\r\n\t} );\r\n}\r\n\r\n\r\n// Product.notifySize = (items) => {\r\n//     if (!items) {\r\n//         return;\r\n//     }\r\n\r\n//     Array.prototype.forEach.call( items, function (item) {\r\n// \t\titem.addEventListener( 'click', function () {\r\n//             let sizeName =  item.getAttribute('data-product-name'),\r\n//             itemId =  item.getAttribute('data-product-item');\r\n\r\n//             $('#notify-size-name').html(sizeName);\r\n//             $('#no-size-item-value').val( itemId )\r\n// \t\t});\r\n// \t} );\r\n\r\n// }\r\n\r\n\r\nProduct.init = (reinit) => {\r\n    if (!productInfoContainer || !productSectionsContainer) {\r\n        return;\r\n    }\r\n\r\n    Product.ajaxUrl = productInfoContainer.dataset.url;\r\n    Product.currentLang = productInfoContainer.dataset.lang;\r\n    Product.changeProduct( productInfoContainer.getElementsByClassName(productSwitchSelector) );\r\n    Product.changeSize( productInfoContainer.getElementsByClassName(productSizeSelector) );\r\n    // Product.notifySize( productInfoContainer.getElementsByClassName(productNotifySize) );\r\n\r\n    if ( reinit ) {\r\n        // $('.js-plus-item').plusItem();\r\n        if ($('.js-plus-item').length) {\r\n            $.each($('.js-plus-item'), function (i, el) {\r\n                $(el).plusItem();\r\n              });\r\n        } \r\n        if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n            window.lazyLoadInstance.update();            \r\n        }\r\n\r\n        window.BackgroundSwicher.refresh();\r\n        window.ProductSelectedSlider.init();\r\n        window.TrustbarSlider.init();        \r\n        window.ProductSlider.init();\r\n        window.FeatureSlider.init();\r\n        window.Video.init();\r\n        window.Cart.init();\r\n        window.ProductOptionsTabSlider.init();\r\n        window.Newsletter.init( '.js-newsletter', '#js-newsletter-modal' );\r\n        \r\n        var api = new Yotpo.API(yotpo);\r\n\t\tapi.refreshWidgets();\r\n    }\r\n}\r\n\r\ndocument.addEventListener( 'DOMContentLoaded', function () {\r\n\tProduct.init(false);\r\n\r\n\tif ( typeof history.pushState !== 'undefined' ) {\r\n\t\tif ( Product.productColors ) {\r\n\r\n\t\t\tlet initialColorData = {};\r\n            initialColorData.product = {};\r\n            initialColorData.product.info = productInfoContainer.innerHTML;\r\n            initialColorData.product.sections = productSectionsContainer.innerHTML;\r\n\r\n            window.history.replaceState( initialColorData, '', location.pathname );\r\n\t\t}\r\n\r\n\t\twindow.addEventListener( 'popstate', function ( e ) {\r\n            let data = e.state;\r\n\r\n\t\t\tif ( data && typeof data === 'object' ) {\r\n\r\n                setTimeout( function(){\r\n                    Product.updateHtml( data );\r\n                }, 500 );\r\n\t\t\t} else {\r\n\t\t\t\t// Product not loaded\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\nwindow.Product = Product;\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/product.js","/* eslint-disable no-unused-vars */\r\n\r\nimport { stokpress, stokpressViewPort } from '../util/helper';\r\n/* eslint-disable no-undef */\r\n\r\nvar Cart = {};\r\n\r\n(function ($) {\r\n    var cartForm = '.js-selectProductSingle';\r\n    var navCart = '.js-cart-overlay';\r\n    var removeItem = '.js-cart-remove-item';\r\n    var cartItemCount = $('.js-item-count');\r\n    var cartItems = $('.js-cart-items');\r\n    var formButtonSelector = 'button[type=\"submit\"]';\r\n    // var cartNavButton = $('.navbar-cart-button');\r\n    var buttonText = '.js-button-text';\r\n    var singlePageScope = $('body.single');\r\n    var cartAjaxRequestEnable = true;\r\n\r\n    Cart.ajaxCall = function (type, data, url, button) {\r\n        // To avoid double send of ajax request\r\n        if (!cartAjaxRequestEnable) {\r\n            return;\r\n        }\r\n\r\n        $.ajax({\r\n            url: url,\r\n            data: data,\r\n            type: type,\r\n            dataType: 'json',\r\n            beforeSend: function () {\r\n                cartAjaxRequestEnable = false;\r\n\r\n                if (button && button.length > 0) {\r\n                    button.attr('disabled', 'disabled');\r\n                    button.addClass('is-loading');\r\n                }\r\n            },\r\n            success: function (result) {\r\n\r\n                // Update cart item count\r\n                if (cartItemCount) {\r\n                    cartItemCount.each( function () {\r\n                        $(this).text(result.totalItems);\r\n\r\n                        // Hide / Show Cart count\r\n                        if (!result.totalItems) {\r\n                            $(this).addClass( 'd-none' );\r\n                            cartItems.addClass( 'no-item' );\r\n                        } else {\r\n                            $(this).removeClass( 'd-none' );\r\n                            cartItems.removeClass( 'no-item' );\r\n                        }                         \r\n                    });                   \r\n                }\r\n\r\n                if (result.basket) {\r\n                    cartItems.html(result.basket);\r\n                    Cart.toggleCart( 'open' );\r\n                }\r\n            },\r\n            complete: function () {\r\n                setTimeout(function () {\r\n                    Cart.toggleCart( 'close' );\r\n\r\n                    if (button && button.length > 0) {\r\n                        button.removeAttr('disabled');\r\n                        button.removeClass('is-loading');\r\n                    }\r\n\r\n                    cartAjaxRequestEnable = true;\r\n                }, 1500);\r\n\r\n                // Re initialize element events\r\n                Cart.init();                \r\n            },\r\n            error: function (request) {\r\n                console.debug(request);\r\n            },\r\n        });\r\n    };\r\n\r\n    Cart.toggleCart = function(action) {\r\n        var cartContainer = $(navCart);\r\n        var body = $('body');\r\n\r\n        if (!cartContainer) { return; }\r\n\r\n        if (action==='open') {\r\n\r\n            cartContainer.addClass( 'is-open' );\r\n            body.addClass( 'cart-overlay' );  \r\n            \r\n        } else if(action==='close') {\r\n\r\n            cartContainer.removeClass( 'is-open' );\r\n            body.removeClass( 'cart-overlay' ); \r\n\r\n        }\r\n\r\n    };\r\n\r\n    Cart.add = function (_this) {\r\n        var buttonEl = _this.find( formButtonSelector );\r\n\r\n        if (_this.find('input[name=\"esc_product_item\"]:checked').length > 0 || _this.find('select[name=\"esc_product_item\"]').val()) {\r\n            var data = _this.serialize();\r\n\r\n            Cart.ajaxCall( 'POST', data, null, buttonEl );\r\n\r\n        } else {\r\n            // Display error in button\r\n            Cart.updateButtonText( 'error', buttonEl );\r\n\r\n            var isMobile = stokpress.isMobile() || stokpressViewPort.documentWidth().width < 720;\r\n            var navHeight = $('nav').height();\r\n            var scrollToPos = 0;\r\n\r\n            // Scroll to sizes\r\n            if (isMobile) { \r\n                scrollToPos = Math.abs(document.documentElement.clientHeight - buttonEl.offset().top - (buttonEl.height() + navHeight));\r\n            }\r\n\r\n            // Scroll to size error if current page is single page\r\n            if (singlePageScope.length) {\r\n                $('html, body').animate({\r\n                    scrollTop: scrollToPos,\r\n                }, 1000);\r\n            }\r\n        }\r\n    };\r\n\r\n    Cart.updateButtonText = function( dataAttr, buttonEl ) {\r\n        if (!buttonEl) { return; }\r\n\r\n        var textVal = buttonEl.data( dataAttr );\r\n        var buttonTextEl = buttonEl.find( buttonText );\r\n\r\n        if (buttonTextEl) {\r\n            buttonTextEl.text(textVal);\r\n        }        \r\n    };\r\n\r\n    Cart.init = function () {\r\n\r\n        // Add to bag\r\n        $(document).find( cartForm ).off( 'submit' ).on( 'submit', function(e) {\r\n            e.preventDefault();\r\n            Cart.add( $(this) );\r\n        });\r\n\r\n        // Remove product\r\n        $(document).find( removeItem ).off( 'click' ).on( 'click', function (e) {\r\n            e.preventDefault();\r\n            var _this = $(this);\r\n            Cart.ajaxCall( 'GET', null, _this.attr('href'), null );\r\n        });\r\n\r\n        // Has size selected\r\n        $(document).find( 'input[name=\"esc_product_item\"], select[name=\"esc_product_item\"]' ).off( 'change' ).on( 'change', function (e) {\r\n            e.preventDefault();\r\n            Cart.updateButtonText( 'text', $( cartForm ).find( formButtonSelector ) );\r\n        });\r\n\r\n    };\r\n\r\n    Cart.init();\r\n\r\n})(jQuery);\r\n\r\nwindow.Cart = Cart;\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/cart.js","let Search = {};\r\nrequire('../util/autoPadding');\r\n\r\n\r\nSearch.iOSfocusAndOpenKeyboard = function (el, timeout) {\r\n  if(!timeout) {\r\n    timeout = 100;\r\n   }\r\n\r\n   if(el) {\r\n    // Align temp input element approximately where the input element is\r\n    // so the cursor doesn't jump around\r\n    var __tempEl__ = document.createElement('input');\r\n    __tempEl__.style.position = 'absolute';\r\n    __tempEl__.style.top = (el.offsetTop + 7) + 'px';\r\n    __tempEl__.style.left = el.offsetLeft + 'px';\r\n    __tempEl__.style.height = 0;\r\n    __tempEl__.style.opacity = 0;\r\n    // Put this temp element as a child of the page <body> and focus on it\r\n    document.body.appendChild(__tempEl__);\r\n    __tempEl__.focus();\r\n    // The keyboard is open. Now do a delayed focus on the target element\r\n    setTimeout(function() {\r\n     el.focus();\r\n     el.click();\r\n     // Remove the temp element\r\n     document.body.removeChild(__tempEl__);\r\n    }, timeout);\r\n   }\r\n}\r\n\r\nSearch.headerAdjustment = function () {\r\n  if (matchMedia('screen and (min-width: 1024px)').matches) {\r\n    if ($('#js-nav-menu').hasClass('headroom--top')) {\r\n      $('body').addClass('nav-is-adjust');\r\n      setTimeout(function () {\r\n        if ($('body').hasClass('nav-is-transparent')) {\r\n          $('body').autoPadding({\r\n            source: $('#js-main-nav-msg'),\r\n          });\r\n        } else {\r\n          $('body').autoPadding({\r\n            source: $('.js-header'),\r\n          });\r\n        }\r\n      }, 500);\r\n    }\r\n  }\r\n};\r\n\r\nSearch.search = function () {\r\n  let searchOpen = $('.js-search-open');\r\n  let searchClose = $('.js-search-close');\r\n  let searchForm = $('.js-search-form');\r\n\r\n  searchOpen.on('click', function () {\r\n    searchForm.addClass('show');\r\n    $('body').addClass('search-active');\r\n\r\n    let targetEl = $($(this).data('focus'));\r\n\r\n    if (targetEl) {\r\n      setTimeout(function () {\r\n        targetEl.focus();\r\n      }, 100);\r\n    }\r\n\r\n    Search.headerAdjustment();\r\n\r\n    if($('body').hasClass('isApple') && $('body').hasClass('iphone')) {\r\n      Search.iOSfocusAndOpenKeyboard('#js-search-input', 300);\r\n    }\r\n\r\n  });\r\n\r\n  searchClose.click(function () {\r\n    searchForm.removeClass('show');\r\n    $('body').removeClass('search-active');\r\n    Search.headerAdjustment();\r\n  });\r\n}\r\n\r\nSearch.sizeSearch = function() {\r\n  let searchSizeBtn = $('#search_size_btn');\r\n  let tryAgain = $('#js-try-again');\r\n\r\n  searchSizeBtn.click(function () {\r\n    searchSize();\r\n  });\r\n\r\n  $('#size_input').keypress(function (event) {\r\n    if (event.keyCode == 13) {\r\n      //EnterKey\r\n      event.preventDefault();\r\n      searchSize();\r\n    }\r\n  });\r\n\r\n  tryAgain.click(function () {\r\n    $('#js-size-helper-recommended-size').html('');\r\n    $('#js-size-helper-guide').html('');\r\n    $('#js-size-helper-main').removeClass('d-none');\r\n    $('#js-size-helper-result').addClass('d-none');\r\n  });\r\n\r\n  function searchSize() {\r\n    let product_id = $('#search_product_id').val();\r\n    let sizeInput = $('#size_input').val();\r\n\r\n    //Update all HTML\r\n    $.ajax({\r\n      url: window.ajaxURL,\r\n      data: {\r\n        action: 'search_product_size',\r\n        product_id: product_id,\r\n        size: sizeInput,\r\n      },\r\n      type: 'POST',\r\n      dataType: 'JSON',\r\n      beforeSend: function () {\r\n        $('#js-error-feedback').html('');\r\n        $('#js-error-feedback').addClass('d-none');\r\n      },\r\n      success: function (data) {\r\n        if (data.status) {\r\n          var helperRecomendDiv = document.getElementById(\r\n            'js-size-helper-recommended-size'\r\n          );\r\n          helperRecomendDiv.innerHTML += data.rec_title;\r\n\r\n          var helperDiv = document.getElementById('js-size-helper-guide');\r\n          helperDiv.innerHTML += data.rec_msg;\r\n\r\n          $('#js-size-helper-main').addClass('d-none');\r\n          $('#js-size-helper-result').removeClass('d-none');\r\n          $('#size_input').removeClass('is-invalid');\r\n        } else {\r\n          var errorDiv = document.getElementById('js-error-feedback');\r\n          var parentDiv = $('#size_input').parent();\r\n          errorDiv.innerHTML += data.error_msg;\r\n          parentDiv.addClass('is-invalid');\r\n          $('#js-error-feedback').removeClass('d-none');\r\n        }\r\n      },\r\n    });\r\n  }\r\n}\r\n\r\nSearch.init = function () {\r\n  Search.search();\r\n  Search.sizeSearch();\r\n};\r\n\r\nSearch.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/search.js","// import StickySidebar from 'sticky-sidebar';\r\nimport StickySidebar from 'sticky-sidebar/dist/sticky-sidebar';\r\n\r\n(function($) {\r\n    var Checkout = {};\r\n\r\n    var editProduct = '.js-edit-item';\r\n    var cartContainer = $(document).find( '#js-selectedItems' );\r\n    var selectedItemsContainer = $(document).find( '#js-selectedItems--selection' );\r\n    var selectedTotalsContainer = $(document).find( '#js-selectedTotals' );\r\n    var voucherContainer = $(document).find('#js-selectedVoucher');\r\n    var paymentMethodContainer = $(document).find( '#js-selectedPaymentMethod' );\r\n    var newsletterContainer = $(document).find( '#js-selectedNewsletter' );\r\n    var giftContainer = $(document).find( '#js-selectedGiftwrap' );\r\n    var paymentFieldsContainer = $(document).find( '#js-paymentFields' );\r\n    var commentContainer = $(document).find('#js-selectedComment');\r\n    var shippingMethodContainer = $(document).find( '#js-selectedShippingMethod' );\r\n    var scope = $(document).find( '#js-checkout-content' );\r\n    var totalDesktop = $(document).find( '#js-checkout-sidebar' );\r\n    var totalMobile = $(document).find( '#js-checkout-sidebar-mobile' );\r\n    var abandonCartEmailSession = document.getElementById( 'js-abandon-cart-email-session' );\r\n    var isDesktop;\r\n\r\n\r\n\tCheckout.init = function() {\r\n        isDesktop = true;\r\n        Checkout.moveTotalSummaryContent();\r\n\r\n        // Payment form submit\r\n        var checkoutFormPurchase = $(document).find( '.template-checkout #esc_purchase' );\r\n        if (checkoutFormPurchase) {\r\n            checkoutFormPurchase.off( 'submit' ).on( 'submit', function () {\r\n                var hasError = Checkout.processPaymentFormValidation();\r\n\r\n                if (hasError === false) {\r\n                    return hasError;\r\n                }\r\n            });\r\n        }       \r\n\r\n        // Payment form input fields\r\n        var checkoutFormFields = paymentFieldsContainer.find( 'input' );\r\n        if (checkoutFormFields) {\r\n            checkoutFormFields.off( 'focus' ).on( 'focus', function () {\r\n                $(this).removeClass( 'is-invalid' );\r\n            });\r\n        }\r\n\r\n        // Add/Remove product\r\n        if ($(document).find( editProduct )) {\r\n            $(document).find( editProduct ).off( 'click' ).on( 'click', function (e) {\r\n                e.preventDefault();\r\n                Checkout.processItems( $(this) );\r\n            });\r\n        }\r\n\r\n        // Voucher\r\n        var voucherField = $(document).find( '#js-selectedVoucher #voucher' );\r\n        if (voucherField) {\r\n            voucherField.off( 'keydown' ).on( 'keydown', function(e) {\r\n                if (e.keyCode !== 13) { return; }\r\n\r\n                e.preventDefault();\r\n                Checkout.voucherProcess( $(this).parent().next() );\r\n            });\r\n        }\r\n\r\n        var voucherButton = $(document).find( '#js-selectedVoucher .js-voucher-button' );\r\n        if (voucherButton) {\r\n            voucherButton.off( 'click' ).on( 'click', function(e) {\r\n                e.preventDefault();\r\n                Checkout.voucherProcess( $(this) );\r\n            });\r\n        }\r\n\r\n        // Newsletter\r\n        if (newsletterContainer.find( ':checkbox' )) {\r\n            newsletterContainer.find( ':checkbox' ).off( 'change' ).on( 'change', function(e) {\r\n                e.preventDefault();\r\n                Checkout.processNewsletter( 'click' );\r\n            });\r\n        }\r\n\r\n        // Gift\r\n        if (giftContainer.find( ':checkbox' )) {\r\n            giftContainer.find( ':checkbox' ).off( 'change' ).on( 'change', function(e) {\r\n                e.preventDefault();\r\n                Checkout.processComment( 'click' );\r\n            });\r\n        }\r\n\r\n        // Comment\r\n        if (commentContainer.find( 'textarea' )) {\r\n            commentContainer.find( 'textarea' ).off( 'blur' ).on( 'blur', function(e) {\r\n                e.preventDefault();\r\n                Checkout.processComment( 'click' );\r\n            });\r\n        }\r\n\r\n        // Payment Method\r\n        var paymentOptions = $(document).find('#js-selectedPaymentMethod :radio');\r\n        if (paymentOptions) {\r\n            paymentOptions.off( 'change' ).on( 'change', function(e) {\r\n                e.preventDefault();\r\n                Checkout.processPaymentMethod( paymentMethodContainer );\r\n            });\r\n        }\r\n\r\n        // Shipping Method\r\n        var shippingOptions = $(document).find('#js-selectedShippingMethod :radio');\r\n        if (shippingOptions) {\r\n            shippingOptions.off( 'change' ).on( 'change', function(e) {\r\n                e.preventDefault();\r\n                Checkout.processShippingMethod( shippingMethodContainer );\r\n            });\r\n        }\r\n\r\n        // Country\r\n        var countryOptions = $(document).find( '#js-selectedCountry .js-country-item' );\r\n        if (countryOptions) {\r\n            countryOptions.off( 'click' ).on( 'click', function(e) {\r\n                e.preventDefault();                \r\n                Checkout.countryChangeProcess( this.dataset.code, '', false );\r\n            } );\r\n        }\r\n\r\n        // State\r\n        var stateOptions = $(document).find( '#js-selectedState .js-state-item' );\r\n        if (stateOptions) {\r\n            stateOptions.off( 'click' ).on( 'click', function(e) {\r\n                e.preventDefault();                \r\n                //Checkout.countryChangeProcess( $(document).find( '#js-selectedCountry .js-country-item.active' )[0].dataset.code, this.dataset.code, false );\r\n                Checkout.stateChangeProcess(this.dataset.code);\r\n            } );\r\n        }       \r\n\r\n\r\n\r\n        // Catch Klarna form updates\r\n    let interval = setInterval( () => {\r\n        // console.log( 'waiting for window._klarnaCheckout...' );\r\n        // console.log(typeof window._klarnaCheckout);\r\n        if ( typeof window._klarnaCheckout === 'undefined' ) {\r\n          return;\r\n        }\r\n  \r\n        clearInterval( interval );\r\n  \r\n        window._klarnaCheckout( function ( api ) {\r\n          api.on( {\r\n            'shipping_address_change': function ( data ) {\r\n              // console.log( 'shipping_address_change' );\r\n            //   console.log( data.email );\r\n  \r\n              let zipCode = ( data.hasOwnProperty( 'postal_code' ) && data.postal_code ) ? data.postal_code : null;\r\n  \r\n              if ( zipCode ) {\r\n                $( '#js-zip-code' ).val( zipCode ).trigger( 'change' );\r\n              }\r\n              console.log(data.hasOwnProperty( 'email' ));\r\n              if ( data.hasOwnProperty( 'email' ) && data.email ) {\r\n                $.ajax( {\r\n                  url: '/wp-admin/admin-ajax.php',\r\n                  dataType: 'JSON',\r\n                  type: 'POST',\r\n                  data: {\r\n                    action: 'update_cart_abandonment',\r\n                    email: data.email,\r\n                    zip_code: zipCode,\r\n                  },\r\n                  error: function ( request ) {\r\n                    console.debug( request );\r\n                  },\r\n                } );\r\n              }\r\n            },\r\n          } );\r\n        } );\r\n      }, 1000 );\r\n    };\r\n\r\n    Checkout.moveTotalSummaryContent = function() {\r\n        if ( !totalDesktop || !totalMobile ) {\r\n            return;\r\n        }\r\n\r\n        var currentIsDesktop = matchMedia( 'screen and (min-width: 1024px)' ).matches;\r\n        var appendContent = function(from, to) {\r\n            var content = from.children();\r\n\r\n            if (content) {\r\n                content.detach().appendTo( to );\r\n            }\r\n        };\r\n        \r\n        if ( isDesktop !== currentIsDesktop ) {\r\n            if (currentIsDesktop) {\r\n                appendContent( totalMobile, totalDesktop );\r\n            } else {\r\n                appendContent( totalDesktop, totalMobile );\r\n            }\r\n        }\r\n\r\n        isDesktop = currentIsDesktop;\r\n    };   \r\n\r\n\tCheckout.updateHtml = function( data ) {\r\n        console.log('reinit payments');\r\n\r\n        if (data.totalItems === 0) {\r\n\r\n            window.location.href = location.pathname;\r\n\r\n        } else {\r\n\r\n            paymentMethodContainer.html( data.paymentOptions );\r\n            shippingMethodContainer.html( data.shippingOptions );\r\n            paymentFieldsContainer.html( data.payments );\r\n            cartContainer.html( data.basket );\r\n            selectedItemsContainer.html( data.items );\r\n            selectedTotalsContainer.html( data.totals );\r\n            voucherContainer.html( data.voucher );\r\n            Checkout.init();\r\n\r\n        }\r\n\r\n        Checkout.showLoader( false );\r\n    };\r\n\r\n    Checkout.showLoader = function( showLoader ) {\r\n        var loader = $(document).find('.js-loader');\r\n        var hiddenClass = 'd-none';\r\n\r\n        if (!loader) {\r\n            return;\r\n        }\r\n\r\n        if (showLoader) {\r\n            loader.removeClass( hiddenClass );\r\n        } else {\r\n            loader.addClass( hiddenClass );\r\n        }\r\n    };\r\n\r\n    Checkout.validateEmail = function( email ) {\r\n        //eslint-disable-next-line\r\n        var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n        return re.test( email );\r\n    };\r\n\r\n    Checkout.processPaymentFormValidation = function() {\r\n\r\n        var hasError = false;\r\n\r\n        var formFields = [\r\n            'email',\r\n            'phoneNumber',\r\n            'firstName',\r\n            'lastName',\r\n            'address1',\r\n            'city',\r\n            'zipCode',\r\n            'termsAndConditions',\r\n        ];\r\n\r\n        $.each( formFields, function ( index, field ) {\r\n\r\n            var formField = $( '#address_' + field + ':visible' );\r\n\r\n            formField.removeClass( 'is-invalid' );\r\n\r\n            if ( typeof ( formField.val() ) !== 'undefined' ) {\r\n\r\n                if ( !formField.val() ) {\r\n                    formField.addClass( 'is-invalid' );\r\n                    hasError = true;\r\n                } else if ( field === 'email' ) {\r\n                    if ( !Checkout.validateEmail( formField.val() ) ) {\r\n                        formField.addClass( 'is-invalid' );\r\n                        hasError = true;\r\n                    }\r\n                } else if ( field === 'termsAndConditions' ) {\r\n                    if( ! formField.is(':checked') ) {\r\n                        formField.addClass( 'is-invalid' );\r\n                        hasError = true;\r\n                    }\r\n                }\r\n            }\r\n        } );\r\n\r\n\r\n        if ( hasError ) {\r\n            return false;\r\n        }\r\n        \r\n        \r\n        var zipcode = $('#address_zipCode').val();\r\n        var email = $('#address_email').val();\r\n\r\n    if (abandonCartEmailSession.value != 1){\r\n      $.ajax( {\r\n        url: '/wp-admin/admin-ajax.php',\r\n        dataType: 'JSON',\r\n        type: 'POST',\r\n        data: {\r\n          action: 'update_cart_abandonment',\r\n          email: email,\r\n          zip_code : zipcode,\r\n        },\r\n        error: function ( request ) {\r\n          console.debug( request );\r\n        },\r\n      } );\r\n    }\r\n    };\r\n\r\n    Checkout.processItems = function( el ) {\r\n        if ( !el ) { return; }\r\n\r\n        $.ajax({\r\n            type: 'GET',\r\n            dataType: 'json',\r\n            url: el.attr( 'href' ),\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },\r\n            success: function(data) {\r\n\r\n                if( data.totalItems === 0 ) {\r\n                    window.location.href = location.pathname;\r\n                } else {\r\n                    Checkout.updateHtml( data );\r\n                }\r\n\r\n            },\r\n            error: function (request) {\r\n                Checkout.showLoader( false );\r\n                console.debug(request);\r\n            },\r\n        });\r\n    };\r\n\r\n    Checkout.processPaymentMethod = function ( wrapper ) {\r\n        var paymentValue = wrapper.find( ':radio:checked' ).val();\r\n\r\n        var sendData = $( '#esc_purchase' ).serialize();\r\n        \r\n        sendData += '&payment_method=' + paymentValue + '&ajax=1';\r\n\r\n        console.log( 'processPaymentMethod' );\r\n\r\n        $.ajax( {\r\n            dataType: 'JSON',\r\n            type: 'POST',\r\n            data: sendData,\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },            \r\n            success: function ( data ) {\r\n                Checkout.showLoader( false );\r\n                Checkout.updateHtml( data );\r\n            },\r\n            error: function ( error ) {\r\n                console.log( error );\r\n            },\r\n        } );\r\n    }    \r\n\r\n\t// Checkout.processPaymentMethod = function( wrapper ) {\r\n\t// \tvar paymentValue = wrapper.find( ':radio:checked' ).val();\r\n\r\n    //     console.log( 'processPaymentMethod' );\r\n\r\n    //     $.ajax( {\r\n    //         url: window.ajaxURL,\r\n    //         dataType: 'JSON',\r\n    //         data: {\r\n    //             action: 'get_payment_method_form',\r\n    //             payment_method: paymentValue,\r\n    //         },\r\n    //         beforeSend: function() {\r\n    //             Checkout.showLoader( true );\r\n    //         },\r\n    //         success: function ( result ) {\r\n    //             Checkout.showLoader( false );\r\n    //             if( result.html ) {\r\n    //                 $( '#js-paymentFields' ).html( result.html );\r\n    //             } else {\r\n    //                 window.location.reload();\r\n    //             }\r\n    //         },\r\n    //         error: function (request) {\r\n    //             Checkout.showLoader( false );\r\n    //             console.debug(request);\r\n    //         },\r\n    //     } );\r\n\t// }\r\n\r\n\tCheckout.voucherProcess = function( $button ) {\r\n\t\tvar sendData = $( '#esc_purchase' ).serialize();\r\n\t\tvar buttonName = $button.attr('name');\r\n\t\tvar buttonValue = $button.attr('value');\r\n\r\n\t\tsendData += '&' + buttonName + '=' + buttonValue + '&ajax=1';\r\n\r\n\t\t//Update all HTML\r\n\t\t$.ajax( {\r\n\t\t\tdata: sendData,\r\n\t\t\ttype: 'POST',\r\n            dataType: 'JSON',\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },\r\n\t\t\tsuccess: function(data) {\r\n\t\t\t\tCheckout.updateHtml( data );\r\n            },\r\n            error: function (request) {\r\n                Checkout.showLoader( false );\r\n                console.debug(request);\r\n            },            \r\n\t\t} );\r\n\t};\r\n\r\n    Checkout.countryChangeProcess = function ( countryCode, state, reloadPage ) {\r\n        console.log( 'countryChangeProcess' );\r\n\r\n        var sendData = 'esc_action=esc_change_country';\r\n\r\n        if ( !state ) {\r\n            state = '';\r\n        }\r\n\r\n        sendData += '&esc_country=' + countryCode + '&ajax=1';\r\n        sendData += '&address[state]=' + state;\r\n\r\n        //Update all HTML\r\n        $.ajax( {\r\n            data: sendData,\r\n            type: 'POST',\r\n            dataType: 'JSON',\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },            \r\n            success: function ( data ) {\r\n                if ( reloadPage ) {\r\n                    window.location.reload( true );\r\n                } else {\r\n                    Checkout.updateHtml( data );\r\n                }\r\n            },\r\n            error: function ( request ) {\r\n                window.location.reload( true );\r\n                console.debug( request );\r\n            },\r\n        } );\r\n    };\r\n\r\n    Checkout.stateChangeProcess = function (state) {\r\n        console.log('stateChangeProcess');\r\n    \r\n        //Update all HTML\r\n        $.ajax( {\r\n          url: '/wp-admin/admin-ajax.php',\r\n          data: { \r\n            action: 'process_state_change',\r\n            state: state,\r\n          },\r\n          type: 'POST',\r\n          dataType: 'JSON',\r\n          beforeSend: function () {\r\n            Checkout.showLoader(true);\r\n          },      \r\n          success: function ( data ) {\r\n            Checkout.updateHtml(data);\r\n          },\r\n        } );\r\n      };\r\n\r\n    Checkout.processShippingMethod = function( wrapper ) {\r\n\r\n        var shippingValue = wrapper.find( ':radio:checked' ).val();\r\n\r\n        var sendData = $( '#esc_purchase' ).serialize();\r\n\r\n        sendData += '&shipping_method=' + shippingValue + '&ajax=1';\r\n\r\n        console.log('processShippingMethod');\r\n\r\n        $.ajax( {\r\n            dataType: 'JSON',\r\n            type: 'POST',\r\n            data: sendData,\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },\r\n            success: function ( data ) {\r\n                Checkout.updateHtml( data );\r\n            },\r\n            error: function (request) {\r\n                Checkout.showLoader( false );\r\n                console.debug(request);\r\n            },\r\n        } );\r\n\r\n    };\r\n\r\n    Checkout.processComment = function( action ) {\r\n\r\n        console.log('send comment');\r\n\r\n        var value = giftContainer.find( ':checkbox:checked' ).length;\r\n        var form = $( '#esc_purchase' );\r\n        var sendData = form.serializeArray();\r\n        var voucher = form.find( '#js-voucher-field button' ).val();\r\n\r\n        $.each( sendData, function() {\r\n            if( this.name === 'voucher' ) {\r\n                this.value = voucher;\r\n            }\r\n        });\r\n\r\n        sendData = $.param( sendData );\r\n\r\n        if( value === 0 ) {\r\n            sendData += '&internalComment[giftwrap]=0';\r\n        }\r\n\r\n        sendData +=  '&submit_comment'+ '=' + value +'&ajax=1';\r\n\r\n        //Update all HTML\r\n        $.ajax( {\r\n            data: sendData,\r\n            type: 'POST',\r\n            dataType: 'JSON',\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },\r\n            success: function( data ) {\r\n                if( action === 'click' ) {\r\n                    Checkout.updateHtml( data );\r\n                }\r\n            },\r\n            error: function (request) {\r\n                Checkout.showLoader( false );\r\n                console.debug(request);\r\n            },            \r\n        } );\r\n    };\r\n\r\n\r\n\tCheckout.processNewsletter = function( action ) {\r\n        console.log('newsletter');\r\n\r\n\t\tvar value = newsletterContainer.find( ':checkbox:checked' ).length;\r\n        var form = $( '#esc_purchase' );\r\n        var sendData = form.serializeArray();\r\n        var voucher = form.find( '#js-voucher-field button' ).val();\r\n\r\n        $.each(sendData, function() {\r\n            if( this.name === 'voucher' ) {\r\n                this.value = voucher;\r\n            }\r\n        });\r\n\r\n        sendData = $.param( sendData );\r\n\r\n        if( value === 0 ) {\r\n            sendData += '&address[newsletter]=0';\r\n        }\r\n\r\n        sendData +=  '&submit_newsletter'+ '=' + value +'&ajax=1';\r\n\r\n        //Update all HTML\r\n        $.ajax( {\r\n            data: sendData,\r\n            type: 'POST',\r\n            dataType: 'JSON',\r\n            beforeSend: function() {\r\n                Checkout.showLoader( true );\r\n            },\r\n            success: function( data ) {\r\n                if( action === 'click' ) {\r\n                    Checkout.updateHtml( data );\r\n                }\r\n            },\r\n            error: function (request) {\r\n                Checkout.showLoader( false );\r\n                console.debug(request);\r\n            },            \r\n        } );\r\n    };\r\n\r\n    Checkout.animateTitle = function() {\r\n        var checkoutSidebar = $('#js-checkout-sidebar');\r\n        var checkoutBanner = $('#js-checkout-banner');\r\n        var checkoutText = $('#js-checkout-text');\r\n        window.onscroll = function () {\r\n            if ($(window).innerWidth() >= 768) {\r\n                if (document.body.scrollTop > 30 || document.documentElement.scrollTop > 30) {\r\n                    checkoutBanner.css('padding-top', '24px');\r\n                    checkoutBanner.css('padding-bottom', '25px');\r\n                    checkoutText.css('font-size', '30px');\r\n                    if (checkoutSidebar.length > 0) {\r\n                        Checkout.sideBar();\r\n                    }\r\n                } else {\r\n                    checkoutBanner.css('padding-top', '48px');\r\n                    checkoutBanner.css('padding-bottom', '50px');\r\n                    checkoutText.css('font-size', '40px');\r\n                }\r\n            }\r\n\r\n            else {\r\n                checkoutBanner.css('padding-top', '24px');\r\n                checkoutBanner.css('padding-bottom', '25px');\r\n                checkoutText.css('font-size', '30px');\r\n            }\r\n        };\r\n    }\r\n\r\n    Checkout.sideBar = function() {\r\n        var sidebarTopSpacing;\r\n        // GET SITE WIDE PRINT HEIGHT WITHOUT MARGIN\r\n        // var fineprint = $('.js-header .fine-print')\r\n        // var fineprintHeight = fineprint.outerHeight();\r\n\r\n        // IF ADMIN IS LOGIN ADD ADMIN BAR HEIGHT\r\n        if ($('body').hasClass('admin-bar')) {\r\n            if ($(window).innerWidth() >= 1024) {\r\n                // if (fineprint.length > 0) {\r\n                //     // DESKTOP - ADMINBAR + HEADER + CHECKOUT\r\n                //     sidebarTopSpacing = 185  + fineprintHeight;\r\n                // } else {\r\n\r\n                // }\r\n\r\n                sidebarTopSpacing = 185;\r\n            } else {\r\n                // MOBILE - ADMINBAR + SMALL(HEADER + CHECKOUT)\r\n                // if (fineprint.length > 0) {\r\n                //     sidebarTopSpacing = 172  + fineprintHeight;\r\n                // } else {\r\n\r\n                // }\r\n\r\n                sidebarTopSpacing = 172;\r\n            }\r\n        } else {\r\n             // NO ADMIN BAR HEADER + CHECKOUT ONLY\r\n            if ($(window).innerWidth() >= 1024) {\r\n                 // DESKTOP - HEADER + CHECKOUT\r\n                // if (fineprint.length > 0) {\r\n                //     sidebarTopSpacing = 157 + fineprintHeight;\r\n                // } else {\r\n\r\n                // }\r\n\r\n                sidebarTopSpacing = 157;\r\n            } else {\r\n                // MOBILE - SMALL(HEADER + CHECKOUT)\r\n                // if (fineprint.length > 0) {\r\n                //     sidebarTopSpacing = 140 + fineprintHeight;\r\n                // } else {\r\n\r\n                // }\r\n\r\n                sidebarTopSpacing = 140 ;\r\n            }\r\n        }\r\n\r\n        var sidebar = document.getElementById('js-checkout-sidebar');\r\n        new StickySidebar(sidebar, {\r\n            topSpacing: sidebarTopSpacing,\r\n            containerSelector: '.container',\r\n            innerWrapperSelector: '.checkout-total',\r\n            minWidth: 1023,\r\n        });\r\n    }\r\n\r\n    if( scope.length > 0) {\r\n        $(document).ready( function() {\r\n            Checkout.init();\r\n            Checkout.animateTitle();\r\n        } );\r\n\r\n        $(window).resize( function () {\r\n            Checkout.moveTotalSummaryContent();\r\n            Checkout.animateTitle();\r\n        } );        \r\n    }\r\n\r\n    else {\r\n        Checkout.animateTitle();\r\n    }\r\n\r\n})(jQuery);\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/checkout.js","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.StickySidebar = factory());\n}(this, (function () { '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\n/**\r\n * Sticky Sidebar JavaScript Plugin.\r\n * @version 3.3.1\r\n * @author Ahmed Bouhuolia <a.bouhuolia@gmail.com>\r\n * @license The MIT License (MIT)\r\n */\nvar StickySidebar = function () {\n\n  // ---------------------------------\n  // # Define Constants\n  // ---------------------------------\n  //\n  var EVENT_KEY = '.stickySidebar';\n  var DEFAULTS = {\n\n    /**\r\n     * Additional top spacing of the element when it becomes sticky.\r\n     * @type {Numeric|Function}\r\n     */\n    topSpacing: 0,\n\n    /**\r\n     * Additional bottom spacing of the element when it becomes sticky.\r\n     * @type {Numeric|Function}\r\n     */\n    bottomSpacing: 0,\n\n    /**\r\n     * Container sidebar selector to know what the beginning and end of sticky element.\r\n     * @type {String|False}\r\n     */\n    containerSelector: false,\n\n    /**\r\n     * Inner wrapper selector.\r\n     * @type {String}\r\n     */\n    innerWrapperSelector: '.inner-wrapper-sticky',\n\n    /**\r\n     * The name of CSS class to apply to elements when they have become stuck.\r\n     * @type {String|False}\r\n     */\n    stickyClass: 'is-affixed',\n\n    /**\r\n     * Detect when sidebar and its container change height so re-calculate their dimensions.\r\n     * @type {Boolean}\r\n     */\n    resizeSensor: true,\n\n    /**\r\n     * The sidebar returns to its normal position if its width below this value.\r\n     * @type {Numeric}\r\n     */\n    minWidth: false\n  };\n\n  // ---------------------------------\n  // # Class Definition\n  // ---------------------------------\n  //\n  /**\r\n   * Sticky Sidebar Class.\r\n   * @public\r\n   */\n\n  var StickySidebar = function () {\n\n    /**\r\n     * Sticky Sidebar Constructor.\r\n     * @constructor\r\n     * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector.\r\n     * @param {Object} options - The options of sticky sidebar.\r\n     */\n    function StickySidebar(sidebar) {\n      var _this = this;\n\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      _classCallCheck(this, StickySidebar);\n\n      this.options = StickySidebar.extend(DEFAULTS, options);\n\n      // Sidebar element query if there's no one, throw error.\n      this.sidebar = 'string' === typeof sidebar ? document.querySelector(sidebar) : sidebar;\n      if ('undefined' === typeof this.sidebar) throw new Error(\"There is no specific sidebar element.\");\n\n      this.sidebarInner = false;\n      this.container = this.sidebar.parentElement;\n\n      // Current Affix Type of sidebar element.\n      this.affixedType = 'STATIC';\n      this.direction = 'down';\n      this.support = {\n        transform: false,\n        transform3d: false\n      };\n\n      this._initialized = false;\n      this._reStyle = false;\n      this._breakpoint = false;\n      this._resizeListeners = [];\n\n      // Dimensions of sidebar, container and screen viewport.\n      this.dimensions = {\n        translateY: 0,\n        topSpacing: 0,\n        lastTopSpacing: 0,\n        bottomSpacing: 0,\n        lastBottomSpacing: 0,\n        sidebarHeight: 0,\n        sidebarWidth: 0,\n        containerTop: 0,\n        containerHeight: 0,\n        viewportHeight: 0,\n        viewportTop: 0,\n        lastViewportTop: 0\n      };\n\n      // Bind event handlers for referencability.\n      ['handleEvent'].forEach(function (method) {\n        _this[method] = _this[method].bind(_this);\n      });\n\n      // Initialize sticky sidebar for first time.\n      this.initialize();\n    }\n\n    /**\r\n     * Initializes the sticky sidebar by adding inner wrapper, define its container, \r\n     * min-width breakpoint, calculating dimensions, adding helper classes and inline style.\r\n     * @private\r\n     */\n\n\n    _createClass(StickySidebar, [{\n      key: 'initialize',\n      value: function initialize() {\n        var _this2 = this;\n\n        this._setSupportFeatures();\n\n        // Get sticky sidebar inner wrapper, if not found, will create one.\n        if (this.options.innerWrapperSelector) {\n          this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector);\n\n          if (null === this.sidebarInner) this.sidebarInner = false;\n        }\n\n        if (!this.sidebarInner) {\n          var wrapper = document.createElement('div');\n          wrapper.setAttribute('class', 'inner-wrapper-sticky');\n          this.sidebar.appendChild(wrapper);\n\n          while (this.sidebar.firstChild != wrapper) {\n            wrapper.appendChild(this.sidebar.firstChild);\n          }this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky');\n        }\n\n        // Container wrapper of the sidebar.\n        if (this.options.containerSelector) {\n          var containers = document.querySelectorAll(this.options.containerSelector);\n          containers = Array.prototype.slice.call(containers);\n\n          containers.forEach(function (container, item) {\n            if (!container.contains(_this2.sidebar)) return;\n            _this2.container = container;\n          });\n\n          if (!containers.length) throw new Error(\"The container does not contains on the sidebar.\");\n        }\n\n        // If top/bottom spacing is not function parse value to integer.\n        if ('function' !== typeof this.options.topSpacing) this.options.topSpacing = parseInt(this.options.topSpacing) || 0;\n\n        if ('function' !== typeof this.options.bottomSpacing) this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0;\n\n        // Breakdown sticky sidebar if screen width below `options.minWidth`.\n        this._widthBreakpoint();\n\n        // Calculate dimensions of sidebar, container and viewport.\n        this.calcDimensions();\n\n        // Affix sidebar in proper position.\n        this.stickyPosition();\n\n        // Bind all events.\n        this.bindEvents();\n\n        // Inform other properties the sticky sidebar is initialized.\n        this._initialized = true;\n      }\n\n      /**\r\n       * Bind all events of sticky sidebar plugin.\r\n       * @protected\r\n       */\n\n    }, {\n      key: 'bindEvents',\n      value: function bindEvents() {\n        window.addEventListener('resize', this, { passive: true, capture: false });\n        window.addEventListener('scroll', this, { passive: true, capture: false });\n\n        this.sidebar.addEventListener('update' + EVENT_KEY, this);\n\n        if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {\n          new ResizeSensor(this.sidebarInner, this.handleEvent);\n          new ResizeSensor(this.container, this.handleEvent);\n        }\n      }\n\n      /**\r\n       * Handles all events of the plugin.\r\n       * @param {Object} event - Event object passed from listener.\r\n       */\n\n    }, {\n      key: 'handleEvent',\n      value: function handleEvent(event) {\n        this.updateSticky(event);\n      }\n\n      /**\r\n       * Calculates dimensions of sidebar, container and screen viewpoint\r\n       * @public\r\n       */\n\n    }, {\n      key: 'calcDimensions',\n      value: function calcDimensions() {\n        if (this._breakpoint) return;\n        var dims = this.dimensions;\n\n        // Container of sticky sidebar dimensions.\n        dims.containerTop = StickySidebar.offsetRelative(this.container).top;\n        dims.containerHeight = this.container.clientHeight;\n        dims.containerBottom = dims.containerTop + dims.containerHeight;\n\n        // Sidebar dimensions.\n        dims.sidebarHeight = this.sidebarInner.offsetHeight;\n        dims.sidebarWidth = this.sidebar.offsetWidth;\n\n        // Screen viewport dimensions.\n        dims.viewportHeight = window.innerHeight;\n\n        this._calcDimensionsWithScroll();\n      }\n\n      /**\r\n       * Some dimensions values need to be up-to-date when scrolling the page.\r\n       * @private\r\n       */\n\n    }, {\n      key: '_calcDimensionsWithScroll',\n      value: function _calcDimensionsWithScroll() {\n        var dims = this.dimensions;\n\n        dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left;\n\n        dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop;\n        dims.viewportBottom = dims.viewportTop + dims.viewportHeight;\n        dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft;\n\n        dims.topSpacing = this.options.topSpacing;\n        dims.bottomSpacing = this.options.bottomSpacing;\n\n        if ('function' === typeof dims.topSpacing) dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0;\n\n        if ('function' === typeof dims.bottomSpacing) dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0;\n\n        if ('VIEWPORT-TOP' === this.affixedType) {\n          // Adjust translate Y in the case decrease top spacing value.\n          if (dims.topSpacing < dims.lastTopSpacing) {\n            dims.translateY += dims.lastTopSpacing - dims.topSpacing;\n            this._reStyle = true;\n          }\n        } else if ('VIEWPORT-BOTTOM' === this.affixedType) {\n          // Adjust translate Y in the case decrease bottom spacing value.\n          if (dims.bottomSpacing < dims.lastBottomSpacing) {\n            dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing;\n            this._reStyle = true;\n          }\n        }\n\n        dims.lastTopSpacing = dims.topSpacing;\n        dims.lastBottomSpacing = dims.bottomSpacing;\n      }\n\n      /**\r\n       * Determine whether the sidebar is bigger than viewport.\r\n       * @public\r\n       * @return {Boolean}\r\n       */\n\n    }, {\n      key: 'isSidebarFitsViewport',\n      value: function isSidebarFitsViewport() {\n        return this.dimensions.sidebarHeight < this.dimensions.viewportHeight;\n      }\n\n      /**\r\n       * Observe browser scrolling direction top and down.\r\n       */\n\n    }, {\n      key: 'observeScrollDir',\n      value: function observeScrollDir() {\n        var dims = this.dimensions;\n        if (dims.lastViewportTop === dims.viewportTop) return;\n\n        var furthest = 'down' === this.direction ? Math.min : Math.max;\n\n        // If the browser is scrolling not in the same direction.\n        if (dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop)) this.direction = 'down' === this.direction ? 'up' : 'down';\n      }\n\n      /**\r\n       * Gets affix type of sidebar according to current scrollTop and scrollLeft.\r\n       * Holds all logical affix of the sidebar when scrolling up and down and when sidebar \r\n       * is bigger than viewport and vice versa.\r\n       * @public\r\n       * @return {String|False} - Proper affix type.\r\n       */\n\n    }, {\n      key: 'getAffixType',\n      value: function getAffixType() {\n        var dims = this.dimensions,\n            affixType = false;\n\n        this._calcDimensionsWithScroll();\n\n        var sidebarBottom = dims.sidebarHeight + dims.containerTop;\n        var colliderTop = dims.viewportTop + dims.topSpacing;\n        var colliderBottom = dims.viewportBottom - dims.bottomSpacing;\n\n        // When browser is scrolling top.\n        if ('up' === this.direction) {\n          if (colliderTop <= dims.containerTop) {\n            dims.translateY = 0;\n            affixType = 'STATIC';\n          } else if (colliderTop <= dims.translateY + dims.containerTop) {\n            dims.translateY = colliderTop - dims.containerTop;\n            affixType = 'VIEWPORT-TOP';\n          } else if (!this.isSidebarFitsViewport() && dims.containerTop <= colliderTop) {\n            affixType = 'VIEWPORT-UNBOTTOM';\n          }\n          // When browser is scrolling up.\n        } else {\n          // When sidebar element is not bigger than screen viewport.\n          if (this.isSidebarFitsViewport()) {\n\n            if (dims.sidebarHeight + colliderTop >= dims.containerBottom) {\n              dims.translateY = dims.containerBottom - sidebarBottom;\n              affixType = 'CONTAINER-BOTTOM';\n            } else if (colliderTop >= dims.containerTop) {\n              dims.translateY = colliderTop - dims.containerTop;\n              affixType = 'VIEWPORT-TOP';\n            }\n            // When sidebar element is bigger than screen viewport.\n          } else {\n\n            if (dims.containerBottom <= colliderBottom) {\n              dims.translateY = dims.containerBottom - sidebarBottom;\n              affixType = 'CONTAINER-BOTTOM';\n            } else if (sidebarBottom + dims.translateY <= colliderBottom) {\n              dims.translateY = colliderBottom - sidebarBottom;\n              affixType = 'VIEWPORT-BOTTOM';\n            } else if (dims.containerTop + dims.translateY <= colliderTop) {\n              affixType = 'VIEWPORT-UNBOTTOM';\n            }\n          }\n        }\n\n        // Make sure the translate Y is not bigger than container height.\n        dims.translateY = Math.max(0, dims.translateY);\n        dims.translateY = Math.min(dims.containerHeight, dims.translateY);\n\n        dims.lastViewportTop = dims.viewportTop;\n        return affixType;\n      }\n\n      /**\r\n       * Gets inline style of sticky sidebar wrapper and inner wrapper according \r\n       * to its affix type.\r\n       * @private\r\n       * @param {String} affixType - Affix type of sticky sidebar.\r\n       * @return {Object}\r\n       */\n\n    }, {\n      key: '_getStyle',\n      value: function _getStyle(affixType) {\n        if ('undefined' === typeof affixType) return;\n\n        var style = { inner: {}, outer: {} };\n        var dims = this.dimensions;\n\n        switch (affixType) {\n          case 'VIEWPORT-TOP':\n            style.inner = { position: 'fixed', top: dims.topSpacing,\n              left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth };\n            break;\n          case 'VIEWPORT-BOTTOM':\n            style.inner = { position: 'fixed', top: 'auto', left: dims.sidebarLeft,\n              bottom: dims.bottomSpacing, width: dims.sidebarWidth };\n            break;\n          case 'CONTAINER-BOTTOM':\n          case 'VIEWPORT-UNBOTTOM':\n            var translate = this._getTranslate(0, dims.translateY + 'px');\n\n            if (translate) style.inner = { transform: translate };else style.inner = { position: 'absolute', top: dims.translateY, width: dims.sidebarWidth };\n            break;\n        }\n\n        switch (affixType) {\n          case 'VIEWPORT-TOP':\n          case 'VIEWPORT-BOTTOM':\n          case 'VIEWPORT-UNBOTTOM':\n          case 'CONTAINER-BOTTOM':\n            style.outer = { height: dims.sidebarHeight, position: 'relative' };\n            break;\n        }\n\n        style.outer = StickySidebar.extend({ height: '', position: '' }, style.outer);\n        style.inner = StickySidebar.extend({ position: 'relative', top: '', left: '',\n          bottom: '', width: '', transform: this._getTranslate() }, style.inner);\n\n        return style;\n      }\n\n      /**\r\n       * Cause the sidebar to be sticky according to affix type by adding inline\r\n       * style, adding helper class and trigger events.\r\n       * @function\r\n       * @protected\r\n       * @param {string} force - Update sticky sidebar position by force.\r\n       */\n\n    }, {\n      key: 'stickyPosition',\n      value: function stickyPosition(force) {\n        if (this._breakpoint) return;\n\n        force = this._reStyle || force || false;\n\n        var affixType = this.getAffixType();\n        var style = this._getStyle(affixType);\n\n        if ((this.affixedType != affixType || force) && affixType) {\n          var affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n          StickySidebar.eventTrigger(this.sidebar, affixEvent);\n\n          if ('STATIC' === affixType) StickySidebar.removeClass(this.sidebar, this.options.stickyClass);else StickySidebar.addClass(this.sidebar, this.options.stickyClass);\n\n          for (var key in style.outer) {\n            this.sidebar.style[key] = style.outer[key];\n          }\n\n          for (var _key in style.inner) {\n            var _unit2 = 'number' === typeof style.inner[_key] ? 'px' : '';\n            this.sidebarInner.style[_key] = style.inner[_key] + _unit2;\n          }\n\n          var affixedEvent = 'affixed.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY;\n          StickySidebar.eventTrigger(this.sidebar, affixedEvent);\n        } else {\n          if (this._initialized) this.sidebarInner.style.left = style.inner.left;\n        }\n\n        this.affixedType = affixType;\n      }\n\n      /**\r\n       * Breakdown sticky sidebar when window width is below `options.minWidth` value.\r\n       * @protected\r\n       */\n\n    }, {\n      key: '_widthBreakpoint',\n      value: function _widthBreakpoint() {\n\n        if (window.innerWidth <= this.options.minWidth) {\n          this._breakpoint = true;\n          this.affixedType = 'STATIC';\n\n          this.sidebar.removeAttribute('style');\n          StickySidebar.removeClass(this.sidebar, this.options.stickyClass);\n          this.sidebarInner.removeAttribute('style');\n        } else {\n          this._breakpoint = false;\n        }\n      }\n\n      /**\r\n       * Switches between functions stack for each event type, if there's no \r\n       * event, it will re-initialize sticky sidebar.\r\n       * @public\r\n       */\n\n    }, {\n      key: 'updateSticky',\n      value: function updateSticky() {\n        var _this3 = this;\n\n        var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n        if (this._running) return;\n        this._running = true;\n\n        (function (eventType) {\n\n          requestAnimationFrame(function () {\n            switch (eventType) {\n              // When browser is scrolling and re-calculate just dimensions\n              // within scroll. \n              case 'scroll':\n                _this3._calcDimensionsWithScroll();\n                _this3.observeScrollDir();\n                _this3.stickyPosition();\n                break;\n\n              // When browser is resizing or there's no event, observe width\n              // breakpoint and re-calculate dimensions.\n              case 'resize':\n              default:\n                _this3._widthBreakpoint();\n                _this3.calcDimensions();\n                _this3.stickyPosition(true);\n                break;\n            }\n            _this3._running = false;\n          });\n        })(event.type);\n      }\n\n      /**\r\n       * Set browser support features to the public property.\r\n       * @private\r\n       */\n\n    }, {\n      key: '_setSupportFeatures',\n      value: function _setSupportFeatures() {\n        var support = this.support;\n\n        support.transform = StickySidebar.supportTransform();\n        support.transform3d = StickySidebar.supportTransform(true);\n      }\n\n      /**\r\n       * Get translate value, if the browser supports transfrom3d, it will adopt it.\r\n       * and the same with translate. if browser doesn't support both return false.\r\n       * @param {Number} y - Value of Y-axis.\r\n       * @param {Number} x - Value of X-axis.\r\n       * @param {Number} z - Value of Z-axis.\r\n       * @return {String|False}\r\n       */\n\n    }, {\n      key: '_getTranslate',\n      value: function _getTranslate() {\n        var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n        var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n        var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n        if (this.support.transform3d) return 'translate3d(' + y + ', ' + x + ', ' + z + ')';else if (this.support.translate) return 'translate(' + y + ', ' + x + ')';else return false;\n      }\n\n      /**\r\n       * Destroy sticky sidebar plugin.\r\n       * @public\r\n       */\n\n    }, {\n      key: 'destroy',\n      value: function destroy() {\n        window.removeEventListener('resize', this, { caption: false });\n        window.removeEventListener('scroll', this, { caption: false });\n\n        this.sidebar.classList.remove(this.options.stickyClass);\n        this.sidebar.style.minHeight = '';\n\n        this.sidebar.removeEventListener('update' + EVENT_KEY, this);\n\n        var styleReset = { inner: {}, outer: {} };\n\n        styleReset.inner = { position: '', top: '', left: '', bottom: '', width: '', transform: '' };\n        styleReset.outer = { height: '', position: '' };\n\n        for (var key in styleReset.outer) {\n          this.sidebar.style[key] = styleReset.outer[key];\n        }for (var _key2 in styleReset.inner) {\n          this.sidebarInner.style[_key2] = styleReset.inner[_key2];\n        }if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) {\n          ResizeSensor.detach(this.sidebarInner, this.handleEvent);\n          ResizeSensor.detach(this.container, this.handleEvent);\n        }\n      }\n\n      /**\r\n       * Determine if the browser supports CSS transform feature.\r\n       * @function\r\n       * @static\r\n       * @param {Boolean} transform3d - Detect transform with translate3d.\r\n       * @return {String}\r\n       */\n\n    }], [{\n      key: 'supportTransform',\n      value: function supportTransform(transform3d) {\n        var result = false,\n            property = transform3d ? 'perspective' : 'transform',\n            upper = property.charAt(0).toUpperCase() + property.slice(1),\n            prefixes = ['Webkit', 'Moz', 'O', 'ms'],\n            support = document.createElement('support'),\n            style = support.style;\n\n        (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function (property, i) {\n          if (style[property] !== undefined) {\n            result = property;\n            return false;\n          }\n        });\n        return result;\n      }\n\n      /**\r\n       * Trigger custom event.\r\n       * @static\r\n       * @param {DOMObject} element - Target element on the DOM.\r\n       * @param {String} eventName - Event name.\r\n       * @param {Object} data - \r\n       */\n\n    }, {\n      key: 'eventTrigger',\n      value: function eventTrigger(element, eventName, data) {\n        try {\n          var event = new CustomEvent(eventName, { detail: data });\n        } catch (e) {\n          var event = document.createEvent('CustomEvent');\n          event.initCustomEvent(eventName, true, true, data);\n        }\n        element.dispatchEvent(event);\n      }\n\n      /**\r\n       * Extend options object with defaults.\r\n       * @function\r\n       * @static\r\n       */\n\n    }, {\n      key: 'extend',\n      value: function extend(defaults, options) {\n        var results = {};\n        for (var key in defaults) {\n          if ('undefined' !== typeof options[key]) results[key] = options[key];else results[key] = defaults[key];\n        }\n        return results;\n      }\n\n      /**\r\n       * Get current coordinates left and top of specific element.\r\n       * @static\r\n       */\n\n    }, {\n      key: 'offsetRelative',\n      value: function offsetRelative(element) {\n        var result = { left: 0, top: 0 };\n\n        do {\n          var offsetTop = element.offsetTop;\n          var offsetLeft = element.offsetLeft;\n\n          if (!isNaN(offsetTop)) result.top += offsetTop;\n\n          if (!isNaN(offsetLeft)) result.left += offsetLeft;\n\n          element = 'BODY' === element.tagName ? element.parentElement : element.offsetParent;\n        } while (element);\n        return result;\n      }\n\n      /**\r\n       * Add specific class name to specific element.\r\n       * @static \r\n       * @param {ObjectDOM} element \r\n       * @param {String} className \r\n       */\n\n    }, {\n      key: 'addClass',\n      value: function addClass(element, className) {\n        if (!StickySidebar.hasClass(element, className)) {\n          if (element.classList) element.classList.add(className);else element.className += ' ' + className;\n        }\n      }\n\n      /**\r\n       * Remove specific class name to specific element\r\n       * @static\r\n       * @param {ObjectDOM} element \r\n       * @param {String} className \r\n       */\n\n    }, {\n      key: 'removeClass',\n      value: function removeClass(element, className) {\n        if (StickySidebar.hasClass(element, className)) {\n          if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\\\b)' + className.split(' ').join('|') + '(\\\\b|$)', 'gi'), ' ');\n        }\n      }\n\n      /**\r\n       * Determine weather the element has specific class name.\r\n       * @static\r\n       * @param {ObjectDOM} element \r\n       * @param {String} className \r\n       */\n\n    }, {\n      key: 'hasClass',\n      value: function hasClass(element, className) {\n        if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className);\n      }\n    }]);\n\n    return StickySidebar;\n  }();\n\n  return StickySidebar;\n}();\n\n// Global\n// -------------------------\nwindow.StickySidebar = StickySidebar;\n\nreturn StickySidebar;\n\n})));\n\n//# sourceMappingURL=sticky-sidebar.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// C:/laragon/www/stinaaj/wp-content/themes/stinaaj/node_modules/sticky-sidebar/dist/sticky-sidebar.js\n// module id = 175\n// module chunks = 0","( function ( $ ) {\r\n\tvar Scroll = {};\r\n\r\n\tScroll.To = function ( target, adjHeight ) {\r\n\t\ttarget = $( target );\r\n\r\n\t\tif( typeof adjHeight === 'undefined' || adjHeight === null ) { \r\n\t\t\tadjHeight = 0; \r\n\t\t}\t\t\r\n\r\n\t\tif ( target.length === 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar scrollTop = target.offset().top;\r\n\r\n\t\t// Get nav height and subtract to top offset of target element\r\n\t\tvar navBar = $( 'nav' );\r\n\t\tif ( navBar.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( navBar.css( 'height' ) );\r\n\t\t}\t\r\n\r\n\t\t// Get wpadminbar height and subtract to top offset of target element\r\n\t\tvar wpAdminBar = $( '#wpadminbar' );\r\n\t\tif ( wpAdminBar.length > 0 ) {\r\n\t\t\tscrollTop -= parseInt( wpAdminBar.css( 'height' ) );\r\n\t\t}\r\n\r\n\t\tif( adjHeight > 0 ) {\r\n\t\t\tscrollTop -= parseInt( adjHeight );\r\n\t\t}\r\n\r\n\t\t// Call stop() to avoid shaking behavior in Chrome\r\n\t\t$( 'html, body' ).stop( true ).animate( {\r\n\t\t\tscrollTop: scrollTop,\r\n\t\t}, 1000 );\r\n\t};\r\n\r\n\t$( window ).on('load', function() {\r\n\r\n\t\t// Scroll to specific element id on page load\r\n\t\tif( window.location.hash !== null && window.location.hash !== '' ) {\r\n\t\t\tvar hash = window.location.hash.substring(1);\r\n\t\t\tvar target = $( '#' + hash );\r\n\r\n\t\t\tif (target.length) {\r\n\t\t\t\tScroll.To( target, 0 );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar links = $(document).find( '.js-section-link' );\r\n\t\tif (links.length) {\r\n\t\t\tlinks.off('click').on( 'click', function(e) {\r\n\t\t\t\tvar targetLink = $(this).attr('href');\r\n\r\n\t\t\t\tif (targetLink && $( targetLink )) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tScroll.To( $( targetLink ), 0 );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\r\n\t} );\r\n} )( jQuery );\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/scroll.js","// Hero banner\r\nvar BackgroundSwicher = {};\r\n\r\nBackgroundSwicher.refresh = function () {\r\n    $.each( $( '.js-bg-switch' ), function () {\r\n        $( this ).backgroundSwitcher( {breakpoint: 1023.98} );\r\n    } );\r\n\r\n    // if ( typeof window.lazyLoadInstance !== 'undefined' ) {\r\n    //     window.lazyLoadInstance.update();\r\n    // }\r\n};\r\n\r\nBackgroundSwicher.refresh();\r\n\r\n$( window ).resize( BackgroundSwicher.refresh );\r\n\r\nwindow.BackgroundSwicher = BackgroundSwicher;\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/backgroundSwitch.js","const articles = {};\r\n\r\nvar loadMoreButton = false;\r\n\r\narticles.init = () => {\r\n  // Article Ajax Load More Start Here\r\n  loadMoreButton = $( '.article-loadmore' );\r\n\r\n  loadMoreButton.on( 'click', function () {\r\n    var currentPage = $( this ).data( 'currentpage' );\r\n    var nextPage = currentPage + 1;\r\n    articleLoad( nextPage );\r\n    $( this ).data( 'currentpage', nextPage );\r\n  } );\r\n}\r\n\r\ndocument.addEventListener( 'DOMContentLoaded', function () {\r\n  articles.init();\r\n} );\r\n\r\nfunction articleLoad ( nextPage ) {\r\n  var ajaxUrl = loadMoreButton.data( 'ajaxurl' );\r\n  var order = loadMoreButton.data( 'order' );\r\n  var orderBy = loadMoreButton.data( 'orderby' );\r\n  var postsPerPage = loadMoreButton.data( 'postsperpage' );\r\n  var currentTermId = loadMoreButton.data( 'currentterm_id' );\r\n  var lang = loadMoreButton.data( 'lang' );\r\n\r\n  var params = {};\r\n\r\n  if (nextPage) params.page = nextPage;\r\n  if (postsPerPage) params.per_page = postsPerPage;\r\n  if (currentTermId) params.categories = currentTermId;\r\n  if (order) params.order = order;\r\n  if (orderBy) params.orderBy = orderBy;\r\n  if (lang) params.lang = lang;\r\n\r\n  params.categories_exclude = 1;\r\n\r\n  var queryString = Object.keys(params).map( key => {\r\n      return `${key}=${params[key]}`\r\n  }).join('&');\r\n\r\n  if (queryString) {\r\n    ajaxUrl += `?${queryString}`;\r\n  }\r\n\r\n  $.ajax( {\r\n    url: ajaxUrl,\r\n    type: 'GET',\r\n    beforeSend: function () {\r\n      loadMoreButton.addClass( 'is-loading' );\r\n    },\r\n    error: function ( data, textStatus ) {\r\n      console.log( data );\r\n      console.log( textStatus );\r\n    },\r\n    success: function ( data, textStatus, jqXHR ) {\r\n      if ( data ) {\r\n        loadMoreButton.removeClass( 'is-loading' );\r\n\r\n        // Need to clear list if Filter is trigger\r\n        if ( nextPage == 1 ) {\r\n          $( '.article-list' ).html( '' );\r\n        }\r\n\r\n        if ( $( data ).length > 0 ) {\r\n          $( data ).each( function ( key, val ) {\r\n            $( '.article-list' ).append( val.article_item );\r\n          } );\r\n        }\r\n\r\n        var totalCount = parseInt( jqXHR.getResponseHeader( 'X-WP-Total' ), 10 );\r\n        // if ($('.js-total-count')) {\r\n        // \t$('.js-total-count').text( totalCount );\r\n        // }\r\n\r\n        if ( totalCount === 0 ) {\r\n          loadMoreButton.addClass( 'd-none' );\r\n        }\r\n\r\n        var totalPage = parseInt( jqXHR.getResponseHeader( 'X-WP-TotalPages' ), 10 );\r\n        if ( loadMoreButton.data( 'currentpage' ) == totalPage || data.length == 0 )\r\n          loadMoreButton.addClass( 'd-none' ); // if last page, remove the button\r\n      } else {\r\n        loadMoreButton.addClass( 'd-none' ); // if no data, remove the button as well\r\n      }\r\n    },\r\n    complete: function () {\r\n      if (window.lazyLoadInstance && typeof window.lazyLoadInstance.update !== 'undefined') {\r\n        window.lazyLoadInstance.update();\r\n      }\r\n    },\r\n  } );\r\n}\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/articles.js","let Forms = {};\r\n\r\nForms.init = function () {\r\n  // Get all master checkboxes\r\n  const masterCheckboxes = document.querySelectorAll('.master-checkbox');\r\n\r\n  // Add event listener to each master checkbox\r\n  masterCheckboxes.forEach(function(masterCheckbox) {\r\n    // Get associated checkboxes for the current master checkbox\r\n    const checkboxes = masterCheckbox.closest('.js-newsletter').querySelectorAll('.js-checkbox-sports');\r\n\r\n    // Add event listener to the current master checkbox\r\n    masterCheckbox.addEventListener('click', function() {\r\n      // Toggle the checked state of associated checkboxes\r\n      checkboxes.forEach(function(checkbox) {\r\n        checkbox.checked = masterCheckbox.checked;\r\n      });\r\n    });\r\n\r\n    // Add event listeners to individual checkboxes\r\n    checkboxes.forEach(function(checkbox) {\r\n      checkbox.addEventListener('click', function() {\r\n        // Check if all associated checkboxes are checked\r\n        const allChecked = Array.from(checkboxes).every(function(checkbox) {\r\n          return checkbox.checked;\r\n        });\r\n\r\n        // Update the master checkbox's checked state\r\n        masterCheckbox.checked = allChecked;\r\n      });\r\n    });\r\n  });\r\n\r\n}\r\n\r\nForms.init()\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/forms.js","let tripleMedia = {};\r\n\r\ntripleMedia.setBigTitleHeight = function () {\r\n\tconst elements = document.querySelectorAll( '.js-triple-media-content-rotated-title' );\r\n\r\n\tlet maxWidth = 0;\r\n\r\n\telements.forEach( element => {\r\n\t\tconst width = element.offsetWidth;\r\n\t\tmaxWidth = Math.max( maxWidth, width );\r\n\t} );\r\n\r\n\telements.forEach( element => {\r\n\t\telement.style.width = `${maxWidth}px`;\r\n\t} );\r\n}\r\n\r\ntripleMedia.showContentInMobile = function () {\r\n\tif ( matchMedia( 'screen and (max-width: 1023.98px)' ).matches ) {\r\n\t\tconst tripleMediaSection = document.querySelectorAll( 'section.triple-media' );\r\n\r\n\t\ttripleMediaSection.forEach( tripleMediaSectionItem => {\r\n\t\t\tconst tripleMediaItems = tripleMediaSectionItem.querySelectorAll( '.js-triple-media-item' );\r\n\r\n\t\t\ttripleMediaItems.forEach( tripleMediaItem => {\r\n\t\t\t\ttripleMediaItem.addEventListener( 'click', ( e ) => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopPropagation();\r\n\r\n\t\t\t\t\tif ( tripleMediaItem.classList.contains( 'active' ) ) {\r\n\t\t\t\t\t\tlet link = tripleMediaItem.querySelector( 'a' );\r\n\r\n\t\t\t\t\t\tif ( link ) {\r\n\t\t\t\t\t\t\tif ( link.target === '_blank' ) {\r\n\t\t\t\t\t\t\t\twindow.open( link.href );\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tdocument.location.href = link.href;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttripleMediaSectionItem.querySelectorAll( '.js-triple-media-item' ).forEach( item => {\r\n\t\t\t\t\t\t\titem.classList.remove( 'active' );\r\n\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t\ttripleMediaItem.classList.add( 'active' );\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t} );\r\n\t\t} );\r\n\t}\r\n\r\n};\r\n\r\ntripleMedia.showContentInMobile();\r\ntripleMedia.setBigTitleHeight();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/tripleMedia.js","import { stokpress } from '../util/helper';\r\n\r\nconst cookieName = 'FooterBannerDisplayed';\r\nlet bottomBar = {};\r\n\r\nbottomBar.init = function () {\r\n  const bottomBarClose = document.querySelector('.js-bottom-bar-close');\r\n  const bottomBar = document.querySelector('.js-bottom-bar');\r\n\r\n  if (!bottomBar) return;\r\n  \r\n  // Show bottom bar if cookie is not set\r\n  if( !stokpress.getCookie( cookieName ) ) {\r\n      bottomBar.classList.remove('d-none');\r\n      document.documentElement.style.setProperty('--bottomBarHeight', '50px');\r\n  } else {\r\n    document.documentElement.style.setProperty('--bottomBarHeight', '0px');\r\n  }\r\n\r\n  bottomBarClose.addEventListener('click', () => {\r\n      bottomBar.classList.add('d-none');\r\n      document.documentElement.style.setProperty('--bottomBarHeight', '0px');\r\n      stokpress.setCookie( cookieName, true, 30 );\r\n  });\r\n\r\n};\r\n\r\nbottomBar.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/bottomBar.js","let splashScreen = {};\r\n\r\nsplashScreen.init = function () {\r\n  let SplashScreen = document.getElementById('js-splash-screen');\r\n\r\n\tif (!SplashScreen) {\r\n\t\treturn;\r\n\t}\r\n\r\n  let SplashScreenCloseButton = document.getElementById('js-splash-screen-close-button');\r\n  const delay = SplashScreen.dataset.delay ? SplashScreen.dataset.delay * 1000 : 2500;\r\n\r\n  // function openSplashScreen() {\r\n    // if (SplashScreen) {\r\n    //   SplashScreen.style.display = 'block';\r\n    //   setTimeout(function () {\r\n    //     SplashScreen.style.opacity = '1';\r\n    //   }, 1000);\r\n    // document.body.classList.remove('hide-splash-screen');\r\n    // document.body.classList.add('show-splash-screen');\r\n    // }\r\n  // }\r\n\r\n  function closeSplashScreen() {\r\n    if (SplashScreen) {\r\n      SplashScreen.style.opacity = '0';\r\n      setTimeout(function () {\r\n        SplashScreen.style.display = 'none';\r\n      }, 1000);\r\n      document.body.classList.remove('show-splash-screen');\r\n      document.body.classList.add('hide-splash-screen');\r\n    }\r\n  }\r\n\r\n  if(SplashScreenCloseButton) {\r\n    SplashScreenCloseButton.addEventListener('click', closeSplashScreen);\r\n  }\r\n\r\n  const currentUrl = window.location.href;\r\n  const targetQueryParam = 'splashScreen';\r\n  const targetParamValue = 'noClose';\r\n  const pattern = new RegExp(`[?&]${targetQueryParam}=${targetParamValue}(?:&|$)`);\r\n  const paramExists = pattern.test(currentUrl);\r\n\r\n  if (!paramExists) {\r\n    setTimeout(() => {\r\n      closeSplashScreen();\r\n    }, delay);\r\n  }\r\n};\r\n\r\nsplashScreen.init();\r\n\n\n\n// WEBPACK FOOTER //\n// ./scripts/components/splashScreen.js","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./styles/main.scss\n// module id = 183\n// module chunks = 0"],"sourceRoot":""}