{"version":3,"sources":["functions.js","foundation.js","foundation.offcanvas.js","jquery.bxslider.js"],"names":["googleTranslateElementInit","google","translate","TranslateElement","pageLanguage","layout","InlineLayout","SIMPLE","$","window","document","undefined","removeQuotes","string","String","replace","header_helpers","class_array","i","length","head","has","append","FastClick","body","attach","S","selector","context","cont","jquery","querySelectorAll","attr_name","init","arr","push","this","namespace","name","join","add_namespace","str","parts","split","reverse","bindings","method","options","self","should_bind_events","data","scope","is","extend","settings","data_options","events","each","call","single_image_loaded","image","callback","loaded","bindLoad","one","test","navigator","userAgent","src","attr","param","match","Date","getTime","complete","readyState","matchMedia","doc","bool","docElem","documentElement","refNode","firstElementChild","firstChild","fakeBody","createElement","div","id","style","cssText","background","appendChild","q","innerHTML","insertBefore","offsetWidth","removeChild","matches","media","raf","animating","requestAnimationFrame","jqueryFxAvailable","jQuery","fx","tick","lastTime","vendors","cancelAnimationFrame","timer","timers","stop","currTime","timeToCall","Math","max","setTimeout","clearTimeout","Foundation","version","media_queries","small","css","medium","large","xlarge","xxlarge","stylesheet","appendTo","sheet","global","libraries","response","args","responses","rtl","set_namespace","libs","hasOwnProperty","init_lib","lib","patch","defaults","apply","Array","utils","inherit","methods","methods_arr","throttle","func","delay","arguments","debounce","immediate","timeout","result","later","callNow","el","data_attr_name","isNumber","o","isNaN","trim","ii","p","opts_arr","opts","cached_options","slice","indexOf","parseInt","parseFloat","register_media","media_class","add_custom_rule","rule","insertRule","cssRules","query","image_loaded","images","unloaded","random_str","fidx","prefix","toString","fn","foundation","prototype","concat","offcanvas","open_method","close_on_click","move_class","right_postfix","left_postfix","off","on","e","click_toggle_class","get_settings","hide","get_wrapper","click_remove_class","toggle","class_name","$off_canvas","show","trigger","addClass","removeClass","preventDefault","target","closest","reflow","plugin","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","easing","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","bxSlider","slider","windowWidth","width","windowHeight","height","children","floor","random","active","index","carousel","minThreshold","maxThreshold","working","interval","animProp","usingCSS","props","cssPrefix","toLowerCase","setup","wrap","viewport","parent","loader","prepend","position","getNumberSlidesShowing","overflow","maxWidth","getViewportMaxWidth","margin","float","listStyle","getSlideWidth","zIndex","display","eq","appendCaptions","last","getPagerQty","fitVids","preloadSelector","appendPager","appendControls","appendControlsAuto","after","loadElements","start","total","find","count","load","sliceAppend","clone","slicePrepend","remove","setSlidePosition","getViewportHeight","redrawSlider","initialized","bind","resizeWindow","initAuto","initTicker","updatePagerActive","updateDirectionControls","initTouch","currentIndex","getMoveBy","add","outerHeight","map","get","newElWidth","wrapWidth","slidesShowing","childWidth","first","pagerQty","ceil","breakPoint","counter","lastChild","setPositionProperty","left","outerWidth","lastShowingIndex","top","value","type","duration","params","propValue","unbind","updateAfterSlideTransition","tickerLoop","animateObj","animate","populatePager","pagerHtml","linkContent","isFunction","pagerEl","html","clickPagerBind","next","prev","clickNextBind","clickPrevBind","directionEl","autoEl","clickStartBind","clickStopBind","updateAutoControls","title","stopAuto","goToNextSlide","goToPrevSlide","startAuto","pagerLink","currentTarget","pagerIndex","goToSlide","slideIndex","len","oldIndex","state","hover","autoPaused","startPosition","totalDimens","ratio","property","newSpeed","abs","resumeSpeed","reset","animateProperty","resetValue","touch","x","y","end","onTouchStart","originalPos","orig","originalEvent","changedTouches","pageX","pageY","onTouchMove","onTouchEnd","xMovement","yMovement","change","distance","windowWidthNew","windowHeightNew","direction","filter","fadeOut","fadeIn","moveBy","requestEl","preventControlUpdate","setInterval","clearInterval","getCurrentSlide","getCurrentSlideElement","getSlideCount","destroySlider","removeAttr","unwrap","reloadSlider","noop","console","ready","equalheight","container","$el","currentTallest","currentRowStart","rowDivs","topPostion","currentDiv","resize","click","log","slideToggle"],"mappings":"AA0EA,QAAAA,8BACA,GAAAC,QAAAC,UAAAC,kBAAAC,aAAA,KAAAC,OAAAJ,OAAAC,UAAAC,iBAAAG,aAAAC,QAAA,6BCnEA,SAAAC,EAAAC,EAAAC,EAAAC,GACA,YAoQA,SAAAC,GAAAC,GAKA,OAJA,gBAAAA,IAAAA,YAAAC,WACAD,EAAAA,EAAAE,QAAA,gCAAA,KAGAF,EAvQA,GAAAG,GAAA,SAAAC,GAIA,IAHA,GAAAC,GAAAD,EAAAE,OACAC,EAAAZ,EAAA,QAEAU,KACA,IAAAE,EAAAC,IAAA,IAAAJ,EAAAC,IAAAC,QACAC,EAAAE,OAAA,gBAAAL,EAAAC,GAAA,QAKAF,IACA,sBACA,uBACA,sBACA,uBACA,wBACA,wCAIAR,EAAA,WACA,mBAAAe,YAEA,mBAAAb,GAAAc,MACAD,UAAAE,OAAAf,EAAAc,OAQA,IAAAE,GAAA,SAAAC,EAAAC,GACA,GAAA,gBAAAD,GAAA,CACA,GAAAC,EAAA,CACA,GAAAC,EACA,IAAAD,EAAAE,QAEA,GADAD,EAAAD,EAAA,IACAC,EAAA,MAAAD,OAEAC,GAAAD,CAEA,OAAApB,GAAAqB,EAAAE,iBAAAJ,IAGA,MAAAnB,GAAAE,EAAAqB,iBAAAJ,IAGA,MAAAnB,GAAAmB,EAAAC,IAKAI,EAAA,SAAAC,GACA,GAAAC,KAKA,OAJAD,IAAAC,EAAAC,KAAA,QACAC,KAAAC,UAAAlB,OAAA,GAAAe,EAAAC,KAAAC,KAAAC,WACAH,EAAAC,KAAAC,KAAAE,MAEAJ,EAAAK,KAAA,MAGAC,EAAA,SAAAC,GAKA,IAJA,GAAAC,GAAAD,EAAAE,MAAA,KACAzB,EAAAwB,EAAAvB,OACAe,KAEAhB,KACA,IAAAA,EACAgB,EAAAC,KAAAO,EAAAxB,IAEAkB,KAAAC,UAAAlB,OAAA,EACAe,EAAAC,KAAAC,KAAAC,UAAAK,EAAAxB,IAEAgB,EAAAC,KAAAO,EAAAxB,GAKA,OAAAgB,GAAAU,UAAAL,KAAA,MAKAM,EAAA,SAAAC,EAAAC,GACA,GAAAC,GAAAZ,KACAa,GAAAvB,EAAAU,MAAAc,KAAAd,KAAAJ,WAAA,GAqBA,OAlBAN,GAAAU,KAAAe,OAAAC,GAAA,IAAAhB,KAAAJ,YAAA,MACAN,EAAAU,KAAAe,OAAAD,KAAAd,KAAAJ,WAAA,GAAA,QAAAxB,EAAA6C,UAAAjB,KAAAkB,SAAAP,GAAAD,EAAAV,KAAAmB,aAAA7B,EAAAU,KAAAe,UAEAF,GACAb,KAAAoB,OAAApB,KAAAe,QAIAzB,EAAA,IAAAU,KAAAJ,YAAA,IAAAI,KAAAe,OAAAM,KAAA,WACA,GAAAR,IAAAvB,EAAAU,MAAAc,KAAAF,EAAAhB,WAAA,GAAA,QACAN,GAAAU,MAAAc,KAAAF,EAAAhB,WAAA,GAAA,QAAAxB,EAAA6C,UAAAL,EAAAM,SAAAP,GAAAD,EAAAE,EAAAO,aAAA7B,EAAAU,SAEAa,GACAD,EAAAQ,OAAApB,QAKA,gBAAAU,GACAV,KAAAU,GAAAY,KAAAtB,KAAAW,GADA,QAMAY,EAAA,SAAAC,EAAAC,GACA,QAAAC,KACAD,EAAAD,EAAA,IAGA,QAAAG,KAGA,GAFA3B,KAAA4B,IAAA,OAAAF,GAEA,mBAAAG,KAAAC,UAAAC,WAAA,CACA,GAAAC,GAAAhC,KAAAiC,KAAA,OACAC,EAAAF,EAAAG,MAAA,MAAA,IAAA,GAEAD,IAAA,WAAA,GAAAE,OAAAC,UACArC,KAAAiC,KAAA,MAAAD,EAAAE,IAIA,MAAAV,GAAAS,KAAA,YAKAT,EAAA,GAAAc,UAAA,IAAAd,EAAA,GAAAe,WACAb,IAEAC,EAAAL,KAAAE,QAPAE,KAeArD,GAAAmE,WAAAnE,EAAAmE,YAAA,SAAAC,GAIA,GAAAC,GACAC,EAAAF,EAAAG,gBACAC,EAAAF,EAAAG,mBAAAH,EAAAI,WAEAC,EAAAP,EAAAQ,cAAA,QACAC,EAAAT,EAAAQ,cAAA,MAOA,OALAC,GAAAC,GAAA,YACAD,EAAAE,MAAAC,QAAA,+BACAL,EAAAI,MAAAE,WAAA,OACAN,EAAAO,YAAAL,GAEA,SAAAM,GAQA,MANAN,GAAAO,UAAA,sBAAAD,EAAA,yCAEAb,EAAAe,aAAAV,EAAAH,GACAH,EAAA,KAAAQ,EAAAS,YACAhB,EAAAiB,YAAAZ,IAGAa,QAAAnB,EACAoB,MAAAN,KAKAlF,GAWA,WAqBA,QAAAyF,KACAC,IACAC,EAAAF,GAEAG,GACAC,OAAAC,GAAAC,QAZA,IAPA,GAAAL,GACAM,EAAA,EACAC,GAAA,SAAA,OACAN,EAAA5F,EAAA4F,sBACAO,EAAAnG,EAAAmG,qBACAN,EAAA,mBAAAC,QAAAC,GAEAE,EAAAC,EAAAxF,SAAAkF,EAAAK,IACAL,EAAA5F,EAAAkG,EAAAD,GAAA,yBACAE,EAAAA,GACAnG,EAAAkG,EAAAD,GAAA,yBACAjG,EAAAkG,EAAAD,GAAA,8BAaAL,IAEA5F,EAAA4F,sBAAAA,EACA5F,EAAAmG,qBAAAA,EAEAN,IACAC,OAAAC,GAAAK,MAAA,SAAAA,GACAA,KAAAN,OAAAO,OAAA3E,KAAA0E,KAAAT,IACAA,GAAA,EACAD,MAIAI,OAAAC,GAAAO,KAAA,WACAX,GAAA,MAKA3F,EAAA4F,sBAAA,SAAAxC,GACA,GAAAmD,IAAA,GAAAxC,OAAAC,UACAwC,EAAAC,KAAAC,IAAA,EAAA,IAAAH,EAAAN,IACAnB,EAAA9E,EAAA2G,WAAA,WACAvD,EAAAmD,EAAAC,IACAA,EAEA,OADAP,GAAAM,EAAAC,EACA1B,GAGA9E,EAAAmG,qBAAA,SAAArB,GACA8B,aAAA9B,MAKAgB,QAWA9F,EAAA6G,YACAhF,KAAA,aAEAiF,QAAA,QAEAC,eACAC,MAAA/F,EAAA,wBAAAgG,IAAA,eAAA3G,QAAA,kCAAA,IACA4G,OAAAjG,EAAA,yBAAAgG,IAAA,eAAA3G,QAAA,kCAAA,IACA6G,MAAAlG,EAAA,wBAAAgG,IAAA,eAAA3G,QAAA,kCAAA,IACA8G,OAAAnG,EAAA,yBAAAgG,IAAA,eAAA3G,QAAA,kCAAA,IACA+G,QAAApG,EAAA,0BAAAgG,IAAA,eAAA3G,QAAA,kCAAA,KAGAgH,WAAAvH,EAAA,mBAAAwH,SAAA,QAAA,GAAAC,MAEAC,QACA7F,UAAA1B,GAGAsB,KAAA,SAAAkB,EAAAgF,EAAArF,EAAAC,EAAAqF,GACA,GAAAC,IAAAlF,EAAAL,EAAAC,EAAAqF,GACAE,IAUA,IAPAlG,KAAAmG,IAAA,OAAAtE,KAAAvC,EAAA,QAAA2C,KAAA,QAGAjC,KAAAe,MAAAA,GAAAf,KAAAe,MAEAf,KAAAoG,gBAEAL,GAAA,gBAAAA,KAAA,UAAAlE,KAAAkE,GACA/F,KAAAqG,KAAAC,eAAAP,IACAG,EAAAnG,KAAAC,KAAAuG,SAAAR,EAAAE,QAGA,KAAA,GAAAO,KAAAxG,MAAAqG,KACAH,EAAAnG,KAAAC,KAAAuG,SAAAC,EAAAT,GAIA,OAAAhF,IAGAwF,SAAA,SAAAC,EAAAP,GACA,MAAAjG,MAAAqG,KAAAC,eAAAE,IACAxG,KAAAyG,MAAAzG,KAAAqG,KAAAG,IAEAP,GAAAA,EAAAK,eAAAE,IACA,mBAAAxG,MAAAqG,KAAAG,GAAAtF,SACA9C,EAAA6C,QAAA,EAAAjB,KAAAqG,KAAAG,GAAAtF,SAAA+E,EAAAO,IAEA,mBAAAxG,MAAAqG,KAAAG,GAAAE,UACAtI,EAAA6C,QAAA,EAAAjB,KAAAqG,KAAAG,GAAAE,SAAAT,EAAAO,IAEAxG,KAAAqG,KAAAG,GAAA3G,KAAA8G,MAAA3G,KAAAqG,KAAAG,IAAAxG,KAAAe,MAAAkF,EAAAO,OAGAP,EAAAA,YAAAW,OAAAX,EAAA,GAAAW,OAAAX,GACAjG,KAAAqG,KAAAG,GAAA3G,KAAA8G,MAAA3G,KAAAqG,KAAAG,GAAAP,KAGA,cAGAQ,MAAA,SAAAD,GACAA,EAAAzF,MAAAf,KAAAe,MACAyF,EAAAvG,UAAAD,KAAA8F,OAAA7F,UACAuG,EAAAL,IAAAnG,KAAAmG,IACAK,EAAA,aAAAxG,KAAA6G,MAAA1F,aACAqF,EAAA,UAAA5G,EACA4G,EAAA,cAAApG,EACAoG,EAAA,SAAA/F,EACA+F,EAAA,EAAAxG,KAAA6G,MAAAvH,GAGAwH,QAAA,SAAA/F,EAAAgG,GAIA,IAHA,GAAAC,GAAAD,EAAAxG,MAAA,KACAzB,EAAAkI,EAAAjI,OAEAD,KACAkB,KAAA6G,MAAAP,eAAAU,EAAAlI,MACAiC,EAAAiG,EAAAlI,IAAAkB,KAAA6G,MAAAG,EAAAlI,MAKAsH,cAAA,WAeA,GAAAnG,GAAAD,KAAA8F,OAAA7F,YAAA1B,EAAAH,EAAA,wCAAAkH,IAAA,eAAAtF,KAAA8F,OAAA7F,SAIAD,MAAA8F,OAAA7F,UAAAA,IAAA1B,GAAA,SAAAsD,KAAA5B,GAAA,GAAAA,GAGAoG,QAGAQ,OAgBAvH,EAAAA,EAYA2H,SAAA,SAAAC,EAAAC,GACA,GAAA1C,GAAA,IAEA,OAAA,YACA,GAAAjF,GAAAQ,KAAAiG,EAAAmB,SAEA,OAAA3C,IACAA,EAAAO,WAAA,WACAkC,EAAAP,MAAAnH,EAAAyG,GACAxB,EAAA,MACA0C,MAmBAE,SAAA,SAAAH,EAAAC,EAAAG,GACA,GAAAC,GAAAC,CACA,OAAA,YACA,GAAAhI,GAAAQ,KAAAiG,EAAAmB,UACAK,EAAA,WACAF,EAAA,KACAD,IAAAE,EAAAN,EAAAP,MAAAnH,EAAAyG,KAEAyB,EAAAJ,IAAAC,CAIA,OAHAtC,cAAAsC,GACAA,EAAAvC,WAAAyC,EAAAN,GACAO,IAAAF,EAAAN,EAAAP,MAAAnH,EAAAyG,IACAuB,IAaArG,aAAA,SAAAwG,EAAAC,GAsBA,QAAAC,GAAAC,GACA,OAAAC,MAAAD,EAAA,IAAA,OAAAA,GAAA,KAAAA,GAAAA,KAAA,GAAAA,KAAA,EAGA,QAAAE,GAAA3H,GACA,MAAA,gBAAAA,GAAAjC,EAAA4J,KAAA3H,GACAA,EA3BAuH,EAAAA,GAAA,SACA,IAAAK,GAAAC,EAAAC,EAAAC,KACAjH,EAAA,SAAAwG,GACA,GAAA1H,GAAAiF,WAAAY,OAAA7F,SAEA,OACA0H,GAAA7G,KADAb,EAAAlB,OAAA,EACAkB,EAAA,IAAA2H,EAGAA,IAGAS,EAAAlH,EAAAwG,EAEA,IAAA,gBAAAU,GACA,MAAAA,EAeA,KAZAF,GAAAE,GAAA,KAAA9H,MAAA,KACA0H,EAAAE,EAAApJ,OAWAkJ,KACAC,EAAAC,EAAAF,GAAA1H,MAAA,KACA2H,GAAAA,EAAA,GAAAA,EAAAI,MAAA,GAAAnI,KAAA,MAEA,QAAA0B,KAAAqG,EAAA,MAAAA,EAAA,IAAA,GACA,SAAArG,KAAAqG,EAAA,MAAAA,EAAA,IAAA,GACAL,EAAAK,EAAA,MAEAA,EAAA,GADA,KAAAA,EAAA,GAAAK,QAAA,KACAC,SAAAN,EAAA,GAAA,IAEAO,WAAAP,EAAA,KAIA,IAAAA,EAAAnJ,QAAAmJ,EAAA,GAAAnJ,OAAA,IACAqJ,EAAAJ,EAAAE,EAAA,KAAAF,EAAAE,EAAA,IAIA,OAAAE,IAWAM,eAAA,SAAA5E,EAAA6E,GACAzD,WAAAE,cAAAtB,KAAAvF,IACAH,EAAA,QAAAc,OAAA,gBAAAyJ,EAAA,OACAzD,WAAAE,cAAAtB,GAAAtF,EAAAJ,EAAA,IAAAuK,GAAArD,IAAA,kBAYAsD,gBAAA,SAAAC,EAAA/E,GACA,GAAAA,IAAAvF,GAAA2G,WAAAS,WACAT,WAAAS,WAAAmD,WAAAD,EAAA3D,WAAAS,WAAAoD,SAAAhK,YACA,CACA,GAAAiK,GAAA9D,WAAAE,cAAAtB,EAEAkF,KAAAzK,GACA2G,WAAAS,WAAAmD,WAAA,UACA5D,WAAAE,cAAAtB,GAAA,KAAA+E,EAAA,QAYAI,aAAA,SAAAC,EAAAzH,GACA,GAAAb,GAAAZ,KACAmJ,EAAAD,EAAAnK,MAEA,KAAAoK,GACA1H,EAAAyH,GAGAA,EAAA7H,KAAA,WACAE,EAAAX,EAAAtB,EAAAU,MAAA,WACAmJ,GAAA,EACA,IAAAA,GACA1H,EAAAyH,QAeAE,WAAA,WAIA,MAHApJ,MAAAqJ,OAAArJ,KAAAqJ,KAAA,GACArJ,KAAAsJ,OAAAtJ,KAAAsJ,SAAAtJ,KAAAE,MAAA,MAAA,GAAAkC,OAAAmH,SAAA,KAAApJ,KAAA,KAEAH,KAAAsJ,QAAAtJ,KAAAqJ,QAAAE,SAAA,OAKAnL,EAAAoL,GAAAC,WAAA,WACA,GAAAxD,GAAAW,MAAA8C,UAAApB,MAAAhH,KAAA8F,UAAA,EAEA,OAAApH,MAAAqB,KAAA,WAEA,MADA6D,YAAArF,KAAA8G,MAAAzB,YAAAlF,MAAA2J,OAAA1D,IACAjG,SAIAmE,OAAA9F,OAAAA,OAAAC,UCpmBA,WACA,YAEA4G,YAAAmB,KAAAuD,WACA1J,KAAA,YAEAiF,QAAA,QAEAjE,UACA2I,YAAA,OACAC,gBAAA,GAGAjK,KAAA,SAAAkB,EAAAL,EAAAC,GACAX,KAAAS,SAAAC,EAAAC,IAGAS,OAAA,WACA,GAAAR,GAAAZ,KACAV,EAAAsB,EAAAtB,EACAyK,EAAA,GACAC,EAAA,GACAC,EAAA,EAEA,UAAAjK,KAAAkB,SAAA2I,aACAE,EAAA,QACAC,EAAA,QACAC,EAAA,QACA,YAAAjK,KAAAkB,SAAA2I,cACAE,EAAA,qBAGAzK,EAAAU,KAAAe,OAAAmJ,IAAA,cACAC,GAAA,wBAAA,0BAAA,SAAAC,GACAxJ,EAAAyJ,mBAAAD,EAAAL,EAAAC,KAEAG,GAAA,wBAAA,0BAAA,SAAAC,GACA,GAAAlJ,GAAAN,EAAA0J,aAAAF,EACAlJ,GAAA4I,gBACAlJ,EAAA2J,KAAAjJ,KAAAV,EAAAmJ,EAAAC,EAAApJ,EAAA4J,YAAAJ,MAGAD,GAAA,wBAAA,2BAAA,SAAAC,GACAxJ,EAAAyJ,mBAAAD,EAAAL,EAAAE,KAEAE,GAAA,wBAAA,2BAAA,SAAAC,GACA,GAAAlJ,GAAAN,EAAA0J,aAAAF,EACAlJ,GAAA4I,gBACAlJ,EAAA2J,KAAAjJ,KAAAV,EAAAmJ,EAAAE,EAAArJ,EAAA4J,YAAAJ,MAGAD,GAAA,wBAAA,mBAAA,SAAAC,GACAxJ,EAAA6J,mBAAAL,EAAAL,EAAAE,GACAD,GAAApJ,EAAA6J,mBAAAL,EAAAL,EAAAC,MAKAU,OAAA,SAAAC,EAAAC,GACAA,EAAAA,GAAA5K,KAAAwK,cACAI,EAAA5J,GAAA,IAAA2J,GACA3K,KAAAuK,KAAAI,EAAAC,GAEA5K,KAAA6K,KAAAF,EAAAC,IAIAC,KAAA,SAAAF,EAAAC,GACAA,EAAAA,GAAA5K,KAAAwK,cACAI,EAAAE,QAAA,QAAAA,QAAA,wBACAF,EAAAG,SAAAJ,IAGAJ,KAAA,SAAAI,EAAAC,GACAA,EAAAA,GAAA5K,KAAAwK,cACAI,EAAAE,QAAA,SAAAA,QAAA,yBACAF,EAAAI,YAAAL,IAGAN,mBAAA,SAAAD,EAAAO,GACAP,EAAAa,gBACA,IAAAL,GAAA5K,KAAAwK,YAAAJ,EACApK,MAAA0K,OAAAC,EAAAC,IAGAH,mBAAA,SAAAL,EAAAO,GACAP,EAAAa,gBACA,IAAAL,GAAA5K,KAAAwK,YAAAJ,EACApK,MAAAuK,KAAAI,EAAAC,IAGAN,aAAA,SAAAF,GACA,GAAAR,GAAA5J,KAAAV,EAAA8K,EAAAc,QAAAC,QAAA,IAAAnL,KAAAJ,YAAA,IACA,OAAAgK,GAAA9I,KAAAd,KAAAJ,WAAA,GAAA,UAAAI,KAAAkB,UAGAsJ,YAAA,SAAAJ,GACA,GAAAQ,GAAA5K,KAAAV,EAAA8K,EAAAA,EAAAc,OAAAlL,KAAAe,OAAAoK,QAAA,mBAKA,OAHA,KAAAP,EAAA7L,SACA6L,EAAA5K,KAAAV,EAAA,qBAEAsL,GAGAQ,OAAA,eAEAjH,OAAA9F,OAAAA,OAAAC,UCjGA,SAAAF,GAEA,GAAAiN,MAEA3E,GAGA4E,KAAA,aACAC,cAAA,GACAC,cAAA,EACAC,kBAAA,EACAC,MAAA,IACAC,OAAA,KACAC,YAAA,EACAC,WAAA,EACAC,aAAA,EACAC,UAAA,EACAC,QAAA,EACAC,aAAA,EACAC,gBAAA,EACAC,oBAAA,IACAC,OAAA,EACAC,QAAA,EACAC,cAAA,UACAC,YAAA,EACAC,YAAA,GACAC,aAAA,aAGAC,cAAA,EACAC,eAAA,GACAC,eAAA,EACAC,sBAAA,EACAC,sBAAA,EAGAC,OAAA,EACAC,UAAA,OACAC,oBAAA,MACAC,cAAA,KACAC,WAAA,KACAC,YAAA,KAGAC,UAAA,EACAC,SAAA,OACAC,SAAA,OACAC,aAAA,KACAC,aAAA,KACAC,cAAA,EACAC,UAAA,QACAC,SAAA,OACAC,qBAAA,EACAC,qBAAA,KAGAC,MAAA,EACAC,MAAA,IACAC,WAAA,EACAC,cAAA,OACAC,WAAA,EACAC,UAAA,EACAC,qBAAA,EAGAC,UAAA,EACAC,UAAA,EACAC,WAAA,EACAC,WAAA,EAGAC,aAAA,aACAC,cAAA,aACAC,aAAA,aACAC,YAAA,aACAC,YAAA,aACAC,eAAA,aAGA3Q,GAAAoL,GAAAwF,SAAA,SAAArO,GAEA,GAAA,GAAAX,KAAAjB,OAAA,MAAAiB,KAGA,IAAAA,KAAAjB,OAAA,EAEA,MADAiB,MAAAqB,KAAA,WAAAjD,EAAA4B,MAAAgP,SAAArO,KACAX,IAIA,IAAAiP,MAEAtH,EAAA3H,IACAqL,GAAA1D,GAAA3H,IAMA,IAAAkP,GAAA9Q,EAAAC,QAAA8Q,QACAC,EAAAhR,EAAAC,QAAAgR,SAaAxP,EAAA,WAEAoP,EAAA/N,SAAA9C,EAAA6C,UAAAyF,EAAA/F,GAEAsO,EAAA/N,SAAAuN,WAAAjG,SAAAyG,EAAA/N,SAAAuN,YAEAQ,EAAAK,SAAA3H,EAAA2H,SAAAL,EAAA/N,SAAAqK,eAEA0D,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAoN,YAAAW,EAAA/N,SAAAoN,UAAAW,EAAAK,SAAAvQ,QACAkQ,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAqN,YAAAU,EAAA/N,SAAAqN,UAAAU,EAAAK,SAAAvQ,QAEAkQ,EAAA/N,SAAA4K,cAAAmD,EAAA/N,SAAA2K,WAAA/G,KAAAyK,MAAAzK,KAAA0K,SAAAP,EAAAK,SAAAvQ,SAEAkQ,EAAAQ,QAAAC,MAAAT,EAAA/N,SAAA2K,YAEAoD,EAAAU,SAAAV,EAAA/N,SAAAoN,UAAA,GAAAW,EAAA/N,SAAAqN,UAAA,EAEAU,EAAAU,WAAAV,EAAA/N,SAAAoL,cAAA,OAGA2C,EAAAW,aAAAX,EAAA/N,SAAAoN,UAAAW,EAAA/N,SAAAuN,YAAAQ,EAAA/N,SAAAoN,UAAA,GAAAW,EAAA/N,SAAA0K,YACAqD,EAAAY,aAAAZ,EAAA/N,SAAAqN,UAAAU,EAAA/N,SAAAuN,YAAAQ,EAAA/N,SAAAqN,UAAA,GAAAU,EAAA/N,SAAA0K,YAEAqD,EAAAa,SAAA,EAEAb,EAAA5B,YAEA4B,EAAAc,SAAA,KAEAd,EAAAe,SAAA,YAAAf,EAAA/N,SAAAoK,KAAA,MAAA,OAEA2D,EAAAgB,SAAAhB,EAAA/N,SAAAmL,QAAA,QAAA4C,EAAA/N,SAAAoK,MAAA,WAEA,GAAApI,GAAA5E,SAAA2E,cAAA,OAEAiN,GAAA,oBAAA,iBAAA,eAAA,gBAEA,KAAA,GAAApR,KAAAoR,GACA,GAAA3R,SAAA2E,EAAAE,MAAA8M,EAAApR,IAGA,MAFAmQ,GAAAkB,UAAAD,EAAApR,GAAAH,QAAA,cAAA,IAAAyR,cACAnB,EAAAe,SAAA,IAAAf,EAAAkB,UAAA,cACA,CAGA,QAAA,KAGA,YAAAlB,EAAA/N,SAAAoK,OAAA2D,EAAA/N,SAAAqN,UAAAU,EAAA/N,SAAAoN,WAEA3G,EAAA7G,KAAA,YAAA6G,EAAA1F,KAAA,UACA0F,EAAA2H,SAAAL,EAAA/N,SAAAqK,eAAAlK,KAAA,WACAjD,EAAA4B,MAAAc,KAAA,YAAA1C,EAAA4B,MAAAiC,KAAA,YAGAoO,KAMAA,EAAA,WAEA1I,EAAA2I,KAAA,eAAArB,EAAA/N,SAAAuL,aAAA,2CAEAwC,EAAAsB,SAAA5I,EAAA6I,SAEAvB,EAAAwB,OAAArS,EAAA,8BACA6Q,EAAAsB,SAAAG,QAAAzB,EAAAwB,QAGA9I,EAAArC,KACA6J,MAAA,cAAAF,EAAA/N,SAAAoK,KAAA,IAAA2D,EAAAK,SAAAvQ,OAAA,IAAA,IAAA,OACA4R,SAAA,aAGA1B,EAAAgB,UAAAhB,EAAA/N,SAAAyK,OACAhE,EAAArC,IAAA,IAAA2J,EAAAkB,UAAA,8BAAAlB,EAAA/N,SAAAyK,QAEAsD,EAAA/N,SAAAyK,SACAsD,EAAA/N,SAAAyK,OAAA,QAEAiF,IAEA3B,GAAAsB,SAAAjL,KACA6J,MAAA,OACA0B,SAAA,SACAF,SAAA,aAEA1B,EAAAsB,SAAAC,SAAAlL,KACAwL,SAAAC,MAGA9B,EAAA/N,SAAA6L,OACAkC,EAAAsB,SAAAC,SAAAlL,KACA0L,OAAA,eAIA/B,EAAAK,SAAAhK,KACA2L,QAAA,cAAAhC,EAAA/N,SAAAoK,KAAA,OAAA,OACA4F,UAAA,OACAP,SAAA,aAGA1B,EAAAK,SAAAhK,IAAA,QAAA6L,KAEA,cAAAlC,EAAA/N,SAAAoK,MAAA2D,EAAA/N,SAAA0K,YAAA,GAAAqD,EAAAK,SAAAhK,IAAA,cAAA2J,EAAA/N,SAAA0K,aACA,YAAAqD,EAAA/N,SAAAoK,MAAA2D,EAAA/N,SAAA0K,YAAA,GAAAqD,EAAAK,SAAAhK,IAAA,eAAA2J,EAAA/N,SAAA0K,aAEA,QAAAqD,EAAA/N,SAAAoK,OACA2D,EAAAK,SAAAhK,KACAqL,SAAA,WACAS,OAAA,EACAC,QAAA,SAGApC,EAAAK,SAAAgC,GAAArC,EAAA/N,SAAA2K,YAAAvG,KAAA8L,OAAAnC,EAAA/N,SAAAsL,YAAA6E,QAAA,WAGApC,EAAA5B,SAAA1F,GAAAvJ,EAAA,+BAEA6Q,EAAA/N,SAAA6K,UAAAwF,IAEAtC,EAAAQ,OAAA+B,KAAAvC,EAAA/N,SAAA2K,YAAA4F,IAAA,EAEAxC,EAAA/N,SAAAkL,OAAAzE,EAAA+J,SAEA,IAAAC,GAAA1C,EAAAK,SAAAgC,GAAArC,EAAA/N,SAAA2K,WACA,QAAAoD,EAAA/N,SAAAoL,gBAAAqF,EAAA1C,EAAAK,UAEAL,EAAA/N,SAAA8K,OAWAiD,EAAA/N,SAAA6L,OAAA,GATAkC,EAAA/N,SAAA6L,OAAA6E,IAEA3C,EAAA/N,SAAAmM,UAAAwE,IAEA5C,EAAA/N,SAAA6M,MAAAkB,EAAA/N,SAAAwM,cAAAoE,KAEA7C,EAAA/N,SAAAmM,UAAA4B,EAAA/N,SAAAwM,cAAAuB,EAAA/N,SAAA6L,QAAAkC,EAAAsB,SAAAwB,MAAA9C,EAAA5B,SAAA1F,KAMAqK,EAAAL,EAAAM,IAGAD,EAAA,SAAAzS,EAAAkC,GACA,GAAAyQ,GAAA3S,EAAA4S,KAAA,eAAApT,MACA,IAAA,GAAAmT,EAEA,WADAzQ,IAGA,IAAA2Q,GAAA,CACA7S,GAAA4S,KAAA,eAAA9Q,KAAA,WACAjD,EAAA4B,MAAA4B,IAAA,OAAA,aACAwQ,GAAAF,GAAAzQ,MACAJ,KAAA,WACArB,KAAAsC,UAAAlE,EAAA4B,MAAAqS,YAQAJ,EAAA,WAEA,GAAAhD,EAAA/N,SAAAsK,cAAA,QAAAyD,EAAA/N,SAAAoK,OAAA2D,EAAA/N,SAAA8K,OAAA,CACA,GAAA1D,GAAA,YAAA2G,EAAA/N,SAAAoK,KAAA2D,EAAA/N,SAAAoN,UAAAW,EAAA/N,SAAAqN,UACA+D,EAAArD,EAAAK,SAAAhH,MAAA,EAAAA,GAAAiK,QAAAxH,SAAA,YACAyH,EAAAvD,EAAAK,SAAAhH,OAAAA,GAAAiK,QAAAxH,SAAA,WACApD,GAAAzI,OAAAoT,GAAA5B,QAAA8B,GAGAvD,EAAAwB,OAAAgC,SAEAC,IAEA,YAAAzD,EAAA/N,SAAAoK,OAAA2D,EAAA/N,SAAAgL,gBAAA,GAEA+C,EAAAsB,SAAAlB,OAAAsD,KAEAhL,EAAAiL,eAEA3D,EAAA/N,SAAAwN,aAAAO,EAAAQ,OAAAC,OAEAT,EAAA4D,aAAA,EAEA5D,EAAA/N,SAAAqL,YAAAnO,EAAAC,QAAAyU,KAAA,SAAAC,GAEA9D,EAAA/N,SAAA6M,MAAAkB,EAAA/N,SAAA+M,YAAAwD,IAAA,GAAAxC,EAAA/N,SAAAmN,sBAAA2E,IAEA/D,EAAA/N,SAAA8K,QAAAiH,IAEAhE,EAAA/N,SAAA6L,OAAAmG,EAAAjE,EAAA/N,SAAA2K,YAEAoD,EAAA/N,SAAAmM,UAAA8F,IAEAlE,EAAA/N,SAAAwL,eAAAuC,EAAA/N,SAAA8K,QAAAoH,KAMAT,EAAA,WACA,GAAAtD,GAAA,EAEAC,EAAAlR,GAEA,IAAA,YAAA6Q,EAAA/N,SAAAoK,MAAA2D,EAAA/N,SAAAgL,eAIA,GAAA+C,EAAAU,SAGA,CAEA,GAAA0D,GAAA,GAAApE,EAAA/N,SAAAsN,WAAAS,EAAAQ,OAAAC,MAAAT,EAAAQ,OAAAC,MAAA4D,GAIA,KAFAhE,EAAAL,EAAAK,SAAAgC,GAAA+B,GAEAvU,EAAA,EAAAA,GAAAmQ,EAAA/N,SAAAqN,UAAA,EAAAzP,IAGAwQ,EAAAA,EAAAiE,IADAF,EAAAvU,GAAAmQ,EAAAK,SAAAvQ,OACAkQ,EAAAK,SAAAgC,GAAAxS,EAAA,GAEAmQ,EAAAK,SAAAgC,GAAA+B,EAAAvU,QAbAwQ,GAAAL,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,WAJAJ,GAAAL,EAAAK,QA6CA,OAtBA,YAAAL,EAAA/N,SAAAoK,MACAgE,EAAAjO,KAAA,WACAgO,GAAAjR,EAAA4B,MAAAwT,gBAGAvE,EAAA/N,SAAA0K,YAAA,IACAyD,GAAAJ,EAAA/N,SAAA0K,aAAAqD,EAAA/N,SAAAoN,UAAA,KAIAe,EAAAvK,KAAAC,IAAA4B,MAAA7B,KAAAwK,EAAAmE,IAAA,WACA,MAAArV,GAAA4B,MAAAwT,aAAA,KACAE,OAGA,cAAAzE,EAAAsB,SAAAjL,IAAA,cACA+J,GAAA5G,WAAAwG,EAAAsB,SAAAjL,IAAA,gBAAAmD,WAAAwG,EAAAsB,SAAAjL,IAAA,mBACAmD,WAAAwG,EAAAsB,SAAAjL,IAAA,qBAAAmD,WAAAwG,EAAAsB,SAAAjL,IAAA,wBACA,eAAA2J,EAAAsB,SAAAjL,IAAA,gBACA+J,GAAA5G,WAAAwG,EAAAsB,SAAAjL,IAAA,gBAAAmD,WAAAwG,EAAAsB,SAAAjL,IAAA,oBAGA+J,GAMA0B,EAAA,WACA,GAAA5B,GAAA,MAQA,OAPAF,GAAA/N,SAAAuN,WAAA,IAEAU,EADA,cAAAF,EAAA/N,SAAAoK,KACA2D,EAAA/N,SAAAqN,UAAAU,EAAA/N,SAAAuN,YAAAQ,EAAA/N,SAAAqN,UAAA,GAAAU,EAAA/N,SAAA0K,YAEAqD,EAAA/N,SAAAuN,YAGAU,GAMAgC,EAAA,WAEA,GAAAwC,GAAA1E,EAAA/N,SAAAuN,WAEAmF,EAAA3E,EAAAsB,SAAApB,OAcA,OAZA,IAAAF,EAAA/N,SAAAuN,YACAQ,EAAA/N,SAAAuN,WAAAmF,IAAA3E,EAAAU,UACA,YAAAV,EAAA/N,SAAAoK,KACAqI,EAAAC,EAEA3E,EAAA/N,SAAAqN,UAAA,GAAA,cAAAU,EAAA/N,SAAAoK,OACAsI,EAAA3E,EAAAY,cAEA+D,EAAA3E,EAAAW,eACA+D,GAAAC,EAAA3E,EAAA/N,SAAA0K,aAAAqD,EAAA/N,SAAAoN,UAAA,IAAAW,EAAA/N,SAAAoN,YAGAqF,GAMA/C,EAAA,WACA,GAAAiD,GAAA,CACA,IAAA,cAAA5E,EAAA/N,SAAAoK,MAAA2D,EAAA/N,SAAAuN,WAAA,EAEA,GAAAQ,EAAAsB,SAAApB,QAAAF,EAAAW,aACAiE,EAAA5E,EAAA/N,SAAAoN,cAEA,IAAAW,EAAAsB,SAAApB,QAAAF,EAAAY,aACAgE,EAAA5E,EAAA/N,SAAAqN,cAEA,CACA,GAAAuF,GAAA7E,EAAAK,SAAAyE,QAAA5E,QAAAF,EAAA/N,SAAA0K,WACAiI,GAAA/O,KAAAyK,OAAAN,EAAAsB,SAAApB,QACAF,EAAA/N,SAAA0K,aAAAkI,OAGA,YAAA7E,EAAA/N,SAAAoK,OACAuI,EAAA5E,EAAA/N,SAAAoN,UAEA,OAAAuF,IAMApC,EAAA,WACA,GAAAuC,GAAA,CAEA,IAAA/E,EAAA/N,SAAAsN,WAAA,EACA,GAAAS,EAAA/N,SAAAsK,aACAwI,EAAAlP,KAAAmP,KAAAhF,EAAAK,SAAAvQ,OAAAuU,SAMA,KAHA,GAAAY,GAAA,EACAC,EAAA,EAEAD,EAAAjF,EAAAK,SAAAvQ,UACAiV,EACAE,EAAAC,EAAAvD,IACAuD,GAAAlF,EAAA/N,SAAAsN,YAAAoC,IAAA3B,EAAA/N,SAAAsN,WAAAoC,QAKAoD,GAAAlP,KAAAmP,KAAAhF,EAAAK,SAAAvQ,OAAA6R,IAEA,OAAAoD,IAMAV,EAAA,WAEA,MAAArE,GAAA/N,SAAAsN,WAAA,GAAAS,EAAA/N,SAAAsN,YAAAoC,IACA3B,EAAA/N,SAAAsN,WAGAoC,KAMA8B,EAAA,WAEA,GAAAzD,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAqN,WAAAU,EAAAQ,OAAA+B,OAAAvC,EAAA/N,SAAAsK,cACA,GAAA,cAAAyD,EAAA/N,SAAAoK,KAAA,CAEA,GAAA8I,GAAAnF,EAAAK,SAAAkC,OACAb,EAAAyD,EAAAzD,UAEA0D,KAAA1D,EAAA2D,MAAArF,EAAAsB,SAAApB,QAAAiF,EAAAG,eAAA,QAAA,OACA,IAAA,YAAAtF,EAAA/N,SAAAoK,KAAA,CAEA,GAAAkJ,GAAAvF,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAoN,UACAqC,EAAA1B,EAAAK,SAAAgC,GAAAkD,GAAA7D,UAEA0D,IAAA1D,EAAA8D,IAAA,QAAA,QAGA,CAEA,GAAA9D,GAAA1B,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,MAAA4D,KAAA3C,UAEA1B,GAAAQ,OAAAC,OAAA+B,IAAA,IAAAxC,EAAAQ,OAAA+B,MAAA,GAEAjT,QAAAoS,IACA,cAAA1B,EAAA/N,SAAAoK,KAAA+I,GAAA1D,EAAA2D,KAAA,QAAA,GACA,YAAArF,EAAA/N,SAAAoK,MAAA+I,GAAA1D,EAAA8D,IAAA,QAAA,MAqBAJ,EAAA,SAAAK,EAAAC,EAAAC,EAAAC,GAEA,GAAA5F,EAAAgB,SAAA,CAEA,GAAA6E,GAAA,YAAA7F,EAAA/N,SAAAoK,KAAA,kBAAAoJ,EAAA,SAAA,eAAAA,EAAA,WAEA/M,GAAArC,IAAA,IAAA2J,EAAAkB,UAAA,uBAAAyE,EAAA,IAAA,KACA,SAAAD,GAEAhN,EAAArC,IAAA2J,EAAAe,SAAA8E,GAEAnN,EAAAmL,KAAA,mEAAA,WAEAnL,EAAAoN,OAAA,oEACAC,OAEA,SAAAL,EACAhN,EAAArC,IAAA2J,EAAAe,SAAA8E,GACA,UAAAH,IAEAhN,EAAArC,IAAA,IAAA2J,EAAAkB,UAAA,8BAAA,UACAxI,EAAArC,IAAA2J,EAAAe,SAAA8E,GAEAnN,EAAAmL,KAAA,mEAAA,WAEAnL,EAAAoN,OAAA,oEAEAV,EAAAQ,EAAA,WAAA,QAAA,GAEAI,WAIA,CACA,GAAAC,KACAA,GAAAjG,EAAAe,UAAA0E,EACA,SAAAC,EACAhN,EAAAwN,QAAAD,EAAAN,EAAA3F,EAAA/N,SAAAyK,OAAA,WACAqJ,MAEA,SAAAL,EACAhN,EAAArC,IAAA2J,EAAAe,SAAA0E,GACA,UAAAC,GACAhN,EAAAwN,QAAAD,EAAAxJ,MAAA,SAAA,WACA2I,EAAAQ,EAAA,WAAA,QAAA,GAEAI,QASAG,EAAA,WAIA,IAAA,GAHAC,GAAA,GACArB,EAAAvC,IAEA3S,EAAA,EAAAkV,EAAAlV,EAAAA,IAAA,CACA,GAAAwW,GAAA,EAEArG,GAAA/N,SAAAiM,YAAA/O,EAAAmX,WAAAtG,EAAA/N,SAAAiM,aACAmI,EAAArG,EAAA/N,SAAAiM,WAAArO,GACAmQ,EAAAuG,QAAAzK,SAAA,qBAEAuK,EAAAxW,EAAA,EACAmQ,EAAAuG,QAAAzK,SAAA,qBAIAsK,GAAA,2DAAAvW,EAAA,2BAAAwW,EAAA,aAGArG,EAAAuG,QAAAC,KAAAJ,IAMAzD,EAAA,WACA3C,EAAA/N,SAAAkM,YAaA6B,EAAAuG,QAAApX,EAAA6Q,EAAA/N,SAAAkM,cAXA6B,EAAAuG,QAAApX,EAAA,4BAEA6Q,EAAA/N,SAAAgM,cACA9O,EAAA6Q,EAAA/N,SAAAgM,eAAAuI,KAAAxG,EAAAuG,SAGAvG,EAAA5B,SAAA1F,GAAAoD,SAAA,gBAAA7L,OAAA+P,EAAAuG,SAGAJ,KAKAnG,EAAAuG,QAAArL,GAAA,QAAA,IAAAuL,IAMA7D,EAAA,WACA5C,EAAA5B,SAAAsI,KAAAvX,EAAA,8BAAA6Q,EAAA/N,SAAAoM,SAAA,QACA2B,EAAA5B,SAAAuI,KAAAxX,EAAA,8BAAA6Q,EAAA/N,SAAAqM,SAAA,QAEA0B,EAAA5B,SAAAsI,KAAA7C,KAAA,QAAA+C,GACA5G,EAAA5B,SAAAuI,KAAA9C,KAAA,QAAAgD,GAEA7G,EAAA/N,SAAAsM,cACApP,EAAA6Q,EAAA/N,SAAAsM,cAAAtO,OAAA+P,EAAA5B,SAAAsI,MAGA1G,EAAA/N,SAAAuM,cACArP,EAAA6Q,EAAA/N,SAAAuM,cAAAvO,OAAA+P,EAAA5B,SAAAuI,MAGA3G,EAAA/N,SAAAsM,cAAAyB,EAAA/N,SAAAuM,eAEAwB,EAAA5B,SAAA0I,YAAA3X,EAAA,yCAEA6Q,EAAA5B,SAAA0I,YAAA7W,OAAA+P,EAAA5B,SAAAuI,MAAA1W,OAAA+P,EAAA5B,SAAAsI,MAEA1G,EAAA5B,SAAA1F,GAAAoD,SAAA,6BAAA7L,OAAA+P,EAAA5B,SAAA0I,eAOAjE,EAAA,WACA7C,EAAA5B,SAAA4E,MAAA7T,EAAA,kEAAA6Q,EAAA/N,SAAAyM,UAAA,cACAsB,EAAA5B,SAAA1I,KAAAvG,EAAA,iEAAA6Q,EAAA/N,SAAA0M,SAAA,cAEAqB,EAAA5B,SAAA2I,OAAA5X,EAAA,oCAEA6Q,EAAA5B,SAAA2I,OAAA7L,GAAA,QAAA,YAAA8L,GACAhH,EAAA5B,SAAA2I,OAAA7L,GAAA,QAAA,WAAA+L,GAEAjH,EAAA/N,SAAA2M,oBACAoB,EAAA5B,SAAA2I,OAAA9W,OAAA+P,EAAA5B,SAAA4E,OAGAhD,EAAA5B,SAAA2I,OAAA9W,OAAA+P,EAAA5B,SAAA4E,OAAA/S,OAAA+P,EAAA5B,SAAA1I,MAGAsK,EAAA/N,SAAA4M,qBACA1P,EAAA6Q,EAAA/N,SAAA4M,sBAAA2H,KAAAxG,EAAA5B,SAAA2I,QAGA/G,EAAA5B,SAAA1F,GAAAoD,SAAA,wBAAA7L,OAAA+P,EAAA5B,SAAA2I,QAGAG,EAAAlH,EAAA/N,SAAA+M,UAAA,OAAA,UAMAsD,EAAA,WAEAtC,EAAAK,SAAAjO,KAAA,WAEA,GAAA+U,GAAAhY,EAAA4B,MAAAmS,KAAA,aAAAlQ,KAAA,QAEA1D,SAAA6X,IAAA,GAAAA,GAAArX,QACAX,EAAA4B,MAAAd,OAAA,iCAAAkX,EAAA,oBAWAP,EAAA,SAAAzL,GAEA6E,EAAA/N,SAAA6M,MAAApG,EAAA0O,WACA1O,EAAA2O,gBACAlM,EAAAa,kBASA6K,EAAA,SAAA1L,GAEA6E,EAAA/N,SAAA6M,MAAApG,EAAA0O,WACA1O,EAAA4O,gBACAnM,EAAAa,kBASAgL,EAAA,SAAA7L,GACAzC,EAAA6O,YACApM,EAAAa,kBASAiL,EAAA,SAAA9L,GACAzC,EAAA0O,WACAjM,EAAAa,kBASAyK,EAAA,SAAAtL,GAEA6E,EAAA/N,SAAA6M,MAAApG,EAAA0O,UACA,IAAAI,GAAArY,EAAAgM,EAAAsM,cACA,IAAAnY,SAAAkY,EAAAxU,KAAA,oBAAA,CACA,GAAA0U,GAAAnO,SAAAiO,EAAAxU,KAAA,oBAEA0U,IAAA1H,EAAAQ,OAAAC,OAAA/H,EAAAiP,UAAAD,GACAvM,EAAAa,mBAUAiI,EAAA,SAAA2D,GAEA,GAAAC,GAAA7H,EAAAK,SAAAvQ,MACA,OAAA,SAAAkQ,EAAA/N,SAAA8L,WACAiC,EAAA/N,SAAAqN,UAAA,IACAuI,EAAAhS,KAAAmP,KAAAhF,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAqN,gBAEAU,GAAAuG,QAAAC,KAAAoB,EAAA,EAAA5H,EAAA/N,SAAA+L,oBAAA6J,KAIA7H,EAAAuG,QAAArD,KAAA,KAAAnH,YAAA,cAEAiE,GAAAuG,QAAAnU,KAAA,SAAAvC,EAAA6I,GAAAvJ,EAAAuJ,GAAAwK,KAAA,KAAAb,GAAAuF,GAAA9L,SAAA,cAMAiK,EAAA,WAEA,GAAA/F,EAAA/N,SAAAsK,aAAA,CACA,GAAAmF,GAAA,EAEA,IAAA1B,EAAAQ,OAAAC,MAEAiB,EAAA1B,EAAAK,SAAAgC,GAAA,GAAAX,WAEA1B,EAAAQ,OAAAC,OAAA+B,IAAA,GAAAxC,EAAAU,SACAgB,EAAA1B,EAAAK,SAAAgC,IAAAG,IAAA,GAAA6B,KAAA3C,WAEA1B,EAAAQ,OAAAC,OAAAT,EAAAK,SAAAvQ,OAAA,IACA4R,EAAA1B,EAAAK,SAAAgC,GAAArC,EAAAK,SAAAvQ,OAAA,GAAA4R,YAEAA,IACA,cAAA1B,EAAA/N,SAAAoK,KAAA+I,GAAA1D,EAAA2D,KAAA,QAAA,GACA,YAAArF,EAAA/N,SAAAoK,MAAA+I,GAAA1D,EAAA8D,IAAA,QAAA,IAIAxF,EAAAa,SAAA,EAEAb,EAAA/N,SAAA0N,aAAAK,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,OAAAT,EAAA8H,SAAA9H,EAAAQ,OAAAC,QASAyG,EAAA,SAAAa,GAEA/H,EAAA/N,SAAA2M,oBACAoB,EAAA5B,SAAA2I,OAAAP,KAAAxG,EAAA5B,SAAA2J,KAGA/H,EAAA5B,SAAA2I,OAAA7D,KAAA,KAAAnH,YAAA,UACAiE,EAAA5B,SAAA2I,OAAA7D,KAAA,aAAA6E,EAAA,KAAAjM,SAAA,YAOAoI,EAAA,WACA,GAAA1B,KACAxC,EAAA5B,SAAAuI,KAAA7K,SAAA,YACAkE,EAAA5B,SAAAsI,KAAA5K,SAAA,cACAkE,EAAA/N,SAAAsK,cAAAyD,EAAA/N,SAAAuK,mBAEA,GAAAwD,EAAAQ,OAAAC,OACAT,EAAA5B,SAAAuI,KAAA7K,SAAA,YACAkE,EAAA5B,SAAAsI,KAAA3K,YAAA,aAEAiE,EAAAQ,OAAAC,OAAA+B,IAAA,GACAxC,EAAA5B,SAAAsI,KAAA5K,SAAA,YACAkE,EAAA5B,SAAAuI,KAAA5K,YAAA,cAGAiE,EAAA5B,SAAAuI,KAAA5K,YAAA,YACAiE,EAAA5B,SAAAsI,KAAA3K,YAAA,eAQAgI,EAAA,WAEA,GAAA/D,EAAA/N,SAAAkN,UAAA,EACA,CAAApJ,WAAA2C,EAAA6O,UAAAvH,EAAA/N,SAAAkN,eAGAzG,GAAA6O,WAGAvH,GAAA/N,SAAAiN,WAEAxG,EAAAsP,MAAA,WAEAhI,EAAAc,WAEApI,EAAA0O,UAAA,GAEApH,EAAAiI,YAAA,IAEA,WAEAjI,EAAAiI,aAEAvP,EAAA6O,WAAA,GAEAvH,EAAAiI,WAAA,SASAjE,EAAA,WACA,GAAAkE,GAAA,CAEA,IAAA,QAAAlI,EAAA/N,SAAAgN,cACAvG,EAAAzI,OAAA+P,EAAAK,SAAAiD,QAAAxH,SAAA,iBAEA,CACApD,EAAA+I,QAAAzB,EAAAK,SAAAiD,QAAAxH,SAAA,YACA,IAAA4F,GAAA1B,EAAAK,SAAAyE,QAAApD,UACAwG,GAAA,cAAAlI,EAAA/N,SAAAoK,MAAAqF,EAAA2D,MAAA3D,EAAA8D,IAEAJ,EAAA8C,EAAA,QAAA,GAEAlI,EAAA/N,SAAA6L,OAAA,EACAkC,EAAA/N,SAAAmM,UAAA,EACA4B,EAAA/N,SAAAwM,cAAA,EAEAuB,EAAA/N,SAAA+K,cAAAgD,EAAAgB,UAEAhB,EAAAsB,SAAA0G,MAAA,WACAtP,EAAAhD,QACA,WAEA,GAAAyS,GAAA,CACAnI,GAAAK,SAAAjO,KAAA,WACA+V,GAAA,cAAAnI,EAAA/N,SAAAoK,KAAAlN,EAAA4B,MAAAuU,YAAA,GAAAnW,EAAA4B,MAAAwT,aAAA,IAGA,IAAA6D,GAAApI,EAAA/N,SAAAwK,MAAA0L,EAEAE,EAAA,cAAArI,EAAA/N,SAAAoK,KAAA,OAAA,MAEAiM,EAAAF,GAAAD,EAAAtS,KAAA0S,IAAAhP,SAAAb,EAAArC,IAAAgS,KACArC,GAAAsC,KAIAtC,KAMAA,EAAA,SAAAwC,GACA/L,MAAA+L,EAAAA,EAAAxI,EAAA/N,SAAAwK,KACA,IAAAiF,IAAA2D,KAAA,EAAAG,IAAA,GACAiD,GAAApD,KAAA,EAAAG,IAAA,EAEA,SAAAxF,EAAA/N,SAAAgN,cACAyC,EAAAhJ,EAAAwK,KAAA,aAAA4B,QAAApD,WAGA+G,EAAAzI,EAAAK,SAAAyE,QAAApD,UAEA,IAAAgH,GAAA,cAAA1I,EAAA/N,SAAAoK,MAAAqF,EAAA2D,MAAA3D,EAAA8D,IACAmD,EAAA,cAAA3I,EAAA/N,SAAAoK,MAAAoM,EAAApD,MAAAoD,EAAAjD,IACAI,GAAA+C,WAAAA,EACAvD,GAAAsD,EAAA,SAAAjM,MAAAmJ,IAMAzB,EAAA,WAEAnE,EAAA4I,OACA5F,OAAA6F,EAAA,EAAAC,EAAA,GACAC,KAAAF,EAAA,EAAAC,EAAA,IAEA9I,EAAAsB,SAAAuC,KAAA,aAAAmF,IASAA,EAAA,SAAA7N,GACA,GAAA6E,EAAAa,QACA1F,EAAAa,qBACA,CAEAgE,EAAA4I,MAAAK,YAAAvQ,EAAAgJ,UACA,IAAAwH,GAAA/N,EAAAgO,aAEAnJ,GAAA4I,MAAA5F,MAAA6F,EAAAK,EAAAE,eAAA,GAAAC,MACArJ,EAAA4I,MAAA5F,MAAA8F,EAAAI,EAAAE,eAAA,GAAAE,MAEAtJ,EAAAsB,SAAAuC,KAAA,YAAA0F,GAEAvJ,EAAAsB,SAAAuC,KAAA,WAAA2F,KAUAD,EAAA,SAAApO,GACA,GAAA+N,GAAA/N,EAAAgO,cAEAM,EAAA5T,KAAA0S,IAAAW,EAAAE,eAAA,GAAAC,MAAArJ,EAAA4I,MAAA5F,MAAA6F,GACAa,EAAA7T,KAAA0S,IAAAW,EAAAE,eAAA,GAAAE,MAAAtJ,EAAA4I,MAAA5F,MAAA8F,EAQA,IANA,EAAAW,EAAAC,GAAA1J,EAAA/N,SAAA2L,qBACAzC,EAAAa,iBAEA,EAAA0N,EAAAD,GAAAzJ,EAAA/N,SAAA4L,sBACA1C,EAAAa,iBAEA,QAAAgE,EAAA/N,SAAAoK,MAAA2D,EAAA/N,SAAA0L,cAAA,CACA,GAAA8H,GAAA,CAEA,IAAA,cAAAzF,EAAA/N,SAAAoK,KAAA,CACA,GAAAsN,GAAAT,EAAAE,eAAA,GAAAC,MAAArJ,EAAA4I,MAAA5F,MAAA6F,CACApD,GAAAzF,EAAA4I,MAAAK,YAAA5D,KAAAsE,MAEA,CACA,GAAAA,GAAAT,EAAAE,eAAA,GAAAE,MAAAtJ,EAAA4I,MAAA5F,MAAA8F,CACArD,GAAAzF,EAAA4I,MAAAK,YAAAzD,IAAAmE,EAEAvE,EAAAK,EAAA,QAAA,KAUA+D,EAAA,SAAArO,GACA6E,EAAAsB,SAAAwE,OAAA,YAAAyD,EACA,IAAAL,GAAA/N,EAAAgO,cACA1D,EAAA,CAKA,IAHAzF,EAAA4I,MAAAG,IAAAF,EAAAK,EAAAE,eAAA,GAAAC,MACArJ,EAAA4I,MAAAG,IAAAD,EAAAI,EAAAE,eAAA,GAAAE,MAEA,QAAAtJ,EAAA/N,SAAAoK,KAAA,CACA,GAAAuN,GAAA/T,KAAA0S,IAAAvI,EAAA4I,MAAA5F,MAAA6F,EAAA7I,EAAA4I,MAAAG,IAAAF,EACAe,IAAA5J,EAAA/N,SAAAyL,iBACAsC,EAAA4I,MAAA5F,MAAA6F,EAAA7I,EAAA4I,MAAAG,IAAAF,EAAAnQ,EAAA2O,gBAAA3O,EAAA4O,gBACA5O,EAAA0O,gBAGA,CACA,GAAAwC,GAAA,CAEA,eAAA5J,EAAA/N,SAAAoK,MACAuN,EAAA5J,EAAA4I,MAAAG,IAAAF,EAAA7I,EAAA4I,MAAA5F,MAAA6F,EACApD,EAAAzF,EAAA4I,MAAAK,YAAA5D,OAEAuE,EAAA5J,EAAA4I,MAAAG,IAAAD,EAAA9I,EAAA4I,MAAA5F,MAAA8F,EACArD,EAAAzF,EAAA4I,MAAAK,YAAAzD,MAGAxF,EAAA/N,SAAAsK,eAAA,GAAAyD,EAAAQ,OAAAC,OAAAmJ,EAAA,GAAA5J,EAAAQ,OAAA+B,MAAA,EAAAqH,GACAxE,EAAAK,EAAA,QAAA,KAGA5P,KAAA0S,IAAAqB,IAAA5J,EAAA/N,SAAAyL,gBACA,EAAAkM,EAAAlR,EAAA2O,gBAAA3O,EAAA4O,gBACA5O,EAAA0O,YAGAhC,EAAAK,EAAA,QAAA,KAIAzF,EAAAsB,SAAAwE,OAAA,WAAA0D,IAMA1F,EAAA,WAEA,GAAA9D,EAAA4D,YAAA,CAEA,GAAAiG,GAAA1a,EAAAC,QAAA8Q,QACA4J,EAAA3a,EAAAC,QAAAgR,UAIAH,GAAA4J,GAAA1J,GAAA2J,KAEA7J,EAAA4J,EACA1J,EAAA2J,EAEApR,EAAAiL,eAEA3D,EAAA/N,SAAA6N,eAAAzN,KAAAqG,EAAAsH,EAAAQ,OAAAC,SAmPA,OAhOA/H,GAAAiP,UAAA,SAAAC,EAAAmC,GAEA,IAAA/J,EAAAa,SAAAb,EAAAQ,OAAAC,OAAAmH,EA6BA,GA3BA5H,EAAAa,SAAA,EAEAb,EAAA8H,SAAA9H,EAAAQ,OAAAC,MAGAT,EAAAQ,OAAAC,MADA,EAAAmH,EACApF,IAAA,EAEAoF,GAAApF,IACA,EAGAoF,EAGA5H,EAAA/N,SAAAyN,cAAAM,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,OAAAT,EAAA8H,SAAA9H,EAAAQ,OAAAC,OACA,QAAAsJ,EACA/J,EAAA/N,SAAA2N,YAAAI,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,OAAAT,EAAA8H,SAAA9H,EAAAQ,OAAAC,OACA,QAAAsJ,GACA/J,EAAA/N,SAAA4N,YAAAG,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,OAAAT,EAAA8H,SAAA9H,EAAAQ,OAAAC,OAGAT,EAAAQ,OAAA+B,KAAAvC,EAAAQ,OAAAC,OAAA+B,IAAA,EAEAxC,EAAA/N,SAAA6L,OAAAmG,EAAAjE,EAAAQ,OAAAC,OAEAT,EAAA/N,SAAAmM,UAAA8F,IAEA,QAAAlE,EAAA/N,SAAAoK,KAEA2D,EAAA/N,SAAAgL,gBAAA+C,EAAAsB,SAAAlB,UAAAsD,KACA1D,EAAAsB,SAAA4E,SAAA9F,OAAAsD,KAAA1D,EAAA/N,SAAAiL,qBAGA8C,EAAAK,SAAA2J,OAAA,YAAAC,QAAAjK,EAAA/N,SAAAwK,OAAApG,KAAA8L,OAAA,IAEAnC,EAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,OAAApK,IAAA,SAAA2J,EAAA/N,SAAAsL,YAAA,GAAA2M,OAAAlK,EAAA/N,SAAAwK,MAAA,WACAtN,EAAA4B,MAAAsF,IAAA,SAAA2J,EAAA/N,SAAAsL,aACAwI,UAGA,CAEA/F,EAAA/N,SAAAgL,gBAAA+C,EAAAsB,SAAAlB,UAAAsD,KACA1D,EAAAsB,SAAA4E,SAAA9F,OAAAsD,KAAA1D,EAAA/N,SAAAiL,oBAEA,IAAAiN,GAAA,EACAzI,GAAA2D,KAAA,EAAAG,IAAA,EAEA,KAAAxF,EAAA/N,SAAAsK,cAAAyD,EAAAU,UAAAV,EAAAQ,OAAA+B,KACA,GAAA,cAAAvC,EAAA/N,SAAAoK,KAAA,CAEA,GAAA8I,GAAAnF,EAAAK,SAAAgC,GAAArC,EAAAK,SAAAvQ,OAAA,EACA4R,GAAAyD,EAAAzD,WAEAyI,EAAAnK,EAAAsB,SAAApB,QAAAiF,EAAAG,iBACA,CAEA,GAAAC,GAAAvF,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAoN,SACAqC,GAAA1B,EAAAK,SAAAgC,GAAAkD,GAAA7D,eAGA,IAAA1B,EAAAU,UAAAV,EAAAQ,OAAA+B,MAAA,QAAAwH,EAAA,CAEA,GAAA1H,GAAA,GAAArC,EAAA/N,SAAAsN,WAAAS,EAAA/N,SAAAqN,UAAA+E,KAAA7B,IAAA,GAAA6B,KAAArE,EAAAK,SAAAvQ,OAAAkQ,EAAA/N,SAAAqN,WACA6F,EAAAzM,EAAA2H,SAAA,aAAAgC,GAAAA,EACAX,GAAAyD,EAAAzD,eAEA,IAAA,QAAAqI,GAAA,GAAA/J,EAAAQ,OAAAC,MAEAiB,EAAAhJ,EAAAwK,KAAA,eAAAb,GAAArC,EAAA/N,SAAAqN,WAAAoC,WACA1B,EAAAQ,OAAA+B,MAAA,MAEA,IAAAqF,GAAA,EAAA,CACA,GAAAwC,GAAAxC,EAAAvD,GACA3C,GAAA1B,EAAAK,SAAAgC,GAAA+H,GAAA1I,WAOA,GAAA,mBAAA,GAAA,CACA,GAAA+D,GAAA,cAAAzF,EAAA/N,SAAAoK,OAAAqF,EAAA2D,KAAA8E,IAAAzI,EAAA8D,GAEAJ,GAAAK,EAAA,QAAAzF,EAAA/N,SAAAwK,UAQA/D,EAAA2O,cAAA,WAEA,GAAArH,EAAA/N,SAAAsK,eAAAyD,EAAAQ,OAAA+B,KAAA,CACA,GAAAmF,GAAAnO,SAAAyG,EAAAQ,OAAAC,OAAA,CACA/H,GAAAiP,UAAAD,EAAA,UAMAhP,EAAA4O,cAAA,WAEA,GAAAtH,EAAA/N,SAAAsK,cAAA,GAAAyD,EAAAQ,OAAAC,MAAA,CACA,GAAAiH,GAAAnO,SAAAyG,EAAAQ,OAAAC,OAAA,CACA/H,GAAAiP,UAAAD,EAAA,UASAhP,EAAA6O,UAAA,SAAA8C,GAEArK,EAAAc,WAEAd,EAAAc,SAAAwJ,YAAA,WACA,QAAAtK,EAAA/N,SAAAgN,cAAAvG,EAAA2O,gBAAA3O,EAAA4O,iBACAtH,EAAA/N,SAAA8M,OAEAiB,EAAA/N,SAAAwM,cAAA,GAAA4L,GAAAnD,EAAA,UASAxO,EAAA0O,SAAA,SAAAiD,GAEArK,EAAAc,WAEAyJ,cAAAvK,EAAAc,UACAd,EAAAc,SAAA,KAEAd,EAAA/N,SAAAwM,cAAA,GAAA4L,GAAAnD,EAAA,WAMAxO,EAAA8R,gBAAA,WACA,MAAAxK,GAAAQ,OAAAC,OAMA/H,EAAA+R,uBAAA,WACA,MAAAzK,GAAAK,SAAAgC,GAAArC,EAAAQ,OAAAC,QAMA/H,EAAAgS,cAAA,WACA,MAAA1K,GAAAK,SAAAvQ,QAMA4I,EAAAiL,aAAA,WAEA3D,EAAAK,SAAAiE,IAAA5L,EAAAwK,KAAA,cAAAhD,MAAAgC,KAEAlC,EAAAsB,SAAAjL,IAAA,SAAAqN,KAEA1D,EAAA/N,SAAA8K,QAAA0G,IAGAzD,EAAAQ,OAAA+B,OAAAvC,EAAAQ,OAAAC,MAAA+B,IAAA,GAEAxC,EAAAQ,OAAAC,OAAA+B,MAAAxC,EAAAQ,OAAA+B,MAAA,GAEAvC,EAAA/N,SAAA6L,QAAAkC,EAAA/N,SAAAkM,cACAgI,IACAlC,EAAAjE,EAAAQ,OAAAC,SAOA/H,EAAAiS,cAAA,WAEA3K,EAAA4D,cACA5D,EAAA4D,aAAA,EACAzU,EAAA,YAAA4B,MAAAyS,SACAxD,EAAAK,SAAAjO,KAAA,WACA9C,QAAAH,EAAA4B,MAAAc,KAAA,aAAA1C,EAAA4B,MAAAiC,KAAA,QAAA7D,EAAA4B,MAAAc,KAAA,cAAA1C,EAAA4B,MAAA6Z,WAAA,WAEAtb,QAAAH,EAAA4B,MAAAc,KAAA,aAAAd,KAAAiC,KAAA,QAAA7D,EAAA4B,MAAAc,KAAA,cAAA1C,EAAA4B,MAAA6Z,WAAA,SACAzb,EAAA4B,MAAA8Z,SAAAA,SACA7K,EAAA5B,SAAA1F,IAAAsH,EAAA5B,SAAA1F,GAAA8K,SACAxD,EAAA5B,SAAAsI,MAAA1G,EAAA5B,SAAAsI,KAAAlD,SACAxD,EAAA5B,SAAAuI,MAAA3G,EAAA5B,SAAAuI,KAAAnD,SACAxD,EAAAuG,SAAAvG,EAAA/N,SAAAmM,UAAA4B,EAAAuG,QAAA/C,SACArU,EAAA,cAAA4B,MAAAyS,SACAxD,EAAA5B,SAAA2I,QAAA/G,EAAA5B,SAAA2I,OAAAvD,SACA+G,cAAAvK,EAAAc,UACAd,EAAA/N,SAAAqL,YAAAnO,EAAAC,QAAA0W,OAAA,SAAAhC,KAMApL,EAAAoS,aAAA,SAAA7Y,GACA3C,QAAA2C,IAAAP,EAAAO,GACAyG,EAAAiS,gBACA/Z,KAGAA,IAGAG,OAGAmE,QH7zCA,WAYA,IAXA,GAAAzD,GACAsZ,EAAA,aACAjT,GACA,SAAA,QAAA,QAAA,QAAA,MAAA,SAAA,QACA,YAAA,QAAA,iBAAA,WAAA,OAAA,MACA,eAAA,UAAA,aAAA,QAAA,OAAA,UACA,YAAA,QAAA,QAEAhI,EAAAgI,EAAAhI,OACAkb,EAAA5b,OAAA4b,QAAA5b,OAAA4b,YAEAlb,KACA2B,EAAAqG,EAAAhI,GAGAkb,EAAAvZ,KACAuZ,EAAAvZ,GAAAsZ,MAKA7V,OAAA7F,UAAA4b,MAAA,SAAA9b,GAGA+b,YAAA,SAAAC,GACA,GAGAC,GAHAC,EAAA,EACAC,EAAA,EACAC,EAAA,GAAA5T,MAGAxI,GAAAgc,GAAA/Y,KAAA,WAIA,GAHAgZ,EAAAjc,EAAA4B,MACA5B,EAAAic,GAAAhL,OAAA,QACAoL,WAAAJ,EAAA1J,WAAA8D,IACA8F,GAAAE,WAAA,CACA,IAAAC,WAAA,EAAAA,WAAAF,EAAAzb,OAAA2b,aACAF,EAAAE,YAAArL,OAAAiL,EAEAE,GAAAzb,OAAA,EACAwb,EAAAE,WACAH,EAAAD,EAAAhL,SACAmL,EAAAza,KAAAsa,OAEAG,GAAAza,KAAAsa,GACAC,EAAAA,EAAAD,EAAAhL,SAAAgL,EAAAhL,SAAA,CAEA,KAAAqL,WAAA,EAAAA,WAAAF,EAAAzb,OAAA2b,aACAF,EAAAE,YAAArL,OAAAiL,MAKAlc,EAAAC,QAAAgU,KAAA,WACA8H,YAAA,mBAGA/b,EAAAC,QAAAsc,OAAA,WACAR,YAAA,mBAGA/b,EAAA,+BAAAwc,MAAA,WACAX,QAAAY,IAAA,YACAzc,EAAA4B,MAAA2V,KAAA,QAAAmF,gBAGA1c,EAAA,+BAAAwc,MAAA,WACAX,QAAAY,IAAA,YACAzc,EAAA4B,MAAA2V,KAAA,QAAAmF","file":"functions.js","sourcesContent":["// Avoid `console` errors in browsers that lack a console.\r\n(function() {\r\n var method;\r\n var noop = function () {};\r\n var methods = [\r\n 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',\r\n 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',\r\n 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',\r\n 'timeStamp', 'trace', 'warn'\r\n ];\r\n var length = methods.length;\r\n var console = (window.console = window.console || {});\r\n\r\n while (length--) {\r\n method = methods[length];\r\n\r\n // Only stub undefined methods.\r\n if (!console[method]) {\r\n console[method] = noop;\r\n }\r\n }\r\n}());\r\n\r\njQuery(document).ready(function($) {\r\n\t\r\n\t//even height boxes (for block-grids)\r\n equalheight = function(container){\r\n var currentTallest = 0,\r\n currentRowStart = 0,\r\n rowDivs = new Array(),\r\n $el,\r\n topPosition = 0;\r\n $(container).each(function() {\r\n $el = $(this);\r\n $($el).height('auto')\r\n topPostion = $el.position().top;\r\n if (currentRowStart != topPostion) {\r\n for (currentDiv = 0 ; currentDiv < rowDivs.length ; currentDiv++) {\r\n rowDivs[currentDiv].height(currentTallest);\r\n }\r\n rowDivs.length = 0; // empty the array\r\n currentRowStart = topPostion;\r\n currentTallest = $el.height();\r\n rowDivs.push($el);\r\n } else {\r\n rowDivs.push($el);\r\n currentTallest = (currentTallest < $el.height()) ? ($el.height()) : (currentTallest);\r\n }\r\n for (currentDiv = 0 ; currentDiv < rowDivs.length ; currentDiv++) {\r\n rowDivs[currentDiv].height(currentTallest);\r\n }\r\n });\r\n }\r\n\r\n $(window).load(function() {\r\n equalheight('.equal-height');\r\n });\r\n\r\n $(window).resize(function() {\r\n equalheight('.equal-height');\r\n });\r\n\r\n $('.off-canvas-list .li1 label').click(function(e){\r\n console.log('li click');\r\n $(this).next('.ul2').slideToggle();\r\n })\r\n\r\n $('.off-canvas-list .li2 label').click(function(e){\r\n console.log('li click');\r\n $(this).next('.ul3').slideToggle();\r\n })\r\n\r\n});\r\n\r\nfunction googleTranslateElementInit() {\r\n\tnew google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element');\r\n}\r\n\r\n\r\n","/*\n * Foundation Responsive Library\n * http://foundation.zurb.com\n * Copyright 2014, ZURB\n * Free to use under the MIT license.\n * http://www.opensource.org/licenses/mit-license.php\n*/\n\n(function ($, window, document, undefined) {\n 'use strict';\n\n var header_helpers = function (class_array) {\n var i = class_array.length;\n var head = $('head');\n\n while (i--) {\n if(head.has('.' + class_array[i]).length === 0) {\n head.append('');\n }\n }\n };\n\n header_helpers([\n 'foundation-mq-small',\n 'foundation-mq-medium',\n 'foundation-mq-large',\n 'foundation-mq-xlarge',\n 'foundation-mq-xxlarge',\n 'foundation-data-attribute-namespace']);\n\n // Enable FastClick if present\n\n $(function() {\n if (typeof FastClick !== 'undefined') {\n // Don't attach to body if undefined\n if (typeof document.body !== 'undefined') {\n FastClick.attach(document.body);\n }\n }\n });\n\n // private Fast Selector wrapper,\n // returns jQuery object. Only use where\n // getElementById is not available.\n var S = function (selector, context) {\n if (typeof selector === 'string') {\n if (context) {\n var cont;\n if (context.jquery) {\n cont = context[0];\n if (!cont) return context;\n } else {\n cont = context;\n }\n return $(cont.querySelectorAll(selector));\n }\n\n return $(document.querySelectorAll(selector));\n }\n\n return $(selector, context);\n };\n\n // Namespace functions.\n\n var attr_name = function (init) {\n var arr = [];\n if (!init) arr.push('data');\n if (this.namespace.length > 0) arr.push(this.namespace);\n arr.push(this.name);\n\n return arr.join('-');\n };\n\n var add_namespace = function (str) {\n var parts = str.split('-'),\n i = parts.length,\n arr = [];\n\n while (i--) {\n if (i !== 0) {\n arr.push(parts[i]);\n } else {\n if (this.namespace.length > 0) {\n arr.push(this.namespace, parts[i]);\n } else {\n arr.push(parts[i]);\n }\n }\n }\n\n return arr.reverse().join('-');\n };\n\n // Event binding and data-options updating.\n\n var bindings = function (method, options) {\n var self = this,\n should_bind_events = !S(this).data(this.attr_name(true));\n\n\n if (S(this.scope).is('[' + this.attr_name() +']')) {\n S(this.scope).data(this.attr_name(true) + '-init', $.extend({}, this.settings, (options || method), this.data_options(S(this.scope))));\n\n if (should_bind_events) {\n this.events(this.scope);\n }\n\n } else {\n S('[' + this.attr_name() +']', this.scope).each(function () {\n var should_bind_events = !S(this).data(self.attr_name(true) + '-init');\n S(this).data(self.attr_name(true) + '-init', $.extend({}, self.settings, (options || method), self.data_options(S(this))));\n\n if (should_bind_events) {\n self.events(this);\n }\n });\n }\n // # Patch to fix #5043 to move this *after* the if/else clause in order for Backbone and similar frameworks to have improved control over event binding and data-options updating. \n if (typeof method === 'string') {\n return this[method].call(this, options);\n }\n\n };\n\n var single_image_loaded = function (image, callback) {\n function loaded () {\n callback(image[0]);\n }\n\n function bindLoad () {\n this.one('load', loaded);\n\n if (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent)) {\n var src = this.attr( 'src' ),\n param = src.match( /\\?/ ) ? '&' : '?';\n\n param += 'random=' + (new Date()).getTime();\n this.attr('src', src + param);\n }\n }\n\n if (!image.attr('src')) {\n loaded();\n return;\n }\n\n if (image[0].complete || image[0].readyState === 4) {\n loaded();\n } else {\n bindLoad.call(image);\n }\n };\n\n /*\n https://github.com/paulirish/matchMedia.js\n */\n\n window.matchMedia = window.matchMedia || (function( doc ) {\n\n \"use strict\";\n\n var bool,\n docElem = doc.documentElement,\n refNode = docElem.firstElementChild || docElem.firstChild,\n // fakeBody required for \n fakeBody = doc.createElement( \"body\" ),\n div = doc.createElement( \"div\" );\n\n div.id = \"mq-test-1\";\n div.style.cssText = \"position:absolute;top:-100em\";\n fakeBody.style.background = \"none\";\n fakeBody.appendChild(div);\n\n return function (q) {\n\n div.innerHTML = \"\";\n\n docElem.insertBefore( fakeBody, refNode );\n bool = div.offsetWidth === 42;\n docElem.removeChild( fakeBody );\n\n return {\n matches: bool,\n media: q\n };\n\n };\n\n }( document ));\n\n /*\n * jquery.requestAnimationFrame\n * https://github.com/gnarf37/jquery-requestAnimationFrame\n * Requires jQuery 1.8+\n *\n * Copyright (c) 2012 Corey Frang\n * Licensed under the MIT license.\n */\n\n (function($) {\n\n // requestAnimationFrame polyfill adapted from Erik Möller\n // fixes from Paul Irish and Tino Zijdel\n // http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\n var animating,\n lastTime = 0,\n vendors = ['webkit', 'moz'],\n requestAnimationFrame = window.requestAnimationFrame,\n cancelAnimationFrame = window.cancelAnimationFrame,\n jqueryFxAvailable = 'undefined' !== typeof jQuery.fx;\n\n for (; lastTime < vendors.length && !requestAnimationFrame; lastTime++) {\n requestAnimationFrame = window[ vendors[lastTime] + \"RequestAnimationFrame\" ];\n cancelAnimationFrame = cancelAnimationFrame ||\n window[ vendors[lastTime] + \"CancelAnimationFrame\" ] ||\n window[ vendors[lastTime] + \"CancelRequestAnimationFrame\" ];\n }\n\n function raf() {\n if (animating) {\n requestAnimationFrame(raf);\n\n if (jqueryFxAvailable) {\n jQuery.fx.tick();\n }\n }\n }\n\n if (requestAnimationFrame) {\n // use rAF\n window.requestAnimationFrame = requestAnimationFrame;\n window.cancelAnimationFrame = cancelAnimationFrame;\n\n if (jqueryFxAvailable) {\n jQuery.fx.timer = function (timer) {\n if (timer() && jQuery.timers.push(timer) && !animating) {\n animating = true;\n raf();\n }\n };\n\n jQuery.fx.stop = function () {\n animating = false;\n };\n }\n } else {\n // polyfill\n window.requestAnimationFrame = function (callback) {\n var currTime = new Date().getTime(),\n timeToCall = Math.max(0, 16 - (currTime - lastTime)),\n id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n\n window.cancelAnimationFrame = function (id) {\n clearTimeout(id);\n };\n\n }\n\n }( jQuery ));\n\n\n function removeQuotes (string) {\n if (typeof string === 'string' || string instanceof String) {\n string = string.replace(/^['\\\\/\"]+|(;\\s?})+|['\\\\/\"]+$/g, '');\n }\n\n return string;\n }\n\n window.Foundation = {\n name : 'Foundation',\n\n version : '5.3.1',\n\n media_queries : {\n small : S('.foundation-mq-small').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n medium : S('.foundation-mq-medium').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n large : S('.foundation-mq-large').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n xlarge: S('.foundation-mq-xlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, ''),\n xxlarge: S('.foundation-mq-xxlarge').css('font-family').replace(/^[\\/\\\\'\"]+|(;\\s?})+|[\\/\\\\'\"]+$/g, '')\n },\n\n stylesheet : $('').appendTo('head')[0].sheet,\n\n global: {\n namespace: undefined\n },\n\n init : function (scope, libraries, method, options, response) {\n var args = [scope, method, options, response],\n responses = [];\n\n // check RTL\n this.rtl = /rtl/i.test(S('html').attr('dir'));\n\n // set foundation global scope\n this.scope = scope || this.scope;\n\n this.set_namespace();\n\n if (libraries && typeof libraries === 'string' && !/reflow/i.test(libraries)) {\n if (this.libs.hasOwnProperty(libraries)) {\n responses.push(this.init_lib(libraries, args));\n }\n } else {\n for (var lib in this.libs) {\n responses.push(this.init_lib(lib, libraries));\n }\n }\n\n return scope;\n },\n\n init_lib : function (lib, args) {\n if (this.libs.hasOwnProperty(lib)) {\n this.patch(this.libs[lib]);\n\n if (args && args.hasOwnProperty(lib)) {\n if (typeof this.libs[lib].settings !== 'undefined') {\n $.extend(true, this.libs[lib].settings, args[lib]);\n }\n else if (typeof this.libs[lib].defaults !== 'undefined') {\n $.extend(true, this.libs[lib].defaults, args[lib]);\n }\n return this.libs[lib].init.apply(this.libs[lib], [this.scope, args[lib]]);\n }\n\n args = args instanceof Array ? args : new Array(args); // PATCH: added this line\n return this.libs[lib].init.apply(this.libs[lib], args);\n }\n\n return function () {};\n },\n\n patch : function (lib) {\n lib.scope = this.scope;\n lib.namespace = this.global.namespace;\n lib.rtl = this.rtl;\n lib['data_options'] = this.utils.data_options;\n lib['attr_name'] = attr_name;\n lib['add_namespace'] = add_namespace;\n lib['bindings'] = bindings;\n lib['S'] = this.utils.S;\n },\n\n inherit : function (scope, methods) {\n var methods_arr = methods.split(' '),\n i = methods_arr.length;\n\n while (i--) {\n if (this.utils.hasOwnProperty(methods_arr[i])) {\n scope[methods_arr[i]] = this.utils[methods_arr[i]];\n }\n }\n },\n\n set_namespace: function () {\n\n // Description:\n // Don't bother reading the namespace out of the meta tag\n // if the namespace has been set globally in javascript\n //\n // Example:\n // Foundation.global.namespace = 'my-namespace';\n // or make it an empty string:\n // Foundation.global.namespace = '';\n //\n //\n\n // If the namespace has not been set (is undefined), try to read it out of the meta element.\n // Otherwise use the globally defined namespace, even if it's empty ('')\n var namespace = ( this.global.namespace === undefined ) ? $('.foundation-data-attribute-namespace').css('font-family') : this.global.namespace;\n\n // Finally, if the namsepace is either undefined or false, set it to an empty string.\n // Otherwise use the namespace value.\n this.global.namespace = ( namespace === undefined || /false/i.test(namespace) ) ? '' : namespace;\n },\n\n libs : {},\n\n // methods that can be inherited in libraries\n utils : {\n\n // Description:\n // Fast Selector wrapper returns jQuery object. Only use where getElementById\n // is not available.\n //\n // Arguments:\n // Selector (String): CSS selector describing the element(s) to be\n // returned as a jQuery object.\n //\n // Scope (String): CSS selector describing the area to be searched. Default\n // is document.\n //\n // Returns:\n // Element (jQuery Object): jQuery object containing elements matching the\n // selector within the scope.\n S : S,\n\n // Description:\n // Executes a function a max of once every n milliseconds\n //\n // Arguments:\n // Func (Function): Function to be throttled.\n //\n // Delay (Integer): Function execution threshold in milliseconds.\n //\n // Returns:\n // Lazy_function (Function): Function with throttling applied.\n throttle : function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer == null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n },\n\n // Description:\n // Executes a function when it stops being invoked for n seconds\n // Modified version of _.debounce() http://underscorejs.org\n //\n // Arguments:\n // Func (Function): Function to be debounced.\n //\n // Delay (Integer): Function execution threshold in milliseconds.\n //\n // Immediate (Bool): Whether the function should be called at the beginning\n // of the delay instead of the end. Default is false.\n //\n // Returns:\n // Lazy_function (Function): Function with debouncing applied.\n debounce : function (func, delay, immediate) {\n var timeout, result;\n return function () {\n var context = this, args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, delay);\n if (callNow) result = func.apply(context, args);\n return result;\n };\n },\n\n // Description:\n // Parses data-options attribute\n //\n // Arguments:\n // El (jQuery Object): Element to be parsed.\n //\n // Returns:\n // Options (Javascript Object): Contents of the element's data-options\n // attribute.\n data_options : function (el, data_attr_name) {\n data_attr_name = data_attr_name || 'options';\n var opts = {}, ii, p, opts_arr,\n data_options = function (el) {\n var namespace = Foundation.global.namespace;\n\n if (namespace.length > 0) {\n return el.data(namespace + '-' + data_attr_name);\n }\n\n return el.data(data_attr_name);\n };\n\n var cached_options = data_options(el);\n\n if (typeof cached_options === 'object') {\n return cached_options;\n }\n\n opts_arr = (cached_options || ':').split(';');\n ii = opts_arr.length;\n\n function isNumber (o) {\n return ! isNaN (o-0) && o !== null && o !== \"\" && o !== false && o !== true;\n }\n\n function trim (str) {\n if (typeof str === 'string') return $.trim(str);\n return str;\n }\n\n while (ii--) {\n p = opts_arr[ii].split(':');\n p = [p[0], p.slice(1).join(':')];\n\n if (/true/i.test(p[1])) p[1] = true;\n if (/false/i.test(p[1])) p[1] = false;\n if (isNumber(p[1])) {\n if (p[1].indexOf('.') === -1) {\n p[1] = parseInt(p[1], 10);\n } else {\n p[1] = parseFloat(p[1]);\n }\n }\n\n if (p.length === 2 && p[0].length > 0) {\n opts[trim(p[0])] = trim(p[1]);\n }\n }\n\n return opts;\n },\n\n // Description:\n // Adds JS-recognizable media queries\n //\n // Arguments:\n // Media (String): Key string for the media query to be stored as in\n // Foundation.media_queries\n //\n // Class (String): Class name for the generated tag\n register_media : function (media, media_class) {\n if(Foundation.media_queries[media] === undefined) {\n $('head').append('');\n Foundation.media_queries[media] = removeQuotes($('.' + media_class).css('font-family'));\n }\n },\n\n // Description:\n // Add custom CSS within a JS-defined media query\n //\n // Arguments:\n // Rule (String): CSS rule to be appended to the document.\n //\n // Media (String): Optional media query string for the CSS rule to be\n // nested under.\n add_custom_rule : function (rule, media) {\n if (media === undefined && Foundation.stylesheet) {\n Foundation.stylesheet.insertRule(rule, Foundation.stylesheet.cssRules.length);\n } else {\n var query = Foundation.media_queries[media];\n\n if (query !== undefined) {\n Foundation.stylesheet.insertRule('@media ' +\n Foundation.media_queries[media] + '{ ' + rule + ' }');\n }\n }\n },\n\n // Description:\n // Performs a callback function when an image is fully loaded\n //\n // Arguments:\n // Image (jQuery Object): Image(s) to check if loaded.\n //\n // Callback (Function): Function to execute when image is fully loaded.\n image_loaded : function (images, callback) {\n var self = this,\n unloaded = images.length;\n\n if (unloaded === 0) {\n callback(images);\n }\n\n images.each(function () {\n single_image_loaded(self.S(this), function () {\n unloaded -= 1;\n if (unloaded === 0) {\n callback(images);\n }\n });\n });\n },\n\n // Description:\n // Returns a random, alphanumeric string\n //\n // Arguments:\n // Length (Integer): Length of string to be generated. Defaults to random\n // integer.\n //\n // Returns:\n // Rand (String): Pseudo-random, alphanumeric string.\n random_str : function () {\n if (!this.fidx) this.fidx = 0;\n this.prefix = this.prefix || [(this.name || 'F'), (+new Date).toString(36)].join('-');\n\n return this.prefix + (this.fidx++).toString(36);\n }\n }\n };\n\n $.fn.foundation = function () {\n var args = Array.prototype.slice.call(arguments, 0);\n\n return this.each(function () {\n Foundation.init.apply(Foundation, [this].concat(args));\n return this;\n });\n };\n\n}(jQuery, window, window.document));\n",";(function ($, window, document, undefined) {\n 'use strict';\n\n Foundation.libs.offcanvas = {\n name : 'offcanvas',\n\n version : '5.3.1',\n\n settings : {\n open_method: 'move',\n close_on_click: true\n },\n\n init : function (scope, method, options) {\n this.bindings(method, options);\n },\n\n events : function () {\n var self = this,\n S = self.S,\n move_class = '',\n right_postfix = '',\n left_postfix = '';\n\n if (this.settings.open_method === 'move') {\n move_class = 'move-';\n right_postfix = 'right';\n left_postfix = 'left';\n } else if (this.settings.open_method === 'overlap') {\n move_class = 'offcanvas-overlap';\n }\n\n S(this.scope).off('.offcanvas')\n .on('click.fndtn.offcanvas', '.left-off-canvas-toggle', function (e) {\n self.click_toggle_class(e, move_class + right_postfix);\n })\n .on('click.fndtn.offcanvas', '.left-off-canvas-menu a', function (e) {\n var settings = self.get_settings(e);\n if (settings.close_on_click) {\n self.hide.call(self, move_class + right_postfix, self.get_wrapper(e));\n }\n })\n .on('click.fndtn.offcanvas', '.right-off-canvas-toggle', function (e) {\n self.click_toggle_class(e, move_class + left_postfix);\n })\n .on('click.fndtn.offcanvas', '.right-off-canvas-menu a', function (e) {\n var settings = self.get_settings(e);\n if (settings.close_on_click) {\n self.hide.call(self, move_class + left_postfix, self.get_wrapper(e));\n }\n })\n .on('click.fndtn.offcanvas', '.exit-off-canvas', function (e) {\n self.click_remove_class(e, move_class + left_postfix);\n if (right_postfix) self.click_remove_class(e, move_class + right_postfix);\n });\n\n },\n\n toggle: function(class_name, $off_canvas) {\n $off_canvas = $off_canvas || this.get_wrapper();\n if ($off_canvas.is('.' + class_name)) {\n this.hide(class_name, $off_canvas);\n } else {\n this.show(class_name, $off_canvas);\n }\n },\n\n show: function(class_name, $off_canvas) {\n $off_canvas = $off_canvas || this.get_wrapper();\n $off_canvas.trigger('open').trigger('open.fndtn.offcanvas');\n $off_canvas.addClass(class_name);\n },\n\n hide: function(class_name, $off_canvas) {\n $off_canvas = $off_canvas || this.get_wrapper();\n $off_canvas.trigger('close').trigger('close.fndtn.offcanvas');\n $off_canvas.removeClass(class_name);\n },\n\n click_toggle_class: function(e, class_name) {\n e.preventDefault();\n var $off_canvas = this.get_wrapper(e);\n this.toggle(class_name, $off_canvas);\n },\n\n click_remove_class: function(e, class_name) {\n e.preventDefault();\n var $off_canvas = this.get_wrapper(e);\n this.hide(class_name, $off_canvas);\n },\n\n get_settings: function(e) {\n var offcanvas = this.S(e.target).closest('[' + this.attr_name() + ']');\n return offcanvas.data(this.attr_name(true) + '-init') || this.settings;\n },\n\n get_wrapper: function(e) {\n var $off_canvas = this.S(e ? e.target : this.scope).closest('.off-canvas-wrap');\n\n if ($off_canvas.length === 0) {\n $off_canvas = this.S('.off-canvas-wrap');\n }\n return $off_canvas;\n },\n\n reflow : function () {}\n };\n}(jQuery, window, window.document));\n","/**\n * BxSlider v4.1.2 - Fully loaded, responsive content slider\n * http://bxslider.com\n *\n * Copyright 2014, Steven Wanderski - http://stevenwanderski.com - http://bxcreative.com\n * Written while drinking Belgian ales and listening to jazz\n *\n * Released under the MIT license - http://opensource.org/licenses/MIT\n */\n\n;(function($){\n\n\tvar plugin = {};\n\n\tvar defaults = {\n\n\t\t// GENERAL\n\t\tmode: 'horizontal',\n\t\tslideSelector: '',\n\t\tinfiniteLoop: true,\n\t\thideControlOnEnd: false,\n\t\tspeed: 500,\n\t\teasing: null,\n\t\tslideMargin: 0,\n\t\tstartSlide: 0,\n\t\trandomStart: false,\n\t\tcaptions: false,\n\t\tticker: false,\n\t\ttickerHover: false,\n\t\tadaptiveHeight: false,\n\t\tadaptiveHeightSpeed: 500,\n\t\tvideo: false,\n\t\tuseCSS: true,\n\t\tpreloadImages: 'visible',\n\t\tresponsive: true,\n\t\tslideZIndex: 50,\n\t\twrapperClass: 'bx-wrapper',\n\n\t\t// TOUCH\n\t\ttouchEnabled: true,\n\t\tswipeThreshold: 50,\n\t\toneToOneTouch: true,\n\t\tpreventDefaultSwipeX: true,\n\t\tpreventDefaultSwipeY: false,\n\n\t\t// PAGER\n\t\tpager: true,\n\t\tpagerType: 'full',\n\t\tpagerShortSeparator: ' / ',\n\t\tpagerSelector: null,\n\t\tbuildPager: null,\n\t\tpagerCustom: null,\n\n\t\t// CONTROLS\n\t\tcontrols: true,\n\t\tnextText: 'Next',\n\t\tprevText: 'Prev',\n\t\tnextSelector: null,\n\t\tprevSelector: null,\n\t\tautoControls: false,\n\t\tstartText: 'Start',\n\t\tstopText: 'Stop',\n\t\tautoControlsCombine: false,\n\t\tautoControlsSelector: null,\n\n\t\t// AUTO\n\t\tauto: false,\n\t\tpause: 4000,\n\t\tautoStart: true,\n\t\tautoDirection: 'next',\n\t\tautoHover: false,\n\t\tautoDelay: 0,\n\t\tautoSlideForOnePage: false,\n\n\t\t// CAROUSEL\n\t\tminSlides: 1,\n\t\tmaxSlides: 1,\n\t\tmoveSlides: 0,\n\t\tslideWidth: 0,\n\n\t\t// CALLBACKS\n\t\tonSliderLoad: function() {},\n\t\tonSlideBefore: function() {},\n\t\tonSlideAfter: function() {},\n\t\tonSlideNext: function() {},\n\t\tonSlidePrev: function() {},\n\t\tonSliderResize: function() {}\n\t}\n\n\t$.fn.bxSlider = function(options){\n\n\t\tif(this.length == 0) return this;\n\n\t\t// support mutltiple elements\n\t\tif(this.length > 1){\n\t\t\tthis.each(function(){$(this).bxSlider(options)});\n\t\t\treturn this;\n\t\t}\n\n\t\t// create a namespace to be used throughout the plugin\n\t\tvar slider = {};\n\t\t// set a reference to our slider element\n\t\tvar el = this;\n\t\tplugin.el = this;\n\n\t\t/**\n\t\t * Makes slideshow responsive\n\t\t */\n\t\t// first get the original window dimens (thanks alot IE)\n\t\tvar windowWidth = $(window).width();\n\t\tvar windowHeight = $(window).height();\n\n\n\n\t\t/**\n\t\t * ===================================================================================\n\t\t * = PRIVATE FUNCTIONS\n\t\t * ===================================================================================\n\t\t */\n\n\t\t/**\n\t\t * Initializes namespace settings to be used throughout plugin\n\t\t */\n\t\tvar init = function(){\n\t\t\t// merge user-supplied options with the defaults\n\t\t\tslider.settings = $.extend({}, defaults, options);\n\t\t\t// parse slideWidth setting\n\t\t\tslider.settings.slideWidth = parseInt(slider.settings.slideWidth);\n\t\t\t// store the original children\n\t\t\tslider.children = el.children(slider.settings.slideSelector);\n\t\t\t// check if actual number of slides is less than minSlides / maxSlides\n\t\t\tif(slider.children.length < slider.settings.minSlides) slider.settings.minSlides = slider.children.length;\n\t\t\tif(slider.children.length < slider.settings.maxSlides) slider.settings.maxSlides = slider.children.length;\n\t\t\t// if random start, set the startSlide setting to random number\n\t\t\tif(slider.settings.randomStart) slider.settings.startSlide = Math.floor(Math.random() * slider.children.length);\n\t\t\t// store active slide information\n\t\t\tslider.active = { index: slider.settings.startSlide }\n\t\t\t// store if the slider is in carousel mode (displaying / moving multiple slides)\n\t\t\tslider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1;\n\t\t\t// if carousel, force preloadImages = 'all'\n\t\t\tif(slider.carousel) slider.settings.preloadImages = 'all';\n\t\t\t// calculate the min / max width thresholds based on min / max number of slides\n\t\t\t// used to setup and update carousel slides dimensions\n\t\t\tslider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);\n\t\t\tslider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n\t\t\t// store the current state of the slider (if currently animating, working is true)\n\t\t\tslider.working = false;\n\t\t\t// initialize the controls object\n\t\t\tslider.controls = {};\n\t\t\t// initialize an auto interval\n\t\t\tslider.interval = null;\n\t\t\t// determine which property to use for transitions\n\t\t\tslider.animProp = slider.settings.mode == 'vertical' ? 'top' : 'left';\n\t\t\t// determine if hardware acceleration can be used\n\t\t\tslider.usingCSS = slider.settings.useCSS && slider.settings.mode != 'fade' && (function(){\n\t\t\t\t// create our test div element\n\t\t\t\tvar div = document.createElement('div');\n\t\t\t\t// css transition properties\n\t\t\t\tvar props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\n\t\t\t\t// test for each property\n\t\t\t\tfor(var i in props){\n\t\t\t\t\tif(div.style[props[i]] !== undefined){\n\t\t\t\t\t\tslider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\n\t\t\t\t\t\tslider.animProp = '-' + slider.cssPrefix + '-transform';\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}());\n\t\t\t// if vertical mode always make maxSlides and minSlides equal\n\t\t\tif(slider.settings.mode == 'vertical') slider.settings.maxSlides = slider.settings.minSlides;\n\t\t\t// save original style data\n\t\t\tel.data(\"origStyle\", el.attr(\"style\"));\n\t\t\tel.children(slider.settings.slideSelector).each(function() {\n\t\t\t $(this).data(\"origStyle\", $(this).attr(\"style\"));\n\t\t\t});\n\t\t\t// perform all DOM / CSS modifications\n\t\t\tsetup();\n\t\t}\n\n\t\t/**\n\t\t * Performs all DOM and CSS modifications\n\t\t */\n\t\tvar setup = function(){\n\t\t\t// wrap el in a wrapper\n\t\t\tel.wrap('');\n\t\t\t// store a namspace reference to .bx-viewport\n\t\t\tslider.viewport = el.parent();\n\t\t\t// add a loading div to display while images are loading\n\t\t\tslider.loader = $('');\n\t\t\tslider.viewport.prepend(slider.loader);\n\t\t\t// set el to a massive width, to hold any needed slides\n\t\t\t// also strip any margin and padding from el\n\t\t\tel.css({\n\t\t\t\twidth: slider.settings.mode == 'horizontal' ? (slider.children.length * 100 + 215) + '%' : 'auto',\n\t\t\t\tposition: 'relative'\n\t\t\t});\n\t\t\t// if using CSS, add the easing property\n\t\t\tif(slider.usingCSS && slider.settings.easing){\n\t\t\t\tel.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\n\t\t\t// if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\n\t\t\t}else if(!slider.settings.easing){\n\t\t\t\tslider.settings.easing = 'swing';\n\t\t\t}\n\t\t\tvar slidesShowing = getNumberSlidesShowing();\n\t\t\t// make modifications to the viewport (.bx-viewport)\n\t\t\tslider.viewport.css({\n\t\t\t\twidth: '100%',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tposition: 'relative'\n\t\t\t});\n\t\t\tslider.viewport.parent().css({\n\t\t\t\tmaxWidth: getViewportMaxWidth()\n\t\t\t});\n\t\t\t// make modification to the wrapper (.bx-wrapper)\n\t\t\tif(!slider.settings.pager) {\n\t\t\t\tslider.viewport.parent().css({\n\t\t\t\tmargin: '0 auto 0px'\n\t\t\t\t});\n\t\t\t}\n\t\t\t// apply css to all slider children\n\t\t\tslider.children.css({\n\t\t\t\t'float': slider.settings.mode == 'horizontal' ? 'left' : 'none',\n\t\t\t\tlistStyle: 'none',\n\t\t\t\tposition: 'relative'\n\t\t\t});\n\t\t\t// apply the calculated width after the float is applied to prevent scrollbar interference\n\t\t\tslider.children.css('width', getSlideWidth());\n\t\t\t// if slideMargin is supplied, add the css\n\t\t\tif(slider.settings.mode == 'horizontal' && slider.settings.slideMargin > 0) slider.children.css('marginRight', slider.settings.slideMargin);\n\t\t\tif(slider.settings.mode == 'vertical' && slider.settings.slideMargin > 0) slider.children.css('marginBottom', slider.settings.slideMargin);\n\t\t\t// if \"fade\" mode, add positioning and z-index CSS\n\t\t\tif(slider.settings.mode == 'fade'){\n\t\t\t\tslider.children.css({\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tzIndex: 0,\n\t\t\t\t\tdisplay: 'none'\n\t\t\t\t});\n\t\t\t\t// prepare the z-index on the showing element\n\t\t\t\tslider.children.eq(slider.settings.startSlide).css({zIndex: slider.settings.slideZIndex, display: 'block'});\n\t\t\t}\n\t\t\t// create an element to contain all slider controls (pager, start / stop, etc)\n\t\t\tslider.controls.el = $('');\n\t\t\t// if captions are requested, add them\n\t\t\tif(slider.settings.captions) appendCaptions();\n\t\t\t// check if startSlide is last slide\n\t\t\tslider.active.last = slider.settings.startSlide == getPagerQty() - 1;\n\t\t\t// if video is true, set up the fitVids plugin\n\t\t\tif(slider.settings.video) el.fitVids();\n\t\t\t// set the default preload selector (visible)\n\t\t\tvar preloadSelector = slider.children.eq(slider.settings.startSlide);\n\t\t\tif (slider.settings.preloadImages == \"all\") preloadSelector = slider.children;\n\t\t\t// only check for control addition if not in \"ticker\" mode\n\t\t\tif(!slider.settings.ticker){\n\t\t\t\t// if pager is requested, add it\n\t\t\t\tif(slider.settings.pager) appendPager();\n\t\t\t\t// if controls are requested, add them\n\t\t\t\tif(slider.settings.controls) appendControls();\n\t\t\t\t// if auto is true, and auto controls are requested, add them\n\t\t\t\tif(slider.settings.auto && slider.settings.autoControls) appendControlsAuto();\n\t\t\t\t// if any control option is requested, add the controls wrapper\n\t\t\t\tif(slider.settings.controls || slider.settings.autoControls || slider.settings.pager) slider.viewport.after(slider.controls.el);\n\t\t\t// if ticker mode, do not allow a pager\n\t\t\t}else{\n\t\t\t\tslider.settings.pager = false;\n\t\t\t}\n\t\t\t// preload all images, then perform final DOM / CSS modifications that depend on images being loaded\n\t\t\tloadElements(preloadSelector, start);\n\t\t}\n\n\t\tvar loadElements = function(selector, callback){\n\t\t\tvar total = selector.find('img, iframe').length;\n\t\t\tif (total == 0){\n\t\t\t\tcallback();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar count = 0;\n\t\t\tselector.find('img, iframe').each(function(){\n\t\t\t\t$(this).one('load', function() {\n\t\t\t\t if(++count == total) callback();\n\t\t\t\t}).each(function() {\n\t\t\t\t if(this.complete) $(this).load();\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Start the slider\n\t\t */\n\t\tvar start = function(){\n\t\t\t// if infinite loop, prepare additional slides\n\t\t\tif(slider.settings.infiniteLoop && slider.settings.mode != 'fade' && !slider.settings.ticker){\n\t\t\t\tvar slice = slider.settings.mode == 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides;\n\t\t\t\tvar sliceAppend = slider.children.slice(0, slice).clone().addClass('bx-clone');\n\t\t\t\tvar slicePrepend = slider.children.slice(-slice).clone().addClass('bx-clone');\n\t\t\t\tel.append(sliceAppend).prepend(slicePrepend);\n\t\t\t}\n\t\t\t// remove the loading DOM element\n\t\t\tslider.loader.remove();\n\t\t\t// set the left / top position of \"el\"\n\t\t\tsetSlidePosition();\n\t\t\t// if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\n\t\t\tif (slider.settings.mode == 'vertical') slider.settings.adaptiveHeight = true;\n\t\t\t// set the viewport height\n\t\t\tslider.viewport.height(getViewportHeight());\n\t\t\t// make sure everything is positioned just right (same as a window resize)\n\t\t\tel.redrawSlider();\n\t\t\t// onSliderLoad callback\n\t\t\tslider.settings.onSliderLoad(slider.active.index);\n\t\t\t// slider has been fully initialized\n\t\t\tslider.initialized = true;\n\t\t\t// bind the resize call to the window\n\t\t\tif (slider.settings.responsive) $(window).bind('resize', resizeWindow);\n\t\t\t// if auto is true and has more than 1 page, start the show\n\t\t\tif (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) initAuto();\n\t\t\t// if ticker is true, start the ticker\n\t\t\tif (slider.settings.ticker) initTicker();\n\t\t\t// if pager is requested, make the appropriate pager link active\n\t\t\tif (slider.settings.pager) updatePagerActive(slider.settings.startSlide);\n\t\t\t// check for any updates to the controls (like hideControlOnEnd updates)\n\t\t\tif (slider.settings.controls) updateDirectionControls();\n\t\t\t// if touchEnabled is true, setup the touch events\n\t\t\tif (slider.settings.touchEnabled && !slider.settings.ticker) initTouch();\n\t\t}\n\n\t\t/**\n\t\t * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\n\t\t */\n\t\tvar getViewportHeight = function(){\n\t\t\tvar height = 0;\n\t\t\t// first determine which children (slides) should be used in our height calculation\n\t\t\tvar children = $();\n\t\t\t// if mode is not \"vertical\" and adaptiveHeight is false, include all children\n\t\t\tif(slider.settings.mode != 'vertical' && !slider.settings.adaptiveHeight){\n\t\t\t\tchildren = slider.children;\n\t\t\t}else{\n\t\t\t\t// if not carousel, return the single active child\n\t\t\t\tif(!slider.carousel){\n\t\t\t\t\tchildren = slider.children.eq(slider.active.index);\n\t\t\t\t// if carousel, return a slice of children\n\t\t\t\t}else{\n\t\t\t\t\t// get the individual slide index\n\t\t\t\t\tvar currentIndex = slider.settings.moveSlides == 1 ? slider.active.index : slider.active.index * getMoveBy();\n\t\t\t\t\t// add the current slide to the children\n\t\t\t\t\tchildren = slider.children.eq(currentIndex);\n\t\t\t\t\t// cycle through the remaining \"showing\" slides\n\t\t\t\t\tfor (i = 1; i <= slider.settings.maxSlides - 1; i++){\n\t\t\t\t\t\t// if looped back to the start\n\t\t\t\t\t\tif(currentIndex + i >= slider.children.length){\n\t\t\t\t\t\t\tchildren = children.add(slider.children.eq(i - 1));\n\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\tchildren = children.add(slider.children.eq(currentIndex + i));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// if \"vertical\" mode, calculate the sum of the heights of the children\n\t\t\tif(slider.settings.mode == 'vertical'){\n\t\t\t\tchildren.each(function(index) {\n\t\t\t\t height += $(this).outerHeight();\n\t\t\t\t});\n\t\t\t\t// add user-supplied margins\n\t\t\t\tif(slider.settings.slideMargin > 0){\n\t\t\t\t\theight += slider.settings.slideMargin * (slider.settings.minSlides - 1);\n\t\t\t\t}\n\t\t\t// if not \"vertical\" mode, calculate the max height of the children\n\t\t\t}else{\n\t\t\t\theight = Math.max.apply(Math, children.map(function(){\n\t\t\t\t\treturn $(this).outerHeight(false);\n\t\t\t\t}).get());\n\t\t\t}\n\n\t\t\tif(slider.viewport.css('box-sizing') == 'border-box'){\n\t\t\t\theight +=\tparseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +\n\t\t\t\t\t\t\tparseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\n\t\t\t}else if(slider.viewport.css('box-sizing') == 'padding-box'){\n\t\t\t\theight +=\tparseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\n\t\t\t}\n\n\t\t\treturn height;\n\t\t}\n\n\t\t/**\n\t\t * Returns the calculated width to be used for the outer wrapper / viewport\n\t\t */\n\t\tvar getViewportMaxWidth = function(){\n\t\t\tvar width = '100%';\n\t\t\tif(slider.settings.slideWidth > 0){\n\t\t\t\tif(slider.settings.mode == 'horizontal'){\n\t\t\t\t\twidth = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\n\t\t\t\t}else{\n\t\t\t\t\twidth = slider.settings.slideWidth;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn width;\n\t\t}\n\n\t\t/**\n\t\t * Returns the calculated width to be applied to each slide\n\t\t */\n\t\tvar getSlideWidth = function(){\n\t\t\t// start with any user-supplied slide width\n\t\t\tvar newElWidth = slider.settings.slideWidth;\n\t\t\t// get the current viewport width\n\t\t\tvar wrapWidth = slider.viewport.width();\n\t\t\t// if slide width was not supplied, or is larger than the viewport use the viewport width\n\t\t\tif(slider.settings.slideWidth == 0 ||\n\t\t\t\t(slider.settings.slideWidth > wrapWidth && !slider.carousel) ||\n\t\t\t\tslider.settings.mode == 'vertical'){\n\t\t\t\tnewElWidth = wrapWidth;\n\t\t\t// if carousel, use the thresholds to determine the width\n\t\t\t}else if(slider.settings.maxSlides > 1 && slider.settings.mode == 'horizontal'){\n\t\t\t\tif(wrapWidth > slider.maxThreshold){\n\t\t\t\t\t// newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.maxSlides - 1))) / slider.settings.maxSlides;\n\t\t\t\t}else if(wrapWidth < slider.minThreshold){\n\t\t\t\t\tnewElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn newElWidth;\n\t\t}\n\n\t\t/**\n\t\t * Returns the number of slides currently visible in the viewport (includes partially visible slides)\n\t\t */\n\t\tvar getNumberSlidesShowing = function(){\n\t\t\tvar slidesShowing = 1;\n\t\t\tif(slider.settings.mode == 'horizontal' && slider.settings.slideWidth > 0){\n\t\t\t\t// if viewport is smaller than minThreshold, return minSlides\n\t\t\t\tif(slider.viewport.width() < slider.minThreshold){\n\t\t\t\t\tslidesShowing = slider.settings.minSlides;\n\t\t\t\t// if viewport is larger than minThreshold, return maxSlides\n\t\t\t\t}else if(slider.viewport.width() > slider.maxThreshold){\n\t\t\t\t\tslidesShowing = slider.settings.maxSlides;\n\t\t\t\t// if viewport is between min / max thresholds, divide viewport width by first child width\n\t\t\t\t}else{\n\t\t\t\t\tvar childWidth = slider.children.first().width() + slider.settings.slideMargin;\n\t\t\t\t\tslidesShowing = Math.floor((slider.viewport.width() +\n\t\t\t\t\t\tslider.settings.slideMargin) / childWidth);\n\t\t\t\t}\n\t\t\t// if \"vertical\" mode, slides showing will always be minSlides\n\t\t\t}else if(slider.settings.mode == 'vertical'){\n\t\t\t\tslidesShowing = slider.settings.minSlides;\n\t\t\t}\n\t\t\treturn slidesShowing;\n\t\t}\n\n\t\t/**\n\t\t * Returns the number of pages (one full viewport of slides is one \"page\")\n\t\t */\n\t\tvar getPagerQty = function(){\n\t\t\tvar pagerQty = 0;\n\t\t\t// if moveSlides is specified by the user\n\t\t\tif(slider.settings.moveSlides > 0){\n\t\t\t\tif(slider.settings.infiniteLoop){\n\t\t\t\t\tpagerQty = Math.ceil(slider.children.length / getMoveBy());\n\t\t\t\t}else{\n\t\t\t\t\t// use a while loop to determine pages\n\t\t\t\t\tvar breakPoint = 0;\n\t\t\t\t\tvar counter = 0\n\t\t\t\t\t// when breakpoint goes above children length, counter is the number of pages\n\t\t\t\t\twhile (breakPoint < slider.children.length){\n\t\t\t\t\t\t++pagerQty;\n\t\t\t\t\t\tbreakPoint = counter + getNumberSlidesShowing();\n\t\t\t\t\t\tcounter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// if moveSlides is 0 (auto) divide children length by sides showing, then round up\n\t\t\t}else{\n\t\t\t\tpagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\n\t\t\t}\n\t\t\treturn pagerQty;\n\t\t}\n\n\t\t/**\n\t\t * Returns the number of indivual slides by which to shift the slider\n\t\t */\n\t\tvar getMoveBy = function(){\n\t\t\t// if moveSlides was set by the user and moveSlides is less than number of slides showing\n\t\t\tif(slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()){\n\t\t\t\treturn slider.settings.moveSlides;\n\t\t\t}\n\t\t\t// if moveSlides is 0 (auto)\n\t\t\treturn getNumberSlidesShowing();\n\t\t}\n\n\t\t/**\n\t\t * Sets the slider's (el) left or top position\n\t\t */\n\t\tvar setSlidePosition = function(){\n\t\t\t// if last slide, not infinite loop, and number of children is larger than specified maxSlides\n\t\t\tif(slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop){\n\t\t\t\tif (slider.settings.mode == 'horizontal'){\n\t\t\t\t\t// get the last child's position\n\t\t\t\t\tvar lastChild = slider.children.last();\n\t\t\t\t\tvar position = lastChild.position();\n\t\t\t\t\t// set the left position\n\t\t\t\t\tsetPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\n\t\t\t\t}else if(slider.settings.mode == 'vertical'){\n\t\t\t\t\t// get the last showing index's position\n\t\t\t\t\tvar lastShowingIndex = slider.children.length - slider.settings.minSlides;\n\t\t\t\t\tvar position = slider.children.eq(lastShowingIndex).position();\n\t\t\t\t\t// set the top position\n\t\t\t\t\tsetPositionProperty(-position.top, 'reset', 0);\n\t\t\t\t}\n\t\t\t// if not last slide\n\t\t\t}else{\n\t\t\t\t// get the position of the first showing slide\n\t\t\t\tvar position = slider.children.eq(slider.active.index * getMoveBy()).position();\n\t\t\t\t// check for last slide\n\t\t\t\tif (slider.active.index == getPagerQty() - 1) slider.active.last = true;\n\t\t\t\t// set the repective position\n\t\t\t\tif (position != undefined){\n\t\t\t\t\tif (slider.settings.mode == 'horizontal') setPositionProperty(-position.left, 'reset', 0);\n\t\t\t\t\telse if (slider.settings.mode == 'vertical') setPositionProperty(-position.top, 'reset', 0);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Sets the el's animating property position (which in turn will sometimes animate el).\n\t\t * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\n\t\t *\n\t\t * @param value (int)\n\t\t * - the animating property's value\n\t\t *\n\t\t * @param type (string) 'slider', 'reset', 'ticker'\n\t\t * - the type of instance for which the function is being\n\t\t *\n\t\t * @param duration (int)\n\t\t * - the amount of time (in ms) the transition should occupy\n\t\t *\n\t\t * @param params (array) optional\n\t\t * - an optional parameter containing any variables that need to be passed in\n\t\t */\n\t\tvar setPositionProperty = function(value, type, duration, params){\n\t\t\t// use CSS transform\n\t\t\tif(slider.usingCSS){\n\t\t\t\t// determine the translate3d value\n\t\t\t\tvar propValue = slider.settings.mode == 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\n\t\t\t\t// add the CSS transition-duration\n\t\t\t\tel.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\n\t\t\t\tif(type == 'slide'){\n\t\t\t\t\t// set the property value\n\t\t\t\t\tel.css(slider.animProp, propValue);\n\t\t\t\t\t// bind a callback method - executes when CSS transition completes\n\t\t\t\t\tel.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(){\n\t\t\t\t\t\t// unbind the callback\n\t\t\t\t\t\tel.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n\t\t\t\t\t\tupdateAfterSlideTransition();\n\t\t\t\t\t});\n\t\t\t\t}else if(type == 'reset'){\n\t\t\t\t\tel.css(slider.animProp, propValue);\n\t\t\t\t}else if(type == 'ticker'){\n\t\t\t\t\t// make the transition use 'linear'\n\t\t\t\t\tel.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\n\t\t\t\t\tel.css(slider.animProp, propValue);\n\t\t\t\t\t// bind a callback method - executes when CSS transition completes\n\t\t\t\t\tel.bind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function(){\n\t\t\t\t\t\t// unbind the callback\n\t\t\t\t\t\tel.unbind('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\n\t\t\t\t\t\t// reset the position\n\t\t\t\t\t\tsetPositionProperty(params['resetValue'], 'reset', 0);\n\t\t\t\t\t\t// start the loop again\n\t\t\t\t\t\ttickerLoop();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t// use JS animate\n\t\t\t}else{\n\t\t\t\tvar animateObj = {};\n\t\t\t\tanimateObj[slider.animProp] = value;\n\t\t\t\tif(type == 'slide'){\n\t\t\t\t\tel.animate(animateObj, duration, slider.settings.easing, function(){\n\t\t\t\t\t\tupdateAfterSlideTransition();\n\t\t\t\t\t});\n\t\t\t\t}else if(type == 'reset'){\n\t\t\t\t\tel.css(slider.animProp, value)\n\t\t\t\t}else if(type == 'ticker'){\n\t\t\t\t\tel.animate(animateObj, speed, 'linear', function(){\n\t\t\t\t\t\tsetPositionProperty(params['resetValue'], 'reset', 0);\n\t\t\t\t\t\t// run the recursive loop after animation\n\t\t\t\t\t\ttickerLoop();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Populates the pager with proper amount of pages\n\t\t */\n\t\tvar populatePager = function(){\n\t\t\tvar pagerHtml = '';\n\t\t\tvar pagerQty = getPagerQty();\n\t\t\t// loop through each pager item\n\t\t\tfor(var i=0; i < pagerQty; i++){\n\t\t\t\tvar linkContent = '';\n\t\t\t\t// if a buildPager function is supplied, use it to get pager link value, else use index + 1\n\t\t\t\tif(slider.settings.buildPager && $.isFunction(slider.settings.buildPager)){\n\t\t\t\t\tlinkContent = slider.settings.buildPager(i);\n\t\t\t\t\tslider.pagerEl.addClass('bx-custom-pager');\n\t\t\t\t}else{\n\t\t\t\t\tlinkContent = i + 1;\n\t\t\t\t\tslider.pagerEl.addClass('bx-default-pager');\n\t\t\t\t}\n\t\t\t\t// var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\n\t\t\t\t// add the markup to the string\n\t\t\t\tpagerHtml += '';\n\t\t\t};\n\t\t\t// populate the pager element with pager links\n\t\t\tslider.pagerEl.html(pagerHtml);\n\t\t}\n\n\t\t/**\n\t\t * Appends the pager to the controls element\n\t\t */\n\t\tvar appendPager = function(){\n\t\t\tif(!slider.settings.pagerCustom){\n\t\t\t\t// create the pager DOM element\n\t\t\t\tslider.pagerEl = $('');\n\t\t\t\t// if a pager selector was supplied, populate it with the pager\n\t\t\t\tif(slider.settings.pagerSelector){\n\t\t\t\t\t$(slider.settings.pagerSelector).html(slider.pagerEl);\n\t\t\t\t// if no pager selector was supplied, add it after the wrapper\n\t\t\t\t}else{\n\t\t\t\t\tslider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\n\t\t\t\t}\n\t\t\t\t// populate the pager\n\t\t\t\tpopulatePager();\n\t\t\t}else{\n\t\t\t\tslider.pagerEl = $(slider.settings.pagerCustom);\n\t\t\t}\n\t\t\t// assign the pager click binding\n\t\t\tslider.pagerEl.on('click', 'a', clickPagerBind);\n\t\t}\n\n\t\t/**\n\t\t * Appends prev / next controls to the controls element\n\t\t */\n\t\tvar appendControls = function(){\n\t\t\tslider.controls.next = $('' + slider.settings.nextText + '');\n\t\t\tslider.controls.prev = $('' + slider.settings.prevText + '');\n\t\t\t// bind click actions to the controls\n\t\t\tslider.controls.next.bind('click', clickNextBind);\n\t\t\tslider.controls.prev.bind('click', clickPrevBind);\n\t\t\t// if nextSlector was supplied, populate it\n\t\t\tif(slider.settings.nextSelector){\n\t\t\t\t$(slider.settings.nextSelector).append(slider.controls.next);\n\t\t\t}\n\t\t\t// if prevSlector was supplied, populate it\n\t\t\tif(slider.settings.prevSelector){\n\t\t\t\t$(slider.settings.prevSelector).append(slider.controls.prev);\n\t\t\t}\n\t\t\t// if no custom selectors were supplied\n\t\t\tif(!slider.settings.nextSelector && !slider.settings.prevSelector){\n\t\t\t\t// add the controls to the DOM\n\t\t\t\tslider.controls.directionEl = $('');\n\t\t\t\t// add the control elements to the directionEl\n\t\t\t\tslider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\n\t\t\t\t// slider.viewport.append(slider.controls.directionEl);\n\t\t\t\tslider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Appends start / stop auto controls to the controls element\n\t\t */\n\t\tvar appendControlsAuto = function(){\n\t\t\tslider.controls.start = $('');\n\t\t\tslider.controls.stop = $('');\n\t\t\t// add the controls to the DOM\n\t\t\tslider.controls.autoEl = $('');\n\t\t\t// bind click actions to the controls\n\t\t\tslider.controls.autoEl.on('click', '.bx-start', clickStartBind);\n\t\t\tslider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\n\t\t\t// if autoControlsCombine, insert only the \"start\" control\n\t\t\tif(slider.settings.autoControlsCombine){\n\t\t\t\tslider.controls.autoEl.append(slider.controls.start);\n\t\t\t// if autoControlsCombine is false, insert both controls\n\t\t\t}else{\n\t\t\t\tslider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\n\t\t\t}\n\t\t\t// if auto controls selector was supplied, populate it with the controls\n\t\t\tif(slider.settings.autoControlsSelector){\n\t\t\t\t$(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\n\t\t\t// if auto controls selector was not supplied, add it after the wrapper\n\t\t\t}else{\n\t\t\t\tslider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\n\t\t\t}\n\t\t\t// update the auto controls\n\t\t\tupdateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\n\t\t}\n\n\t\t/**\n\t\t * Appends image captions to the DOM\n\t\t */\n\t\tvar appendCaptions = function(){\n\t\t\t// cycle through each child\n\t\t\tslider.children.each(function(index){\n\t\t\t\t// get the image title attribute\n\t\t\t\tvar title = $(this).find('img:first').attr('title');\n\t\t\t\t// append the caption\n\t\t\t\tif (title != undefined && ('' + title).length) {\n $(this).append('' + title + '
');\n }\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * Click next binding\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar clickNextBind = function(e){\n\t\t\t// if auto show is running, stop it\n\t\t\tif (slider.settings.auto) el.stopAuto();\n\t\t\tel.goToNextSlide();\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t/**\n\t\t * Click prev binding\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar clickPrevBind = function(e){\n\t\t\t// if auto show is running, stop it\n\t\t\tif (slider.settings.auto) el.stopAuto();\n\t\t\tel.goToPrevSlide();\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t/**\n\t\t * Click start binding\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar clickStartBind = function(e){\n\t\t\tel.startAuto();\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t/**\n\t\t * Click stop binding\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar clickStopBind = function(e){\n\t\t\tel.stopAuto();\n\t\t\te.preventDefault();\n\t\t}\n\n\t\t/**\n\t\t * Click pager binding\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar clickPagerBind = function(e){\n\t\t\t// if auto show is running, stop it\n\t\t\tif (slider.settings.auto) el.stopAuto();\n\t\t\tvar pagerLink = $(e.currentTarget);\n\t\t\tif(pagerLink.attr('data-slide-index') !== undefined){\n\t\t\t\tvar pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\n\t\t\t\t// if clicked pager link is not active, continue with the goToSlide call\n\t\t\t\tif(pagerIndex != slider.active.index) el.goToSlide(pagerIndex);\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Updates the pager links with an active class\n\t\t *\n\t\t * @param slideIndex (int)\n\t\t * - index of slide to make active\n\t\t */\n\t\tvar updatePagerActive = function(slideIndex){\n\t\t\t// if \"short\" pager type\n\t\t\tvar len = slider.children.length; // nb of children\n\t\t\tif(slider.settings.pagerType == 'short'){\n\t\t\t\tif(slider.settings.maxSlides > 1) {\n\t\t\t\t\tlen = Math.ceil(slider.children.length/slider.settings.maxSlides);\n\t\t\t\t}\n\t\t\t\tslider.pagerEl.html( (slideIndex + 1) + slider.settings.pagerShortSeparator + len);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// remove all pager active classes\n\t\t\tslider.pagerEl.find('a').removeClass('active');\n\t\t\t// apply the active class for all pagers\n\t\t\tslider.pagerEl.each(function(i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });\n\t\t}\n\n\t\t/**\n\t\t * Performs needed actions after a slide transition\n\t\t */\n\t\tvar updateAfterSlideTransition = function(){\n\t\t\t// if infinte loop is true\n\t\t\tif(slider.settings.infiniteLoop){\n\t\t\t\tvar position = '';\n\t\t\t\t// first slide\n\t\t\t\tif(slider.active.index == 0){\n\t\t\t\t\t// set the new position\n\t\t\t\t\tposition = slider.children.eq(0).position();\n\t\t\t\t// carousel, last slide\n\t\t\t\t}else if(slider.active.index == getPagerQty() - 1 && slider.carousel){\n\t\t\t\t\tposition = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\n\t\t\t\t// last slide\n\t\t\t\t}else if(slider.active.index == slider.children.length - 1){\n\t\t\t\t\tposition = slider.children.eq(slider.children.length - 1).position();\n\t\t\t\t}\n\t\t\t\tif(position){\n\t\t\t\t\tif (slider.settings.mode == 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\n\t\t\t\t\telse if (slider.settings.mode == 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\n\t\t\t\t}\n\t\t\t}\n\t\t\t// declare that the transition is complete\n\t\t\tslider.working = false;\n\t\t\t// onSlideAfter callback\n\t\t\tslider.settings.onSlideAfter(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\t\t}\n\n\t\t/**\n\t\t * Updates the auto controls state (either active, or combined switch)\n\t\t *\n\t\t * @param state (string) \"start\", \"stop\"\n\t\t * - the new state of the auto show\n\t\t */\n\t\tvar updateAutoControls = function(state){\n\t\t\t// if autoControlsCombine is true, replace the current control with the new state\n\t\t\tif(slider.settings.autoControlsCombine){\n\t\t\t\tslider.controls.autoEl.html(slider.controls[state]);\n\t\t\t// if autoControlsCombine is false, apply the \"active\" class to the appropriate control\n\t\t\t}else{\n\t\t\t\tslider.controls.autoEl.find('a').removeClass('active');\n\t\t\t\tslider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Updates the direction controls (checks if either should be hidden)\n\t\t */\n\t\tvar updateDirectionControls = function(){\n\t\t\tif(getPagerQty() == 1){\n\t\t\t\tslider.controls.prev.addClass('disabled');\n\t\t\t\tslider.controls.next.addClass('disabled');\n\t\t\t}else if(!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd){\n\t\t\t\t// if first slide\n\t\t\t\tif (slider.active.index == 0){\n\t\t\t\t\tslider.controls.prev.addClass('disabled');\n\t\t\t\t\tslider.controls.next.removeClass('disabled');\n\t\t\t\t// if last slide\n\t\t\t\t}else if(slider.active.index == getPagerQty() - 1){\n\t\t\t\t\tslider.controls.next.addClass('disabled');\n\t\t\t\t\tslider.controls.prev.removeClass('disabled');\n\t\t\t\t// if any slide in the middle\n\t\t\t\t}else{\n\t\t\t\t\tslider.controls.prev.removeClass('disabled');\n\t\t\t\t\tslider.controls.next.removeClass('disabled');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Initialzes the auto process\n\t\t */\n\t\tvar initAuto = function(){\n\t\t\t// if autoDelay was supplied, launch the auto show using a setTimeout() call\n\t\t\tif(slider.settings.autoDelay > 0){\n\t\t\t\tvar timeout = setTimeout(el.startAuto, slider.settings.autoDelay);\n\t\t\t// if autoDelay was not supplied, start the auto show normally\n\t\t\t}else{\n\t\t\t\tel.startAuto();\n\t\t\t}\n\t\t\t// if autoHover is requested\n\t\t\tif(slider.settings.autoHover){\n\t\t\t\t// on el hover\n\t\t\t\tel.hover(function(){\n\t\t\t\t\t// if the auto show is currently playing (has an active interval)\n\t\t\t\t\tif(slider.interval){\n\t\t\t\t\t\t// stop the auto show and pass true agument which will prevent control update\n\t\t\t\t\t\tel.stopAuto(true);\n\t\t\t\t\t\t// create a new autoPaused value which will be used by the relative \"mouseout\" event\n\t\t\t\t\t\tslider.autoPaused = true;\n\t\t\t\t\t}\n\t\t\t\t}, function(){\n\t\t\t\t\t// if the autoPaused value was created be the prior \"mouseover\" event\n\t\t\t\t\tif(slider.autoPaused){\n\t\t\t\t\t\t// start the auto show and pass true agument which will prevent control update\n\t\t\t\t\t\tel.startAuto(true);\n\t\t\t\t\t\t// reset the autoPaused value\n\t\t\t\t\t\tslider.autoPaused = null;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Initialzes the ticker process\n\t\t */\n\t\tvar initTicker = function(){\n\t\t\tvar startPosition = 0;\n\t\t\t// if autoDirection is \"next\", append a clone of the entire slider\n\t\t\tif(slider.settings.autoDirection == 'next'){\n\t\t\t\tel.append(slider.children.clone().addClass('bx-clone'));\n\t\t\t// if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\n\t\t\t}else{\n\t\t\t\tel.prepend(slider.children.clone().addClass('bx-clone'));\n\t\t\t\tvar position = slider.children.first().position();\n\t\t\t\tstartPosition = slider.settings.mode == 'horizontal' ? -position.left : -position.top;\n\t\t\t}\n\t\t\tsetPositionProperty(startPosition, 'reset', 0);\n\t\t\t// do not allow controls in ticker mode\n\t\t\tslider.settings.pager = false;\n\t\t\tslider.settings.controls = false;\n\t\t\tslider.settings.autoControls = false;\n\t\t\t// if autoHover is requested\n\t\t\tif(slider.settings.tickerHover && !slider.usingCSS){\n\t\t\t\t// on el hover\n\t\t\t\tslider.viewport.hover(function(){\n\t\t\t\t\tel.stop();\n\t\t\t\t}, function(){\n\t\t\t\t\t// calculate the total width of children (used to calculate the speed ratio)\n\t\t\t\t\tvar totalDimens = 0;\n\t\t\t\t\tslider.children.each(function(index){\n\t\t\t\t\t totalDimens += slider.settings.mode == 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\n\t\t\t\t\t});\n\t\t\t\t\t// calculate the speed ratio (used to determine the new speed to finish the paused animation)\n\t\t\t\t\tvar ratio = slider.settings.speed / totalDimens;\n\t\t\t\t\t// determine which property to use\n\t\t\t\t\tvar property = slider.settings.mode == 'horizontal' ? 'left' : 'top';\n\t\t\t\t\t// calculate the new speed\n\t\t\t\t\tvar newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));\n\t\t\t\t\ttickerLoop(newSpeed);\n\t\t\t\t});\n\t\t\t}\n\t\t\t// start the ticker loop\n\t\t\ttickerLoop();\n\t\t}\n\n\t\t/**\n\t\t * Runs a continuous loop, news ticker-style\n\t\t */\n\t\tvar tickerLoop = function(resumeSpeed){\n\t\t\tspeed = resumeSpeed ? resumeSpeed : slider.settings.speed;\n\t\t\tvar position = {left: 0, top: 0};\n\t\t\tvar reset = {left: 0, top: 0};\n\t\t\t// if \"next\" animate left position to last child, then reset left to 0\n\t\t\tif(slider.settings.autoDirection == 'next'){\n\t\t\t\tposition = el.find('.bx-clone').first().position();\n\t\t\t// if \"prev\" animate left position to 0, then reset left to first non-clone child\n\t\t\t}else{\n\t\t\t\treset = slider.children.first().position();\n\t\t\t}\n\t\t\tvar animateProperty = slider.settings.mode == 'horizontal' ? -position.left : -position.top;\n\t\t\tvar resetValue = slider.settings.mode == 'horizontal' ? -reset.left : -reset.top;\n\t\t\tvar params = {resetValue: resetValue};\n\t\t\tsetPositionProperty(animateProperty, 'ticker', speed, params);\n\t\t}\n\n\t\t/**\n\t\t * Initializes touch events\n\t\t */\n\t\tvar initTouch = function(){\n\t\t\t// initialize object to contain all touch values\n\t\t\tslider.touch = {\n\t\t\t\tstart: {x: 0, y: 0},\n\t\t\t\tend: {x: 0, y: 0}\n\t\t\t}\n\t\t\tslider.viewport.bind('touchstart', onTouchStart);\n\t\t}\n\n\t\t/**\n\t\t * Event handler for \"touchstart\"\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar onTouchStart = function(e){\n\t\t\tif(slider.working){\n\t\t\t\te.preventDefault();\n\t\t\t}else{\n\t\t\t\t// record the original position when touch starts\n\t\t\t\tslider.touch.originalPos = el.position();\n\t\t\t\tvar orig = e.originalEvent;\n\t\t\t\t// record the starting touch x, y coordinates\n\t\t\t\tslider.touch.start.x = orig.changedTouches[0].pageX;\n\t\t\t\tslider.touch.start.y = orig.changedTouches[0].pageY;\n\t\t\t\t// bind a \"touchmove\" event to the viewport\n\t\t\t\tslider.viewport.bind('touchmove', onTouchMove);\n\t\t\t\t// bind a \"touchend\" event to the viewport\n\t\t\t\tslider.viewport.bind('touchend', onTouchEnd);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Event handler for \"touchmove\"\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar onTouchMove = function(e){\n\t\t\tvar orig = e.originalEvent;\n\t\t\t// if scrolling on y axis, do not prevent default\n\t\t\tvar xMovement = Math.abs(orig.changedTouches[0].pageX - slider.touch.start.x);\n\t\t\tvar yMovement = Math.abs(orig.changedTouches[0].pageY - slider.touch.start.y);\n\t\t\t// x axis swipe\n\t\t\tif((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX){\n\t\t\t\te.preventDefault();\n\t\t\t// y axis swipe\n\t\t\t}else if((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY){\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t\tif(slider.settings.mode != 'fade' && slider.settings.oneToOneTouch){\n\t\t\t\tvar value = 0;\n\t\t\t\t// if horizontal, drag along x axis\n\t\t\t\tif(slider.settings.mode == 'horizontal'){\n\t\t\t\t\tvar change = orig.changedTouches[0].pageX - slider.touch.start.x;\n\t\t\t\t\tvalue = slider.touch.originalPos.left + change;\n\t\t\t\t// if vertical, drag along y axis\n\t\t\t\t}else{\n\t\t\t\t\tvar change = orig.changedTouches[0].pageY - slider.touch.start.y;\n\t\t\t\t\tvalue = slider.touch.originalPos.top + change;\n\t\t\t\t}\n\t\t\t\tsetPositionProperty(value, 'reset', 0);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Event handler for \"touchend\"\n\t\t *\n\t\t * @param e (event)\n\t\t * - DOM event object\n\t\t */\n\t\tvar onTouchEnd = function(e){\n\t\t\tslider.viewport.unbind('touchmove', onTouchMove);\n\t\t\tvar orig = e.originalEvent;\n\t\t\tvar value = 0;\n\t\t\t// record end x, y positions\n\t\t\tslider.touch.end.x = orig.changedTouches[0].pageX;\n\t\t\tslider.touch.end.y = orig.changedTouches[0].pageY;\n\t\t\t// if fade mode, check if absolute x distance clears the threshold\n\t\t\tif(slider.settings.mode == 'fade'){\n\t\t\t\tvar distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\n\t\t\t\tif(distance >= slider.settings.swipeThreshold){\n\t\t\t\t\tslider.touch.start.x > slider.touch.end.x ? el.goToNextSlide() : el.goToPrevSlide();\n\t\t\t\t\tel.stopAuto();\n\t\t\t\t}\n\t\t\t// not fade mode\n\t\t\t}else{\n\t\t\t\tvar distance = 0;\n\t\t\t\t// calculate distance and el's animate property\n\t\t\t\tif(slider.settings.mode == 'horizontal'){\n\t\t\t\t\tdistance = slider.touch.end.x - slider.touch.start.x;\n\t\t\t\t\tvalue = slider.touch.originalPos.left;\n\t\t\t\t}else{\n\t\t\t\t\tdistance = slider.touch.end.y - slider.touch.start.y;\n\t\t\t\t\tvalue = slider.touch.originalPos.top;\n\t\t\t\t}\n\t\t\t\t// if not infinite loop and first / last slide, do not attempt a slide transition\n\t\t\t\tif(!slider.settings.infiniteLoop && ((slider.active.index == 0 && distance > 0) || (slider.active.last && distance < 0))){\n\t\t\t\t\tsetPositionProperty(value, 'reset', 200);\n\t\t\t\t}else{\n\t\t\t\t\t// check if distance clears threshold\n\t\t\t\t\tif(Math.abs(distance) >= slider.settings.swipeThreshold){\n\t\t\t\t\t\tdistance < 0 ? el.goToNextSlide() : el.goToPrevSlide();\n\t\t\t\t\t\tel.stopAuto();\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// el.animate(property, 200);\n\t\t\t\t\t\tsetPositionProperty(value, 'reset', 200);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tslider.viewport.unbind('touchend', onTouchEnd);\n\t\t}\n\n\t\t/**\n\t\t * Window resize event callback\n\t\t */\n\t\tvar resizeWindow = function(e){\n\t\t\t// don't do anything if slider isn't initialized.\n\t\t\tif(!slider.initialized) return;\n\t\t\t// get the new window dimens (again, thank you IE)\n\t\t\tvar windowWidthNew = $(window).width();\n\t\t\tvar windowHeightNew = $(window).height();\n\t\t\t// make sure that it is a true window resize\n\t\t\t// *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\n\t\t\t// are resized. Can you just die already?*\n\t\t\tif(windowWidth != windowWidthNew || windowHeight != windowHeightNew){\n\t\t\t\t// set the new window dimens\n\t\t\t\twindowWidth = windowWidthNew;\n\t\t\t\twindowHeight = windowHeightNew;\n\t\t\t\t// update all dynamic elements\n\t\t\t\tel.redrawSlider();\n\t\t\t\t// Call user resize handler\n\t\t\t\tslider.settings.onSliderResize.call(el, slider.active.index);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * ===================================================================================\n\t\t * = PUBLIC FUNCTIONS\n\t\t * ===================================================================================\n\t\t */\n\n\t\t/**\n\t\t * Performs slide transition to the specified slide\n\t\t *\n\t\t * @param slideIndex (int)\n\t\t * - the destination slide's index (zero-based)\n\t\t *\n\t\t * @param direction (string)\n\t\t * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\n\t\t */\n\t\tel.goToSlide = function(slideIndex, direction){\n\t\t\t// if plugin is currently in motion, ignore request\n\t\t\tif(slider.working || slider.active.index == slideIndex) return;\n\t\t\t// declare that plugin is in motion\n\t\t\tslider.working = true;\n\t\t\t// store the old index\n\t\t\tslider.oldIndex = slider.active.index;\n\t\t\t// if slideIndex is less than zero, set active index to last child (this happens during infinite loop)\n\t\t\tif(slideIndex < 0){\n\t\t\t\tslider.active.index = getPagerQty() - 1;\n\t\t\t// if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\n\t\t\t}else if(slideIndex >= getPagerQty()){\n\t\t\t\tslider.active.index = 0;\n\t\t\t// set active index to requested slide\n\t\t\t}else{\n\t\t\t\tslider.active.index = slideIndex;\n\t\t\t}\n\t\t\t// onSlideBefore, onSlideNext, onSlidePrev callbacks\n\t\t\tslider.settings.onSlideBefore(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\t\t\tif(direction == 'next'){\n\t\t\t\tslider.settings.onSlideNext(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\t\t\t}else if(direction == 'prev'){\n\t\t\t\tslider.settings.onSlidePrev(slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\n\t\t\t}\n\t\t\t// check if last slide\n\t\t\tslider.active.last = slider.active.index >= getPagerQty() - 1;\n\t\t\t// update the pager with active class\n\t\t\tif(slider.settings.pager) updatePagerActive(slider.active.index);\n\t\t\t// // check for direction control update\n\t\t\tif(slider.settings.controls) updateDirectionControls();\n\t\t\t// if slider is set to mode: \"fade\"\n\t\t\tif(slider.settings.mode == 'fade'){\n\t\t\t\t// if adaptiveHeight is true and next height is different from current height, animate to the new height\n\t\t\t\tif(slider.settings.adaptiveHeight && slider.viewport.height() != getViewportHeight()){\n\t\t\t\t\tslider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n\t\t\t\t}\n\t\t\t\t// fade out the visible child and reset its z-index value\n\t\t\t\tslider.children.filter(':visible').fadeOut(slider.settings.speed).css({zIndex: 0});\n\t\t\t\t// fade in the newly requested slide\n\t\t\t\tslider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex+1).fadeIn(slider.settings.speed, function(){\n\t\t\t\t\t$(this).css('zIndex', slider.settings.slideZIndex);\n\t\t\t\t\tupdateAfterSlideTransition();\n\t\t\t\t});\n\t\t\t// slider mode is not \"fade\"\n\t\t\t}else{\n\t\t\t\t// if adaptiveHeight is true and next height is different from current height, animate to the new height\n\t\t\t\tif(slider.settings.adaptiveHeight && slider.viewport.height() != getViewportHeight()){\n\t\t\t\t\tslider.viewport.animate({height: getViewportHeight()}, slider.settings.adaptiveHeightSpeed);\n\t\t\t\t}\n\t\t\t\tvar moveBy = 0;\n\t\t\t\tvar position = {left: 0, top: 0};\n\t\t\t\t// if carousel and not infinite loop\n\t\t\t\tif(!slider.settings.infiniteLoop && slider.carousel && slider.active.last){\n\t\t\t\t\tif(slider.settings.mode == 'horizontal'){\n\t\t\t\t\t\t// get the last child position\n\t\t\t\t\t\tvar lastChild = slider.children.eq(slider.children.length - 1);\n\t\t\t\t\t\tposition = lastChild.position();\n\t\t\t\t\t\t// calculate the position of the last slide\n\t\t\t\t\t\tmoveBy = slider.viewport.width() - lastChild.outerWidth();\n\t\t\t\t\t}else{\n\t\t\t\t\t\t// get last showing index position\n\t\t\t\t\t\tvar lastShowingIndex = slider.children.length - slider.settings.minSlides;\n\t\t\t\t\t\tposition = slider.children.eq(lastShowingIndex).position();\n\t\t\t\t\t}\n\t\t\t\t\t// horizontal carousel, going previous while on first slide (infiniteLoop mode)\n\t\t\t\t}else if(slider.carousel && slider.active.last && direction == 'prev'){\n\t\t\t\t\t// get the last child position\n\t\t\t\t\tvar eq = slider.settings.moveSlides == 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);\n\t\t\t\t\tvar lastChild = el.children('.bx-clone').eq(eq);\n\t\t\t\t\tposition = lastChild.position();\n\t\t\t\t// if infinite loop and \"Next\" is clicked on the last slide\n\t\t\t\t}else if(direction == 'next' && slider.active.index == 0){\n\t\t\t\t\t// get the last clone position\n\t\t\t\t\tposition = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\n\t\t\t\t\tslider.active.last = false;\n\t\t\t\t// normal non-zero requests\n\t\t\t\t}else if(slideIndex >= 0){\n\t\t\t\t\tvar requestEl = slideIndex * getMoveBy();\n\t\t\t\t\tposition = slider.children.eq(requestEl).position();\n\t\t\t\t}\n\n\t\t\t\t/* If the position doesn't exist\n\t\t\t\t * (e.g. if you destroy the slider on a next click),\n\t\t\t\t * it doesn't throw an error.\n\t\t\t\t */\n\t\t\t\tif (\"undefined\" !== typeof(position)) {\n\t\t\t\t\tvar value = slider.settings.mode == 'horizontal' ? -(position.left - moveBy) : -position.top;\n\t\t\t\t\t// plugin values to be animated\n\t\t\t\t\tsetPositionProperty(value, 'slide', slider.settings.speed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Transitions to the next slide in the show\n\t\t */\n\t\tel.goToNextSlide = function(){\n\t\t\t// if infiniteLoop is false and last page is showing, disregard call\n\t\t\tif (!slider.settings.infiniteLoop && slider.active.last) return;\n\t\t\tvar pagerIndex = parseInt(slider.active.index) + 1;\n\t\t\tel.goToSlide(pagerIndex, 'next');\n\t\t}\n\n\t\t/**\n\t\t * Transitions to the prev slide in the show\n\t\t */\n\t\tel.goToPrevSlide = function(){\n\t\t\t// if infiniteLoop is false and last page is showing, disregard call\n\t\t\tif (!slider.settings.infiniteLoop && slider.active.index == 0) return;\n\t\t\tvar pagerIndex = parseInt(slider.active.index) - 1;\n\t\t\tel.goToSlide(pagerIndex, 'prev');\n\t\t}\n\n\t\t/**\n\t\t * Starts the auto show\n\t\t *\n\t\t * @param preventControlUpdate (boolean)\n\t\t * - if true, auto controls state will not be updated\n\t\t */\n\t\tel.startAuto = function(preventControlUpdate){\n\t\t\t// if an interval already exists, disregard call\n\t\t\tif(slider.interval) return;\n\t\t\t// create an interval\n\t\t\tslider.interval = setInterval(function(){\n\t\t\t\tslider.settings.autoDirection == 'next' ? el.goToNextSlide() : el.goToPrevSlide();\n\t\t\t}, slider.settings.pause);\n\t\t\t// if auto controls are displayed and preventControlUpdate is not true\n\t\t\tif (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('stop');\n\t\t}\n\n\t\t/**\n\t\t * Stops the auto show\n\t\t *\n\t\t * @param preventControlUpdate (boolean)\n\t\t * - if true, auto controls state will not be updated\n\t\t */\n\t\tel.stopAuto = function(preventControlUpdate){\n\t\t\t// if no interval exists, disregard call\n\t\t\tif(!slider.interval) return;\n\t\t\t// clear the interval\n\t\t\tclearInterval(slider.interval);\n\t\t\tslider.interval = null;\n\t\t\t// if auto controls are displayed and preventControlUpdate is not true\n\t\t\tif (slider.settings.autoControls && preventControlUpdate != true) updateAutoControls('start');\n\t\t}\n\n\t\t/**\n\t\t * Returns current slide index (zero-based)\n\t\t */\n\t\tel.getCurrentSlide = function(){\n\t\t\treturn slider.active.index;\n\t\t}\n\n\t\t/**\n\t\t * Returns current slide element\n\t\t */\n\t\tel.getCurrentSlideElement = function(){\n\t\t\treturn slider.children.eq(slider.active.index);\n\t\t}\n\n\t\t/**\n\t\t * Returns number of slides in show\n\t\t */\n\t\tel.getSlideCount = function(){\n\t\t\treturn slider.children.length;\n\t\t}\n\n\t\t/**\n\t\t * Update all dynamic slider elements\n\t\t */\n\t\tel.redrawSlider = function(){\n\t\t\t// resize all children in ratio to new screen size\n\t\t\tslider.children.add(el.find('.bx-clone')).width(getSlideWidth());\n\t\t\t// adjust the height\n\t\t\tslider.viewport.css('height', getViewportHeight());\n\t\t\t// update the slide position\n\t\t\tif(!slider.settings.ticker) setSlidePosition();\n\t\t\t// if active.last was true before the screen resize, we want\n\t\t\t// to keep it last no matter what screen size we end on\n\t\t\tif (slider.active.last) slider.active.index = getPagerQty() - 1;\n\t\t\t// if the active index (page) no longer exists due to the resize, simply set the index as last\n\t\t\tif (slider.active.index >= getPagerQty()) slider.active.last = true;\n\t\t\t// if a pager is being displayed and a custom pager is not being used, update it\n\t\t\tif(slider.settings.pager && !slider.settings.pagerCustom){\n\t\t\t\tpopulatePager();\n\t\t\t\tupdatePagerActive(slider.active.index);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Destroy the current instance of the slider (revert everything back to original state)\n\t\t */\n\t\tel.destroySlider = function(){\n\t\t\t// don't do anything if slider has already been destroyed\n\t\t\tif(!slider.initialized) return;\n\t\t\tslider.initialized = false;\n\t\t\t$('.bx-clone', this).remove();\n\t\t\tslider.children.each(function() {\n\t\t\t\t$(this).data(\"origStyle\") != undefined ? $(this).attr(\"style\", $(this).data(\"origStyle\")) : $(this).removeAttr('style');\n\t\t\t});\n\t\t\t$(this).data(\"origStyle\") != undefined ? this.attr(\"style\", $(this).data(\"origStyle\")) : $(this).removeAttr('style');\n\t\t\t$(this).unwrap().unwrap();\n\t\t\tif(slider.controls.el) slider.controls.el.remove();\n\t\t\tif(slider.controls.next) slider.controls.next.remove();\n\t\t\tif(slider.controls.prev) slider.controls.prev.remove();\n\t\t\tif(slider.pagerEl && slider.settings.controls) slider.pagerEl.remove();\n\t\t\t$('.bx-caption', this).remove();\n\t\t\tif(slider.controls.autoEl) slider.controls.autoEl.remove();\n\t\t\tclearInterval(slider.interval);\n\t\t\tif(slider.settings.responsive) $(window).unbind('resize', resizeWindow);\n\t\t}\n\n\t\t/**\n\t\t * Reload the slider (revert all DOM changes, and re-initialize)\n\t\t */\n\t\tel.reloadSlider = function(settings){\n\t\t\tif (settings != undefined) options = settings;\n\t\t\tel.destroySlider();\n\t\t\tinit();\n\t\t}\n\n\t\tinit();\n\n\t\t// returns the current jQuery object\n\t\treturn this;\n\t}\n\n})(jQuery);\n"],"sourceRoot":"/source/"}