{"version":3,"sources":["scripts.min.js"],"names":["Element","prototype","matches","selector","this","matchesSelector","msMatchesSelector","webkitMatchesSelector","call","document","window","embed","svg","g","viewBox","getAttribute","fragment","createDocumentFragment","clone","cloneNode","setAttribute","childNodes","length","appendChild","firstChild","loadreadystatechange","xhr","onreadystatechange","readyState","x","createElement","innerHTML","responseText","s","splice","map","array","querySelector","replace","$uses","polyfill","requestAnimationFrame","$svgCache","getElementsByTagName","test","navigator","userAgent","match","setTimeout","oninterval","use","i","parentNode","nodeName","$url","split","url_root","url_hash","removeChild","XMLHttpRequest","open","send","push","getElementById","$helpers","$$","_is_document","$node","nodeType","DOCUMENT_NODE","_is_window","_is_array","$obj","Object","toString","_is_input","tagName","_query","context","$nodes","slice","substr","getElementsByClassName","querySelectorAll","_create_element","html","$div","trim","$filtered_nodes","len","toLowerCase","_get_filtered_nodes","_get_scroll_offset","top","left","pageXOffset","pageYOffset","scrollTop","scrollLeft","_get_vendor_property","property","css_prefixes","cap_name","charAt","toUpperCase","orig_name","style","_get_prefixed_event","type","$types","prefix","$prefixes","_get_event_type","animation","MozAnimation","WebkitAnimation","msAnimation","transition","MozTransition","WebkitTransition","msTransition","documentMode","is_helper","find","$this","concat","reduce","a","b","indexOf","children","$child_node","$filtered_child_nodes","nextSibling","get_parent","maybe_class","name_only","tag_name","class_name","className","append","j","obj_len","prepend","insertBefore","before","after","remove","remove_children","empty","next_sibling","prev_sibling","previousSibling","get_siblings","$siblings","$children","get_attribute","attribute","value","set_attribute","removeAttribute","set_text","text","textContent","get_text","insert_html","outer","outerHTML","get_html","get_file","$file","filename","filetype","filesize","files","name","size","is_tag","tagname","is_visible","$styles","getComputedStyle","offsetWidth","offsetHeight","display","parentElement","index","element","for_each","callback","is_checked","checked","add_class","trimmed_classes","classes","$selector","updated","String","selector_len","sort","join","remove_class","has_class","classList","contains","focus","click","set_style","property_vendor","hasOwnProperty","all","letter","get_style","getPropertyValue","set_data","key","get_data","get_width","width","documentElement","clientWidth","Math","max","body","scrollWidth","get_height","height","clientHeight","scrollHeight","get_offset_top","offsetTop","offsetParent","get_offset_left","offsetLeft","get_scroll_top","scroll_top","get_scroll_left","scroll_left","set_value","get_value","add_event","listener","event_listener","event","types_len","addEventListener","load_script","url","$head","$script","src","random","onload","get","$ajax","status","set_hash","hash","history","replaceState","location","pathname","title","merge_objects","$obj1","$obj2","constructor","scroll_to","to","duration","diff","step","scrollBy","abs","get_touch_range","dist_x","dist_y","degrees","theta","atan2","PI","floor","is_top","is_right","is_bottom","is_left","$html","_find","needle","device","iphone","ipod","ipad","ios","android","android_phone","android_tablet","windows","windows_phone","windows_tablet","mobile","tablet","add","support","touch","msMaxTouchPoints","css_property_found","prefixes","_has_css_property","Prefetch","$prefetch_link","_$prefetch_link","_$options","init","_prefetch","_prerender","$link","$prefetch_links","global","factory","exports","module","define","amd","self","Swiper","doc","removeEventListener","activeElement","blur","createEvent","initEvent","win","CustomEvent","Image","Date","screen","clearTimeout","Dom7","arr","$","els","tempParent","toCreate","unique","uniqueArray","fn","Class","Methods","addClass","removeClass","hasClass","toggleClass","toggle","attr","attrs","arguments$1","arguments","attrName","removeAttr","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","webkitTransitionDuration","transitionDuration","on","assign","args","eventType","targetSelector","capture","handleLiveEvent","e","target","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event$1","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","parseFloat","outerHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollY","scrollX","css","props","prop","each","compareWith","child","eq","returnIndex","newChild","tempDiv","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","closest","foundElements","found","matchedItems","toAdd","keys","forEach","methodName","Utils","deleteProps","obj","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","parseUrlQuery","params","param","query","urlToParse","href","paramsPart","decodeURIComponent","isObject","o","extend","len$1","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","Modernizr","maxTouchPoints","DocumentTouch","pointerEvents","pointerEnabled","PointerEvent","prefixedPointerEvents","msPointerEnabled","observer","passiveListener","supportsPassive","opts","defineProperty","gestures","SwiperClass","eventsListeners","eventName","staticAccessors","components","configurable","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","useModulesParams","instanceParams","instance","modules","moduleName","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","set","installModule","proto","static","install","m","defineProperties","update","updateSize","swiper","$el","isHorizontal","isVertical","parseInt","updateSlides","$wrapperEl","swiperSize","rtl","rtlTranslate","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","slidesNumberEvenToRows","slideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","ceil","slidesPerView","slidesPerColumnFill","newSlidesGrid","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","-webkit-box-ordinal-group","-moz-box-ordinal-group","-ms-flex-order","-webkit-order","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","boxSizing$1","swiperSlideSize","centeredSlides","effect","setWrapperSize","i$1","slidesGridItem","i$2","slidesGridItem$1","centerInsufficientSlides","allSlidesSize","slideSizeValue","allSlidesOffset","snap","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","activeIndex","swiperSlideOffset","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","visibleSlides","slideProgress","minTranslate","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","activeSlide","realIndex","slideActiveClass","loop","slideDuplicateClass","slideDuplicateActiveClass","nextSlide","slideNextClass","prevSlide","slidePrevClass","slideDuplicateNextClass","slideDuplicatePrevClass","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","y","previousTranslate","transition$1","transitionStart","runCallbacks","direction","autoHeight","dir","animating","slideTo","internal","preventInteractionOnTransition","initialSlide","allowSlideNext","allowSlidePrev","isH","scrollTo","behavior","onSlideToWrapperTransitionEnd","destroyed","slideToLoop","newIndex","loopedSlides","slideNext","loopFix","_clientLeft","slidePrev","normalize","val","prevIndex","normalizedTranslate","normalizedSnapGrid","prevSnap","slideReset","slideToClosest","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","loopAdditionalSlides","prependSlides","appendSlides","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","ua","androidChrome","desktop","cordova","phonegap","os","osVersion","webView","osVersionArr","metaViewport","minimalUi","pixelRatio","devicePixelRatio","onResize","breakpoints","setBreakpoint","freeMode","newTranslate","min","autoplay","running","paused","run","defaults","touchEventsTarget","edgeSwipeDetection","edgeSwipeThreshold","freeModeMomentum","freeModeMomentumRatio","freeModeMomentumBounce","freeModeMomentumBounceRatio","freeModeMomentumVelocityRatio","freeModeSticky","freeModeMinimumVelocity","touchRatio","touchAngle","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","allowTouchMove","threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","resistance","resistanceRatio","preventClicks","preventClicksPropagation","preloadImages","updateOnImagesReady","swipeHandler","noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideBlankClass","wrapperClass","prototypes","attachEvents","touchEvents","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","isTouchEvent","which","button","isTouched","isMoved","allowClick","currentX","targetTouches","pageX","currentY","pageY","startX","startY","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","onTouchMove","preventedByNestedSwiper","diffX","diffY","sqrt","pow","nested","stopPropagation","startTranslate","allowMomentumBounce","disableParentSwiper","velocities","position","time","onTouchEnd","currentPos","touchEndTime","timeDiff","lastClickTime","lastMoveEvent","pop","velocityEvent","distance","velocity","momentumDuration","momentumDistance","newPosition","afterBouncePosition","needsLoopFix","doBounce","bounceAmount","stopIndex","groupSize","ratio","onScroll","onClick","stopImmediatePropagation","start","passive","move","end","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","innerWidth","wasLocked","navigation","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","__proto__","spv","breakLoop","translateValue","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","Device$1","Support$1","Browser","isEdge","isSafari","isUiWebView","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","MutationObserver","WebkitMutationObserver","attach","mutations","observerUpdate","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","ref","ref$1","addSlidesBefore","addSlidesAfter","ref$2","previousFrom","from","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","keyboard","onlyInViewport","inView","windowWidth","windowHeight","innerHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","isSupported","implementation","hasFeature","isEventSupported","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","sensitivity","timeout","autoplayDisableOnInteraction","stop","getTime","eventsTarged","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","nextEl","prevEl","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bullet","$bullet","bulletIndex","bulletActiveClass","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","formatFractionCurrent","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","renderCustom","active_index","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","renderFraction","currentClass","totalClass","renderProgressbar","progressbarFillClass","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","dragStartPos","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","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","maxRatio","isScaling","onGestureChange","scaleMove","minRatio","onGestureEnd","changedTouches","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","activeListenerWithCapture","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","guess","i1","i3","binarySearch","interpolate","getInterpolateFunction","c","controller","spline","setTranslate$1","controlledTranslate","controlled","control","setControlledTranslate","by","inverse","setControlledTransition","a11y","makeElFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","pushState","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","includes","currentState","state","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","$cubeShadowEl","swiperWidth","swiperHeight","cubeEffect","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","-webkit-transform-origin","-moz-transform-origin","-ms-transform-origin","transform-origin","shadowOffset","shadowAngle","sin","cos","scale1","shadowScale","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","perspectiveOrigin","Thumbs","thumbsParams","thumbs","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","hideOnClick","toEdge","fromEdge","isHidden","bulletElement","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","dragClass","containerClass","zoomedSlideClass","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","preloaderClass","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy","$links","$button","$buttons","FocusMethod","focus_method","last_focus_method","_this","_on_key_down","_on_mouse_down","_on_touch_start","_on_focus","_on_blur","_on_window_blur","$cookie_banner","$body","$close","storage","localStorage","getItem","domain","setItem","$cookie_spacing","$footer","Tooltip","$tooltip_wrapper","$tooltip","_temp_disabled","_perm_disabled","_focused","tooltip_id","$tooltip_trigger","_check_tooltip","_hide_tooltip","_keyboard_nav","_show_tooltip","disabled","$tooltip_wrappers","DropdownMenu","$dropdown_menu","id","$main_menuitems","$sub_menuitems","$sub_menuitems_with_sub_sub_menu","$main_menuitems_with_sub_menu","main_menu_index","event_type","$key","tab","enter","escape","space","arrow_left","arrow_up","arrow_right","arrow_down","_init_accessibility","_init_keyboard","$main_menuitem","$li","_on_mouseenter_main_menuitem","_on_mouseover_main_menuitem","_on_mouseout_main_menuitem","_on_focus_main_menuitem","_on_keydown_main_menuitem","$sub_menuitem","_on_keydown_sub_menuitem","_get_main_menuitem_index","$sub_menu","_close_sub_menus","_open_sub_menu","sub_menu_is_open","_close_sub_menu","_focus_prev_main_menuitem","_focus_prev_menuitem","_focus_next_main_menuitem","close_sub_menu_timeout","sub_menu_index","_focus_prev_sub_menuitem","_focus_next_sub_menuitem","_open_sub_sub_menu","$menuitem","is_current_menuitem","$sub_sub_menu","is_sub_sub_menuitem","_close_sub_sub_menus","focus_last_sub_menuitem","OffCanvasMenu","$toggle_offcanvas_menu","controls","$offcanvas_menu","$focus_elements","focus_element","$offcanvas_menu_state","$main_menuitem_with_sub_menu","_on_click_main_menuitem","_focus_element_with_shift_tab_key","_focus_element_with_tab_key","tab_index","$focus_element","_toggle_sub_menus","is_active_menuitem","$parent_menuitems","_get_parent_menu_elements","$findings","False","OffCanvasMenuOpener","$open_offcanvas_menu","$close_offcanvas_menu","_toggle_menu","_open_menu","_close_menu","_scroll_to_top","interval","setInterval","$anchor","clearInterval","FormHelpers","_file_upload","_select","$file_name","$file_button","FormValidation","$form","_$form","_$inputs","_$inputs_checkbox","_$selects","_$button","_$error_msg_button","inputs_len","$input","_input_keyup","_input_blur","inputs_checkbox_len","$input_checkbox","_input_checkbox_click","_input_checkbox_keyup","_input_checkbox_blur","selects_len","$select","_select_change","_select_blur","_submit","_check_submit_status","_validate_input","$error_warning","pattern","regexp","RegExp","_validate_input_file","required","_validate_input_checkbox","_validate_select","$wrapper","error_msg_button_id","enable_submit_button","_show_first_error","$first_input_error","top_position","$forms","FormCache","_form_name","_$cache","_init_events","_restore_cache","_save_cache","_reset_cache","selectedIndex","JSON","stringify","$cache","parse","is_valid","removeItem","_get_style","$element","FormTextareaAutogrow","$textarea","default_height","line_height","padding_bottom","padding_top","_set_textarea_height","_set_style","$textareas","$secure_targets","$secure_target","selectLocation","$location_data","$locations_data","FormUrlParameters","_get_url_parameters","$parameters","_set_inputs_value","$inputs","$pair","$parameter","selected_select","_checked_input_radio","defaultChecked","defaultValue","$option","$options","defaultSelected","FormSearchDataList","$search","$submit","datalist","list","datalist_loaded","datalist_inserted","_focus","_get_datalist","_get_url","$datalist","sessionStorage","_get_sorted_datalist","_create_datalist","$a","$b","a_value","b_value","$datalist_entry","FormSearch","$input_search","_on_input","FormSearchBox","$toggle_search_box","$open_search_box","$close_search_box_1","$search_box_state","$search_box","$search_button","$close_search_box_2","_toggle","_open","_close","AnimationHelpers","$animated_element","_$animated_element","_offset","$show_animation","_is_in_viewport","_offset_top","offset_top","_remove_scroll_event","$animated_elements","scrolled_down","_is_scrolled_down","$share_button","$vcards","$vcard","Slider","$slider","_$slider","_$slides","_$status","_animated","_touch_flag","_init_animation","_init_mouse","_init_touch","_touch_start_x","_touch_start_y","touch_x","_prev_slide","_next_slide","timestamp","$sliders","GoogleMaps","data_id","map_is_ready","_infowindow_is_open","static_map_urls","_extend","$extended","deep","merge","max_zoom","min_zoom","map_type","direction_color","_geocoder_response","$mapdata","mapdata","street_address","postal_code","locality","country","$geocoder","geocode","address","$results","google","maps","GeocoderStatus","OK","latlng","geometry","latitude","lat","longitude","lng","OVER_QUERY_LIMIT","Geocoder","LatLng","_latlng_loaded","_init_map","$map","Map","mapTypeId","MapTypeId","scrollwheel","disableDefaultUI","disable_default_ui","map_style","zoomControlOptions","ControlPosition","TOP_RIGHT","mapTypeControlOptions","TOP_LEFT","streetViewControlOptions","$bounds","LatLngBounds","_init_infowindow","_change_travel_mode","_set_markers","_init_directions","_limit_zoomlevel","_init_autoselect","_init_static_maps","map_resize","debug","addDomListener","console","log","getCenter","_$infowindow","InfoWindow","maxWidth","addListener","close","$travel_mode","marker_href","marker_width","marker_height","infowindow","_remove_duplicated_markers","$marker","Marker","Animation","DROP","icon","scaledSize","Size","optimized","open_infowindow","getZIndex","fitBounds","addListenerOnce","getZoom","setZoom","original_infowindow","$latlng","$duplicates","_clean_map","$polylines","setMap","$static_maps","len_i","_update_static_maps","daddr","$direction","$panel_wrapper","$panel_title","$panel","$error_wrapper","$directions_service","DirectionsService","$saddr","$daddr","travel_mode","directionsmode","destination","saddr","$input_error","DirectionsTravelMode","DRIVING","TRANSIT","BICYCLING","WALKING","route","origin","travelMode","$result","DirectionsStatus","$polyline","$route","routes","$legs","legs","$steps","steps","warnings","distance_text","duration_text","static_paths","template","$route_bounds","bounds","start_address","steps_len","instructions","start_location","Polyline","path","strokeColor","strokeOpacity","strokeWeight","end_address","copyrights","$start_marker","start_marker_href","start_marker_width","start_marker_height","mapdata_len","setVisible","_google_analytics_tracking","has_google_analytics","ga","show_marker","_get_current_index","panTo","_$infowindow_mapdata","setContent","setCenter","$google_maps_data","Accordion","$accordion","$tab","anchor","one_tab_open","_setup_accordion","_open_tabpanel","_toggle_tabpanel","_on_resize","_close_tabpanel","$tabpanel","_get_tabpanel","maxHeight","max_height","13","32","35","36","37","38","39","40","_change_focused_tab","$accordions","$popup","$content","$iframe","OnlinetoolPopup","$onlinetool","zms_common","html_len","_create_popup","$onlinetools","SmoothScroll","has_animationend_event","_scroll_to","$target","$callback","$highlighted_target","_get_offset_top","_click_link","_change_select","parameter","$hash","search","timer","dummySrc","fixRespimg","findPictureImgs","mq","HTMLPictureElement","$1","img","source","picture","firstElementChild","_pfLastSize","imgs","matchMedia","eminpx","alwaysCheckWDescriptor","evalId","pf","isSupportTestReady","noop","getImgAttr","setImgAttr","removeImgAttr","docElem","types","cfg","algorithm","srcAttr","srcsetAttr","supportAbort","curSrcProp","regWDesc","regSize","setOptions","picturefillCFG","fsCss","isVwDirty","cssCache","sizeLengthCache","DPR","units","px","alreadyRun","regexLeadingSpaces","regexLeadingCommasOrSpaces","regexLeadingNotSpaces","regexTrailingCommas","regexNonNegativeInteger","regexFloatingPoint","attachEvent","memoize","input","isSpace","regLength","buildStr","image2","width1","isDomReady","wait","later","regReady","timerId","lastClientWidth","typeUri","evalCSS","string","parsedLength","Function","setResolution","candidate","sizesattr","w","cWidth","calcListLength","res","d","picturefill","opt","elements","plen","qsa","reevaluate","reselect","sel","selShort","setupRun","fillImg","teardownRun","ascendingSort","getCandidateForSrc","candidates","parseSet","makeUrl","warn","ns","supSrcset","supSizes","supPicture","u","setSize","matchesMedia","media","mMQ","calcLength","sourceSizeValue","supportsType","parseSize","sourceSizeStr","cands","collectCharacters","regEx","chars","exec","substring","pos","descriptors","currentDescriptor","inputLength","parseDescriptors","h","lastChar","intVal","floatVal","pError","has1x","tokenize","parseSrcset","getEmValue","div","originalHTMLCSS","cssText","originalBodyCSS","sourceSizeListStr","uT","winningLength","strValue","unparsedSizesList","unparsedSizesListLength","unparsedSize","lastComponentValue","regexCssLengthWithUnits","regexCssCalc","str","chrctr","component","componentArray","listArray","parenDepth","inComment","pushComponent","pushComponentArray","parseComponentValues","parseSizes","setRes","applySetCandidate","bestCandidate","curSrc","curCan","candidateSrc","abortCurSrc","lowerValue","higherValue","dprValue","isCached","bonusFactor","bonus","imageData","dpr","sets","cached","setSrc","origWidth","getSet","parseSets","srcsetAttribute","imageSet","isWDescripor","srcsetParsed","hasPicture","pic","sources","getAllSourceElements","supported","parsed","srcSetCandidates","matchingSet","evaluated","extreme","evaled","vw","vh","em","rem","fillImgs","last","_","shift","760","news_swiper","640","990"],"mappings":"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","file":"scripts.min.js","sourcesContent":["// MATCHES\n// Support für IE 9+, Edge und Android bis Version 4.4.4\n// -------------------------------------------------------------------------------------------------\n\n(function() {\n if (!Element.prototype.matches) {\n var matches = function(selector) {\n return (this.matchesSelector || this.msMatchesSelector || this.webkitMatchesSelector).call(this, selector);\n };\n\n Element.prototype.matches = matches;\n }\n})();\n\n\n// SVG4EVERYBODY\n// SVG-Support für alle IE-Versionen\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n /* jshint nocomma: false */\n\n function embed(svg, g) {\n if (g) {\n var viewBox = !svg.getAttribute('viewBox') && g.getAttribute('viewBox'),\n fragment = document.createDocumentFragment(), clone = g.cloneNode(!0);\n\n for (viewBox && svg.setAttribute('viewBox', viewBox); clone.childNodes.length;) {\n fragment.appendChild(clone.firstChild);\n }\n\n svg.appendChild(fragment);\n }\n }\n\n function loadreadystatechange(xhr) {\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n var x = document.createElement('x');\n\n x.innerHTML = xhr.responseText, xhr.s.splice(0).map(function(array) {\n embed(array[0], x.querySelector('#' + array[1].replace(/(\\W)/g, '\\\\$1')));\n });\n }\n }, xhr.onreadystatechange();\n }\n\n function svg4everybody() {\n var $uses = document.getElementsByTagName('use'),\n polyfill = /\\bFirefox\\b|\\bEdge\\b|\\bTrident\\/[567]\\b|\\bVersion\\/7.0 Safari\\b/.test(navigator.userAgent) || (navigator.userAgent.match(/AppleWebKit\\/(\\d+)/) || [])[1] < 537,\n requestAnimationFrame = window.requestAnimationFrame || setTimeout,\n $svgCache = {};\n\n function oninterval() {\n for (var use, svg, i = 0; i < $uses.length;) {\n if (use = $uses[i], svg = use.parentNode, svg && /svg/i.test(svg.nodeName)) {\n var src = use.getAttribute('xlink:href'),\n $url = src.split('#'),\n url_root = $url[0],\n url_hash = $url[1];\n\n if (svg.removeChild(use), url_root.length) {\n var xhr = $svgCache[url_root] = $svgCache[url_root] || new XMLHttpRequest();\n xhr.s || (xhr.s = [], xhr.open('GET', url_root), xhr.send()), xhr.s.push([ svg, url_hash ]),\n loadreadystatechange(xhr);\n }\n else {\n embed(svg, document.getElementById(url_hash));\n }\n } else {\n i += 1;\n }\n }\n requestAnimationFrame(oninterval, 17);\n }\n\n if (polyfill) {\n oninterval();\n }\n }\n\n svg4everybody();\n}(document, window));\n\n// HELPERS\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var $helpers,\n $$;\n\n // Interne Funktion\n\n function _is_document($node) {\n return $node !== null && $node.nodeType === $node.DOCUMENT_NODE;\n }\n\n function _is_window($node) {\n return $node !== null && $node === window;\n }\n\n function _is_array($obj) {\n return Object.prototype.toString.call($obj) === '[object Array]';\n }\n\n function _is_input($node) {\n return $node.tagName === 'INPUT' ||\n $node.tagName === 'SELECT' ||\n $node.tagName === 'TEXTAREA';\n }\n\n function _query(selector, context) {\n var simpleRe = /^(#?[\\w-]+|\\.[\\w-.]+)$/,\n periodRe = /\\./g,\n slice = [].slice,\n $nodes;\n\n if (simpleRe.test(selector)) {\n switch(selector[0]) {\n case '#':\n $nodes = context.getElementById(selector.substr(1));\n break;\n case '.':\n $nodes = slice.call(context.getElementsByClassName(selector.substr(1).replace(periodRe, ' ')));\n break;\n default:\n $nodes = slice.call(context.getElementsByTagName(selector));\n }\n }\n else {\n $nodes = slice.call(context.querySelectorAll(selector));\n }\n\n return $nodes ? (_is_array($nodes) ? $nodes : [$nodes]) : [];\n }\n\n function _get_filtered_nodes($nodes, selector) {\n var $filtered_nodes = [];\n\n for (var i = 0, len = $nodes.length; $nodes !== null && (i < len); i++) {\n if ($nodes[i].nodeType === 1) {\n if (typeof selector === 'undefined') {\n $filtered_nodes.push($nodes[i]);\n }\n else if($nodes[i].tagName.toLowerCase() === selector) {\n $filtered_nodes.push($nodes[i]);\n }\n }\n }\n\n return $filtered_nodes;\n }\n\n function _create_element(html) {\n var $div = document.createElement('div');\n\n $div.innerHTML = html.trim(); // textContent/nodeValue funktionieren hier nicht,\n // Bug bei Popups: http://stackoverflow.com/a/25896886\n\n return _get_filtered_nodes($div.childNodes);\n }\n\n function _get_scroll_offset($node) {\n var top,\n left;\n\n if (_is_window($node)) {\n if (window.pageXOffset !== null) {\n top = window.pageYOffset;\n left = window.pageXOffset;\n }\n }\n else {\n top = $node.scrollTop;\n left = $node.scrollLeft;\n }\n\n return {\n top : top,\n left : left\n };\n }\n\n function _get_vendor_property(property) {\n var css_prefixes = ['Moz', 'ms', 'Webkit'],\n $div = document.createElement('div');\n\n if (property in $div) {\n return property;\n }\n\n var cap_name = property.charAt(0).toUpperCase() + property.slice(1),\n orig_name = property;\n\n for (var i = css_prefixes.length; i > 0; i--) {\n property = css_prefixes[i] + cap_name;\n\n if (property in $div.style) {\n return property;\n }\n }\n\n return orig_name;\n }\n\n function _camel_case_property(property) {\n return property.replace(/-([\\da-z])/gi, function(all, letter) {\n return letter.toUpperCase();\n });\n }\n\n function _get_prefixed_event(type, $types) {\n var $div = document.createElement('div').style,\n $prefixes = ['', 'Moz', 'ms', 'Webkit'],\n prefix;\n\n for (var i = 0, len = $prefixes.length; i < len; i++) {\n prefix = $prefixes[i] + type.charAt(0).toUpperCase() + type.substr(1, type.length - 4);\n\n if (prefix in $div) {\n return $types[prefix];\n }\n }\n\n return type;\n }\n\n function _get_event_type_wheel(type) {\n return type === 'wheel' ? 'onwheel' in document || document.documentMode >= 9 ? 'wheel' : 'mousewheel' : type;\n }\n\n function _get_event_type_animatedend(type) {\n return _get_prefixed_event(type, {\n 'animation' : 'animationend',\n 'MozAnimation' : 'animationend',\n 'WebkitAnimation' : 'webkitAnimationEnd',\n 'msAnimation' : 'MSAnimationEnd'\n });\n }\n\n function _get_event_type_transitionend(type) {\n return _get_prefixed_event(type, {\n 'transition' : 'transitionend',\n 'MozTransition' : 'transitionend',\n 'WebkitTransition' : 'webkitTransitionEnd',\n 'msTransition' : 'MSTransitionEnd'\n });\n }\n\n function _get_event_type(type) {\n type = _get_event_type_animatedend(type) || _get_event_type_transitionend(type);\n type = _get_event_type_wheel(type);\n\n return type;\n }\n\n // Erstellt Helpers Object\n\n $$ = function(selector, context) {\n context = context || document;\n return new $helpers(selector, context);\n };\n\n $helpers = function(selector, context) {\n var _this = this,\n $nodes = [];\n\n if (selector) {\n if (typeof selector === 'string') {\n selector = selector.trim();\n\n if (/<[a-z][\\s\\S]*>/i.test(selector)) {\n $nodes = _create_element(selector);\n }\n else {\n $nodes = _query(selector, context);\n }\n }\n else if (_is_array(selector)) {\n $nodes = selector;\n }\n else {\n $nodes = [selector];\n }\n }\n\n for (var i = 0, len = $nodes.length; i < len; i++) {\n _this[i] = $nodes[i];\n }\n\n _this.length = $nodes.length;\n\n return _this;\n };\n\n // Helpers API\n\n $helpers.prototype = {\n is_helper: true,\n\n find: function(selector) {\n var $this = this,\n $nodes = [],\n context;\n\n if ($this.length !== 0) {\n if ($this.length === 1) {\n $nodes = _query(selector, $this[0]);\n }\n else {\n for (var i = 0, len = $this.length; i < len; i++) {\n $nodes = $nodes.concat(\n _query(selector, $this[i])\n );\n }\n\n $nodes = $nodes.reduce(function(a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n\n return a;\n }, []);\n }\n }\n\n return $$($nodes, context);\n },\n\n children: function(selector) {\n var $this = this,\n $filtered_child_nodes = [],\n $child_node;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n $child_node = this[i].firstChild;\n\n while ($child_node) {\n if ($child_node.nodeType === 1 && $child_node.matches(selector)) {\n $filtered_child_nodes.push($child_node);\n }\n\n $child_node = $child_node.nextSibling;\n }\n }\n\n return $$($filtered_child_nodes);\n },\n\n get_parent: function(selector) {\n var $this = this,\n maybe_class,\n name_only,\n tag_name,\n class_name,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n\n if (typeof selector !== 'undefined') {\n maybe_class = selector[0] === '.';\n name_only = maybe_class ? selector.slice(1) : selector;\n tag_name = name_only.toUpperCase();\n }\n\n do {\n $obj = $obj.parentNode;\n class_name = (' ' + $obj.className + ' ').replace(/[\\t\\r\\n\\f]/g, ' ');\n\n if ((typeof selector === 'undefined' && $obj.nodeType === 1) ||\n (maybe_class && class_name.indexOf(' ' + name_only + ' ') > -1) ||\n $obj.tagName === tag_name) {\n\n return $$($obj);\n }\n }\n while ($obj && $obj.nodeType !== 9);\n }\n },\n\n append: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].appendChild($obj[j]);\n }\n }\n },\n\n prepend: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].insertBefore($obj[j], $this[i].childNodes[0]);\n }\n }\n },\n\n before: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].parentNode.insertBefore($obj[j], $this[i]);\n }\n }\n },\n\n after: function($obj) {\n var $this = this;\n\n if (typeof $obj === 'string') {\n $obj = _create_element($obj);\n }\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, obj_len = $obj.length; j < obj_len; j++) {\n $this[i].parentNode.insertBefore($obj[j], $this[i].nextSibling);\n }\n }\n },\n\n remove: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n $this[i].parentNode.removeChild($this[i]);\n }\n },\n\n remove_children: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n while ($this[i].firstChild) {\n $this[i].removeChild($this[i].firstChild);\n }\n }\n },\n\n empty: function() {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n while ($this[i].firstChild) {\n $this[i].removeChild($this[i].firstChild);\n }\n }\n },\n\n clone: function() {\n var $this = this;\n\n if ($this.length === 1) {\n return $$($this[0].cloneNode(true));\n }\n },\n\n next_sibling: function() {\n var $this = this;\n\n if ($this.length === 1) {\n var $obj = $this[0];\n\n do {\n $obj = $obj.nextSibling;\n }\n while ($obj && $obj.nodeType !== 1);\n\n return $$($obj);\n }\n },\n\n prev_sibling: function() {\n var $this = this;\n\n if ($this.length === 1) {\n var $obj = $this[0];\n\n do {\n $obj = $obj.previousSibling;\n }\n while ($obj && $obj.nodeType !== 1);\n\n return $$($obj);\n }\n },\n\n get_siblings: function() {\n var $this = this,\n $siblings = [];\n\n if ($this.length === 1) {\n var $obj = $this[0],\n $children = $obj.parentNode.children;\n\n for (var i = 0, len = $children.length; i < len; i++) {\n if ($children[i].nodeType === 1 && $children[i] !== $obj) {\n $siblings.push($children[i]);\n }\n }\n }\n\n return $$($siblings);\n },\n\n get_attribute: function(attribute) {\n var $this = this,\n value = null;\n\n if ($this.length === 1) {\n if (_is_input($this[0]) && attribute === 'value') {\n value = $this[0][attribute];\n }\n else {\n value = $this[0].getAttribute(attribute);\n }\n }\n\n return value === null ? '' : value;\n },\n\n set_attribute: function(attribute, value) {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n if (_is_input($this[i]) && attribute === 'value') {\n $this[i][attribute] = value;\n }\n else if (value) {\n $this[i].setAttribute(attribute, value);\n }\n else {\n $this[i].removeAttribute(attribute);\n }\n }\n },\n\n set_text: function(text) {\n var $this = this;\n\n if ($this.length === 1) {\n $this[0].textContent = text.toString().trim();\n }\n },\n\n get_text: function() {\n var $this = this,\n text = '';\n\n if ($this.length === 1) {\n text = $this[0].textContent.trim();\n }\n\n return text;\n },\n\n insert_html: function(html, outer) {\n var $this = this;\n\n if ($this.length === 1) {\n if (outer === true) {\n $this[0].outerHTML = html;\n }\n else {\n $this[0].innerHTML = html;\n }\n }\n },\n\n get_html: function(outer) {\n var $this = this,\n html = '';\n\n if ($this.length === 1) {\n if (outer === true) {\n html = $this[0].outerHTML;\n }\n else {\n html = $this[0].innerHTML;\n }\n }\n\n return html.trim();\n },\n\n get_file: function() {\n var $this = this,\n filename = '',\n filetype = '',\n filesize = 0,\n $file;\n\n if ($this.length === 1) {\n $file = $this[0].files;\n\n if ($file.length) {\n filename = $file[0].name;\n filesize = $file[0].size;\n filetype = $file[0].type;\n }\n }\n\n return {\n 'filename' : filename,\n 'filesize' : filesize,\n 'filetype' : filetype\n };\n },\n\n is_tag: function(tagname) {\n var $this = this,\n is_tag = false;\n\n if ($this.length === 1) {\n is_tag = $this[0].tagName.toLowerCase() === tagname;\n }\n\n return is_tag;\n },\n\n is_visible: function() {\n var $this = this,\n is_visible = false,\n $styles,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n is_visible = true;\n\n while ($obj && $obj.nodeType !== 9) {\n $styles = window.getComputedStyle($obj, null);\n\n if ($obj.offsetWidth === 0 &&\n $obj.offsetHeight === 0 &&\n $styles.display === 'none') {\n\n is_visible = false;\n break;\n }\n\n $obj = $obj.parentElement;\n }\n }\n\n return is_visible;\n },\n\n index: function(element) {\n var $this = this;\n\n if (typeof element === 'object') {\n for (var i = 0, len = $this.length; i < len; i++) {\n if ($this[i] === element) {\n return i;\n }\n }\n }\n else if (typeof element === 'number') {\n if (element === -1) {\n element = $this.length - 1;\n }\n\n return $$($this[element]);\n }\n },\n\n for_each: function(callback) {\n var $this = this;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n callback.call($this[i], i);\n }\n },\n\n is_checked: function() {\n var $this = this,\n is_checked = false;\n\n if ($this.length === 1) {\n is_checked = $this[0].checked;\n }\n\n return is_checked;\n },\n\n add_class: function(selector) {\n var $this = this,\n $selector = selector.split(' '),\n updated = false,\n trimmed_classes,\n classes;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n trimmed_classes = String.prototype.trim.call($this[i].getAttribute('class') || '');\n classes = trimmed_classes ? trimmed_classes.split(/\\s+/) : [];\n\n for (var j = 0, selector_len = $selector.length; j < selector_len; j++) {\n if (classes.indexOf($selector[j]) === -1) {\n classes.push($selector[j]);\n updated = true;\n }\n }\n\n if (updated) {\n $this[i].setAttribute('class', classes.sort().join(' '));\n updated = false;\n }\n }\n },\n\n remove_class: function(selector) {\n var $this = this,\n $selector = selector.split(' '),\n updated = false,\n trimmed_classes,\n classes,\n index;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n trimmed_classes = String.prototype.trim.call($this[i].getAttribute('class') || '');\n classes = trimmed_classes ? trimmed_classes.split(/\\s+/) : [];\n\n for (var j = 0, selector_len = $selector.length; j < selector_len; j++) {\n index = classes.indexOf($selector[j]);\n\n if (index > -1) {\n classes.splice(index, 1);\n updated = true;\n }\n }\n\n if (updated) {\n if (classes.length) {\n $this[i].setAttribute('class', classes.sort().join(' '));\n }\n else {\n $this[i].removeAttribute('class');\n }\n updated = false;\n }\n }\n },\n\n has_class: function(selector) {\n var $this = this,\n has_class = false;\n\n if ($this.length === 1) {\n has_class = $this[0].classList.contains(selector);\n }\n\n return has_class;\n },\n\n focus: function() {\n var $this = this;\n\n if ($this.length) {\n $this[0].focus();\n }\n },\n\n click: function() {\n var $this = this;\n\n if ($this.length) {\n $this[0].click();\n }\n },\n\n set_style: function($styles) {\n var $this = this,\n property_camel_case,\n property_vendor;\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var property in $styles) {\n if ($styles.hasOwnProperty(property)) {\n property_camel_case = _camel_case_property(property);\n property_vendor = _get_vendor_property(property_camel_case);\n\n $this[i].style[property_vendor] = $styles[property];\n }\n }\n }\n },\n\n get_style: function(property) {\n var $this = this,\n style = '',\n $styles;\n\n if ($this.length === 1) {\n $styles = window.getComputedStyle($this[0], null);\n style = $styles.getPropertyValue(property);\n }\n\n return style;\n },\n\n set_data: function(key, value) {\n var $this = this;\n\n if ($this.length === 1) {\n $this[0][key] = value;\n }\n },\n\n get_data: function(key) {\n var $this = this;\n\n if ($this.length === 1) {\n return $this[0][key];\n }\n },\n\n get_width: function() {\n var $this = this,\n width = 0;\n\n if ($this.length === 1) {\n if (_is_window($this[0])) {\n width = document.documentElement.clientWidth;\n }\n else if (_is_document($this[0])) {\n width = Math.max(\n document.body.scrollWidth,\n document.body.offsetWidth\n );\n }\n else {\n width = this[0].offsetWidth;\n }\n }\n\n return width;\n },\n\n get_height: function() {\n var $this = this,\n height = 0;\n\n if ($this.length === 1) {\n if (_is_window($this[0])) {\n height = document.documentElement.clientHeight;\n }\n else if (_is_document($this[0])) {\n height = Math.max(\n document.body.scrollHeight,\n document.body.offsetHeight\n );\n }\n else {\n height = this[0].offsetHeight;\n }\n }\n\n return height;\n },\n\n get_offset_top: function() {\n var $this = this,\n top = 0,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n top = $obj.offsetTop;\n\n while ($obj = $obj.offsetParent) {\n top += $obj.offsetTop;\n }\n }\n\n return top;\n },\n\n get_offset_left: function() {\n var $this = this,\n left = 0,\n $obj;\n\n if ($this.length === 1) {\n $obj = $this[0];\n left = $obj.offsetLeft;\n\n while ($obj = $obj.offsetParent) {\n left += $obj.offsetLeft;\n }\n }\n\n return left;\n },\n\n get_scroll_top: function() {\n var $this = this,\n scroll_top = 0;\n\n if ($this.length === 1) {\n scroll_top = _get_scroll_offset($this[0]).top;\n }\n\n return scroll_top;\n },\n\n get_scroll_left: function() {\n var $this = this,\n scroll_left = 0;\n\n if ($this.length === 1) {\n scroll_left = _get_scroll_offset($this[0]).left;\n }\n\n return scroll_left;\n },\n\n set_value: function(value) {\n return this.set_attribute('value', value);\n },\n\n get_value: function() {\n return this.get_attribute('value');\n },\n\n add_event: function(type, listener) {\n var $this = this,\n $types = type.split(','),\n event_listener;\n\n event_listener = function(event) {\n listener.call(this, event);\n };\n\n for (var i = 0, len = $this.length; i < len; i++) {\n for (var j = 0, types_len = $types.length; j < types_len; j++) {\n type = _get_event_type($types[j].trim());\n\n $this[i].addEventListener(type, event_listener, false);\n }\n }\n },\n };\n\n // Ladet JavaScript-Code nach\n\n $$.load_script = function(url, callback) {\n var $head = document.getElementsByTagName('head')[0],\n $script = document.createElement('script');\n\n $script.src = (navigator.userAgent.indexOf('MSIE ') > 0) ? url + '?' + Math.random() : url;\n\n if (callback && typeof(callback) === 'function') {\n $script.onload = callback;\n }\n\n $head.appendChild($script);\n };\n\n // Ajax\n\n $$.get = function(url, callback) {\n if (window.XMLHttpRequest) {\n var $ajax = new XMLHttpRequest();\n\n $ajax.open('GET', url, true);\n\n $ajax.onload = function() {\n if (this.status === 200) {\n callback.call(this, this.responseText);\n }\n };\n\n $ajax.send();\n }\n };\n\n // Setzt hash\n\n $$.set_hash = function(hash) {\n if (window.history && window.history.replaceState) { // IE 10+\n hash = hash || window.location.pathname;\n window.history.replaceState(null, document.title, hash);\n }\n };\n\n // Verbindet zwei Objekte\n\n $$.merge_objects = function($obj1, $obj2) {\n for (var key in $obj2) {\n if ($obj2[key].constructor === Object) {\n $obj2[key] = $$.merge_objects($obj1[key], $obj2[key]);\n }\n else {\n $obj1[key] = $obj2[key];\n }\n }\n\n return $obj1;\n };\n\n // Scrollt zu\n\n $$.scroll_to = function(to, duration, callback) {\n var diff = to - $$(window).get_scroll_top(),\n step = diff / duration * 10;\n\n setTimeout(function() {\n window.scrollBy(0, step);\n\n if (Math.abs(diff) <= Math.abs(step)) {\n\n if (typeof callback === 'function') {\n callback();\n }\n\n return;\n }\n\n $$.scroll_to(to, duration - 10, callback);\n }, 10);\n };\n\n\n // Gibt die Touch-Richtung zurück\n\n $$.get_touch_range = function(dist_x, dist_y) {\n var theta = Math.atan2(-dist_x, dist_y),\n degrees;\n\n if (theta < 0) {\n theta += 2 * Math.PI;\n }\n\n degrees = Math.floor(theta * (180 / Math.PI) - 180);\n\n if (degrees < 0 && degrees > -180) {\n degrees = 360 - Math.abs(degrees);\n }\n\n return {\n is_top : degrees <= 40 || degrees >= 320,\n is_right : degrees >= 50 && degrees <= 130,\n is_bottom : degrees >= 140 && degrees <= 220,\n is_left : degrees >= 230 && degrees <= 310\n };\n };\n\n window.$$ = $$;\n}(document, window));\n\n// DEVICE\n// -------------------------------------------------------------------------------------------------\n\n(function(document, navigator, window) {\n var $html = document.querySelector('html');\n\n function _find(needle) {\n return navigator.userAgent.toLowerCase().indexOf(needle) !== -1;\n }\n\n window.device = {};\n\n device.iphone = _find('iphone');\n device.ipod = _find('ipod');\n device.ipad = _find('ipad');\n device.ios = device.iphone || device.ipod || device.ipad;\n device.android = _find('android');\n device.android_phone = device.android && _find('mobile');\n device.android_tablet = device.android && !_find('mobile');\n device.windows = _find('windows');\n device.windows_phone = device.windows && _find('phone');\n device.windows_tablet = device.windows && _find('touch');\n device.mobile = device.android_phone || device.iphone || device.ipod || device.windows_phone;\n device.tablet = device.ipad || device.android_tablet || device.windows_tablet;\n\n if (device.ios) {\n if (device.ipad) {\n $html.classList.add('ios', 'ipad', 'tablet');\n }\n else if (device.iphone || device.ipod) {\n $html.classList.add('ios', 'iphone', 'mobile');\n }\n }\n else if (device.android) {\n if (device.android_tablet) {\n $html.classList.add('android', 'tablet');\n }\n else {\n $html.classList.add('android', 'mobile');\n }\n }\n else if (device.windows) {\n if (device.windows_tablet) {\n $html.classList.add('windows', 'tablet');\n }\n else if (device.windows_phone) {\n $html.classList.add('windows', 'mobile');\n }\n else {\n $html.classList.add('desktop');\n }\n }\n else {\n $html.classList.add('desktop');\n }\n}(document, navigator, window));\n\n// BROWSER SUPPORT\n// -------------------------------------------------------------------------------------------------\n\n(function(document, navigator, window) {\n var $html = document.querySelector('html'),\n $div = document.createElement('div');\n\n // Überprüft die Browser-Unterstützung für CSS-Attribute wie z. B. transition\n\n function _has_css_property(property) {\n var css_property_found = false,\n prefixes = ['Moz', 'Webkit'];\n\n if (property in $div.style) {\n css_property_found = true;\n }\n else {\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n for (var i = 0, len = prefixes.length; i < len; i++) {\n if (typeof $div.style[prefixes[i] + property] !== 'undefined') {\n css_property_found = true;\n break;\n }\n }\n }\n\n return css_property_found;\n }\n\n window.support = {\n touch : window.navigator.msMaxTouchPoints || 'ontouchstart' in document.documentElement,\n transition : _has_css_property('transition') && 'TransitionEvent' in window // TransitionEvent wird benötigt für Android 4.1.x (https://bugs.dojotoolkit.org/ticket/17164#comment:13)\n };\n\n // Setzt Klassen auf den HTML-Tag\n\n $html.classList.remove('no_js');\n $html.classList.add(support.touch ? 'touch' : 'no_touch');\n $html.classList.add(support.transition ? 'csstransitions' : 'no_csstransitions');\n}(document, navigator, window));\n\n// PREFETCH\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var Prefetch = function($prefetch_link) {\n var _this = this;\n\n _this._$prefetch_link = $prefetch_link;\n _this._$options = _this._$prefetch_link.getAttribute('data-performance');\n };\n\n Prefetch.prototype = {\n init: function() {\n var _this = this;\n\n if (_this._$options.indexOf('prefetch') > -1) {\n _this._prefetch();\n }\n\n if (_this._$options.indexOf('prerender') > -1) {\n _this._prerender();\n }\n },\n\n _prefetch: function() {\n var _this = this,\n $link = document.createElement('link');\n\n $link.setAttribute('rel', 'prefetch');\n $link.setAttribute('href', _this._$prefetch_link.getAttribute('href'));\n\n document.querySelector('head').appendChild($link);\n },\n\n _prerender: function() {\n var _this = this,\n $link = document.createElement('link');\n\n $link.setAttribute('rel', 'prerender');\n $link.setAttribute('href', _this._$prefetch_link.getAttribute('href'));\n\n document.querySelector('head').appendChild($link);\n }\n };\n\n var $prefetch_links = document.querySelectorAll('[data-performance]');\n\n for (var i = 0, len = $prefetch_links.length; i < len; i++) {\n new Prefetch($prefetch_links[i]).init();\n }\n})(document);\n\n/**\n * Swiper 5.0.3\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2019 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: September 19, 2019\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Swiper = factory());\n}(this, function () { 'use strict';\n\n /**\n * SSR Window 1.0.1\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2018, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: July 18, 2018\n */\n var doc = (typeof document === 'undefined') ? {\n body: {},\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n activeElement: {\n blur: function blur() {},\n nodeName: '',\n },\n querySelector: function querySelector() {\n return null;\n },\n querySelectorAll: function querySelectorAll() {\n return [];\n },\n getElementById: function getElementById() {\n return null;\n },\n createEvent: function createEvent() {\n return {\n initEvent: function initEvent() {},\n };\n },\n createElement: function createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute: function setAttribute() {},\n getElementsByTagName: function getElementsByTagName() {\n return [];\n },\n };\n },\n location: { hash: '' },\n } : document; // eslint-disable-line\n\n var win = (typeof window === 'undefined') ? {\n document: doc,\n navigator: {\n userAgent: '',\n },\n location: {},\n history: {},\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener: function addEventListener() {},\n removeEventListener: function removeEventListener() {},\n getComputedStyle: function getComputedStyle() {\n return {\n getPropertyValue: function getPropertyValue() {\n return '';\n },\n };\n },\n Image: function Image() {},\n Date: function Date() {},\n screen: {},\n setTimeout: function setTimeout() {},\n clearTimeout: function clearTimeout() {},\n } : window; // eslint-disable-line\n\n /**\n * Dom7 2.1.3\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2019, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: February 11, 2019\n */\n\n var Dom7 = function Dom7(arr) {\n var self = this;\n // Create array-like object\n for (var i = 0; i < arr.length; i += 1) {\n self[i] = arr[i];\n }\n self.length = arr.length;\n // Return collection with methods\n return this;\n };\n\n function $(selector, context) {\n var arr = [];\n var i = 0;\n if (selector && !context) {\n if (selector instanceof Dom7) {\n return selector;\n }\n }\n if (selector) {\n // String\n if (typeof selector === 'string') {\n var els;\n var tempParent;\n var html = selector.trim();\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n var toCreate = 'div';\n if (html.indexOf(':~]/)) {\n // Pure ID selector\n els = [doc.getElementById(selector.trim().split('#')[1])];\n } else {\n // Other selectors\n els = (context || doc).querySelectorAll(selector.trim());\n }\n for (i = 0; i < els.length; i += 1) {\n if (els[i]) { arr.push(els[i]); }\n }\n }\n } else if (selector.nodeType || selector === win || selector === doc) {\n // Node/element\n arr.push(selector);\n } else if (selector.length > 0 && selector[0].nodeType) {\n // Array of elements or instance of Dom\n for (i = 0; i < selector.length; i += 1) {\n arr.push(selector[i]);\n }\n }\n }\n return new Dom7(arr);\n }\n\n $.fn = Dom7.prototype;\n $.Class = Dom7;\n $.Dom7 = Dom7;\n\n function unique(arr) {\n var uniqueArray = [];\n for (var i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) { uniqueArray.push(arr[i]); }\n }\n return uniqueArray;\n }\n\n // Classes and attributes\n function addClass(className) {\n if (typeof className === 'undefined') {\n return this;\n }\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.add(classes[i]); }\n }\n }\n return this;\n }\n function removeClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.remove(classes[i]); }\n }\n }\n return this;\n }\n function hasClass(className) {\n if (!this[0]) { return false; }\n return this[0].classList.contains(className);\n }\n function toggleClass(className) {\n var classes = className.split(' ');\n for (var i = 0; i < classes.length; i += 1) {\n for (var j = 0; j < this.length; j += 1) {\n if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') { this[j].classList.toggle(classes[i]); }\n }\n }\n return this;\n }\n function attr(attrs, value) {\n var arguments$1 = arguments;\n\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) { return this[0].getAttribute(attrs); }\n return undefined;\n }\n\n // Set attrs\n for (var i = 0; i < this.length; i += 1) {\n if (arguments$1.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n // eslint-disable-next-line\n for (var attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n return this;\n }\n // eslint-disable-next-line\n function removeAttr(attr) {\n for (var i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n return this;\n }\n function data(key, value) {\n var el;\n if (typeof value === 'undefined') {\n el = this[0];\n // Get value\n if (el) {\n if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n return el.dom7ElementDataStorage[key];\n }\n\n var dataKey = el.getAttribute((\"data-\" + key));\n if (dataKey) {\n return dataKey;\n }\n return undefined;\n }\n return undefined;\n }\n\n // Set value\n for (var i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) { el.dom7ElementDataStorage = {}; }\n el.dom7ElementDataStorage[key] = value;\n }\n return this;\n }\n // Transforms\n // eslint-disable-next-line\n function transform(transform) {\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransform = transform;\n elStyle.transform = transform;\n }\n return this;\n }\n function transition(duration) {\n if (typeof duration !== 'string') {\n duration = duration + \"ms\"; // eslint-disable-line\n }\n for (var i = 0; i < this.length; i += 1) {\n var elStyle = this[i].style;\n elStyle.webkitTransitionDuration = duration;\n elStyle.transitionDuration = duration;\n }\n return this;\n }\n // Events\n function on() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n function handleLiveEvent(e) {\n var target = e.target;\n if (!target) { return; }\n var eventData = e.target.dom7EventData || [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n if ($(target).is(targetSelector)) { listener.apply(target, eventData); }\n else {\n var parents = $(target).parents(); // eslint-disable-line\n for (var k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) { listener.apply(parents[k], eventData); }\n }\n }\n }\n function handleEvent(e) {\n var eventData = e && e.target ? e.target.dom7EventData || [] : [];\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n listener.apply(this, eventData);\n }\n var events = eventType.split(' ');\n var j;\n for (var i = 0; i < this.length; i += 1) {\n var el = this[i];\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n var event = events[j];\n if (!el.dom7Listeners) { el.dom7Listeners = {}; }\n if (!el.dom7Listeners[event]) { el.dom7Listeners[event] = []; }\n el.dom7Listeners[event].push({\n listener: listener,\n proxyListener: handleEvent,\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n var event$1 = events[j];\n if (!el.dom7LiveListeners) { el.dom7LiveListeners = {}; }\n if (!el.dom7LiveListeners[event$1]) { el.dom7LiveListeners[event$1] = []; }\n el.dom7LiveListeners[event$1].push({\n listener: listener,\n proxyListener: handleLiveEvent,\n });\n el.addEventListener(event$1, handleLiveEvent, capture);\n }\n }\n }\n return this;\n }\n function off() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var eventType = args[0];\n var targetSelector = args[1];\n var listener = args[2];\n var capture = args[3];\n if (typeof args[1] === 'function') {\n (assign = args, eventType = assign[0], listener = assign[1], capture = assign[2]);\n targetSelector = undefined;\n }\n if (!capture) { capture = false; }\n\n var events = eventType.split(' ');\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var handlers = (void 0);\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n if (handlers && handlers.length) {\n for (var k = handlers.length - 1; k >= 0; k -= 1) {\n var handler = handlers[k];\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n return this;\n }\n function trigger() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var events = args[0].split(' ');\n var eventData = args[1];\n for (var i = 0; i < events.length; i += 1) {\n var event = events[i];\n for (var j = 0; j < this.length; j += 1) {\n var el = this[j];\n var evt = (void 0);\n try {\n evt = new win.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true,\n });\n } catch (e) {\n evt = doc.createEvent('Event');\n evt.initEvent(event, true, true);\n evt.detail = eventData;\n }\n // eslint-disable-next-line\n el.dom7EventData = args.filter(function (data, dataIndex) { return dataIndex > 0; });\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n return this;\n }\n function transitionEnd(callback) {\n var events = ['webkitTransitionEnd', 'transitionend'];\n var dom = this;\n var i;\n function fireCallBack(e) {\n /* jshint validthis:true */\n if (e.target !== this) { return; }\n callback.call(this, e);\n for (i = 0; i < events.length; i += 1) {\n dom.off(events[i], fireCallBack);\n }\n }\n if (callback) {\n for (i = 0; i < events.length; i += 1) {\n dom.on(events[i], fireCallBack);\n }\n }\n return this;\n }\n function outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n return this[0].offsetWidth;\n }\n return null;\n }\n function outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n // eslint-disable-next-line\n var styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n return this[0].offsetHeight;\n }\n return null;\n }\n function offset() {\n if (this.length > 0) {\n var el = this[0];\n var box = el.getBoundingClientRect();\n var body = doc.body;\n var clientTop = el.clientTop || body.clientTop || 0;\n var clientLeft = el.clientLeft || body.clientLeft || 0;\n var scrollTop = el === win ? win.scrollY : el.scrollTop;\n var scrollLeft = el === win ? win.scrollX : el.scrollLeft;\n return {\n top: (box.top + scrollTop) - clientTop,\n left: (box.left + scrollLeft) - clientLeft,\n };\n }\n\n return null;\n }\n function styles() {\n if (this[0]) { return win.getComputedStyle(this[0], null); }\n return {};\n }\n function css(props, value) {\n var i;\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n if (this[0]) { return win.getComputedStyle(this[0], null).getPropertyValue(props); }\n } else {\n for (i = 0; i < this.length; i += 1) {\n // eslint-disable-next-line\n for (var prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n return this;\n }\n }\n if (arguments.length === 2 && typeof props === 'string') {\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n return this;\n }\n return this;\n }\n // Iterate over the collection passing elements to `callback`\n function each(callback) {\n // Don't bother continuing without a callback\n if (!callback) { return this; }\n // Iterate over the current collection\n for (var i = 0; i < this.length; i += 1) {\n // If the callback returns false\n if (callback.call(this[i], i, this[i]) === false) {\n // End the loop early\n return this;\n }\n }\n // Return `this` to allow chained DOM operations\n return this;\n }\n function filter(callback) {\n var matchedItems = [];\n var dom = this;\n for (var i = 0; i < dom.length; i += 1) {\n if (callback.call(dom[i], i, dom[i])) { matchedItems.push(dom[i]); }\n }\n return new Dom7(matchedItems);\n }\n // eslint-disable-next-line\n function html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : undefined;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n return this;\n }\n // eslint-disable-next-line\n function text(text) {\n if (typeof text === 'undefined') {\n if (this[0]) {\n return this[0].textContent.trim();\n }\n return null;\n }\n\n for (var i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n return this;\n }\n function is(selector) {\n var el = this[0];\n var compareWith;\n var i;\n if (!el || typeof selector === 'undefined') { return false; }\n if (typeof selector === 'string') {\n if (el.matches) { return el.matches(selector); }\n else if (el.webkitMatchesSelector) { return el.webkitMatchesSelector(selector); }\n else if (el.msMatchesSelector) { return el.msMatchesSelector(selector); }\n\n compareWith = $(selector);\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n } else if (selector === doc) { return el === doc; }\n else if (selector === win) { return el === win; }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) { return true; }\n }\n return false;\n }\n return false;\n }\n function index() {\n var child = this[0];\n var i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) { i += 1; }\n }\n return i;\n }\n return undefined;\n }\n // eslint-disable-next-line\n function eq(index) {\n if (typeof index === 'undefined') { return this; }\n var length = this.length;\n var returnIndex;\n if (index > length - 1) {\n return new Dom7([]);\n }\n if (index < 0) {\n returnIndex = length + index;\n if (returnIndex < 0) { return new Dom7([]); }\n return new Dom7([this[returnIndex]]);\n }\n return new Dom7([this[index]]);\n }\n function append() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var newChild;\n\n for (var k = 0; k < args.length; k += 1) {\n newChild = args[k];\n for (var i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (var j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n }\n function prepend(newChild) {\n var i;\n var j;\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n var tempDiv = doc.createElement('div');\n tempDiv.innerHTML = newChild;\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n return this;\n }\n function next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return new Dom7([this[0].nextElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (this[0].nextElementSibling) { return new Dom7([this[0].nextElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function nextAll(selector) {\n var nextEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.nextElementSibling) {\n var next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if ($(next).is(selector)) { nextEls.push(next); }\n } else { nextEls.push(next); }\n el = next;\n }\n return new Dom7(nextEls);\n }\n function prev(selector) {\n if (this.length > 0) {\n var el = this[0];\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return new Dom7([el.previousElementSibling]);\n }\n return new Dom7([]);\n }\n\n if (el.previousElementSibling) { return new Dom7([el.previousElementSibling]); }\n return new Dom7([]);\n }\n return new Dom7([]);\n }\n function prevAll(selector) {\n var prevEls = [];\n var el = this[0];\n if (!el) { return new Dom7([]); }\n while (el.previousElementSibling) {\n var prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if ($(prev).is(selector)) { prevEls.push(prev); }\n } else { prevEls.push(prev); }\n el = prev;\n }\n return new Dom7(prevEls);\n }\n function parent(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) { parents.push(this[i].parentNode); }\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n return $(unique(parents));\n }\n function parents(selector) {\n var parents = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var parent = this[i].parentNode; // eslint-disable-line\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) { parents.push(parent); }\n } else {\n parents.push(parent);\n }\n parent = parent.parentNode;\n }\n }\n return $(unique(parents));\n }\n function closest(selector) {\n var closest = this; // eslint-disable-line\n if (typeof selector === 'undefined') {\n return new Dom7([]);\n }\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n return closest;\n }\n function find(selector) {\n var foundElements = [];\n for (var i = 0; i < this.length; i += 1) {\n var found = this[i].querySelectorAll(selector);\n for (var j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n return new Dom7(foundElements);\n }\n function children(selector) {\n var children = []; // eslint-disable-line\n for (var i = 0; i < this.length; i += 1) {\n var childNodes = this[i].childNodes;\n\n for (var j = 0; j < childNodes.length; j += 1) {\n if (!selector) {\n if (childNodes[j].nodeType === 1) { children.push(childNodes[j]); }\n } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n return new Dom7(unique(children));\n }\n function remove() {\n for (var i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) { this[i].parentNode.removeChild(this[i]); }\n }\n return this;\n }\n function add() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var dom = this;\n var i;\n var j;\n for (i = 0; i < args.length; i += 1) {\n var toAdd = $(args[i]);\n for (j = 0; j < toAdd.length; j += 1) {\n dom[dom.length] = toAdd[j];\n dom.length += 1;\n }\n }\n return dom;\n }\n\n var Methods = {\n addClass: addClass,\n removeClass: removeClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n attr: attr,\n removeAttr: removeAttr,\n data: data,\n transform: transform,\n transition: transition,\n on: on,\n off: off,\n trigger: trigger,\n transitionEnd: transitionEnd,\n outerWidth: outerWidth,\n outerHeight: outerHeight,\n offset: offset,\n css: css,\n each: each,\n html: html,\n text: text,\n is: is,\n index: index,\n eq: eq,\n append: append,\n prepend: prepend,\n next: next,\n nextAll: nextAll,\n prev: prev,\n prevAll: prevAll,\n parent: parent,\n parents: parents,\n closest: closest,\n find: find,\n children: children,\n filter: filter,\n remove: remove,\n add: add,\n styles: styles,\n };\n\n Object.keys(Methods).forEach(function (methodName) {\n $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n });\n\n var Utils = {\n deleteProps: function deleteProps(obj) {\n var object = obj;\n Object.keys(object).forEach(function (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: function nextTick(callback, delay) {\n if ( delay === void 0 ) delay = 0;\n\n return setTimeout(callback, delay);\n },\n now: function now() {\n return Date.now();\n },\n getTranslate: function getTranslate(el, axis) {\n if ( axis === void 0 ) axis = 'x';\n\n var matrix;\n var curTransform;\n var transformMatrix;\n\n var curStyle = win.getComputedStyle(el, null);\n\n if (win.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(function (a) { return 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 win.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 (win.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 (win.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: function parseUrlQuery(url) {\n var query = {};\n var urlToParse = url || win.location.href;\n var i;\n var params;\n var param;\n var length;\n if (typeof urlToParse === 'string' && urlToParse.length) {\n urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n params = urlToParse.split('&').filter(function (paramsPart) { return 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: function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n },\n extend: function extend() {\n var args = [], len$1 = arguments.length;\n while ( len$1-- ) args[ len$1 ] = arguments[ len$1 ];\n\n var to = Object(args[0]);\n for (var i = 1; i < args.length; i += 1) {\n var nextSource = args[i];\n if (nextSource !== undefined && nextSource !== null) {\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n var nextKey = keysArray[nextIndex];\n var 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\n var Support = (function Support() {\n return {\n touch: (win.Modernizr && win.Modernizr.touch === true) || (function checkTouch() {\n return !!((win.navigator.maxTouchPoints > 0) || ('ontouchstart' in win) || (win.DocumentTouch && doc instanceof win.DocumentTouch));\n }()),\n\n pointerEvents: !!(win.navigator.pointerEnabled || win.PointerEvent || ('maxTouchPoints' in win.navigator && win.navigator.maxTouchPoints > 0)),\n prefixedPointerEvents: !!win.navigator.msPointerEnabled,\n\n observer: (function checkObserver() {\n return ('MutationObserver' in win || 'WebkitMutationObserver' in win);\n }()),\n\n passiveListener: (function checkPassiveListener() {\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get: function get() {\n supportsPassive = true;\n },\n });\n win.addEventListener('testPassiveListener', null, opts);\n } catch (e) {\n // No support\n }\n return supportsPassive;\n }()),\n\n gestures: (function checkGestures() {\n return 'ongesturestart' in win;\n }()),\n };\n }());\n\n var SwiperClass = function SwiperClass(params) {\n if ( params === void 0 ) params = {};\n\n var 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(function (eventName) {\n self.on(eventName, self.params.on[eventName]);\n });\n }\n };\n\n var staticAccessors = { components: { configurable: true } };\n\n SwiperClass.prototype.on = function on (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n var method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(function (event) {\n if (!self.eventsListeners[event]) { self.eventsListeners[event] = []; }\n self.eventsListeners[event][method](handler);\n });\n return self;\n };\n\n SwiperClass.prototype.once = function once (events, handler, priority) {\n var self = this;\n if (typeof handler !== 'function') { return self; }\n function onceHandler() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n handler.apply(self, args);\n self.off(events, onceHandler);\n if (onceHandler.f7proxy) {\n delete onceHandler.f7proxy;\n }\n }\n onceHandler.f7proxy = handler;\n return self.on(events, onceHandler, priority);\n };\n\n SwiperClass.prototype.off = function off (events, handler) {\n var self = this;\n if (!self.eventsListeners) { return self; }\n events.split(' ').forEach(function (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(function (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 SwiperClass.prototype.emit = function emit () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var self = this;\n if (!self.eventsListeners) { return self; }\n var events;\n var data;\n var 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 var eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(function (event) {\n if (self.eventsListeners && self.eventsListeners[event]) {\n var handlers = [];\n self.eventsListeners[event].forEach(function (eventHandler) {\n handlers.push(eventHandler);\n });\n handlers.forEach(function (eventHandler) {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n };\n\n SwiperClass.prototype.useModulesParams = function useModulesParams (instanceParams) {\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n // Extend params\n if (module.params) {\n Utils.extend(instanceParams, module.params);\n }\n });\n };\n\n SwiperClass.prototype.useModules = function useModules (modulesParams) {\n if ( modulesParams === void 0 ) modulesParams = {};\n\n var instance = this;\n if (!instance.modules) { return; }\n Object.keys(instance.modules).forEach(function (moduleName) {\n var module = instance.modules[moduleName];\n var moduleParams = modulesParams[moduleName] || {};\n // Extend instance methods and props\n if (module.instance) {\n Object.keys(module.instance).forEach(function (modulePropName) {\n var 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(function (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 staticAccessors.components.set = function (components) {\n var Class = this;\n if (!Class.use) { return; }\n Class.use(components);\n };\n\n SwiperClass.installModule = function installModule (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (!Class.prototype.modules) { Class.prototype.modules = {}; }\n var 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(function (key) {\n Class.prototype[key] = module.proto[key];\n });\n }\n // Class\n if (module.static) {\n Object.keys(module.static).forEach(function (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 SwiperClass.use = function use (module) {\n var params = [], len = arguments.length - 1;\n while ( len-- > 0 ) params[ len ] = arguments[ len + 1 ];\n\n var Class = this;\n if (Array.isArray(module)) {\n module.forEach(function (m) { return Class.installModule(m); });\n return Class;\n }\n return Class.installModule.apply(Class, [ module ].concat( params ));\n };\n\n Object.defineProperties( SwiperClass, staticAccessors );\n\n function updateSize () {\n var swiper = this;\n var width;\n var height;\n var $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: width,\n height: height,\n size: swiper.isHorizontal() ? width : height,\n });\n }\n\n function updateSlides () {\n var swiper = this;\n var params = swiper.params;\n\n var $wrapperEl = swiper.$wrapperEl;\n var swiperSize = swiper.size;\n var rtl = swiper.rtlTranslate;\n var wrongRTL = swiper.wrongRTL;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n var previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n var slides = $wrapperEl.children((\".\" + (swiper.params.slideClass)));\n var slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n var snapGrid = [];\n var slidesGrid = [];\n var 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 var offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n var offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n var previousSnapGridLength = swiper.snapGrid.length;\n var previousSlidesGridLength = swiper.snapGrid.length;\n\n var spaceBetween = params.spaceBetween;\n var slidePosition = -offsetBefore;\n var prevSlideSize = 0;\n var 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 var 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 var slideSize;\n var slidesPerColumn = params.slidesPerColumn;\n var slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n var numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n for (var i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n var slide = slides.eq(i);\n if (params.slidesPerColumn > 1) {\n // Set slides order\n var newSlideOrderIndex = (void 0);\n var column = (void 0);\n var row = (void 0);\n if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n var groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n var slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n\n row = Math.floor(slideIndexInGroup / params.slidesPerColumn);\n column = (slideIndexInGroup - row * params.slidesPerGroup) + 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 var slideStyles = win.getComputedStyle(slide[0], null);\n var currentTransform = slide[0].style.transform;\n var 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 var width = parseFloat(slideStyles.getPropertyValue('width'));\n var paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n var paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n var marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n var marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n var 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 var height = parseFloat(slideStyles.getPropertyValue('height'));\n var paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n var paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n var marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n var marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n var boxSizing$1 = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing$1 && boxSizing$1 === '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) % 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 var 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 (var i$1 = 0; i$1 < snapGrid.length; i$1 += 1) {\n var slidesGridItem = snapGrid[i$1];\n if (params.roundLengths) { slidesGridItem = Math.floor(slidesGridItem); }\n if (snapGrid[i$1] < 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 (var i$2 = 0; i$2 < snapGrid.length; i$2 += 1) {\n var slidesGridItem$1 = snapGrid[i$2];\n if (params.roundLengths) { slidesGridItem$1 = Math.floor(slidesGridItem$1); }\n if (snapGrid[i$2] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem$1);\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.centerInsufficientSlides) {\n var allSlidesSize = 0;\n slidesSizesGrid.forEach(function (slideSizeValue) {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n if (allSlidesSize < swiperSize) {\n var allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach(function (snap, snapIndex) {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach(function (snap, snapIndex) {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Utils.extend(swiper, {\n slides: slides,\n snapGrid: snapGrid,\n slidesGrid: slidesGrid,\n slidesSizesGrid: 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\n function updateAutoHeight (speed) {\n var swiper = this;\n var activeSlides = [];\n var newHeight = 0;\n var 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 for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n var index = swiper.activeIndex + i;\n if (index > swiper.slides.length) { break; }\n activeSlides.push(swiper.slides.eq(index)[0]);\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 var 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\n function updateSlidesOffset () {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n }\n\n function updateSlidesProgress (translate) {\n if ( translate === void 0 ) translate = (this && this.translate) || 0;\n\n var swiper = this;\n var params = swiper.params;\n\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n\n if (slides.length === 0) { return; }\n if (typeof slides[0].swiperSlideOffset === 'undefined') { swiper.updateSlidesOffset(); }\n\n var 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 (var i = 0; i < slides.length; i += 1) {\n var slide = slides[i];\n var slideProgress = (\n (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n ) / (slide.swiperSlideSize + params.spaceBetween);\n if (params.watchSlidesVisibility) {\n var slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n var slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n var 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\n function updateProgress (translate) {\n var swiper = this;\n if (typeof translate === 'undefined') {\n var multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n }\n var params = swiper.params;\n var translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n var progress = swiper.progress;\n var isBeginning = swiper.isBeginning;\n var isEnd = swiper.isEnd;\n var wasBeginning = isBeginning;\n var 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: progress,\n isBeginning: isBeginning,\n isEnd: isEnd,\n });\n\n if (params.watchSlidesProgress || params.watchSlidesVisibility) { 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\n function updateSlidesClasses () {\n var swiper = this;\n\n var slides = swiper.slides;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n var realIndex = swiper.realIndex;\n var isVirtual = swiper.virtual && params.virtual.enabled;\n\n slides.removeClass(((params.slideActiveClass) + \" \" + (params.slideNextClass) + \" \" + (params.slidePrevClass) + \" \" + (params.slideDuplicateActiveClass) + \" \" + (params.slideDuplicateNextClass) + \" \" + (params.slideDuplicatePrevClass)));\n\n var 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 var 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 var 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\n function updateActiveIndex (newActiveIndex) {\n var swiper = this;\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\n var previousIndex = swiper.activeIndex;\n var previousRealIndex = swiper.realIndex;\n var previousSnapIndex = swiper.snapIndex;\n var activeIndex = newActiveIndex;\n var snapIndex;\n if (typeof activeIndex === 'undefined') {\n for (var 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 snapIndex = Math.floor(activeIndex / 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 var realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n Utils.extend(swiper, {\n snapIndex: snapIndex,\n realIndex: realIndex,\n previousIndex: previousIndex,\n activeIndex: activeIndex,\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n }\n\n function updateClickedSlide (e) {\n var swiper = this;\n var params = swiper.params;\n var slide = $(e.target).closest((\".\" + (params.slideClass)))[0];\n var slideFound = false;\n if (slide) {\n for (var 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\n var update = {\n updateSize: updateSize,\n updateSlides: updateSlides,\n updateAutoHeight: updateAutoHeight,\n updateSlidesOffset: updateSlidesOffset,\n updateSlidesProgress: updateSlidesProgress,\n updateProgress: updateProgress,\n updateSlidesClasses: updateSlidesClasses,\n updateActiveIndex: updateActiveIndex,\n updateClickedSlide: updateClickedSlide,\n };\n\n function getTranslate (axis) {\n if ( axis === void 0 ) axis = this.isHorizontal() ? 'x' : 'y';\n\n var swiper = this;\n\n var params = swiper.params;\n var rtl = swiper.rtlTranslate;\n var translate = swiper.translate;\n var $wrapperEl = swiper.$wrapperEl;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n\n var currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n if (rtl) { currentTranslate = -currentTranslate; }\n\n return currentTranslate || 0;\n }\n\n function setTranslate (translate, byController) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var wrapperEl = swiper.wrapperEl;\n var progress = swiper.progress;\n var x = 0;\n var y = 0;\n var 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 var newProgress;\n var 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\n function minTranslate () {\n return (-this.snapGrid[0]);\n }\n\n function maxTranslate () {\n return (-this.snapGrid[this.snapGrid.length - 1]);\n }\n\n var translate = {\n getTranslate: getTranslate,\n setTranslate: setTranslate,\n minTranslate: minTranslate,\n maxTranslate: maxTranslate,\n };\n\n function setTransition (duration, byController) {\n var swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n }\n\n function transitionStart (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var params = swiper.params;\n var previousIndex = swiper.previousIndex;\n if (params.cssMode) { return; }\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n var 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\n function transitionEnd$1 (runCallbacks, direction) {\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var previousIndex = swiper.previousIndex;\n var params = swiper.params;\n swiper.animating = false;\n if (params.cssMode) { return; }\n swiper.setTransition(0);\n\n var 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\n var transition$1 = {\n setTransition: setTransition,\n transitionStart: transitionStart,\n transitionEnd: transitionEnd$1,\n };\n\n function slideTo (index, speed, runCallbacks, internal) {\n var obj;\n\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n var swiper = this;\n var slideIndex = index;\n if (slideIndex < 0) { slideIndex = 0; }\n\n var params = swiper.params;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var previousIndex = swiper.previousIndex;\n var activeIndex = swiper.activeIndex;\n var rtl = swiper.rtlTranslate;\n var wrapperEl = swiper.wrapperEl;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n var snapIndex = Math.floor(slideIndex / 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 var translate = -snapGrid[snapIndex];\n\n // Update progress\n swiper.updateProgress(translate);\n\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (var 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 var 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 var isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -translate;\n } else {\n // eslint-disable-next-line\n if (wrapperEl.scrollTo) {\n wrapperEl.scrollTo(( obj = {}, obj[isH ? 'left' : 'top'] = -translate, obj.behavior = 'smooth', obj ));\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -translate;\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\n function slideToLoop (index, speed, runCallbacks, internal) {\n if ( index === void 0 ) index = 0;\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var 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\" */\n function slideNext (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\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 return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + params.slidesPerGroup, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slidePrev (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var params = swiper.params;\n var animating = swiper.animating;\n var snapGrid = swiper.snapGrid;\n var slidesGrid = swiper.slidesGrid;\n var rtlTranslate = swiper.rtlTranslate;\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 var 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 var normalizedTranslate = normalize(translate);\n var normalizedSnapGrid = snapGrid.map(function (val) { return normalize(val); });\n var normalizedSlidesGrid = slidesGrid.map(function (val) { return normalize(val); });\n\n var currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n var prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n snapGrid.forEach(function (snap) {\n if (!prevSnap && normalizedTranslate >= snap) { prevSnap = snap; }\n });\n }\n var 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\" */\n function slideReset (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n }\n\n /* eslint no-unused-vars: \"off\" */\n function slideToClosest (speed, runCallbacks, internal) {\n if ( speed === void 0 ) speed = this.params.speed;\n if ( runCallbacks === void 0 ) runCallbacks = true;\n\n var swiper = this;\n var index = swiper.activeIndex;\n var snapIndex = Math.floor(index / swiper.params.slidesPerGroup);\n\n if (snapIndex < swiper.snapGrid.length - 1) {\n var translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n var currentSnap = swiper.snapGrid[snapIndex];\n var nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if ((translate - currentSnap) > (nextSnap - currentSnap) / 2) {\n index = swiper.params.slidesPerGroup;\n }\n }\n\n return swiper.slideTo(index, speed, runCallbacks, internal);\n }\n\n function slideToClickedSlide () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n\n var slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n var slideToIndex = swiper.clickedIndex;\n var 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(function () {\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(function () {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n }\n\n var slide = {\n slideTo: slideTo,\n slideToLoop: slideToLoop,\n slideNext: slideNext,\n slidePrev: slidePrev,\n slideReset: slideReset,\n slideToClosest: slideToClosest,\n slideToClickedSlide: slideToClickedSlide,\n };\n\n function loopCreate () {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n // Remove duplicated slides\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass))).remove();\n\n var slides = $wrapperEl.children((\".\" + (params.slideClass)));\n\n if (params.loopFillGroupWithBlank) {\n var blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (var i = 0; i < blankSlidesNum; i += 1) {\n var blankNode = $(doc.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 = parseInt(params.loopedSlides || params.slidesPerView, 10);\n swiper.loopedSlides += params.loopAdditionalSlides;\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n var prependSlides = [];\n var appendSlides = [];\n slides.each(function (index, el) {\n var 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 (var i$1 = 0; i$1 < appendSlides.length; i$1 += 1) {\n $wrapperEl.append($(appendSlides[i$1].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n for (var i$2 = prependSlides.length - 1; i$2 >= 0; i$2 -= 1) {\n $wrapperEl.prepend($(prependSlides[i$2].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n }\n\n function loopFix () {\n var swiper = this;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var slides = swiper.slides;\n var loopedSlides = swiper.loopedSlides;\n var allowSlidePrev = swiper.allowSlidePrev;\n var allowSlideNext = swiper.allowSlideNext;\n var snapGrid = swiper.snapGrid;\n var rtl = swiper.rtlTranslate;\n var newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n\n var snapTranslate = -snapGrid[activeIndex];\n var diff = snapTranslate - swiper.getTranslate();\n\n\n // Fix For Negative Oversliding\n if (activeIndex < loopedSlides) {\n newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n newIndex += loopedSlides;\n var 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 ((params.slidesPerView === 'auto' && activeIndex >= loopedSlides * 2) || (activeIndex >= slides.length - loopedSlides)) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n var slideChanged$1 = swiper.slideTo(newIndex, 0, false, true);\n if (slideChanged$1 && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n }\n\n function loopDestroy () {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var slides = swiper.slides;\n $wrapperEl.children((\".\" + (params.slideClass) + \".\" + (params.slideDuplicateClass) + \",.\" + (params.slideClass) + \".\" + (params.slideBlankClass))).remove();\n slides.removeAttr('data-swiper-slide-index');\n }\n\n var loop = {\n loopCreate: loopCreate,\n loopFix: loopFix,\n loopDestroy: loopDestroy,\n };\n\n function setGrabCursor (moving) {\n var swiper = this;\n if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; }\n var 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\n function unsetGrabCursor () {\n var swiper = this;\n if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) { return; }\n swiper.el.style.cursor = '';\n }\n\n var grabCursor = {\n setGrabCursor: setGrabCursor,\n unsetGrabCursor: unsetGrabCursor,\n };\n\n function appendSlide (slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n if (params.loop) {\n swiper.loopDestroy();\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (var 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\n function prependSlide (slides) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n if (params.loop) {\n swiper.loopDestroy();\n }\n var newActiveIndex = activeIndex + 1;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var 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\n function addSlide (index, slides) {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var params = swiper.params;\n var activeIndex = swiper.activeIndex;\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var 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 var newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n var slidesBuffer = [];\n for (var i = baseLength - 1; i >= index; i -= 1) {\n var currentSlide = swiper.slides.eq(i);\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n\n if (typeof slides === 'object' && 'length' in slides) {\n for (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (slides[i$1]) { $wrapperEl.append(slides[i$1]); }\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n $wrapperEl.append(slides);\n }\n\n for (var i$2 = 0; i$2 < slidesBuffer.length; i$2 += 1) {\n $wrapperEl.append(slidesBuffer[i$2]);\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\n function removeSlide (slidesIndexes) {\n var swiper = this;\n var params = swiper.params;\n var $wrapperEl = swiper.$wrapperEl;\n var activeIndex = swiper.activeIndex;\n\n var activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.slides = $wrapperEl.children((\".\" + (params.slideClass)));\n }\n var newActiveIndex = activeIndexBuffer;\n var indexToRemove;\n\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (var 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\n function removeAllSlides () {\n var swiper = this;\n\n var slidesIndexes = [];\n for (var i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n }\n\n var manipulation = {\n appendSlide: appendSlide,\n prependSlide: prependSlide,\n addSlide: addSlide,\n removeSlide: removeSlide,\n removeAllSlides: removeAllSlides,\n };\n\n var Device = (function Device() {\n var ua = win.navigator.userAgent;\n\n var device = {\n ios: false,\n android: false,\n androidChrome: false,\n desktop: false,\n windows: false,\n iphone: false,\n ipod: false,\n ipad: false,\n cordova: win.cordova || win.phonegap,\n phonegap: win.cordova || win.phonegap,\n };\n\n var windows = ua.match(/(Windows Phone);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n var ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n var ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n var iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n\n\n // Windows\n if (windows) {\n device.os = 'windows';\n device.osVersion = windows[2];\n device.windows = true;\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.iphone = 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 // Desktop\n device.desktop = !(device.os || device.android || device.webView);\n\n // Webview\n device.webView = (iphone || ipad || ipod) && ua.match(/.*AppleWebKit(?!.*Safari)/i);\n\n // Minimal UI\n if (device.os && device.os === 'ios') {\n var osVersionArr = device.osVersion.split('.');\n var metaViewport = doc.querySelector('meta[name=\"viewport\"]');\n device.minimalUi = !device.webView\n && (ipod || iphone)\n && (osVersionArr[0] * 1 === 7 ? osVersionArr[1] * 1 >= 1 : osVersionArr[0] * 1 > 7)\n && metaViewport && metaViewport.getAttribute('content').indexOf('minimal-ui') >= 0;\n }\n\n // Pixel Ratio\n device.pixelRatio = win.devicePixelRatio || 1;\n\n // Export object\n return device;\n }());\n\n function onTouchStart (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; }\n var $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 var startX = touches.currentX;\n var 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 var edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n var edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (\n edgeSwipeDetection\n && ((startX <= edgeSwipeThreshold)\n || (startX >= win.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 var preventDefault = true;\n if ($targetEl.is(data.formElements)) { preventDefault = false; }\n if (\n doc.activeElement\n && $(doc.activeElement).is(data.formElements)\n && doc.activeElement !== $targetEl[0]\n ) {\n doc.activeElement.blur();\n }\n\n var shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n e.preventDefault();\n }\n }\n swiper.emit('touchStart', e);\n }\n\n function onTouchMove (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var 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 var pageX = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n var pageY = e.type === 'touchmove' ? e.targetTouches[0].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 && doc.activeElement) {\n if (e.target === doc.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 var diffX = touches.currentX - touches.startX;\n var diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt((Math.pow( diffX, 2 )) + (Math.pow( diffY, 2 ))) < swiper.params.threshold) { return; }\n\n if (typeof data.isScrolling === 'undefined') {\n var 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 var 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 var disableParentSwiper = true;\n var 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) + (Math.pow( (-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) - (Math.pow( (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\n function onTouchEnd (event) {\n var swiper = this;\n var data = swiper.touchEventsData;\n\n var params = swiper.params;\n var touches = swiper.touches;\n var rtl = swiper.rtlTranslate;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesGrid = swiper.slidesGrid;\n var snapGrid = swiper.snapGrid;\n var 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 var touchEndTime = Utils.now();\n var 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(function () {\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 var 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 var lastMoveEvent = data.velocities.pop();\n var velocityEvent = data.velocities.pop();\n\n var distance = lastMoveEvent.position - velocityEvent.position;\n var 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 var momentumDuration = 1000 * params.freeModeMomentumRatio;\n var momentumDistance = swiper.velocity * momentumDuration;\n\n var newPosition = swiper.translate + momentumDistance;\n if (rtl) { newPosition = -newPosition; }\n\n var doBounce = false;\n var afterBouncePosition;\n var bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n var 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 var nextSlide;\n for (var 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', function () {\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 } 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(function () {\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(function () {\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(function () {\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 var stopIndex = 0;\n var groupSize = swiper.slidesSizesGrid[0];\n for (var i = 0; i < slidesGrid.length; i += params.slidesPerGroup) {\n if (typeof slidesGrid[i + params.slidesPerGroup] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + params.slidesPerGroup]) {\n stopIndex = i;\n groupSize = slidesGrid[i + params.slidesPerGroup] - 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 var ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\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 + params.slidesPerGroup); }\n else { swiper.slideTo(stopIndex); }\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > (1 - params.longSwipesRatio)) { swiper.slideTo(stopIndex + params.slidesPerGroup); }\n else { swiper.slideTo(stopIndex); }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(stopIndex + params.slidesPerGroup);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(stopIndex);\n }\n }\n }\n\n function onResize () {\n var swiper = this;\n\n var params = swiper.params;\n var el = swiper.el;\n\n if (el && el.offsetWidth === 0) { return; }\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n var allowSlideNext = swiper.allowSlideNext;\n var allowSlidePrev = swiper.allowSlidePrev;\n var snapGrid = swiper.snapGrid;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n\n swiper.updateSize();\n swiper.updateSlides();\n\n if (params.freeMode) {\n var newTranslate = Math.min(Math.max(swiper.translate, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\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\n function onClick (e) {\n var 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\n function onScroll () {\n var swiper = this;\n var wrapperEl = swiper.wrapperEl;\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? -wrapperEl.scrollLeft : -wrapperEl.scrollTop;\n // eslint-disable-next-line\n if (swiper.translate === -0) { swiper.translate = 0; }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n var newProgress;\n var 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(swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n }\n\n function attachEvents() {\n var swiper = this;\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\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 var capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var 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 } : capture);\n el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n if (touchEvents.cancel) {\n el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n }\n if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n el.addEventListener('mousedown', swiper.onTouchStart, false);\n doc.addEventListener('mousemove', swiper.onTouchMove, capture);\n doc.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 swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n }\n\n function detachEvents() {\n var swiper = this;\n\n var params = swiper.params;\n var touchEvents = swiper.touchEvents;\n var el = swiper.el;\n var wrapperEl = swiper.wrapperEl;\n\n var capture = !!params.nested;\n\n // Touch Events\n if (!Support.touch && (Support.pointerEvents || Support.prefixedPointerEvents)) {\n el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n doc.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n doc.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n } else {\n if (Support.touch) {\n var 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 doc.removeEventListener('mousemove', swiper.onTouchMove, capture);\n doc.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\n var events = {\n attachEvents: attachEvents,\n detachEvents: detachEvents,\n };\n\n function setBreakpoint () {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var initialized = swiper.initialized;\n var loopedSlides = swiper.loopedSlides; if ( loopedSlides === void 0 ) loopedSlides = 0;\n var params = swiper.params;\n var $el = swiper.$el;\n var breakpoints = params.breakpoints;\n if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) { return; }\n\n // Get breakpoint for window width and update parameters\n var breakpoint = swiper.getBreakpoint(breakpoints);\n\n if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n var breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n if (breakpointOnlyParams) {\n ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerColumn'].forEach(function (param) {\n var 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 var breakpointParams = breakpointOnlyParams || swiper.originalParams;\n var wasMultiRow = params.slidesPerColumn > 1;\n var 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 var directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n var 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\n function getBreakpoint (breakpoints) {\n // Get breakpoint for window width\n if (!breakpoints) { return undefined; }\n var breakpoint = false;\n var points = [];\n Object.keys(breakpoints).forEach(function (point) {\n points.push(point);\n });\n points.sort(function (a, b) { return parseInt(a, 10) - parseInt(b, 10); });\n for (var i = 0; i < points.length; i += 1) {\n var point = points[i];\n if (point <= win.innerWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n }\n\n var breakpoints = { setBreakpoint: setBreakpoint, getBreakpoint: getBreakpoint };\n\n function addClasses () {\n var swiper = this;\n var classNames = swiper.classNames;\n var params = swiper.params;\n var rtl = swiper.rtl;\n var $el = swiper.$el;\n var 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(function (suffix) {\n classNames.push(params.containerModifierClass + suffix);\n });\n\n $el.addClass(classNames.join(' '));\n }\n\n function removeClasses () {\n var swiper = this;\n var $el = swiper.$el;\n var classNames = swiper.classNames;\n\n $el.removeClass(classNames.join(' '));\n }\n\n var classes = { addClasses: addClasses, removeClasses: removeClasses };\n\n function loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n var image;\n function onReady() {\n if (callback) { callback(); }\n }\n if (!imageEl.complete || !checkForComplete) {\n if (src) {\n image = new win.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\n function preloadImages () {\n var 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 (var i = 0; i < swiper.imagesToLoad.length; i += 1) {\n var 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\n var images = {\n loadImage: loadImage,\n preloadImages: preloadImages,\n };\n\n function checkOverflow() {\n var swiper = this;\n var wasLocked = swiper.isLocked;\n\n swiper.isLocked = swiper.snapGrid.length === 1;\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\n var checkOverflow$1 = { checkOverflow: checkOverflow };\n\n var defaults = {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'container',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\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 centeredSlides: 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\n var prototypes = {\n update: update,\n translate: translate,\n transition: transition$1,\n slide: slide,\n loop: loop,\n grabCursor: grabCursor,\n manipulation: manipulation,\n events: events,\n breakpoints: breakpoints,\n checkOverflow: checkOverflow$1,\n classes: classes,\n images: images,\n };\n\n var extendedDefaults = {};\n\n var Swiper = /*@__PURE__*/(function (SwiperClass) {\n function Swiper() {\n var assign;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n var el;\n var params;\n if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n params = args[0];\n } else {\n (assign = args, el = assign[0], params = assign[1]);\n }\n if (!params) { params = {}; }\n\n params = Utils.extend({}, params);\n if (el && !params.el) { params.el = el; }\n\n SwiperClass.call(this, params);\n\n Object.keys(prototypes).forEach(function (prototypeGroup) {\n Object.keys(prototypes[prototypeGroup]).forEach(function (protoMethod) {\n if (!Swiper.prototype[protoMethod]) {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n }\n });\n });\n\n // Swiper Instance\n var swiper = this;\n if (typeof swiper.modules === 'undefined') {\n swiper.modules = {};\n }\n Object.keys(swiper.modules).forEach(function (moduleName) {\n var module = swiper.modules[moduleName];\n if (module.params) {\n var moduleParamName = Object.keys(module.params)[0];\n var 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 var 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 var $el = $(swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return undefined;\n }\n\n if ($el.length > 1) {\n var swipers = [];\n $el.each(function (index, containerEl) {\n var 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 var $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 = function (options) { return $el.children(options); };\n } else {\n $wrapperEl = $el.children((\".\" + (swiper.params.wrapperClass)));\n }\n // Extend Swiper\n Utils.extend(swiper, {\n $el: $el,\n el: el,\n $wrapperEl: $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: function isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical: function 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 var touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n var desktop = ['mousedown', 'mousemove', 'mouseup'];\n if (Support.pointerEvents) {\n desktop = ['pointerdown', 'pointermove', 'pointerup'];\n } else if (Support.prefixedPointerEvents) {\n desktop = ['MSPointerDown', 'MSPointerMove', 'MSPointerUp'];\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',\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 if ( SwiperClass ) Swiper.__proto__ = SwiperClass;\n Swiper.prototype = Object.create( SwiperClass && SwiperClass.prototype );\n Swiper.prototype.constructor = Swiper;\n\n var staticAccessors = { extendedDefaults: { configurable: true },defaults: { configurable: true },Class: { configurable: true },$: { configurable: true } };\n\n Swiper.prototype.slidesPerViewDynamic = function slidesPerViewDynamic () {\n var swiper = this;\n var params = swiper.params;\n var slides = swiper.slides;\n var slidesGrid = swiper.slidesGrid;\n var swiperSize = swiper.size;\n var activeIndex = swiper.activeIndex;\n var spv = 1;\n if (params.centeredSlides) {\n var slideSize = slides[activeIndex].swiperSlideSize;\n var breakLoop;\n for (var 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 (var i$1 = activeIndex - 1; i$1 >= 0; i$1 -= 1) {\n if (slides[i$1] && !breakLoop) {\n slideSize += slides[i$1].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) { breakLoop = true; }\n }\n }\n } else {\n for (var i$2 = activeIndex + 1; i$2 < slides.length; i$2 += 1) {\n if (slidesGrid[i$2] - slidesGrid[activeIndex] < swiperSize) {\n spv += 1;\n }\n }\n }\n return spv;\n };\n\n Swiper.prototype.update = function update () {\n var swiper = this;\n if (!swiper || swiper.destroyed) { return; }\n var snapGrid = swiper.snapGrid;\n var params = swiper.params;\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 var translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n var newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n var 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 Swiper.prototype.changeDirection = function changeDirection (newDirection, needUpdate) {\n if ( needUpdate === void 0 ) needUpdate = true;\n\n var swiper = this;\n var 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(function (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 Swiper.prototype.init = function init () {\n var 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 Swiper.prototype.destroy = function destroy (deleteInstance, cleanStyles) {\n if ( deleteInstance === void 0 ) deleteInstance = true;\n if ( cleanStyles === void 0 ) cleanStyles = true;\n\n var swiper = this;\n var params = swiper.params;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\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 ].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(function (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 Swiper.extendDefaults = function extendDefaults (newDefaults) {\n Utils.extend(extendedDefaults, newDefaults);\n };\n\n staticAccessors.extendedDefaults.get = function () {\n return extendedDefaults;\n };\n\n staticAccessors.defaults.get = function () {\n return defaults;\n };\n\n staticAccessors.Class.get = function () {\n return SwiperClass;\n };\n\n staticAccessors.$.get = function () {\n return $;\n };\n\n Object.defineProperties( Swiper, staticAccessors );\n\n return Swiper;\n }(SwiperClass));\n\n var Device$1 = {\n name: 'device',\n proto: {\n device: Device,\n },\n static: {\n device: Device,\n },\n };\n\n var Support$1 = {\n name: 'support',\n proto: {\n support: Support,\n },\n static: {\n support: Support,\n },\n };\n\n var Browser = (function Browser() {\n function isSafari() {\n var ua = win.navigator.userAgent.toLowerCase();\n return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n }\n return {\n isEdge: !!win.navigator.userAgent.match(/Edge/g),\n isSafari: isSafari(),\n isUiWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(win.navigator.userAgent),\n };\n }());\n\n var Browser$1 = {\n name: 'browser',\n proto: {\n browser: Browser,\n },\n static: {\n browser: Browser,\n },\n };\n\n var Resize = {\n name: 'resize',\n create: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n resize: {\n resizeHandler: function resizeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('beforeResize');\n swiper.emit('resize');\n },\n orientationChangeHandler: function orientationChangeHandler() {\n if (!swiper || swiper.destroyed || !swiper.initialized) { return; }\n swiper.emit('orientationchange');\n },\n },\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n // Emit resize\n win.addEventListener('resize', swiper.resize.resizeHandler);\n\n // Emit orientationchange\n win.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n destroy: function destroy() {\n var swiper = this;\n win.removeEventListener('resize', swiper.resize.resizeHandler);\n win.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n },\n },\n };\n\n var Observer = {\n func: win.MutationObserver || win.WebkitMutationObserver,\n attach: function attach(target, options) {\n if ( options === void 0 ) options = {};\n\n var swiper = this;\n\n var ObserverFunc = Observer.func;\n var observer = new ObserverFunc(function (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 var observerUpdate = function observerUpdate() {\n swiper.emit('observerUpdate', mutations[0]);\n };\n\n if (win.requestAnimationFrame) {\n win.requestAnimationFrame(observerUpdate);\n } else {\n win.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: function init() {\n var swiper = this;\n if (!Support.observer || !swiper.params.observer) { return; }\n if (swiper.params.observeParents) {\n var containerParents = swiper.$el.parents();\n for (var 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: function destroy() {\n var swiper = this;\n swiper.observer.observers.forEach(function (observer) {\n observer.disconnect();\n });\n swiper.observer.observers = [];\n },\n };\n\n var Observer$1 = {\n name: 'observer',\n params: {\n observer: false,\n observeParents: false,\n observeSlideChildren: false,\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n swiper.observer.init();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.observer.destroy();\n },\n },\n };\n\n var Virtual = {\n update: function update(force) {\n var swiper = this;\n var ref = swiper.params;\n var slidesPerView = ref.slidesPerView;\n var slidesPerGroup = ref.slidesPerGroup;\n var centeredSlides = ref.centeredSlides;\n var ref$1 = swiper.params.virtual;\n var addSlidesBefore = ref$1.addSlidesBefore;\n var addSlidesAfter = ref$1.addSlidesAfter;\n var ref$2 = swiper.virtual;\n var previousFrom = ref$2.from;\n var previousTo = ref$2.to;\n var slides = ref$2.slides;\n var previousSlidesGrid = ref$2.slidesGrid;\n var renderSlide = ref$2.renderSlide;\n var previousOffset = ref$2.offset;\n swiper.updateActiveIndex();\n var activeIndex = swiper.activeIndex || 0;\n\n var offsetProp;\n if (swiper.rtlTranslate) { offsetProp = 'right'; }\n else { offsetProp = swiper.isHorizontal() ? 'left' : 'top'; }\n\n var slidesAfter;\n var 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 var from = Math.max((activeIndex || 0) - slidesBefore, 0);\n var to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n var offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n Utils.extend(swiper.virtual, {\n from: from,\n to: to,\n offset: 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: offset,\n from: from,\n to: to,\n slides: (function getSlides() {\n var slidesToRender = [];\n for (var i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()),\n });\n onRendered();\n return;\n }\n var prependIndexes = [];\n var appendIndexes = [];\n if (force) {\n swiper.$wrapperEl.find((\".\" + (swiper.params.slideClass))).remove();\n } else {\n for (var 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 (var i$1 = 0; i$1 < slides.length; i$1 += 1) {\n if (i$1 >= from && i$1 <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i$1);\n } else {\n if (i$1 > previousTo) { appendIndexes.push(i$1); }\n if (i$1 < previousFrom) { prependIndexes.push(i$1); }\n }\n }\n }\n appendIndexes.forEach(function (index) {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort(function (a, b) { return b - a; }).forEach(function (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: function renderSlide(slide, index) {\n var swiper = this;\n var params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n var $slideEl = params.renderSlide\n ? $(params.renderSlide.call(swiper, slide, index))\n : $((\"
\" + slide + \"
\"));\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: function appendSlide(slides) {\n var swiper = this;\n if (typeof slides === 'object' && 'length' in slides) {\n for (var 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: function prependSlide(slides) {\n var swiper = this;\n var activeIndex = swiper.activeIndex;\n var newActiveIndex = activeIndex + 1;\n var numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (var 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 var cache = swiper.virtual.cache;\n var newCache = {};\n Object.keys(cache).forEach(function (cachedIndex) {\n var $cachedEl = cache[cachedIndex];\n var 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: function removeSlide(slidesIndexes) {\n var swiper = this;\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) { return; }\n var activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (var 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: function removeAllSlides() {\n var 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\n var 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: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"virtual\"));\n var 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: function setTranslate() {\n var swiper = this;\n if (!swiper.params.virtual.enabled) { return; }\n swiper.virtual.update();\n },\n },\n };\n\n var Keyboard = {\n handle: function handle(event) {\n var swiper = this;\n var rtl = swiper.rtlTranslate;\n var e = event;\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var 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 (doc.activeElement && doc.activeElement.nodeName && (doc.activeElement.nodeName.toLowerCase() === 'input' || doc.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 var 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 var windowWidth = win.innerWidth;\n var windowHeight = win.innerHeight;\n var swiperOffset = swiper.$el.offset();\n if (rtl) { swiperOffset.left -= swiper.$el[0].scrollLeft; }\n var 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 for (var i = 0; i < swiperCoord.length; i += 1) {\n var 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: function enable() {\n var swiper = this;\n if (swiper.keyboard.enabled) { return; }\n $(doc).on('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = true;\n },\n disable: function disable() {\n var swiper = this;\n if (!swiper.keyboard.enabled) { return; }\n $(doc).off('keydown', swiper.keyboard.handle);\n swiper.keyboard.enabled = false;\n },\n };\n\n var Keyboard$1 = {\n name: 'keyboard',\n params: {\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n },\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.keyboard.enabled) {\n swiper.keyboard.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.keyboard.enabled) {\n swiper.keyboard.disable();\n }\n },\n },\n };\n\n function isEventSupported() {\n var eventName = 'onwheel';\n var isSupported = eventName in doc;\n\n if (!isSupported) {\n var element = doc.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported\n && doc.implementation\n && doc.implementation.hasFeature\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n && doc.implementation.hasFeature('', '') !== true\n ) {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = doc.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n }\n var Mousewheel = {\n lastScrollTime: Utils.now(),\n event: function event() {\n if (win.navigator.userAgent.indexOf('firefox') > -1) { return 'DOMMouseScroll'; }\n return isEventSupported() ? 'wheel' : 'mousewheel';\n },\n normalize: function normalize(e) {\n // Reasonable defaults\n var PIXEL_STEP = 10;\n var LINE_HEIGHT = 40;\n var PAGE_HEIGHT = 800;\n\n var sX = 0;\n var sY = 0; // spinX, spinY\n var pX = 0;\n var 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 ((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: function handleMouseEnter() {\n var swiper = this;\n swiper.mouseEntered = true;\n },\n handleMouseLeave: function handleMouseLeave() {\n var swiper = this;\n swiper.mouseEntered = false;\n },\n handle: function handle(event) {\n var e = event;\n var swiper = this;\n var params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n if (!swiper.mouseEntered && !params.releaseOnEdges) { return true; }\n\n if (e.originalEvent) { e = e.originalEvent; } // jquery fix\n var delta = 0;\n var rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n var 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 if (Utils.now() - swiper.mousewheel.lastScrollTime > 60) {\n if (delta < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) { return true; }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n swiper.emit('scroll', e);\n } else if (params.releaseOnEdges) { return true; }\n }\n swiper.mousewheel.lastScrollTime = (new win.Date()).getTime();\n } else {\n // Freemode or scrollContainer:\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n var position = swiper.getTranslate() + (delta * params.sensitivity);\n var wasBeginning = swiper.isBeginning;\n var 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 clearTimeout(swiper.mousewheel.timeout);\n swiper.mousewheel.timeout = Utils.nextTick(function () {\n swiper.slideToClosest();\n }, 300);\n }\n // Emit event\n 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 if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n return false;\n },\n enable: function enable() {\n var swiper = this;\n var 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 var 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: function disable() {\n var swiper = this;\n var 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 var 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\n var 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: function create() {\n var 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 lastScrollTime: Utils.now(),\n },\n });\n },\n on: {\n init: function init() {\n var 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: function destroy() {\n var swiper = this;\n if (swiper.params.cssMode) {\n swiper.mousewheel.enable();\n }\n if (swiper.mousewheel.enabled) { swiper.mousewheel.disable(); }\n },\n },\n };\n\n var Navigation = {\n update: function update() {\n // Update Navigation Buttons\n var swiper = this;\n var params = swiper.params.navigation;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\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: function onPrevClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop) { return; }\n swiper.slidePrev();\n },\n onNextClick: function onNextClick(e) {\n var swiper = this;\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop) { return; }\n swiper.slideNext();\n },\n init: function init() {\n var swiper = this;\n var params = swiper.params.navigation;\n if (!(params.nextEl || params.prevEl)) { return; }\n\n var $nextEl;\n var $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: $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl: $prevEl,\n prevEl: $prevEl && $prevEl[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\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\n var 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: function create() {\n var 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: function init() {\n var swiper = this;\n swiper.navigation.init();\n swiper.navigation.update();\n },\n toEdge: function toEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n swiper.navigation.update();\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.navigation.destroy();\n },\n click: function click(e) {\n var swiper = this;\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\n if (\n swiper.params.navigation.hideOnClick\n && !$(e.target).is($prevEl)\n && !$(e.target).is($nextEl)\n ) {\n var 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\n var Pagination = {\n update: function update() {\n // Render || Update Pagination bullets/items\n var swiper = this;\n var rtl = swiper.rtl;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n var $el = swiper.pagination.$el;\n // Current/Total\n var current;\n var 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 var bullets = swiper.pagination.bullets;\n var firstIndex;\n var lastIndex;\n var 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(function (index, bullet) {\n var $bullet = $(bullet);\n var 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 var $bullet = bullets.eq(current);\n $bullet.addClass(params.bulletActiveClass);\n if (params.dynamicBullets) {\n var $firstDisplayedBullet = bullets.eq(firstIndex);\n var $lastDisplayedBullet = bullets.eq(lastIndex);\n for (var i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(((params.bulletActiveClass) + \"-main\"));\n }\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 if (params.dynamicBullets) {\n var dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n var bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n var 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 var progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n var scale = (current + 1) / total;\n var scaleX = 1;\n var 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 var bullets = swiper.pagination.$el[0].children;\n var active_index = swiper.activeIndex;\n\n for(var i = 0; i < bullets.length; i++) {\n var $bullet = $(bullets[i]);\n if(i + 3 == active_index) {\n $bullet.addClass(params.bulletActiveClass);\n }\n else {\n $bullet.removeClass(params.bulletActiveClass);\n }\n }\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: function render() {\n // Render Container\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n var $el = swiper.pagination.$el;\n var paginationHTML = '';\n if (params.type === 'bullets') {\n var numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n for (var 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) + \"\\\">\";\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: function init() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el) { return; }\n\n var $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 var 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: $el,\n el: $el[0],\n });\n },\n destroy: function destroy() {\n var swiper = this;\n var params = swiper.params.pagination;\n if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) { return; }\n var $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\n var 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: function (number) { return number; },\n formatFractionTotal: function (number) { return 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: function create() {\n var 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: function init() {\n var swiper = this;\n swiper.pagination.init();\n swiper.pagination.render();\n swiper.pagination.update();\n },\n activeIndexChange: function activeIndexChange() {\n var 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: function snapIndexChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.update();\n }\n },\n slidesLengthChange: function slidesLengthChange() {\n var swiper = this;\n if (swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n snapGridLengthChange: function snapGridLengthChange() {\n var swiper = this;\n if (!swiper.params.loop) {\n swiper.pagination.render();\n swiper.pagination.update();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.pagination.destroy();\n },\n click: function click(e) {\n var 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 var 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\n var Scrollbar = {\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var progress = swiper.progress;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n var params = swiper.params.scrollbar;\n\n var newSize = dragSize;\n var 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(function () {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n swiper.scrollbar.$dragEl.transition(duration);\n },\n updateSize: function updateSize() {\n var swiper = this;\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) { return; }\n\n var scrollbar = swiper.scrollbar;\n var $dragEl = scrollbar.$dragEl;\n var $el = scrollbar.$el;\n\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n var trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n var divider = swiper.size / swiper.virtualSize;\n var moveDivider = divider * (trackSize / swiper.size);\n var 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: trackSize,\n divider: divider,\n moveDivider: moveDivider,\n dragSize: dragSize,\n });\n scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n },\n getPointerPosition: function getPointerPosition(e) {\n var swiper = this;\n if (swiper.isHorizontal()) {\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageX : e.pageX || e.clientX);\n }\n return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].pageY : e.pageY || e.clientY);\n },\n setDragPosition: function setDragPosition(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var rtl = swiper.rtlTranslate;\n var $el = scrollbar.$el;\n var dragSize = scrollbar.dragSize;\n var trackSize = scrollbar.trackSize;\n var dragStartPos = scrollbar.dragStartPos;\n\n var 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 var 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: function onDragStart(e) {\n var swiper = this;\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\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: function onDragMove(e) {\n var swiper = this;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\n var $dragEl = scrollbar.$dragEl;\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: function onDragEnd(e) {\n var swiper = this;\n\n var params = swiper.params.scrollbar;\n var scrollbar = swiper.scrollbar;\n var $wrapperEl = swiper.$wrapperEl;\n var $el = scrollbar.$el;\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(function () {\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: function enableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEventsTouch = swiper.touchEventsTouch;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.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: function disableDraggable() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var touchEventsTouch = swiper.touchEventsTouch;\n var touchEventsDesktop = swiper.touchEventsDesktop;\n var params = swiper.params;\n var $el = scrollbar.$el;\n var target = $el[0];\n var activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n var passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n if (!Support.touch) {\n target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n doc.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n doc.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: function init() {\n var swiper = this;\n if (!swiper.params.scrollbar.el) { return; }\n var scrollbar = swiper.scrollbar;\n var $swiperEl = swiper.$el;\n var params = swiper.params.scrollbar;\n\n var $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 var $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: $el,\n el: $el[0],\n $dragEl: $dragEl,\n dragEl: $dragEl[0],\n });\n\n if (params.draggable) {\n scrollbar.enableDraggable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.disableDraggable();\n },\n };\n\n var 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: function create() {\n var 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: function init() {\n var swiper = this;\n swiper.scrollbar.init();\n swiper.scrollbar.updateSize();\n swiper.scrollbar.setTranslate();\n },\n update: function update() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n resize: function resize() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n swiper.scrollbar.updateSize();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n swiper.scrollbar.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n swiper.scrollbar.setTransition(duration);\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.scrollbar.destroy();\n },\n },\n };\n\n var Parallax = {\n setTransform: function setTransform(el, progress) {\n var swiper = this;\n var rtl = swiper.rtl;\n\n var $el = $(el);\n var rtlFactor = rtl ? -1 : 1;\n\n var p = $el.attr('data-swiper-parallax') || '0';\n var x = $el.attr('data-swiper-parallax-x');\n var y = $el.attr('data-swiper-parallax-y');\n var scale = $el.attr('data-swiper-parallax-scale');\n var 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 var 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 var currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n $el.transform((\"translate3d(\" + x + \", \" + y + \", 0px) scale(\" + currentScale + \")\"));\n }\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\n var progress = swiper.progress;\n var snapGrid = swiper.snapGrid;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, el) {\n swiper.parallax.setTransform(el, progress);\n });\n slides.each(function (slideIndex, slideEl) {\n var 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(function (index, el) {\n swiper.parallax.setTransform(el, slideProgress);\n });\n });\n },\n setTransition: function setTransition(duration) {\n if ( duration === void 0 ) duration = this.params.speed;\n\n var swiper = this;\n var $el = swiper.$el;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n .each(function (index, parallaxEl) {\n var $parallaxEl = $(parallaxEl);\n var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) { parallaxDuration = 0; }\n $parallaxEl.transition(parallaxDuration);\n });\n },\n };\n\n var Parallax$1 = {\n name: 'parallax',\n params: {\n parallax: {\n enabled: false,\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTranslate();\n },\n setTranslate: function setTranslate() {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (!swiper.params.parallax.enabled) { return; }\n swiper.parallax.setTransition(duration);\n },\n },\n };\n\n var Zoom = {\n // Calc Scale From Multi-touches\n getDistanceBetweenTouches: function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) { return 1; }\n var x1 = e.targetTouches[0].pageX;\n var y1 = e.targetTouches[0].pageY;\n var x2 = e.targetTouches[1].pageX;\n var y2 = e.targetTouches[1].pageY;\n var distance = Math.sqrt((Math.pow( (x2 - x1), 2 )) + (Math.pow( (y2 - y1), 2 )));\n return distance;\n },\n // Events\n onGestureStart: function onGestureStart(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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-slide');\n if (gesture.$slideEl.length === 0) { gesture.$slideEl = swiper.slides.eq(swiper.activeIndex); }\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\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 gesture.$imageEl.transition(0);\n swiper.zoom.isScaling = true;\n },\n onGestureChange: function onGestureChange(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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) + (Math.pow( ((zoom.scale - gesture.maxRatio) + 1), 0.5 ));\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = (params.minRatio + 1) - (Math.pow( ((params.minRatio - zoom.scale) + 1), 0.5 ));\n }\n gesture.$imageEl.transform((\"translate3d(0,0,0) scale(\" + (zoom.scale) + \")\"));\n },\n onGestureEnd: function onGestureEnd(e) {\n var swiper = this;\n var params = swiper.params.zoom;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\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: function onTouchStart(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\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: function onTouchMove(e) {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\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 var scaledWidth = image.width * zoom.scale;\n var 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) - (Math.pow( ((image.minX - image.currentX) + 1), 0.8 ));\n }\n if (image.currentX > image.maxX) {\n image.currentX = (image.maxX - 1) + (Math.pow( ((image.currentX - image.maxX) + 1), 0.8 ));\n }\n\n if (image.currentY < image.minY) {\n image.currentY = (image.minY + 1) - (Math.pow( ((image.minY - image.currentY) + 1), 0.8 ));\n }\n if (image.currentY > image.maxY) {\n image.currentY = (image.maxY - 1) + (Math.pow( ((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: function onTouchEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n var velocity = zoom.velocity;\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 var momentumDurationX = 300;\n var momentumDurationY = 300;\n var momentumDistanceX = velocity.x * momentumDurationX;\n var newPositionX = image.currentX + momentumDistanceX;\n var momentumDistanceY = velocity.y * momentumDurationY;\n var 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 var momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n var scaledWidth = image.width * zoom.scale;\n var 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: function onTransitionEnd() {\n var swiper = this;\n var zoom = swiper.zoom;\n var gesture = zoom.gesture;\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\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: function toggle(e) {\n var swiper = this;\n var 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: function in$1(e) {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n var image = zoom.image;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\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 var touchX;\n var touchY;\n var offsetX;\n var offsetY;\n var diffX;\n var diffY;\n var translateX;\n var translateY;\n var imageWidth;\n var imageHeight;\n var scaledWidth;\n var scaledHeight;\n var translateMinX;\n var translateMinY;\n var translateMaxX;\n var translateMaxY;\n var slideWidth;\n var 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: function out() {\n var swiper = this;\n\n var zoom = swiper.zoom;\n var params = swiper.params.zoom;\n var gesture = zoom.gesture;\n\n if (!gesture.$slideEl) {\n gesture.$slideEl = swiper.clickedSlide ? $(swiper.clickedSlide) : swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas');\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: function enable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (zoom.enabled) { return; }\n zoom.enabled = true;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.on('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, '.swiper-slide', 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: function disable() {\n var swiper = this;\n var zoom = swiper.zoom;\n if (!zoom.enabled) { return; }\n\n swiper.zoom.enabled = false;\n\n var passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n var activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n // Scale image\n if (Support.gestures) {\n swiper.$wrapperEl.off('gesturestart', '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off('gesturechange', '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off('gestureend', '.swiper-slide', zoom.onGestureEnd, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, '.swiper-slide', zoom.onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, '.swiper-slide', zoom.onGestureChange, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, '.swiper-slide', zoom.onGestureEnd, passiveListener);\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, '.swiper-slide', 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\n var 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: function create() {\n var swiper = this;\n var 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(function (methodName) {\n zoom[methodName] = Zoom[methodName].bind(swiper);\n });\n Utils.extend(swiper, {\n zoom: zoom,\n });\n\n var scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get: function get() {\n return scale;\n },\n set: function set(value) {\n if (scale !== value) {\n var imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n var 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: function init() {\n var swiper = this;\n if (swiper.params.zoom.enabled) {\n swiper.zoom.enable();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n swiper.zoom.disable();\n },\n touchStart: function touchStart(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchStart(e);\n },\n touchEnd: function touchEnd(e) {\n var swiper = this;\n if (!swiper.zoom.enabled) { return; }\n swiper.zoom.onTouchEnd(e);\n },\n doubleTap: function doubleTap(e) {\n var swiper = this;\n if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n swiper.zoom.toggle(e);\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n swiper.zoom.onTransitionEnd();\n }\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n swiper.zoom.onTransitionEnd();\n }\n },\n },\n };\n\n var Lazy = {\n loadInSlide: function loadInSlide(index, loadInDuplicate) {\n if ( loadInDuplicate === void 0 ) loadInDuplicate = true;\n\n var swiper = this;\n var params = swiper.params.lazy;\n if (typeof index === 'undefined') { return; }\n if (swiper.slides.length === 0) { return; }\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n var $slideEl = isVirtual\n ? swiper.$wrapperEl.children((\".\" + (swiper.params.slideClass) + \"[data-swiper-slide-index=\\\"\" + index + \"\\\"]\"))\n : swiper.slides.eq(index);\n\n var $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(function (imageIndex, imageEl) {\n var $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n\n var background = $imageEl.attr('data-background');\n var src = $imageEl.attr('data-src');\n var srcset = $imageEl.attr('data-srcset');\n var sizes = $imageEl.attr('data-sizes');\n\n swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, function () {\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 var slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n var originalSlide = swiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + slideOriginalIndex + \"\\\"]:not(.\" + (swiper.params.slideDuplicateClass) + \")\"));\n swiper.lazy.loadInSlide(originalSlide.index(), false);\n } else {\n var 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 });\n\n swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n },\n load: function load() {\n var swiper = this;\n var $wrapperEl = swiper.$wrapperEl;\n var swiperParams = swiper.params;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n var params = swiperParams.lazy;\n\n var 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(function (elIndex, slideEl) {\n var index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n swiper.lazy.loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (var 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 var amount = params.loadPrevNextAmount;\n var spv = slidesPerView;\n var maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n var minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n // Next Slides\n for (var i$1 = activeIndex + slidesPerView; i$1 < maxIndex; i$1 += 1) {\n if (slideExist(i$1)) { swiper.lazy.loadInSlide(i$1); }\n }\n // Prev Slides\n for (var i$2 = minIndex; i$2 < activeIndex; i$2 += 1) {\n if (slideExist(i$2)) { swiper.lazy.loadInSlide(i$2); }\n }\n } else {\n var nextSlide = $wrapperEl.children((\".\" + (swiperParams.slideNextClass)));\n if (nextSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(nextSlide)); }\n\n var prevSlide = $wrapperEl.children((\".\" + (swiperParams.slidePrevClass)));\n if (prevSlide.length > 0) { swiper.lazy.loadInSlide(slideIndex(prevSlide)); }\n }\n }\n },\n };\n\n var 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: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n },\n init: function init() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n swiper.lazy.load();\n }\n },\n scroll: function scroll() {\n var swiper = this;\n if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n swiper.lazy.load();\n }\n },\n resize: function resize() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n scrollbarDragMove: function scrollbarDragMove() {\n var swiper = this;\n if (swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n },\n transitionStart: function transitionStart() {\n var 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: function transitionEnd() {\n var swiper = this;\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n swiper.lazy.load();\n }\n },\n slideChange: function slideChange() {\n var 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\n var Controller = {\n LinearSpline: function LinearSpline(x, y) {\n var binarySearch = (function search() {\n var maxIndex;\n var minIndex;\n var guess;\n return function (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 var i1;\n var 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: function getInterpolateFunction(c) {\n var 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: function setTranslate(setTranslate$1, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var multiplier;\n var 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 var 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 (var 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: function setTransition(duration, byController) {\n var swiper = this;\n var controlled = swiper.controller.control;\n var 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(function () {\n c.updateAutoHeight();\n });\n }\n c.$wrapperEl.transitionEnd(function () {\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 };\n var Controller$1 = {\n name: 'controller',\n params: {\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide', // or 'container'\n },\n },\n create: function create() {\n var 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: function update() {\n var 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: function resize() {\n var 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: function observerUpdate() {\n var 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: function setTranslate(translate, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTranslate(translate, byController);\n },\n setTransition: function setTransition(duration, byController) {\n var swiper = this;\n if (!swiper.controller.control) { return; }\n swiper.controller.setTransition(duration, byController);\n },\n },\n };\n\n var a11y = {\n makeElFocusable: function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n return $el;\n },\n addElRole: function addElRole($el, role) {\n $el.attr('role', role);\n return $el;\n },\n addElLabel: function addElLabel($el, label) {\n $el.attr('aria-label', label);\n return $el;\n },\n disableEl: function disableEl($el) {\n $el.attr('aria-disabled', true);\n return $el;\n },\n enableEl: function enableEl($el) {\n $el.attr('aria-disabled', false);\n return $el;\n },\n onEnterKey: function onEnterKey(e) {\n var swiper = this;\n var params = swiper.params.a11y;\n if (e.keyCode !== 13) { return; }\n var $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: function notify(message) {\n var swiper = this;\n var notification = swiper.a11y.liveRegion;\n if (notification.length === 0) { return; }\n notification.html('');\n notification.html(message);\n },\n updateNavigation: function updateNavigation() {\n var swiper = this;\n\n if (swiper.params.loop) { return; }\n var ref = swiper.navigation;\n var $nextEl = ref.$nextEl;\n var $prevEl = ref.$prevEl;\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: function updatePagination() {\n var swiper = this;\n var params = swiper.params.a11y;\n if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n swiper.pagination.bullets.each(function (bulletIndex, bulletEl) {\n var $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: function init() {\n var swiper = this;\n\n swiper.$el.append(swiper.a11y.liveRegion);\n\n // Navigation\n var params = swiper.params.a11y;\n var $nextEl;\n var $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: function destroy() {\n var swiper = this;\n if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) { swiper.a11y.liveRegion.remove(); }\n\n var $nextEl;\n var $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 };\n var 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: function create() {\n var swiper = this;\n Utils.extend(swiper, {\n a11y: {\n liveRegion: $((\"\")),\n },\n });\n Object.keys(a11y).forEach(function (methodName) {\n swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n });\n },\n on: {\n init: function init() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.init();\n swiper.a11y.updateNavigation();\n },\n toEdge: function toEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n fromEdge: function fromEdge() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updateNavigation();\n },\n paginationUpdate: function paginationUpdate() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.updatePagination();\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.a11y.enabled) { return; }\n swiper.a11y.destroy();\n },\n },\n };\n\n var History = {\n init: function init() {\n var swiper = this;\n if (!swiper.params.history) { return; }\n if (!win.history || !win.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n var 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 win.addEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (!swiper.params.history.replaceState) {\n win.removeEventListener('popstate', swiper.history.setHistoryPopState);\n }\n },\n setHistoryPopState: function setHistoryPopState() {\n var swiper = this;\n swiper.history.paths = History.getPathValues();\n swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n },\n getPathValues: function getPathValues() {\n var pathArray = win.location.pathname.slice(1).split('/').filter(function (part) { return part !== ''; });\n var total = pathArray.length;\n var key = pathArray[total - 2];\n var value = pathArray[total - 1];\n return { key: key, value: value };\n },\n setHistory: function setHistory(key, index) {\n var swiper = this;\n if (!swiper.history.initialized || !swiper.params.history.enabled) { return; }\n var slide = swiper.slides.eq(index);\n var value = History.slugify(slide.attr('data-history'));\n if (!win.location.pathname.includes(key)) {\n value = key + \"/\" + value;\n }\n var currentState = win.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n win.history.replaceState({ value: value }, null, value);\n } else {\n win.history.pushState({ value: value }, null, value);\n }\n },\n slugify: function slugify(text) {\n return text.toString()\n .replace(/\\s+/g, '-')\n .replace(/[^\\w-]+/g, '')\n .replace(/--+/g, '-')\n .replace(/^-+/, '')\n .replace(/-+$/, '');\n },\n scrollToSlide: function scrollToSlide(speed, value, runCallbacks) {\n var swiper = this;\n if (value) {\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHistory = History.slugify(slide.attr('data-history'));\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n },\n };\n\n var History$1 = {\n name: 'history',\n params: {\n history: {\n enabled: false,\n replaceState: false,\n key: 'slides',\n },\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.history.enabled) {\n swiper.history.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.history.initialized) {\n swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n },\n slideChange: function slideChange() {\n var 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\n var HashNavigation = {\n onHashCange: function onHashCange() {\n var swiper = this;\n var newHash = doc.location.hash.replace('#', '');\n var activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n if (newHash !== activeSlideHash) {\n var 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: function setHash() {\n var swiper = this;\n if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) { return; }\n if (swiper.params.hashNavigation.replaceState && win.history && win.history.replaceState) {\n win.history.replaceState(null, null, ((\"#\" + (swiper.slides.eq(swiper.activeIndex).attr('data-hash'))) || ''));\n } else {\n var slide = swiper.slides.eq(swiper.activeIndex);\n var hash = slide.attr('data-hash') || slide.attr('data-history');\n doc.location.hash = hash || '';\n }\n },\n init: function init() {\n var swiper = this;\n if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) { return; }\n swiper.hashNavigation.initialized = true;\n var hash = doc.location.hash.replace('#', '');\n if (hash) {\n var speed = 0;\n for (var i = 0, length = swiper.slides.length; i < length; i += 1) {\n var slide = swiper.slides.eq(i);\n var slideHash = slide.attr('data-hash') || slide.attr('data-history');\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n var index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n $(win).on('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.watchState) {\n $(win).off('hashchange', swiper.hashNavigation.onHashCange);\n }\n },\n };\n var HashNavigation$1 = {\n name: 'hash-navigation',\n params: {\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false,\n },\n },\n create: function create() {\n var 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: function init() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.init();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.params.hashNavigation.enabled) {\n swiper.hashNavigation.destroy();\n }\n },\n transitionEnd: function transitionEnd() {\n var swiper = this;\n if (swiper.hashNavigation.initialized) {\n swiper.hashNavigation.setHash();\n }\n },\n slideChange: function slideChange() {\n var 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\n var Autoplay = {\n run: function run() {\n var swiper = this;\n var $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n var 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(function () {\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: function start() {\n var 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: function stop() {\n var 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: function pause(speed) {\n var 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\n var 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: function create() {\n var 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: function 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 }\n },\n onTransitionEnd: function 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: function init() {\n var swiper = this;\n if (swiper.params.autoplay.enabled) {\n swiper.autoplay.start();\n document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n }\n },\n beforeTransitionStart: function beforeTransitionStart(speed, internal) {\n var 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: function sliderFirstMove() {\n var 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: function touchEnd() {\n var swiper = this;\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.run();\n }\n },\n destroy: function destroy() {\n var swiper = this;\n if (swiper.autoplay.running) {\n swiper.autoplay.stop();\n }\n document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n },\n },\n };\n\n var Fade = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = swiper.slides.eq(i);\n var offset = $slideEl[0].swiperSlideOffset;\n var tx = -offset;\n if (!swiper.params.virtualTranslate) { tx -= swiper.translate; }\n var ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n var 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: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n var eventTriggered = false;\n slides.transitionEnd(function () {\n if (eventTriggered) { return; }\n if (!swiper || swiper.destroyed) { return; }\n eventTriggered = true;\n swiper.animating = false;\n var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFade = {\n name: 'effect-fade',\n params: {\n fadeEffect: {\n crossFade: false,\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.classNames.push(((swiper.params.containerModifierClass) + \"fade\"));\n var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'fade') { return; }\n swiper.fadeEffect.setTransition(duration);\n },\n },\n };\n\n var Cube = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var $el = swiper.$el;\n var $wrapperEl = swiper.$wrapperEl;\n var slides = swiper.slides;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var rtl = swiper.rtlTranslate;\n var swiperSize = swiper.size;\n var params = swiper.params.cubeEffect;\n var isHorizontal = swiper.isHorizontal();\n var isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n var wrapperRotate = 0;\n var $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 (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n var slideAngle = slideIndex * 90;\n var round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n var progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n var tx = 0;\n var ty = 0;\n var 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 var 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 var shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var 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 var shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n var multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n var scale1 = params.shadowScale;\n var scale2 = params.shadowScale / multiplier;\n var 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 var 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: function setTransition(duration) {\n var swiper = this;\n var $el = swiper.$el;\n var slides = swiper.slides;\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\n var 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: function create() {\n var 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: function beforeInit() {\n var 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 var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'cube') { return; }\n swiper.cubeEffect.setTransition(duration);\n },\n },\n };\n\n var Flip = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var slides = swiper.slides;\n var rtl = swiper.rtlTranslate;\n for (var i = 0; i < slides.length; i += 1) {\n var $slideEl = slides.eq(i);\n var progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n var offset = $slideEl[0].swiperSlideOffset;\n var rotate = -180 * progress;\n var rotateY = rotate;\n var rotateX = 0;\n var tx = -offset;\n var 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 var shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var 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: function setTransition(duration) {\n var swiper = this;\n var slides = swiper.slides;\n var activeIndex = swiper.activeIndex;\n var $wrapperEl = swiper.$wrapperEl;\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 var 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 var triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (var i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n };\n\n var EffectFlip = {\n name: 'effect-flip',\n params: {\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var 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 var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'flip') { return; }\n swiper.flipEffect.setTransition(duration);\n },\n },\n };\n\n var Coverflow = {\n setTranslate: function setTranslate() {\n var swiper = this;\n var swiperWidth = swiper.width;\n var swiperHeight = swiper.height;\n var slides = swiper.slides;\n var $wrapperEl = swiper.$wrapperEl;\n var slidesSizesGrid = swiper.slidesSizesGrid;\n var params = swiper.params.coverflowEffect;\n var isHorizontal = swiper.isHorizontal();\n var transform = swiper.translate;\n var center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n var rotate = isHorizontal ? params.rotate : -params.rotate;\n var translate = params.depth;\n // Each slide offset from center\n for (var i = 0, length = slides.length; i < length; i += 1) {\n var $slideEl = slides.eq(i);\n var slideSize = slidesSizesGrid[i];\n var slideOffset = $slideEl[0].swiperSlideOffset;\n var offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n var rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n var rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n var translateZ = -translate * Math.abs(offsetMultiplier);\n\n var translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n var translateX = isHorizontal ? params.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 var 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 var $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n var $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 var ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = center + \"px 50%\";\n }\n },\n setTransition: function setTransition(duration) {\n var 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\n var 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: function create() {\n var 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: function beforeInit() {\n var 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: function setTranslate() {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTranslate();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n if (swiper.params.effect !== 'coverflow') { return; }\n swiper.coverflowEffect.setTransition(duration);\n },\n },\n };\n\n var Thumbs = {\n init: function init() {\n var swiper = this;\n var ref = swiper.params;\n var thumbsParams = ref.thumbs;\n var 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: function onThumbClick() {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n var clickedIndex = thumbsSwiper.clickedIndex;\n var clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) { return; }\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) { return; }\n var 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 var 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 var prevIndex = swiper.slides.eq(currentIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + slideToIndex + \"\\\"]\")).eq(0).index();\n var 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: function update(initial) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n\n var slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n ? thumbsSwiper.slidesPerViewDynamic()\n : thumbsSwiper.params.slidesPerView;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex) {\n var currentThumbsIndex = thumbsSwiper.activeIndex;\n var 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 var prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex) + \"\\\"]\")).eq(0).index();\n var 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 var thumbsToActivate = 1;\n var thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n for (var i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children((\"[data-swiper-slide-index=\\\"\" + (swiper.realIndex + i) + \"\\\"]\")).addClass(thumbActiveClass);\n }\n } else {\n for (var i$1 = 0; i$1 < thumbsToActivate; i$1 += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i$1).addClass(thumbActiveClass);\n }\n }\n },\n };\n var Thumbs$1 = {\n name: 'thumbs',\n params: {\n thumbs: {\n swiper: null,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-container-thumbs',\n },\n },\n create: function create() {\n var 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: function beforeInit() {\n var swiper = this;\n var ref = swiper.params;\n var thumbs = ref.thumbs;\n if (!thumbs || !thumbs.swiper) { return; }\n swiper.thumbs.init();\n swiper.thumbs.update(true);\n },\n slideChange: function slideChange() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n update: function update() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n resize: function resize() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n observerUpdate: function observerUpdate() {\n var swiper = this;\n if (!swiper.thumbs.swiper) { return; }\n swiper.thumbs.update();\n },\n setTransition: function setTransition(duration) {\n var swiper = this;\n var thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper) { return; }\n thumbsSwiper.setTransition(duration);\n },\n beforeDestroy: function beforeDestroy() {\n var swiper = this;\n var 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\n var 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\n if (typeof Swiper.use === 'undefined') {\n Swiper.use = Swiper.Class.use;\n Swiper.installModule = Swiper.Class.installModule;\n }\n\n Swiper.use(components);\n\n return Swiper;\n\n}));\n\n// BARRIEREFREIHEIT\n// Wird gebraucht für alle Projekte\n\n// EXTERNER LINK\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $links = document.querySelectorAll('[href*=http]');\n\n for (var i = 0, $link; $link = $links[i]; i++) {\n var target = $link.getAttribute('target'),\n title = $link.getAttribute('title');\n\n if (title && target === '_blank') {\n $link.setAttribute('title', title + ' (Neues Fenster)');\n }\n }\n})(document);\n\n\n// TASTATURSTEUERUNG FÜR ELEMENTE MIT ROLE BUTTON\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $buttons = document.querySelectorAll('[role=\"button\"]');\n\n for (var i = 0, $button; $button = $buttons[i]; i++) {\n $button.addEventListener('keyup', function(event) {\n if (event.keyCode === 13 && this.tagName !== 'A' || event.keyCode === 32) {\n this.click();\n }\n });\n }\n})(document);\n\n\n// ERKENNUNG DER FOKUSMETHODE FÜR LINKS\n// Wird verwendet für verbesserten Fokus auf Links (siehe default.less)\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var FocusMethod = function($link) {\n var _this = this;\n\n _this.$link = $link;\n\n _this.focus_method = false;\n _this.last_focus_method = false;\n };\n\n FocusMethod.prototype = {\n init: function() {\n var _this = this;\n\n _this.$link.addEventListener('keydown',\n _this._on_key_down.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('mousedown',\n _this._on_mouse_down.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('touchstart',\n _this._on_touch_start.bind(this), {\n 'passive' : true\n }\n );\n\n _this.$link.addEventListener('focus', _this._on_focus.bind(this));\n _this.$link.addEventListener('blur', _this._on_blur.bind(this));\n\n window.addEventListener('blur', this._on_window_blur.bind(this));\n },\n\n _on_key_down: function() {\n var _this = this;\n\n _this.focus_method = 'key';\n },\n\n _on_mouse_down: function() {\n var _this = this;\n\n if (_this.focus_method === 'touch') {\n return;\n }\n\n _this.focus_method = 'mouse';\n },\n\n _on_touch_start: function() {\n var _this = this;\n\n _this.focus_method = 'touch';\n },\n\n _on_focus: function() {\n var _this = this;\n\n if (!_this.focus_method) {\n _this.focus_method = _this.last_focus_method;\n }\n\n _this.$link.setAttribute('data-focus-method', _this.focus_method);\n\n this.last_focus_method = this.focus_method;\n this.focus_method = false;\n },\n\n _on_blur: function() {\n var _this = this;\n\n _this.$link.removeAttribute('data-focus-method');\n },\n\n _on_window_blur: function() {\n var _this = this;\n\n _this.focus_method = false;\n }\n };\n\n var $links = document.querySelectorAll('a, [tabindex=\"0\"]');\n\n for (var i = 0, $link; $link = $links[i]; i++) {\n new FocusMethod($link).init();\n }\n})(document);\n\n// COOKIE-HINWEIS\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var $cookie_banner = document.querySelector('#cookie_banner'),\n $body = document.querySelector('body');\n\n if (!$cookie_banner) {\n return;\n }\n\n var $close = $cookie_banner.querySelector('.close'),\n now = new Date().getTime(),\n storage = localStorage.getItem(domain + '_cookie_banner');\n\n if (storage === null || now > storage) {\n $cookie_banner.classList.remove('hideme');\n $body.classList.add('cb_visible');\n }\n\n $close.addEventListener('click', function(event) {\n event.preventDefault();\n\n localStorage.setItem(domain + '_cookie_banner', now + 31536000);\n $cookie_banner.classList.add('hideme');\n $body.classList.remove('cb_visible');\n });\n}(document));\n\n// COOKIE-HINWEIS FUSSZEILE VERLÄNGERN\r\n// -------------------------------------------------------------------------------------------------\r\n\r\n(function(document) {\r\n var $cookie_banner = document.querySelector('#cookie_banner'),\r\n $footer = document.querySelector('footer'),\r\n $close = $cookie_banner.querySelector('.close'),\r\n $cookie_spacing;\r\n\r\n if (!$cookie_banner) {\r\n return;\r\n }\r\n\r\n $close.addEventListener('click', function() {\r\n if ($footer) {\r\n $footer.removeChild($cookie_spacing);\r\n }\r\n });\r\n\r\n if ($footer) {\r\n $cookie_spacing = document.createElement('div');\r\n $footer.appendChild($cookie_spacing);\r\n $cookie_spacing.style.paddingBottom = $cookie_banner.clientHeight + 'px';\r\n window.addEventListener('resize', function() {\r\n $cookie_spacing.style.paddingBottom = $cookie_banner.clientHeight + 'px';\r\n }, false);\r\n }\r\n\r\n}(document));\r\n\n// TOOLTIP\n// Wird gebraucht für: google_maps,newsletter_quick_subscribe, formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var Tooltip = function($tooltip_wrapper) {\n var _this = this;\n\n _this.$tooltip_wrapper = $tooltip_wrapper;\n _this.$tooltip = $tooltip_wrapper.querySelector('[role=\"tooltip\"]');\n\n _this._temp_disabled = false;\n _this._perm_disabled = false;\n _this._focused = false;\n\n var tooltip_id = _this.$tooltip.getAttribute('id');\n\n _this.$tooltip_trigger = $tooltip_wrapper.querySelector('[aria-describedby=\"' + tooltip_id + '\"]');\n };\n\n Tooltip.prototype = {\n init: function() {\n var _this = this;\n\n _this.$tooltip_trigger.addEventListener('keyup', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('focus', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('blur', _this._hide_tooltip.bind(_this));\n\n if (!support.touch) {\n _this.$tooltip.addEventListener('mouseenter', _this._check_tooltip.bind(_this));\n _this.$tooltip.addEventListener('mouseleave', _this._hide_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('mouseenter', _this._check_tooltip.bind(_this));\n _this.$tooltip_trigger.addEventListener('mouseleave', _this._hide_tooltip.bind(_this));\n }\n\n _this._keyboard_nav();\n },\n\n _check_tooltip: function(event) {\n var _this = this;\n\n if (_this.$tooltip_trigger.getAttribute('aria-invalid') === 'true') {\n _this._perm_disabled = false;\n _this._show_tooltip(event);\n }\n else {\n _this._perm_disabled = true;\n _this._hide_tooltip(event);\n }\n },\n\n _show_tooltip: function(event) {\n var _this = this;\n\n if (_this.disabled) {\n return;\n }\n\n if (event.type === 'keyup' || event.type === 'focus') {\n _this._focused = true;\n }\n\n if (!_this._temp_disabled && !_this._perm_disabled ||\n event.type === 'mouseenter' && !_this._perm_disabled) {\n _this.$tooltip.setAttribute('aria-hidden', 'false');\n }\n },\n\n _hide_tooltip: function(event) {\n var _this = this;\n\n if (event.type === 'blur') {\n _this._temp_disabled = false;\n _this._focused = false;\n }\n\n if (!_this._focused || _this._perm_disabled || _this._temp_disabled) {\n _this.$tooltip.setAttribute('aria-hidden', 'true');\n }\n },\n\n _keyboard_nav: function() {\n var _this = this;\n\n _this.$tooltip_trigger.addEventListener('keydown', function(event) {\n if (event.keyCode === 27 && _this.$tooltip.getAttribute('aria-hidden') === 'false') {\n event.stopPropagation();\n\n _this._temp_disabled = true;\n _this._hide_tooltip(event);\n }\n });\n }\n };\n\n var $tooltip_wrappers = document.querySelectorAll('.tooltip_wrapper');\n\n for (var i = 0, len = $tooltip_wrappers.length; i < len; i++) {\n new Tooltip($tooltip_wrappers[i]).init();\n }\n\n window.Tooltip = Tooltip;\n})(document);\n\n// DROPDOWN MENU\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var DropdownMenu = function($dropdown_menu) {\n var _this = this,\n id = $dropdown_menu.getAttribute('id');\n\n _this.$dropdown_menu = $dropdown_menu;\n _this.$main_menuitems = $dropdown_menu.querySelectorAll('#' + id + ' > ul > li > a');\n _this.$sub_menuitems = $dropdown_menu.querySelectorAll('#' + id + ' > ul > li li > a');\n _this.$sub_menuitems_with_sub_sub_menu = $dropdown_menu.querySelectorAll('#' + id + ' > ul > li li > a.has_sub_sub_menu');\n _this.$main_menuitems_with_sub_menu = $dropdown_menu.querySelectorAll('[href^=\"#\"]');\n _this.main_menu_index = 0;\n _this.event_type = false;\n\n _this.$key = {\n 'tab' : 9,\n 'enter' : 13,\n 'escape' : 27,\n 'space' : 32,\n 'arrow_left' : 37,\n 'arrow_up' : 38,\n 'arrow_right' : 39,\n 'arrow_down' : 40\n };\n };\n\n DropdownMenu.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_accessibility();\n _this._init_keyboard();\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems[i]; i++) {\n var $li = $main_menuitem.parentElement;\n\n $li.addEventListener('mouseenter',\n _this._on_mouseenter_main_menuitem.bind(_this, $main_menuitem)\n );\n\n $li.addEventListener('mouseover',\n _this._on_mouseover_main_menuitem.bind(_this, $main_menuitem)\n );\n\n $li.addEventListener('mouseout',\n _this._on_mouseout_main_menuitem.bind(_this)\n );\n\n $main_menuitem.addEventListener('focus',\n _this._on_focus_main_menuitem.bind(_this, $main_menuitem)\n );\n }\n },\n\n _init_accessibility: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.setAttribute('aria-expanded', 'false');\n\n $main_menuitem.addEventListener('click', function(event) {\n event.preventDefault();\n });\n }\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems[i]; i++) {\n $main_menuitem.addEventListener('keydown',\n _this._on_keydown_main_menuitem.bind(_this, $main_menuitem)\n );\n }\n\n for (var j = 0, $sub_menuitem; $sub_menuitem = _this.$sub_menuitems[j]; j++) {\n $sub_menuitem.addEventListener('keydown',\n _this._on_keydown_sub_menuitem.bind(_this, $sub_menuitem)\n );\n }\n },\n\n _on_keydown_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n _this.event_type = event.type;\n _this.main_menu_index = _this._get_main_menuitem_index();\n _this.$main_menuitem = $main_menuitem;\n _this.$sub_menu = $main_menuitem.nextElementSibling;\n\n switch(event.keyCode) {\n case _this.$key.tab:\n if (event.shiftKey) {\n _this.main_menu_index -= 1;\n }\n else {\n _this.main_menu_index += 1;\n }\n\n break;\n\n case _this.$key.enter:\n if (_this.$sub_menu) {\n event.preventDefault();\n _this._close_sub_menus();\n this._open_sub_menu(false);\n }\n\n break;\n\n case _this.$key.escape:\n event.preventDefault();\n\n if (_this.sub_menu_is_open) {\n event.stopPropagation();\n }\n\n _this._close_sub_menu();\n\n break;\n\n case _this.$key.arrow_left:\n event.preventDefault();\n\n _this._focus_prev_main_menuitem();\n\n break;\n\n case _this.$key.arrow_up:\n event.preventDefault();\n\n if (_this.sub_menu_is_open) {\n _this._focus_prev_menuitem();\n }\n\n break;\n\n case _this.$key.arrow_right:\n event.preventDefault();\n\n _this._focus_next_main_menuitem();\n\n break;\n\n case _this.$key.arrow_down:\n event.preventDefault();\n\n if (_this.$sub_menu) {\n this._open_sub_menu(false);\n }\n else {\n _this._focus_next_main_menuitem();\n }\n\n break;\n }\n },\n\n _get_main_menuitem_index: function() {\n var _this = this;\n\n return Array.prototype.indexOf.call(_this.$main_menuitems, document.activeElement);\n },\n\n _focus_prev_menuitem: function() {\n var _this = this;\n\n _this.main_menu_index -= 1;\n\n if (_this.main_menu_index < 0) {\n _this.main_menu_index = 0;\n\n return;\n }\n\n _this.$main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n _this.$sub_menu = _this.$main_menuitem.nextElementSibling;\n\n if (_this.$sub_menu && _this.sub_menu_is_open) {\n this._open_sub_menu(true);\n }\n else {\n _this.$main_menuitem.focus();\n }\n },\n\n _focus_prev_main_menuitem: function() {\n var _this = this;\n\n _this.main_menu_index -= 1;\n\n if (_this.main_menu_index < 0) {\n _this.main_menu_index = 0;\n\n return;\n }\n\n _this.$main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n _this.$main_menuitem.focus();\n },\n\n _focus_next_main_menuitem: function() {\n var _this = this;\n\n _this.main_menu_index += 1;\n\n if (_this.main_menu_index === _this.$main_menuitems.length) {\n _this.main_menu_index = _this.$main_menuitems.length - 1;\n\n return;\n }\n\n _this.$main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n _this.$main_menuitem.focus();\n },\n\n _on_mouseenter_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n _this.event_type = event.type;\n _this.$main_menuitem = $main_menuitem;\n _this.$sub_menu = $main_menuitem.nextElementSibling;\n\n _this._close_sub_menus();\n\n if (_this.$sub_menu) {\n _this._open_sub_menu(false);\n }\n },\n\n _on_mouseover_main_menuitem: function() {\n var _this = this;\n\n clearTimeout(_this.close_sub_menu_timeout);\n },\n\n _on_mouseout_main_menuitem: function() {\n var _this = this;\n\n _this.close_sub_menu_timeout = setTimeout(function() {\n _this._close_sub_menus();\n }, 1000);\n },\n\n _on_focus_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n _this.event_type = event.type;\n\n if (_this.sub_menu_is_open) {\n _this.$main_menuitem = $main_menuitem;\n _this.$sub_menu = $main_menuitem.nextElementSibling;\n\n _this._close_sub_menus();\n\n if (_this.$sub_menu) {\n _this._open_sub_menu();\n }\n }\n },\n\n _on_keydown_sub_menuitem: function($sub_menuitem, event) {\n var _this = this;\n\n switch(event.keyCode) {\n case _this.$key.tab:\n\n if (event.shiftKey) {\n _this.sub_menu_index -= 1;\n }\n else {\n _this.sub_menu_index += 1;\n }\n\n break;\n\n case _this.$key.escape:\n event.preventDefault();\n event.stopPropagation();\n\n _this._close_sub_menu();\n\n break;\n\n case _this.$key.arrow_left:\n event.preventDefault();\n\n _this.sub_menu_index = 0;\n _this._focus_prev_sub_menuitem();\n\n break;\n\n case _this.$key.arrow_up:\n event.preventDefault();\n\n _this._focus_prev_sub_menuitem();\n\n break;\n\n case _this.$key.arrow_right:\n event.preventDefault();\n\n _this.sub_menu_index = 0;\n _this._focus_prev_sub_menuitem();\n\n break;\n\n case _this.$key.arrow_down:\n event.preventDefault();\n\n _this._focus_next_sub_menuitem();\n\n break;\n }\n\n _this._open_sub_sub_menu();\n },\n\n _open_sub_sub_menu: function() {\n var _this = this;\n $sub_menuitem = _this.$main_menuitem.nextElementSibling.querySelectorAll('li li > a')[_this.sub_menu_index];\n\n if($sub_menuitem) {\n\n for (var i = 0, $menuitem; $menuitem = _this.$sub_menuitems[i]; i++) {\n var is_current_menuitem = $sub_menuitem === $menuitem,\n $sub_sub_menu = $sub_menuitem.parentNode.querySelector('ul');\n is_sub_sub_menuitem = $sub_menuitem.classList.contains('sub_sub_menuitem');\n\n if (is_current_menuitem && $sub_sub_menu) {\n $menuitem.parentElement.classList.add('hover');\n $menuitem.setAttribute('aria-expanded', true);\n }\n\n else if (is_current_menuitem && is_sub_sub_menuitem) {\n $menuitem.parentElement.parentElement.parentElement.classList.add('hover');\n $menuitem.parentElement.parentElement.parentElement.setAttribute('aria-expanded', true);\n }\n\n else {\n $menuitem.parentElement.classList.remove('hover');\n $menuitem.setAttribute('aria-expanded', false);\n }\n }\n }\n\n else {\n _this._close_sub_sub_menus();\n }\n },\n\n _close_sub_sub_menus: function() {\n var _this = this;\n\n for (var i = 0, $sub_menuitem; $sub_menuitem = _this.$sub_menuitems_with_sub_sub_menu[i]; i++) {\n $sub_menuitem.parentElement.classList.remove('hover');\n $sub_menuitem.setAttribute('aria-expanded', 'false');\n }\n },\n\n _focus_prev_sub_menuitem: function() {\n var _this = this,\n $sub_menuitems = _this.$main_menuitem.nextElementSibling.querySelectorAll('a'),\n $sub_menuitem,\n $main_menuitem;\n\n _this.sub_menu_index -= 1;\n\n $sub_menuitem = $sub_menuitems[_this.sub_menu_index];\n\n if (_this.sub_menu_index < 0) {\n $main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n if ($main_menuitem) {\n $main_menuitem.focus();\n }\n }\n else if ($sub_menuitem) {\n $sub_menuitem.focus();\n }\n },\n\n _focus_next_sub_menuitem: function() {\n var _this = this,\n $sub_menuitems = _this.$main_menuitem.nextElementSibling.querySelectorAll('a'),\n $sub_menuitem,\n $main_menuitem;\n\n _this.sub_menu_index += 1;\n\n $sub_menuitem = $sub_menuitems[_this.sub_menu_index];\n\n if (_this.sub_menu_index === $sub_menuitems.length) {\n _this.main_menu_index += 1;\n\n $main_menuitem = _this.$main_menuitems[_this.main_menu_index];\n\n if ($main_menuitem) {\n $main_menuitem.focus();\n }\n else {\n _this.main_menu_index -= 1;\n _this.sub_menu_index -= 1;\n }\n }\n else {\n $sub_menuitem.focus();\n }\n },\n\n _open_sub_menu: function(focus_last_sub_menuitem) {\n var _this = this,\n $sub_menuitems;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n var is_current_menuitem = _this.$main_menuitem === $main_menuitem;\n\n if (is_current_menuitem) {\n $main_menuitem.parentElement.classList.add('hover');\n }\n else {\n $main_menuitem.parentElement.classList.remove('hover');\n }\n\n $main_menuitem.setAttribute('aria-expanded', is_current_menuitem);\n }\n\n _this.sub_menu_index = 0;\n\n if (_this.event_type === 'keydown') {\n $sub_menuitems = _this.$sub_menu.querySelectorAll('a');\n\n if (focus_last_sub_menuitem) {\n _this.sub_menu_index = $sub_menuitems.length - 1;\n }\n\n $sub_menuitems[_this.sub_menu_index].focus();\n\n _this.event_type = false;\n }\n\n _this.sub_menu_is_open = true;\n },\n\n _close_sub_menu: function() {\n var _this = this;\n\n _this.$main_menuitem.parentElement.classList.remove('hover');\n _this.$main_menuitem.setAttribute('aria-expanded', 'false');\n\n _this.sub_menu_is_open = false;\n\n _this.$main_menuitem.focus();\n },\n\n _close_sub_menus: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.parentElement.classList.remove('hover');\n $main_menuitem.setAttribute('aria-expanded', 'false');\n }\n\n _this._close_sub_sub_menus();\n }\n };\n\n var $dropdown_menu = document.getElementsByClassName('dropdown_menu');\n\n for (var i = 0, len = $dropdown_menu.length; i < len; i++) {\n new DropdownMenu($dropdown_menu[i]).init();\n }\n})(document);\n\n// OFFCANVAS MENU\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var OffCanvasMenu = function($toggle_offcanvas_menu) {\n var _this = this,\n controls;\n\n controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$offcanvas_menu = document.getElementById(controls);\n _this.$main_menuitems_with_sub_menu = _this.$offcanvas_menu.querySelectorAll('[href^=\"#\"]');\n // _this.$offcanvas_menu_content = _this.$offcanvas_menu.querySelector('.offcanvas_menu_content');\n _this.$focus_elements = _this.$offcanvas_menu.querySelectorAll('a');\n _this.focus_element = false;\n _this.$offcanvas_menu_state = false;\n\n _this.$key = {\n 'tab' : 9,\n };\n };\n\n OffCanvasMenu.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_accessibility();\n _this._init_keyboard();\n\n for (var j = 0, $main_menuitem_with_sub_menu; $main_menuitem_with_sub_menu = _this.$main_menuitems_with_sub_menu[j]; j++) {\n $main_menuitem_with_sub_menu.addEventListener('click',\n _this._on_click_main_menuitem.bind(_this, $main_menuitem_with_sub_menu)\n );\n }\n },\n\n _init_accessibility: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n $main_menuitem.setAttribute('aria-expanded', $main_menuitem.classList.contains('active'));\n }\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n document.addEventListener('keydown', function(event) {\n if (!_this.$offcanvas_menu_state.checked) {\n return;\n }\n\n if (event.keyCode === _this.$key.tab) {\n event.preventDefault();\n\n if (event.shiftKey) {\n _this._focus_element_with_shift_tab_key(event);\n }\n else {\n _this._focus_element_with_tab_key(event);\n }\n }\n });\n },\n\n _focus_element_with_shift_tab_key: function() {\n var _this = this;\n\n _this.tab_index -= 1;\n\n if (_this.tab_index < 0) {\n _this.tab_index = _this.$focus_elements.length - 1;\n }\n\n for (var i = _this.tab_index, $focus_element; $focus_element = _this.$focus_elements[i]; i--) {\n if ($focus_element.offsetParent === null || $focus_element.offsetWidth === 0) {\n _this.tab_index -= 1;\n continue;\n }\n\n _this.$focus_elements[_this.tab_index].focus();\n break;\n }\n },\n\n _focus_element_with_tab_key: function() {\n var _this = this;\n\n if (_this.tab_index === _this.$focus_elements.length - 1) {\n _this.tab_index = 0;\n }\n else {\n _this.tab_index += 1;\n }\n\n for (var i = _this.tab_index, $focus_element; $focus_element = _this.$focus_elements[i]; i++) {\n if ($focus_element.offsetParent === null || $focus_element.offsetWidth === 0) {\n _this.tab_index += 1;\n\n if (_this.tab_index > _this.$focus_elements.length - 1) {\n _this.tab_index = 0;\n }\n else {\n continue;\n }\n }\n\n _this.$focus_elements[_this.tab_index].focus();\n break;\n }\n },\n\n _on_click_main_menuitem: function($main_menuitem, event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$main_menuitem = $main_menuitem;\n\n _this._toggle_sub_menus();\n },\n\n _toggle_sub_menus: function() {\n var _this = this;\n\n for (var i = 0, $main_menuitem; $main_menuitem = _this.$main_menuitems_with_sub_menu[i]; i++) {\n var is_active_menuitem = _this.$main_menuitem === $main_menuitem,\n $parent_menuitems = _this._get_parent_menu_elements();\n\n if (is_active_menuitem) {\n _this.sub_menu_is_open = $main_menuitem.getAttribute('aria-expanded') === 'false';\n\n $main_menuitem.parentElement.classList.toggle('expanded', _this.sub_menu_is_open);\n $main_menuitem.setAttribute('aria-expanded', _this.sub_menu_is_open);\n }\n else if ($parent_menuitems.indexOf($main_menuitem) !== -1) { // Check parents\n $main_menuitem.parentElement.classList.toggle('expanded', 'true');\n $main_menuitem.setAttribute('aria-expanded', 'true');\n }\n else {\n $main_menuitem.parentElement.classList.remove('expanded');\n $main_menuitem.setAttribute('aria-expanded', 'false');\n }\n }\n },\n\n _get_parent_menu_elements: function() {\n var _this = this.$main_menuitem,\n $findings = [];\n\n while (_this.parentNode) {\n _this = _this.parentNode;\n\n if (_this.nodeName.toLowerCase() === 'li') {\n $findings.push(_this.querySelector('a'));\n }\n }\n\n return $findings || False;\n }\n };\n\n var OffCanvasMenuOpener = function($toggle_offcanvas_menu) {\n var _this = this;\n var controls = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu').getAttribute('aria-controls');\n\n _this.$toggle_offcanvas_menu = $toggle_offcanvas_menu.querySelector('label');\n _this.$open_offcanvas_menu = $toggle_offcanvas_menu.querySelector('.open_offcanvas_menu');\n _this.$close_offcanvas_menu = $toggle_offcanvas_menu.querySelector('.close_offcanvas_menu');\n _this.$offcanvas_menu_state = document.querySelector('#' + _this.$toggle_offcanvas_menu.getAttribute('for'));\n _this.$offcanvas_menu = document.getElementById(controls);\n _this.$focus_elements = _this.$offcanvas_menu.querySelectorAll('a');\n\n _this.$key = {\n 'enter' : 13,\n 'escape' : 27,\n 'space' : 32\n };\n };\n\n OffCanvasMenuOpener.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_keyboard();\n\n _this.$toggle_offcanvas_menu.addEventListener('click', _this._toggle_menu.bind(_this));\n _this.$open_offcanvas_menu.addEventListener('click', _this._open_menu.bind(_this));\n _this.$close_offcanvas_menu.addEventListener('click', _this._close_menu.bind(_this));\n\n _this.$offcanvas_menu.addEventListener('transitionend', function(event) {\n\n // var _this = this;\n if (event.target !== this) {\n return;\n }\n\n if (_this.$offcanvas_menu_state.checked) {\n if (_this.focus_element) {\n _this.focus_element = false;\n _this.$focus_elements[0].focus();\n }\n }\n else if (_this.focus_element) {\n _this.focus_element = false;\n _this.$open_offcanvas_menu.focus();\n }\n });\n },\n\n _init_keyboard: function() {\n var _this = this;\n\n _this.$open_offcanvas_menu.addEventListener('keydown', function(event) {\n if (event.keyCode === _this.$key.space || event.keyCode === _this.$key.enter) {\n _this.focus_element = true;\n }\n\n if (event.keyCode === _this.$key.space) {\n event.preventDefault();\n }\n });\n\n _this.$close_offcanvas_menu.addEventListener('keydown', function(event) {\n if (event.keyCode === _this.$key.space) {\n event.preventDefault();\n }\n });\n\n document.addEventListener('keydown', function(event) {\n if (!_this.$offcanvas_menu_state.checked) {\n return;\n }\n\n if (event.keyCode === _this.$key.escape) {\n _this.focus_element = true;\n _this._close_menu(event);\n }\n });\n },\n\n _scroll_to_top: function() {\n var _this = this;\n\n setTimeout(function() {\n var duration = 300,\n interval;\n\n interval = setInterval(function() {\n var diff = -window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n if (_this.$anchor) {\n _this.$anchor.focus();\n }\n\n clearInterval(interval);\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n }, 300);\n },\n\n _toggle_menu: function(event) {\n var _this = this;\n\n if (_this.$offcanvas_menu_state.checked) {\n _this._close_menu(event);\n }\n else {\n _this._open_menu(event);\n }\n },\n\n _open_menu: function(event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$offcanvas_menu_state.checked = true;\n _this.tab_index = 0;\n\n _this._scroll_to_top();\n },\n\n _close_menu: function(event) {\n var _this = this;\n\n event.preventDefault();\n\n _this.$offcanvas_menu_state.checked = false;\n _this.tab_index = 0;\n }\n };\n\n var $offcanvas_menu = document.getElementsByClassName('toggle_offcanvas_menu');\n\n if ($offcanvas_menu.length) {\n new OffCanvasMenu($offcanvas_menu[0]).init(); // init once\n\n // create an opener for each button\n for (var i = 0, len = $offcanvas_menu.length; i < len; i++) {\n new OffCanvasMenuOpener($offcanvas_menu[i]).init();\n }\n }\n})(document);\n\n// FORMULARE\n// -------------------------------------------------------------------------------------------------\n\n(function() {\n var FormHelpers = function(element) {\n var _this = this;\n\n _this.$el = $$(element);\n };\n\n FormHelpers.prototype = {\n init: function() {\n var _this = this;\n\n _this._file_upload();\n _this._select();\n },\n\n _file_upload: function() {\n var _this = this;\n\n if (_this.$el.get_attribute('type') !== 'file') {\n return;\n }\n\n var $file_name = _this.$el.get_parent().children('.file_name'),\n $file_button = _this.$el.get_parent().children('.file_button');\n\n _this.$el.add_event('focus', function() {\n $file_button.add_class('focus');\n });\n\n _this.$el.add_event('blur', function() {\n $file_button.remove_class('focus');\n });\n\n _this.$el.add_event('change', function() {\n $file_name.set_text(_this.$el.get_file().filename);\n });\n },\n\n _select: function() {\n var _this = this;\n\n if (!_this.$el.is_tag('select')) {\n return;\n }\n\n _this.$el.add_event('focus', function() {\n _this.$el.get_parent('.select').add_class('focus');\n });\n\n _this.$el.add_event('blur', function() {\n _this.$el.get_parent('.select').remove_class('focus');\n });\n }\n };\n\n $$('input, select, textarea').for_each(function() {\n new FormHelpers(this).init();\n });\n})();\n\n// FORM VALIDIERUNG\n// -------------------------------------------------------------------------------------------------\n\n(function(document, window) {\n var FormValidation = function($form) {\n var _this = this;\n\n _this._$form = $form;\n _this._$inputs = _this._$form.querySelectorAll('input.validate, textarea.validate');\n _this._$inputs_checkbox = _this._$form.querySelectorAll('input[type=checkbox][required]');\n _this._$selects = _this._$form.querySelectorAll('select[required]');\n _this._$button = _this._$form.querySelector('[type=\"submit\"]');\n _this._$error_msg_button = _this._$form.querySelector('.error_msg_button');\n };\n\n FormValidation.prototype = {\n init: function() {\n var _this = this;\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n var $input = this._$inputs[j];\n\n $input.addEventListener('keyup', _this._input_keyup.bind(_this, $input));\n $input.addEventListener('blur', _this._input_blur.bind(_this, $input));\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n var $input_checkbox = this._$inputs_checkbox[i];\n\n $input_checkbox.addEventListener('click', _this._input_checkbox_click.bind(_this, $input_checkbox));\n $input_checkbox.addEventListener('keyup', _this._input_checkbox_keyup.bind(_this, $input_checkbox));\n $input_checkbox.addEventListener('blur', _this._input_checkbox_blur.bind(_this, $input_checkbox));\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n var $select = this._$selects[x];\n\n $select.addEventListener('change', _this._select_change.bind(_this, $select));\n $select.addEventListener('blur', _this._select_blur.bind(_this, $select));\n }\n\n _this._$form.addEventListener('submit', _this._submit.bind(_this));\n\n _this._check_submit_status();\n },\n\n _input_keyup: function($input, event) {\n if (event.keyCode === 9 || event.keyCode === 27) {\n // No validation on TAB or ESC\n return;\n }\n\n this._validate_input($input, event);\n },\n\n _input_blur: function($input, event) {\n this._validate_input($input, event);\n },\n\n _validate_input: function($input, event) {\n var _this = this,\n id = $input.getAttribute('id'),\n $error_warning = document.querySelector('[for=\"' + id + '\"] .error_warning'),\n min = parseInt($input.getAttribute('min')),\n pattern = $input.getAttribute('pattern'),\n regexp = new RegExp(pattern),\n value = $input.value;\n\n if ($input.type === 'file') {\n _this._validate_input_file($input);\n }\n else if (value) {\n if (pattern && value.match(regexp) || value >= min || !pattern && $input.required) {\n $input.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $input.classList.remove('error');\n\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n }\n else {\n $input.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $input.classList.add('error');\n\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n }\n }\n else if ($input.required) {\n $input.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $input.classList.add('error');\n\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n }\n else {\n $input.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $input.classList.remove('error');\n\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n }\n _this._check_submit_status();\n },\n\n _validate_input_file: function($input) {\n var _this = this,\n id = $input.getAttribute('id'),\n $error_warning = document.querySelector('[for=\"' + id + '\"] .error_warning'),\n value = $input.value;\n\n while ($input && $input.nodeType !== 9) {\n $input = $input.parentNode;\n\n if ($input.classList.contains('file')) {\n break;\n }\n }\n\n if (value) {\n $input.classList.remove('error');\n if ($error_warning) {\n $error_warning.classList.remove('show');\n }\n }\n else {\n $input.classList.add('error');\n if ($error_warning) {\n $error_warning.classList.add('show');\n }\n }\n\n _this._check_submit_status();\n },\n\n _input_checkbox_click: function($input_checkbox, event) {\n this._validate_input_checkbox($input_checkbox, event);\n },\n\n _input_checkbox_keyup: function($input_checkbox, event) {\n if (event.keyCode === 32) { // SPACE\n this._validate_input_checkbox($input_checkbox, event);\n }\n },\n\n _input_checkbox_blur: function($input_checkbox, event) {\n this._validate_input_checkbox($input_checkbox, event);\n },\n\n _validate_input_checkbox: function($input_checkbox, event) {\n var _this = this,\n id = $input_checkbox.getAttribute('id'),\n $error_warning = document.querySelector('#label_' + id + ' .error_warning');\n\n if ($input_checkbox.checked && !event ||\n $input_checkbox.checked && event && event.type !== 'keyup' ||\n !$input_checkbox.checked && event && event.type === 'keyup') {\n $input_checkbox.setAttribute('aria-invalid', 'false');\n $input_checkbox.classList.remove('error');\n $error_warning.classList.remove('show');\n }\n else {\n $input_checkbox.setAttribute('aria-invalid', 'true');\n $input_checkbox.classList.add('error');\n $error_warning.classList.add('show');\n }\n\n _this._check_submit_status();\n },\n\n _select_change: function($select, event) {\n this._validate_select($select, event);\n },\n\n _select_blur: function($select, event) {\n this._validate_select($select, event);\n },\n\n _validate_select: function($select, event) {\n var _this = this,\n id = $select.getAttribute('id'),\n $wrapper = $select,\n $error_warning = document.querySelector('#label_' + id + ' .error_warning'),\n value = $select.value;\n\n while ($wrapper && $wrapper.nodeType !== 9) {\n $wrapper = $wrapper.parentNode;\n\n if ($wrapper.classList.contains('select')) {\n break;\n }\n }\n\n if (value) {\n $select.setAttribute('aria-invalid', 'false');\n\n if (!event || event.type === 'blur') {\n $wrapper.classList.remove('error');\n $error_warning.classList.remove('show');\n }\n }\n else {\n $select.setAttribute('aria-invalid', 'true');\n\n if (!event || event.type === 'blur') {\n $wrapper.classList.add('error');\n $error_warning.classList.add('show');\n }\n }\n\n _this._check_submit_status();\n },\n\n _check_submit_status: function() {\n var _this = this,\n error_msg_button_id = _this._$error_msg_button.getAttribute('id'),\n enable_submit_button = true;\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n if (_this._$inputs[j].getAttribute('aria-invalid') === 'true' ||\n _this._$inputs[j].required && !_this._$inputs[j].value) {\n enable_submit_button = false;\n break;\n }\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n if (!_this._$inputs_checkbox[i].checked) {\n enable_submit_button = false;\n break;\n }\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n if (!_this._$selects[x].value) {\n enable_submit_button = false;\n break;\n }\n }\n\n if (enable_submit_button) {\n _this._$button.classList.remove('disabled');\n _this._$button.removeAttribute('aria-describedby');\n }\n else {\n _this._$button.classList.add('disabled');\n _this._$button.setAttribute('aria-describedby', error_msg_button_id);\n }\n },\n\n _show_first_error: function() {\n var _this = this,\n $first_input_error = _this._$form.querySelector('[aria-invalid=\"true\"]'),\n top_position = 0,\n offset_top = 60,\n duration = 300,\n interval,\n $obj;\n\n if ($first_input_error) {\n $obj = $first_input_error;\n top_position = $obj.offsetTop - offset_top;\n\n while ($obj = $obj.offsetParent) {\n top_position += $obj.offsetTop;\n }\n\n if (window.pageYOffset < top_position) {\n $first_input_error.focus();\n return;\n }\n\n interval = setInterval(function() {\n var diff = top_position - window.pageYOffset,\n step = diff / duration * 10;\n\n if (Math.abs(diff) <= Math.abs(step)) {\n $first_input_error.focus();\n clearInterval(interval);\n }\n\n window.scrollBy(0, step);\n duration -= 10;\n }, 10);\n }\n },\n\n _submit: function(event) {\n var _this = this;\n\n _this._check_submit_status();\n\n if (_this._$button.classList.contains('disabled')) {\n event.preventDefault();\n\n for (var j = 0, inputs_len = _this._$inputs.length; j < inputs_len; j++) {\n _this._validate_input(this._$inputs[j]);\n }\n\n for (var i = 0, inputs_checkbox_len = _this._$inputs_checkbox.length; i < inputs_checkbox_len; i++) {\n _this._validate_input_checkbox(this._$inputs_checkbox[i]);\n }\n\n for (var x = 0, selects_len = _this._$selects.length; x < selects_len; x++) {\n _this._validate_select(this._$selects[x]);\n }\n\n _this._show_first_error();\n }\n }\n };\n\n var $forms = document.querySelectorAll('[data-form*=\"validate\"]');\n\n for (var i = 0, len = $forms.length; i < len; i++) {\n new FormValidation($forms[i]).init();\n }\n})(document, window);\n\n// FORMULARE: EINGABE ZWISCHENSPEICHERN\n// Wird verwendet für: formular\n// -------------------------------------------------------------------------------------------------\n\n(function(document) {\n var FormCache = function($form) {\n var _this = this;\n\n _this._$form = $form;\n _this._form_name = _this._$form.getAttribute('data-form-cache');\n _this._$inputs = _this._$form.querySelectorAll('input, select, textarea');\n _this._$cache = {};\n };\n\n FormCache.prototype = {\n init: function() {\n var _this = this;\n\n _this._init_events();\n _this._restore_cache();\n },\n\n _init_events: function() {\n var _this = this,\n $input,\n type,\n event_listener;\n\n for (var i = 0, len = _this._$inputs.length; i < len; i++) {\n $input = _this._$inputs[i];\n type = $input.type;\n\n if (type === 'checkbox') {\n event_listener = 'click';\n }\n else if (type === 'select-one') {\n event_listener = 'change';\n }\n else {\n event_listener = 'input';\n }\n\n $input.addEventListener(event_listener, _this._save_cache.bind(_this, $input), false);\n }\n\n _this._$form.addEventListener('submit', _this._reset_cache.bind(_this), false);\n },\n\n _save_cache: function($input) {\n var _this = this,\n name = $input.getAttribute('name'),\n type = $input.type;\n\n if (type === 'checkbox') {\n _this._$cache[name] = $input.checked;\n }\n else if (type === 'select-one') {\n _this._$cache[name] = $input.selectedIndex;\n }\n else {\n _this._$cache[name] = $input.value;\n }\n\n localStorage.setItem(domain + '_form_cache_' + _this._form_name, JSON.stringify(_this._$cache));\n },\n\n _restore_cache: function() {\n var _this = this,\n $cache = localStorage.getItem(domain + '_form_cache_' + _this._form_name),\n $input,\n type;\n\n if (!$cache) {\n return;\n }\n\n _this._$cache = JSON.parse($cache);\n\n for (var key in _this._$cache) {\n if (_this._$cache.hasOwnProperty(key)) {\n $input = _this._$form.querySelector('[name=\"' + key + '\"]');\n type = $input.type;\n\n if (type === 'checkbox') {\n $input.checked = _this._$cache[key];\n }\n else if (type === 'select-one') {\n $input.selectedIndex = _this._$cache[key];\n }\n else {\n $input.value = _this._$cache[key];\n }\n }\n }\n },\n\n _reset_cache: function() {\n var _this = this,\n is_valid = true;\n\n for (var i = 0, len = _this._$inputs.length; i < len; i++) {\n if (_this._$inputs[i].getAttribute('aria-invalid') === 'true') {\n is_valid = false;\n break;\n }\n }\n\n if (is_valid) {\n localStorage.removeItem(domain + '_form_cache_' + _this._form_name);\n }\n }\n };\n\n var $forms = document.querySelectorAll('[data-form-cache]');\n\n for (var i = 0, len = $forms.length; i < len; i++) {\n new FormCache($forms[i]).init();\n }\n})(document);\n\n// FORMULARE: TEXTAREA AUTOGROW\n// Wird gebraucht für alle