{"version":3,"sources":["webpack:///./node_modules/swiper/css/swiper.css","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///./node_modules/swiper/css/swiper.css?469b"],"names":["___CSS_LOADER_EXPORT___","___CSS_LOADER_API_IMPORT___","i","push","module","locals","exports","Methods","addClass","removeClass","hasClass","toggleClass","attr","removeAttr","data","transform","transition","on","off","trigger","transitionEnd","outerWidth","outerHeight","offset","css","each","html","text","is","index","eq","append","prepend","next","nextAll","prev","prevAll","parent","parents","closest","find","children","filter","remove","add","styles","Object","keys","forEach","methodName","fn","Utils","deleteProps","obj","object","key","e","nextTick","callback","delay","setTimeout","now","Date","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","getComputedStyle","WebKitCSSMatrix","webkitTransform","split","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","parseUrlQuery","url","query","params","param","urlToParse","location","href","indexOf","paramsPart","decodeURIComponent","undefined","isObject","o","constructor","extend","args","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","Modernizr","navigator","maxTouchPoints","DocumentTouch","pointerEvents","PointerEvent","observer","passiveListener","supportsPassive","opts","defineProperty","get","addEventListener","gestures","SwiperClass","self","this","eventsListeners","eventName","events","handler","priority","method","event","once","onceHandler","f7proxy","apply","eventHandler","splice","emit","context","Array","isArray","slice","handlers","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","components","use","static","Class","prototype","name","proto","install","m","installModule","update","updateSize","swiper","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","style","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","offsetHeight","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","target","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","removeEventListener","duration","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","offsetWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","createElement","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","unshift","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","platform","ua","userAgent","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screen","screenHeight","match","toLowerCase","os","osVersion","webView","standalone","matchMedia","matches","webview","pixelRatio","devicePixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","j","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","capture","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","value","innerHeight","sort","b","innerWidth","wasLocked","lastSlidePosition","classes","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","src","srcset","sizes","checkForComplete","image","onReady","complete","Image","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","getAttribute","extendedDefaults","Swiper","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","$","swipers","containerEl","newParams","shadowRoot","querySelector","options","touchEventsTouch","touchEventsDesktop","clickTimeout","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isUiWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","ObserverFunc","mutations","observerUpdate","requestAnimationFrame","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","shiftKey","altKey","ctrlKey","metaKey","nodeName","keyboard","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","left","swiperCoord","top","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isSupported","element","setAttribute","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","contains","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","clearTimeout","timeout","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","dragStartPos","positionRatio","onDragStart","getBoundingClientRect","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","toggle","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","c","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","inverse","setControlledTransition","Controller$1","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","history","pushState","hashNavigation","paths","getPathValues","scrollToSlide","replaceState","setHistoryPopState","pathArray","pathname","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","hash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","set","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","document","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy","content","__esModule","default"],"mappings":"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","file":"swiperVendors.8a0d00343710a09661d1.js","sourcesContent":["// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(function(i){return i[1]});\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/**\\n * Swiper 5.3.7\\n * Most modern mobile touch slider and framework with hardware accelerated transitions\\n * http://swiperjs.com\\n *\\n * Copyright 2014-2020 Vladimir Kharlampidi\\n *\\n * Released under the MIT License\\n *\\n * Released on: April 10, 2020\\n */\\n\\n@font-face {\\n font-family: 'swiper-icons';\\n src: url(\\\"data:application/font-woff;charset=utf-8;base64, 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\\\") format(\\\"woff\\\");\\n font-weight: 400;\\n font-style: normal;\\n}\\n:root {\\n --swiper-theme-color: #007aff;\\n}\\n.swiper-container {\\n margin-left: auto;\\n margin-right: auto;\\n position: relative;\\n overflow: hidden;\\n list-style: none;\\n padding: 0;\\n /* Fix of Webkit flickering */\\n z-index: 1;\\n}\\n.swiper-container-vertical > .swiper-wrapper {\\n flex-direction: column;\\n}\\n.swiper-wrapper {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n display: flex;\\n transition-property: transform;\\n box-sizing: content-box;\\n}\\n.swiper-container-android .swiper-slide,\\n.swiper-wrapper {\\n transform: translate3d(0px, 0, 0);\\n}\\n.swiper-container-multirow > .swiper-wrapper {\\n flex-wrap: wrap;\\n}\\n.swiper-container-multirow-column > .swiper-wrapper {\\n flex-wrap: wrap;\\n flex-direction: column;\\n}\\n.swiper-container-free-mode > .swiper-wrapper {\\n transition-timing-function: ease-out;\\n margin: 0 auto;\\n}\\n.swiper-slide {\\n flex-shrink: 0;\\n width: 100%;\\n height: 100%;\\n position: relative;\\n transition-property: transform;\\n}\\n.swiper-slide-invisible-blank {\\n visibility: hidden;\\n}\\n/* Auto Height */\\n.swiper-container-autoheight,\\n.swiper-container-autoheight .swiper-slide {\\n height: auto;\\n}\\n.swiper-container-autoheight .swiper-wrapper {\\n align-items: flex-start;\\n transition-property: transform, height;\\n}\\n/* 3D Effects */\\n.swiper-container-3d {\\n perspective: 1200px;\\n}\\n.swiper-container-3d .swiper-wrapper,\\n.swiper-container-3d .swiper-slide,\\n.swiper-container-3d .swiper-slide-shadow-left,\\n.swiper-container-3d .swiper-slide-shadow-right,\\n.swiper-container-3d .swiper-slide-shadow-top,\\n.swiper-container-3d .swiper-slide-shadow-bottom,\\n.swiper-container-3d .swiper-cube-shadow {\\n transform-style: preserve-3d;\\n}\\n.swiper-container-3d .swiper-slide-shadow-left,\\n.swiper-container-3d .swiper-slide-shadow-right,\\n.swiper-container-3d .swiper-slide-shadow-top,\\n.swiper-container-3d .swiper-slide-shadow-bottom {\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n pointer-events: none;\\n z-index: 10;\\n}\\n.swiper-container-3d .swiper-slide-shadow-left {\\n background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-container-3d .swiper-slide-shadow-right {\\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-container-3d .swiper-slide-shadow-top {\\n background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n.swiper-container-3d .swiper-slide-shadow-bottom {\\n background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));\\n}\\n/* CSS Mode */\\n.swiper-container-css-mode > .swiper-wrapper {\\n overflow: auto;\\n scrollbar-width: none;\\n /* For Firefox */\\n -ms-overflow-style: none;\\n /* For Internet Explorer and Edge */\\n}\\n.swiper-container-css-mode > .swiper-wrapper::-webkit-scrollbar {\\n display: none;\\n}\\n.swiper-container-css-mode > .swiper-wrapper > .swiper-slide {\\n scroll-snap-align: start start;\\n}\\n.swiper-container-horizontal.swiper-container-css-mode > .swiper-wrapper {\\n scroll-snap-type: x mandatory;\\n}\\n.swiper-container-vertical.swiper-container-css-mode > .swiper-wrapper {\\n scroll-snap-type: y mandatory;\\n}\\n:root {\\n --swiper-navigation-size: 44px;\\n /*\\n --swiper-navigation-color: var(--swiper-theme-color);\\n */\\n}\\n.swiper-button-prev,\\n.swiper-button-next {\\n position: absolute;\\n top: 50%;\\n width: calc(var(--swiper-navigation-size) / 44 * 27);\\n height: var(--swiper-navigation-size);\\n margin-top: calc(-1 * var(--swiper-navigation-size) / 2);\\n z-index: 10;\\n cursor: pointer;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n color: var(--swiper-navigation-color, var(--swiper-theme-color));\\n}\\n.swiper-button-prev.swiper-button-disabled,\\n.swiper-button-next.swiper-button-disabled {\\n opacity: 0.35;\\n cursor: auto;\\n pointer-events: none;\\n}\\n.swiper-button-prev:after,\\n.swiper-button-next:after {\\n font-family: swiper-icons;\\n font-size: var(--swiper-navigation-size);\\n text-transform: none !important;\\n letter-spacing: 0;\\n text-transform: none;\\n font-variant: initial;\\n}\\n.swiper-button-prev,\\n.swiper-container-rtl .swiper-button-next {\\n left: 10px;\\n right: auto;\\n}\\n.swiper-button-prev:after,\\n.swiper-container-rtl .swiper-button-next:after {\\n content: 'prev';\\n}\\n.swiper-button-next,\\n.swiper-container-rtl .swiper-button-prev {\\n right: 10px;\\n left: auto;\\n}\\n.swiper-button-next:after,\\n.swiper-container-rtl .swiper-button-prev:after {\\n content: 'next';\\n}\\n.swiper-button-prev.swiper-button-white,\\n.swiper-button-next.swiper-button-white {\\n --swiper-navigation-color: #ffffff;\\n}\\n.swiper-button-prev.swiper-button-black,\\n.swiper-button-next.swiper-button-black {\\n --swiper-navigation-color: #000000;\\n}\\n.swiper-button-lock {\\n display: none;\\n}\\n:root {\\n /*\\n --swiper-pagination-color: var(--swiper-theme-color);\\n */\\n}\\n.swiper-pagination {\\n position: absolute;\\n text-align: center;\\n transition: 300ms opacity;\\n transform: translate3d(0, 0, 0);\\n z-index: 10;\\n}\\n.swiper-pagination.swiper-pagination-hidden {\\n opacity: 0;\\n}\\n/* Common Styles */\\n.swiper-pagination-fraction,\\n.swiper-pagination-custom,\\n.swiper-container-horizontal > .swiper-pagination-bullets {\\n bottom: 10px;\\n left: 0;\\n width: 100%;\\n}\\n/* Bullets */\\n.swiper-pagination-bullets-dynamic {\\n overflow: hidden;\\n font-size: 0;\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n transform: scale(0.33);\\n position: relative;\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {\\n transform: scale(1);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {\\n transform: scale(1);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {\\n transform: scale(0.66);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {\\n transform: scale(0.33);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {\\n transform: scale(0.66);\\n}\\n.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {\\n transform: scale(0.33);\\n}\\n.swiper-pagination-bullet {\\n width: 8px;\\n height: 8px;\\n display: inline-block;\\n border-radius: 100%;\\n background: #000;\\n opacity: 0.2;\\n}\\nbutton.swiper-pagination-bullet {\\n border: none;\\n margin: 0;\\n padding: 0;\\n box-shadow: none;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n.swiper-pagination-clickable .swiper-pagination-bullet {\\n cursor: pointer;\\n}\\n.swiper-pagination-bullet-active {\\n opacity: 1;\\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\\n}\\n.swiper-container-vertical > .swiper-pagination-bullets {\\n right: 10px;\\n top: 50%;\\n transform: translate3d(0px, -50%, 0);\\n}\\n.swiper-container-vertical > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 6px 0;\\n display: block;\\n}\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n top: 50%;\\n transform: translateY(-50%);\\n width: 8px;\\n}\\n.swiper-container-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n display: inline-block;\\n transition: 200ms transform, 200ms top;\\n}\\n.swiper-container-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet {\\n margin: 0 4px;\\n}\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic {\\n left: 50%;\\n transform: translateX(-50%);\\n white-space: nowrap;\\n}\\n.swiper-container-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n transition: 200ms transform, 200ms left;\\n}\\n.swiper-container-horizontal.swiper-container-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet {\\n transition: 200ms transform, 200ms right;\\n}\\n/* Progress */\\n.swiper-pagination-progressbar {\\n background: rgba(0, 0, 0, 0.25);\\n position: absolute;\\n}\\n.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n background: var(--swiper-pagination-color, var(--swiper-theme-color));\\n position: absolute;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n transform: scale(0);\\n transform-origin: left top;\\n}\\n.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {\\n transform-origin: right top;\\n}\\n.swiper-container-horizontal > .swiper-pagination-progressbar,\\n.swiper-container-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {\\n width: 100%;\\n height: 4px;\\n left: 0;\\n top: 0;\\n}\\n.swiper-container-vertical > .swiper-pagination-progressbar,\\n.swiper-container-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {\\n width: 4px;\\n height: 100%;\\n left: 0;\\n top: 0;\\n}\\n.swiper-pagination-white {\\n --swiper-pagination-color: #ffffff;\\n}\\n.swiper-pagination-black {\\n --swiper-pagination-color: #000000;\\n}\\n.swiper-pagination-lock {\\n display: none;\\n}\\n/* Scrollbar */\\n.swiper-scrollbar {\\n border-radius: 10px;\\n position: relative;\\n -ms-touch-action: none;\\n background: rgba(0, 0, 0, 0.1);\\n}\\n.swiper-container-horizontal > .swiper-scrollbar {\\n position: absolute;\\n left: 1%;\\n bottom: 3px;\\n z-index: 50;\\n height: 5px;\\n width: 98%;\\n}\\n.swiper-container-vertical > .swiper-scrollbar {\\n position: absolute;\\n right: 3px;\\n top: 1%;\\n z-index: 50;\\n width: 5px;\\n height: 98%;\\n}\\n.swiper-scrollbar-drag {\\n height: 100%;\\n width: 100%;\\n position: relative;\\n background: rgba(0, 0, 0, 0.5);\\n border-radius: 10px;\\n left: 0;\\n top: 0;\\n}\\n.swiper-scrollbar-cursor-drag {\\n cursor: move;\\n}\\n.swiper-scrollbar-lock {\\n display: none;\\n}\\n.swiper-zoom-container {\\n width: 100%;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n text-align: center;\\n}\\n.swiper-zoom-container > img,\\n.swiper-zoom-container > svg,\\n.swiper-zoom-container > canvas {\\n max-width: 100%;\\n max-height: 100%;\\n object-fit: contain;\\n}\\n.swiper-slide-zoomed {\\n cursor: move;\\n}\\n/* Preloader */\\n:root {\\n /*\\n --swiper-preloader-color: var(--swiper-theme-color);\\n */\\n}\\n.swiper-lazy-preloader {\\n width: 42px;\\n height: 42px;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -21px;\\n margin-top: -21px;\\n z-index: 10;\\n transform-origin: 50%;\\n animation: swiper-preloader-spin 1s infinite linear;\\n box-sizing: border-box;\\n border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));\\n border-radius: 50%;\\n border-top-color: transparent;\\n}\\n.swiper-lazy-preloader-white {\\n --swiper-preloader-color: #fff;\\n}\\n.swiper-lazy-preloader-black {\\n --swiper-preloader-color: #000;\\n}\\n@keyframes swiper-preloader-spin {\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\\n/* a11y */\\n.swiper-container .swiper-notification {\\n position: absolute;\\n left: 0;\\n top: 0;\\n pointer-events: none;\\n opacity: 0;\\n z-index: -1000;\\n}\\n.swiper-container-fade.swiper-container-free-mode .swiper-slide {\\n transition-timing-function: ease-out;\\n}\\n.swiper-container-fade .swiper-slide {\\n pointer-events: none;\\n transition-property: opacity;\\n}\\n.swiper-container-fade .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n.swiper-container-fade .swiper-slide-active,\\n.swiper-container-fade .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n.swiper-container-cube {\\n overflow: visible;\\n}\\n.swiper-container-cube .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n visibility: hidden;\\n transform-origin: 0 0;\\n width: 100%;\\n height: 100%;\\n}\\n.swiper-container-cube .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n.swiper-container-cube.swiper-container-rtl .swiper-slide {\\n transform-origin: 100% 0;\\n}\\n.swiper-container-cube .swiper-slide-active,\\n.swiper-container-cube .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n.swiper-container-cube .swiper-slide-active,\\n.swiper-container-cube .swiper-slide-next,\\n.swiper-container-cube .swiper-slide-prev,\\n.swiper-container-cube .swiper-slide-next + .swiper-slide {\\n pointer-events: auto;\\n visibility: visible;\\n}\\n.swiper-container-cube .swiper-slide-shadow-top,\\n.swiper-container-cube .swiper-slide-shadow-bottom,\\n.swiper-container-cube .swiper-slide-shadow-left,\\n.swiper-container-cube .swiper-slide-shadow-right {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n.swiper-container-cube .swiper-cube-shadow {\\n position: absolute;\\n left: 0;\\n bottom: 0px;\\n width: 100%;\\n height: 100%;\\n background: #000;\\n opacity: 0.6;\\n -webkit-filter: blur(50px);\\n filter: blur(50px);\\n z-index: 0;\\n}\\n.swiper-container-flip {\\n overflow: visible;\\n}\\n.swiper-container-flip .swiper-slide {\\n pointer-events: none;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n z-index: 1;\\n}\\n.swiper-container-flip .swiper-slide .swiper-slide {\\n pointer-events: none;\\n}\\n.swiper-container-flip .swiper-slide-active,\\n.swiper-container-flip .swiper-slide-active .swiper-slide-active {\\n pointer-events: auto;\\n}\\n.swiper-container-flip .swiper-slide-shadow-top,\\n.swiper-container-flip .swiper-slide-shadow-bottom,\\n.swiper-container-flip .swiper-slide-shadow-left,\\n.swiper-container-flip .swiper-slide-shadow-right {\\n z-index: 0;\\n -webkit-backface-visibility: hidden;\\n backface-visibility: hidden;\\n}\\n\", \"\"]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {};\nmodule.exports = ___CSS_LOADER_EXPORT___;\n","/**\n * Swiper 5.3.7\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: April 10, 2020\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document as document$1 } from 'ssr-window';\n\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n data,\n transform,\n transition: transition$1,\n on,\n off,\n trigger,\n transitionEnd: transitionEnd$1,\n outerWidth,\n outerHeight,\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 add,\n styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nconst Utils = {\n deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach((key) => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n },\n nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n },\n now() {\n return Date.now();\n },\n getTranslate(el, axis = 'x') {\n let matrix;\n let curTransform;\n let transformMatrix;\n\n const curStyle = window.getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\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;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n },\n parseUrlQuery(url) {\n const query = {};\n let urlToParse = url || window.location.href;\n let i;\n let params;\n let param;\n let length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n length = params.length;\n\n for (i = 0; i < length; i += 1) {\n param = params[i].replace(/#\\S+/g, '').split('=');\n query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n }\n }\n return query;\n },\n isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend(...args) {\n const to = Object(args[0]);\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n const keysArray = Object.keys(Object(nextSource));\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 if (desc !== undefined && desc.enumerable) {\n if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n Utils.extend(to[nextKey], nextSource[nextKey]);\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n },\n};\n\nconst Support = (function Support() {\n return {\n touch: (window.Modernizr && window.Modernizr.touch === true) || (function checkTouch() {\n return !!((window.navigator.maxTouchPoints > 0) || ('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch));\n }()),\n\n pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints > 0,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n let supportsPassive = false;\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n },\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in window;\n }()),\n };\n}());\n\nclass SwiperClass {\n constructor(params = {}) {\n const self = this;\n self.params = params;\n\n // Events\n self.eventsListeners = {};\n\n if (self.params && self.params.on) {\n Object.keys(self.params.on).forEach((eventName) => {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n }\n\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 function onceHandler(...args) {\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n handler.apply(self, args);\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\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] && self.eventsListeners[event].length) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === 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 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 const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach((event) => {\n if (self.eventsListeners && self.eventsListeners[event]) {\n const handlers = [];\n self.eventsListeners[event].forEach((eventHandler) => {\n handlers.push(eventHandler);\n });\n handlers.forEach((eventHandler) => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n useModulesParams(instanceParams) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n }\n\n useModules(modulesParams = {}) {\n const instance = this;\n if (!instance.modules) return;\n Object.keys(instance.modules).forEach((moduleName) => {\n const module = instance.modules[moduleName];\n const moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach((modulePropName) => {\n const moduleProp = module.instance[modulePropName];\n if (typeof moduleProp === 'function') {\n instance[modulePropName] = moduleProp.bind(instance);\n } else {\n instance[modulePropName] = moduleProp;\n }\n });\n }\n // Add event listeners\n if (module.on && instance.on) {\n Object.keys(module.on).forEach((moduleEventName) => {\n instance.on(moduleEventName, module.on[moduleEventName]);\n });\n }\n\n // Module create callback\n if (module.create) {\n module.create.bind(instance)(moduleParams);\n }\n });\n }\n\n static set components(components) {\n const Class = this;\n if (!Class.use) return;\n Class.use(components);\n }\n\n static installModule(module, ...params) {\n const Class = this;\n if (!Class.prototype.modules) Class.prototype.modules = {};\n const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n Class.prototype.modules[name] = module;\n // Prototype\n if (module.proto) {\n Object.keys(module.proto).forEach((key) => {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach((key) => {\n Class[key] = module.static[key];\n });\n }\n // Callback\n if (module.install) {\n module.install.apply(Class, params);\n }\n return Class;\n }\n\n static use(module, ...params) {\n const Class = this;\n if (Array.isArray(module)) {\n module.forEach((m) => Class.installModule(m));\n return Class;\n }\n return Class.installModule(module, ...params);\n }\n}\n\nfunction updateSize () {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n if (typeof swiper.params.width !== 'undefined') {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined') {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n Utils.extend(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height,\n });\n}\n\nfunction updateSlides () {\n const swiper = this;\n const params = swiper.params;\n\n const {\n $wrapperEl, size: swiperSize, rtlTranslate: rtl, 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\n function slidesForMargin(slideIndex) {\n if (!params.cssMode) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }\n\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.snapGrid.length;\n\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n else slides.css({ marginRight: '', marginBottom: '' });\n\n let slidesNumberEvenToRows;\n if (params.slidesPerColumn > 1) {\n if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n }\n if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n }\n }\n\n // Calc slides\n let slideSize;\n const slidesPerColumn = params.slidesPerColumn;\n const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0\n ? params.slidesPerGroup\n : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n slide\n .css({\n '-webkit-box-ordinal-group': newSlideOrderIndex,\n '-moz-box-ordinal-group': newSlideOrderIndex,\n '-ms-flex-order': newSlideOrderIndex,\n '-webkit-order': newSlideOrderIndex,\n order: newSlideOrderIndex,\n });\n } else if (params.slidesPerColumnFill === 'column') {\n column = Math.floor(i / slidesPerColumn);\n row = i - (column * slidesPerColumn);\n if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n row += 1;\n if (row >= slidesPerColumn) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - (row * slidesPerRow);\n }\n slide.css(\n `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n );\n }\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n const slideStyles = window.getComputedStyle(slide[0], null);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal()\n ? slide.outerWidth(true)\n : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n if (swiper.isHorizontal()) {\n const width = parseFloat(slideStyles.getPropertyValue('width'));\n const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n }\n } else {\n const height = parseFloat(slideStyles.getPropertyValue('height'));\n const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = height + marginTop + marginBottom;\n } else {\n slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n }\n }\n }\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\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 if (swiper.isHorizontal()) {\n slides[i].style.width = `${slideSize}px`;\n } else {\n slides[i].style.height = `${slideSize}px`;\n }\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n\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\n prevSlideSize = slideSize;\n\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n let newSlidesGrid;\n\n if (\n rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n if (params.setWrapperSize) {\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n }\n\n if (params.slidesPerColumn > 1) {\n swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n if (params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid = newSlidesGrid;\n }\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n if (swiper.isHorizontal()) {\n if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\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 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 Utils.extend(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid,\n });\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateSlidesOffset();\n }\n}\n\nfunction updateAutoHeight (speed) {\n const swiper = this;\n const activeSlides = [];\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n swiper.visibleSlides.each((index, 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) break;\n activeSlides.push(swiper.slides.eq(index)[0]);\n }\n }\n } else {\n activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n }\n\n // Find new height from highest slide in view\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 }\n\n // Update Height\n if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n const swiper = this;\n const slides = swiper.slides;\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\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n const swiper = this;\n const params = swiper.params;\n\n const { slides, rtlTranslate: rtl } = swiper;\n\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n\n // Visible Slides\n slides.removeClass(params.slideVisibleClass);\n\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n const slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n || (slideAfter > 1 && slideAfter <= swiper.size)\n || (slideBefore <= 0 && slideAfter >= swiper.size);\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 }\n swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let { progress, isBeginning, isEnd } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\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 Utils.extend(swiper, {\n progress,\n isBeginning,\n isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n const swiper = this;\n\n const {\n slides, params, $wrapperEl, activeIndex, realIndex,\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n let activeSlide;\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n }\n\n // Active classes\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n .addClass(params.slideDuplicateActiveClass);\n }\n }\n // Next Slide\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n }\n // Prev Slide\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicateNextClass);\n }\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl\n .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl\n .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n .addClass(params.slideDuplicatePrevClass);\n }\n }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\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 }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\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 if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n\n // Get real index\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}\n\nfunction 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 if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) slideFound = true;\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = $(slide).index();\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n\n const {\n params, rtlTranslate: rtl, translate, $wrapperEl,\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n\n return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl, params, $wrapperEl, wrapperEl, 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 swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nfunction translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n\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;\n else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n }\n }\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\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 if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\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 if (runCallbacks) {\n swiper.emit('transitionEnd');\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\nvar translate = {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo,\n};\n\nfunction 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\nfunction transitionStart (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, params, previousIndex } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionStart');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionStart');\n return;\n }\n swiper.emit('slideChangeTransitionStart');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionStart');\n } else {\n swiper.emit('slidePrevTransitionStart');\n }\n }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n const swiper = this;\n const { activeIndex, previousIndex, params } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';\n else if (activeIndex < previousIndex) dir = 'prev';\n else dir = 'reset';\n }\n\n swiper.emit('transitionEnd');\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit('slideResetTransitionEnd');\n return;\n }\n swiper.emit('slideChangeTransitionEnd');\n if (dir === 'next') {\n swiper.emit('slideNextTransitionEnd');\n } else {\n swiper.emit('slidePrevTransitionEnd');\n }\n }\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n\n const {\n params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\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];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\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';\n else if (slideIndex < activeIndex) direction = 'prev';\n else direction = 'reset';\n\n\n // Update Index\n if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n let t = -translate;\n if (rtl) {\n t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n }\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth',\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\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 if (!swiper.animating) {\n swiper.animating = true;\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 swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n }\n\n return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n let newIndex = index;\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const { params, animating } = swiper;\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params, animating, snapGrid, slidesGrid, rtlTranslate,\n } = swiper;\n\n if (params.loop) {\n if (animating) return false;\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach((snap) => {\n if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n });\n }\n let prevIndex;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction 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\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 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 if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (\n (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n ) {\n swiper.loopFix();\n slideToIndex = $wrapperEl\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.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\n .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n .eq(0)\n .index();\n\n Utils.nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide,\n};\n\nfunction loopCreate () {\n const swiper = this;\n const { params, $wrapperEl } = swiper;\n // Remove duplicated slides\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $wrapperEl.append(blankNode);\n }\n slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((index, el) => {\n const slide = $(el);\n if (index < swiper.loopedSlides) appendSlides.push(el);\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n slide.attr('data-swiper-slide-index', index);\n });\n for (let i = 0; i < appendSlides.length; i += 1) {\n $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}\n\nfunction loopFix () {\n const swiper = this;\n\n swiper.emit('beforeLoopFix');\n\n const {\n activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate();\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\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 if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy () {\n const swiper = this;\n const { $wrapperEl, params, slides } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n const swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n const el = swiper.el;\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\nfunction unsetGrabCursor () {\n const swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n const swiper = this;\n const { $wrapperEl, params } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\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 if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n}\n\nfunction prependSlide (slides) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\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 newActiveIndex = activeIndex + slides.length;\n } else {\n $wrapperEl.prepend(slides);\n }\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n const swiper = this;\n const { $wrapperEl, params, activeIndex } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n const slidesBuffer = [];\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 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 if (!(params.observer && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeSlide (slidesIndexes) {\n const swiper = this;\n const { params, $wrapperEl, activeIndex } = swiper;\n\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\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 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 && Support.observer)) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}\n\nfunction removeAllSlides () {\n const swiper = this;\n\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n appendSlide,\n prependSlide,\n addSlide,\n removeSlide,\n removeAllSlides,\n};\n\nconst Device = (function Device() {\n const platform = window.navigator.platform;\n const ua = window.navigator.userAgent;\n\n const device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n iphone: false,\n ipod: false,\n ipad: false,\n edge: false,\n ie: false,\n firefox: false,\n macos: false,\n windows: false,\n cordova: !!(window.cordova || window.phonegap),\n phonegap: !!(window.cordova || window.phonegap),\n electron: false,\n };\n\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\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 ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n const edge = ua.indexOf('Edge/') >= 0;\n const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n const windows = platform === 'Win32';\n const electron = ua.toLowerCase().indexOf('electron') >= 0;\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n if (!ipad\n && macos\n && Support.touch\n && (\n (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n || (screenWidth === 768 && screenHeight === 1024) // other\n )\n ) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n macos = false;\n }\n\n device.ie = ie;\n device.edge = edge;\n device.firefox = firefox;\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.osVersion = android[2];\n device.android = true;\n device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n // iOS\n if (iphone && !ipod) {\n device.osVersion = iphone[2].replace(/_/g, '.');\n device.iphone = true;\n }\n if (ipad) {\n device.osVersion = ipad[2].replace(/_/g, '.');\n device.ipad = true;\n }\n if (ipod) {\n device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n device.ipod = true;\n }\n // iOS 8+ changed UA\n if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n if (device.osVersion.split('.')[0] === '10') {\n device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n }\n }\n\n // Webview\n device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n device.webview = device.webView;\n device.standalone = device.webView;\n\n // Desktop\n device.desktop = !(device.ios || device.android) || electron;\n if (device.desktop) {\n device.electron = electron;\n device.macos = macos;\n device.windows = windows;\n if (device.macos) {\n device.os = 'macos';\n }\n if (device.windows) {\n device.os = 'windows';\n }\n }\n\n // Pixel Ratio\n device.pixelRatio = window.devicePixelRatio || 1;\n\n // Export object\n return device;\n}());\n\nfunction onTouchStart (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\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;\n if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n swiper.allowClick = true;\n return;\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;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app (UIWebView) cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= window.screen.width - edgeSwipeThreshold))\n ) {\n return;\n }\n\n Utils.extend(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined,\n });\n\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = Utils.now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n if ($targetEl.is(data.formElements)) preventDefault = false;\n if (\n document$1.activeElement\n && $(document$1.activeElement).is(data.formElements)\n && document$1.activeElement !== $targetEl[0]\n ) {\n document$1.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const { params, touches, rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n if (data.isTouchEvent && e.type === 'mousemove') 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 if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n // isMoved = true;\n swiper.allowClick = false;\n if (data.isTouched) {\n Utils.extend(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n });\n data.touchStartTime = Utils.now();\n }\n return;\n }\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (\n (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n ) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (\n (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n ) {\n return;\n }\n }\n if (data.isTouchEvent && document$1.activeElement) {\n if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n if (e.targetTouches && e.targetTouches.length > 1) return;\n\n touches.currentX = pageX;\n touches.currentY = pageY;\n\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 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 if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop) {\n swiper.loopFix();\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\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 }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n\n // Threshold\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;\n\n // Update active index in free mode\n if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode) {\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime,\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: Utils.now(),\n });\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n\n const {\n params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = Utils.now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n swiper.updateClickedSlide(e);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = Utils.now();\n Utils.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 data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n\n let currentPos;\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 (params.freeMode) {\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\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 return;\n }\n\n if (params.freeModeMomentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n swiper.velocity = 0;\n }\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 if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeModeMomentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeModeMomentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeModeSticky) {\n let nextSlide;\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 newPosition = -newPosition;\n }\n if (needsLoopFix) {\n swiper.once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\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 if (params.freeModeSticky) {\n // If freeModeSticky 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 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.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeModeMomentumBounce && 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 swiper.emit('momentumBounce');\n\n swiper.setTransition(params.speed);\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n });\n } else if (swiper.velocity) {\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\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.freeModeSticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n return;\n }\n\n // Find current slide\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\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 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 }\n\n // Find current slide size\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 if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n else swiper.slideTo(stopIndex);\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + increment);\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\nfunction onResize () {\n const swiper = this;\n\n const { params, el } = swiper;\n\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n swiper.updateSlidesClasses();\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !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 }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick (e) {\n const swiper = this;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll () {\n const swiper = this;\n const { wrapperEl, rtlTranslate } = swiper;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n if (rtlTranslate) {\n swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n } else {\n swiper.translate = -wrapperEl.scrollLeft;\n }\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === -0) swiper.translate = 0;\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\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\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n const swiper = this;\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n if (!dummyEventAttached) {\n document$1.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n document$1.addEventListener('mousemove', swiper.onTouchMove, capture);\n document$1.addEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.addEventListener('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl.addEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n } else {\n swiper.on('observerUpdate', onResize, true);\n }\n}\n\nfunction detachEvents() {\n const swiper = this;\n\n const {\n params, touchEvents, el, wrapperEl,\n } = swiper;\n\n const capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && Support.pointerEvents) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.removeEventListener('mousedown', swiper.onTouchStart, false);\n document$1.removeEventListener('mousemove', swiper.onTouchMove, capture);\n document$1.removeEventListener('mouseup', swiper.onTouchEnd, false);\n }\n }\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el.removeEventListener('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl.removeEventListener('scroll', swiper.onScroll);\n }\n\n // Resize handler\n swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n attachEvents,\n detachEvents,\n};\n\nfunction setBreakpoint () {\n const swiper = this;\n const {\n activeIndex, initialized, loopedSlides = 0, params, $el,\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n const paramValue = breakpointOnlyParams[param];\n if (typeof paramValue === 'undefined') return;\n if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n breakpointOnlyParams[param] = 'auto';\n } else if (param === 'slidesPerView') {\n breakpointOnlyParams[param] = parseFloat(paramValue);\n } else {\n breakpointOnlyParams[param] = parseInt(paramValue, 10);\n }\n });\n }\n\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = params.slidesPerColumn > 1;\n const isMultiRow = breakpointParams.slidesPerColumn > 1;\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}multirow`);\n if (breakpointParams.slidesPerColumnFill === 'column') {\n $el.addClass(`${params.containerModifierClass}multirow-column`);\n }\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 Utils.extend(swiper.params, breakpointParams);\n\n Utils.extend(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n });\n\n swiper.currentBreakpoint = breakpoint;\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\nfunction getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) return undefined;\n let breakpoint = false;\n\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 = window.innerHeight * minRatio;\n return { value, point };\n }\n return { value: point, point };\n });\n\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const { point, value } = points[i];\n if (value <= window.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n const swiper = this;\n const {\n classNames, params, rtl, $el,\n } = swiper;\n const suffixes = [];\n\n suffixes.push('initialized');\n suffixes.push(params.direction);\n\n if (params.freeMode) {\n suffixes.push('free-mode');\n }\n if (params.autoHeight) {\n suffixes.push('autoheight');\n }\n if (rtl) {\n suffixes.push('rtl');\n }\n if (params.slidesPerColumn > 1) {\n suffixes.push('multirow');\n if (params.slidesPerColumnFill === 'column') {\n suffixes.push('multirow-column');\n }\n }\n if (Device.android) {\n suffixes.push('android');\n }\n if (Device.ios) {\n suffixes.push('ios');\n }\n\n if (params.cssMode) {\n suffixes.push('css-mode');\n }\n\n suffixes.forEach((suffix) => {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n const swiper = this;\n const { $el, classNames } = swiper;\n\n $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n let image;\n function onReady() {\n if (callback) callback();\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n if (sizes) {\n image.sizes = sizes;\n }\n if (srcset) {\n image.srcset = srcset;\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\nfunction preloadImages () {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(\n imageEl,\n imageEl.currentSrc || imageEl.getAttribute('src'),\n imageEl.srcset || imageEl.getAttribute('srcset'),\n imageEl.sizes || imageEl.getAttribute('sizes'),\n true,\n onReady\n );\n }\n}\n\nvar images = {\n loadImage,\n preloadImages,\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const params = swiper.params;\n const wasLocked = swiper.isLocked;\n const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n swiper.isLocked = lastSlidePosition <= swiper.size;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n swiper.allowSlideNext = !swiper.isLocked;\n swiper.allowSlidePrev = !swiper.isLocked;\n\n // events\n if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n swiper.navigation.update();\n }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n //\n preventInteractionOnTransition: false,\n\n // To support iOS's swipe-to-go-back gesture (when being used in-app, with UIWebView).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n\n // Free mode\n freeMode: false,\n freeModeMomentum: true,\n freeModeMomentumRatio: 1,\n freeModeMomentumBounce: true,\n freeModeMomentumBounceRatio: 1,\n freeModeMomentumVelocityRatio: 1,\n freeModeSticky: false,\n freeModeMinimumVelocity: 0.02,\n\n // Autoheight\n autoHeight: false,\n\n // Set wrapper width\n setWrapperSize: false,\n\n // Virtual Translate\n virtualTranslate: false,\n\n // Effects\n effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerColumnFill: 'column',\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0, // in px\n slidesOffsetAfter: 0, // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: false,\n\n // Round length\n roundLengths: false,\n\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\n // Unique Navigation Elements\n uniqueNavElements: true,\n\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n\n // Progress\n watchSlidesProgress: false,\n watchSlidesVisibility: false,\n\n // Cursor\n grabCursor: false,\n\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null, // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n\n // Passive Listeners\n passiveListeners: true,\n\n // NS\n containerModifierClass: 'swiper-container-', // 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\n // Callbacks\n runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n manipulation,\n events,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes,\n images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n constructor(...args) {\n let el;\n let params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n\n params = Utils.extend({}, params);\n if (el && !params.el) params.el = el;\n\n super(params);\n\n Object.keys(prototypes).forEach((prototypeGroup) => {\n Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n const swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach((moduleName) => {\n const module = swiper.modules[moduleName];\n if (module.params) {\n const moduleParamName = Object.keys(module.params)[0];\n const moduleParams = module.params[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) return;\n if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n if (params[moduleParamName] === true) {\n params[moduleParamName] = { enabled: true };\n }\n if (\n typeof params[moduleParamName] === 'object'\n && !('enabled' in params[moduleParamName])\n ) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n }\n });\n\n // Extend defaults with modules params\n const swiperParams = Utils.extend({}, defaults);\n swiper.useModulesParams(swiperParams);\n\n // Extend defaults with passed params\n swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = Utils.extend({}, swiper.params);\n swiper.passedParams = Utils.extend({}, params);\n\n // Save Dom lib\n swiper.$ = $;\n\n // Find el\n const $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n const swipers = [];\n $el.each((index, containerEl) => {\n const newParams = Utils.extend({}, params, { el: containerEl });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n }\n\n el.swiper = swiper;\n $el.data('swiper', swiper);\n\n // Find Wrapper\n let $wrapperEl;\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n // Children needs to return slot items\n $wrapperEl.children = (options) => $el.children(options);\n } else {\n $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n\n // Classes\n classNames: [],\n\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Indexes\n activeIndex: 0,\n realIndex: 0,\n\n //\n isBeginning: true,\n isEnd: false,\n\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n\n // Touch Events\n touchEvents: (function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n let desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n }\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 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 formElements: 'input, select, option, textarea, button, video, label',\n // Last click time\n lastClickTime: Utils.now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined,\n },\n\n // Clicks\n allowClick: true,\n\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0,\n },\n\n // Images\n imagesToLoad: [],\n imagesLoaded: 0,\n\n });\n\n // Install Modules\n swiper.useModules();\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n return swiper;\n }\n\n slidesPerViewDynamic() {\n const swiper = this;\n const {\n params, slides, slidesGrid, size: swiperSize, activeIndex,\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\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 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 for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const { snapGrid, params } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\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 let translated;\n if (swiper.params.freeMode) {\n setTranslate();\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 if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n return swiper;\n }\n\n swiper.$el\n .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n swiper.params.direction = newDirection;\n\n swiper.slides.each((slideIndex, slideEl) => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n\n return swiper;\n }\n\n init() {\n const swiper = this;\n if (swiper.initialized) return;\n\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n }\n\n // Attach events\n swiper.attachEvents();\n\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params, $el, $wrapperEl, slides,\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n if (slides && slides.length) {\n slides\n .removeClass([\n params.slideVisibleClass,\n params.slideActiveClass,\n params.slideNextClass,\n params.slidePrevClass,\n ].join(' '))\n .removeAttr('style')\n .removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach((eventName) => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n swiper.$el.data('swiper', null);\n Utils.deleteProps(swiper);\n }\n swiper.destroyed = true;\n\n return null;\n }\n\n static extendDefaults(newDefaults) {\n Utils.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 get Class() {\n return SwiperClass;\n }\n\n static get $() {\n return $;\n }\n}\n\nvar Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n};\n\nvar Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n};\n\nconst Browser = (function Browser() {\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 return {\n isEdge: !!window.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n };\n}());\n\nvar Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n};\n\nvar Resize = {\n name: 'resize',\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n // Emit resize\n window.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy() {\n const swiper = this;\n window.removeEventListener('resize', swiper.resize.resizeHandler);\n window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n};\n\nconst Observer = {\n func: window.MutationObserver || window.WebkitMutationObserver,\n attach(target, options = {}) {\n const swiper = this;\n\n const ObserverFunc = Observer.func;\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 swiper.emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\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\n swiper.observer.observers.push(observer);\n },\n init() {\n const swiper = this;\n if (!Support.observer || !swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n for (let i = 0; i < containerParents.length; i += 1) {\n swiper.observer.attach(containerParents[i]);\n }\n }\n // Observe container\n swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n // Observe wrapper\n swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n },\n destroy() {\n const swiper = this;\n swiper.observer.observers.forEach((observer) => {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n};\n\nvar Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n observer: {\n init: Observer.init.bind(swiper),\n attach: Observer.attach.bind(swiper),\n destroy: Observer.destroy.bind(swiper),\n observers: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.observer.init();\n },\n destroy() {\n const swiper = this;\n swiper.observer.destroy();\n },\n },\n};\n\nconst Virtual = {\n update(force) {\n const swiper = this;\n const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n renderSlide,\n offset: previousOffset,\n } = swiper.virtual;\n swiper.updateActiveIndex();\n const activeIndex = swiper.activeIndex || 0;\n\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';\n else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n slidesBefore = slidesPerGroup + addSlidesAfter;\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\n Utils.extend(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 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 swiper.updateProgress();\n return;\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 for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\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 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 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 renderSlide(slide, index) {\n const swiper = this;\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n const $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $(`
`);\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 appendSlide(slides) {\n const swiper = this;\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 swiper.virtual.update(true);\n },\n prependSlide(slides) {\n const swiper = this;\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 newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\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 if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n swiper.virtual.update(true);\n swiper.slideTo(newActiveIndex, 0);\n },\n removeSlide(slidesIndexes) {\n const swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\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 if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\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 if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n swiper.virtual.update(true);\n swiper.slideTo(activeIndex, 0);\n },\n removeAllSlides() {\n const swiper = this;\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n swiper.virtual.update(true);\n swiper.slideTo(0, 0);\n },\n};\n\nvar Virtual$1 = {\n name: 'virtual',\n params: {\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n addSlidesBefore: 0,\n addSlidesAfter: 0,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n virtual: {\n update: Virtual.update.bind(swiper),\n appendSlide: Virtual.appendSlide.bind(swiper),\n prependSlide: Virtual.prependSlide.bind(swiper),\n removeSlide: Virtual.removeSlide.bind(swiper),\n removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n renderSlide: Virtual.renderSlide.bind(swiper),\n slides: swiper.params.virtual.slides,\n cache: {},\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n const overwriteParams = {\n watchSlidesProgress: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n\n if (!swiper.params.initialSlide) {\n swiper.virtual.update();\n }\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.update();\n },\n },\n};\n\nconst Keyboard = {\n handle(event) {\n const swiper = this;\n const { rtlTranslate: rtl } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n const kc = e.keyCode || e.charCode;\n // Directions locks\n if (!swiper.allowSlideNext && ((swiper.isHorizontal() && kc === 39) || (swiper.isVertical() && kc === 40) || kc === 34)) {\n return false;\n }\n if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && kc === 37) || (swiper.isVertical() && kc === 38) || kc === 33)) {\n return false;\n }\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n if (swiper.params.keyboard.onlyInViewport && (kc === 33 || kc === 34 || kc === 37 || kc === 39 || kc === 38 || kc === 40)) {\n let inView = false;\n // Check that swiper should be inside of visible area of window\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\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 = [\n [swiperOffset.left, swiperOffset.top],\n [swiperOffset.left + swiper.width, swiperOffset.top],\n [swiperOffset.left, swiperOffset.top + swiper.height],\n [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 if (\n point[0] >= 0 && point[0] <= windowWidth\n && point[1] >= 0 && point[1] <= windowHeight\n ) {\n inView = true;\n }\n }\n if (!inView) return undefined;\n }\n if (swiper.isHorizontal()) {\n if (kc === 33 || kc === 34 || kc === 37 || kc === 39) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (((kc === 34 || kc === 39) && !rtl) || ((kc === 33 || kc === 37) && rtl)) swiper.slideNext();\n if (((kc === 33 || kc === 37) && !rtl) || ((kc === 34 || kc === 39) && rtl)) swiper.slidePrev();\n } else {\n if (kc === 33 || kc === 34 || kc === 38 || kc === 40) {\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n }\n if (kc === 34 || kc === 40) swiper.slideNext();\n if (kc === 33 || kc === 38) swiper.slidePrev();\n }\n swiper.emit('keyPress', kc);\n return undefined;\n },\n enable() {\n const swiper = this;\n if (swiper.keyboard.enabled) return;\n $(document$1).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable() {\n const swiper = this;\n if (!swiper.keyboard.enabled) return;\n $(document$1).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n};\n\nvar Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n keyboard: {\n enabled: false,\n enable: Keyboard.enable.bind(swiper),\n disable: Keyboard.disable.bind(swiper),\n handle: Keyboard.handle.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n};\n\nfunction isEventSupported() {\n const eventName = 'onwheel';\n let isSupported = eventName in document$1;\n\n if (!isSupported) {\n const element = document$1.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && document$1.implementation\n && document$1.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && document$1.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\nconst Mousewheel = {\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n event() {\n if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\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 if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) { // 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) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = (pX < 1) ? -1 : 1;\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 handleMouseEnter() {\n const swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave() {\n const swiper = this;\n swiper.mouseEntered = false;\n },\n handle(event) {\n let e = event;\n const swiper = this;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n const data = Mousewheel.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;\n else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = data.pixelY;\n 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\n if (params.invert) delta = -delta;\n\n if (!swiper.params.freeMode) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: Utils.now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event,\n };\n\n // Keep the most recent events\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // 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 if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta) {\n swiper.mousewheel.animateSlider(newEvent);\n }\n } else {\n swiper.mousewheel.animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (swiper.mousewheel.releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\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 = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n const { lastEventBeforeSnap } = swiper.mousewheel;\n const ignoreWheelEvents = lastEventBeforeSnap\n && newEvent.time < lastEventBeforeSnap.time + 500\n && newEvent.delta <= lastEventBeforeSnap.delta\n && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n let position = swiper.getTranslate() + (delta * params.sensitivity);\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\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.freeModeSticky) {\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 momuntum 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(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = undefined;\n const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\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\n && newEvent.time - firstEvent.time < 500\n && firstEvent.delta - newEvent.delta >= 1\n && newEvent.delta <= 6\n ) {\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 swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.mousewheel.timeout = Utils.nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n if (!swiper.mousewheel.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 swiper.mousewheel.timeout = Utils.nextTick(() => {\n const snapToThreshold = 0.5;\n swiper.mousewheel.lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n return false;\n },\n animateSlider(newEvent) {\n const swiper = this;\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 if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\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 if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n // Return false as a default\n return false;\n },\n releaseScroll(newEvent) {\n const swiper = this;\n const params = swiper.params.mousewheel;\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 return false;\n },\n enable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n target.on(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = true;\n return true;\n },\n disable() {\n const swiper = this;\n const event = Mousewheel.event();\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n return true;\n }\n if (!event) return false;\n if (!swiper.mousewheel.enabled) return false;\n let target = swiper.$el;\n if (swiper.params.mousewheel.eventsTarged !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarged);\n }\n target.off(event, swiper.mousewheel.handle);\n swiper.mousewheel.enabled = false;\n return true;\n },\n};\n\nvar Mousewheel$1 = {\n name: 'mousewheel',\n params: {\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarged: 'container',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n mousewheel: {\n enabled: false,\n enable: Mousewheel.enable.bind(swiper),\n disable: Mousewheel.disable.bind(swiper),\n handle: Mousewheel.handle.bind(swiper),\n handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n animateSlider: Mousewheel.animateSlider.bind(swiper),\n releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n lastScrollTime: Utils.now(),\n lastEventBeforeSnap: undefined,\n recentWheelEvents: [],\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n swiper.mousewheel.disable();\n }\n if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n },\n destroy() {\n const swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n },\n },\n};\n\nconst Navigation = {\n update() {\n // Update Navigation Buttons\n const swiper = this;\n const params = swiper.params.navigation;\n\n if (swiper.params.loop) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n $prevEl.addClass(params.disabledClass);\n } else {\n $prevEl.removeClass(params.disabledClass);\n }\n $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n $nextEl.addClass(params.disabledClass);\n } else {\n $nextEl.removeClass(params.disabledClass);\n }\n $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n },\n onPrevClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) return;\n swiper.slidePrev();\n },\n onNextClick(e) {\n const swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) return;\n swiper.slideNext();\n },\n init() {\n const swiper = this;\n const params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) return;\n\n let $nextEl;\n let $prevEl;\n if (params.nextEl) {\n $nextEl = $(params.nextEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.nextEl === 'string'\n && $nextEl.length > 1\n && swiper.$el.find(params.nextEl).length === 1\n ) {\n $nextEl = swiper.$el.find(params.nextEl);\n }\n }\n if (params.prevEl) {\n $prevEl = $(params.prevEl);\n if (\n swiper.params.uniqueNavElements\n && typeof params.prevEl === 'string'\n && $prevEl.length > 1\n && swiper.$el.find(params.prevEl).length === 1\n ) {\n $prevEl = swiper.$el.find(params.prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', swiper.navigation.onNextClick);\n }\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', swiper.navigation.onPrevClick);\n }\n\n Utils.extend(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy() {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', swiper.navigation.onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', swiper.navigation.onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n },\n};\n\nvar Navigation$1 = {\n name: 'navigation',\n params: {\n navigation: {\n nextEl: null,\n prevEl: null,\n\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n navigation: {\n init: Navigation.init.bind(swiper),\n update: Navigation.update.bind(swiper),\n destroy: Navigation.destroy.bind(swiper),\n onNextClick: Navigation.onNextClick.bind(swiper),\n onPrevClick: Navigation.onPrevClick.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n fromEdge() {\n const swiper = this;\n swiper.navigation.update();\n },\n destroy() {\n const swiper = this;\n swiper.navigation.destroy();\n },\n click(e) {\n const swiper = this;\n const { $nextEl, $prevEl } = swiper.navigation;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n let isHidden;\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 if (isHidden === true) {\n swiper.emit('navigationShow', swiper);\n } else {\n swiper.emit('navigationHide', swiper);\n }\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n },\n },\n};\n\nconst Pagination = {\n update() {\n // Render || Update Pagination bullets/items\n const swiper = this;\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n // Current/Total\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n current -= (slidesLength - (swiper.loopedSlides * 2));\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 }\n // Types\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 if (params.dynamicBullets) {\n swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (swiper.pagination.dynamicBulletIndex < 0) {\n swiper.pagination.dynamicBulletIndex = 0;\n }\n }\n firstIndex = current - swiper.pagination.dynamicBulletIndex;\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n if ($el.length > 1) {\n bullets.each((index, bullet) => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n if (bulletIndex === firstIndex) {\n $bullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n }\n if (bulletIndex === lastIndex) {\n $bullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\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 bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n } else {\n $firstDisplayedBullet\n .prev()\n .addClass(`${params.bulletActiveClass}-prev`)\n .prev()\n .addClass(`${params.bulletActiveClass}-prev-prev`);\n $lastDisplayedBullet\n .next()\n .addClass(`${params.bulletActiveClass}-next`)\n .next()\n .addClass(`${params.bulletActiveClass}-next-next`);\n }\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n if (params.type === 'fraction') {\n $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n swiper.emit('paginationRender', swiper, $el[0]);\n } else {\n swiper.emit('paginationUpdate', swiper, $el[0]);\n }\n $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n },\n render() {\n // Render Container\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n if (params.type === 'bullets') {\n const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\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 $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = ``\n + ' / '\n + ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n $el.html(paginationHTML);\n }\n if (params.type !== 'custom') {\n swiper.emit('paginationRender', swiper.pagination.$el[0]);\n }\n },\n init() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el) return;\n\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (\n swiper.params.uniqueNavElements\n && typeof params.el === 'string'\n && $el.length > 1\n && swiper.$el.find(params.el).length === 1\n ) {\n $el = swiper.$el.find(params.el);\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n swiper.pagination.dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', `.${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 Utils.extend(swiper.pagination, {\n $el,\n el: $el[0],\n });\n },\n destroy() {\n const swiper = this;\n const params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n const $el = swiper.pagination.$el;\n\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n if (params.clickable) {\n $el.off('click', `.${params.bulletClass}`);\n }\n },\n};\n\nvar Pagination$1 = {\n name: 'pagination',\n params: {\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', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: (number) => number,\n formatFractionTotal: (number) => number,\n bulletClass: 'swiper-pagination-bullet',\n bulletActiveClass: 'swiper-pagination-bullet-active',\n modifierClass: 'swiper-pagination-', // NEW\n currentClass: 'swiper-pagination-current',\n totalClass: 'swiper-pagination-total',\n hiddenClass: 'swiper-pagination-hidden',\n progressbarFillClass: 'swiper-pagination-progressbar-fill',\n progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n clickableClass: 'swiper-pagination-clickable', // NEW\n lockClass: 'swiper-pagination-lock',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n pagination: {\n init: Pagination.init.bind(swiper),\n render: Pagination.render.bind(swiper),\n update: Pagination.update.bind(swiper),\n destroy: Pagination.destroy.bind(swiper),\n dynamicBulletIndex: 0,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n swiper.pagination.update();\n }\n },\n snapIndexChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange() {\n const swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange() {\n const swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy() {\n const swiper = this;\n swiper.pagination.destroy();\n },\n click(e) {\n const swiper = this;\n if (\n swiper.params.pagination.el\n && swiper.params.pagination.hideOnClick\n && swiper.pagination.$el.length > 0\n && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n ) {\n const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n swiper.emit('paginationShow', swiper);\n } else {\n swiper.emit('paginationHide', swiper);\n }\n swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n },\n },\n};\n\nconst Scrollbar = {\n setTranslate() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n const {\n dragSize, trackSize, $dragEl, $el,\n } = scrollbar;\n const params = swiper.params.scrollbar;\n\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\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 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 if (params.hide) {\n clearTimeout(swiper.scrollbar.timeout);\n $el[0].style.opacity = 1;\n swiper.scrollbar.timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize() {\n const swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n const { scrollbar } = swiper;\n const { $dragEl, $el } = scrollbar;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n const divider = swiper.size / swiper.virtualSize;\n const moveDivider = divider * (trackSize / swiper.size);\n let dragSize;\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 if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n Utils.extend(scrollbar, {\n trackSize,\n divider,\n moveDivider,\n dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition(e) {\n const swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n },\n setDragPosition(e) {\n const swiper = this;\n const { scrollbar, rtlTranslate: rtl } = swiper;\n const {\n $el,\n dragSize,\n trackSize,\n dragStartPos,\n } = scrollbar;\n\n let positionRatio;\n positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n },\n onDragStart(e) {\n const swiper = this;\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n swiper.scrollbar.isTouched = true;\n swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n scrollbar.setDragPosition(e);\n\n clearTimeout(swiper.scrollbar.dragTimeout);\n\n $el.transition(0);\n if (params.hide) {\n $el.css('opacity', 1);\n }\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n swiper.emit('scrollbarDragStart', e);\n },\n onDragMove(e) {\n const swiper = this;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el, $dragEl } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n if (e.preventDefault) e.preventDefault();\n else e.returnValue = false;\n scrollbar.setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n swiper.emit('scrollbarDragMove', e);\n },\n onDragEnd(e) {\n const swiper = this;\n\n const params = swiper.params.scrollbar;\n const { scrollbar, $wrapperEl } = swiper;\n const { $el } = scrollbar;\n\n if (!swiper.scrollbar.isTouched) return;\n swiper.scrollbar.isTouched = false;\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n if (params.hide) {\n clearTimeout(swiper.scrollbar.dragTimeout);\n swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n swiper.emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n },\n enableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n disableDraggable() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const {\n scrollbar, touchEventsTouch, touchEventsDesktop, params,\n } = swiper;\n const $el = scrollbar.$el;\n const target = $el[0];\n const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n } else {\n target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.scrollbar.el) return;\n const { scrollbar, $el: $swiperEl } = swiper;\n const params = swiper.params.scrollbar;\n\n let $el = $(params.el);\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 if ($dragEl.length === 0) {\n $dragEl = $(``);\n $el.append($dragEl);\n }\n\n Utils.extend(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n};\n\nvar Scrollbar$1 = {\n name: 'scrollbar',\n params: {\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 create() {\n const swiper = this;\n Utils.extend(swiper, {\n scrollbar: {\n init: Scrollbar.init.bind(swiper),\n destroy: Scrollbar.destroy.bind(swiper),\n updateSize: Scrollbar.updateSize.bind(swiper),\n setTranslate: Scrollbar.setTranslate.bind(swiper),\n setTransition: Scrollbar.setTransition.bind(swiper),\n enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n onDragStart: Scrollbar.onDragStart.bind(swiper),\n onDragMove: Scrollbar.onDragMove.bind(swiper),\n onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n isTouched: false,\n timeout: null,\n dragTimeout: null,\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate() {\n const swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate() {\n const swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy() {\n const swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n};\n\nconst Parallax = {\n setTransform(el, progress) {\n const swiper = this;\n const { rtl } = swiper;\n\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n\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 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 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 setTranslate() {\n const swiper = this;\n const {\n $el, slides, progress, 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]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each((slideIndex, slideEl) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\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]')\n .each((index, el) => {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition(duration = this.params.speed) {\n const swiper = this;\n const { $el } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each((index, 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\nvar Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n parallax: {\n setTransform: Parallax.setTransform.bind(swiper),\n setTranslate: Parallax.setTranslate.bind(swiper),\n setTransition: Parallax.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTranslate() {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (!swiper.params.parallax.enabled) return;\n swiper.parallax.setTransition(duration);\n },\n },\n};\n\nconst Zoom = {\n // Calc Scale From Multi-touches\n 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 },\n // Events\n onGestureStart(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\n if (!Support.gestures) {\n if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureTouched = true;\n gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\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('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 if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n swiper.zoom.isScaling = true;\n },\n onGestureChange(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n return;\n }\n zoom.fakeGestureMoved = true;\n gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (Support.gestures) {\n zoom.scale = e.scale * zoom.currentScale;\n } else {\n zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n }\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n }\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n },\n onGestureEnd(e) {\n const swiper = this;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (!Support.gestures) {\n if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n return;\n }\n if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n return;\n }\n zoom.fakeGestureTouched = false;\n zoom.fakeGestureMoved = false;\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 zoom.currentScale = zoom.scale;\n zoom.isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n },\n onTouchStart(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (Device.android) 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 onTouchMove(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = 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 = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = Utils.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 if (swiper.rtl) {\n image.startX = -image.startX;\n image.startY = -image.startY;\n }\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\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\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 && !zoom.isScaling) {\n if (\n swiper.isHorizontal()\n && (\n (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n )\n ) {\n image.isTouched = false;\n return;\n } if (\n !swiper.isHorizontal()\n && (\n (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n )\n ) {\n image.isTouched = false;\n return;\n }\n }\n e.preventDefault();\n e.stopPropagation();\n\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 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 if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n }\n\n // Velocity\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\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTouchEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture, image, velocity } = zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\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;\n\n // Fix duration\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\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\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\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n },\n onTransitionEnd() {\n const swiper = this;\n const zoom = swiper.zoom;\n const { gesture } = zoom;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n zoom.currentScale = 1;\n\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n },\n // Toggle Zoom\n toggle(e) {\n const swiper = this;\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoom.out();\n } else {\n // Zoom In\n zoom.in(e);\n }\n },\n in(e) {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture, image } = 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 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\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 zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left;\n offsetY = gesture.$slideEl.offset().top;\n diffX = (offsetX + (slideWidth / 2)) - touchX;\n diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n\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\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\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 out() {\n const swiper = this;\n\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n const { gesture } = 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 gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n zoom.scale = 1;\n zoom.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 },\n // Attach/Detach Events\n enable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n disable() {\n const swiper = this;\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n\n swiper.zoom.enabled = false;\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n const slideSelector = `.${swiper.params.slideClass}`;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n }\n }\n\n // Move image\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n },\n};\n\nvar Zoom$1 = {\n name: 'zoom',\n params: {\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 create() {\n const swiper = this;\n const zoom = {\n enabled: false,\n scale: 1,\n currentScale: 1,\n isScaling: false,\n gesture: {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3,\n },\n 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 velocity: {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined,\n },\n };\n\n ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom,\n });\n\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n swiper.emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy() {\n const swiper = this;\n swiper.zoom.disable();\n },\n touchStart(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchStart(e);\n },\n touchEnd(e) {\n const swiper = this;\n if (!swiper.zoom.enabled) return;\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap(e) {\n const swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n};\n\nconst Lazy = {\n loadInSlide(index, loadInDuplicate = true) {\n const swiper = this;\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\n const $slideEl = isVirtual\n ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n : swiper.slides.eq(index);\n\n let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images = $images.add($slideEl[0]);\n }\n if ($images.length === 0) return;\n\n $images.each((imageIndex, imageEl) => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\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\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 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 if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\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 if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n }\n }\n swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load() {\n const swiper = this;\n const {\n $wrapperEl, params: swiperParams, slides, activeIndex,\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n\n let slidesPerView = swiperParams.slidesPerView;\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 return false;\n }\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n return $(slideEl).index();\n }\n\n if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n if (swiper.params.watchSlidesVisibility) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n swiper.lazy.loadInSlide(activeIndex);\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);\n // Next Slides\n for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n // Prev Slides\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) swiper.lazy.loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n }\n }\n },\n};\n\nvar Lazy$1 = {\n name: 'lazy',\n params: {\n lazy: {\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n lazy: {\n initialImageLoaded: false,\n load: Lazy.load.bind(swiper),\n loadInSlide: Lazy.loadInSlide.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll() {\n const swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart() {\n const swiper = this;\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n swiper.lazy.load();\n }\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n swiper.lazy.load();\n }\n },\n },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n LinearSpline: 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 while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }());\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // 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 let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n };\n return this;\n },\n // xxx: for now i will just save one spline function to to\n getInterpolateFunction(c) {\n const swiper = this;\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop\n ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n },\n setTranslate(setTranslate, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\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 if (swiper.params.controller.by === 'slide') {\n swiper.controller.getInterpolateFunction(c);\n // 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 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 c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\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 setTransition(duration, byController) {\n const swiper = this;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n Utils.nextTick(() => {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n c.transitionEnd();\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};\nvar Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n controller: {\n control: swiper.params.controller.control,\n getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n setTranslate: Controller.setTranslate.bind(swiper),\n setTransition: Controller.setTransition.bind(swiper),\n },\n });\n },\n on: {\n update() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n resize() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n },\n setTranslate(translate, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n },\n },\n};\n\nconst a11y = {\n makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey(e) {\n const swiper = this;\n const params = swiper.params.a11y;\n if (e.keyCode !== 13) return;\n const $targetEl = $(e.target);\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n swiper.a11y.notify(params.lastSlideMessage);\n } else {\n swiper.a11y.notify(params.nextSlideMessage);\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 if (swiper.isBeginning) {\n swiper.a11y.notify(params.firstSlideMessage);\n } else {\n swiper.a11y.notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n $targetEl[0].click();\n }\n },\n notify(message) {\n const swiper = this;\n const notification = swiper.a11y.liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n },\n updateNavigation() {\n const swiper = this;\n\n if (swiper.params.loop || !swiper.navigation) return;\n const { $nextEl, $prevEl } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n swiper.a11y.disableEl($prevEl);\n } else {\n swiper.a11y.enableEl($prevEl);\n }\n }\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n swiper.a11y.disableEl($nextEl);\n } else {\n swiper.a11y.enableEl($nextEl);\n }\n }\n },\n updatePagination() {\n const swiper = this;\n const params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n const $bulletEl = $(bulletEl);\n swiper.a11y.makeElFocusable($bulletEl);\n swiper.a11y.addElRole($bulletEl, 'button');\n swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/{{index}}/, $bulletEl.index() + 1));\n });\n }\n },\n init() {\n const swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n const params = swiper.params.a11y;\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n swiper.a11y.makeElFocusable($nextEl);\n swiper.a11y.addElRole($nextEl, 'button');\n swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n $nextEl.on('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n swiper.a11y.makeElFocusable($prevEl);\n swiper.a11y.addElRole($prevEl, 'button');\n swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n $prevEl.on('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n let $nextEl;\n let $prevEl;\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n if ($nextEl) {\n $nextEl.off('keydown', swiper.a11y.onEnterKey);\n }\n if ($prevEl) {\n $prevEl.off('keydown', swiper.a11y.onEnterKey);\n }\n\n // Pagination\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n }\n },\n};\nvar A11y = {\n name: 'a11y',\n params: {\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 },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $(``),\n },\n });\n Object.keys(a11y).forEach((methodName) => {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n fromEdge() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updateNavigation();\n },\n paginationUpdate() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.updatePagination();\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.a11y.enabled) return;\n swiper.a11y.destroy();\n },\n },\n};\n\nconst History = {\n init() {\n const swiper = this;\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n const history = swiper.history;\n history.initialized = true;\n history.paths = History.getPathValues();\n if (!history.paths.key && !history.paths.value) return;\n history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy() {\n const swiper = this;\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState() {\n const swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues() {\n const pathArray = window.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 { key, value };\n },\n setHistory(key, index) {\n const swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n const slide = swiper.slides.eq(index);\n let value = History.slugify(slide.attr('data-history'));\n if (!window.location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({ value }, null, value);\n } else {\n window.history.pushState({ value }, null, value);\n }\n },\n slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide(speed, value, runCallbacks) {\n const swiper = this;\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 = History.slugify(slide.attr('data-history'));\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\nvar History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n history: {\n init: History.init.bind(swiper),\n setHistory: History.setHistory.bind(swiper),\n setHistoryPopState: History.setHistoryPopState.bind(swiper),\n scrollToSlide: History.scrollToSlide.bind(swiper),\n destroy: History.destroy.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.history.initialized && swiper.params.cssMode) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n },\n};\n\nconst HashNavigation = {\n onHashCange() {\n const swiper = this;\n const newHash = document$1.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\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 setHash() {\n const swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\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 } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document$1.location.hash = hash || '';\n }\n },\n init() {\n const swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n swiper.hashNavigation.initialized = true;\n const hash = document$1.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\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 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 if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n};\nvar HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n hashNavigation: {\n initialized: false,\n init: HashNavigation.init.bind(swiper),\n destroy: HashNavigation.destroy.bind(swiper),\n setHash: HashNavigation.setHash.bind(swiper),\n onHashCange: HashNavigation.onHashCange.bind(swiper),\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd() {\n const swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange() {\n const swiper = this;\n if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n swiper.hashNavigation.setHash();\n }\n },\n },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n run() {\n const swiper = this;\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = Utils.nextTick(() => {\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isBeginning) {\n swiper.slidePrev(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.isEnd) {\n swiper.slideNext(swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, swiper.params.speed, true, true);\n swiper.emit('autoplay');\n } else {\n swiper.autoplay.stop();\n }\n if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n }, delay);\n },\n start() {\n const swiper = this;\n if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n swiper.emit('autoplayStart');\n swiper.autoplay.run();\n return true;\n },\n stop() {\n const swiper = this;\n if (!swiper.autoplay.running) return false;\n if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n if (swiper.autoplay.timeout) {\n clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.timeout = undefined;\n }\n swiper.autoplay.running = false;\n swiper.emit('autoplayStop');\n return true;\n },\n pause(speed) {\n const swiper = this;\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n swiper.autoplay.paused = true;\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n swiper.autoplay.run();\n } else {\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n }\n },\n};\n\nvar Autoplay$1 = {\n name: 'autoplay',\n params: {\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n autoplay: {\n running: false,\n paused: false,\n run: Autoplay.run.bind(swiper),\n start: Autoplay.start.bind(swiper),\n stop: Autoplay.stop.bind(swiper),\n pause: Autoplay.pause.bind(swiper),\n onVisibilityChange() {\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n swiper.autoplay.pause();\n }\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n swiper.autoplay.run();\n swiper.autoplay.paused = false;\n }\n },\n onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n swiper.autoplay.paused = false;\n if (!swiper.autoplay.running) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.run();\n }\n },\n },\n });\n },\n on: {\n init() {\n const swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart(speed, internal) {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n swiper.autoplay.stop();\n }\n }\n },\n sliderFirstMove() {\n const swiper = this;\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.stop();\n } else {\n swiper.autoplay.pause();\n }\n }\n },\n touchEnd() {\n const swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy() {\n const swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n};\n\nconst Fade = {\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\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 if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n fadeEffect: {\n setTranslate: Fade.setTranslate.bind(swiper),\n setTransition: Fade.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'fade') return;\n swiper.fadeEffect.setTransition(duration);\n },\n },\n};\n\nconst Cube = {\n setTranslate() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\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 if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('');\n $el.append($cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\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 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 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 if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform);\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 if (shadowBefore.length === 0) {\n shadowBefore = $(``);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(``);\n $slideEl.append(shadowAfter);\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 $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-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 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\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 const zFactor = (Browser.isSafari || Browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n};\n\nvar EffectCube = {\n name: 'effect-cube',\n params: {\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n cubeEffect: {\n setTranslate: Cube.setTranslate.bind(swiper),\n setTransition: Cube.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'cube') return;\n swiper.cubeEffect.setTransition(duration);\n },\n },\n};\n\nconst Flip = {\n setTranslate() {\n const swiper = this;\n const { slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset;\n let ty = 0;\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 (swiper.params.flipEffect.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 if (shadowBefore.length === 0) {\n shadowBefore = $(``);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = $(``);\n $slideEl.append(shadowAfter);\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 $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n};\n\nvar EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n flipEffect: {\n setTranslate: Flip.setTranslate.bind(swiper),\n setTransition: Flip.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n Utils.extend(swiper.params, overwriteParams);\n Utils.extend(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'flip') return;\n swiper.flipEffect.setTransition(duration);\n },\n },\n};\n\nconst Coverflow = {\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, 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;\n // Each slide offset from center\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\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n }\n let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\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\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\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 if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = $(``);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = $(``);\n $slideEl.append($shadowAfterEl);\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 // Set correct perspective for IE10\n if (Support.pointerEvents || Support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n },\n};\n\nvar EffectCoverflow = {\n name: 'effect-coverflow',\n params: {\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n coverflowEffect: {\n setTranslate: Coverflow.setTranslate.bind(swiper),\n setTransition: Coverflow.setTransition.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTranslate();\n },\n setTransition(duration) {\n const swiper = this;\n if (swiper.params.effect !== 'coverflow') return;\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n};\n\nconst Thumbs = {\n init() {\n const swiper = this;\n const { thumbs: thumbsParams } = swiper.params;\n const SwiperClass = swiper.constructor;\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Utils.extend(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n Utils.extend(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n });\n } else if (Utils.isObject(thumbsParams.swiper)) {\n swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n watchSlidesVisibility: true,\n watchSlidesProgress: true,\n slideToClickedSlide: false,\n }));\n swiper.thumbs.swiperCreated = true;\n }\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n },\n onThumbClick() {\n const swiper = this;\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 if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix();\n // eslint-disable-next-line\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\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;\n else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n else slideToIndex = prevIndex;\n }\n swiper.slideTo(slideToIndex);\n },\n update(initial) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix();\n // eslint-disable-next-line\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n }\n // Find actual thumbs index to slide to\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 if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n else newThumbsIndex = prevThumbsIndex;\n } else {\n newThumbsIndex = swiper.realIndex;\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) {\n newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n\n // Activate thumbs\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\n thumbsSwiper.slides.removeClass(thumbActiveClass);\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};\nvar Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n multipleActiveThumbs: true,\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create() {\n const swiper = this;\n Utils.extend(swiper, {\n thumbs: {\n swiper: null,\n init: Thumbs.init.bind(swiper),\n update: Thumbs.update.bind(swiper),\n onThumbClick: Thumbs.onThumbClick.bind(swiper),\n },\n });\n },\n on: {\n beforeInit() {\n const swiper = this;\n const { thumbs } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n update() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n resize() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n observerUpdate() {\n const swiper = this;\n if (!swiper.thumbs.swiper) return;\n swiper.thumbs.update();\n },\n setTransition(duration) {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy() {\n const swiper = this;\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) return;\n if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n thumbsSwiper.destroy();\n }\n },\n },\n};\n\n// Swiper Class\n\nconst components = [\n Device$1,\n Support$1,\n Browser$1,\n Resize,\n Observer$1,\n Virtual$1,\n Keyboard$1,\n Mousewheel$1,\n Navigation$1,\n Pagination$1,\n Scrollbar$1,\n Parallax$1,\n Zoom$1,\n Lazy$1,\n Controller$1,\n A11y,\n History$1,\n HashNavigation$1,\n Autoplay$1,\n EffectFade,\n EffectCube,\n EffectFlip,\n EffectCoverflow,\n Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n//# sourceMappingURL=swiper.esm.bundle.js.map\n","// style-loader: Adds some css to the DOM by adding a