{"version":3,"sources":["lp-scripts.js","vendor/lazysizes.js","vendor/ls.bgset.js","vendor/ls.respimg.js","vendor/ls.unveilhooks.js","vendor/slick.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","window","factory","lazySizes","document","getElementsByClassName","lazysizes","lazySizesCfg","docElem","documentElement","Date","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","addEventListener","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","forEach","Array","hasClass","ele","cls","RegExp","test","addClass","setAttribute","trim","removeClass","reg","replace","addRemoveLoadEvents","dom","fn","add","action","evt","triggerEvent","elem","name","detail","noBubbles","noCancelable","event","createEvent","instance","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","style","getComputedStyle","getWidth","parent","width","offsetWidth","minSize","_lazysizesWidth","parentNode","rAF","firstFns","secondFns","fns","run","runFns","length","running","waiting","shift","rafBatch","queue","apply","this","arguments","push","hidden","_lsFlush","rAFIt","simple","that","args","throttle","lastTime","gDelay","throttleDelay","rICTimeout","ricTimeout","now","idleCallback","timeout","isPriority","delay","debounce","func","timestamp","wait","later","last","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","srcAttr","srcsetAttr","sizesAttr","customMedia","init","expFactor","hFac","loadMode","loadHidden","lazySizesConfig","lazysizesConfig","loader","regImg","regIframe","supportScroll","navigator","userAgent","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","e","target","isVisible","isBodyHidden","body","isNestedVisible","elemExpand","outerRect","visible","eLtop","eLbottom","eLleft","eLright","offsetParent","getBoundingClientRect","left","right","top","bottom","checkElements","eLlen","i","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","clientHeight","clientWidth","_defEx","eLvW","innerWidth","elvH","innerHeight","isCompleted","preloadElems","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","contentWindow","location","handleSources","source","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","resetPreloadingTimer","call","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","started","_","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sizeElement","sources","len","dataAttr","getSizeElement","debouncedUpdateElementsSizes","autosizesElems","cfg","uP","aC","rC","hC","fire","gW","module","exports","globalInstall","removeEventListener","bind","require","regWhite","regSplitSet","regSource","regType","regBgUrlEscape","allowedBackgroundSize","contain","cover","setTypeOrMedia","match","typeMatch","proxyLoad","_lazybgset","image","bg","currentSrc","useSrc","JSON","stringify","backgroundImage","_lazybgsetLoading","set","getAttribute","createElement","alt","sets","img","picture","ratio","optimumx","removeChild","Object","defineProperty","value","writable","split","display","className","appendChild","removeAttribute","createPicture","bgSize","getPropertyValue","backgroundSize","getBgSize","_lazysizesParentFit","undefined","regDescriptors","config","supportSrcset","regHDesc","fixEdgeHDescriptor","edgeMatch","removeHDescriptors","$2","$1","$3","handler","onerror","supportsType","type","msElementsFromPoint","candidates","regWCandidates","regMultiple","addCandidate","ascendingSort","regPxLength","parseWsrcset","runMatchMedia","createSrcset","matchesMedia","getCandidate","p","sels","options","a","b","w","candidate","url","wDescriptor","c","u","timer","matchMediaElems","isImage","parsedSet","srcSet","_lazypolyfill","_set","toUpperCase","matchMedia","Modernizr","mq","media","matches","srces","parseInt","d","dpr","devicePixelRatio","optimum","getX","Math","min","lowerCandidate","bonusFactor","cached","pow","reduceCandidate","sort","cur","parse","input","sel","querySelectorAll","join","noIOSFix","_lazyImgSrc","insertBefore","bgLoad","uniqueUrls","addStyleScript","insertElem","rel","href","cb","tmp","poster","preload","autoplay","play","er","requireJs","define","amd","jQuery","$","instanceUid","Slick","element","settings","dataSettings","defaults","accessibility","adaptiveHeight","appendArrows","appendDots","arrows","asNavFor","prevArrow","nextArrow","autoplaySpeed","centerMode","centerPadding","cssEase","customPaging","slider","text","dots","dotsClass","draggable","easing","edgeFriction","fade","focusOnSelect","focusOnChange","infinite","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnFocus","pauseOnDotsHover","respondTo","responsive","rows","rtl","slide","slidesPerRow","slidesToShow","slidesToScroll","speed","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","useTransform","variableWidth","vertical","verticalSwiping","waitForAnimate","zIndex","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","currentSlide","direction","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","slideWidth","$slideTrack","$slides","sliding","slideOffset","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","extend","activeBreakpoint","animType","animProp","breakpoints","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","data","originalSettings","mozHidden","webkitHidden","autoPlay","proxy","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","htmlExpr","registerBreakpoints","activateADA","find","attr","tabindex","addSlide","slickAdd","markup","index","addBefore","unload","appendTo","eq","insertAfter","prependTo","children","detach","append","each","reinit","animateHeight","targetHeight","outerHeight","animate","height","animateSlide","targetLeft","callback","animProps","animStart","duration","step","ceil","css","applyTransition","disableTransition","getNavTarget","not","slick","slideHandler","transition","clearInterval","slideTo","buildArrows","removeAttr","buildDots","dot","getDotCount","first","buildOut","wrapAll","wrap","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","createDocumentFragment","row","get","empty","checkResponsive","initial","forceUpdate","breakpoint","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","hasOwnProperty","unslick","refresh","trigger","dontAnimate","indexOffset","$target","currentTarget","is","preventDefault","closest","message","checkNavigable","navigables","prevNavigable","getNavigableIndexes","n","cleanUpEvents","off","interrupt","visibility","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","stopImmediatePropagation","stopPropagation","destroy","remove","fadeSlide","slideIndex","opacity","fadeSlideOut","filterSlides","slickFilter","filter","focusHandler","on","$sf","getCurrent","slickCurrentSlide","breakPoint","counter","pagerQty","getLeft","verticalHeight","targetSlide","coef","verticalOffset","floor","offsetLeft","outerWidth","getOption","slickGetOption","option","max","indexes","getSlick","getSlideCount","swipedSlide","centerOffset","abs","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","numDotGroups","tabControlIndexes","val","slideControlIndex","indexOf","role","id","ariaButtonControl","mappedSlideIndex","end","initArrowEvents","initDotEvents","initSlideEvents","initUI","show","tagName","keyCode","loadRange","rangeStart","rangeEnd","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","slice","prevSlide","nextSlide","progressiveLazyLoad","next","slickNext","pause","slickPause","slickPlay","postSlide","focus","prev","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","l","responsiveSettings","splice","windowDelay","removeSlide","slickRemove","removeBefore","removeAll","setCSS","position","x","y","positionProps","setDimensions","padding","offset","setFade","setHeight","setOption","slickSetOption","item","opt","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","transform","allSlides","remainder","evenCoef","infiniteCount","clone","toggle","targetElement","parents","sync","animSlide","oldSlide","slideLeft","navTarget","hide","swipeDirection","xDist","yDist","r","swipeAngle","startX","curX","startY","curY","atan2","round","PI","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","originalEvent","touches","swipeStart","swipeMove","curLeft","positionOffset","verticalSwipeLength","pageX","clientX","pageY","clientY","sqrt","unfilterSlides","slickUnfilter","fromBreakpoint","ret","ready","global_helpers","header","hash","scroll_to_form","scrollToHash","bindUIActions","scrollToForm","form","scrollTop","content","immediate","context","callNow","landing_page","hero_slider","heroSlider"],"mappings":"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","file":"lp-scripts-min.js","sourcesContent":["(function(window, factory) {\n\tvar lazySizes = factory(window, window.document);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(window, function l(window, document) {\n\t'use strict';\n\t/*jshint eqnull:true */\n\tif(!document.getElementsByClassName){return;}\n\n\tvar lazysizes, lazySizesCfg;\n\n\tvar docElem = document.documentElement;\n\n\tvar Date = window.Date;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\tvar addEventListener = window[_addEventListener];\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth =  parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning =  true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\n\t\tsetTimeout(function(){\n\t\t\tif(lazySizesCfg.init){\n\t\t\t\tinit();\n\t\t\t}\n\t\t});\n\t})();\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, 'ls-is-cached');\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tlazysizes = {\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t'use strict';\n\tif(!window.addEventListener){return;}\n\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar regWhite = /\\s+/g;\n\tvar regSplitSet = /\\s*\\|\\s+|\\s+\\|\\s*/g;\n\tvar regSource = /^(.+?)(?:\\s+\\[\\s*(.+?)\\s*\\])(?:\\s+\\[\\s*(.+?)\\s*\\])?$/;\n\tvar regType = /^\\s*\\(*\\s*type\\s*:\\s*(.+?)\\s*\\)*\\s*$/;\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar allowedBackgroundSize = {contain: 1, cover: 1};\n\tvar proxyWidth = function(elem){\n\t\tvar width = lazySizes.gW(elem, elem.parentNode);\n\n\t\tif(!elem._lazysizesWidth || width > elem._lazysizesWidth){\n\t\t\telem._lazysizesWidth = width;\n\t\t}\n\t\treturn elem._lazysizesWidth;\n\t};\n\tvar getBgSize = function(elem){\n\t\tvar bgSize;\n\n\t\tbgSize = (getComputedStyle(elem) || {getPropertyValue: function(){}}).getPropertyValue('background-size');\n\n\t\tif(!allowedBackgroundSize[bgSize] && allowedBackgroundSize[elem.style.backgroundSize]){\n\t\t\tbgSize = elem.style.backgroundSize;\n\t\t}\n\n\t\treturn bgSize;\n\t};\n\tvar setTypeOrMedia = function(source, match){\n\t\tif(match){\n\t\t\tvar typeMatch = match.match(regType);\n\t\t\tif(typeMatch && typeMatch[1]){\n\t\t\t\tsource.setAttribute('type', typeMatch[1]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute('media', lazySizesCfg.customMedia[match] || match);\n\t\t\t}\n\t\t}\n\t};\n\tvar createPicture = function(sets, elem, img){\n\t\tvar picture = document.createElement('picture');\n\t\tvar sizes = elem.getAttribute(lazySizesCfg.sizesAttr);\n\t\tvar ratio = elem.getAttribute('data-ratio');\n\t\tvar optimumx = elem.getAttribute('data-optimumx');\n\n\t\tif(elem._lazybgset && elem._lazybgset.parentNode == elem){\n\t\t\telem.removeChild(elem._lazybgset);\n\t\t}\n\n\t\tObject.defineProperty(img, '_lazybgset', {\n\t\t\tvalue: elem,\n\t\t\twritable: true\n\t\t});\n\t\tObject.defineProperty(elem, '_lazybgset', {\n\t\t\tvalue: picture,\n\t\t\twritable: true\n\t\t});\n\n\t\tsets = sets.replace(regWhite, ' ').split(regSplitSet);\n\n\t\tpicture.style.display = 'none';\n\t\timg.className = lazySizesCfg.lazyClass;\n\n\t\tif(sets.length == 1 && !sizes){\n\t\t\tsizes = 'auto';\n\t\t}\n\n\t\tsets.forEach(function(set){\n\t\t\tvar match;\n\t\t\tvar source = document.createElement('source');\n\n\t\t\tif(sizes && sizes != 'auto'){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tif((match = set.match(regSource))){\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, match[1]);\n\n\t\t\t\tsetTypeOrMedia(source, match[2]);\n\t\t\t\tsetTypeOrMedia(source, match[3]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, set);\n\t\t\t}\n\n\t\t\tpicture.appendChild(source);\n\t\t});\n\n\t\tif(sizes){\n\t\t\timg.setAttribute(lazySizesCfg.sizesAttr, sizes);\n\t\t\telem.removeAttribute(lazySizesCfg.sizesAttr);\n\t\t\telem.removeAttribute('sizes');\n\t\t}\n\t\tif(optimumx){\n\t\t\timg.setAttribute('data-optimumx', optimumx);\n\t\t}\n\t\tif(ratio) {\n\t\t\timg.setAttribute('data-ratio', ratio);\n\t\t}\n\n\t\tpicture.appendChild(img);\n\n\t\telem.appendChild(picture);\n\t};\n\n\tvar proxyLoad = function(e){\n\t\tif(!e.target._lazybgset){return;}\n\n\t\tvar image = e.target;\n\t\tvar elem = image._lazybgset;\n\t\tvar bg = image.currentSrc || image.src;\n\n\n\t\tif(bg){\n\t\t\tvar event = lazySizes.fire(elem, 'bgsetproxy', {\n\t\t\t\tsrc: bg,\n\t\t\t\tuseSrc: regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg,\n\t\t\t});\n\n\t\t\tif(!event.defaultPrevented){\n\t\t\t\telem.style.backgroundImage = 'url(' + event.detail.useSrc + ')';\n\t\t\t}\n\t\t}\n\n\t\tif(image._lazybgsetLoading){\n\t\t\tlazySizes.fire(elem, '_lazyloaded', {}, false, true);\n\t\t\tdelete image._lazybgsetLoading;\n\t\t}\n\t};\n\n\taddEventListener('lazybeforeunveil', function(e){\n\t\tvar set, image, elem;\n\n\t\tif(e.defaultPrevented || !(set = e.target.getAttribute('data-bgset'))){return;}\n\n\t\telem = e.target;\n\t\timage = document.createElement('img');\n\n\t\timage.alt = '';\n\n\t\timage._lazybgsetLoading = true;\n\t\te.detail.firesLoad = true;\n\n\t\tcreatePicture(set, elem, image);\n\n\t\tsetTimeout(function(){\n\t\t\tlazySizes.loader.unveil(image);\n\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.fire(image, '_lazyloaded', {}, true, true);\n\t\t\t\tif(image.complete) {\n\t\t\t\t\tproxyLoad({target: image});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\tdocument.addEventListener('load', proxyLoad, true);\n\n\twindow.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.detail.instance != lazySizes){return;}\n\t\tif(e.target._lazybgset && e.detail.dataAttr){\n\t\t\tvar elem = e.target._lazybgset;\n\t\t\tvar bgSize = getBgSize(elem);\n\n\t\t\tif(allowedBackgroundSize[bgSize]){\n\t\t\t\te.target._lazysizesParentFit = bgSize;\n\n\t\t\t\tlazySizes.rAF(function(){\n\t\t\t\t\te.target.setAttribute('data-parent-fit', bgSize);\n\t\t\t\t\tif(e.target._lazysizesParentFit){\n\t\t\t\t\t\tdelete e.target._lazysizesParentFit;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, true);\n\n\tdocument.documentElement.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || !e.target._lazybgset || e.detail.instance != lazySizes){return;}\n\t\te.detail.width = proxyWidth(e.target._lazybgset);\n\t});\n}));\n(function(window, document, undefined){\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar polyfill;\n\tvar config = (window.lazySizes && lazySizes.cfg) || window.lazySizesConfig;\n\tvar img = document.createElement('img');\n\tvar supportSrcset = ('sizes' in img) && ('srcset' in img);\n\tvar regHDesc = /\\s+\\d+h/g;\n\tvar fixEdgeHDescriptor = (function(){\n\t\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\t\tvar forEach = Array.prototype.forEach;\n\n\t\treturn function(edgeMatch){\n\t\t\tvar img = document.createElement('img');\n\t\t\tvar removeHDescriptors = function(source){\n\t\t\t\tvar ratio;\n\t\t\t\tvar srcset = source.getAttribute(lazySizesConfig.srcsetAttr);\n\t\t\t\tif(srcset){\n\t\t\t\t\tif(srcset.match(regDescriptors)){\n\t\t\t\t\t\tif(RegExp.$2 == 'w'){\n\t\t\t\t\t\t\tratio = RegExp.$1 / RegExp.$3;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tratio = RegExp.$3 / RegExp.$1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(ratio){\n\t\t\t\t\t\t\tsource.setAttribute('data-aspectratio', ratio);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsource.setAttribute(lazySizesConfig.srcsetAttr, srcset.replace(regHDesc, ''));\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar handler = function(e){\n\t\t\t\tvar picture = e.target.parentNode;\n\n\t\t\t\tif(picture && picture.nodeName == 'PICTURE'){\n\t\t\t\t\tforEach.call(picture.getElementsByTagName('source'), removeHDescriptors);\n\t\t\t\t}\n\t\t\t\tremoveHDescriptors(e.target);\n\t\t\t};\n\n\t\t\tvar test = function(){\n\t\t\t\tif(!!img.currentSrc){\n\t\t\t\t\tdocument.removeEventListener('lazybeforeunveil', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif(edgeMatch[1]){\n\t\t\t\tdocument.addEventListener('lazybeforeunveil', handler);\n\n\t\t\t\tif(true || edgeMatch[1] > 14){\n\t\t\t\t\timg.onload = test;\n\t\t\t\t\timg.onerror = test;\n\n\t\t\t\t\timg.srcset = 'data:,a 1w 1h';\n\n\t\t\t\t\tif(img.complete){\n\t\t\t\t\t\ttest();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\n\tif(!config){\n\t\tconfig = {};\n\t\twindow.lazySizesConfig = config;\n\t}\n\n\tif(!config.supportsType){\n\t\tconfig.supportsType = function(type/*, elem*/){\n\t\t\treturn !type;\n\t\t};\n\t}\n\n\tif(window.picturefill || config.pf){return;}\n\n\tif(window.HTMLPictureElement && supportSrcset){\n\n\t\tif(document.msElementsFromPoint){\n\t\t\tfixEdgeHDescriptor(navigator.userAgent.match(/Edge\\/(\\d+)/));\n\t\t}\n\n\t\tconfig.pf = function(){};\n\t\treturn;\n\t}\n\n\tconfig.pf = function(options){\n\t\tvar i, len;\n\t\tif(window.picturefill){return;}\n\t\tfor(i = 0, len = options.elements.length; i < len; i++){\n\t\t\tpolyfill(options.elements[i]);\n\t\t}\n\t};\n\n\t// partial polyfill\n\tpolyfill = (function(){\n\t\tvar ascendingSort = function( a, b ) {\n\t\t\treturn a.w - b.w;\n\t\t};\n\t\tvar regPxLength = /^\\s*\\d+px\\s*$/;\n\t\tvar reduceCandidate = function (srces) {\n\t\t\tvar lowerCandidate, bonusFactor;\n\t\t\tvar len = srces.length;\n\t\t\tvar candidate = srces[len -1];\n\t\t\tvar i = 0;\n\n\t\t\tfor(i; i < len;i++){\n\t\t\t\tcandidate = srces[i];\n\t\t\t\tcandidate.d = candidate.w / srces.w;\n\n\t\t\t\tif(candidate.d >= srces.d){\n\t\t\t\t\tif(!candidate.cached && (lowerCandidate = srces[i - 1]) &&\n\t\t\t\t\t\tlowerCandidate.d > srces.d - (0.13 * Math.pow(srces.d, 2.2))){\n\n\t\t\t\t\t\tbonusFactor = Math.pow(lowerCandidate.d - 0.6, 1.6);\n\n\t\t\t\t\t\tif(lowerCandidate.cached) {\n\t\t\t\t\t\t\tlowerCandidate.d += 0.15 * bonusFactor;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(lowerCandidate.d + ((candidate.d - srces.d) * bonusFactor) > srces.d){\n\t\t\t\t\t\t\tcandidate = lowerCandidate;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn candidate;\n\t\t};\n\n\t\tvar parseWsrcset = (function(){\n\t\t\tvar candidates;\n\t\t\tvar regWCandidates = /(([^,\\s].[^\\s]+)\\s+(\\d+)w)/g;\n\t\t\tvar regMultiple = /\\s/;\n\t\t\tvar addCandidate = function(match, candidate, url, wDescriptor){\n\t\t\t\tcandidates.push({\n\t\t\t\t\tc: candidate,\n\t\t\t\t\tu: url,\n\t\t\t\t\tw: wDescriptor * 1\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treturn function(input){\n\t\t\t\tcandidates = [];\n\t\t\t\tinput = input.trim();\n\t\t\t\tinput\n\t\t\t\t\t.replace(regHDesc, '')\n\t\t\t\t\t.replace(regWCandidates, addCandidate)\n\t\t\t\t;\n\n\t\t\t\tif(!candidates.length && input && !regMultiple.test(input)){\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tc: input,\n\t\t\t\t\t\tu: input,\n\t\t\t\t\t\tw: 99\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn candidates;\n\t\t\t};\n\t\t})();\n\n\t\tvar runMatchMedia = function(){\n\t\t\tif(runMatchMedia.init){return;}\n\n\t\t\trunMatchMedia.init = true;\n\t\t\taddEventListener('resize', (function(){\n\t\t\t\tvar timer;\n\t\t\t\tvar matchMediaElems = document.getElementsByClassName('lazymatchmedia');\n\t\t\t\tvar run = function(){\n\t\t\t\t\tvar i, len;\n\t\t\t\t\tfor(i = 0, len = matchMediaElems.length; i < len; i++){\n\t\t\t\t\t\tpolyfill(matchMediaElems[i]);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function(){\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(run, 66);\n\t\t\t\t};\n\t\t\t})());\n\t\t};\n\n\t\tvar createSrcset = function(elem, isImage){\n\t\t\tvar parsedSet;\n\t\t\tvar srcSet = elem.getAttribute('srcset') || elem.getAttribute(config.srcsetAttr);\n\n\t\t\tif(!srcSet && isImage){\n\t\t\t\tsrcSet = !elem._lazypolyfill ?\n\t\t\t\t\t(elem.getAttribute('src') || elem.getAttribute(config.srcAttr)) :\n\t\t\t\t\telem._lazypolyfill._set\n\t\t\t\t;\n\t\t\t}\n\n\t\t\tif(!elem._lazypolyfill || elem._lazypolyfill._set != srcSet){\n\n\t\t\t\tparsedSet = parseWsrcset( srcSet || '' );\n\t\t\t\tif(isImage && elem.parentNode){\n\t\t\t\t\tparsedSet.isPicture = elem.parentNode.nodeName.toUpperCase() == 'PICTURE';\n\n\t\t\t\t\tif(parsedSet.isPicture){\n\t\t\t\t\t\tif(window.matchMedia || (window.Modernizr && Modernizr.mq)){\n\t\t\t\t\t\t\tlazySizes.aC(elem, 'lazymatchmedia');\n\t\t\t\t\t\t\trunMatchMedia();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparsedSet._set = srcSet;\n\t\t\t\tObject.defineProperty(elem, '_lazypolyfill', {\n\t\t\t\t\tvalue: parsedSet,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tvar getX = function(elem){\n\t\t\tvar dpr = window.devicePixelRatio || 1;\n\t\t\tvar optimum = lazySizes.getX && lazySizes.getX(elem);\n\t\t\treturn Math.min(optimum || dpr, 2.5, dpr);\n\t\t};\n\n\t\tvar matchesMedia = function(media){\n\t\t\tif(window.matchMedia){\n\t\t\t\tmatchesMedia = function(media){\n\t\t\t\t\treturn !media || (matchMedia(media) || {}).matches;\n\t\t\t\t};\n\t\t\t} else if(window.Modernizr && Modernizr.mq){\n\t\t\t\treturn !media || Modernizr.mq(media);\n\t\t\t} else {\n\t\t\t\treturn !media;\n\t\t\t}\n\n\t\t\treturn matchesMedia(media);\n\t\t};\n\n\t\tvar getCandidate = function(elem){\n\t\t\tvar sources, i, len, media, source, srces, src, width;\n\n\t\t\tsource = elem;\n\t\t\tcreateSrcset(source, true);\n\t\t\tsrces = source._lazypolyfill;\n\n\t\t\tif(srces.isPicture){\n\t\t\t\tfor(i = 0, sources = elem.parentNode.getElementsByTagName('source'), len = sources.length; i < len; i++){\n\t\t\t\t\tif( config.supportsType(sources[i].getAttribute('type'), elem) && matchesMedia( sources[i].getAttribute('media')) ){\n\t\t\t\t\t\tsource = sources[i];\n\t\t\t\t\t\tcreateSrcset(source);\n\t\t\t\t\t\tsrces = source._lazypolyfill;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(srces.length > 1){\n\t\t\t\twidth = source.getAttribute('sizes') || '';\n\t\t\t\twidth = regPxLength.test(width) && parseInt(width, 10) || lazySizes.gW(elem, elem.parentNode);\n\t\t\t\tsrces.d = getX(elem);\n\t\t\t\tif(!srces.w || srces.w < width){\n\t\t\t\t\tsrces.w = width;\n\t\t\t\t\tsrc = reduceCandidate(srces.sort(ascendingSort));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsrc = srces[0];\n\t\t\t}\n\n\t\t\treturn src;\n\t\t};\n\n\t\tvar p = function(elem){\n\t\t\tif(supportSrcset && elem.parentNode && elem.parentNode.nodeName.toUpperCase() != 'PICTURE'){return;}\n\t\t\tvar candidate = getCandidate(elem);\n\n\t\t\tif(candidate && candidate.u && elem._lazypolyfill.cur != candidate.u){\n\t\t\t\telem._lazypolyfill.cur = candidate.u;\n\t\t\t\tcandidate.cached = true;\n\t\t\t\telem.setAttribute(config.srcAttr, candidate.u);\n\t\t\t\telem.setAttribute('src', candidate.u);\n\t\t\t}\n\t\t};\n\n\t\tp.parse = parseWsrcset;\n\n\t\treturn p;\n\t})();\n\n\tif(config.loadedClass && config.loadingClass){\n\t\t(function(){\n\t\t\tvar sels = [];\n\t\t\t['img[sizes$=\"px\"][srcset].', 'picture > img:not([srcset]).'].forEach(function(sel){\n\t\t\t\tsels.push(sel + config.loadedClass);\n\t\t\t\tsels.push(sel + config.loadingClass);\n\t\t\t});\n\t\t\tconfig.pf({\n\t\t\t\telements: document.querySelectorAll(sels.join(', '))\n\t\t\t});\n\t\t})();\n\n\t}\n})(window, document);\n\n/**\n * Some versions of iOS (8.1-) do load the first candidate of a srcset candidate list, if width descriptors with the sizes attribute is used.\n * This tiny extension prevents this wasted download by creating a picture structure around the image.\n * Note: This extension is already included in the ls.respimg.js file.\n *\n * Usage:\n *\n * <img\n * \tclass=\"lazyload\"\n * \tdata-sizes=\"auto\"\n * \tdata-srcset=\"small.jpg 640px,\n * \t\tmedium.jpg 980w,\n * \t\tlarge.jpg 1280w\"\n * \t/>\n */\n\n(function(document){\n\t'use strict';\n\tvar regPicture;\n\tvar img = document.createElement('img');\n\n\tif(('srcset' in img) && !('sizes' in img) && !window.HTMLPictureElement){\n\t\tregPicture = /^picture$/i;\n\t\tdocument.addEventListener('lazybeforeunveil', function(e){\n\t\t\tvar elem, parent, srcset, sizes, isPicture;\n\t\t\tvar picture, source;\n\t\t\tif(e.defaultPrevented ||\n\t\t\t\tlazySizesConfig.noIOSFix ||\n\t\t\t\t!(elem = e.target) ||\n\t\t\t\t!(srcset = elem.getAttribute(lazySizesConfig.srcsetAttr)) ||\n\t\t\t\t!(parent = elem.parentNode) ||\n\t\t\t\t(\n\t\t\t\t\t!(isPicture = regPicture.test(parent.nodeName || '')) &&\n\t\t\t\t\t!(sizes = elem.getAttribute('sizes') || elem.getAttribute(lazySizesConfig.sizesAttr))\n\t\t\t\t)\n\t\t\t){return;}\n\n\t\t\tpicture = isPicture ? parent : document.createElement('picture');\n\n\t\t\tif(!elem._lazyImgSrc){\n\t\t\t\tObject.defineProperty(elem, '_lazyImgSrc', {\n\t\t\t\t\tvalue: document.createElement('source'),\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tsource = elem._lazyImgSrc;\n\n\t\t\tif(sizes){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tsource.setAttribute(lazySizesConfig.srcsetAttr, srcset);\n\t\t\telem.setAttribute('data-pfsrcset', srcset);\n\t\t\telem.removeAttribute(lazySizesConfig.srcsetAttr);\n\n\t\t\tif(!isPicture){\n\t\t\t\tparent.insertBefore(picture, elem);\n\t\t\t\tpicture.appendChild(elem);\n\t\t\t}\n\t\t\tpicture.insertBefore(source, elem);\n\t\t});\n\t}\n})(document);\n/*\nThis plugin extends lazySizes to lazyLoad:\nbackground images, videos/posters and scripts\n\nBackground-Image:\nFor background images, use data-bg attribute:\n<div class=\"lazyload\" data-bg=\"bg-img.jpg\"></div>\n\n Video:\n For video/audio use data-poster and preload=\"none\":\n <video class=\"lazyload\" preload=\"none\" data-poster=\"poster.jpg\" src=\"src.mp4\">\n <!-- sources -->\n </video>\n\n For video that plays automatically if in view:\n <video\n\tclass=\"lazyload\"\n\tpreload=\"none\"\n\tmuted=\"\"\n\tdata-autoplay=\"\"\n\tdata-poster=\"poster.jpg\"\n\tsrc=\"src.mp4\">\n</video>\n\n Scripts:\n For scripts use data-script:\n <div class=\"lazyload\" data-script=\"module-name.js\"></div>\n\n\n Script modules using require:\n For modules using require use data-require:\n <div class=\"lazyload\" data-require=\"module-name\"></div>\n*/\n\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar bgLoad, regBgUrlEscape;\n\tvar uniqueUrls = {};\n\n\tif(document.addEventListener){\n\t\tregBgUrlEscape = /\\(|\\)|\\s|'/;\n\n\t\tbgLoad = function (url, cb){\n\t\t\tvar img = document.createElement('img');\n\t\t\timg.onload = function(){\n\t\t\t\timg.onload = null;\n\t\t\t\timg.onerror = null;\n\t\t\t\timg = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\timg.onerror = img.onload;\n\n\t\t\timg.src = url;\n\n\t\t\tif(img && img.complete && img.onload){\n\t\t\t\timg.onload();\n\t\t\t}\n\t\t};\n\n\t\taddEventListener('lazybeforeunveil', function(e){\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\n\t\t\tvar tmp, load, bg, poster;\n\t\t\tif(!e.defaultPrevented) {\n\n\t\t\t\tvar target = e.target;\n\n\t\t\t\tif(target.preload == 'none'){\n\t\t\t\t\ttarget.preload = target.getAttribute('data-preload') || 'auto';\n\t\t\t\t}\n\n\t\t\t\tif (target.getAttribute('data-autoplay') != null) {\n\t\t\t\t\tif (target.getAttribute('data-expand') && !target.autoplay) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttarget.play();\n\t\t\t\t\t\t} catch (er) {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\ttarget.setAttribute('data-expand', '-10');\n\t\t\t\t\t\t\tlazySizes.aC(target, lazySizes.cfg.lazyClass);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttmp = target.getAttribute('data-link');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp, true);\n\t\t\t\t}\n\n\t\t\t\t// handle data-script\n\t\t\t\ttmp = target.getAttribute('data-script');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t}\n\n\t\t\t\t// handle data-require\n\t\t\t\ttmp = target.getAttribute('data-require');\n\t\t\t\tif(tmp){\n\t\t\t\t\tif(lazySizes.cfg.requireJs){\n\t\t\t\t\t\tlazySizes.cfg.requireJs([tmp]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// handle data-bg\n\t\t\t\tbg = target.getAttribute('data-bg');\n\t\t\t\tif (bg) {\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.style.backgroundImage = 'url(' + (regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg ) + ')';\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(bg, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-poster\n\t\t\t\tposter = target.getAttribute('data-poster');\n\t\t\t\tif(poster){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.poster = poster;\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(poster, load);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}, false);\n\n\t}\n\n\tfunction addStyleScript(src, style){\n\t\tif(uniqueUrls[src]){\n\t\t\treturn;\n\t\t}\n\t\tvar elem = document.createElement(style ? 'link' : 'script');\n\t\tvar insertElem = document.getElementsByTagName('script')[0];\n\n\t\tif(style){\n\t\t\telem.rel = 'stylesheet';\n\t\t\telem.href = src;\n\t\t} else {\n\t\t\telem.src = src;\n\t\t}\n\t\tuniqueUrls[src] = true;\n\t\tuniqueUrls[elem.src || elem.href] = true;\n\t\tinsertElem.parentNode.insertBefore(elem, insertElem);\n\t}\n}));\n/*\n     _ _      _       _\n ___| (_) ___| | __  (_)___\n/ __| | |/ __| |/ /  | / __|\n\\__ \\ | | (__|   < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n                   |__/\n\n Version: 1.8.0\n  Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n    Docs: http://kenwheeler.github.io/slick\n    Repo: http://github.com/kenwheeler/slick\n  Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n    'use strict';\n    if (typeof define === 'function' && define.amd) {\n        define(['jquery'], factory);\n    } else if (typeof exports !== 'undefined') {\n        module.exports = factory(require('jquery'));\n    } else {\n        factory(jQuery);\n    }\n\n}(function($) {\n    'use strict';\n    var Slick = window.Slick || {};\n\n    Slick = (function() {\n\n        var instanceUid = 0;\n\n        function Slick(element, settings) {\n\n            var _ = this, dataSettings;\n\n            _.defaults = {\n                accessibility: true,\n                adaptiveHeight: false,\n                appendArrows: $(element),\n                appendDots: $(element),\n                arrows: true,\n                asNavFor: null,\n                prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n                nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n                autoplay: false,\n                autoplaySpeed: 3000,\n                centerMode: false,\n                centerPadding: '50px',\n                cssEase: 'ease',\n                customPaging: function(slider, i) {\n                    return $('<button type=\"button\" />').text(i + 1);\n                },\n                dots: false,\n                dotsClass: 'slick-dots',\n                draggable: true,\n                easing: 'linear',\n                edgeFriction: 0.35,\n                fade: false,\n                focusOnSelect: false,\n                focusOnChange: false,\n                infinite: true,\n                initialSlide: 0,\n                lazyLoad: 'ondemand',\n                mobileFirst: false,\n                pauseOnHover: true,\n                pauseOnFocus: true,\n                pauseOnDotsHover: false,\n                respondTo: 'window',\n                responsive: null,\n                rows: 1,\n                rtl: false,\n                slide: '',\n                slidesPerRow: 1,\n                slidesToShow: 1,\n                slidesToScroll: 1,\n                speed: 500,\n                swipe: true,\n                swipeToSlide: false,\n                touchMove: true,\n                touchThreshold: 5,\n                useCSS: true,\n                useTransform: true,\n                variableWidth: false,\n                vertical: false,\n                verticalSwiping: false,\n                waitForAnimate: true,\n                zIndex: 1000\n            };\n\n            _.initials = {\n                animating: false,\n                dragging: false,\n                autoPlayTimer: null,\n                currentDirection: 0,\n                currentLeft: null,\n                currentSlide: 0,\n                direction: 1,\n                $dots: null,\n                listWidth: null,\n                listHeight: null,\n                loadIndex: 0,\n                $nextArrow: null,\n                $prevArrow: null,\n                scrolling: false,\n                slideCount: null,\n                slideWidth: null,\n                $slideTrack: null,\n                $slides: null,\n                sliding: false,\n                slideOffset: 0,\n                swipeLeft: null,\n                swiping: false,\n                $list: null,\n                touchObject: {},\n                transformsEnabled: false,\n                unslicked: false\n            };\n\n            $.extend(_, _.initials);\n\n            _.activeBreakpoint = null;\n            _.animType = null;\n            _.animProp = null;\n            _.breakpoints = [];\n            _.breakpointSettings = [];\n            _.cssTransitions = false;\n            _.focussed = false;\n            _.interrupted = false;\n            _.hidden = 'hidden';\n            _.paused = true;\n            _.positionProp = null;\n            _.respondTo = null;\n            _.rowCount = 1;\n            _.shouldClick = true;\n            _.$slider = $(element);\n            _.$slidesCache = null;\n            _.transformType = null;\n            _.transitionType = null;\n            _.visibilityChange = 'visibilitychange';\n            _.windowWidth = 0;\n            _.windowTimer = null;\n\n            dataSettings = $(element).data('slick') || {};\n\n            _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n            _.currentSlide = _.options.initialSlide;\n\n            _.originalSettings = _.options;\n\n            if (typeof document.mozHidden !== 'undefined') {\n                _.hidden = 'mozHidden';\n                _.visibilityChange = 'mozvisibilitychange';\n            } else if (typeof document.webkitHidden !== 'undefined') {\n                _.hidden = 'webkitHidden';\n                _.visibilityChange = 'webkitvisibilitychange';\n            }\n\n            _.autoPlay = $.proxy(_.autoPlay, _);\n            _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n            _.changeSlide = $.proxy(_.changeSlide, _);\n            _.clickHandler = $.proxy(_.clickHandler, _);\n            _.selectHandler = $.proxy(_.selectHandler, _);\n            _.setPosition = $.proxy(_.setPosition, _);\n            _.swipeHandler = $.proxy(_.swipeHandler, _);\n            _.dragHandler = $.proxy(_.dragHandler, _);\n            _.keyHandler = $.proxy(_.keyHandler, _);\n\n            _.instanceUid = instanceUid++;\n\n            // A simple way to check for HTML strings\n            // Strict HTML recognition (must start with <)\n            // Extracted from jQuery v1.11 source\n            _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n            _.registerBreakpoints();\n            _.init(true);\n\n        }\n\n        return Slick;\n\n    }());\n\n    Slick.prototype.activateADA = function() {\n        var _ = this;\n\n        _.$slideTrack.find('.slick-active').attr({\n            'aria-hidden': 'false'\n        }).find('a, input, button, select').attr({\n            'tabindex': '0'\n        });\n\n    };\n\n    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            addBefore = index;\n            index = null;\n        } else if (index < 0 || (index >= _.slideCount)) {\n            return false;\n        }\n\n        _.unload();\n\n        if (typeof(index) === 'number') {\n            if (index === 0 && _.$slides.length === 0) {\n                $(markup).appendTo(_.$slideTrack);\n            } else if (addBefore) {\n                $(markup).insertBefore(_.$slides.eq(index));\n            } else {\n                $(markup).insertAfter(_.$slides.eq(index));\n            }\n        } else {\n            if (addBefore === true) {\n                $(markup).prependTo(_.$slideTrack);\n            } else {\n                $(markup).appendTo(_.$slideTrack);\n            }\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slides.each(function(index, element) {\n            $(element).attr('data-slick-index', index);\n        });\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.animateHeight = function() {\n        var _ = this;\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.animate({\n                height: targetHeight\n            }, _.options.speed);\n        }\n    };\n\n    Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n        var animProps = {},\n            _ = this;\n\n        _.animateHeight();\n\n        if (_.options.rtl === true && _.options.vertical === false) {\n            targetLeft = -targetLeft;\n        }\n        if (_.transformsEnabled === false) {\n            if (_.options.vertical === false) {\n                _.$slideTrack.animate({\n                    left: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            } else {\n                _.$slideTrack.animate({\n                    top: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            }\n\n        } else {\n\n            if (_.cssTransitions === false) {\n                if (_.options.rtl === true) {\n                    _.currentLeft = -(_.currentLeft);\n                }\n                $({\n                    animStart: _.currentLeft\n                }).animate({\n                    animStart: targetLeft\n                }, {\n                    duration: _.options.speed,\n                    easing: _.options.easing,\n                    step: function(now) {\n                        now = Math.ceil(now);\n                        if (_.options.vertical === false) {\n                            animProps[_.animType] = 'translate(' +\n                                now + 'px, 0px)';\n                            _.$slideTrack.css(animProps);\n                        } else {\n                            animProps[_.animType] = 'translate(0px,' +\n                                now + 'px)';\n                            _.$slideTrack.css(animProps);\n                        }\n                    },\n                    complete: function() {\n                        if (callback) {\n                            callback.call();\n                        }\n                    }\n                });\n\n            } else {\n\n                _.applyTransition();\n                targetLeft = Math.ceil(targetLeft);\n\n                if (_.options.vertical === false) {\n                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n                } else {\n                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n                }\n                _.$slideTrack.css(animProps);\n\n                if (callback) {\n                    setTimeout(function() {\n\n                        _.disableTransition();\n\n                        callback.call();\n                    }, _.options.speed);\n                }\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.getNavTarget = function() {\n\n        var _ = this,\n            asNavFor = _.options.asNavFor;\n\n        if ( asNavFor && asNavFor !== null ) {\n            asNavFor = $(asNavFor).not(_.$slider);\n        }\n\n        return asNavFor;\n\n    };\n\n    Slick.prototype.asNavFor = function(index) {\n\n        var _ = this,\n            asNavFor = _.getNavTarget();\n\n        if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n            asNavFor.each(function() {\n                var target = $(this).slick('getSlick');\n                if(!target.unslicked) {\n                    target.slideHandler(index, true);\n                }\n            });\n        }\n\n    };\n\n    Slick.prototype.applyTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        if (_.options.fade === false) {\n            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n        } else {\n            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n        }\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.autoPlay = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        if ( _.slideCount > _.options.slidesToShow ) {\n            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n        }\n\n    };\n\n    Slick.prototype.autoPlayClear = function() {\n\n        var _ = this;\n\n        if (_.autoPlayTimer) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n    };\n\n    Slick.prototype.autoPlayIterator = function() {\n\n        var _ = this,\n            slideTo = _.currentSlide + _.options.slidesToScroll;\n\n        if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n            if ( _.options.infinite === false ) {\n\n                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n                    _.direction = 0;\n                }\n\n                else if ( _.direction === 0 ) {\n\n                    slideTo = _.currentSlide - _.options.slidesToScroll;\n\n                    if ( _.currentSlide - 1 === 0 ) {\n                        _.direction = 1;\n                    }\n\n                }\n\n            }\n\n            _.slideHandler( slideTo );\n\n        }\n\n    };\n\n    Slick.prototype.buildArrows = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true ) {\n\n            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n            if( _.slideCount > _.options.slidesToShow ) {\n\n                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n                if (_.htmlExpr.test(_.options.prevArrow)) {\n                    _.$prevArrow.prependTo(_.options.appendArrows);\n                }\n\n                if (_.htmlExpr.test(_.options.nextArrow)) {\n                    _.$nextArrow.appendTo(_.options.appendArrows);\n                }\n\n                if (_.options.infinite !== true) {\n                    _.$prevArrow\n                        .addClass('slick-disabled')\n                        .attr('aria-disabled', 'true');\n                }\n\n            } else {\n\n                _.$prevArrow.add( _.$nextArrow )\n\n                    .addClass('slick-hidden')\n                    .attr({\n                        'aria-disabled': 'true',\n                        'tabindex': '-1'\n                    });\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.buildDots = function() {\n\n        var _ = this,\n            i, dot;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$slider.addClass('slick-dotted');\n\n            dot = $('<ul />').addClass(_.options.dotsClass);\n\n            for (i = 0; i <= _.getDotCount(); i += 1) {\n                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n            }\n\n            _.$dots = dot.appendTo(_.options.appendDots);\n\n            _.$dots.find('li').first().addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.buildOut = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slider\n                .children( _.options.slide + ':not(.slick-cloned)')\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        _.$slides.each(function(index, element) {\n            $(element)\n                .attr('data-slick-index', index)\n                .data('originalStyling', $(element).attr('style') || '');\n        });\n\n        _.$slider.addClass('slick-slider');\n\n        _.$slideTrack = (_.slideCount === 0) ?\n            $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n            _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n        _.$list = _.$slideTrack.wrap(\n            '<div class=\"slick-list\"/>').parent();\n        _.$slideTrack.css('opacity', 0);\n\n        if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n            _.options.slidesToScroll = 1;\n        }\n\n        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n        _.setupInfinite();\n\n        _.buildArrows();\n\n        _.buildDots();\n\n        _.updateDots();\n\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        if (_.options.draggable === true) {\n            _.$list.addClass('draggable');\n        }\n\n    };\n\n    Slick.prototype.buildRows = function() {\n\n        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n        newSlides = document.createDocumentFragment();\n        originalSlides = _.$slider.children();\n\n        if(_.options.rows > 0) {\n\n            slidesPerSection = _.options.slidesPerRow * _.options.rows;\n            numOfSlides = Math.ceil(\n                originalSlides.length / slidesPerSection\n            );\n\n            for(a = 0; a < numOfSlides; a++){\n                var slide = document.createElement('div');\n                for(b = 0; b < _.options.rows; b++) {\n                    var row = document.createElement('div');\n                    for(c = 0; c < _.options.slidesPerRow; c++) {\n                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n                        if (originalSlides.get(target)) {\n                            row.appendChild(originalSlides.get(target));\n                        }\n                    }\n                    slide.appendChild(row);\n                }\n                newSlides.appendChild(slide);\n            }\n\n            _.$slider.empty().append(newSlides);\n            _.$slider.children().children().children()\n                .css({\n                    'width':(100 / _.options.slidesPerRow) + '%',\n                    'display': 'inline-block'\n                });\n\n        }\n\n    };\n\n    Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n        var _ = this,\n            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n        var sliderWidth = _.$slider.width();\n        var windowWidth = window.innerWidth || $(window).width();\n\n        if (_.respondTo === 'window') {\n            respondToWidth = windowWidth;\n        } else if (_.respondTo === 'slider') {\n            respondToWidth = sliderWidth;\n        } else if (_.respondTo === 'min') {\n            respondToWidth = Math.min(windowWidth, sliderWidth);\n        }\n\n        if ( _.options.responsive &&\n            _.options.responsive.length &&\n            _.options.responsive !== null) {\n\n            targetBreakpoint = null;\n\n            for (breakpoint in _.breakpoints) {\n                if (_.breakpoints.hasOwnProperty(breakpoint)) {\n                    if (_.originalSettings.mobileFirst === false) {\n                        if (respondToWidth < _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    } else {\n                        if (respondToWidth > _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    }\n                }\n            }\n\n            if (targetBreakpoint !== null) {\n                if (_.activeBreakpoint !== null) {\n                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n                        _.activeBreakpoint =\n                            targetBreakpoint;\n                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                            _.unslick(targetBreakpoint);\n                        } else {\n                            _.options = $.extend({}, _.originalSettings,\n                                _.breakpointSettings[\n                                    targetBreakpoint]);\n                            if (initial === true) {\n                                _.currentSlide = _.options.initialSlide;\n                            }\n                            _.refresh(initial);\n                        }\n                        triggerBreakpoint = targetBreakpoint;\n                    }\n                } else {\n                    _.activeBreakpoint = targetBreakpoint;\n                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                        _.unslick(targetBreakpoint);\n                    } else {\n                        _.options = $.extend({}, _.originalSettings,\n                            _.breakpointSettings[\n                                targetBreakpoint]);\n                        if (initial === true) {\n                            _.currentSlide = _.options.initialSlide;\n                        }\n                        _.refresh(initial);\n                    }\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            } else {\n                if (_.activeBreakpoint !== null) {\n                    _.activeBreakpoint = null;\n                    _.options = _.originalSettings;\n                    if (initial === true) {\n                        _.currentSlide = _.options.initialSlide;\n                    }\n                    _.refresh(initial);\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            }\n\n            // only trigger breakpoints during an actual break. not on initialize.\n            if( !initial && triggerBreakpoint !== false ) {\n                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n            }\n        }\n\n    };\n\n    Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n        var _ = this,\n            $target = $(event.currentTarget),\n            indexOffset, slideOffset, unevenOffset;\n\n        // If target is a link, prevent default action.\n        if($target.is('a')) {\n            event.preventDefault();\n        }\n\n        // If target is not the <li> element (ie: a child), find the <li>.\n        if(!$target.is('li')) {\n            $target = $target.closest('li');\n        }\n\n        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n        switch (event.data.message) {\n\n            case 'previous':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'next':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'index':\n                var index = event.data.index === 0 ? 0 :\n                    event.data.index || $target.index() * _.options.slidesToScroll;\n\n                _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n                $target.children().trigger('focus');\n                break;\n\n            default:\n                return;\n        }\n\n    };\n\n    Slick.prototype.checkNavigable = function(index) {\n\n        var _ = this,\n            navigables, prevNavigable;\n\n        navigables = _.getNavigableIndexes();\n        prevNavigable = 0;\n        if (index > navigables[navigables.length - 1]) {\n            index = navigables[navigables.length - 1];\n        } else {\n            for (var n in navigables) {\n                if (index < navigables[n]) {\n                    index = prevNavigable;\n                    break;\n                }\n                prevNavigable = navigables[n];\n            }\n        }\n\n        return index;\n    };\n\n    Slick.prototype.cleanUpEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots && _.$dots !== null) {\n\n            $('li', _.$dots)\n                .off('click.slick', _.changeSlide)\n                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n            if (_.options.accessibility === true) {\n                _.$dots.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$slider.off('focus.slick blur.slick');\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n        _.$list.off('click.slick', _.clickHandler);\n\n        $(document).off(_.visibilityChange, _.visibility);\n\n        _.cleanUpSlideEvents();\n\n        if (_.options.accessibility === true) {\n            _.$list.off('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n        }\n\n        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n    };\n\n    Slick.prototype.cleanUpSlideEvents = function() {\n\n        var _ = this;\n\n        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n    };\n\n    Slick.prototype.cleanUpRows = function() {\n\n        var _ = this, originalSlides;\n\n        if(_.options.rows > 0) {\n            originalSlides = _.$slides.children().children();\n            originalSlides.removeAttr('style');\n            _.$slider.empty().append(originalSlides);\n        }\n\n    };\n\n    Slick.prototype.clickHandler = function(event) {\n\n        var _ = this;\n\n        if (_.shouldClick === false) {\n            event.stopImmediatePropagation();\n            event.stopPropagation();\n            event.preventDefault();\n        }\n\n    };\n\n    Slick.prototype.destroy = function(refresh) {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        _.touchObject = {};\n\n        _.cleanUpEvents();\n\n        $('.slick-cloned', _.$slider).detach();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if ( _.$prevArrow && _.$prevArrow.length ) {\n\n            _.$prevArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.prevArrow )) {\n                _.$prevArrow.remove();\n            }\n        }\n\n        if ( _.$nextArrow && _.$nextArrow.length ) {\n\n            _.$nextArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.nextArrow )) {\n                _.$nextArrow.remove();\n            }\n        }\n\n\n        if (_.$slides) {\n\n            _.$slides\n                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n                .removeAttr('aria-hidden')\n                .removeAttr('data-slick-index')\n                .each(function(){\n                    $(this).attr('style', $(this).data('originalStyling'));\n                });\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slideTrack.detach();\n\n            _.$list.detach();\n\n            _.$slider.append(_.$slides);\n        }\n\n        _.cleanUpRows();\n\n        _.$slider.removeClass('slick-slider');\n        _.$slider.removeClass('slick-initialized');\n        _.$slider.removeClass('slick-dotted');\n\n        _.unslicked = true;\n\n        if(!refresh) {\n            _.$slider.trigger('destroy', [_]);\n        }\n\n    };\n\n    Slick.prototype.disableTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        transition[_.transitionType] = '';\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).css({\n                zIndex: _.options.zIndex\n            });\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 1\n            }, _.options.speed, _.options.easing, callback);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 1,\n                zIndex: _.options.zIndex\n            });\n\n            if (callback) {\n                setTimeout(function() {\n\n                    _.disableTransition(slideIndex);\n\n                    callback.call();\n                }, _.options.speed);\n            }\n\n        }\n\n    };\n\n    Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            }, _.options.speed, _.options.easing);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            });\n\n        }\n\n    };\n\n    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n        var _ = this;\n\n        if (filter !== null) {\n\n            _.$slidesCache = _.$slides;\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.focusHandler = function() {\n\n        var _ = this;\n\n        _.$slider\n            .off('focus.slick blur.slick')\n            .on('focus.slick blur.slick', '*', function(event) {\n\n            event.stopImmediatePropagation();\n            var $sf = $(this);\n\n            setTimeout(function() {\n\n                if( _.options.pauseOnFocus ) {\n                    _.focussed = $sf.is(':focus');\n                    _.autoPlay();\n                }\n\n            }, 0);\n\n        });\n    };\n\n    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n        var _ = this;\n        return _.currentSlide;\n\n    };\n\n    Slick.prototype.getDotCount = function() {\n\n        var _ = this;\n\n        var breakPoint = 0;\n        var counter = 0;\n        var pagerQty = 0;\n\n        if (_.options.infinite === true) {\n            if (_.slideCount <= _.options.slidesToShow) {\n                 ++pagerQty;\n            } else {\n                while (breakPoint < _.slideCount) {\n                    ++pagerQty;\n                    breakPoint = counter + _.options.slidesToScroll;\n                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n                }\n            }\n        } else if (_.options.centerMode === true) {\n            pagerQty = _.slideCount;\n        } else if(!_.options.asNavFor) {\n            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n        }else {\n            while (breakPoint < _.slideCount) {\n                ++pagerQty;\n                breakPoint = counter + _.options.slidesToScroll;\n                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n            }\n        }\n\n        return pagerQty - 1;\n\n    };\n\n    Slick.prototype.getLeft = function(slideIndex) {\n\n        var _ = this,\n            targetLeft,\n            verticalHeight,\n            verticalOffset = 0,\n            targetSlide,\n            coef;\n\n        _.slideOffset = 0;\n        verticalHeight = _.$slides.first().outerHeight(true);\n\n        if (_.options.infinite === true) {\n            if (_.slideCount > _.options.slidesToShow) {\n                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n                coef = -1\n\n                if (_.options.vertical === true && _.options.centerMode === true) {\n                    if (_.options.slidesToShow === 2) {\n                        coef = -1.5;\n                    } else if (_.options.slidesToShow === 1) {\n                        coef = -2\n                    }\n                }\n                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n            }\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n                    if (slideIndex > _.slideCount) {\n                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n                    } else {\n                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n                    }\n                }\n            }\n        } else {\n            if (slideIndex + _.options.slidesToShow > _.slideCount) {\n                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n            }\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = 0;\n            verticalOffset = 0;\n        }\n\n        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n        } else if (_.options.centerMode === true && _.options.infinite === true) {\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n        } else if (_.options.centerMode === true) {\n            _.slideOffset = 0;\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n        }\n\n        if (_.options.vertical === false) {\n            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n        } else {\n            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n        }\n\n        if (_.options.variableWidth === true) {\n\n            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n            } else {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n            }\n\n            if (_.options.rtl === true) {\n                if (targetSlide[0]) {\n                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                } else {\n                    targetLeft =  0;\n                }\n            } else {\n                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n            }\n\n            if (_.options.centerMode === true) {\n                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n                } else {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n                }\n\n                if (_.options.rtl === true) {\n                    if (targetSlide[0]) {\n                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                    } else {\n                        targetLeft =  0;\n                    }\n                } else {\n                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n                }\n\n                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n            }\n        }\n\n        return targetLeft;\n\n    };\n\n    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n        var _ = this;\n\n        return _.options[option];\n\n    };\n\n    Slick.prototype.getNavigableIndexes = function() {\n\n        var _ = this,\n            breakPoint = 0,\n            counter = 0,\n            indexes = [],\n            max;\n\n        if (_.options.infinite === false) {\n            max = _.slideCount;\n        } else {\n            breakPoint = _.options.slidesToScroll * -1;\n            counter = _.options.slidesToScroll * -1;\n            max = _.slideCount * 2;\n        }\n\n        while (breakPoint < max) {\n            indexes.push(breakPoint);\n            breakPoint = counter + _.options.slidesToScroll;\n            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n        }\n\n        return indexes;\n\n    };\n\n    Slick.prototype.getSlick = function() {\n\n        return this;\n\n    };\n\n    Slick.prototype.getSlideCount = function() {\n\n        var _ = this,\n            slidesTraversed, swipedSlide, centerOffset;\n\n        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n        if (_.options.swipeToSlide === true) {\n            _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n                    swipedSlide = slide;\n                    return false;\n                }\n            });\n\n            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n            return slidesTraversed;\n\n        } else {\n            return _.options.slidesToScroll;\n        }\n\n    };\n\n    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'index',\n                index: parseInt(slide)\n            }\n        }, dontAnimate);\n\n    };\n\n    Slick.prototype.init = function(creation) {\n\n        var _ = this;\n\n        if (!$(_.$slider).hasClass('slick-initialized')) {\n\n            $(_.$slider).addClass('slick-initialized');\n\n            _.buildRows();\n            _.buildOut();\n            _.setProps();\n            _.startLoad();\n            _.loadSlider();\n            _.initializeEvents();\n            _.updateArrows();\n            _.updateDots();\n            _.checkResponsive(true);\n            _.focusHandler();\n\n        }\n\n        if (creation) {\n            _.$slider.trigger('init', [_]);\n        }\n\n        if (_.options.accessibility === true) {\n            _.initADA();\n        }\n\n        if ( _.options.autoplay ) {\n\n            _.paused = false;\n            _.autoPlay();\n\n        }\n\n    };\n\n    Slick.prototype.initADA = function() {\n        var _ = this,\n                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n                    return (val >= 0) && (val < _.slideCount);\n                });\n\n        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n            'aria-hidden': 'true',\n            'tabindex': '-1'\n        }).find('a, input, button, select').attr({\n            'tabindex': '-1'\n        });\n\n        if (_.$dots !== null) {\n            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n                var slideControlIndex = tabControlIndexes.indexOf(i);\n\n                $(this).attr({\n                    'role': 'tabpanel',\n                    'id': 'slick-slide' + _.instanceUid + i,\n                    'tabindex': -1\n                });\n\n                if (slideControlIndex !== -1) {\n                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n                   if ($('#' + ariaButtonControl).length) {\n                     $(this).attr({\n                         'aria-describedby': ariaButtonControl\n                     });\n                   }\n                }\n            });\n\n            _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n                var mappedSlideIndex = tabControlIndexes[i];\n\n                $(this).attr({\n                    'role': 'presentation'\n                });\n\n                $(this).find('button').first().attr({\n                    'role': 'tab',\n                    'id': 'slick-slide-control' + _.instanceUid + i,\n                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n                    'aria-label': (i + 1) + ' of ' + numDotGroups,\n                    'aria-selected': null,\n                    'tabindex': '-1'\n                });\n\n            }).eq(_.currentSlide).find('button').attr({\n                'aria-selected': 'true',\n                'tabindex': '0'\n            }).end();\n        }\n\n        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n          if (_.options.focusOnChange) {\n            _.$slides.eq(i).attr({'tabindex': '0'});\n          } else {\n            _.$slides.eq(i).removeAttr('tabindex');\n          }\n        }\n\n        _.activateADA();\n\n    };\n\n    Slick.prototype.initArrowEvents = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'previous'\n               }, _.changeSlide);\n            _.$nextArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'next'\n               }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow.on('keydown.slick', _.keyHandler);\n                _.$nextArrow.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n    };\n\n    Slick.prototype.initDotEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n            $('li', _.$dots).on('click.slick', {\n                message: 'index'\n            }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$dots.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n            $('li', _.$dots)\n                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initSlideEvents = function() {\n\n        var _ = this;\n\n        if ( _.options.pauseOnHover ) {\n\n            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initializeEvents = function() {\n\n        var _ = this;\n\n        _.initArrowEvents();\n\n        _.initDotEvents();\n        _.initSlideEvents();\n\n        _.$list.on('touchstart.slick mousedown.slick', {\n            action: 'start'\n        }, _.swipeHandler);\n        _.$list.on('touchmove.slick mousemove.slick', {\n            action: 'move'\n        }, _.swipeHandler);\n        _.$list.on('touchend.slick mouseup.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n        _.$list.on('touchcancel.slick mouseleave.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n\n        _.$list.on('click.slick', _.clickHandler);\n\n        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n        if (_.options.accessibility === true) {\n            _.$list.on('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n        $(_.setPosition);\n\n    };\n\n    Slick.prototype.initUI = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.show();\n            _.$nextArrow.show();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.show();\n\n        }\n\n    };\n\n    Slick.prototype.keyHandler = function(event) {\n\n        var _ = this;\n         //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n            if (event.keyCode === 37 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'next' :  'previous'\n                    }\n                });\n            } else if (event.keyCode === 39 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'previous' : 'next'\n                    }\n                });\n            }\n        }\n\n    };\n\n    Slick.prototype.lazyLoad = function() {\n\n        var _ = this,\n            loadRange, cloneRange, rangeStart, rangeEnd;\n\n        function loadImages(imagesScope) {\n\n            $('img[data-lazy]', imagesScope).each(function() {\n\n                var image = $(this),\n                    imageSource = $(this).attr('data-lazy'),\n                    imageSrcSet = $(this).attr('data-srcset'),\n                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n                    imageToLoad = document.createElement('img');\n\n                imageToLoad.onload = function() {\n\n                    image\n                        .animate({ opacity: 0 }, 100, function() {\n\n                            if (imageSrcSet) {\n                                image\n                                    .attr('srcset', imageSrcSet );\n\n                                if (imageSizes) {\n                                    image\n                                        .attr('sizes', imageSizes );\n                                }\n                            }\n\n                            image\n                                .attr('src', imageSource)\n                                .animate({ opacity: 1 }, 200, function() {\n                                    image\n                                        .removeAttr('data-lazy data-srcset data-sizes')\n                                        .removeClass('slick-loading');\n                                });\n                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n                        });\n\n                };\n\n                imageToLoad.onerror = function() {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                };\n\n                imageToLoad.src = imageSource;\n\n            });\n\n        }\n\n        if (_.options.centerMode === true) {\n            if (_.options.infinite === true) {\n                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n                rangeEnd = rangeStart + _.options.slidesToShow + 2;\n            } else {\n                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n            }\n        } else {\n            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n            if (_.options.fade === true) {\n                if (rangeStart > 0) rangeStart--;\n                if (rangeEnd <= _.slideCount) rangeEnd++;\n            }\n        }\n\n        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n        if (_.options.lazyLoad === 'anticipated') {\n            var prevSlide = rangeStart - 1,\n                nextSlide = rangeEnd,\n                $slides = _.$slider.find('.slick-slide');\n\n            for (var i = 0; i < _.options.slidesToScroll; i++) {\n                if (prevSlide < 0) prevSlide = _.slideCount - 1;\n                loadRange = loadRange.add($slides.eq(prevSlide));\n                loadRange = loadRange.add($slides.eq(nextSlide));\n                prevSlide--;\n                nextSlide++;\n            }\n        }\n\n        loadImages(loadRange);\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-slide');\n            loadImages(cloneRange);\n        } else\n        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n            loadImages(cloneRange);\n        } else if (_.currentSlide === 0) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n            loadImages(cloneRange);\n        }\n\n    };\n\n    Slick.prototype.loadSlider = function() {\n\n        var _ = this;\n\n        _.setPosition();\n\n        _.$slideTrack.css({\n            opacity: 1\n        });\n\n        _.$slider.removeClass('slick-loading');\n\n        _.initUI();\n\n        if (_.options.lazyLoad === 'progressive') {\n            _.progressiveLazyLoad();\n        }\n\n    };\n\n    Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'next'\n            }\n        });\n\n    };\n\n    Slick.prototype.orientationChange = function() {\n\n        var _ = this;\n\n        _.checkResponsive();\n        _.setPosition();\n\n    };\n\n    Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n        _.paused = true;\n\n    };\n\n    Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n        var _ = this;\n\n        _.autoPlay();\n        _.options.autoplay = true;\n        _.paused = false;\n        _.focussed = false;\n        _.interrupted = false;\n\n    };\n\n    Slick.prototype.postSlide = function(index) {\n\n        var _ = this;\n\n        if( !_.unslicked ) {\n\n            _.$slider.trigger('afterChange', [_, index]);\n\n            _.animating = false;\n\n            if (_.slideCount > _.options.slidesToShow) {\n                _.setPosition();\n            }\n\n            _.swipeLeft = null;\n\n            if ( _.options.autoplay ) {\n                _.autoPlay();\n            }\n\n            if (_.options.accessibility === true) {\n                _.initADA();\n\n                if (_.options.focusOnChange) {\n                    var $currentSlide = $(_.$slides.get(_.currentSlide));\n                    $currentSlide.attr('tabindex', 0).focus();\n                }\n            }\n\n        }\n\n    };\n\n    Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'previous'\n            }\n        });\n\n    };\n\n    Slick.prototype.preventDefault = function(event) {\n\n        event.preventDefault();\n\n    };\n\n    Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n        tryCount = tryCount || 1;\n\n        var _ = this,\n            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n            image,\n            imageSource,\n            imageSrcSet,\n            imageSizes,\n            imageToLoad;\n\n        if ( $imgsToLoad.length ) {\n\n            image = $imgsToLoad.first();\n            imageSource = image.attr('data-lazy');\n            imageSrcSet = image.attr('data-srcset');\n            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n            imageToLoad = document.createElement('img');\n\n            imageToLoad.onload = function() {\n\n                if (imageSrcSet) {\n                    image\n                        .attr('srcset', imageSrcSet );\n\n                    if (imageSizes) {\n                        image\n                            .attr('sizes', imageSizes );\n                    }\n                }\n\n                image\n                    .attr( 'src', imageSource )\n                    .removeAttr('data-lazy data-srcset data-sizes')\n                    .removeClass('slick-loading');\n\n                if ( _.options.adaptiveHeight === true ) {\n                    _.setPosition();\n                }\n\n                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n                _.progressiveLazyLoad();\n\n            };\n\n            imageToLoad.onerror = function() {\n\n                if ( tryCount < 3 ) {\n\n                    /**\n                     * try to load the image 3 times,\n                     * leave a slight delay so we don't get\n                     * servers blocking the request.\n                     */\n                    setTimeout( function() {\n                        _.progressiveLazyLoad( tryCount + 1 );\n                    }, 500 );\n\n                } else {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                    _.progressiveLazyLoad();\n\n                }\n\n            };\n\n            imageToLoad.src = imageSource;\n\n        } else {\n\n            _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n        }\n\n    };\n\n    Slick.prototype.refresh = function( initializing ) {\n\n        var _ = this, currentSlide, lastVisibleIndex;\n\n        lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n        // in non-infinite sliders, we don't want to go past the\n        // last visible index.\n        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n            _.currentSlide = lastVisibleIndex;\n        }\n\n        // if less slides than to show, go to start.\n        if ( _.slideCount <= _.options.slidesToShow ) {\n            _.currentSlide = 0;\n\n        }\n\n        currentSlide = _.currentSlide;\n\n        _.destroy(true);\n\n        $.extend(_, _.initials, { currentSlide: currentSlide });\n\n        _.init();\n\n        if( !initializing ) {\n\n            _.changeSlide({\n                data: {\n                    message: 'index',\n                    index: currentSlide\n                }\n            }, false);\n\n        }\n\n    };\n\n    Slick.prototype.registerBreakpoints = function() {\n\n        var _ = this, breakpoint, currentBreakpoint, l,\n            responsiveSettings = _.options.responsive || null;\n\n        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n            _.respondTo = _.options.respondTo || 'window';\n\n            for ( breakpoint in responsiveSettings ) {\n\n                l = _.breakpoints.length-1;\n\n                if (responsiveSettings.hasOwnProperty(breakpoint)) {\n                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n                    // loop through the breakpoints and cut out any existing\n                    // ones with the same breakpoint number, we don't want dupes.\n                    while( l >= 0 ) {\n                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n                            _.breakpoints.splice(l,1);\n                        }\n                        l--;\n                    }\n\n                    _.breakpoints.push(currentBreakpoint);\n                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n                }\n\n            }\n\n            _.breakpoints.sort(function(a, b) {\n                return ( _.options.mobileFirst ) ? a-b : b-a;\n            });\n\n        }\n\n    };\n\n    Slick.prototype.reinit = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slideTrack\n                .children(_.options.slide)\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n            _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.currentSlide = 0;\n        }\n\n        _.registerBreakpoints();\n\n        _.setProps();\n        _.setupInfinite();\n        _.buildArrows();\n        _.updateArrows();\n        _.initArrowEvents();\n        _.buildDots();\n        _.updateDots();\n        _.initDotEvents();\n        _.cleanUpSlideEvents();\n        _.initSlideEvents();\n\n        _.checkResponsive(false, true);\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        _.setPosition();\n        _.focusHandler();\n\n        _.paused = !_.options.autoplay;\n        _.autoPlay();\n\n        _.$slider.trigger('reInit', [_]);\n\n    };\n\n    Slick.prototype.resize = function() {\n\n        var _ = this;\n\n        if ($(window).width() !== _.windowWidth) {\n            clearTimeout(_.windowDelay);\n            _.windowDelay = window.setTimeout(function() {\n                _.windowWidth = $(window).width();\n                _.checkResponsive();\n                if( !_.unslicked ) { _.setPosition(); }\n            }, 50);\n        }\n    };\n\n    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            removeBefore = index;\n            index = removeBefore === true ? 0 : _.slideCount - 1;\n        } else {\n            index = removeBefore === true ? --index : index;\n        }\n\n        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n            return false;\n        }\n\n        _.unload();\n\n        if (removeAll === true) {\n            _.$slideTrack.children().remove();\n        } else {\n            _.$slideTrack.children(this.options.slide).eq(index).remove();\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.setCSS = function(position) {\n\n        var _ = this,\n            positionProps = {},\n            x, y;\n\n        if (_.options.rtl === true) {\n            position = -position;\n        }\n        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n        positionProps[_.positionProp] = position;\n\n        if (_.transformsEnabled === false) {\n            _.$slideTrack.css(positionProps);\n        } else {\n            positionProps = {};\n            if (_.cssTransitions === false) {\n                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n                _.$slideTrack.css(positionProps);\n            } else {\n                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n                _.$slideTrack.css(positionProps);\n            }\n        }\n\n    };\n\n    Slick.prototype.setDimensions = function() {\n\n        var _ = this;\n\n        if (_.options.vertical === false) {\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: ('0px ' + _.options.centerPadding)\n                });\n            }\n        } else {\n            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: (_.options.centerPadding + ' 0px')\n                });\n            }\n        }\n\n        _.listWidth = _.$list.width();\n        _.listHeight = _.$list.height();\n\n\n        if (_.options.vertical === false && _.options.variableWidth === false) {\n            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n        } else if (_.options.variableWidth === true) {\n            _.$slideTrack.width(5000 * _.slideCount);\n        } else {\n            _.slideWidth = Math.ceil(_.listWidth);\n            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n        }\n\n        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n    };\n\n    Slick.prototype.setFade = function() {\n\n        var _ = this,\n            targetLeft;\n\n        _.$slides.each(function(index, element) {\n            targetLeft = (_.slideWidth * index) * -1;\n            if (_.options.rtl === true) {\n                $(element).css({\n                    position: 'relative',\n                    right: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            } else {\n                $(element).css({\n                    position: 'relative',\n                    left: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            }\n        });\n\n        _.$slides.eq(_.currentSlide).css({\n            zIndex: _.options.zIndex - 1,\n            opacity: 1\n        });\n\n    };\n\n    Slick.prototype.setHeight = function() {\n\n        var _ = this;\n\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.css('height', targetHeight);\n        }\n\n    };\n\n    Slick.prototype.setOption =\n    Slick.prototype.slickSetOption = function() {\n\n        /**\n         * accepts arguments in format of:\n         *\n         *  - for changing a single option's value:\n         *     .slick(\"setOption\", option, value, refresh )\n         *\n         *  - for changing a set of responsive options:\n         *     .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n         *\n         *  - for updating multiple values at once (not responsive)\n         *     .slick(\"setOption\", { 'option': value, ... }, refresh )\n         */\n\n        var _ = this, l, item, option, value, refresh = false, type;\n\n        if( $.type( arguments[0] ) === 'object' ) {\n\n            option =  arguments[0];\n            refresh = arguments[1];\n            type = 'multiple';\n\n        } else if ( $.type( arguments[0] ) === 'string' ) {\n\n            option =  arguments[0];\n            value = arguments[1];\n            refresh = arguments[2];\n\n            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n                type = 'responsive';\n\n            } else if ( typeof arguments[1] !== 'undefined' ) {\n\n                type = 'single';\n\n            }\n\n        }\n\n        if ( type === 'single' ) {\n\n            _.options[option] = value;\n\n\n        } else if ( type === 'multiple' ) {\n\n            $.each( option , function( opt, val ) {\n\n                _.options[opt] = val;\n\n            });\n\n\n        } else if ( type === 'responsive' ) {\n\n            for ( item in value ) {\n\n                if( $.type( _.options.responsive ) !== 'array' ) {\n\n                    _.options.responsive = [ value[item] ];\n\n                } else {\n\n                    l = _.options.responsive.length-1;\n\n                    // loop through the responsive object and splice out duplicates.\n                    while( l >= 0 ) {\n\n                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n                            _.options.responsive.splice(l,1);\n\n                        }\n\n                        l--;\n\n                    }\n\n                    _.options.responsive.push( value[item] );\n\n                }\n\n            }\n\n        }\n\n        if ( refresh ) {\n\n            _.unload();\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.setPosition = function() {\n\n        var _ = this;\n\n        _.setDimensions();\n\n        _.setHeight();\n\n        if (_.options.fade === false) {\n            _.setCSS(_.getLeft(_.currentSlide));\n        } else {\n            _.setFade();\n        }\n\n        _.$slider.trigger('setPosition', [_]);\n\n    };\n\n    Slick.prototype.setProps = function() {\n\n        var _ = this,\n            bodyStyle = document.body.style;\n\n        _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n        if (_.positionProp === 'top') {\n            _.$slider.addClass('slick-vertical');\n        } else {\n            _.$slider.removeClass('slick-vertical');\n        }\n\n        if (bodyStyle.WebkitTransition !== undefined ||\n            bodyStyle.MozTransition !== undefined ||\n            bodyStyle.msTransition !== undefined) {\n            if (_.options.useCSS === true) {\n                _.cssTransitions = true;\n            }\n        }\n\n        if ( _.options.fade ) {\n            if ( typeof _.options.zIndex === 'number' ) {\n                if( _.options.zIndex < 3 ) {\n                    _.options.zIndex = 3;\n                }\n            } else {\n                _.options.zIndex = _.defaults.zIndex;\n            }\n        }\n\n        if (bodyStyle.OTransform !== undefined) {\n            _.animType = 'OTransform';\n            _.transformType = '-o-transform';\n            _.transitionType = 'OTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.MozTransform !== undefined) {\n            _.animType = 'MozTransform';\n            _.transformType = '-moz-transform';\n            _.transitionType = 'MozTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.webkitTransform !== undefined) {\n            _.animType = 'webkitTransform';\n            _.transformType = '-webkit-transform';\n            _.transitionType = 'webkitTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.msTransform !== undefined) {\n            _.animType = 'msTransform';\n            _.transformType = '-ms-transform';\n            _.transitionType = 'msTransition';\n            if (bodyStyle.msTransform === undefined) _.animType = false;\n        }\n        if (bodyStyle.transform !== undefined && _.animType !== false) {\n            _.animType = 'transform';\n            _.transformType = 'transform';\n            _.transitionType = 'transition';\n        }\n        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n    };\n\n\n    Slick.prototype.setSlideClasses = function(index) {\n\n        var _ = this,\n            centerOffset, allSlides, indexOffset, remainder;\n\n        allSlides = _.$slider\n            .find('.slick-slide')\n            .removeClass('slick-active slick-center slick-current')\n            .attr('aria-hidden', 'true');\n\n        _.$slides\n            .eq(index)\n            .addClass('slick-current');\n\n        if (_.options.centerMode === true) {\n\n            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n            centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n            if (_.options.infinite === true) {\n\n                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n                    _.$slides\n                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    indexOffset = _.options.slidesToShow + index;\n                    allSlides\n                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n                if (index === 0) {\n\n                    allSlides\n                        .eq(allSlides.length - 1 - _.options.slidesToShow)\n                        .addClass('slick-center');\n\n                } else if (index === _.slideCount - 1) {\n\n                    allSlides\n                        .eq(_.options.slidesToShow)\n                        .addClass('slick-center');\n\n                }\n\n            }\n\n            _.$slides\n                .eq(index)\n                .addClass('slick-center');\n\n        } else {\n\n            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n                _.$slides\n                    .slice(index, index + _.options.slidesToShow)\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else if (allSlides.length <= _.options.slidesToShow) {\n\n                allSlides\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else {\n\n                remainder = _.slideCount % _.options.slidesToShow;\n                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n                    allSlides\n                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    allSlides\n                        .slice(indexOffset, indexOffset + _.options.slidesToShow)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n            }\n\n        }\n\n        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n            _.lazyLoad();\n        }\n    };\n\n    Slick.prototype.setupInfinite = function() {\n\n        var _ = this,\n            i, slideIndex, infiniteCount;\n\n        if (_.options.fade === true) {\n            _.options.centerMode = false;\n        }\n\n        if (_.options.infinite === true && _.options.fade === false) {\n\n            slideIndex = null;\n\n            if (_.slideCount > _.options.slidesToShow) {\n\n                if (_.options.centerMode === true) {\n                    infiniteCount = _.options.slidesToShow + 1;\n                } else {\n                    infiniteCount = _.options.slidesToShow;\n                }\n\n                for (i = _.slideCount; i > (_.slideCount -\n                        infiniteCount); i -= 1) {\n                    slideIndex = i - 1;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex - _.slideCount)\n                        .prependTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {\n                    slideIndex = i;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex + _.slideCount)\n                        .appendTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n                    $(this).attr('id', '');\n                });\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.interrupt = function( toggle ) {\n\n        var _ = this;\n\n        if( !toggle ) {\n            _.autoPlay();\n        }\n        _.interrupted = toggle;\n\n    };\n\n    Slick.prototype.selectHandler = function(event) {\n\n        var _ = this;\n\n        var targetElement =\n            $(event.target).is('.slick-slide') ?\n                $(event.target) :\n                $(event.target).parents('.slick-slide');\n\n        var index = parseInt(targetElement.attr('data-slick-index'));\n\n        if (!index) index = 0;\n\n        if (_.slideCount <= _.options.slidesToShow) {\n\n            _.slideHandler(index, false, true);\n            return;\n\n        }\n\n        _.slideHandler(index);\n\n    };\n\n    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n            _ = this, navTarget;\n\n        sync = sync || false;\n\n        if (_.animating === true && _.options.waitForAnimate === true) {\n            return;\n        }\n\n        if (_.options.fade === true && _.currentSlide === index) {\n            return;\n        }\n\n        if (sync === false) {\n            _.asNavFor(index);\n        }\n\n        targetSlide = index;\n        targetLeft = _.getLeft(targetSlide);\n        slideLeft = _.getLeft(_.currentSlide);\n\n        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        }\n\n        if ( _.options.autoplay ) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n        if (targetSlide < 0) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n            } else {\n                animSlide = _.slideCount + targetSlide;\n            }\n        } else if (targetSlide >= _.slideCount) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = 0;\n            } else {\n                animSlide = targetSlide - _.slideCount;\n            }\n        } else {\n            animSlide = targetSlide;\n        }\n\n        _.animating = true;\n\n        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n        oldSlide = _.currentSlide;\n        _.currentSlide = animSlide;\n\n        _.setSlideClasses(_.currentSlide);\n\n        if ( _.options.asNavFor ) {\n\n            navTarget = _.getNavTarget();\n            navTarget = navTarget.slick('getSlick');\n\n            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n                navTarget.setSlideClasses(_.currentSlide);\n            }\n\n        }\n\n        _.updateDots();\n        _.updateArrows();\n\n        if (_.options.fade === true) {\n            if (dontAnimate !== true) {\n\n                _.fadeSlideOut(oldSlide);\n\n                _.fadeSlide(animSlide, function() {\n                    _.postSlide(animSlide);\n                });\n\n            } else {\n                _.postSlide(animSlide);\n            }\n            _.animateHeight();\n            return;\n        }\n\n        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n            _.animateSlide(targetLeft, function() {\n                _.postSlide(animSlide);\n            });\n        } else {\n            _.postSlide(animSlide);\n        }\n\n    };\n\n    Slick.prototype.startLoad = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.hide();\n            _.$nextArrow.hide();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.hide();\n\n        }\n\n        _.$slider.addClass('slick-loading');\n\n    };\n\n    Slick.prototype.swipeDirection = function() {\n\n        var xDist, yDist, r, swipeAngle, _ = this;\n\n        xDist = _.touchObject.startX - _.touchObject.curX;\n        yDist = _.touchObject.startY - _.touchObject.curY;\n        r = Math.atan2(yDist, xDist);\n\n        swipeAngle = Math.round(r * 180 / Math.PI);\n        if (swipeAngle < 0) {\n            swipeAngle = 360 - Math.abs(swipeAngle);\n        }\n\n        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n            return (_.options.rtl === false ? 'right' : 'left');\n        }\n        if (_.options.verticalSwiping === true) {\n            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n                return 'down';\n            } else {\n                return 'up';\n            }\n        }\n\n        return 'vertical';\n\n    };\n\n    Slick.prototype.swipeEnd = function(event) {\n\n        var _ = this,\n            slideCount,\n            direction;\n\n        _.dragging = false;\n        _.swiping = false;\n\n        if (_.scrolling) {\n            _.scrolling = false;\n            return false;\n        }\n\n        _.interrupted = false;\n        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n        if ( _.touchObject.curX === undefined ) {\n            return false;\n        }\n\n        if ( _.touchObject.edgeHit === true ) {\n            _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n        }\n\n        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n            direction = _.swipeDirection();\n\n            switch ( direction ) {\n\n                case 'left':\n                case 'down':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n                            _.currentSlide + _.getSlideCount();\n\n                    _.currentDirection = 0;\n\n                    break;\n\n                case 'right':\n                case 'up':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n                            _.currentSlide - _.getSlideCount();\n\n                    _.currentDirection = 1;\n\n                    break;\n\n                default:\n\n\n            }\n\n            if( direction != 'vertical' ) {\n\n                _.slideHandler( slideCount );\n                _.touchObject = {};\n                _.$slider.trigger('swipe', [_, direction ]);\n\n            }\n\n        } else {\n\n            if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n                _.slideHandler( _.currentSlide );\n                _.touchObject = {};\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.swipeHandler = function(event) {\n\n        var _ = this;\n\n        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n            return;\n        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n            return;\n        }\n\n        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n            event.originalEvent.touches.length : 1;\n\n        _.touchObject.minSwipe = _.listWidth / _.options\n            .touchThreshold;\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.minSwipe = _.listHeight / _.options\n                .touchThreshold;\n        }\n\n        switch (event.data.action) {\n\n            case 'start':\n                _.swipeStart(event);\n                break;\n\n            case 'move':\n                _.swipeMove(event);\n                break;\n\n            case 'end':\n                _.swipeEnd(event);\n                break;\n\n        }\n\n    };\n\n    Slick.prototype.swipeMove = function(event) {\n\n        var _ = this,\n            edgeWasHit = false,\n            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n            return false;\n        }\n\n        curLeft = _.getLeft(_.currentSlide);\n\n        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n        _.touchObject.swipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n        verticalSwipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n            _.scrolling = true;\n            return false;\n        }\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.swipeLength = verticalSwipeLength;\n        }\n\n        swipeDirection = _.swipeDirection();\n\n        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n            _.swiping = true;\n            event.preventDefault();\n        }\n\n        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n        if (_.options.verticalSwiping === true) {\n            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n        }\n\n\n        swipeLength = _.touchObject.swipeLength;\n\n        _.touchObject.edgeHit = false;\n\n        if (_.options.infinite === false) {\n            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n                _.touchObject.edgeHit = true;\n            }\n        }\n\n        if (_.options.vertical === false) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        } else {\n            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n        }\n        if (_.options.verticalSwiping === true) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        }\n\n        if (_.options.fade === true || _.options.touchMove === false) {\n            return false;\n        }\n\n        if (_.animating === true) {\n            _.swipeLeft = null;\n            return false;\n        }\n\n        _.setCSS(_.swipeLeft);\n\n    };\n\n    Slick.prototype.swipeStart = function(event) {\n\n        var _ = this,\n            touches;\n\n        _.interrupted = true;\n\n        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n            _.touchObject = {};\n            return false;\n        }\n\n        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n            touches = event.originalEvent.touches[0];\n        }\n\n        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n        _.dragging = true;\n\n    };\n\n    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n        var _ = this;\n\n        if (_.$slidesCache !== null) {\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.unload = function() {\n\n        var _ = this;\n\n        $('.slick-cloned', _.$slider).remove();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n            _.$prevArrow.remove();\n        }\n\n        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n            _.$nextArrow.remove();\n        }\n\n        _.$slides\n            .removeClass('slick-slide slick-active slick-visible slick-current')\n            .attr('aria-hidden', 'true')\n            .css('width', '');\n\n    };\n\n    Slick.prototype.unslick = function(fromBreakpoint) {\n\n        var _ = this;\n        _.$slider.trigger('unslick', [_, fromBreakpoint]);\n        _.destroy();\n\n    };\n\n    Slick.prototype.updateArrows = function() {\n\n        var _ = this,\n            centerOffset;\n\n        centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n        if ( _.options.arrows === true &&\n            _.slideCount > _.options.slidesToShow &&\n            !_.options.infinite ) {\n\n            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            if (_.currentSlide === 0) {\n\n                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.updateDots = function() {\n\n        var _ = this;\n\n        if (_.$dots !== null) {\n\n            _.$dots\n                .find('li')\n                    .removeClass('slick-active')\n                    .end();\n\n            _.$dots\n                .find('li')\n                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n                .addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.visibility = function() {\n\n        var _ = this;\n\n        if ( _.options.autoplay ) {\n\n            if ( document[_.hidden] ) {\n\n                _.interrupted = true;\n\n            } else {\n\n                _.interrupted = false;\n\n            }\n\n        }\n\n    };\n\n    $.fn.slick = function() {\n        var _ = this,\n            opt = arguments[0],\n            args = Array.prototype.slice.call(arguments, 1),\n            l = _.length,\n            i,\n            ret;\n        for (i = 0; i < l; i++) {\n            if (typeof opt == 'object' || typeof opt == 'undefined')\n                _[i].slick = new Slick(_[i], opt);\n            else\n                ret = _[i].slick[opt].apply(_[i].slick, args);\n            if (typeof ret != 'undefined') return ret;\n        }\n        return _;\n    };\n\n}));\n\n\n\njQuery(document).ready(function($) {\n\n\n    // ===== GLOBAL HELPERS\n    // ==========================================\n    var global_helpers = {\n\n        settings: {\n            body: $('body'),\n            header: $('header'),\n            hash: window.location.hash,\n            scroll_to_form: $('.js-scroll-to-form'),\n        },\n\n        init: function() {\n            // Scroll to a hash if there is one\n            if (this.settings.hash.length) {\n                setTimeout(function() {\n                    global_helpers.scrollToHash();\n                }, 500);\n            }\n            this.bindUIActions();\n        },\n\n        bindUIActions: function() {\n            // Scroll to first form on click\n            this.settings.scroll_to_form.on('click', global_helpers.scrollToForm);\n        },\n\n        // Smooth scroll to first form on page\n        scrollToForm: function() {\n            // Find the first form on the page\n            var form = $('form').first().offset().top;\n            // Get the header height\n            var header = $('header').outerHeight();\n\n            // Scroll all the way up on desktop\n            if ($(window).width() < 960) {\n                var offset = form - header;\n            } else {\n                var offset = 0;\n            }\n            // Scroll to the desired form with offset\n            $('html, body').animate({\n                scrollTop: offset\n            });\n        },\n\n        // Smooth scroll to the hash content\n        scrollToHash: function() {\n            // Get the hashed target\n            var content = $(global_helpers.settings.hash);\n            // Get the current header height if on mobile\n            if ($(window).width() < 960) {\n                var header = global_helpers.settings.header.outerHeight();\n            } else {\n                var header = 0;\n            }\n            // Get the offset and add the header height\n            var offset = content.offset().top - header;\n            // Scroll to the desired content with offset\n            $('html, body').animate({\n                scrollTop: offset\n            });\n        },\n\n\t\t// Returns a function that, as long as it continues to be invoked, will not\n\t\t// be triggered. The function will be called after it stops being called for\n\t\t// N milliseconds. If 'immediate' is passed, trigger the function on the\n\t\t// leading edge, instead of the trailing.\n\t\t//\n\t\t// Use:  $(window).resize(global_helpers.debounce(function() { ...[your code here]... }, 500));\n\t\t// Source:  http://davidwalsh.name/javascript-debounce-function\n\t\tdebounce: function(func, wait, immediate) {\n\t\t\tvar timeout;\n\t\t\treturn function() {\n\t\t\t\tvar context = this, args = arguments;\n\t\t\t\tvar later = function() {\n\t\t\t\t\ttimeout = null;\n\t\t\t\t\tif(!immediate) { func.apply(context, args); }\n\t\t\t\t};\n\t\t\t\tvar callNow = immediate && !timeout;\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t\tif(callNow) { func.apply(context, args); }\n\t\t\t};\n        },\n    }\n    global_helpers.init();\n\n\n    // LANDING PAGE\n    // ===================================================\n\n    var landing_page = {\n\n        settings: {\n            hero_slider: $('.block-lp-hero .slider'),\n        },\n\n        init: function() {\n            // Hero Slider\n            if (this.settings.hero_slider.length) {\n                this.heroSlider();\n            }\n        },\n\n        // Hero Slider\n        heroSlider: function() {\n            \n            landing_page.settings.hero_slider.slick({\n                appendArrows: $('.block-lp-hero .controls'),\n                arrows: true,\n                autoplay: true,\n                autoplaySpeed: 7500,\n                fade: true,\n                dots: false,\n                pauseOnHover: false,\n                speed: 750,\n                nextArrow: '<div class=\"next\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12.28 23.14\"><polygon points=\"0.71 23.14 0 22.44 10.87 11.57 0 0.71 0.71 0 12.28 11.57 0.71 23.14\"/></svg></div>',\n                prevArrow: '<div class=\"prev\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12.28 23.14\"><polygon points=\"11.57 23.14 12.28 22.44 1.41 11.57 12.28 0.71 11.57 0 0 11.57 11.57 23.14\"/></svg></div>',\n            });\n\n        },\n\n    }\n    landing_page.init();\n\n});","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(window, function l(window, document) {\n\t'use strict';\n\t/*jshint eqnull:true */\n\tif(!document.getElementsByClassName){return;}\n\n\tvar lazysizes, lazySizesCfg;\n\n\tvar docElem = document.documentElement;\n\n\tvar Date = window.Date;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\tvar addEventListener = window[_addEventListener];\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth =  parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning =  true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\n\t\tsetTimeout(function(){\n\t\t\tif(lazySizesCfg.init){\n\t\t\t\tinit();\n\t\t\t}\n\t\t});\n\t})();\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || (getCSS(elem.parentNode, 'visibility') != 'hidden' && getCSS(elem, 'visibility') != 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\ttry {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} catch(e){\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, 'ls-is-cached');\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tlazysizes = {\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));","(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t'use strict';\n\tif(!window.addEventListener){return;}\n\n\tvar lazySizesCfg = lazySizes.cfg;\n\tvar regWhite = /\\s+/g;\n\tvar regSplitSet = /\\s*\\|\\s+|\\s+\\|\\s*/g;\n\tvar regSource = /^(.+?)(?:\\s+\\[\\s*(.+?)\\s*\\])(?:\\s+\\[\\s*(.+?)\\s*\\])?$/;\n\tvar regType = /^\\s*\\(*\\s*type\\s*:\\s*(.+?)\\s*\\)*\\s*$/;\n\tvar regBgUrlEscape = /\\(|\\)|'/;\n\tvar allowedBackgroundSize = {contain: 1, cover: 1};\n\tvar proxyWidth = function(elem){\n\t\tvar width = lazySizes.gW(elem, elem.parentNode);\n\n\t\tif(!elem._lazysizesWidth || width > elem._lazysizesWidth){\n\t\t\telem._lazysizesWidth = width;\n\t\t}\n\t\treturn elem._lazysizesWidth;\n\t};\n\tvar getBgSize = function(elem){\n\t\tvar bgSize;\n\n\t\tbgSize = (getComputedStyle(elem) || {getPropertyValue: function(){}}).getPropertyValue('background-size');\n\n\t\tif(!allowedBackgroundSize[bgSize] && allowedBackgroundSize[elem.style.backgroundSize]){\n\t\t\tbgSize = elem.style.backgroundSize;\n\t\t}\n\n\t\treturn bgSize;\n\t};\n\tvar setTypeOrMedia = function(source, match){\n\t\tif(match){\n\t\t\tvar typeMatch = match.match(regType);\n\t\t\tif(typeMatch && typeMatch[1]){\n\t\t\t\tsource.setAttribute('type', typeMatch[1]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute('media', lazySizesCfg.customMedia[match] || match);\n\t\t\t}\n\t\t}\n\t};\n\tvar createPicture = function(sets, elem, img){\n\t\tvar picture = document.createElement('picture');\n\t\tvar sizes = elem.getAttribute(lazySizesCfg.sizesAttr);\n\t\tvar ratio = elem.getAttribute('data-ratio');\n\t\tvar optimumx = elem.getAttribute('data-optimumx');\n\n\t\tif(elem._lazybgset && elem._lazybgset.parentNode == elem){\n\t\t\telem.removeChild(elem._lazybgset);\n\t\t}\n\n\t\tObject.defineProperty(img, '_lazybgset', {\n\t\t\tvalue: elem,\n\t\t\twritable: true\n\t\t});\n\t\tObject.defineProperty(elem, '_lazybgset', {\n\t\t\tvalue: picture,\n\t\t\twritable: true\n\t\t});\n\n\t\tsets = sets.replace(regWhite, ' ').split(regSplitSet);\n\n\t\tpicture.style.display = 'none';\n\t\timg.className = lazySizesCfg.lazyClass;\n\n\t\tif(sets.length == 1 && !sizes){\n\t\t\tsizes = 'auto';\n\t\t}\n\n\t\tsets.forEach(function(set){\n\t\t\tvar match;\n\t\t\tvar source = document.createElement('source');\n\n\t\t\tif(sizes && sizes != 'auto'){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tif((match = set.match(regSource))){\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, match[1]);\n\n\t\t\t\tsetTypeOrMedia(source, match[2]);\n\t\t\t\tsetTypeOrMedia(source, match[3]);\n\t\t\t} else {\n\t\t\t\tsource.setAttribute(lazySizesCfg.srcsetAttr, set);\n\t\t\t}\n\n\t\t\tpicture.appendChild(source);\n\t\t});\n\n\t\tif(sizes){\n\t\t\timg.setAttribute(lazySizesCfg.sizesAttr, sizes);\n\t\t\telem.removeAttribute(lazySizesCfg.sizesAttr);\n\t\t\telem.removeAttribute('sizes');\n\t\t}\n\t\tif(optimumx){\n\t\t\timg.setAttribute('data-optimumx', optimumx);\n\t\t}\n\t\tif(ratio) {\n\t\t\timg.setAttribute('data-ratio', ratio);\n\t\t}\n\n\t\tpicture.appendChild(img);\n\n\t\telem.appendChild(picture);\n\t};\n\n\tvar proxyLoad = function(e){\n\t\tif(!e.target._lazybgset){return;}\n\n\t\tvar image = e.target;\n\t\tvar elem = image._lazybgset;\n\t\tvar bg = image.currentSrc || image.src;\n\n\n\t\tif(bg){\n\t\t\tvar event = lazySizes.fire(elem, 'bgsetproxy', {\n\t\t\t\tsrc: bg,\n\t\t\t\tuseSrc: regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg,\n\t\t\t});\n\n\t\t\tif(!event.defaultPrevented){\n\t\t\t\telem.style.backgroundImage = 'url(' + event.detail.useSrc + ')';\n\t\t\t}\n\t\t}\n\n\t\tif(image._lazybgsetLoading){\n\t\t\tlazySizes.fire(elem, '_lazyloaded', {}, false, true);\n\t\t\tdelete image._lazybgsetLoading;\n\t\t}\n\t};\n\n\taddEventListener('lazybeforeunveil', function(e){\n\t\tvar set, image, elem;\n\n\t\tif(e.defaultPrevented || !(set = e.target.getAttribute('data-bgset'))){return;}\n\n\t\telem = e.target;\n\t\timage = document.createElement('img');\n\n\t\timage.alt = '';\n\n\t\timage._lazybgsetLoading = true;\n\t\te.detail.firesLoad = true;\n\n\t\tcreatePicture(set, elem, image);\n\n\t\tsetTimeout(function(){\n\t\t\tlazySizes.loader.unveil(image);\n\n\t\t\tlazySizes.rAF(function(){\n\t\t\t\tlazySizes.fire(image, '_lazyloaded', {}, true, true);\n\t\t\t\tif(image.complete) {\n\t\t\t\t\tproxyLoad({target: image});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t});\n\n\tdocument.addEventListener('load', proxyLoad, true);\n\n\twindow.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.detail.instance != lazySizes){return;}\n\t\tif(e.target._lazybgset && e.detail.dataAttr){\n\t\t\tvar elem = e.target._lazybgset;\n\t\t\tvar bgSize = getBgSize(elem);\n\n\t\t\tif(allowedBackgroundSize[bgSize]){\n\t\t\t\te.target._lazysizesParentFit = bgSize;\n\n\t\t\t\tlazySizes.rAF(function(){\n\t\t\t\t\te.target.setAttribute('data-parent-fit', bgSize);\n\t\t\t\t\tif(e.target._lazysizesParentFit){\n\t\t\t\t\t\tdelete e.target._lazysizesParentFit;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, true);\n\n\tdocument.documentElement.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || !e.target._lazybgset || e.detail.instance != lazySizes){return;}\n\t\te.detail.width = proxyWidth(e.target._lazybgset);\n\t});\n}));","(function(window, document, undefined){\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar polyfill;\n\tvar config = (window.lazySizes && lazySizes.cfg) || window.lazySizesConfig;\n\tvar img = document.createElement('img');\n\tvar supportSrcset = ('sizes' in img) && ('srcset' in img);\n\tvar regHDesc = /\\s+\\d+h/g;\n\tvar fixEdgeHDescriptor = (function(){\n\t\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\t\tvar forEach = Array.prototype.forEach;\n\n\t\treturn function(edgeMatch){\n\t\t\tvar img = document.createElement('img');\n\t\t\tvar removeHDescriptors = function(source){\n\t\t\t\tvar ratio;\n\t\t\t\tvar srcset = source.getAttribute(lazySizesConfig.srcsetAttr);\n\t\t\t\tif(srcset){\n\t\t\t\t\tif(srcset.match(regDescriptors)){\n\t\t\t\t\t\tif(RegExp.$2 == 'w'){\n\t\t\t\t\t\t\tratio = RegExp.$1 / RegExp.$3;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tratio = RegExp.$3 / RegExp.$1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(ratio){\n\t\t\t\t\t\t\tsource.setAttribute('data-aspectratio', ratio);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsource.setAttribute(lazySizesConfig.srcsetAttr, srcset.replace(regHDesc, ''));\n\t\t\t\t}\n\t\t\t};\n\t\t\tvar handler = function(e){\n\t\t\t\tvar picture = e.target.parentNode;\n\n\t\t\t\tif(picture && picture.nodeName == 'PICTURE'){\n\t\t\t\t\tforEach.call(picture.getElementsByTagName('source'), removeHDescriptors);\n\t\t\t\t}\n\t\t\t\tremoveHDescriptors(e.target);\n\t\t\t};\n\n\t\t\tvar test = function(){\n\t\t\t\tif(!!img.currentSrc){\n\t\t\t\t\tdocument.removeEventListener('lazybeforeunveil', handler);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tif(edgeMatch[1]){\n\t\t\t\tdocument.addEventListener('lazybeforeunveil', handler);\n\n\t\t\t\tif(true || edgeMatch[1] > 14){\n\t\t\t\t\timg.onload = test;\n\t\t\t\t\timg.onerror = test;\n\n\t\t\t\t\timg.srcset = 'data:,a 1w 1h';\n\n\t\t\t\t\tif(img.complete){\n\t\t\t\t\t\ttest();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\n\tif(!config){\n\t\tconfig = {};\n\t\twindow.lazySizesConfig = config;\n\t}\n\n\tif(!config.supportsType){\n\t\tconfig.supportsType = function(type/*, elem*/){\n\t\t\treturn !type;\n\t\t};\n\t}\n\n\tif(window.picturefill || config.pf){return;}\n\n\tif(window.HTMLPictureElement && supportSrcset){\n\n\t\tif(document.msElementsFromPoint){\n\t\t\tfixEdgeHDescriptor(navigator.userAgent.match(/Edge\\/(\\d+)/));\n\t\t}\n\n\t\tconfig.pf = function(){};\n\t\treturn;\n\t}\n\n\tconfig.pf = function(options){\n\t\tvar i, len;\n\t\tif(window.picturefill){return;}\n\t\tfor(i = 0, len = options.elements.length; i < len; i++){\n\t\t\tpolyfill(options.elements[i]);\n\t\t}\n\t};\n\n\t// partial polyfill\n\tpolyfill = (function(){\n\t\tvar ascendingSort = function( a, b ) {\n\t\t\treturn a.w - b.w;\n\t\t};\n\t\tvar regPxLength = /^\\s*\\d+px\\s*$/;\n\t\tvar reduceCandidate = function (srces) {\n\t\t\tvar lowerCandidate, bonusFactor;\n\t\t\tvar len = srces.length;\n\t\t\tvar candidate = srces[len -1];\n\t\t\tvar i = 0;\n\n\t\t\tfor(i; i < len;i++){\n\t\t\t\tcandidate = srces[i];\n\t\t\t\tcandidate.d = candidate.w / srces.w;\n\n\t\t\t\tif(candidate.d >= srces.d){\n\t\t\t\t\tif(!candidate.cached && (lowerCandidate = srces[i - 1]) &&\n\t\t\t\t\t\tlowerCandidate.d > srces.d - (0.13 * Math.pow(srces.d, 2.2))){\n\n\t\t\t\t\t\tbonusFactor = Math.pow(lowerCandidate.d - 0.6, 1.6);\n\n\t\t\t\t\t\tif(lowerCandidate.cached) {\n\t\t\t\t\t\t\tlowerCandidate.d += 0.15 * bonusFactor;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif(lowerCandidate.d + ((candidate.d - srces.d) * bonusFactor) > srces.d){\n\t\t\t\t\t\t\tcandidate = lowerCandidate;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn candidate;\n\t\t};\n\n\t\tvar parseWsrcset = (function(){\n\t\t\tvar candidates;\n\t\t\tvar regWCandidates = /(([^,\\s].[^\\s]+)\\s+(\\d+)w)/g;\n\t\t\tvar regMultiple = /\\s/;\n\t\t\tvar addCandidate = function(match, candidate, url, wDescriptor){\n\t\t\t\tcandidates.push({\n\t\t\t\t\tc: candidate,\n\t\t\t\t\tu: url,\n\t\t\t\t\tw: wDescriptor * 1\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treturn function(input){\n\t\t\t\tcandidates = [];\n\t\t\t\tinput = input.trim();\n\t\t\t\tinput\n\t\t\t\t\t.replace(regHDesc, '')\n\t\t\t\t\t.replace(regWCandidates, addCandidate)\n\t\t\t\t;\n\n\t\t\t\tif(!candidates.length && input && !regMultiple.test(input)){\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tc: input,\n\t\t\t\t\t\tu: input,\n\t\t\t\t\t\tw: 99\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn candidates;\n\t\t\t};\n\t\t})();\n\n\t\tvar runMatchMedia = function(){\n\t\t\tif(runMatchMedia.init){return;}\n\n\t\t\trunMatchMedia.init = true;\n\t\t\taddEventListener('resize', (function(){\n\t\t\t\tvar timer;\n\t\t\t\tvar matchMediaElems = document.getElementsByClassName('lazymatchmedia');\n\t\t\t\tvar run = function(){\n\t\t\t\t\tvar i, len;\n\t\t\t\t\tfor(i = 0, len = matchMediaElems.length; i < len; i++){\n\t\t\t\t\t\tpolyfill(matchMediaElems[i]);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn function(){\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(run, 66);\n\t\t\t\t};\n\t\t\t})());\n\t\t};\n\n\t\tvar createSrcset = function(elem, isImage){\n\t\t\tvar parsedSet;\n\t\t\tvar srcSet = elem.getAttribute('srcset') || elem.getAttribute(config.srcsetAttr);\n\n\t\t\tif(!srcSet && isImage){\n\t\t\t\tsrcSet = !elem._lazypolyfill ?\n\t\t\t\t\t(elem.getAttribute('src') || elem.getAttribute(config.srcAttr)) :\n\t\t\t\t\telem._lazypolyfill._set\n\t\t\t\t;\n\t\t\t}\n\n\t\t\tif(!elem._lazypolyfill || elem._lazypolyfill._set != srcSet){\n\n\t\t\t\tparsedSet = parseWsrcset( srcSet || '' );\n\t\t\t\tif(isImage && elem.parentNode){\n\t\t\t\t\tparsedSet.isPicture = elem.parentNode.nodeName.toUpperCase() == 'PICTURE';\n\n\t\t\t\t\tif(parsedSet.isPicture){\n\t\t\t\t\t\tif(window.matchMedia || (window.Modernizr && Modernizr.mq)){\n\t\t\t\t\t\t\tlazySizes.aC(elem, 'lazymatchmedia');\n\t\t\t\t\t\t\trunMatchMedia();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tparsedSet._set = srcSet;\n\t\t\t\tObject.defineProperty(elem, '_lazypolyfill', {\n\t\t\t\t\tvalue: parsedSet,\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tvar getX = function(elem){\n\t\t\tvar dpr = window.devicePixelRatio || 1;\n\t\t\tvar optimum = lazySizes.getX && lazySizes.getX(elem);\n\t\t\treturn Math.min(optimum || dpr, 2.5, dpr);\n\t\t};\n\n\t\tvar matchesMedia = function(media){\n\t\t\tif(window.matchMedia){\n\t\t\t\tmatchesMedia = function(media){\n\t\t\t\t\treturn !media || (matchMedia(media) || {}).matches;\n\t\t\t\t};\n\t\t\t} else if(window.Modernizr && Modernizr.mq){\n\t\t\t\treturn !media || Modernizr.mq(media);\n\t\t\t} else {\n\t\t\t\treturn !media;\n\t\t\t}\n\n\t\t\treturn matchesMedia(media);\n\t\t};\n\n\t\tvar getCandidate = function(elem){\n\t\t\tvar sources, i, len, media, source, srces, src, width;\n\n\t\t\tsource = elem;\n\t\t\tcreateSrcset(source, true);\n\t\t\tsrces = source._lazypolyfill;\n\n\t\t\tif(srces.isPicture){\n\t\t\t\tfor(i = 0, sources = elem.parentNode.getElementsByTagName('source'), len = sources.length; i < len; i++){\n\t\t\t\t\tif( config.supportsType(sources[i].getAttribute('type'), elem) && matchesMedia( sources[i].getAttribute('media')) ){\n\t\t\t\t\t\tsource = sources[i];\n\t\t\t\t\t\tcreateSrcset(source);\n\t\t\t\t\t\tsrces = source._lazypolyfill;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(srces.length > 1){\n\t\t\t\twidth = source.getAttribute('sizes') || '';\n\t\t\t\twidth = regPxLength.test(width) && parseInt(width, 10) || lazySizes.gW(elem, elem.parentNode);\n\t\t\t\tsrces.d = getX(elem);\n\t\t\t\tif(!srces.w || srces.w < width){\n\t\t\t\t\tsrces.w = width;\n\t\t\t\t\tsrc = reduceCandidate(srces.sort(ascendingSort));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsrc = srces[0];\n\t\t\t}\n\n\t\t\treturn src;\n\t\t};\n\n\t\tvar p = function(elem){\n\t\t\tif(supportSrcset && elem.parentNode && elem.parentNode.nodeName.toUpperCase() != 'PICTURE'){return;}\n\t\t\tvar candidate = getCandidate(elem);\n\n\t\t\tif(candidate && candidate.u && elem._lazypolyfill.cur != candidate.u){\n\t\t\t\telem._lazypolyfill.cur = candidate.u;\n\t\t\t\tcandidate.cached = true;\n\t\t\t\telem.setAttribute(config.srcAttr, candidate.u);\n\t\t\t\telem.setAttribute('src', candidate.u);\n\t\t\t}\n\t\t};\n\n\t\tp.parse = parseWsrcset;\n\n\t\treturn p;\n\t})();\n\n\tif(config.loadedClass && config.loadingClass){\n\t\t(function(){\n\t\t\tvar sels = [];\n\t\t\t['img[sizes$=\"px\"][srcset].', 'picture > img:not([srcset]).'].forEach(function(sel){\n\t\t\t\tsels.push(sel + config.loadedClass);\n\t\t\t\tsels.push(sel + config.loadingClass);\n\t\t\t});\n\t\t\tconfig.pf({\n\t\t\t\telements: document.querySelectorAll(sels.join(', '))\n\t\t\t});\n\t\t})();\n\n\t}\n})(window, document);\n\n/**\n * Some versions of iOS (8.1-) do load the first candidate of a srcset candidate list, if width descriptors with the sizes attribute is used.\n * This tiny extension prevents this wasted download by creating a picture structure around the image.\n * Note: This extension is already included in the ls.respimg.js file.\n *\n * Usage:\n *\n * <img\n * \tclass=\"lazyload\"\n * \tdata-sizes=\"auto\"\n * \tdata-srcset=\"small.jpg 640px,\n * \t\tmedium.jpg 980w,\n * \t\tlarge.jpg 1280w\"\n * \t/>\n */\n\n(function(document){\n\t'use strict';\n\tvar regPicture;\n\tvar img = document.createElement('img');\n\n\tif(('srcset' in img) && !('sizes' in img) && !window.HTMLPictureElement){\n\t\tregPicture = /^picture$/i;\n\t\tdocument.addEventListener('lazybeforeunveil', function(e){\n\t\t\tvar elem, parent, srcset, sizes, isPicture;\n\t\t\tvar picture, source;\n\t\t\tif(e.defaultPrevented ||\n\t\t\t\tlazySizesConfig.noIOSFix ||\n\t\t\t\t!(elem = e.target) ||\n\t\t\t\t!(srcset = elem.getAttribute(lazySizesConfig.srcsetAttr)) ||\n\t\t\t\t!(parent = elem.parentNode) ||\n\t\t\t\t(\n\t\t\t\t\t!(isPicture = regPicture.test(parent.nodeName || '')) &&\n\t\t\t\t\t!(sizes = elem.getAttribute('sizes') || elem.getAttribute(lazySizesConfig.sizesAttr))\n\t\t\t\t)\n\t\t\t){return;}\n\n\t\t\tpicture = isPicture ? parent : document.createElement('picture');\n\n\t\t\tif(!elem._lazyImgSrc){\n\t\t\t\tObject.defineProperty(elem, '_lazyImgSrc', {\n\t\t\t\t\tvalue: document.createElement('source'),\n\t\t\t\t\twritable: true\n\t\t\t\t});\n\t\t\t}\n\t\t\tsource = elem._lazyImgSrc;\n\n\t\t\tif(sizes){\n\t\t\t\tsource.setAttribute('sizes', sizes);\n\t\t\t}\n\n\t\t\tsource.setAttribute(lazySizesConfig.srcsetAttr, srcset);\n\t\t\telem.setAttribute('data-pfsrcset', srcset);\n\t\t\telem.removeAttribute(lazySizesConfig.srcsetAttr);\n\n\t\t\tif(!isPicture){\n\t\t\t\tparent.insertBefore(picture, elem);\n\t\t\t\tpicture.appendChild(elem);\n\t\t\t}\n\t\t\tpicture.insertBefore(source, elem);\n\t\t});\n\t}\n})(document);","/*\nThis plugin extends lazySizes to lazyLoad:\nbackground images, videos/posters and scripts\n\nBackground-Image:\nFor background images, use data-bg attribute:\n<div class=\"lazyload\" data-bg=\"bg-img.jpg\"></div>\n\n Video:\n For video/audio use data-poster and preload=\"none\":\n <video class=\"lazyload\" preload=\"none\" data-poster=\"poster.jpg\" src=\"src.mp4\">\n <!-- sources -->\n </video>\n\n For video that plays automatically if in view:\n <video\n\tclass=\"lazyload\"\n\tpreload=\"none\"\n\tmuted=\"\"\n\tdata-autoplay=\"\"\n\tdata-poster=\"poster.jpg\"\n\tsrc=\"src.mp4\">\n</video>\n\n Scripts:\n For scripts use data-script:\n <div class=\"lazyload\" data-script=\"module-name.js\"></div>\n\n\n Script modules using require:\n For modules using require use data-require:\n <div class=\"lazyload\" data-require=\"module-name\"></div>\n*/\n\n(function(window, factory) {\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(window, function(window, document, lazySizes) {\n\t/*jshint eqnull:true */\n\t'use strict';\n\tvar bgLoad, regBgUrlEscape;\n\tvar uniqueUrls = {};\n\n\tif(document.addEventListener){\n\t\tregBgUrlEscape = /\\(|\\)|\\s|'/;\n\n\t\tbgLoad = function (url, cb){\n\t\t\tvar img = document.createElement('img');\n\t\t\timg.onload = function(){\n\t\t\t\timg.onload = null;\n\t\t\t\timg.onerror = null;\n\t\t\t\timg = null;\n\t\t\t\tcb();\n\t\t\t};\n\t\t\timg.onerror = img.onload;\n\n\t\t\timg.src = url;\n\n\t\t\tif(img && img.complete && img.onload){\n\t\t\t\timg.onload();\n\t\t\t}\n\t\t};\n\n\t\taddEventListener('lazybeforeunveil', function(e){\n\t\t\tif(e.detail.instance != lazySizes){return;}\n\n\t\t\tvar tmp, load, bg, poster;\n\t\t\tif(!e.defaultPrevented) {\n\n\t\t\t\tvar target = e.target;\n\n\t\t\t\tif(target.preload == 'none'){\n\t\t\t\t\ttarget.preload = target.getAttribute('data-preload') || 'auto';\n\t\t\t\t}\n\n\t\t\t\tif (target.getAttribute('data-autoplay') != null) {\n\t\t\t\t\tif (target.getAttribute('data-expand') && !target.autoplay) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\ttarget.play();\n\t\t\t\t\t\t} catch (er) {}\n\t\t\t\t\t} else {\n\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\ttarget.setAttribute('data-expand', '-10');\n\t\t\t\t\t\t\tlazySizes.aC(target, lazySizes.cfg.lazyClass);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\ttmp = target.getAttribute('data-link');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp, true);\n\t\t\t\t}\n\n\t\t\t\t// handle data-script\n\t\t\t\ttmp = target.getAttribute('data-script');\n\t\t\t\tif(tmp){\n\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t}\n\n\t\t\t\t// handle data-require\n\t\t\t\ttmp = target.getAttribute('data-require');\n\t\t\t\tif(tmp){\n\t\t\t\t\tif(lazySizes.cfg.requireJs){\n\t\t\t\t\t\tlazySizes.cfg.requireJs([tmp]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddStyleScript(tmp);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// handle data-bg\n\t\t\t\tbg = target.getAttribute('data-bg');\n\t\t\t\tif (bg) {\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.style.backgroundImage = 'url(' + (regBgUrlEscape.test(bg) ? JSON.stringify(bg) : bg ) + ')';\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(bg, load);\n\t\t\t\t}\n\n\t\t\t\t// handle data-poster\n\t\t\t\tposter = target.getAttribute('data-poster');\n\t\t\t\tif(poster){\n\t\t\t\t\te.detail.firesLoad = true;\n\t\t\t\t\tload = function(){\n\t\t\t\t\t\ttarget.poster = poster;\n\t\t\t\t\t\te.detail.firesLoad = false;\n\t\t\t\t\t\tlazySizes.fire(target, '_lazyloaded', {}, true, true);\n\t\t\t\t\t};\n\n\t\t\t\t\tbgLoad(poster, load);\n\n\t\t\t\t}\n\t\t\t}\n\t\t}, false);\n\n\t}\n\n\tfunction addStyleScript(src, style){\n\t\tif(uniqueUrls[src]){\n\t\t\treturn;\n\t\t}\n\t\tvar elem = document.createElement(style ? 'link' : 'script');\n\t\tvar insertElem = document.getElementsByTagName('script')[0];\n\n\t\tif(style){\n\t\t\telem.rel = 'stylesheet';\n\t\t\telem.href = src;\n\t\t} else {\n\t\t\telem.src = src;\n\t\t}\n\t\tuniqueUrls[src] = true;\n\t\tuniqueUrls[elem.src || elem.href] = true;\n\t\tinsertElem.parentNode.insertBefore(elem, insertElem);\n\t}\n}));","/*\n     _ _      _       _\n ___| (_) ___| | __  (_)___\n/ __| | |/ __| |/ /  | / __|\n\\__ \\ | | (__|   < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n                   |__/\n\n Version: 1.8.0\n  Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n    Docs: http://kenwheeler.github.io/slick\n    Repo: http://github.com/kenwheeler/slick\n  Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n    'use strict';\n    if (typeof define === 'function' && define.amd) {\n        define(['jquery'], factory);\n    } else if (typeof exports !== 'undefined') {\n        module.exports = factory(require('jquery'));\n    } else {\n        factory(jQuery);\n    }\n\n}(function($) {\n    'use strict';\n    var Slick = window.Slick || {};\n\n    Slick = (function() {\n\n        var instanceUid = 0;\n\n        function Slick(element, settings) {\n\n            var _ = this, dataSettings;\n\n            _.defaults = {\n                accessibility: true,\n                adaptiveHeight: false,\n                appendArrows: $(element),\n                appendDots: $(element),\n                arrows: true,\n                asNavFor: null,\n                prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n                nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n                autoplay: false,\n                autoplaySpeed: 3000,\n                centerMode: false,\n                centerPadding: '50px',\n                cssEase: 'ease',\n                customPaging: function(slider, i) {\n                    return $('<button type=\"button\" />').text(i + 1);\n                },\n                dots: false,\n                dotsClass: 'slick-dots',\n                draggable: true,\n                easing: 'linear',\n                edgeFriction: 0.35,\n                fade: false,\n                focusOnSelect: false,\n                focusOnChange: false,\n                infinite: true,\n                initialSlide: 0,\n                lazyLoad: 'ondemand',\n                mobileFirst: false,\n                pauseOnHover: true,\n                pauseOnFocus: true,\n                pauseOnDotsHover: false,\n                respondTo: 'window',\n                responsive: null,\n                rows: 1,\n                rtl: false,\n                slide: '',\n                slidesPerRow: 1,\n                slidesToShow: 1,\n                slidesToScroll: 1,\n                speed: 500,\n                swipe: true,\n                swipeToSlide: false,\n                touchMove: true,\n                touchThreshold: 5,\n                useCSS: true,\n                useTransform: true,\n                variableWidth: false,\n                vertical: false,\n                verticalSwiping: false,\n                waitForAnimate: true,\n                zIndex: 1000\n            };\n\n            _.initials = {\n                animating: false,\n                dragging: false,\n                autoPlayTimer: null,\n                currentDirection: 0,\n                currentLeft: null,\n                currentSlide: 0,\n                direction: 1,\n                $dots: null,\n                listWidth: null,\n                listHeight: null,\n                loadIndex: 0,\n                $nextArrow: null,\n                $prevArrow: null,\n                scrolling: false,\n                slideCount: null,\n                slideWidth: null,\n                $slideTrack: null,\n                $slides: null,\n                sliding: false,\n                slideOffset: 0,\n                swipeLeft: null,\n                swiping: false,\n                $list: null,\n                touchObject: {},\n                transformsEnabled: false,\n                unslicked: false\n            };\n\n            $.extend(_, _.initials);\n\n            _.activeBreakpoint = null;\n            _.animType = null;\n            _.animProp = null;\n            _.breakpoints = [];\n            _.breakpointSettings = [];\n            _.cssTransitions = false;\n            _.focussed = false;\n            _.interrupted = false;\n            _.hidden = 'hidden';\n            _.paused = true;\n            _.positionProp = null;\n            _.respondTo = null;\n            _.rowCount = 1;\n            _.shouldClick = true;\n            _.$slider = $(element);\n            _.$slidesCache = null;\n            _.transformType = null;\n            _.transitionType = null;\n            _.visibilityChange = 'visibilitychange';\n            _.windowWidth = 0;\n            _.windowTimer = null;\n\n            dataSettings = $(element).data('slick') || {};\n\n            _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n            _.currentSlide = _.options.initialSlide;\n\n            _.originalSettings = _.options;\n\n            if (typeof document.mozHidden !== 'undefined') {\n                _.hidden = 'mozHidden';\n                _.visibilityChange = 'mozvisibilitychange';\n            } else if (typeof document.webkitHidden !== 'undefined') {\n                _.hidden = 'webkitHidden';\n                _.visibilityChange = 'webkitvisibilitychange';\n            }\n\n            _.autoPlay = $.proxy(_.autoPlay, _);\n            _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n            _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n            _.changeSlide = $.proxy(_.changeSlide, _);\n            _.clickHandler = $.proxy(_.clickHandler, _);\n            _.selectHandler = $.proxy(_.selectHandler, _);\n            _.setPosition = $.proxy(_.setPosition, _);\n            _.swipeHandler = $.proxy(_.swipeHandler, _);\n            _.dragHandler = $.proxy(_.dragHandler, _);\n            _.keyHandler = $.proxy(_.keyHandler, _);\n\n            _.instanceUid = instanceUid++;\n\n            // A simple way to check for HTML strings\n            // Strict HTML recognition (must start with <)\n            // Extracted from jQuery v1.11 source\n            _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n            _.registerBreakpoints();\n            _.init(true);\n\n        }\n\n        return Slick;\n\n    }());\n\n    Slick.prototype.activateADA = function() {\n        var _ = this;\n\n        _.$slideTrack.find('.slick-active').attr({\n            'aria-hidden': 'false'\n        }).find('a, input, button, select').attr({\n            'tabindex': '0'\n        });\n\n    };\n\n    Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            addBefore = index;\n            index = null;\n        } else if (index < 0 || (index >= _.slideCount)) {\n            return false;\n        }\n\n        _.unload();\n\n        if (typeof(index) === 'number') {\n            if (index === 0 && _.$slides.length === 0) {\n                $(markup).appendTo(_.$slideTrack);\n            } else if (addBefore) {\n                $(markup).insertBefore(_.$slides.eq(index));\n            } else {\n                $(markup).insertAfter(_.$slides.eq(index));\n            }\n        } else {\n            if (addBefore === true) {\n                $(markup).prependTo(_.$slideTrack);\n            } else {\n                $(markup).appendTo(_.$slideTrack);\n            }\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slides.each(function(index, element) {\n            $(element).attr('data-slick-index', index);\n        });\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.animateHeight = function() {\n        var _ = this;\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.animate({\n                height: targetHeight\n            }, _.options.speed);\n        }\n    };\n\n    Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n        var animProps = {},\n            _ = this;\n\n        _.animateHeight();\n\n        if (_.options.rtl === true && _.options.vertical === false) {\n            targetLeft = -targetLeft;\n        }\n        if (_.transformsEnabled === false) {\n            if (_.options.vertical === false) {\n                _.$slideTrack.animate({\n                    left: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            } else {\n                _.$slideTrack.animate({\n                    top: targetLeft\n                }, _.options.speed, _.options.easing, callback);\n            }\n\n        } else {\n\n            if (_.cssTransitions === false) {\n                if (_.options.rtl === true) {\n                    _.currentLeft = -(_.currentLeft);\n                }\n                $({\n                    animStart: _.currentLeft\n                }).animate({\n                    animStart: targetLeft\n                }, {\n                    duration: _.options.speed,\n                    easing: _.options.easing,\n                    step: function(now) {\n                        now = Math.ceil(now);\n                        if (_.options.vertical === false) {\n                            animProps[_.animType] = 'translate(' +\n                                now + 'px, 0px)';\n                            _.$slideTrack.css(animProps);\n                        } else {\n                            animProps[_.animType] = 'translate(0px,' +\n                                now + 'px)';\n                            _.$slideTrack.css(animProps);\n                        }\n                    },\n                    complete: function() {\n                        if (callback) {\n                            callback.call();\n                        }\n                    }\n                });\n\n            } else {\n\n                _.applyTransition();\n                targetLeft = Math.ceil(targetLeft);\n\n                if (_.options.vertical === false) {\n                    animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n                } else {\n                    animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n                }\n                _.$slideTrack.css(animProps);\n\n                if (callback) {\n                    setTimeout(function() {\n\n                        _.disableTransition();\n\n                        callback.call();\n                    }, _.options.speed);\n                }\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.getNavTarget = function() {\n\n        var _ = this,\n            asNavFor = _.options.asNavFor;\n\n        if ( asNavFor && asNavFor !== null ) {\n            asNavFor = $(asNavFor).not(_.$slider);\n        }\n\n        return asNavFor;\n\n    };\n\n    Slick.prototype.asNavFor = function(index) {\n\n        var _ = this,\n            asNavFor = _.getNavTarget();\n\n        if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n            asNavFor.each(function() {\n                var target = $(this).slick('getSlick');\n                if(!target.unslicked) {\n                    target.slideHandler(index, true);\n                }\n            });\n        }\n\n    };\n\n    Slick.prototype.applyTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        if (_.options.fade === false) {\n            transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n        } else {\n            transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n        }\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.autoPlay = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        if ( _.slideCount > _.options.slidesToShow ) {\n            _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n        }\n\n    };\n\n    Slick.prototype.autoPlayClear = function() {\n\n        var _ = this;\n\n        if (_.autoPlayTimer) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n    };\n\n    Slick.prototype.autoPlayIterator = function() {\n\n        var _ = this,\n            slideTo = _.currentSlide + _.options.slidesToScroll;\n\n        if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n            if ( _.options.infinite === false ) {\n\n                if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n                    _.direction = 0;\n                }\n\n                else if ( _.direction === 0 ) {\n\n                    slideTo = _.currentSlide - _.options.slidesToScroll;\n\n                    if ( _.currentSlide - 1 === 0 ) {\n                        _.direction = 1;\n                    }\n\n                }\n\n            }\n\n            _.slideHandler( slideTo );\n\n        }\n\n    };\n\n    Slick.prototype.buildArrows = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true ) {\n\n            _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n            _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n            if( _.slideCount > _.options.slidesToShow ) {\n\n                _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n                _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n                if (_.htmlExpr.test(_.options.prevArrow)) {\n                    _.$prevArrow.prependTo(_.options.appendArrows);\n                }\n\n                if (_.htmlExpr.test(_.options.nextArrow)) {\n                    _.$nextArrow.appendTo(_.options.appendArrows);\n                }\n\n                if (_.options.infinite !== true) {\n                    _.$prevArrow\n                        .addClass('slick-disabled')\n                        .attr('aria-disabled', 'true');\n                }\n\n            } else {\n\n                _.$prevArrow.add( _.$nextArrow )\n\n                    .addClass('slick-hidden')\n                    .attr({\n                        'aria-disabled': 'true',\n                        'tabindex': '-1'\n                    });\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.buildDots = function() {\n\n        var _ = this,\n            i, dot;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$slider.addClass('slick-dotted');\n\n            dot = $('<ul />').addClass(_.options.dotsClass);\n\n            for (i = 0; i <= _.getDotCount(); i += 1) {\n                dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n            }\n\n            _.$dots = dot.appendTo(_.options.appendDots);\n\n            _.$dots.find('li').first().addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.buildOut = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slider\n                .children( _.options.slide + ':not(.slick-cloned)')\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        _.$slides.each(function(index, element) {\n            $(element)\n                .attr('data-slick-index', index)\n                .data('originalStyling', $(element).attr('style') || '');\n        });\n\n        _.$slider.addClass('slick-slider');\n\n        _.$slideTrack = (_.slideCount === 0) ?\n            $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n            _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n        _.$list = _.$slideTrack.wrap(\n            '<div class=\"slick-list\"/>').parent();\n        _.$slideTrack.css('opacity', 0);\n\n        if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n            _.options.slidesToScroll = 1;\n        }\n\n        $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n        _.setupInfinite();\n\n        _.buildArrows();\n\n        _.buildDots();\n\n        _.updateDots();\n\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        if (_.options.draggable === true) {\n            _.$list.addClass('draggable');\n        }\n\n    };\n\n    Slick.prototype.buildRows = function() {\n\n        var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n        newSlides = document.createDocumentFragment();\n        originalSlides = _.$slider.children();\n\n        if(_.options.rows > 0) {\n\n            slidesPerSection = _.options.slidesPerRow * _.options.rows;\n            numOfSlides = Math.ceil(\n                originalSlides.length / slidesPerSection\n            );\n\n            for(a = 0; a < numOfSlides; a++){\n                var slide = document.createElement('div');\n                for(b = 0; b < _.options.rows; b++) {\n                    var row = document.createElement('div');\n                    for(c = 0; c < _.options.slidesPerRow; c++) {\n                        var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n                        if (originalSlides.get(target)) {\n                            row.appendChild(originalSlides.get(target));\n                        }\n                    }\n                    slide.appendChild(row);\n                }\n                newSlides.appendChild(slide);\n            }\n\n            _.$slider.empty().append(newSlides);\n            _.$slider.children().children().children()\n                .css({\n                    'width':(100 / _.options.slidesPerRow) + '%',\n                    'display': 'inline-block'\n                });\n\n        }\n\n    };\n\n    Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n        var _ = this,\n            breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n        var sliderWidth = _.$slider.width();\n        var windowWidth = window.innerWidth || $(window).width();\n\n        if (_.respondTo === 'window') {\n            respondToWidth = windowWidth;\n        } else if (_.respondTo === 'slider') {\n            respondToWidth = sliderWidth;\n        } else if (_.respondTo === 'min') {\n            respondToWidth = Math.min(windowWidth, sliderWidth);\n        }\n\n        if ( _.options.responsive &&\n            _.options.responsive.length &&\n            _.options.responsive !== null) {\n\n            targetBreakpoint = null;\n\n            for (breakpoint in _.breakpoints) {\n                if (_.breakpoints.hasOwnProperty(breakpoint)) {\n                    if (_.originalSettings.mobileFirst === false) {\n                        if (respondToWidth < _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    } else {\n                        if (respondToWidth > _.breakpoints[breakpoint]) {\n                            targetBreakpoint = _.breakpoints[breakpoint];\n                        }\n                    }\n                }\n            }\n\n            if (targetBreakpoint !== null) {\n                if (_.activeBreakpoint !== null) {\n                    if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n                        _.activeBreakpoint =\n                            targetBreakpoint;\n                        if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                            _.unslick(targetBreakpoint);\n                        } else {\n                            _.options = $.extend({}, _.originalSettings,\n                                _.breakpointSettings[\n                                    targetBreakpoint]);\n                            if (initial === true) {\n                                _.currentSlide = _.options.initialSlide;\n                            }\n                            _.refresh(initial);\n                        }\n                        triggerBreakpoint = targetBreakpoint;\n                    }\n                } else {\n                    _.activeBreakpoint = targetBreakpoint;\n                    if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n                        _.unslick(targetBreakpoint);\n                    } else {\n                        _.options = $.extend({}, _.originalSettings,\n                            _.breakpointSettings[\n                                targetBreakpoint]);\n                        if (initial === true) {\n                            _.currentSlide = _.options.initialSlide;\n                        }\n                        _.refresh(initial);\n                    }\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            } else {\n                if (_.activeBreakpoint !== null) {\n                    _.activeBreakpoint = null;\n                    _.options = _.originalSettings;\n                    if (initial === true) {\n                        _.currentSlide = _.options.initialSlide;\n                    }\n                    _.refresh(initial);\n                    triggerBreakpoint = targetBreakpoint;\n                }\n            }\n\n            // only trigger breakpoints during an actual break. not on initialize.\n            if( !initial && triggerBreakpoint !== false ) {\n                _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n            }\n        }\n\n    };\n\n    Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n        var _ = this,\n            $target = $(event.currentTarget),\n            indexOffset, slideOffset, unevenOffset;\n\n        // If target is a link, prevent default action.\n        if($target.is('a')) {\n            event.preventDefault();\n        }\n\n        // If target is not the <li> element (ie: a child), find the <li>.\n        if(!$target.is('li')) {\n            $target = $target.closest('li');\n        }\n\n        unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n        indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n        switch (event.data.message) {\n\n            case 'previous':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'next':\n                slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n                if (_.slideCount > _.options.slidesToShow) {\n                    _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n                }\n                break;\n\n            case 'index':\n                var index = event.data.index === 0 ? 0 :\n                    event.data.index || $target.index() * _.options.slidesToScroll;\n\n                _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n                $target.children().trigger('focus');\n                break;\n\n            default:\n                return;\n        }\n\n    };\n\n    Slick.prototype.checkNavigable = function(index) {\n\n        var _ = this,\n            navigables, prevNavigable;\n\n        navigables = _.getNavigableIndexes();\n        prevNavigable = 0;\n        if (index > navigables[navigables.length - 1]) {\n            index = navigables[navigables.length - 1];\n        } else {\n            for (var n in navigables) {\n                if (index < navigables[n]) {\n                    index = prevNavigable;\n                    break;\n                }\n                prevNavigable = navigables[n];\n            }\n        }\n\n        return index;\n    };\n\n    Slick.prototype.cleanUpEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots && _.$dots !== null) {\n\n            $('li', _.$dots)\n                .off('click.slick', _.changeSlide)\n                .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n            if (_.options.accessibility === true) {\n                _.$dots.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$slider.off('focus.slick blur.slick');\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n            _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n                _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n            }\n        }\n\n        _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n        _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n        _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n        _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n        _.$list.off('click.slick', _.clickHandler);\n\n        $(document).off(_.visibilityChange, _.visibility);\n\n        _.cleanUpSlideEvents();\n\n        if (_.options.accessibility === true) {\n            _.$list.off('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n        }\n\n        $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n        $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n        $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n        $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n    };\n\n    Slick.prototype.cleanUpSlideEvents = function() {\n\n        var _ = this;\n\n        _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n        _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n    };\n\n    Slick.prototype.cleanUpRows = function() {\n\n        var _ = this, originalSlides;\n\n        if(_.options.rows > 0) {\n            originalSlides = _.$slides.children().children();\n            originalSlides.removeAttr('style');\n            _.$slider.empty().append(originalSlides);\n        }\n\n    };\n\n    Slick.prototype.clickHandler = function(event) {\n\n        var _ = this;\n\n        if (_.shouldClick === false) {\n            event.stopImmediatePropagation();\n            event.stopPropagation();\n            event.preventDefault();\n        }\n\n    };\n\n    Slick.prototype.destroy = function(refresh) {\n\n        var _ = this;\n\n        _.autoPlayClear();\n\n        _.touchObject = {};\n\n        _.cleanUpEvents();\n\n        $('.slick-cloned', _.$slider).detach();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if ( _.$prevArrow && _.$prevArrow.length ) {\n\n            _.$prevArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.prevArrow )) {\n                _.$prevArrow.remove();\n            }\n        }\n\n        if ( _.$nextArrow && _.$nextArrow.length ) {\n\n            _.$nextArrow\n                .removeClass('slick-disabled slick-arrow slick-hidden')\n                .removeAttr('aria-hidden aria-disabled tabindex')\n                .css('display','');\n\n            if ( _.htmlExpr.test( _.options.nextArrow )) {\n                _.$nextArrow.remove();\n            }\n        }\n\n\n        if (_.$slides) {\n\n            _.$slides\n                .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n                .removeAttr('aria-hidden')\n                .removeAttr('data-slick-index')\n                .each(function(){\n                    $(this).attr('style', $(this).data('originalStyling'));\n                });\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slideTrack.detach();\n\n            _.$list.detach();\n\n            _.$slider.append(_.$slides);\n        }\n\n        _.cleanUpRows();\n\n        _.$slider.removeClass('slick-slider');\n        _.$slider.removeClass('slick-initialized');\n        _.$slider.removeClass('slick-dotted');\n\n        _.unslicked = true;\n\n        if(!refresh) {\n            _.$slider.trigger('destroy', [_]);\n        }\n\n    };\n\n    Slick.prototype.disableTransition = function(slide) {\n\n        var _ = this,\n            transition = {};\n\n        transition[_.transitionType] = '';\n\n        if (_.options.fade === false) {\n            _.$slideTrack.css(transition);\n        } else {\n            _.$slides.eq(slide).css(transition);\n        }\n\n    };\n\n    Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).css({\n                zIndex: _.options.zIndex\n            });\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 1\n            }, _.options.speed, _.options.easing, callback);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 1,\n                zIndex: _.options.zIndex\n            });\n\n            if (callback) {\n                setTimeout(function() {\n\n                    _.disableTransition(slideIndex);\n\n                    callback.call();\n                }, _.options.speed);\n            }\n\n        }\n\n    };\n\n    Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n        var _ = this;\n\n        if (_.cssTransitions === false) {\n\n            _.$slides.eq(slideIndex).animate({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            }, _.options.speed, _.options.easing);\n\n        } else {\n\n            _.applyTransition(slideIndex);\n\n            _.$slides.eq(slideIndex).css({\n                opacity: 0,\n                zIndex: _.options.zIndex - 2\n            });\n\n        }\n\n    };\n\n    Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n        var _ = this;\n\n        if (filter !== null) {\n\n            _.$slidesCache = _.$slides;\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.focusHandler = function() {\n\n        var _ = this;\n\n        _.$slider\n            .off('focus.slick blur.slick')\n            .on('focus.slick blur.slick', '*', function(event) {\n\n            event.stopImmediatePropagation();\n            var $sf = $(this);\n\n            setTimeout(function() {\n\n                if( _.options.pauseOnFocus ) {\n                    _.focussed = $sf.is(':focus');\n                    _.autoPlay();\n                }\n\n            }, 0);\n\n        });\n    };\n\n    Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n        var _ = this;\n        return _.currentSlide;\n\n    };\n\n    Slick.prototype.getDotCount = function() {\n\n        var _ = this;\n\n        var breakPoint = 0;\n        var counter = 0;\n        var pagerQty = 0;\n\n        if (_.options.infinite === true) {\n            if (_.slideCount <= _.options.slidesToShow) {\n                 ++pagerQty;\n            } else {\n                while (breakPoint < _.slideCount) {\n                    ++pagerQty;\n                    breakPoint = counter + _.options.slidesToScroll;\n                    counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n                }\n            }\n        } else if (_.options.centerMode === true) {\n            pagerQty = _.slideCount;\n        } else if(!_.options.asNavFor) {\n            pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n        }else {\n            while (breakPoint < _.slideCount) {\n                ++pagerQty;\n                breakPoint = counter + _.options.slidesToScroll;\n                counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n            }\n        }\n\n        return pagerQty - 1;\n\n    };\n\n    Slick.prototype.getLeft = function(slideIndex) {\n\n        var _ = this,\n            targetLeft,\n            verticalHeight,\n            verticalOffset = 0,\n            targetSlide,\n            coef;\n\n        _.slideOffset = 0;\n        verticalHeight = _.$slides.first().outerHeight(true);\n\n        if (_.options.infinite === true) {\n            if (_.slideCount > _.options.slidesToShow) {\n                _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n                coef = -1\n\n                if (_.options.vertical === true && _.options.centerMode === true) {\n                    if (_.options.slidesToShow === 2) {\n                        coef = -1.5;\n                    } else if (_.options.slidesToShow === 1) {\n                        coef = -2\n                    }\n                }\n                verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n            }\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n                    if (slideIndex > _.slideCount) {\n                        _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n                        verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n                    } else {\n                        _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n                        verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n                    }\n                }\n            }\n        } else {\n            if (slideIndex + _.options.slidesToShow > _.slideCount) {\n                _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n                verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n            }\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = 0;\n            verticalOffset = 0;\n        }\n\n        if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n            _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n        } else if (_.options.centerMode === true && _.options.infinite === true) {\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n        } else if (_.options.centerMode === true) {\n            _.slideOffset = 0;\n            _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n        }\n\n        if (_.options.vertical === false) {\n            targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n        } else {\n            targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n        }\n\n        if (_.options.variableWidth === true) {\n\n            if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n            } else {\n                targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n            }\n\n            if (_.options.rtl === true) {\n                if (targetSlide[0]) {\n                    targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                } else {\n                    targetLeft =  0;\n                }\n            } else {\n                targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n            }\n\n            if (_.options.centerMode === true) {\n                if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n                } else {\n                    targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n                }\n\n                if (_.options.rtl === true) {\n                    if (targetSlide[0]) {\n                        targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n                    } else {\n                        targetLeft =  0;\n                    }\n                } else {\n                    targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n                }\n\n                targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n            }\n        }\n\n        return targetLeft;\n\n    };\n\n    Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n        var _ = this;\n\n        return _.options[option];\n\n    };\n\n    Slick.prototype.getNavigableIndexes = function() {\n\n        var _ = this,\n            breakPoint = 0,\n            counter = 0,\n            indexes = [],\n            max;\n\n        if (_.options.infinite === false) {\n            max = _.slideCount;\n        } else {\n            breakPoint = _.options.slidesToScroll * -1;\n            counter = _.options.slidesToScroll * -1;\n            max = _.slideCount * 2;\n        }\n\n        while (breakPoint < max) {\n            indexes.push(breakPoint);\n            breakPoint = counter + _.options.slidesToScroll;\n            counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n        }\n\n        return indexes;\n\n    };\n\n    Slick.prototype.getSlick = function() {\n\n        return this;\n\n    };\n\n    Slick.prototype.getSlideCount = function() {\n\n        var _ = this,\n            slidesTraversed, swipedSlide, centerOffset;\n\n        centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0;\n\n        if (_.options.swipeToSlide === true) {\n            _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n                if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) {\n                    swipedSlide = slide;\n                    return false;\n                }\n            });\n\n            slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n            return slidesTraversed;\n\n        } else {\n            return _.options.slidesToScroll;\n        }\n\n    };\n\n    Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'index',\n                index: parseInt(slide)\n            }\n        }, dontAnimate);\n\n    };\n\n    Slick.prototype.init = function(creation) {\n\n        var _ = this;\n\n        if (!$(_.$slider).hasClass('slick-initialized')) {\n\n            $(_.$slider).addClass('slick-initialized');\n\n            _.buildRows();\n            _.buildOut();\n            _.setProps();\n            _.startLoad();\n            _.loadSlider();\n            _.initializeEvents();\n            _.updateArrows();\n            _.updateDots();\n            _.checkResponsive(true);\n            _.focusHandler();\n\n        }\n\n        if (creation) {\n            _.$slider.trigger('init', [_]);\n        }\n\n        if (_.options.accessibility === true) {\n            _.initADA();\n        }\n\n        if ( _.options.autoplay ) {\n\n            _.paused = false;\n            _.autoPlay();\n\n        }\n\n    };\n\n    Slick.prototype.initADA = function() {\n        var _ = this,\n                numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n                tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n                    return (val >= 0) && (val < _.slideCount);\n                });\n\n        _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n            'aria-hidden': 'true',\n            'tabindex': '-1'\n        }).find('a, input, button, select').attr({\n            'tabindex': '-1'\n        });\n\n        if (_.$dots !== null) {\n            _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n                var slideControlIndex = tabControlIndexes.indexOf(i);\n\n                $(this).attr({\n                    'role': 'tabpanel',\n                    'id': 'slick-slide' + _.instanceUid + i,\n                    'tabindex': -1\n                });\n\n                if (slideControlIndex !== -1) {\n                   var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n                   if ($('#' + ariaButtonControl).length) {\n                     $(this).attr({\n                         'aria-describedby': ariaButtonControl\n                     });\n                   }\n                }\n            });\n\n            _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n                var mappedSlideIndex = tabControlIndexes[i];\n\n                $(this).attr({\n                    'role': 'presentation'\n                });\n\n                $(this).find('button').first().attr({\n                    'role': 'tab',\n                    'id': 'slick-slide-control' + _.instanceUid + i,\n                    'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n                    'aria-label': (i + 1) + ' of ' + numDotGroups,\n                    'aria-selected': null,\n                    'tabindex': '-1'\n                });\n\n            }).eq(_.currentSlide).find('button').attr({\n                'aria-selected': 'true',\n                'tabindex': '0'\n            }).end();\n        }\n\n        for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n          if (_.options.focusOnChange) {\n            _.$slides.eq(i).attr({'tabindex': '0'});\n          } else {\n            _.$slides.eq(i).removeAttr('tabindex');\n          }\n        }\n\n        _.activateADA();\n\n    };\n\n    Slick.prototype.initArrowEvents = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n            _.$prevArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'previous'\n               }, _.changeSlide);\n            _.$nextArrow\n               .off('click.slick')\n               .on('click.slick', {\n                    message: 'next'\n               }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$prevArrow.on('keydown.slick', _.keyHandler);\n                _.$nextArrow.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n    };\n\n    Slick.prototype.initDotEvents = function() {\n\n        var _ = this;\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n            $('li', _.$dots).on('click.slick', {\n                message: 'index'\n            }, _.changeSlide);\n\n            if (_.options.accessibility === true) {\n                _.$dots.on('keydown.slick', _.keyHandler);\n            }\n        }\n\n        if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n            $('li', _.$dots)\n                .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n                .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initSlideEvents = function() {\n\n        var _ = this;\n\n        if ( _.options.pauseOnHover ) {\n\n            _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n            _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n        }\n\n    };\n\n    Slick.prototype.initializeEvents = function() {\n\n        var _ = this;\n\n        _.initArrowEvents();\n\n        _.initDotEvents();\n        _.initSlideEvents();\n\n        _.$list.on('touchstart.slick mousedown.slick', {\n            action: 'start'\n        }, _.swipeHandler);\n        _.$list.on('touchmove.slick mousemove.slick', {\n            action: 'move'\n        }, _.swipeHandler);\n        _.$list.on('touchend.slick mouseup.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n        _.$list.on('touchcancel.slick mouseleave.slick', {\n            action: 'end'\n        }, _.swipeHandler);\n\n        _.$list.on('click.slick', _.clickHandler);\n\n        $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n        if (_.options.accessibility === true) {\n            _.$list.on('keydown.slick', _.keyHandler);\n        }\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n        $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n        $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n        $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n        $(_.setPosition);\n\n    };\n\n    Slick.prototype.initUI = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.show();\n            _.$nextArrow.show();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.show();\n\n        }\n\n    };\n\n    Slick.prototype.keyHandler = function(event) {\n\n        var _ = this;\n         //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n        if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n            if (event.keyCode === 37 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'next' :  'previous'\n                    }\n                });\n            } else if (event.keyCode === 39 && _.options.accessibility === true) {\n                _.changeSlide({\n                    data: {\n                        message: _.options.rtl === true ? 'previous' : 'next'\n                    }\n                });\n            }\n        }\n\n    };\n\n    Slick.prototype.lazyLoad = function() {\n\n        var _ = this,\n            loadRange, cloneRange, rangeStart, rangeEnd;\n\n        function loadImages(imagesScope) {\n\n            $('img[data-lazy]', imagesScope).each(function() {\n\n                var image = $(this),\n                    imageSource = $(this).attr('data-lazy'),\n                    imageSrcSet = $(this).attr('data-srcset'),\n                    imageSizes  = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n                    imageToLoad = document.createElement('img');\n\n                imageToLoad.onload = function() {\n\n                    image\n                        .animate({ opacity: 0 }, 100, function() {\n\n                            if (imageSrcSet) {\n                                image\n                                    .attr('srcset', imageSrcSet );\n\n                                if (imageSizes) {\n                                    image\n                                        .attr('sizes', imageSizes );\n                                }\n                            }\n\n                            image\n                                .attr('src', imageSource)\n                                .animate({ opacity: 1 }, 200, function() {\n                                    image\n                                        .removeAttr('data-lazy data-srcset data-sizes')\n                                        .removeClass('slick-loading');\n                                });\n                            _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n                        });\n\n                };\n\n                imageToLoad.onerror = function() {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                };\n\n                imageToLoad.src = imageSource;\n\n            });\n\n        }\n\n        if (_.options.centerMode === true) {\n            if (_.options.infinite === true) {\n                rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n                rangeEnd = rangeStart + _.options.slidesToShow + 2;\n            } else {\n                rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n                rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n            }\n        } else {\n            rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n            rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n            if (_.options.fade === true) {\n                if (rangeStart > 0) rangeStart--;\n                if (rangeEnd <= _.slideCount) rangeEnd++;\n            }\n        }\n\n        loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n        if (_.options.lazyLoad === 'anticipated') {\n            var prevSlide = rangeStart - 1,\n                nextSlide = rangeEnd,\n                $slides = _.$slider.find('.slick-slide');\n\n            for (var i = 0; i < _.options.slidesToScroll; i++) {\n                if (prevSlide < 0) prevSlide = _.slideCount - 1;\n                loadRange = loadRange.add($slides.eq(prevSlide));\n                loadRange = loadRange.add($slides.eq(nextSlide));\n                prevSlide--;\n                nextSlide++;\n            }\n        }\n\n        loadImages(loadRange);\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-slide');\n            loadImages(cloneRange);\n        } else\n        if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n            loadImages(cloneRange);\n        } else if (_.currentSlide === 0) {\n            cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n            loadImages(cloneRange);\n        }\n\n    };\n\n    Slick.prototype.loadSlider = function() {\n\n        var _ = this;\n\n        _.setPosition();\n\n        _.$slideTrack.css({\n            opacity: 1\n        });\n\n        _.$slider.removeClass('slick-loading');\n\n        _.initUI();\n\n        if (_.options.lazyLoad === 'progressive') {\n            _.progressiveLazyLoad();\n        }\n\n    };\n\n    Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'next'\n            }\n        });\n\n    };\n\n    Slick.prototype.orientationChange = function() {\n\n        var _ = this;\n\n        _.checkResponsive();\n        _.setPosition();\n\n    };\n\n    Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n        var _ = this;\n\n        _.autoPlayClear();\n        _.paused = true;\n\n    };\n\n    Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n        var _ = this;\n\n        _.autoPlay();\n        _.options.autoplay = true;\n        _.paused = false;\n        _.focussed = false;\n        _.interrupted = false;\n\n    };\n\n    Slick.prototype.postSlide = function(index) {\n\n        var _ = this;\n\n        if( !_.unslicked ) {\n\n            _.$slider.trigger('afterChange', [_, index]);\n\n            _.animating = false;\n\n            if (_.slideCount > _.options.slidesToShow) {\n                _.setPosition();\n            }\n\n            _.swipeLeft = null;\n\n            if ( _.options.autoplay ) {\n                _.autoPlay();\n            }\n\n            if (_.options.accessibility === true) {\n                _.initADA();\n\n                if (_.options.focusOnChange) {\n                    var $currentSlide = $(_.$slides.get(_.currentSlide));\n                    $currentSlide.attr('tabindex', 0).focus();\n                }\n            }\n\n        }\n\n    };\n\n    Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n        var _ = this;\n\n        _.changeSlide({\n            data: {\n                message: 'previous'\n            }\n        });\n\n    };\n\n    Slick.prototype.preventDefault = function(event) {\n\n        event.preventDefault();\n\n    };\n\n    Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n        tryCount = tryCount || 1;\n\n        var _ = this,\n            $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n            image,\n            imageSource,\n            imageSrcSet,\n            imageSizes,\n            imageToLoad;\n\n        if ( $imgsToLoad.length ) {\n\n            image = $imgsToLoad.first();\n            imageSource = image.attr('data-lazy');\n            imageSrcSet = image.attr('data-srcset');\n            imageSizes  = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n            imageToLoad = document.createElement('img');\n\n            imageToLoad.onload = function() {\n\n                if (imageSrcSet) {\n                    image\n                        .attr('srcset', imageSrcSet );\n\n                    if (imageSizes) {\n                        image\n                            .attr('sizes', imageSizes );\n                    }\n                }\n\n                image\n                    .attr( 'src', imageSource )\n                    .removeAttr('data-lazy data-srcset data-sizes')\n                    .removeClass('slick-loading');\n\n                if ( _.options.adaptiveHeight === true ) {\n                    _.setPosition();\n                }\n\n                _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n                _.progressiveLazyLoad();\n\n            };\n\n            imageToLoad.onerror = function() {\n\n                if ( tryCount < 3 ) {\n\n                    /**\n                     * try to load the image 3 times,\n                     * leave a slight delay so we don't get\n                     * servers blocking the request.\n                     */\n                    setTimeout( function() {\n                        _.progressiveLazyLoad( tryCount + 1 );\n                    }, 500 );\n\n                } else {\n\n                    image\n                        .removeAttr( 'data-lazy' )\n                        .removeClass( 'slick-loading' )\n                        .addClass( 'slick-lazyload-error' );\n\n                    _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n                    _.progressiveLazyLoad();\n\n                }\n\n            };\n\n            imageToLoad.src = imageSource;\n\n        } else {\n\n            _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n        }\n\n    };\n\n    Slick.prototype.refresh = function( initializing ) {\n\n        var _ = this, currentSlide, lastVisibleIndex;\n\n        lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n        // in non-infinite sliders, we don't want to go past the\n        // last visible index.\n        if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n            _.currentSlide = lastVisibleIndex;\n        }\n\n        // if less slides than to show, go to start.\n        if ( _.slideCount <= _.options.slidesToShow ) {\n            _.currentSlide = 0;\n\n        }\n\n        currentSlide = _.currentSlide;\n\n        _.destroy(true);\n\n        $.extend(_, _.initials, { currentSlide: currentSlide });\n\n        _.init();\n\n        if( !initializing ) {\n\n            _.changeSlide({\n                data: {\n                    message: 'index',\n                    index: currentSlide\n                }\n            }, false);\n\n        }\n\n    };\n\n    Slick.prototype.registerBreakpoints = function() {\n\n        var _ = this, breakpoint, currentBreakpoint, l,\n            responsiveSettings = _.options.responsive || null;\n\n        if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n            _.respondTo = _.options.respondTo || 'window';\n\n            for ( breakpoint in responsiveSettings ) {\n\n                l = _.breakpoints.length-1;\n\n                if (responsiveSettings.hasOwnProperty(breakpoint)) {\n                    currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n                    // loop through the breakpoints and cut out any existing\n                    // ones with the same breakpoint number, we don't want dupes.\n                    while( l >= 0 ) {\n                        if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n                            _.breakpoints.splice(l,1);\n                        }\n                        l--;\n                    }\n\n                    _.breakpoints.push(currentBreakpoint);\n                    _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n                }\n\n            }\n\n            _.breakpoints.sort(function(a, b) {\n                return ( _.options.mobileFirst ) ? a-b : b-a;\n            });\n\n        }\n\n    };\n\n    Slick.prototype.reinit = function() {\n\n        var _ = this;\n\n        _.$slides =\n            _.$slideTrack\n                .children(_.options.slide)\n                .addClass('slick-slide');\n\n        _.slideCount = _.$slides.length;\n\n        if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n            _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n        }\n\n        if (_.slideCount <= _.options.slidesToShow) {\n            _.currentSlide = 0;\n        }\n\n        _.registerBreakpoints();\n\n        _.setProps();\n        _.setupInfinite();\n        _.buildArrows();\n        _.updateArrows();\n        _.initArrowEvents();\n        _.buildDots();\n        _.updateDots();\n        _.initDotEvents();\n        _.cleanUpSlideEvents();\n        _.initSlideEvents();\n\n        _.checkResponsive(false, true);\n\n        if (_.options.focusOnSelect === true) {\n            $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n        }\n\n        _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n        _.setPosition();\n        _.focusHandler();\n\n        _.paused = !_.options.autoplay;\n        _.autoPlay();\n\n        _.$slider.trigger('reInit', [_]);\n\n    };\n\n    Slick.prototype.resize = function() {\n\n        var _ = this;\n\n        if ($(window).width() !== _.windowWidth) {\n            clearTimeout(_.windowDelay);\n            _.windowDelay = window.setTimeout(function() {\n                _.windowWidth = $(window).width();\n                _.checkResponsive();\n                if( !_.unslicked ) { _.setPosition(); }\n            }, 50);\n        }\n    };\n\n    Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n        var _ = this;\n\n        if (typeof(index) === 'boolean') {\n            removeBefore = index;\n            index = removeBefore === true ? 0 : _.slideCount - 1;\n        } else {\n            index = removeBefore === true ? --index : index;\n        }\n\n        if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n            return false;\n        }\n\n        _.unload();\n\n        if (removeAll === true) {\n            _.$slideTrack.children().remove();\n        } else {\n            _.$slideTrack.children(this.options.slide).eq(index).remove();\n        }\n\n        _.$slides = _.$slideTrack.children(this.options.slide);\n\n        _.$slideTrack.children(this.options.slide).detach();\n\n        _.$slideTrack.append(_.$slides);\n\n        _.$slidesCache = _.$slides;\n\n        _.reinit();\n\n    };\n\n    Slick.prototype.setCSS = function(position) {\n\n        var _ = this,\n            positionProps = {},\n            x, y;\n\n        if (_.options.rtl === true) {\n            position = -position;\n        }\n        x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n        y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n        positionProps[_.positionProp] = position;\n\n        if (_.transformsEnabled === false) {\n            _.$slideTrack.css(positionProps);\n        } else {\n            positionProps = {};\n            if (_.cssTransitions === false) {\n                positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n                _.$slideTrack.css(positionProps);\n            } else {\n                positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n                _.$slideTrack.css(positionProps);\n            }\n        }\n\n    };\n\n    Slick.prototype.setDimensions = function() {\n\n        var _ = this;\n\n        if (_.options.vertical === false) {\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: ('0px ' + _.options.centerPadding)\n                });\n            }\n        } else {\n            _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n            if (_.options.centerMode === true) {\n                _.$list.css({\n                    padding: (_.options.centerPadding + ' 0px')\n                });\n            }\n        }\n\n        _.listWidth = _.$list.width();\n        _.listHeight = _.$list.height();\n\n\n        if (_.options.vertical === false && _.options.variableWidth === false) {\n            _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n            _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n        } else if (_.options.variableWidth === true) {\n            _.$slideTrack.width(5000 * _.slideCount);\n        } else {\n            _.slideWidth = Math.ceil(_.listWidth);\n            _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n        }\n\n        var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n        if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n    };\n\n    Slick.prototype.setFade = function() {\n\n        var _ = this,\n            targetLeft;\n\n        _.$slides.each(function(index, element) {\n            targetLeft = (_.slideWidth * index) * -1;\n            if (_.options.rtl === true) {\n                $(element).css({\n                    position: 'relative',\n                    right: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            } else {\n                $(element).css({\n                    position: 'relative',\n                    left: targetLeft,\n                    top: 0,\n                    zIndex: _.options.zIndex - 2,\n                    opacity: 0\n                });\n            }\n        });\n\n        _.$slides.eq(_.currentSlide).css({\n            zIndex: _.options.zIndex - 1,\n            opacity: 1\n        });\n\n    };\n\n    Slick.prototype.setHeight = function() {\n\n        var _ = this;\n\n        if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n            var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n            _.$list.css('height', targetHeight);\n        }\n\n    };\n\n    Slick.prototype.setOption =\n    Slick.prototype.slickSetOption = function() {\n\n        /**\n         * accepts arguments in format of:\n         *\n         *  - for changing a single option's value:\n         *     .slick(\"setOption\", option, value, refresh )\n         *\n         *  - for changing a set of responsive options:\n         *     .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n         *\n         *  - for updating multiple values at once (not responsive)\n         *     .slick(\"setOption\", { 'option': value, ... }, refresh )\n         */\n\n        var _ = this, l, item, option, value, refresh = false, type;\n\n        if( $.type( arguments[0] ) === 'object' ) {\n\n            option =  arguments[0];\n            refresh = arguments[1];\n            type = 'multiple';\n\n        } else if ( $.type( arguments[0] ) === 'string' ) {\n\n            option =  arguments[0];\n            value = arguments[1];\n            refresh = arguments[2];\n\n            if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n                type = 'responsive';\n\n            } else if ( typeof arguments[1] !== 'undefined' ) {\n\n                type = 'single';\n\n            }\n\n        }\n\n        if ( type === 'single' ) {\n\n            _.options[option] = value;\n\n\n        } else if ( type === 'multiple' ) {\n\n            $.each( option , function( opt, val ) {\n\n                _.options[opt] = val;\n\n            });\n\n\n        } else if ( type === 'responsive' ) {\n\n            for ( item in value ) {\n\n                if( $.type( _.options.responsive ) !== 'array' ) {\n\n                    _.options.responsive = [ value[item] ];\n\n                } else {\n\n                    l = _.options.responsive.length-1;\n\n                    // loop through the responsive object and splice out duplicates.\n                    while( l >= 0 ) {\n\n                        if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n                            _.options.responsive.splice(l,1);\n\n                        }\n\n                        l--;\n\n                    }\n\n                    _.options.responsive.push( value[item] );\n\n                }\n\n            }\n\n        }\n\n        if ( refresh ) {\n\n            _.unload();\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.setPosition = function() {\n\n        var _ = this;\n\n        _.setDimensions();\n\n        _.setHeight();\n\n        if (_.options.fade === false) {\n            _.setCSS(_.getLeft(_.currentSlide));\n        } else {\n            _.setFade();\n        }\n\n        _.$slider.trigger('setPosition', [_]);\n\n    };\n\n    Slick.prototype.setProps = function() {\n\n        var _ = this,\n            bodyStyle = document.body.style;\n\n        _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n        if (_.positionProp === 'top') {\n            _.$slider.addClass('slick-vertical');\n        } else {\n            _.$slider.removeClass('slick-vertical');\n        }\n\n        if (bodyStyle.WebkitTransition !== undefined ||\n            bodyStyle.MozTransition !== undefined ||\n            bodyStyle.msTransition !== undefined) {\n            if (_.options.useCSS === true) {\n                _.cssTransitions = true;\n            }\n        }\n\n        if ( _.options.fade ) {\n            if ( typeof _.options.zIndex === 'number' ) {\n                if( _.options.zIndex < 3 ) {\n                    _.options.zIndex = 3;\n                }\n            } else {\n                _.options.zIndex = _.defaults.zIndex;\n            }\n        }\n\n        if (bodyStyle.OTransform !== undefined) {\n            _.animType = 'OTransform';\n            _.transformType = '-o-transform';\n            _.transitionType = 'OTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.MozTransform !== undefined) {\n            _.animType = 'MozTransform';\n            _.transformType = '-moz-transform';\n            _.transitionType = 'MozTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.webkitTransform !== undefined) {\n            _.animType = 'webkitTransform';\n            _.transformType = '-webkit-transform';\n            _.transitionType = 'webkitTransition';\n            if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n        }\n        if (bodyStyle.msTransform !== undefined) {\n            _.animType = 'msTransform';\n            _.transformType = '-ms-transform';\n            _.transitionType = 'msTransition';\n            if (bodyStyle.msTransform === undefined) _.animType = false;\n        }\n        if (bodyStyle.transform !== undefined && _.animType !== false) {\n            _.animType = 'transform';\n            _.transformType = 'transform';\n            _.transitionType = 'transition';\n        }\n        _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n    };\n\n\n    Slick.prototype.setSlideClasses = function(index) {\n\n        var _ = this,\n            centerOffset, allSlides, indexOffset, remainder;\n\n        allSlides = _.$slider\n            .find('.slick-slide')\n            .removeClass('slick-active slick-center slick-current')\n            .attr('aria-hidden', 'true');\n\n        _.$slides\n            .eq(index)\n            .addClass('slick-current');\n\n        if (_.options.centerMode === true) {\n\n            var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n            centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n            if (_.options.infinite === true) {\n\n                if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n                    _.$slides\n                        .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    indexOffset = _.options.slidesToShow + index;\n                    allSlides\n                        .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n                if (index === 0) {\n\n                    allSlides\n                        .eq(allSlides.length - 1 - _.options.slidesToShow)\n                        .addClass('slick-center');\n\n                } else if (index === _.slideCount - 1) {\n\n                    allSlides\n                        .eq(_.options.slidesToShow)\n                        .addClass('slick-center');\n\n                }\n\n            }\n\n            _.$slides\n                .eq(index)\n                .addClass('slick-center');\n\n        } else {\n\n            if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n                _.$slides\n                    .slice(index, index + _.options.slidesToShow)\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else if (allSlides.length <= _.options.slidesToShow) {\n\n                allSlides\n                    .addClass('slick-active')\n                    .attr('aria-hidden', 'false');\n\n            } else {\n\n                remainder = _.slideCount % _.options.slidesToShow;\n                indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n                if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n                    allSlides\n                        .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                } else {\n\n                    allSlides\n                        .slice(indexOffset, indexOffset + _.options.slidesToShow)\n                        .addClass('slick-active')\n                        .attr('aria-hidden', 'false');\n\n                }\n\n            }\n\n        }\n\n        if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n            _.lazyLoad();\n        }\n    };\n\n    Slick.prototype.setupInfinite = function() {\n\n        var _ = this,\n            i, slideIndex, infiniteCount;\n\n        if (_.options.fade === true) {\n            _.options.centerMode = false;\n        }\n\n        if (_.options.infinite === true && _.options.fade === false) {\n\n            slideIndex = null;\n\n            if (_.slideCount > _.options.slidesToShow) {\n\n                if (_.options.centerMode === true) {\n                    infiniteCount = _.options.slidesToShow + 1;\n                } else {\n                    infiniteCount = _.options.slidesToShow;\n                }\n\n                for (i = _.slideCount; i > (_.slideCount -\n                        infiniteCount); i -= 1) {\n                    slideIndex = i - 1;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex - _.slideCount)\n                        .prependTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                for (i = 0; i < infiniteCount  + _.slideCount; i += 1) {\n                    slideIndex = i;\n                    $(_.$slides[slideIndex]).clone(true).attr('id', '')\n                        .attr('data-slick-index', slideIndex + _.slideCount)\n                        .appendTo(_.$slideTrack).addClass('slick-cloned');\n                }\n                _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n                    $(this).attr('id', '');\n                });\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.interrupt = function( toggle ) {\n\n        var _ = this;\n\n        if( !toggle ) {\n            _.autoPlay();\n        }\n        _.interrupted = toggle;\n\n    };\n\n    Slick.prototype.selectHandler = function(event) {\n\n        var _ = this;\n\n        var targetElement =\n            $(event.target).is('.slick-slide') ?\n                $(event.target) :\n                $(event.target).parents('.slick-slide');\n\n        var index = parseInt(targetElement.attr('data-slick-index'));\n\n        if (!index) index = 0;\n\n        if (_.slideCount <= _.options.slidesToShow) {\n\n            _.slideHandler(index, false, true);\n            return;\n\n        }\n\n        _.slideHandler(index);\n\n    };\n\n    Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n        var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n            _ = this, navTarget;\n\n        sync = sync || false;\n\n        if (_.animating === true && _.options.waitForAnimate === true) {\n            return;\n        }\n\n        if (_.options.fade === true && _.currentSlide === index) {\n            return;\n        }\n\n        if (sync === false) {\n            _.asNavFor(index);\n        }\n\n        targetSlide = index;\n        targetLeft = _.getLeft(targetSlide);\n        slideLeft = _.getLeft(_.currentSlide);\n\n        _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n        if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n            if (_.options.fade === false) {\n                targetSlide = _.currentSlide;\n                if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n                    _.animateSlide(slideLeft, function() {\n                        _.postSlide(targetSlide);\n                    });\n                } else {\n                    _.postSlide(targetSlide);\n                }\n            }\n            return;\n        }\n\n        if ( _.options.autoplay ) {\n            clearInterval(_.autoPlayTimer);\n        }\n\n        if (targetSlide < 0) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n            } else {\n                animSlide = _.slideCount + targetSlide;\n            }\n        } else if (targetSlide >= _.slideCount) {\n            if (_.slideCount % _.options.slidesToScroll !== 0) {\n                animSlide = 0;\n            } else {\n                animSlide = targetSlide - _.slideCount;\n            }\n        } else {\n            animSlide = targetSlide;\n        }\n\n        _.animating = true;\n\n        _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n        oldSlide = _.currentSlide;\n        _.currentSlide = animSlide;\n\n        _.setSlideClasses(_.currentSlide);\n\n        if ( _.options.asNavFor ) {\n\n            navTarget = _.getNavTarget();\n            navTarget = navTarget.slick('getSlick');\n\n            if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n                navTarget.setSlideClasses(_.currentSlide);\n            }\n\n        }\n\n        _.updateDots();\n        _.updateArrows();\n\n        if (_.options.fade === true) {\n            if (dontAnimate !== true) {\n\n                _.fadeSlideOut(oldSlide);\n\n                _.fadeSlide(animSlide, function() {\n                    _.postSlide(animSlide);\n                });\n\n            } else {\n                _.postSlide(animSlide);\n            }\n            _.animateHeight();\n            return;\n        }\n\n        if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n            _.animateSlide(targetLeft, function() {\n                _.postSlide(animSlide);\n            });\n        } else {\n            _.postSlide(animSlide);\n        }\n\n    };\n\n    Slick.prototype.startLoad = function() {\n\n        var _ = this;\n\n        if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$prevArrow.hide();\n            _.$nextArrow.hide();\n\n        }\n\n        if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n            _.$dots.hide();\n\n        }\n\n        _.$slider.addClass('slick-loading');\n\n    };\n\n    Slick.prototype.swipeDirection = function() {\n\n        var xDist, yDist, r, swipeAngle, _ = this;\n\n        xDist = _.touchObject.startX - _.touchObject.curX;\n        yDist = _.touchObject.startY - _.touchObject.curY;\n        r = Math.atan2(yDist, xDist);\n\n        swipeAngle = Math.round(r * 180 / Math.PI);\n        if (swipeAngle < 0) {\n            swipeAngle = 360 - Math.abs(swipeAngle);\n        }\n\n        if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n            return (_.options.rtl === false ? 'left' : 'right');\n        }\n        if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n            return (_.options.rtl === false ? 'right' : 'left');\n        }\n        if (_.options.verticalSwiping === true) {\n            if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n                return 'down';\n            } else {\n                return 'up';\n            }\n        }\n\n        return 'vertical';\n\n    };\n\n    Slick.prototype.swipeEnd = function(event) {\n\n        var _ = this,\n            slideCount,\n            direction;\n\n        _.dragging = false;\n        _.swiping = false;\n\n        if (_.scrolling) {\n            _.scrolling = false;\n            return false;\n        }\n\n        _.interrupted = false;\n        _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n        if ( _.touchObject.curX === undefined ) {\n            return false;\n        }\n\n        if ( _.touchObject.edgeHit === true ) {\n            _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n        }\n\n        if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n            direction = _.swipeDirection();\n\n            switch ( direction ) {\n\n                case 'left':\n                case 'down':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n                            _.currentSlide + _.getSlideCount();\n\n                    _.currentDirection = 0;\n\n                    break;\n\n                case 'right':\n                case 'up':\n\n                    slideCount =\n                        _.options.swipeToSlide ?\n                            _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n                            _.currentSlide - _.getSlideCount();\n\n                    _.currentDirection = 1;\n\n                    break;\n\n                default:\n\n\n            }\n\n            if( direction != 'vertical' ) {\n\n                _.slideHandler( slideCount );\n                _.touchObject = {};\n                _.$slider.trigger('swipe', [_, direction ]);\n\n            }\n\n        } else {\n\n            if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n                _.slideHandler( _.currentSlide );\n                _.touchObject = {};\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.swipeHandler = function(event) {\n\n        var _ = this;\n\n        if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n            return;\n        } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n            return;\n        }\n\n        _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n            event.originalEvent.touches.length : 1;\n\n        _.touchObject.minSwipe = _.listWidth / _.options\n            .touchThreshold;\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.minSwipe = _.listHeight / _.options\n                .touchThreshold;\n        }\n\n        switch (event.data.action) {\n\n            case 'start':\n                _.swipeStart(event);\n                break;\n\n            case 'move':\n                _.swipeMove(event);\n                break;\n\n            case 'end':\n                _.swipeEnd(event);\n                break;\n\n        }\n\n    };\n\n    Slick.prototype.swipeMove = function(event) {\n\n        var _ = this,\n            edgeWasHit = false,\n            curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n        touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n        if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n            return false;\n        }\n\n        curLeft = _.getLeft(_.currentSlide);\n\n        _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n        _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n        _.touchObject.swipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n        verticalSwipeLength = Math.round(Math.sqrt(\n            Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n        if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n            _.scrolling = true;\n            return false;\n        }\n\n        if (_.options.verticalSwiping === true) {\n            _.touchObject.swipeLength = verticalSwipeLength;\n        }\n\n        swipeDirection = _.swipeDirection();\n\n        if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n            _.swiping = true;\n            event.preventDefault();\n        }\n\n        positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n        if (_.options.verticalSwiping === true) {\n            positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n        }\n\n\n        swipeLength = _.touchObject.swipeLength;\n\n        _.touchObject.edgeHit = false;\n\n        if (_.options.infinite === false) {\n            if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n                swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n                _.touchObject.edgeHit = true;\n            }\n        }\n\n        if (_.options.vertical === false) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        } else {\n            _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n        }\n        if (_.options.verticalSwiping === true) {\n            _.swipeLeft = curLeft + swipeLength * positionOffset;\n        }\n\n        if (_.options.fade === true || _.options.touchMove === false) {\n            return false;\n        }\n\n        if (_.animating === true) {\n            _.swipeLeft = null;\n            return false;\n        }\n\n        _.setCSS(_.swipeLeft);\n\n    };\n\n    Slick.prototype.swipeStart = function(event) {\n\n        var _ = this,\n            touches;\n\n        _.interrupted = true;\n\n        if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n            _.touchObject = {};\n            return false;\n        }\n\n        if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n            touches = event.originalEvent.touches[0];\n        }\n\n        _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n        _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n        _.dragging = true;\n\n    };\n\n    Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n        var _ = this;\n\n        if (_.$slidesCache !== null) {\n\n            _.unload();\n\n            _.$slideTrack.children(this.options.slide).detach();\n\n            _.$slidesCache.appendTo(_.$slideTrack);\n\n            _.reinit();\n\n        }\n\n    };\n\n    Slick.prototype.unload = function() {\n\n        var _ = this;\n\n        $('.slick-cloned', _.$slider).remove();\n\n        if (_.$dots) {\n            _.$dots.remove();\n        }\n\n        if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n            _.$prevArrow.remove();\n        }\n\n        if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n            _.$nextArrow.remove();\n        }\n\n        _.$slides\n            .removeClass('slick-slide slick-active slick-visible slick-current')\n            .attr('aria-hidden', 'true')\n            .css('width', '');\n\n    };\n\n    Slick.prototype.unslick = function(fromBreakpoint) {\n\n        var _ = this;\n        _.$slider.trigger('unslick', [_, fromBreakpoint]);\n        _.destroy();\n\n    };\n\n    Slick.prototype.updateArrows = function() {\n\n        var _ = this,\n            centerOffset;\n\n        centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n        if ( _.options.arrows === true &&\n            _.slideCount > _.options.slidesToShow &&\n            !_.options.infinite ) {\n\n            _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n            _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            if (_.currentSlide === 0) {\n\n                _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n                _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n                _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n            }\n\n        }\n\n    };\n\n    Slick.prototype.updateDots = function() {\n\n        var _ = this;\n\n        if (_.$dots !== null) {\n\n            _.$dots\n                .find('li')\n                    .removeClass('slick-active')\n                    .end();\n\n            _.$dots\n                .find('li')\n                .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n                .addClass('slick-active');\n\n        }\n\n    };\n\n    Slick.prototype.visibility = function() {\n\n        var _ = this;\n\n        if ( _.options.autoplay ) {\n\n            if ( document[_.hidden] ) {\n\n                _.interrupted = true;\n\n            } else {\n\n                _.interrupted = false;\n\n            }\n\n        }\n\n    };\n\n    $.fn.slick = function() {\n        var _ = this,\n            opt = arguments[0],\n            args = Array.prototype.slice.call(arguments, 1),\n            l = _.length,\n            i,\n            ret;\n        for (i = 0; i < l; i++) {\n            if (typeof opt == 'object' || typeof opt == 'undefined')\n                _[i].slick = new Slick(_[i], opt);\n            else\n                ret = _[i].slick[opt].apply(_[i].slick, args);\n            if (typeof ret != 'undefined') return ret;\n        }\n        return _;\n    };\n\n}));\n"]}