{"version":3,"sources":["webpack:///./node_modules/vue-gallery/dist/js/vue-gallery.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery-vimeo.js","webpack:///./node_modules/core-js/modules/_strict-method.js","webpack:///./node_modules/core-js/modules/es6.string.includes.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery.js","webpack:///./node_modules/core-js/modules/_fails-is-regexp.js","webpack:///./node_modules/core-js/modules/es6.array.sort.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery-fullscreen.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery-youtube.js","webpack:///./node_modules/core-js/modules/_string-context.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-helper.js","webpack:///./node_modules/blueimp-gallery/js/blueimp-gallery-video.js"],"names":["global","factory","module","exports","this","blueimpGallery_min_css","blueimpHelper_js","blueimp","script","props","images","type","Array","default","options","Object","carousel","Boolean","index","Number","id","String","data","instance","watch","value","open","close","$emit","mounted","destroyed","destroyEventListeners","methods","_this","arguments","length","undefined","window","Gallery","assign","toggleControlsOnReturn","toggleControlsOnSlideClick","closeOnSlideClick","container","concat","onopen","onopened","onslide","onSlideCustom","onslideend","slide","onslidecomplete","onclose","onclosed","$el","image","text","description","node","find","empty","appendChild","document","createTextNode","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","normalizeComponent_1","isOldIE","navigator","test","userAgent","toLowerCase","addStyle","HEAD","head","getElementsByTagName","styles","css","group","media","ids","Set","has","code","source","map","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","createElement","setAttribute","push","styleSheet","cssText","filter","join","size","textNode","nodes","childNodes","removeChild","insertBefore","browser","__vue_script__","__vue_render__","_vm","_h","$createElement","_c","_self","staticClass","class","attrs","_v","_t","_e","__vue_staticRenderFns__","__vue_inject_styles__","inject","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","VueGallery","$","postMessage","galleryPrototype","prototype","extend","vimeoVideoIdProperty","vimeoPlayerUrl","vimeoPlayerIdPrefix","vimeoClickToPlay","textFactory","imageFactory","VimeoPlayer","url","videoId","playerId","clickToPlay","listeners","counter","canPlayType","on","func","loadAPI","scriptTag","called","that","apiUrl","scriptTags","i","callback","playOnReady","play","src","parentNode","readyState","onReady","ready","player","addEvent","hasPlayed","onPlaying","onPause","playStatus","playing","pause","insertIframe","iframe","replace","replaceChild","platform","api","$f","obj","getItemProperty","urlProperty","videoFactory","fails","method","arg","$export","INCLUDES","P","F","includes","searchString","indexOf","list","body","maxHeight","num","initOptions","initialize","console","log","slidesContainer","titleElement","displayClass","controlsClass","singleClass","leftEdgeClass","rightEdgeClass","playingClass","slideClass","slideLoadingClass","slideErrorClass","slideContentClass","toggleClass","prevClass","nextClass","closeClass","playPauseClass","typeProperty","titleProperty","altTextProperty","srcsetProperty","displayTransition","clearSlides","stretchImages","toggleSlideshowOnSpace","enableKeyboardNavigation","closeOnEscape","closeOnSwipeUpOrDown","closeOnHashChange","emulateTouchEvents","stopTouchEventsPropagation","hidePageScrollbars","disableScroll","continuous","unloadElements","startSlideshow","slideshowInterval","slideshowDirection","preloadRange","transitionDuration","slideshowTransitionDuration","event","carouselOptions","support","prop","touch","ontouchstart","DocumentTouch","transitions","webkitTransition","end","prefix","MozTransition","OTransition","transition","hasOwnProperty","name","elementTests","translateZ","slice","getComputedStyle","getPropertyValue","transform","translate","backgroundSize","contain","cover","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","cancelAnimationFrame","webkitCancelRequestAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","initStartIndex","initWidget","initEventListeners","ontransitionend","to","duration","clearTimeout","timeout","direction","naturalDirection","diff","circle","Math","abs","positions","slideWidth","move","animate","getIndex","getNumber","prev","next","time","nextIndex","interval","elements","setTimeout","animationFrameId","addClass","removeClass","addSlide","positionSlide","initSlides","resetSlides","unloadAllSlides","slides","handleClose","display","overflow","bodyOverflowStyle","closeHandler","target","off","dist","translateX","x","y","translateY","from","start","Date","getTime","timer","setInterval","timeElap","left","clearInterval","floor","preventDefault","returnValue","stopPropagation","cancelBubble","onresize","onhashchange","onmousedown","which","nodeName","originalEvent","touches","pageX","pageY","onmousemove","touchStart","ontouchmove","onmouseup","ontouchend","onmouseout","related","relatedTarget","contains","now","isScrolling","touchDelta","touchDeltaX","indices","scale","unshift","pop","indexForward","indexBackward","distanceForward","distanceBackward","absTouchDeltaX","ceil","isValidSlide","isPastBounds","isValidClose","ontouchcancel","oncomplete","srcElement","getNodeIndex","clientHeight","onload","onerror","onkeydown","keyCode","toggleControls","stopImmediatePropagation","toggleSlideshow","handleClick","isTarget","className","hasClass","onclick","updateEdgeClasses","handleSlide","loadElements","setTitle","firstChild","title","alt","args","wait","apply","altText","img","imagePrototype","cloneNode","callbackWrapper","background","elementPrototype","draggable","split","srcset","loadElement","proxyListener","limit","min","j","unloadSlide","slidePrototype","width","reload","children","clientWidth","slideHeight","len","parseInt","getAttribute","getNestedProperty","property","str","singleQuoteProp","doubleQuoteProp","arrayIndex","dotProp","getDataProperty","key","dataset","_","b","toUpperCase","parseJSON","ignore","handleOpen","openHandler","first","MATCH","KEY","re","e","f","aFunction","toObject","$sort","sort","comparefn","fullScreen","getFullScreenElement","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","requestFullScreen","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","exitFullScreen","exitFullscreen","webkitCancelFullScreen","mozCancelFullScreen","msExitFullscreen","youTubeVideoIdProperty","youTubePlayerVars","wmode","youTubeClickToPlay","YouTubePlayer","playerVars","onYouTubeIframeAPIReady","checkSeek","stateChange","YT","PlayerState","PAUSED","ENDED","onStateChange","PLAYING","onError","error","playVideo","Player","events","pauseVideo","videoPosterProperty","isRegExp","defined","NAME","TypeError","obj1","obj2","Helper","query","nodeType","string","parse","querySelectorAll","charAt","getElementById","RegExp","regexp","eventName","handler","eventNames","shift","addEventListener","attachEvent","removeEventListener","detachEvent","hasChildNodes","lastChild","videoContentClass","videoLoadingClass","videoPlayingClass","videoSourcesProperty","playingVideo","videoInterface","posterImage","playMediaControl","isLoading","hasControls","videoContainerNode","videoContainer","errorArgs","video","posterUrl","poster","href","controls","seeking"],"mappings":"sGAAC,SAAUA,EAAQC,GAC8CC,EAAOC,QAAUF,EAAQ,EAAQ,QAAgD,EAAQ,QAAyC,EAAQ,QAA0C,EAAQ,QAAqD,EAAQ,QAAgD,EAAQ,QAAkD,EAAQ,UAD5a,CAIEG,GAAM,SAAUC,EAAwBC,EAAkBC,GAAW,aAGrE,IAAIC,EAAS,CACXC,MAAO,CACLC,OAAQ,CACNC,KAAMC,MACNC,QAAS,WACP,MAAO,KAGXC,QAAS,CACPH,KAAMI,OACNF,QAAS,WACP,MAAO,KAGXG,SAAU,CACRL,KAAMM,QACNJ,SAAS,GAEXK,MAAO,CACLP,KAAMQ,QAERC,GAAI,CACFT,KAAMU,OACNR,QAAS,oBAGbS,KAAM,WACJ,MAAO,CACLC,SAAU,OAGdC,MAAO,CACLN,MAAO,SAAeO,GAChBrB,KAAKY,WAIK,OAAVS,EACFrB,KAAKsB,KAAKD,IAENrB,KAAKmB,UACPnB,KAAKmB,SAASI,QAGhBvB,KAAKwB,MAAM,aAIjBC,QAAS,WACHzB,KAAKY,UACPZ,KAAKsB,QAGTI,UAAW,WACa,OAAlB1B,KAAKmB,WACPnB,KAAKmB,SAASQ,wBACd3B,KAAKmB,SAASI,QACdvB,KAAKmB,SAAW,OAGpBS,QAAS,CACPN,KAAM,WACJ,IAAIO,EAAQ7B,KAERc,EAAQgB,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,EAC5EX,EAAqC,qBAAnBc,OAAO9B,SAA6D,qBAA3B8B,OAAO9B,QAAQ+B,QAA0BD,OAAO9B,QAAQ+B,QAAU/B,EAC7HO,EAAUC,OAAOwB,OAAO,CAC1BC,wBAAwB,EACxBC,4BAA4B,EAC5BC,mBAAmB,EACnB1B,SAAUZ,KAAKY,SACf2B,UAAW,IAAIC,OAAOxC,KAAKgB,IAC3BF,MAAOA,EACP2B,OAAQ,WACN,OAAOZ,EAAML,MAAM,WAErBkB,SAAU,WACR,OAAOb,EAAML,MAAM,aAErBmB,QAAS3C,KAAK4C,cACdC,WAAY,SAAoB/B,EAAOgC,GACrC,OAAOjB,EAAML,MAAM,aAAc,CAC/BV,MAAOA,EACPgC,MAAOA,KAGXC,gBAAiB,SAAyBjC,EAAOgC,GAC/C,OAAOjB,EAAML,MAAM,kBAAmB,CACpCV,MAAOA,EACPgC,MAAOA,KAGXE,QAAS,WACP,OAAOnB,EAAML,MAAM,UAErByB,SAAU,WACR,OAAOpB,EAAML,MAAM,cAEpBxB,KAAKU,SAEJV,KAAKY,WACPF,EAAQ6B,UAAYvC,KAAKkD,KAG3BlD,KAAKmB,SAAWA,EAASnB,KAAKM,OAAQI,IAExCkC,cAAe,SAAuB9B,EAAOgC,GAC3C9C,KAAKwB,MAAM,UAAW,CACpBV,MAAOA,EACPgC,MAAOA,IAET,IAAIK,EAAQnD,KAAKM,OAAOQ,GAExB,QAAckB,IAAVmB,EAAqB,CACvB,IAAIC,EAAOD,EAAME,YACbC,EAAOtD,KAAKmB,SAASoB,UAAUgB,KAAK,gBAEpCH,IACFE,EAAKE,QACLF,EAAK,GAAGG,YAAYC,SAASC,eAAeP,SAOtD,SAASQ,EAAmBC,EAAUC,EAAO1D,EAAQ2D,EAASC,EAAsBC,EAElFC,EAAYC,EAAgBC,EAAmBC,GACrB,mBAAfH,IACTE,EAAoBD,EACpBA,EAAiBD,EACjBA,GAAa,GAIf,IAiBII,EAjBA5D,EAA4B,oBAAXN,EAAwBA,EAAOM,QAAUN,EAsD9D,GApDIyD,GAAYA,EAASU,SACvB7D,EAAQ6D,OAASV,EAASU,OAC1B7D,EAAQ8D,gBAAkBX,EAASW,gBACnC9D,EAAQ+D,WAAY,EAEhBT,IACFtD,EAAQgE,YAAa,IAKrBX,IACFrD,EAAQiE,SAAWZ,GAKjBE,GAEFK,EAAO,SAAcM,GAEnBA,EAAUA,GACV5E,KAAK6E,QAAU7E,KAAK6E,OAAOC,YAC3B9E,KAAK+E,QAAU/E,KAAK+E,OAAOF,QAAU7E,KAAK+E,OAAOF,OAAOC,WAGnDF,GAA0C,qBAAxBI,sBACrBJ,EAAUI,qBAIRlB,GACFA,EAAMmB,KAAKjF,KAAMoE,EAAkBQ,IAIjCA,GAAWA,EAAQM,uBACrBN,EAAQM,sBAAsBC,IAAIlB,IAMtCvD,EAAQ0E,aAAed,GACdR,IACTQ,EAAOJ,EAAa,WAClBJ,EAAMmB,KAAKjF,KAAMqE,EAAqBrE,KAAKqF,MAAMC,SAASC,cACxD,SAAUX,GACZd,EAAMmB,KAAKjF,KAAMmE,EAAeS,MAIhCN,EACF,GAAI5D,EAAQgE,WAAY,CAEtB,IAAIc,EAAiB9E,EAAQ6D,OAE7B7D,EAAQ6D,OAAS,SAAkCkB,EAAGb,GAEpD,OADAN,EAAKW,KAAKL,GACHY,EAAeC,EAAGb,QAEtB,CAEL,IAAIc,EAAWhF,EAAQiF,aACvBjF,EAAQiF,aAAeD,EAAW,GAAGlD,OAAOkD,EAAUpB,GAAQ,CAACA,GAInE,OAAOlE,EAGT,IAAIwF,EAAuBhC,EAEvBiC,EAA+B,qBAAdC,WAA6B,gBAAgBC,KAAKD,UAAUE,UAAUC,eAE3F,SAAS9B,EAAeS,GACtB,OAAO,SAAU5D,EAAI8C,GACnB,OAAOoC,EAASlF,EAAI8C,IAIxB,IAAIqC,EAAOzC,SAAS0C,MAAQ1C,SAAS2C,qBAAqB,QAAQ,GAC9DC,EAAS,GAEb,SAASJ,EAASlF,EAAIuF,GACpB,IAAIC,EAAQX,EAAUU,EAAIE,OAAS,UAAYzF,EAC3C8C,EAAQwC,EAAOE,KAAWF,EAAOE,GAAS,CAC5CE,IAAK,IAAIC,IACTL,OAAQ,KAGV,IAAKxC,EAAM4C,IAAIE,IAAI5F,GAAK,CACtB8C,EAAM4C,IAAIvB,IAAInE,GACd,IAAI6F,EAAON,EAAIO,OAiBf,GAfIP,EAAIQ,MAGNF,GAAQ,mBAAqBN,EAAIQ,IAAIC,QAAQ,GAAK,MAElDH,GAAQ,uDAAyDI,KAAKC,SAASC,mBAAmBC,KAAKC,UAAUd,EAAIQ,QAAU,OAG5HjD,EAAMwD,UACTxD,EAAMwD,QAAU5D,SAAS6D,cAAc,SACvCzD,EAAMwD,QAAQ/G,KAAO,WACjBgG,EAAIE,OAAO3C,EAAMwD,QAAQE,aAAa,QAASjB,EAAIE,OACvDN,EAAK1C,YAAYK,EAAMwD,UAGrB,eAAgBxD,EAAMwD,QACxBxD,EAAMwC,OAAOmB,KAAKZ,GAClB/C,EAAMwD,QAAQI,WAAWC,QAAU7D,EAAMwC,OAAOsB,OAAO/G,SAASgH,KAAK,UAChE,CACL,IAAI/G,EAAQgD,EAAM4C,IAAIoB,KAAO,EACzBC,EAAWrE,SAASC,eAAekD,GACnCmB,EAAQlE,EAAMwD,QAAQW,WACtBD,EAAMlH,IAAQgD,EAAMwD,QAAQY,YAAYF,EAAMlH,IAC9CkH,EAAMjG,OAAQ+B,EAAMwD,QAAQa,aAAaJ,EAAUC,EAAMlH,IAAagD,EAAMwD,QAAQ7D,YAAYsE,KAK1G,IAAIK,EAAUjE,EAGd,MAAMkE,EAAiBjI,EAGvB,IAAIkI,EAAiB,WAAa,IAAIC,EAAIvI,KAASwI,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,2CAA2CC,MAAM,CAAC,2BAA4BN,EAAI3H,UAAUkI,MAAM,CAAC,GAAKP,EAAIvH,KAAK,CAAC0H,EAAG,MAAM,CAACE,YAAY,WAAWL,EAAIQ,GAAG,KAAKL,EAAG,KAAK,CAACE,YAAY,UAAUL,EAAIQ,GAAG,KAAKL,EAAG,IAAI,CAACE,YAAY,gBAAgBL,EAAIQ,GAAG,KAAKL,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACL,EAAIS,GAAG,OAAO,CAACT,EAAIQ,GAAG,QAAQ,GAAGR,EAAIQ,GAAG,KAAKL,EAAG,IAAI,CAACE,YAAY,QAAQ,CAACL,EAAIS,GAAG,OAAO,CAACT,EAAIQ,GAAG,QAAQ,GAAGR,EAAIQ,GAAG,KAAOR,EAAI3H,SAA0E2H,EAAIU,KAApEP,EAAG,IAAI,CAACE,YAAY,SAAS,CAACL,EAAIS,GAAG,QAAQ,CAACT,EAAIQ,GAAG,QAAQ,GAAYR,EAAIQ,GAAG,KAAOR,EAAI3H,SAA6C2H,EAAIU,KAAvCP,EAAG,KAAK,CAACE,YAAY,cAAuBL,EAAIQ,GAAG,KAAMR,EAAY,SAAEG,EAAG,IAAI,CAACE,YAAY,eAAeL,EAAIU,QAC3uBC,EAA0B,GAG5B,MAAMC,EAAwB,SAAUC,GACjCA,GACLA,EAAO,oBAAqB,CAAEtC,OAAQ,mJAAoJC,SAAK/E,EAAWyE,WAAOzE,KAI7MqH,OAAmBrH,EAEnBsH,OAA4BtH,EAE5BuH,GAAiC,EAKvC,IAAIC,EAAa5D,EACf,CAAErB,OAAQ+D,EAAgB9D,gBAAiB0E,GAC3CC,EACAd,EACAgB,EACAE,EACAD,EACAlB,OACApG,GAGJ,OAAOwH,M,uBChTT,WAaC,SAAW3J,GACV,aAGE,EAAO,CAAC,UAAoB,WAA4B,EAAF,EAAS,kEAJlE,EASE,SAAU4J,EAAGvH,GACd,aAEA,IAAKD,OAAOyH,YACV,OAAOxH,EAGT,IAAIyH,EAAmBzH,EAAQ0H,UAE/BH,EAAEI,OAAOF,EAAiBjJ,QAAS,CAEjCoJ,qBAAsB,QAGtBC,eACE,8DAEFC,oBAAqB,gBAErBC,kBAAkB,IAGpB,IAAIC,EACFP,EAAiBO,aAAeP,EAAiBQ,aAC/CC,EAAc,SAAUC,EAAKC,EAASC,EAAUC,GAClDxK,KAAKqK,IAAMA,EACXrK,KAAKsK,QAAUA,EACftK,KAAKuK,SAAWA,EAChBvK,KAAKwK,YAAcA,EACnBxK,KAAKsH,QAAU5D,SAAS6D,cAAc,OACtCvH,KAAKyK,UAAY,IAEfC,EAAU,EA+Jd,OA7JAjB,EAAEI,OAAOO,EAAYR,UAAW,CAC9Be,YAAa,WACX,OAAO,GAGTC,GAAI,SAAUrK,EAAMsK,GAElB,OADA7K,KAAKyK,UAAUlK,GAAQsK,EAChB7K,MAGT8K,QAAS,WACP,IAIIC,EACAC,EALAC,EAAOjL,KACPkL,EAAS,yCACTC,EAAazH,SAAS2C,qBAAqB,UAC3C+E,EAAID,EAAWpJ,OAMnB,SAASsJ,KACFL,GAAUC,EAAKK,aAClBL,EAAKM,OAEPP,GAAS,EAEX,MAAOI,EAEL,GADAA,GAAK,EACDD,EAAWC,GAAGI,MAAQN,EAAQ,CAChCH,EAAYI,EAAWC,GACvB,MAGCL,IACHA,EAAYrH,SAAS6D,cAAc,UACnCwD,EAAUS,IAAMN,GAElBzB,EAAEsB,GAAWH,GAAG,OAAQS,GACxBF,EAAW,GAAGM,WAAWtD,aAAa4C,EAAWI,EAAW,IAExD,kBAAkBpF,KAAKgF,EAAUW,aACnCL,KAIJM,QAAS,WACP,IAAIV,EAAOjL,KACXA,KAAK4L,OAAQ,EACb5L,KAAK6L,OAAOC,SAAS,QAAQ,WAC3Bb,EAAKc,WAAY,EACjBd,EAAKe,eAEPhM,KAAK6L,OAAOC,SAAS,SAAS,WAC5Bb,EAAKgB,aAEPjM,KAAK6L,OAAOC,SAAS,UAAU,WAC7Bb,EAAKgB,aAEHjM,KAAKsL,aACPtL,KAAKuL,QAITS,UAAW,WACLhM,KAAKkM,WAAa,IACpBlM,KAAKyK,UAAU0B,UACfnM,KAAKkM,WAAa,IAItBD,QAAS,WACPjM,KAAKyK,UAAU2B,eACRpM,KAAKkM,YAGdG,aAAc,WACZ,IAAIC,EAAS5I,SAAS6D,cAAc,UACpC+E,EAAOd,IAAMxL,KAAKqK,IACfkC,QAAQ,WAAYvM,KAAKsK,SACzBiC,QAAQ,YAAavM,KAAKuK,UAC7B+B,EAAOtL,GAAKhB,KAAKuK,SACjBvK,KAAKsH,QAAQmE,WAAWe,aAAaF,EAAQtM,KAAKsH,SAClDtH,KAAKsH,QAAUgF,GAGjBf,KAAM,WACJ,IAAIN,EAAOjL,KACNA,KAAKkM,aACRlM,KAAKyK,UAAUc,OACfvL,KAAKkM,WAAa,GAEhBlM,KAAK4L,OAEJ5L,KAAK+L,YACL/L,KAAKwK,aACHvI,OAAO6D,WACN,iBAAiBC,KAAK9D,OAAO6D,UAAU2G,WAM3CzM,KAAKgM,YAELhM,KAAK6L,OAAOa,IAAI,SAGlB1M,KAAKsL,aAAc,EACdrJ,OAAO0K,GAEA3M,KAAK6L,SACf7L,KAAKqM,eACLrM,KAAK6L,OAASc,GAAG3M,KAAKsH,SACtBtH,KAAK6L,OAAOC,SAAS,SAAS,WAC5Bb,EAAKU,cALP3L,KAAK8K,YAWXsB,MAAO,WACDpM,KAAK4L,MACP5L,KAAK6L,OAAOa,IAAI,SACP1M,KAAKkM,oBACPlM,KAAKsL,YACZtL,KAAKyK,UAAU2B,eACRpM,KAAKkM,eAKlBzC,EAAEI,OAAOF,EAAkB,CACzBS,YAAaA,EAEbF,YAAa,SAAU0C,EAAKvB,GAC1B,IAAI3K,EAAUV,KAAKU,QACf4J,EAAUtK,KAAK6M,gBAAgBD,EAAKlM,EAAQoJ,sBAChD,OAAIQ,QACqDtI,IAAnDhC,KAAK6M,gBAAgBD,EAAKlM,EAAQoM,eACpCF,EAAIlM,EAAQoM,aAAe,eAAiBxC,GAE9CI,GAAW,EACJ1K,KAAK+M,aACVH,EACAvB,EACA,IAAIjB,EACF1J,EAAQqJ,eACRO,EACA5J,EAAQsJ,oBAAsBU,EAC9BhK,EAAQuJ,oBAIPC,EAAYjF,KAAKjF,KAAM4M,EAAKvB,MAIhCnJ,M,oCCpNT,IAAI8K,EAAQ,EAAQ,QAEpBlN,EAAOC,QAAU,SAAUkN,EAAQC,GACjC,QAASD,GAAUD,GAAM,WAEvBE,EAAMD,EAAOhI,KAAK,MAAM,cAA6B,GAAKgI,EAAOhI,KAAK,W,oCCJ1E,IAAIkI,EAAU,EAAQ,QAClBvI,EAAU,EAAQ,QAClBwI,EAAW,WAEfD,EAAQA,EAAQE,EAAIF,EAAQG,EAAI,EAAQ,OAAR,CAA8BF,GAAW,SAAU,CACjFG,SAAU,SAAkBC,GAC1B,SAAU5I,EAAQ5E,KAAMwN,EAAcJ,GACnCK,QAAQD,EAAc1L,UAAUC,OAAS,EAAID,UAAU,QAAKE,O,uBCTnE,WAkBC,SAAWnC,GACV,aAGE,EAAO,CAAC,WAAqB,EAAF,EAAS,kEAJvC,EAUE,SAAU4J,GACX,aAUA,SAASvH,EAAQwL,EAAMhN,GACrB,YAAsCsB,IAAlC0B,SAASiK,KAAK7J,MAAM8J,UAEf,KAEJ5N,MAAQA,KAAKU,UAAYwB,EAAQ0H,UAAUlJ,aAK3CgN,GAASA,EAAK3L,QAOnB/B,KAAK0N,KAAOA,EACZ1N,KAAK6N,IAAMH,EAAK3L,OAChB/B,KAAK8N,YAAYpN,GACjBV,KAAK+N,cATH/N,KAAKgO,QAAQC,IACX,gEACAP,IALK,IAAIxL,EAAQwL,EAAMhN,GAq5C7B,OAt4CA+I,EAAEI,OAAO3H,EAAQ0H,UAAW,CAC1BlJ,QAAS,CAEP6B,UAAW,mBAEX2L,gBAAiB,MAEjBC,aAAc,KAEdC,aAAc,0BAEdC,cAAe,2BAEfC,YAAa,yBAEbC,cAAe,uBAEfC,eAAgB,wBAEhBC,aAAc,0BAEdC,WAAY,QAEZC,kBAAmB,gBAEnBC,gBAAiB,cAEjBC,kBAAmB,gBAEnBC,YAAa,SAEbC,UAAW,OAEXC,UAAW,OAEXC,WAAY,QAEZC,eAAgB,aAEhBC,aAAc,OAEdC,cAAe,QAEfC,gBAAiB,MAEjBvC,YAAa,OAEbwC,eAAgB,SAGhBC,mBAAmB,EAGnBC,aAAa,EAMbC,eAAe,EAEfrN,wBAAwB,EAExBC,4BAA4B,EAE5BqN,wBAAwB,EAExBC,0BAA0B,EAE1BC,eAAe,EAEftN,mBAAmB,EAEnBuN,sBAAsB,EAEtBC,mBAAmB,EAEnBC,oBAAoB,EAEpBC,4BAA4B,EAE5BC,oBAAoB,EAEpBC,eAAe,EAEftP,UAAU,EAGVuP,YAAY,EAEZC,gBAAgB,EAEhBC,gBAAgB,EAEhBC,kBAAmB,IAEnBC,mBAAoB,MAIpBzP,MAAO,EAEP0P,aAAc,EAEdC,mBAAoB,IAGpBC,4BAA6B,IAG7BC,WAAO3O,EAGPS,YAAQT,EAIRU,cAAUV,EAIVW,aAASX,EAITa,gBAAYb,EAIZe,qBAAiBf,EAGjBgB,aAAShB,EAITiB,cAAUjB,GAGZ4O,gBAAiB,CACfX,oBAAoB,EACpB7N,wBAAwB,EACxBsN,wBAAwB,EACxBC,0BAA0B,EAC1BC,eAAe,EACftN,mBAAmB,EACnBuN,sBAAsB,EACtBK,eAAe,EACfG,gBAAgB,GAGlBrC,QACE/L,OAAO+L,SAAyC,oBAAvB/L,OAAO+L,QAAQC,IACpChM,OAAO+L,QACP,CAAEC,IAAK,cAGb4C,QAAS,SAAWvJ,GAClB,IAuBIwJ,EAvBAD,EAAU,CACZE,WAC0B/O,IAAxBC,OAAO+O,cACN/O,OAAOgP,eAAiBvN,oBAAoBuN,eAE7CC,EAAc,CAChBC,iBAAkB,CAChBC,IAAK,sBACLC,OAAQ,YAEVC,cAAe,CACbF,IAAK,gBACLC,OAAQ,SAEVE,YAAa,CACXH,IAAK,iBACLC,OAAQ,OAEVG,WAAY,CACVJ,IAAK,gBACLC,OAAQ,KAIZ,IAAKP,KAAQI,EACX,GACEvQ,OAAOiJ,UAAU6H,eAAexM,KAAKiM,EAAaJ,SAC1B9O,IAAxBsF,EAAQxD,MAAMgN,GACd,CACAD,EAAQW,WAAaN,EAAYJ,GACjCD,EAAQW,WAAWE,KAAOZ,EAC1B,MAMJ,SAASa,IACP,IACIb,EACAc,EAFAJ,EAAaX,EAAQW,WAGzB9N,SAASiK,KAAKlK,YAAY6D,GACtBkK,IACFV,EAAOU,EAAWE,KAAKG,MAAM,GAAI,GAAK,gBACV7P,IAAxBsF,EAAQxD,MAAMgN,KAChBxJ,EAAQxD,MAAMgN,GAAQ,gBACtBc,EAAa3P,OACV6P,iBAAiBxK,GACjByK,iBAAiBP,EAAWH,OAAS,aACxCR,EAAQmB,UAAY,CAClBX,OAAQG,EAAWH,OACnBK,KAAMZ,EACNmB,WAAW,EACXL,aAAcA,GAA6B,SAAfA,UAIG5P,IAAjCsF,EAAQxD,MAAMoO,iBAChBrB,EAAQqB,eAAiB,GACzB5K,EAAQxD,MAAMoO,eAAiB,UAC/BrB,EAAQqB,eAAeC,QAGsB,YAF3ClQ,OACG6P,iBAAiBxK,GACjByK,iBAAiB,mBACtBzK,EAAQxD,MAAMoO,eAAiB,QAC/BrB,EAAQqB,eAAeE,MAGsB,UAF3CnQ,OACG6P,iBAAiBxK,GACjByK,iBAAiB,oBAExBrO,SAASiK,KAAKzF,YAAYZ,GAO5B,OALI5D,SAASiK,KACXgE,IAEAlI,EAAE/F,UAAUkH,GAAG,mBAAoB+G,GAE9Bd,EA9EA,CAiFNnN,SAAS6D,cAAc,QAE1B8K,sBACEpQ,OAAOoQ,uBACPpQ,OAAOqQ,6BACPrQ,OAAOsQ,yBAETC,qBACEvQ,OAAOuQ,sBACPvQ,OAAOwQ,mCACPxQ,OAAOyQ,4BACPzQ,OAAO0Q,wBAET5E,WAAY,WAEV,GADA/N,KAAK4S,kBACqB,IAAtB5S,KAAK6S,aACP,OAAO,EAET7S,KAAK8S,qBAEL9S,KAAK2C,QAAQ3C,KAAKc,OAElBd,KAAK+S,kBAED/S,KAAKU,QAAQ2P,gBACfrQ,KAAKuL,QAITzI,MAAO,SAAUkQ,EAAIC,GACnBhR,OAAOiR,aAAalT,KAAKmT,SACzB,IACIC,EACAC,EACAC,EAHAxS,EAAQd,KAAKc,MAIjB,GAAIA,IAAUkS,GAAmB,IAAbhT,KAAK6N,IAAzB,CAMA,GAHKoF,IACHA,EAAWjT,KAAKU,QAAQ+P,oBAEtBzQ,KAAK6Q,QAAQmB,UAAW,CACrBhS,KAAKU,QAAQyP,aAChB6C,EAAKhT,KAAKuT,OAAOP,IAGnBI,EAAYI,KAAKC,IAAI3S,EAAQkS,IAAOlS,EAAQkS,GAExChT,KAAKU,QAAQyP,aACfkD,EAAmBD,EACnBA,GAAapT,KAAK0T,UAAU1T,KAAKuT,OAAOP,IAAOhT,KAAK2T,WAGhDP,IAAcC,IAChBL,GAAMI,EAAYpT,KAAK6N,IAAMmF,IAGjCM,EAAOE,KAAKC,IAAI3S,EAAQkS,GAAM,EAE9B,MAAOM,EACLA,GAAQ,EACRtT,KAAK4T,KACH5T,KAAKuT,QAAQP,EAAKlS,EAAQkS,EAAKlS,GAASwS,EAAO,GAC/CtT,KAAK2T,WAAaP,EAClB,GAGJJ,EAAKhT,KAAKuT,OAAOP,GACjBhT,KAAK4T,KAAK9S,EAAOd,KAAK2T,WAAaP,EAAWH,GAC9CjT,KAAK4T,KAAKZ,EAAI,EAAGC,GACbjT,KAAKU,QAAQyP,YACfnQ,KAAK4T,KACH5T,KAAKuT,OAAOP,EAAKI,IACfpT,KAAK2T,WAAaP,EACpB,QAIJJ,EAAKhT,KAAKuT,OAAOP,GACjBhT,KAAK6T,QAAQ/S,GAASd,KAAK2T,WAAYX,GAAMhT,KAAK2T,WAAYV,GAEhEjT,KAAK2C,QAAQqQ,KAGfc,SAAU,WACR,OAAO9T,KAAKc,OAGdiT,UAAW,WACT,OAAO/T,KAAK6N,KAGdmG,KAAM,YACAhU,KAAKU,QAAQyP,YAAcnQ,KAAKc,QAClCd,KAAK8C,MAAM9C,KAAKc,MAAQ,IAI5BmT,KAAM,YACAjU,KAAKU,QAAQyP,YAAcnQ,KAAKc,MAAQd,KAAK6N,IAAM,IACrD7N,KAAK8C,MAAM9C,KAAKc,MAAQ,IAI5ByK,KAAM,SAAU2I,GACd,IAAIjJ,EAAOjL,KACPmU,EACFnU,KAAKc,OAA6C,QAApCd,KAAKU,QAAQ6P,oBAAgC,EAAI,GACjEtO,OAAOiR,aAAalT,KAAKmT,SACzBnT,KAAKoU,SAAWF,GAAQlU,KAAKU,QAAQ4P,kBACjCtQ,KAAKqU,SAASrU,KAAKc,OAAS,IAC9Bd,KAAKmT,QAAUnT,KAAKsU,YAChBtU,KAAKqS,uBAAyBrS,KAAK8C,OACnC,SAAUkQ,EAAIC,GACZhI,EAAKsJ,iBAAmBtJ,EAAKoH,sBAAsBpN,KACjDhD,QACA,WACEgJ,EAAKnI,MAAMkQ,EAAIC,OAIvB,CAACkB,EAAWnU,KAAKU,QAAQgQ,6BACzB1Q,KAAKoU,WAGTpU,KAAKuC,UAAUiS,SAASxU,KAAKU,QAAQ+N,eAGvCrC,MAAO,WACLnK,OAAOiR,aAAalT,KAAKmT,SACzBnT,KAAKoU,SAAW,KACZpU,KAAKwS,uBACPxS,KAAKwS,qBAAqBvN,KAAKhD,OAAQjC,KAAKuU,kBAC5CvU,KAAKuU,iBAAmB,MAE1BvU,KAAKuC,UAAUkS,YAAYzU,KAAKU,QAAQ+N,eAG1CtJ,IAAK,SAAUuI,GACb,IAAItC,EAkBJ,IAjBKsC,EAAKlL,SAERkL,EAAOlN,MAAMoJ,UAAUiI,MAAM5M,KAAKyI,IAE/B1N,KAAK0N,KAAKlL,SAEbxC,KAAK0N,KAAOlN,MAAMoJ,UAAUiI,MAAM5M,KAAKjF,KAAK0N,OAE9C1N,KAAK0N,KAAO1N,KAAK0N,KAAKlL,OAAOkL,GAC7B1N,KAAK6N,IAAM7N,KAAK0N,KAAK3L,OACjB/B,KAAK6N,IAAM,GAAiC,OAA5B7N,KAAKU,QAAQyP,aAC/BnQ,KAAKU,QAAQyP,YAAa,EAC1BnQ,KAAKuC,UAAUkS,YAAYzU,KAAKU,QAAQ6N,gBAE1CvO,KAAKuC,UACFkS,YAAYzU,KAAKU,QAAQ8N,gBACzBiG,YAAYzU,KAAKU,QAAQ4N,aACvBlD,EAAIpL,KAAK6N,IAAMH,EAAK3L,OAAQqJ,EAAIpL,KAAK6N,IAAKzC,GAAK,EAClDpL,KAAK0U,SAAStJ,GACdpL,KAAK2U,cAAcvJ,GAErBpL,KAAK0T,UAAU3R,OAAS/B,KAAK6N,IAC7B7N,KAAK4U,YAAW,IAGlBC,YAAa,WACX7U,KAAKkO,gBAAgB1K,QACrBxD,KAAK8U,kBACL9U,KAAK+U,OAAS,IAGhBC,YAAa,WACX,IAAItU,EAAUV,KAAKU,QACnBV,KAAK2B,wBAEL3B,KAAKoM,QACLpM,KAAKuC,UAAU,GAAGuB,MAAMmR,QAAU,OAClCjV,KAAKuC,UACFkS,YAAY/T,EAAQ0N,cACpBqG,YAAY/T,EAAQ4N,aACpBmG,YAAY/T,EAAQ6N,eACpBkG,YAAY/T,EAAQ8N,gBACnB9N,EAAQuP,qBACVvM,SAASiK,KAAK7J,MAAMoR,SAAWlV,KAAKmV,mBAElCnV,KAAKU,QAAQ8O,aACfxP,KAAK6U,cAEH7U,KAAKU,QAAQuC,UACfjD,KAAKU,QAAQuC,SAASgC,KAAKjF,OAI/BuB,MAAO,WACL,IAAI0J,EAAOjL,KAMX,SAASoV,EAAazE,GAChBA,EAAM0E,SAAWpK,EAAK1I,UAAU,KAClC0I,EAAK1I,UAAU+S,IAAIrK,EAAK4F,QAAQW,WAAWJ,IAAKgE,GAChDnK,EAAK+J,eAGLhV,KAAKU,QAAQsC,SACfhD,KAAKU,QAAQsC,QAAQiC,KAAKjF,MAExBA,KAAK6Q,QAAQW,YAAcxR,KAAKU,QAAQ6O,mBAC1CvP,KAAKuC,UAAUqI,GAAG5K,KAAK6Q,QAAQW,WAAWJ,IAAKgE,GAC/CpV,KAAKuC,UAAUkS,YAAYzU,KAAKU,QAAQ0N,eAExCpO,KAAKgV,eAITzB,OAAQ,SAAUzS,GAEhB,OAAQd,KAAK6N,IAAO/M,EAAQd,KAAK6N,KAAQ7N,KAAK6N,KAGhD+F,KAAM,SAAU9S,EAAOyU,EAAMtC,GAC3BjT,KAAKwV,WAAW1U,EAAOyU,EAAMtC,GAC7BjT,KAAK0T,UAAU5S,GAASyU,GAG1BtD,UAAW,SAAUnR,EAAO2U,EAAGC,EAAGzC,GAChC,GAAKjT,KAAK+U,OAAOjU,GAAjB,CACA,IAAIgD,EAAQ9D,KAAK+U,OAAOjU,GAAOgD,MAC3B0N,EAAaxR,KAAK6Q,QAAQW,WAC1BQ,EAAYhS,KAAK6Q,QAAQmB,UAC7BlO,EAAM0N,EAAWE,KAAO,YAAcuB,EAAW,KACjDnP,EAAMkO,EAAUN,MACd,aACA+D,EACA,OACAC,EACA,OACC1D,EAAUJ,WAAa,iBAAmB,MAG/C4D,WAAY,SAAU1U,EAAO2U,EAAGxC,GAC9BjT,KAAKiS,UAAUnR,EAAO2U,EAAG,EAAGxC,IAG9B0C,WAAY,SAAU7U,EAAO4U,EAAGzC,GAC9BjT,KAAKiS,UAAUnR,EAAO,EAAG4U,EAAGzC,IAG9BY,QAAS,SAAU+B,EAAM5C,EAAIC,GAC3B,GAAKA,EAIL,IAAIhI,EAAOjL,KACP6V,GAAQ,IAAIC,MAAOC,UACnBC,EAAQ/T,OAAOgU,aAAY,WAC7B,IAAIC,GAAW,IAAIJ,MAAOC,UAAYF,EACtC,GAAIK,EAAWjD,EAIb,OAHAhI,EAAKiD,gBAAgB,GAAGpK,MAAMqS,KAAOnD,EAAK,KAC1C/H,EAAK8H,uBACL9Q,OAAOmU,cAAcJ,GAGvB/K,EAAKiD,gBAAgB,GAAGpK,MAAMqS,MAC3BnD,EAAK4C,IAASpC,KAAK6C,MAAOH,EAAWjD,EAAY,KAAO,KACzD2C,EACA,OACD,QAjBD5V,KAAKkO,gBAAgB,GAAGpK,MAAMqS,KAAOnD,EAAK,MAoB9CsD,eAAgB,SAAU3F,GACpBA,EAAM2F,eACR3F,EAAM2F,iBAEN3F,EAAM4F,aAAc,GAIxBC,gBAAiB,SAAU7F,GACrBA,EAAM6F,gBACR7F,EAAM6F,kBAEN7F,EAAM8F,cAAe,GAIzBC,SAAU,WACR1W,KAAK4U,YAAW,IAGlB+B,aAAc,WACR3W,KAAKU,QAAQoP,mBACf9P,KAAKuB,SAITqV,YAAa,SAAUjG,GAInBA,EAAMkG,OACU,IAAhBlG,EAAMkG,OACoB,UAA1BlG,EAAM0E,OAAOyB,UACa,UAA1BnG,EAAM0E,OAAOyB,WAIbnG,EAAM2F,kBACJ3F,EAAMoG,eAAiBpG,GAAOqG,QAAU,CACxC,CACEC,MAAOtG,EAAMsG,MACbC,MAAOvG,EAAMuG,QAGjBlX,KAAKgR,aAAaL,KAItBwG,YAAa,SAAUxG,GACjB3Q,KAAKoX,cACLzG,EAAMoG,eAAiBpG,GAAOqG,QAAU,CACxC,CACEC,MAAOtG,EAAMsG,MACbC,MAAOvG,EAAMuG,QAGjBlX,KAAKqX,YAAY1G,KAIrB2G,UAAW,SAAU3G,GACf3Q,KAAKoX,aACPpX,KAAKuX,WAAW5G,UACT3Q,KAAKoX,aAIhBI,WAAY,SAAU7G,GACpB,GAAI3Q,KAAKoX,WAAY,CACnB,IAAI/B,EAAS1E,EAAM0E,OACfoC,EAAU9G,EAAM+G,cACfD,IAAYA,IAAYpC,GAAW5L,EAAEkO,SAAStC,EAAQoC,KACzDzX,KAAKsX,UAAU3G,KAKrBK,aAAc,SAAUL,GAClB3Q,KAAKU,QAAQsP,4BACfhQ,KAAKwW,gBAAgB7F,GAIvB,IAAII,GAASJ,EAAMoG,eAAiBpG,GAAOqG,QAAQ,GACnDhX,KAAKoX,WAAa,CAEhB3B,EAAG1E,EAAMkG,MACTvB,EAAG3E,EAAMmG,MAEThD,KAAM4B,KAAK8B,OAGb5X,KAAK6X,iBAAc7V,EAEnBhC,KAAK8X,WAAa,IAGpBT,YAAa,SAAU1G,GACjB3Q,KAAKU,QAAQsP,4BACfhQ,KAAKwW,gBAAgB7F,GAIvB,IAIIoH,EACAC,EALAhB,GAAWrG,EAAMoG,eAAiBpG,GAAOqG,QACzCjG,EAAQiG,EAAQ,GAChBiB,GAAStH,EAAMoG,eAAiBpG,GAAOsH,MACvCnX,EAAQd,KAAKc,MAIjB,KAAIkW,EAAQjV,OAAS,GAAMkW,GAAmB,IAAVA,GAkBpC,GAfIjY,KAAKU,QAAQwP,eACfS,EAAM2F,iBAGRtW,KAAK8X,WAAa,CAChBrC,EAAG1E,EAAMkG,MAAQjX,KAAKoX,WAAW3B,EACjCC,EAAG3E,EAAMmG,MAAQlX,KAAKoX,WAAW1B,GAEnCqC,EAAc/X,KAAK8X,WAAWrC,OAELzT,IAArBhC,KAAK6X,cACP7X,KAAK6X,YACH7X,KAAK6X,aACLrE,KAAKC,IAAIsE,GAAevE,KAAKC,IAAIzT,KAAK8X,WAAWpC,IAEhD1V,KAAK6X,YA4BE7X,KAAKU,QAAQE,UACvBZ,KAAK2V,WAAW7U,EAAOd,KAAK8X,WAAWpC,EAAI1V,KAAK0T,UAAU5S,GAAQ,OA7B7C,CAErB6P,EAAM2F,iBAENrU,OAAOiR,aAAalT,KAAKmT,SACrBnT,KAAKU,QAAQyP,WACf6H,EAAU,CAAChY,KAAKuT,OAAOzS,EAAQ,GAAIA,EAAOd,KAAKuT,OAAOzS,EAAQ,KAI9Dd,KAAK8X,WAAWrC,EAAIsC,IAEfjX,GAASiX,EAAc,GACzBjX,IAAUd,KAAK6N,IAAM,GAAKkK,EAAc,EACrCvE,KAAKC,IAAIsE,GAAe/X,KAAK2T,WAAa,EAC1C,EACNqE,EAAU,CAAClX,GACPA,GACFkX,EAAQvQ,KAAK3G,EAAQ,GAEnBA,EAAQd,KAAK6N,IAAM,GACrBmK,EAAQE,QAAQpX,EAAQ,IAG5B,MAAOkX,EAAQjW,OACbjB,EAAQkX,EAAQG,MAChBnY,KAAKwV,WAAW1U,EAAOiX,EAAc/X,KAAK0T,UAAU5S,GAAQ,KAOlEyW,WAAY,SAAU5G,GAChB3Q,KAAKU,QAAQsP,4BACfhQ,KAAKwW,gBAAgB7F,GAEvB,IAiBIyC,EACAgF,EACAC,EACAC,EACAC,EArBAzX,EAAQd,KAAKc,MACb0X,EAAiBhF,KAAKC,IAAIzT,KAAK8X,WAAWrC,GAC1C9B,EAAa3T,KAAK2T,WAClBV,EAAWO,KAAKiF,KACjBzY,KAAKU,QAAQ+P,oBAAsB,EAAI+H,EAAiB7E,GACvD,GAGA+E,EAAeF,EAAiB,GAEhCG,GACA7X,GAASd,KAAK8X,WAAWrC,EAAI,GAC9B3U,IAAUd,KAAK6N,IAAM,GAAK7N,KAAK8X,WAAWrC,EAAI,EAC7CmD,GACDF,GACD1Y,KAAKU,QAAQmP,sBACb2D,KAAKC,IAAIzT,KAAK8X,WAAWpC,GAAK,GAM5B1V,KAAKU,QAAQyP,aACfwI,GAAe,GAGjBvF,EAAYpT,KAAK8X,WAAWrC,EAAI,GAAK,EAAI,EACpCzV,KAAK6X,YAqCJe,EACF5Y,KAAKuB,QAGLvB,KAAK2V,WAAW7U,EAAO,EAAGmS,GAxCxByF,IAAiBC,GACnBP,EAAetX,EAAQsS,EACvBiF,EAAgBvX,EAAQsS,EACxBkF,EAAkB3E,EAAaP,EAC/BmF,GAAoB5E,EAAaP,EAC7BpT,KAAKU,QAAQyP,YACfnQ,KAAK4T,KAAK5T,KAAKuT,OAAO6E,GAAeE,EAAiB,GACtDtY,KAAK4T,KAAK5T,KAAKuT,OAAOzS,EAAQ,EAAIsS,GAAYmF,EAAkB,IACvDH,GAAgB,GAAKA,EAAepY,KAAK6N,KAClD7N,KAAK4T,KAAKwE,EAAcE,EAAiB,GAE3CtY,KAAK4T,KAAK9S,EAAOd,KAAK0T,UAAU5S,GAASwX,EAAiBrF,GAC1DjT,KAAK4T,KACH5T,KAAKuT,OAAO8E,GACZrY,KAAK0T,UAAU1T,KAAKuT,OAAO8E,IAAkBC,EAC7CrF,GAEFnS,EAAQd,KAAKuT,OAAO8E,GACpBrY,KAAK2C,QAAQ7B,IAGTd,KAAKU,QAAQyP,YACfnQ,KAAK4T,KAAK5T,KAAKuT,OAAOzS,EAAQ,IAAK6S,EAAYV,GAC/CjT,KAAK4T,KAAK9S,EAAO,EAAGmS,GACpBjT,KAAK4T,KAAK5T,KAAKuT,OAAOzS,EAAQ,GAAI6S,EAAYV,KAE1CnS,GACFd,KAAK4T,KAAK9S,EAAQ,GAAI6S,EAAYV,GAEpCjT,KAAK4T,KAAK9S,EAAO,EAAGmS,GAChBnS,EAAQd,KAAK6N,IAAM,GACrB7N,KAAK4T,KAAK9S,EAAQ,EAAG6S,EAAYV,KAc3C4F,cAAe,SAAUlI,GACnB3Q,KAAKoX,aACPpX,KAAKuX,WAAW5G,UACT3Q,KAAKoX,aAIhBrE,gBAAiB,SAAUpC,GACzB,IAAI7N,EAAQ9C,KAAK+U,OAAO/U,KAAKc,OACxB6P,GAAS7N,IAAU6N,EAAM0E,SACxBrV,KAAKoU,UACPpU,KAAKuL,OAEPvL,KAAKsU,WAAWtU,KAAKU,QAAQmC,WAAY,CAAC7C,KAAKc,MAAOgC,MAI1DgW,WAAY,SAAUnI,GACpB,IAEI7P,EAFAuU,EAAS1E,EAAM0E,QAAU1E,EAAMoI,WAC/BhU,EAASsQ,GAAUA,EAAO5J,WAEzB4J,GAAWtQ,IAGhBjE,EAAQd,KAAKgZ,aAAajU,GAC1B0E,EAAE1E,GAAQ0P,YAAYzU,KAAKU,QAAQiO,mBAChB,UAAfgC,EAAMpQ,MACRkJ,EAAE1E,GAAQyP,SAASxU,KAAKU,QAAQkO,iBAChC5O,KAAKqU,SAASvT,GAAS,GAEvBd,KAAKqU,SAASvT,GAAS,EAGrBuU,EAAO4D,aAAejZ,KAAKuC,UAAU,GAAG0W,eAC1C5D,EAAOvR,MAAM8J,UAAY5N,KAAKuC,UAAU,GAAG0W,cAEzCjZ,KAAKoU,UAAYpU,KAAK+U,OAAO/U,KAAKc,SAAWiE,GAC/C/E,KAAKuL,OAEPvL,KAAKsU,WAAWtU,KAAKU,QAAQqC,gBAAiB,CAACjC,EAAOiE,MAGxDmU,OAAQ,SAAUvI,GAChB3Q,KAAK8Y,WAAWnI,IAGlBwI,QAAS,SAAUxI,GACjB3Q,KAAK8Y,WAAWnI,IAGlByI,UAAW,SAAUzI,GACnB,OAAQA,EAAMkG,OAASlG,EAAM0I,SAC3B,KAAK,GACCrZ,KAAKU,QAAQ0B,yBACfpC,KAAKsW,eAAe3F,GACpB3Q,KAAKsZ,kBAEP,MACF,KAAK,GACCtZ,KAAKU,QAAQkP,gBACf5P,KAAKuB,QAELoP,EAAM4I,4BAER,MACF,KAAK,GACCvZ,KAAKU,QAAQgP,yBACf1P,KAAKsW,eAAe3F,GACpB3Q,KAAKwZ,mBAEP,MACF,KAAK,GACCxZ,KAAKU,QAAQiP,2BACf3P,KAAKsW,eAAe3F,GACpB3Q,KAAKgU,QAEP,MACF,KAAK,GACChU,KAAKU,QAAQiP,2BACf3P,KAAKsW,eAAe3F,GACpB3Q,KAAKiU,QAEP,QAINwF,YAAa,SAAU9I,GACrB,IAAIjQ,EAAUV,KAAKU,QACf2U,EAAS1E,EAAM0E,QAAU1E,EAAMoI,WAC/BhU,EAASsQ,EAAO5J,WAOpB,SAASiO,EAASC,GAChB,OAAOlQ,EAAE4L,GAAQuE,SAASD,IAAclQ,EAAE1E,GAAQ6U,SAASD,GAEzDD,EAAShZ,EAAQoO,cAEnB9O,KAAKsW,eAAe3F,GACpB3Q,KAAKsZ,kBACII,EAAShZ,EAAQqO,YAE1B/O,KAAKsW,eAAe3F,GACpB3Q,KAAKgU,QACI0F,EAAShZ,EAAQsO,YAE1BhP,KAAKsW,eAAe3F,GACpB3Q,KAAKiU,QACIyF,EAAShZ,EAAQuO,aAE1BjP,KAAKsW,eAAe3F,GACpB3Q,KAAKuB,SACImY,EAAShZ,EAAQwO,iBAE1BlP,KAAKsW,eAAe3F,GACpB3Q,KAAKwZ,mBACIzU,IAAW/E,KAAKkO,gBAAgB,GAErCxN,EAAQ4B,mBACVtC,KAAKsW,eAAe3F,GACpB3Q,KAAKuB,SACIb,EAAQ2B,6BACjBrC,KAAKsW,eAAe3F,GACpB3Q,KAAKsZ,kBAGPvU,EAAO0G,YACP1G,EAAO0G,aAAezL,KAAKkO,gBAAgB,IAGvCxN,EAAQ2B,6BACVrC,KAAKsW,eAAe3F,GACpB3Q,KAAKsZ,mBAKXO,QAAS,SAAUlJ,GACjB,KACE3Q,KAAKU,QAAQqP,oBACb/P,KAAK8X,aACJtE,KAAKC,IAAIzT,KAAK8X,WAAWrC,GAAK,IAAMjC,KAAKC,IAAIzT,KAAK8X,WAAWpC,GAAK,KAKrE,OAAO1V,KAAKyZ,YAAY9I,UAHf3Q,KAAK8X,YAMhBgC,kBAAmB,SAAUhZ,GACtBA,EAGHd,KAAKuC,UAAUkS,YAAYzU,KAAKU,QAAQ6N,eAFxCvO,KAAKuC,UAAUiS,SAASxU,KAAKU,QAAQ6N,eAInCzN,IAAUd,KAAK6N,IAAM,EACvB7N,KAAKuC,UAAUiS,SAASxU,KAAKU,QAAQ8N,gBAErCxO,KAAKuC,UAAUkS,YAAYzU,KAAKU,QAAQ8N,iBAI5CuL,YAAa,SAAUjZ,GAChBd,KAAKU,QAAQyP,YAChBnQ,KAAK8Z,kBAAkBhZ,GAEzBd,KAAKga,aAAalZ,GACdd,KAAKU,QAAQ0P,gBACfpQ,KAAKoQ,eAAetP,GAEtBd,KAAKia,SAASnZ,IAGhB6B,QAAS,SAAU7B,GACjBd,KAAKc,MAAQA,EACbd,KAAK+Z,YAAYjZ,GACjBd,KAAKsU,WAAWtU,KAAKU,QAAQiC,QAAS,CAAC7B,EAAOd,KAAK+U,OAAOjU,MAG5DmZ,SAAU,SAAUnZ,GAClB,IAAIoZ,EAAala,KAAK+U,OAAOjU,GAAOoZ,WAChC9W,EAAO8W,EAAWC,OAASD,EAAWE,IACtCjM,EAAenO,KAAKmO,aACpBA,EAAapM,SACf/B,KAAKmO,aAAa3K,QACdJ,GACF+K,EAAa,GAAG1K,YAAYC,SAASC,eAAeP,MAK1DkR,WAAY,SAAUzJ,EAAMwP,EAAMC,GAChC,IAAIrP,EAAOjL,KACX,OACE6K,GACA5I,OAAOqS,YAAW,WAChBzJ,EAAK0P,MAAMtP,EAAMoP,GAAQ,MACxBC,GAAQ,IAIfnQ,aAAc,SAAUyC,EAAKvB,GAC3B,IAIIL,EACA1D,EACA6S,EACAK,EAPAvP,EAAOjL,KACPya,EAAMza,KAAK0a,eAAeC,WAAU,GACpCtQ,EAAMuC,EACNsF,EAAiBlS,KAAKU,QAAQ+O,cAWlC,SAASmL,EAAgBjK,GACvB,IAAK3F,EAAQ,CAKX,GAJA2F,EAAQ,CACNpQ,KAAMoQ,EAAMpQ,KACZ8U,OAAQ/N,IAELA,EAAQmE,WAIX,OAAOR,EAAKqJ,WAAWsG,EAAiB,CAACjK,IAE3C3F,GAAS,EACTvB,EAAEgR,GAAKnF,IAAI,aAAcsF,GACrB1I,GACiB,SAAfvB,EAAMpQ,OACR+G,EAAQxD,MAAM+W,WAAa,QAAUxQ,EAAM,sBAC3C/C,EAAQxD,MAAMoO,eAAiBA,GAGnC7G,EAASsF,IA8Bb,MA3BmB,kBAARtG,IACTA,EAAMrK,KAAK6M,gBAAgBD,EAAK5M,KAAKU,QAAQoM,aAC7CqN,EAAQna,KAAK6M,gBAAgBD,EAAK5M,KAAKU,QAAQ0O,eAC/CoL,EACExa,KAAK6M,gBAAgBD,EAAK5M,KAAKU,QAAQ2O,kBAAoB8K,IAExC,IAAnBjI,IACFA,EAAiB,WAEnBA,EACElS,KAAK6Q,QAAQqB,gBACblS,KAAK6Q,QAAQqB,eAAeA,IAC5BA,EACEA,EACF5K,EAAUtH,KAAK8a,iBAAiBH,WAAU,IAE1CrT,EAAUmT,EACVA,EAAIM,WAAY,GAEdZ,IACF7S,EAAQ6S,MAAQA,GAEdK,IACFlT,EAAQ8S,IAAMI,GAEhB/Q,EAAEgR,GAAK7P,GAAG,aAAcgQ,GACxBH,EAAIjP,IAAMnB,EACH/C,GAGTC,cAAe,SAAUqF,EAAKvB,GAC5B,IAAI9K,EAAOqM,GAAO5M,KAAK6M,gBAAgBD,EAAK5M,KAAKU,QAAQyO,cACrDtP,EACDU,GAAQP,KAAKO,EAAKya,MAAM,KAAK,GAAK,YAAehb,KAAKmK,aACrD7C,EAAUsF,GAAO/M,EAAQoF,KAAKjF,KAAM4M,EAAKvB,GACzC4P,EAASjb,KAAK6M,gBAAgBD,EAAK5M,KAAKU,QAAQ4O,gBAcpD,OAbKhI,IACHA,EAAUtH,KAAK8a,iBAAiBH,WAAU,GAC1C3a,KAAKsU,WAAWjJ,EAAU,CACxB,CACE9K,KAAM,QACN8U,OAAQ/N,MAIV2T,GACF3T,EAAQE,aAAa,SAAUyT,GAEjCxR,EAAEnC,GAASkN,SAASxU,KAAKU,QAAQmO,mBAC1BvH,GAGT4T,YAAa,SAAUpa,GAChBd,KAAKqU,SAASvT,KACbd,KAAK+U,OAAOjU,GAAOoZ,WACrBla,KAAKqU,SAASvT,GAAS2I,EAAEzJ,KAAK+U,OAAOjU,IAAQ8Y,SAC3C5Z,KAAKU,QAAQkO,iBAEX,EACA,GAEJ5O,KAAKqU,SAASvT,GAAS,EACvB2I,EAAEzJ,KAAK+U,OAAOjU,IAAQ0T,SAASxU,KAAKU,QAAQiO,mBAC5C3O,KAAK+U,OAAOjU,GAAO2C,YACjBzD,KAAKuH,cAAcvH,KAAK0N,KAAK5M,GAAQd,KAAKmb,mBAMlDnB,aAAc,SAAUlZ,GACtB,IAEIsK,EAFAgQ,EAAQ5H,KAAK6H,IAAIrb,KAAK6N,IAAiC,EAA5B7N,KAAKU,QAAQ8P,aAAmB,GAC3D8K,EAAIxa,EAER,IAAKsK,EAAI,EAAGA,EAAIgQ,EAAOhQ,GAAK,EAK1BkQ,GAAKlQ,GAAKA,EAAI,IAAM,GAAK,EAAI,GAG7BkQ,EAAItb,KAAKuT,OAAO+H,GAChBtb,KAAKkb,YAAYI,IAIrBlL,eAAgB,SAAUtP,GACxB,IAAIsK,EAAGkI,EACP,IAAKlI,KAAKpL,KAAKqU,SACT1T,OAAOiJ,UAAU6H,eAAexM,KAAKjF,KAAKqU,SAAUjJ,KACtDkI,EAAOE,KAAKC,IAAI3S,EAAQsK,GAEtBkI,EAAOtT,KAAKU,QAAQ8P,cACpB8C,EAAOtT,KAAKU,QAAQ8P,aAAexQ,KAAK6N,MAExC7N,KAAKub,YAAYnQ,UACVpL,KAAKqU,SAASjJ,MAM7BsJ,SAAU,SAAU5T,GAClB,IAAIgC,EAAQ9C,KAAKwb,eAAeb,WAAU,GAC1C7X,EAAM0E,aAAa,aAAc1G,GACjCd,KAAKkO,gBAAgB,GAAGzK,YAAYX,GACpC9C,KAAK+U,OAAOtN,KAAK3E,IAGnB6R,cAAe,SAAU7T,GACvB,IAAIgC,EAAQ9C,KAAK+U,OAAOjU,GACxBgC,EAAMgB,MAAM2X,MAAQzb,KAAK2T,WAAa,KAClC3T,KAAK6Q,QAAQmB,YACflP,EAAMgB,MAAMqS,KAAOrV,GAASd,KAAK2T,WAAa,KAC9C3T,KAAK4T,KACH9S,EACAd,KAAKc,MAAQA,GACRd,KAAK2T,WACN3T,KAAKc,MAAQA,EACbd,KAAK2T,WACL,EACJ,KAKNiB,WAAY,SAAU8G,GACpB,IAAIlM,EAAapE,EAmBjB,IAlBKsQ,IACH1b,KAAK0T,UAAY,GACjB1T,KAAK0T,UAAU3R,OAAS/B,KAAK6N,IAC7B7N,KAAKqU,SAAW,GAChBrU,KAAK0a,eAAiBhX,SAAS6D,cAAc,OAC7CvH,KAAK8a,iBAAmBpX,SAAS6D,cAAc,OAC/CvH,KAAKwb,eAAiB9X,SAAS6D,cAAc,OAC7CkC,EAAEzJ,KAAKwb,gBAAgBhH,SAASxU,KAAKU,QAAQgO,YAC7C1O,KAAK+U,OAAS/U,KAAKkO,gBAAgB,GAAGyN,SACtCnM,EACExP,KAAKU,QAAQ8O,aAAexP,KAAK+U,OAAOhT,SAAW/B,KAAK6N,KAE5D7N,KAAK2T,WAAa3T,KAAKuC,UAAU,GAAGqZ,YACpC5b,KAAK6b,YAAc7b,KAAKuC,UAAU,GAAG0W,aACrCjZ,KAAKkO,gBAAgB,GAAGpK,MAAM2X,MAAQzb,KAAK6N,IAAM7N,KAAK2T,WAAa,KAC/DnE,GACFxP,KAAK6U,cAEFzJ,EAAI,EAAGA,EAAIpL,KAAK6N,IAAKzC,GAAK,EACzBoE,GACFxP,KAAK0U,SAAStJ,GAEhBpL,KAAK2U,cAAcvJ,GAGjBpL,KAAKU,QAAQyP,YAAcnQ,KAAK6Q,QAAQmB,YAC1ChS,KAAK4T,KAAK5T,KAAKuT,OAAOvT,KAAKc,MAAQ,IAAKd,KAAK2T,WAAY,GACzD3T,KAAK4T,KAAK5T,KAAKuT,OAAOvT,KAAKc,MAAQ,GAAId,KAAK2T,WAAY,IAErD3T,KAAK6Q,QAAQmB,YAChBhS,KAAKkO,gBAAgB,GAAGpK,MAAMqS,KAC5BnW,KAAKc,OAASd,KAAK2T,WAAa,OAItC4H,YAAa,SAAUza,GACrB,IAAIgC,EAAOoX,EACXpX,EAAQ9C,KAAK+U,OAAOjU,GACpBoZ,EAAapX,EAAMoX,WACA,OAAfA,GACFpX,EAAMoF,YAAYgS,IAItBpF,gBAAiB,WACf,IAAI1J,EAAG0Q,EACP,IAAK1Q,EAAI,EAAG0Q,EAAM9b,KAAK+U,OAAOhT,OAAQqJ,EAAI0Q,EAAK1Q,IAC7CpL,KAAKub,YAAYnQ,IAIrBkO,eAAgB,WACd,IAAIjL,EAAgBrO,KAAKU,QAAQ2N,cAC7BrO,KAAKuC,UAAUqX,SAASvL,GAC1BrO,KAAKuC,UAAUkS,YAAYpG,GAE3BrO,KAAKuC,UAAUiS,SAASnG,IAI5BmL,gBAAiB,WACVxZ,KAAKoU,SAGRpU,KAAKoM,QAFLpM,KAAKuL,QAMTyN,aAAc,SAAU1R,GACtB,OAAOyU,SAASzU,EAAQ0U,aAAa,cAAe,KAGtDC,kBAAmB,SAAUrP,EAAKsP,GAiBhC,OAhBAA,EAAS3P,QAIP,6DACA,SAAU4P,EAAKC,EAAiBC,EAAiBC,EAAYC,GAC3D,IAAIzL,EACFyL,GACAH,GACAC,GACCC,GAAcP,SAASO,EAAY,IAClCH,GAAOvP,IACTA,EAAMA,EAAIkE,OAITlE,GAGT4P,gBAAiB,SAAU5P,EAAKsP,GAC9B,IAAIO,EACA3L,EAWJ,GAVIlE,EAAI8P,SACND,EAAMP,EAAS3P,QAAQ,aAAa,SAAUoQ,EAAGC,GAC/C,OAAOA,EAAEC,iBAEX/L,EAAOlE,EAAI8P,QAAQD,IACV7P,EAAIoP,eACblL,EAAOlE,EAAIoP,aACT,QAAUE,EAAS3P,QAAQ,WAAY,OAAOtG,gBAG9B,kBAAT6K,EAAmB,CAE5B,GACE,4DAA4D/K,KAAK+K,GAEjE,IACE,OAAOrH,EAAEqT,UAAUhM,GACnB,MAAOiM,IAIX,OAAOjM,IAIXjE,gBAAiB,SAAUD,EAAKsP,GAC9B,IAAIpL,EAAO9Q,KAAKwc,gBAAgB5P,EAAKsP,GAOrC,YANala,IAAT8O,IACFA,EAAOlE,EAAIsP,SAEAla,IAAT8O,IACFA,EAAO9Q,KAAKic,kBAAkBrP,EAAKsP,IAE9BpL,GAGT8B,eAAgB,WACd,IAEIxH,EAFAtK,EAAQd,KAAKU,QAAQI,MACrBgM,EAAc9M,KAAKU,QAAQoM,YAG/B,GAAIhM,GAA0B,kBAAVA,EAClB,IAAKsK,EAAI,EAAGA,EAAIpL,KAAK6N,IAAKzC,GAAK,EAC7B,GACEpL,KAAK0N,KAAKtC,KAAOtK,GACjBd,KAAK6M,gBAAgB7M,KAAK0N,KAAKtC,GAAI0B,KACjC9M,KAAK6M,gBAAgB/L,EAAOgM,GAC9B,CACAhM,EAAQsK,EACR,MAKNpL,KAAKc,MAAQd,KAAKuT,OAAOwI,SAASjb,EAAO,KAAO,IAGlDgS,mBAAoB,WAClB,IAAI7H,EAAOjL,KACPkO,EAAkBlO,KAAKkO,gBAM3B,SAASiN,EAAcxK,GACrB,IAAIpQ,EACF0K,EAAK4F,QAAQW,YAAcvG,EAAK4F,QAAQW,WAAWJ,MAAQT,EAAMpQ,KAC7D,gBACAoQ,EAAMpQ,KACZ0K,EAAK,KAAO1K,GAAMoQ,GAEpBlH,EAAExH,QAAQ2I,GAAG,SAAUuQ,GACvB1R,EAAExH,QAAQ2I,GAAG,aAAcuQ,GAC3B1R,EAAE/F,SAASiK,MAAM/C,GAAG,UAAWuQ,GAC/Bnb,KAAKuC,UAAUqI,GAAG,QAASuQ,GACvBnb,KAAK6Q,QAAQE,MACf7C,EAAgBtD,GACd,4CACAuQ,GAEOnb,KAAKU,QAAQqP,oBAAsB/P,KAAK6Q,QAAQW,YACzDtD,EAAgBtD,GACd,uCACAuQ,GAGAnb,KAAK6Q,QAAQW,YACftD,EAAgBtD,GAAG5K,KAAK6Q,QAAQW,WAAWJ,IAAK+J,GAElDnb,KAAKmb,cAAgBA,GAGvBxZ,sBAAuB,WACrB,IAAIuM,EAAkBlO,KAAKkO,gBACvBiN,EAAgBnb,KAAKmb,cACzB1R,EAAExH,QAAQqT,IAAI,SAAU6F,GACxB1R,EAAE/F,SAASiK,MAAM2H,IAAI,UAAW6F,GAChCnb,KAAKuC,UAAU+S,IAAI,QAAS6F,GACxBnb,KAAK6Q,QAAQE,MACf7C,EAAgBoH,IACd,4CACA6F,GAEOnb,KAAKU,QAAQqP,oBAAsB/P,KAAK6Q,QAAQW,YACzDtD,EAAgBoH,IACd,uCACA6F,GAGAnb,KAAK6Q,QAAQW,YACftD,EAAgBoH,IAAItV,KAAK6Q,QAAQW,WAAWJ,IAAK+J,IAIrD6B,WAAY,WACNhd,KAAKU,QAAQgC,UACf1C,KAAKU,QAAQgC,SAASuC,KAAKjF,OAI/B6S,WAAY,WACV,IAAI5H,EAAOjL,KAMX,SAASid,EAAYtM,GACfA,EAAM0E,SAAWpK,EAAK1I,UAAU,KAClC0I,EAAK1I,UAAU+S,IAAIrK,EAAK4F,QAAQW,WAAWJ,IAAK6L,GAChDhS,EAAK+R,cAIT,OADAhd,KAAKuC,UAAYkH,EAAEzJ,KAAKU,QAAQ6B,WAC3BvC,KAAKuC,UAAUR,QAOpB/B,KAAKkO,gBAAkBlO,KAAKuC,UACzBgB,KAAKvD,KAAKU,QAAQwN,iBAClBgP,QACEld,KAAKkO,gBAAgBnM,QAO1B/B,KAAKmO,aAAenO,KAAKuC,UAAUgB,KAAKvD,KAAKU,QAAQyN,cAAc+O,QAClD,IAAbld,KAAK6N,KACP7N,KAAKuC,UAAUiS,SAASxU,KAAKU,QAAQ4N,aAEnCtO,KAAKU,QAAQ+B,QACfzC,KAAKU,QAAQ+B,OAAOwC,KAAKjF,MAEvBA,KAAK6Q,QAAQW,YAAcxR,KAAKU,QAAQ6O,kBAC1CvP,KAAKuC,UAAUqI,GAAG5K,KAAK6Q,QAAQW,WAAWJ,IAAK6L,GAE/Cjd,KAAKgd,aAEHhd,KAAKU,QAAQuP,qBAEfjQ,KAAKmV,kBAAoBzR,SAASiK,KAAK7J,MAAMoR,SAC7CxR,SAASiK,KAAK7J,MAAMoR,SAAW,UAEjClV,KAAKuC,UAAU,GAAGuB,MAAMmR,QAAU,QAClCjV,KAAK4U,kBACL5U,KAAKuC,UAAUiS,SAASxU,KAAKU,QAAQ0N,gBAzBnCpO,KAAKgO,QAAQC,IACX,+CACAjO,KAAKU,QAAQwN,kBAER,KAdPlO,KAAKgO,QAAQC,IACX,+CACAjO,KAAKU,QAAQ6B,YAER,IAkCXuL,YAAa,SAAUpN,GAErBV,KAAKU,QAAU+I,EAAEI,OAAO,GAAI7J,KAAKU,UAG9BA,GAAWA,EAAQE,UACnBZ,KAAKU,QAAQE,YAAcF,IAAgC,IAArBA,EAAQE,YAE/C6I,EAAEI,OAAO7J,KAAKU,QAASV,KAAK4Q,iBAG9BnH,EAAEI,OAAO7J,KAAKU,QAASA,GACnBV,KAAK6N,IAAM,IAGb7N,KAAKU,QAAQyP,aAAanQ,KAAKU,QAAQyP,YAAa,MAEjDnQ,KAAK6Q,QAAQW,aAChBxR,KAAKU,QAAQqP,oBAAqB,GAEhC/P,KAAKU,QAAQiQ,OACf3Q,KAAKsW,eAAetW,KAAKU,QAAQiQ,UAKhCzO,M,qBCp8CT,IAAIib,EAAQ,EAAQ,OAAR,CAAkB,SAC9Brd,EAAOC,QAAU,SAAUqd,GACzB,IAAIC,EAAK,IACT,IACE,MAAMD,GAAKC,GACX,MAAOC,GACP,IAEE,OADAD,EAAGF,IAAS,GACJ,MAAMC,GAAKC,GACnB,MAAOE,KACT,OAAO,I,oCCTX,IAAIpQ,EAAU,EAAQ,QAClBqQ,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QACnBzQ,EAAQ,EAAQ,QAChB0Q,EAAQ,GAAGC,KACX5X,EAAO,CAAC,EAAG,EAAG,GAElBoH,EAAQA,EAAQE,EAAIF,EAAQG,GAAKN,GAAM,WAErCjH,EAAK4X,UAAK3b,QACLgL,GAAM,WAEXjH,EAAK4X,KAAK,WAEL,EAAQ,OAAR,CAA4BD,IAAS,QAAS,CAEnDC,KAAM,SAAcC,GAClB,YAAqB5b,IAAd4b,EACHF,EAAMzY,KAAKwY,EAASzd,OACpB0d,EAAMzY,KAAKwY,EAASzd,MAAOwd,EAAUI,Q,qBCpB7C,WAaC,SAAW/d,GACV,aAGE,EAAO,CAAC,UAAoB,WAAsB,EAAF,EAAS,kEAJ5D,EASE,SAAU4J,EAAGvH,GACd,aAEA,IAAIyH,EAAmBzH,EAAQ0H,UAE/BH,EAAEI,OAAOF,EAAiBjJ,QAAS,CAEjCmd,YAAY,IAGd,IAAI9P,EAAapE,EAAiBoE,WAC9BxM,EAAQoI,EAAiBpI,MAmD7B,OAjDAkI,EAAEI,OAAOF,EAAkB,CACzBmU,qBAAsB,WACpB,OACEpa,SAASqa,mBACTra,SAASsa,yBACTta,SAASua,sBACTva,SAASwa,qBAIbC,kBAAmB,SAAU7W,GACvBA,EAAQ8W,kBACV9W,EAAQ8W,oBACC9W,EAAQ+W,wBACjB/W,EAAQ+W,0BACC/W,EAAQgX,qBACjBhX,EAAQgX,uBACChX,EAAQiX,qBACjBjX,EAAQiX,uBAIZC,eAAgB,WACV9a,SAAS+a,eACX/a,SAAS+a,iBACA/a,SAASgb,uBAClBhb,SAASgb,yBACAhb,SAASib,oBAClBjb,SAASib,sBACAjb,SAASkb,kBAClBlb,SAASkb,oBAIb7Q,WAAY,WACVA,EAAW9I,KAAKjF,MACZA,KAAKU,QAAQmd,aAAe7d,KAAK8d,wBACnC9d,KAAKme,kBAAkBne,KAAKuC,UAAU,KAI1ChB,MAAO,WACDvB,KAAK8d,yBAA2B9d,KAAKuC,UAAU,IACjDvC,KAAKwe,iBAEPjd,EAAM0D,KAAKjF,SAIRkC,M,4CCpFT,WAaC,SAAWrC,GACV,aAGE,EAAO,CAAC,UAAoB,WAA4B,EAAF,EAAS,kEAJlE,EASE,SAAU4J,EAAGvH,GACd,aAEA,IAAKD,OAAOyH,YACV,OAAOxH,EAGT,IAAIyH,EAAmBzH,EAAQ0H,UAE/BH,EAAEI,OAAOF,EAAiBjJ,QAAS,CAEjCme,uBAAwB,UAGxBC,kBAAmB,CACjBC,MAAO,eAGTC,oBAAoB,IAGtB,IAAI9U,EACFP,EAAiBO,aAAeP,EAAiBQ,aAC/C8U,EAAgB,SAAU3U,EAAS4U,EAAY1U,GACjDxK,KAAKsK,QAAUA,EACftK,KAAKkf,WAAaA,EAClBlf,KAAKwK,YAAcA,EACnBxK,KAAKsH,QAAU5D,SAAS6D,cAAc,OACtCvH,KAAKyK,UAAY,IA6KnB,OA1KAhB,EAAEI,OAAOoV,EAAcrV,UAAW,CAChCe,YAAa,WACX,OAAO,GAGTC,GAAI,SAAUrK,EAAMsK,GAElB,OADA7K,KAAKyK,UAAUlK,GAAQsK,EAChB7K,MAGT8K,QAAS,WACP,IAKIC,EALAE,EAAOjL,KACPmf,EAA0Bld,OAAOkd,wBACjCjU,EAAS,+BACTC,EAAazH,SAAS2C,qBAAqB,UAC3C+E,EAAID,EAAWpJ,OAEnBE,OAAOkd,wBAA0B,WAC3BA,GACFA,EAAwB5E,MAAMva,MAE5BiL,EAAKK,aACPL,EAAKM,QAGT,MAAOH,EAEL,GADAA,GAAK,EACDD,EAAWC,GAAGI,MAAQN,EACxB,OAGJH,EAAYrH,SAAS6D,cAAc,UACnCwD,EAAUS,IAAMN,EAChBC,EAAW,GAAGM,WAAWtD,aAAa4C,EAAWI,EAAW,KAG9DQ,QAAS,WACP3L,KAAK4L,OAAQ,EACT5L,KAAKsL,aACPtL,KAAKuL,QAITS,UAAW,WACLhM,KAAKkM,WAAa,IACpBlM,KAAKyK,UAAU0B,UACfnM,KAAKkM,WAAa,IAItBD,QAAS,WACPtC,EAAiB2K,WAAWrP,KAAKjF,KAAMA,KAAKof,UAAW,KAAM,MAG/DA,UAAW,WAEPpf,KAAKqf,cAAgBC,GAAGC,YAAYC,QACpCxf,KAAKqf,cAAgBC,GAAGC,YAAYE,QAGpCzf,KAAKyK,UAAU2B,eACRpM,KAAKkM,aAIhBwT,cAAe,SAAU/O,GACvB,OAAQA,EAAMzP,MACZ,KAAKoe,GAAGC,YAAYI,QAClB3f,KAAK+L,WAAY,EACjB/L,KAAKgM,YACL,MACF,KAAKsT,GAAGC,YAAYC,OACpB,KAAKF,GAAGC,YAAYE,MAClBzf,KAAKiM,UACL,MAGJjM,KAAKqf,YAAc1O,EAAMzP,MAG3B0e,QAAS,SAAUjP,GACjB3Q,KAAKyK,UAAUoV,MAAMlP,IAGvBpF,KAAM,WACJ,IAAIN,EAAOjL,KACNA,KAAKkM,aACRlM,KAAKyK,UAAUc,OACfvL,KAAKkM,WAAa,GAEhBlM,KAAK4L,OAEJ5L,KAAK+L,YACL/L,KAAKwK,aACHvI,OAAO6D,WACN,iBAAiBC,KAAK9D,OAAO6D,UAAU2G,WAM3CzM,KAAKgM,YAELhM,KAAK6L,OAAOiU,aAGd9f,KAAKsL,aAAc,EACbrJ,OAAOqd,IAAMA,GAAGS,OAEV/f,KAAK6L,SACf7L,KAAK6L,OAAS,IAAIyT,GAAGS,OAAO/f,KAAKsH,QAAS,CACxCgD,QAAStK,KAAKsK,QACd4U,WAAYlf,KAAKkf,WACjBc,OAAQ,CACNrU,QAAS,WACPV,EAAKU,WAEP+T,cAAe,SAAU/O,GACvB1F,EAAKyU,cAAc/O,IAErBiP,QAAS,SAAUjP,GACjB1F,EAAK2U,QAAQjP,QAbnB3Q,KAAK8K,YAqBXsB,MAAO,WACDpM,KAAK4L,MACP5L,KAAK6L,OAAOoU,aACHjgB,KAAKkM,oBACPlM,KAAKsL,YACZtL,KAAKyK,UAAU2B,eACRpM,KAAKkM,eAKlBzC,EAAEI,OAAOF,EAAkB,CACzBsV,cAAeA,EAEf/U,YAAa,SAAU0C,EAAKvB,GAC1B,IAAI3K,EAAUV,KAAKU,QACf4J,EAAUtK,KAAK6M,gBAAgBD,EAAKlM,EAAQme,wBAChD,OAAIvU,QACqDtI,IAAnDhC,KAAK6M,gBAAgBD,EAAKlM,EAAQoM,eACpCF,EAAIlM,EAAQoM,aAAe,6BAA+BxC,QAGCtI,IAA3DhC,KAAK6M,gBAAgBD,EAAKlM,EAAQwf,uBAElCtT,EAAIlM,EAAQwf,qBACV,wBAA0B5V,EAAU,sBAEjCtK,KAAK+M,aACVH,EACAvB,EACA,IAAI4T,EACF3U,EACA5J,EAAQoe,kBACRpe,EAAQse,sBAIP9U,EAAYjF,KAAKjF,KAAM4M,EAAKvB,MAIhCnJ,M,qBC9NT,IAAIie,EAAW,EAAQ,QACnBC,EAAU,EAAQ,QAEtBtgB,EAAOC,QAAU,SAAUkL,EAAMuC,EAAc6S,GAC7C,GAAIF,EAAS3S,GAAe,MAAM8S,UAAU,UAAYD,EAAO,0BAC/D,OAAOpf,OAAOmf,EAAQnV,M,qBCNxB,OAeC,WACC,aASA,SAASpB,EAAO0W,EAAMC,GACpB,IAAI1P,EACJ,IAAKA,KAAQ0P,EACP7f,OAAOiJ,UAAU6H,eAAexM,KAAKub,EAAM1P,KAC7CyP,EAAKzP,GAAQ0P,EAAK1P,IAGtB,OAAOyP,EAQT,SAASE,EAAOC,GACd,IAAK1gB,MAAQA,KAAKuD,OAASkd,EAAO7W,UAAUrG,KAG1C,OAAO,IAAIkd,EAAOC,GAGpB,GADA1gB,KAAK+B,OAAS,EACV2e,EAIF,GAHqB,kBAAVA,IACTA,EAAQ1gB,KAAKuD,KAAKmd,IAEhBA,EAAMC,UAAYD,IAAUA,EAAMze,OAEpCjC,KAAK+B,OAAS,EACd/B,KAAK,GAAK0gB,MACL,CAEL,IAAItV,EAAIsV,EAAM3e,OACd/B,KAAK+B,OAASqJ,EACd,MAAOA,EACLA,GAAK,EACLpL,KAAKoL,GAAKsV,EAAMtV,IAMxBqV,EAAO5W,OAASA,EAEhB4W,EAAO9I,SAAW,SAAUpV,EAAW+E,GACrC,GAEE,GADAA,EAAUA,EAAQmE,WACdnE,IAAY/E,EACd,OAAO,QAEF+E,GACT,OAAO,GAGTmZ,EAAO3D,UAAY,SAAU8D,GAC3B,OAAO3e,OAAOmF,MAAQA,KAAKyZ,MAAMD,IAGnC/W,EAAO4W,EAAO7W,UAAW,CACvBrG,KAAM,SAAUmd,GACd,IAAIne,EAAYvC,KAAK,IAAM0D,SAU3B,MATqB,kBAAVgd,IAEPA,EADEne,EAAUue,iBACJve,EAAUue,iBAAiBJ,GACN,MAApBA,EAAMK,OAAO,GACdxe,EAAUye,eAAeN,EAAM7O,MAAM,IAErCtP,EAAU8D,qBAAqBqa,IAGpC,IAAID,EAAOC,IAGpB9G,SAAU,SAAUD,GAClB,QAAK3Z,KAAK,IAGH,IAAIihB,OAAO,WAAatH,EAAY,YAAY5T,KACrD/F,KAAK,GAAG2Z,YAIZnF,SAAU,SAAUmF,GAClB,IACIrS,EADA8D,EAAIpL,KAAK+B,OAEb,MAAOqJ,EAAG,CAGR,GAFAA,GAAK,EACL9D,EAAUtH,KAAKoL,IACV9D,EAAQqS,UAEX,OADArS,EAAQqS,UAAYA,EACb3Z,KAET,GAAIA,KAAK4Z,SAASD,GAChB,OAAO3Z,KAETsH,EAAQqS,WAAa,IAAMA,EAE7B,OAAO3Z,MAGTyU,YAAa,SAAUkF,GACrB,IAEIrS,EAFA4Z,EAAS,IAAID,OAAO,WAAatH,EAAY,YAC7CvO,EAAIpL,KAAK+B,OAEb,MAAOqJ,EACLA,GAAK,EACL9D,EAAUtH,KAAKoL,GACf9D,EAAQqS,UAAYrS,EAAQqS,UAAUpN,QAAQ2U,EAAQ,KAExD,OAAOlhB,MAGT4K,GAAI,SAAUuW,EAAWC,GACvB,IACIhW,EACA9D,EAFA+Z,EAAaF,EAAUnG,MAAM,OAGjC,MAAOqG,EAAWtf,OAAQ,CACxBof,EAAYE,EAAWC,QACvBlW,EAAIpL,KAAK+B,OACT,MAAOqJ,EACLA,GAAK,EACL9D,EAAUtH,KAAKoL,GACX9D,EAAQia,iBACVja,EAAQia,iBAAiBJ,EAAWC,GAAS,GACpC9Z,EAAQka,aACjBla,EAAQka,YAAY,KAAOL,EAAWC,GAI5C,OAAOphB,MAGTsV,IAAK,SAAU6L,EAAWC,GACxB,IACIhW,EACA9D,EAFA+Z,EAAaF,EAAUnG,MAAM,OAGjC,MAAOqG,EAAWtf,OAAQ,CACxBof,EAAYE,EAAWC,QACvBlW,EAAIpL,KAAK+B,OACT,MAAOqJ,EACLA,GAAK,EACL9D,EAAUtH,KAAKoL,GACX9D,EAAQma,oBACVna,EAAQma,oBAAoBN,EAAWC,GAAS,GACvC9Z,EAAQoa,aACjBpa,EAAQoa,YAAY,KAAOP,EAAWC,GAI5C,OAAOphB,MAGTwD,MAAO,WACL,IACI8D,EADA8D,EAAIpL,KAAK+B,OAEb,MAAOqJ,EAAG,CACRA,GAAK,EACL9D,EAAUtH,KAAKoL,GACf,MAAO9D,EAAQqa,gBACbra,EAAQY,YAAYZ,EAAQsa,WAGhC,OAAO5hB,MAGTkd,MAAO,WACL,OAAO,IAAIuD,EAAOzgB,KAAK,OAKzB,aACE,OAAOygB,GACR,yCAvLJ,I,qBCfD,WAaC,SAAW5gB,GACV,aAGE,EAAO,CAAC,UAAoB,WAAsB,EAAF,EAAS,kEAJ5D,EASE,SAAU4J,EAAGvH,GACd,aAEA,IAAIyH,EAAmBzH,EAAQ0H,UAE/BH,EAAEI,OAAOF,EAAiBjJ,QAAS,CAEjCmhB,kBAAmB,gBAEnBC,kBAAmB,gBAEnBC,kBAAmB,gBAEnB7B,oBAAqB,SAErB8B,qBAAsB,YAGxB,IAAIjI,EAAcpQ,EAAiBoQ,YAiInC,OA/HAtQ,EAAEI,OAAOF,EAAkB,CACzBoQ,YAAa,SAAUjZ,GACrBiZ,EAAY9U,KAAKjF,KAAMc,GACnBd,KAAKiiB,cACPjiB,KAAKiiB,aAAa7V,SAItBW,aAAc,SAAUH,EAAKvB,EAAU6W,GACrC,IAiBIC,EAEArb,EACAsb,EACAC,EACAC,EAtBArX,EAAOjL,KACPU,EAAUV,KAAKU,QACf6hB,EAAqBviB,KAAK8a,iBAAiBH,WAAU,GACrD6H,EAAiB/Y,EAAE8Y,GACnBE,EAAY,CACd,CACEliB,KAAM,QACN8U,OAAQkN,IAGRG,EAAQR,GAAkBxe,SAAS6D,cAAc,SACjD8C,EAAMrK,KAAK6M,gBAAgBD,EAAKlM,EAAQoM,aACxCvM,EAAOP,KAAK6M,gBAAgBD,EAAKlM,EAAQyO,cACzCgL,EAAQna,KAAK6M,gBAAgBD,EAAKlM,EAAQ0O,eAC1CoL,EACFxa,KAAK6M,gBAAgBD,EAAK5M,KAAKU,QAAQ2O,kBAAoB8K,EACzDwI,EAAY3iB,KAAK6M,gBAAgBD,EAAKlM,EAAQwf,qBAE9ClZ,EAAUhH,KAAK6M,gBAAgBD,EAAKlM,EAAQshB,sBAShD,GAJAQ,EAAehO,SAAS9T,EAAQmhB,mBAC5B1H,IACFoI,EAAmBpI,MAAQA,GAEzBuI,EAAM/X,YACR,GAAIN,GAAO9J,GAAQmiB,EAAM/X,YAAYpK,GACnCmiB,EAAMlX,IAAMnB,OACP,GAAIrD,EACT,MAAOA,EAAQjF,OAIb,GAHA+E,EAASE,EAAQsa,QACjBjX,EAAMrK,KAAK6M,gBAAgB/F,EAAQpG,EAAQoM,aAC3CvM,EAAOP,KAAK6M,gBAAgB/F,EAAQpG,EAAQyO,cACxC9E,GAAO9J,GAAQmiB,EAAM/X,YAAYpK,GAAO,CAC1CmiB,EAAMlX,IAAMnB,EACZ,MA6ER,OAxEIsY,IACFD,EAAME,OAASD,EACfR,EAAcniB,KAAK0a,eAAeC,WAAU,GAC5ClR,EAAE0Y,GAAa3N,SAAS9T,EAAQoO,aAChCqT,EAAY3W,IAAMmX,EAClBR,EAAYpH,WAAY,EACxBoH,EAAY/H,IAAMI,EAClB+H,EAAmB9e,YAAY0e,IAEjCC,EAAmB1e,SAAS6D,cAAc,KAC1C6a,EAAiB5a,aAAa,SAAU,UACnC0a,GACHE,EAAiB5a,aAAa,WAAY2S,GAE5CiI,EAAiBS,KAAOxY,EACpBqY,EAAMlX,MACRkX,EAAMI,UAAW,GACfZ,GAAkBzY,EAAEiZ,IACnB9X,GAAG,SAAS,WACXK,EAAKqJ,WAAWjJ,EAAUoX,MAE3B7X,GAAG,SAAS,WACP8X,EAAMK,UACVV,GAAY,EACZG,EACG/N,YAAYxJ,EAAKvK,QAAQohB,mBACzBrN,YAAYxJ,EAAKvK,QAAQqhB,mBACxBO,GACFrX,EAAK1I,UAAUiS,SAASvJ,EAAKvK,QAAQ2N,sBAEhCpD,EAAKgX,aACRhX,EAAKmJ,UACPnJ,EAAKM,WAGRX,GAAG,WAAW,WACbyX,GAAY,EACZG,EACG/N,YAAYxJ,EAAKvK,QAAQohB,mBACzBtN,SAASvJ,EAAKvK,QAAQqhB,mBACrB9W,EAAK1I,UAAUqX,SAAS3O,EAAKvK,QAAQ2N,gBACvCiU,GAAc,EACdrX,EAAK1I,UAAUkS,YAAYxJ,EAAKvK,QAAQ2N,gBAExCiU,GAAc,KAGjB1X,GAAG,QAAQ,WACV3I,OAAOiR,aAAajI,EAAKkI,SACzBkP,GAAY,EACZG,EAAehO,SAASvJ,EAAKvK,QAAQohB,mBACrC7W,EAAKgX,aAAeS,KAExBjZ,EAAE2Y,GAAkBxX,GAAG,SAAS,SAAU+F,GACxC1F,EAAKqL,eAAe3F,GAChB0R,EACFK,EAAMtW,QAENsW,EAAMnX,UAGVgX,EAAmB9e,YAChBye,GAAkBA,EAAe5a,SAAYob,IAGlDH,EAAmB9e,YAAY2e,GAC/BpiB,KAAKsU,WAAWjJ,EAAU,CACxB,CACE9K,KAAM,OACN8U,OAAQkN,KAGLA,KAIJrgB","file":"js/chunk-0cf26cbf.755f7a76.js","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('blueimp-gallery/css/blueimp-gallery.min.css'), require('blueimp-gallery/js/blueimp-helper.js'), require('blueimp-gallery/js/blueimp-gallery.js'), require('blueimp-gallery/js/blueimp-gallery-fullscreen.js'), require('blueimp-gallery/js/blueimp-gallery-video.js'), require('blueimp-gallery/js/blueimp-gallery-youtube.js'), require('blueimp-gallery/js/blueimp-gallery-vimeo.js')) :\n typeof define === 'function' && define.amd ? define(['blueimp-gallery/css/blueimp-gallery.min.css', 'blueimp-gallery/js/blueimp-helper.js', 'blueimp-gallery/js/blueimp-gallery.js', 'blueimp-gallery/js/blueimp-gallery-fullscreen.js', 'blueimp-gallery/js/blueimp-gallery-video.js', 'blueimp-gallery/js/blueimp-gallery-youtube.js', 'blueimp-gallery/js/blueimp-gallery-vimeo.js'], factory) :\n (global = global || self, global.VueGallery = factory(null, null, global.blueimp));\n}(this, function (blueimpGallery_min_css, blueimpHelper_js, blueimp) { 'use strict';\n\n //\n var script = {\n props: {\n images: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n options: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n carousel: {\n type: Boolean,\n default: false\n },\n index: {\n type: Number\n },\n id: {\n type: String,\n default: 'blueimp-gallery'\n }\n },\n data: function data() {\n return {\n instance: null\n };\n },\n watch: {\n index: function index(value) {\n if (this.carousel) {\n return;\n }\n\n if (value !== null) {\n this.open(value);\n } else {\n if (this.instance) {\n this.instance.close();\n }\n\n this.$emit('close');\n }\n }\n },\n mounted: function mounted() {\n if (this.carousel) {\n this.open();\n }\n },\n destroyed: function destroyed() {\n if (this.instance !== null) {\n this.instance.destroyEventListeners();\n this.instance.close();\n this.instance = null;\n }\n },\n methods: {\n open: function open() {\n var _this = this;\n\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var instance = typeof window.blueimp !== 'undefined' && typeof window.blueimp.Gallery !== 'undefined' ? window.blueimp.Gallery : blueimp;\n var options = Object.assign({\n toggleControlsOnReturn: false,\n toggleControlsOnSlideClick: false,\n closeOnSlideClick: false,\n carousel: this.carousel,\n container: \"#\".concat(this.id),\n index: index,\n onopen: function onopen() {\n return _this.$emit('onopen');\n },\n onopened: function onopened() {\n return _this.$emit('onopened');\n },\n onslide: this.onSlideCustom,\n onslideend: function onslideend(index, slide) {\n return _this.$emit('onslideend', {\n index: index,\n slide: slide\n });\n },\n onslidecomplete: function onslidecomplete(index, slide) {\n return _this.$emit('onslidecomplete', {\n index: index,\n slide: slide\n });\n },\n onclose: function onclose() {\n return _this.$emit('close');\n },\n onclosed: function onclosed() {\n return _this.$emit('onclosed');\n }\n }, this.options);\n\n if (this.carousel) {\n options.container = this.$el;\n }\n\n this.instance = instance(this.images, options);\n },\n onSlideCustom: function onSlideCustom(index, slide) {\n this.$emit('onslide', {\n index: index,\n slide: slide\n });\n var image = this.images[index];\n\n if (image !== undefined) {\n var text = image.description;\n var node = this.instance.container.find('.description');\n\n if (text) {\n node.empty();\n node[0].appendChild(document.createTextNode(text));\n }\n }\n }\n }\n };\n\n function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n /* server only */\n , shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function () {\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n }\n\n var normalizeComponent_1 = normalizeComponent;\n\n var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\n function createInjector(context) {\n return function (id, style) {\n return addStyle(id, style);\n };\n }\n\n var HEAD = document.head || document.getElementsByTagName('head')[0];\n var styles = {};\n\n function addStyle(id, css) {\n var group = isOldIE ? css.media || 'default' : id;\n var style = styles[group] || (styles[group] = {\n ids: new Set(),\n styles: []\n });\n\n if (!style.ids.has(id)) {\n style.ids.add(id);\n var code = css.source;\n\n if (css.map) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\n\n code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\n }\n\n if (!style.element) {\n style.element = document.createElement('style');\n style.element.type = 'text/css';\n if (css.media) style.element.setAttribute('media', css.media);\n HEAD.appendChild(style.element);\n }\n\n if ('styleSheet' in style.element) {\n style.styles.push(code);\n style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\n } else {\n var index = style.ids.size - 1;\n var textNode = document.createTextNode(code);\n var nodes = style.element.childNodes;\n if (nodes[index]) style.element.removeChild(nodes[index]);\n if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n }\n }\n }\n\n var browser = createInjector;\n\n /* script */\n const __vue_script__ = script;\n\n /* template */\n var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"blueimp-gallery blueimp-gallery-controls\",class:{'blueimp-gallery-carousel': _vm.carousel},attrs:{\"id\":_vm.id}},[_c('div',{staticClass:\"slides\"}),_vm._v(\" \"),_c('h3',{staticClass:\"title\"}),_vm._v(\" \"),_c('p',{staticClass:\"description\"}),_vm._v(\" \"),_c('a',{staticClass:\"prev\"},[_vm._t(\"prev\",[_vm._v(\"‹\")])],2),_vm._v(\" \"),_c('a',{staticClass:\"next\"},[_vm._t(\"next\",[_vm._v(\"›\")])],2),_vm._v(\" \"),(!_vm.carousel)?_c('a',{staticClass:\"close\"},[_vm._t(\"close\",[_vm._v(\"×\")])],2):_vm._e(),_vm._v(\" \"),(!_vm.carousel)?_c('ol',{staticClass:\"indicator\"}):_vm._e(),_vm._v(\" \"),(_vm.carousel)?_c('a',{staticClass:\"play-pause\"}):_vm._e()])};\n var __vue_staticRenderFns__ = [];\n\n /* style */\n const __vue_inject_styles__ = function (inject) {\n if (!inject) return\n inject(\"data-v-1318c6fe_0\", { source: \".blueimp-gallery>.description{position:absolute;top:30px;left:15px;color:#fff;display:none}.blueimp-gallery-controls>.description{display:block}\", map: undefined, media: undefined });\n\n };\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject SSR */\n \n\n \n var VueGallery = normalizeComponent_1(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n browser,\n undefined\n );\n\n return VueGallery;\n\n}));\n","/*\n * blueimp Gallery Vimeo Video Factory JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, $f */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper', './blueimp-gallery-video'], factory)\n } else {\n // Browser globals:\n factory(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)\n }\n})(function ($, Gallery) {\n 'use strict'\n\n if (!window.postMessage) {\n return Gallery\n }\n\n var galleryPrototype = Gallery.prototype\n\n $.extend(galleryPrototype.options, {\n // The list object property (or data attribute) with the Vimeo video id:\n vimeoVideoIdProperty: 'vimeo',\n // The URL for the Vimeo video player, can be extended with custom parameters:\n // https://developer.vimeo.com/player/embedding\n vimeoPlayerUrl:\n '//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID',\n // The prefix for the Vimeo video player ID:\n vimeoPlayerIdPrefix: 'vimeo-player-',\n // Require a click on the native Vimeo player for the initial playback:\n vimeoClickToPlay: true\n })\n\n var textFactory =\n galleryPrototype.textFactory || galleryPrototype.imageFactory\n var VimeoPlayer = function (url, videoId, playerId, clickToPlay) {\n this.url = url\n this.videoId = videoId\n this.playerId = playerId\n this.clickToPlay = clickToPlay\n this.element = document.createElement('div')\n this.listeners = {}\n }\n var counter = 0\n\n $.extend(VimeoPlayer.prototype, {\n canPlayType: function () {\n return true\n },\n\n on: function (type, func) {\n this.listeners[type] = func\n return this\n },\n\n loadAPI: function () {\n var that = this\n var apiUrl = '//f.vimeocdn.com/js/froogaloop2.min.js'\n var scriptTags = document.getElementsByTagName('script')\n var i = scriptTags.length\n var scriptTag\n var called\n /**\n * Callback function\n */\n function callback() {\n if (!called && that.playOnReady) {\n that.play()\n }\n called = true\n }\n while (i) {\n i -= 1\n if (scriptTags[i].src === apiUrl) {\n scriptTag = scriptTags[i]\n break\n }\n }\n if (!scriptTag) {\n scriptTag = document.createElement('script')\n scriptTag.src = apiUrl\n }\n $(scriptTag).on('load', callback)\n scriptTags[0].parentNode.insertBefore(scriptTag, scriptTags[0])\n // Fix for cached scripts on IE 8:\n if (/loaded|complete/.test(scriptTag.readyState)) {\n callback()\n }\n },\n\n onReady: function () {\n var that = this\n this.ready = true\n this.player.addEvent('play', function () {\n that.hasPlayed = true\n that.onPlaying()\n })\n this.player.addEvent('pause', function () {\n that.onPause()\n })\n this.player.addEvent('finish', function () {\n that.onPause()\n })\n if (this.playOnReady) {\n this.play()\n }\n },\n\n onPlaying: function () {\n if (this.playStatus < 2) {\n this.listeners.playing()\n this.playStatus = 2\n }\n },\n\n onPause: function () {\n this.listeners.pause()\n delete this.playStatus\n },\n\n insertIframe: function () {\n var iframe = document.createElement('iframe')\n iframe.src = this.url\n .replace('VIDEO_ID', this.videoId)\n .replace('PLAYER_ID', this.playerId)\n iframe.id = this.playerId\n this.element.parentNode.replaceChild(iframe, this.element)\n this.element = iframe\n },\n\n play: function () {\n var that = this\n if (!this.playStatus) {\n this.listeners.play()\n this.playStatus = 1\n }\n if (this.ready) {\n if (\n !this.hasPlayed &&\n (this.clickToPlay ||\n (window.navigator &&\n /iP(hone|od|ad)/.test(window.navigator.platform)))\n ) {\n // Manually trigger the playing callback if clickToPlay\n // is enabled and to workaround a limitation in iOS,\n // which requires synchronous user interaction to start\n // the video playback:\n this.onPlaying()\n } else {\n this.player.api('play')\n }\n } else {\n this.playOnReady = true\n if (!window.$f) {\n this.loadAPI()\n } else if (!this.player) {\n this.insertIframe()\n this.player = $f(this.element)\n this.player.addEvent('ready', function () {\n that.onReady()\n })\n }\n }\n },\n\n pause: function () {\n if (this.ready) {\n this.player.api('pause')\n } else if (this.playStatus) {\n delete this.playOnReady\n this.listeners.pause()\n delete this.playStatus\n }\n }\n })\n\n $.extend(galleryPrototype, {\n VimeoPlayer: VimeoPlayer,\n\n textFactory: function (obj, callback) {\n var options = this.options\n var videoId = this.getItemProperty(obj, options.vimeoVideoIdProperty)\n if (videoId) {\n if (this.getItemProperty(obj, options.urlProperty) === undefined) {\n obj[options.urlProperty] = '//vimeo.com/' + videoId\n }\n counter += 1\n return this.videoFactory(\n obj,\n callback,\n new VimeoPlayer(\n options.vimeoPlayerUrl,\n videoId,\n options.vimeoPlayerIdPrefix + counter,\n options.vimeoClickToPlay\n )\n )\n }\n return textFactory.call(this, obj, callback)\n }\n })\n\n return Gallery\n})\n","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\n};\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","/*\n * blueimp Gallery JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Swipe implementation based on\n * https://github.com/bradbirdsall/Swipe\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, DocumentTouch */\n\n/* eslint-disable no-param-reassign */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper'], factory)\n } else {\n // Browser globals:\n window.blueimp = window.blueimp || {}\n window.blueimp.Gallery = factory(window.blueimp.helper || window.jQuery)\n }\n})(function ($) {\n 'use strict'\n\n /**\n * Gallery constructor\n *\n * @class\n * @param {Array|NodeList} list Gallery content\n * @param {object} [options] Gallery options\n * @returns {object} Gallery object\n */\n function Gallery(list, options) {\n if (document.body.style.maxHeight === undefined) {\n // document.body.style.maxHeight is undefined on IE6 and lower\n return null\n }\n if (!this || this.options !== Gallery.prototype.options) {\n // Called as function instead of as constructor,\n // so we simply return a new instance:\n return new Gallery(list, options)\n }\n if (!list || !list.length) {\n this.console.log(\n 'blueimp Gallery: No or empty list provided as first argument.',\n list\n )\n return\n }\n this.list = list\n this.num = list.length\n this.initOptions(options)\n this.initialize()\n }\n\n $.extend(Gallery.prototype, {\n options: {\n // The Id, element or querySelector of the gallery widget:\n container: '#blueimp-gallery',\n // The tag name, Id, element or querySelector of the slides container:\n slidesContainer: 'div',\n // The tag name, Id, element or querySelector of the title element:\n titleElement: 'h3',\n // The class to add when the gallery is visible:\n displayClass: 'blueimp-gallery-display',\n // The class to add when the gallery controls are visible:\n controlsClass: 'blueimp-gallery-controls',\n // The class to add when the gallery only displays one element:\n singleClass: 'blueimp-gallery-single',\n // The class to add when the left edge has been reached:\n leftEdgeClass: 'blueimp-gallery-left',\n // The class to add when the right edge has been reached:\n rightEdgeClass: 'blueimp-gallery-right',\n // The class to add when the automatic slideshow is active:\n playingClass: 'blueimp-gallery-playing',\n // The class for all slides:\n slideClass: 'slide',\n // The slide class for loading elements:\n slideLoadingClass: 'slide-loading',\n // The slide class for elements that failed to load:\n slideErrorClass: 'slide-error',\n // The class for the content element loaded into each slide:\n slideContentClass: 'slide-content',\n // The class for the \"toggle\" control:\n toggleClass: 'toggle',\n // The class for the \"prev\" control:\n prevClass: 'prev',\n // The class for the \"next\" control:\n nextClass: 'next',\n // The class for the \"close\" control:\n closeClass: 'close',\n // The class for the \"play-pause\" toggle control:\n playPauseClass: 'play-pause',\n // The list object property (or data attribute) with the object type:\n typeProperty: 'type',\n // The list object property (or data attribute) with the object title:\n titleProperty: 'title',\n // The list object property (or data attribute) with the object alt text:\n altTextProperty: 'alt',\n // The list object property (or data attribute) with the object URL:\n urlProperty: 'href',\n // The list object property (or data attribute) with the object srcset URL(s):\n srcsetProperty: 'urlset',\n // The gallery listens for transitionend events before triggering the\n // opened and closed events, unless the following option is set to false:\n displayTransition: true,\n // Defines if the gallery slides are cleared from the gallery modal,\n // or reused for the next gallery initialization:\n clearSlides: true,\n // Defines if images should be stretched to fill the available space,\n // while maintaining their aspect ratio (will only be enabled for browsers\n // supporting background-size=\"contain\", which excludes IE < 9).\n // Set to \"cover\", to make images cover all available space (requires\n // support for background-size=\"cover\", which excludes IE < 9):\n stretchImages: false,\n // Toggle the controls on pressing the Return key:\n toggleControlsOnReturn: true,\n // Toggle the controls on slide click:\n toggleControlsOnSlideClick: true,\n // Toggle the automatic slideshow interval on pressing the Space key:\n toggleSlideshowOnSpace: true,\n // Navigate the gallery by pressing left and right on the keyboard:\n enableKeyboardNavigation: true,\n // Close the gallery on pressing the Esc key:\n closeOnEscape: true,\n // Close the gallery when clicking on an empty slide area:\n closeOnSlideClick: true,\n // Close the gallery by swiping up or down:\n closeOnSwipeUpOrDown: true,\n // Close the gallery when URL changes:\n closeOnHashChange: true,\n // Emulate touch events on mouse-pointer devices such as desktop browsers:\n emulateTouchEvents: true,\n // Stop touch events from bubbling up to ancestor elements of the Gallery:\n stopTouchEventsPropagation: false,\n // Hide the page scrollbars:\n hidePageScrollbars: true,\n // Stops any touches on the container from scrolling the page:\n disableScroll: true,\n // Carousel mode (shortcut for carousel specific options):\n carousel: false,\n // Allow continuous navigation, moving from last to first\n // and from first to last slide:\n continuous: true,\n // Remove elements outside of the preload range from the DOM:\n unloadElements: true,\n // Start with the automatic slideshow:\n startSlideshow: false,\n // Delay in milliseconds between slides for the automatic slideshow:\n slideshowInterval: 5000,\n // The direction the slides are moving: ltr=LeftToRight or rtl=RightToLeft\n slideshowDirection: 'ltr',\n // The starting index as integer.\n // Can also be an object of the given list,\n // or an equal object with the same url property:\n index: 0,\n // The number of elements to load around the current index:\n preloadRange: 2,\n // The transition duration between slide changes in milliseconds:\n transitionDuration: 300,\n // The transition duration for automatic slide changes, set to an integer\n // greater 0 to override the default transition duration:\n slideshowTransitionDuration: 500,\n // The event object for which the default action will be canceled\n // on Gallery initialization (e.g. the click event to open the Gallery):\n event: undefined,\n // Callback function executed when the Gallery is initialized.\n // Is called with the gallery instance as \"this\" object:\n onopen: undefined,\n // Callback function executed when the Gallery has been initialized\n // and the initialization transition has been completed.\n // Is called with the gallery instance as \"this\" object:\n onopened: undefined,\n // Callback function executed on slide change.\n // Is called with the gallery instance as \"this\" object and the\n // current index and slide as arguments:\n onslide: undefined,\n // Callback function executed after the slide change transition.\n // Is called with the gallery instance as \"this\" object and the\n // current index and slide as arguments:\n onslideend: undefined,\n // Callback function executed on slide content load.\n // Is called with the gallery instance as \"this\" object and the\n // slide index and slide element as arguments:\n onslidecomplete: undefined,\n // Callback function executed when the Gallery is about to be closed.\n // Is called with the gallery instance as \"this\" object:\n onclose: undefined,\n // Callback function executed when the Gallery has been closed\n // and the closing transition has been completed.\n // Is called with the gallery instance as \"this\" object:\n onclosed: undefined\n },\n\n carouselOptions: {\n hidePageScrollbars: false,\n toggleControlsOnReturn: false,\n toggleSlideshowOnSpace: false,\n enableKeyboardNavigation: false,\n closeOnEscape: false,\n closeOnSlideClick: false,\n closeOnSwipeUpOrDown: false,\n disableScroll: false,\n startSlideshow: true\n },\n\n console:\n window.console && typeof window.console.log === 'function'\n ? window.console\n : { log: function () {} },\n\n // Detect touch, transition, transform and background-size support:\n support: (function (element) {\n var support = {\n touch:\n window.ontouchstart !== undefined ||\n (window.DocumentTouch && document instanceof DocumentTouch)\n }\n var transitions = {\n webkitTransition: {\n end: 'webkitTransitionEnd',\n prefix: '-webkit-'\n },\n MozTransition: {\n end: 'transitionend',\n prefix: '-moz-'\n },\n OTransition: {\n end: 'otransitionend',\n prefix: '-o-'\n },\n transition: {\n end: 'transitionend',\n prefix: ''\n }\n }\n var prop\n for (prop in transitions) {\n if (\n Object.prototype.hasOwnProperty.call(transitions, prop) &&\n element.style[prop] !== undefined\n ) {\n support.transition = transitions[prop]\n support.transition.name = prop\n break\n }\n }\n /**\n * Tests browser support\n */\n function elementTests() {\n var transition = support.transition\n var prop\n var translateZ\n document.body.appendChild(element)\n if (transition) {\n prop = transition.name.slice(0, -9) + 'ransform'\n if (element.style[prop] !== undefined) {\n element.style[prop] = 'translateZ(0)'\n translateZ = window\n .getComputedStyle(element)\n .getPropertyValue(transition.prefix + 'transform')\n support.transform = {\n prefix: transition.prefix,\n name: prop,\n translate: true,\n translateZ: !!translateZ && translateZ !== 'none'\n }\n }\n }\n if (element.style.backgroundSize !== undefined) {\n support.backgroundSize = {}\n element.style.backgroundSize = 'contain'\n support.backgroundSize.contain =\n window\n .getComputedStyle(element)\n .getPropertyValue('background-size') === 'contain'\n element.style.backgroundSize = 'cover'\n support.backgroundSize.cover =\n window\n .getComputedStyle(element)\n .getPropertyValue('background-size') === 'cover'\n }\n document.body.removeChild(element)\n }\n if (document.body) {\n elementTests()\n } else {\n $(document).on('DOMContentLoaded', elementTests)\n }\n return support\n // Test element, has to be standard HTML and must not be hidden\n // for the CSS3 tests using window.getComputedStyle to be applicable:\n })(document.createElement('div')),\n\n requestAnimationFrame:\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame,\n\n cancelAnimationFrame:\n window.cancelAnimationFrame ||\n window.webkitCancelRequestAnimationFrame ||\n window.webkitCancelAnimationFrame ||\n window.mozCancelAnimationFrame,\n\n initialize: function () {\n this.initStartIndex()\n if (this.initWidget() === false) {\n return false\n }\n this.initEventListeners()\n // Load the slide at the given index:\n this.onslide(this.index)\n // Manually trigger the slideend event for the initial slide:\n this.ontransitionend()\n // Start the automatic slideshow if applicable:\n if (this.options.startSlideshow) {\n this.play()\n }\n },\n\n slide: function (to, duration) {\n window.clearTimeout(this.timeout)\n var index = this.index\n var direction\n var naturalDirection\n var diff\n if (index === to || this.num === 1) {\n return\n }\n if (!duration) {\n duration = this.options.transitionDuration\n }\n if (this.support.transform) {\n if (!this.options.continuous) {\n to = this.circle(to)\n }\n // 1: backward, -1: forward:\n direction = Math.abs(index - to) / (index - to)\n // Get the actual position of the slide:\n if (this.options.continuous) {\n naturalDirection = direction\n direction = -this.positions[this.circle(to)] / this.slideWidth\n // If going forward but to < index, use to = slides.length + to\n // If going backward but to > index, use to = -slides.length + to\n if (direction !== naturalDirection) {\n to = -direction * this.num + to\n }\n }\n diff = Math.abs(index - to) - 1\n // Move all the slides between index and to in the right direction:\n while (diff) {\n diff -= 1\n this.move(\n this.circle((to > index ? to : index) - diff - 1),\n this.slideWidth * direction,\n 0\n )\n }\n to = this.circle(to)\n this.move(index, this.slideWidth * direction, duration)\n this.move(to, 0, duration)\n if (this.options.continuous) {\n this.move(\n this.circle(to - direction),\n -(this.slideWidth * direction),\n 0\n )\n }\n } else {\n to = this.circle(to)\n this.animate(index * -this.slideWidth, to * -this.slideWidth, duration)\n }\n this.onslide(to)\n },\n\n getIndex: function () {\n return this.index\n },\n\n getNumber: function () {\n return this.num\n },\n\n prev: function () {\n if (this.options.continuous || this.index) {\n this.slide(this.index - 1)\n }\n },\n\n next: function () {\n if (this.options.continuous || this.index < this.num - 1) {\n this.slide(this.index + 1)\n }\n },\n\n play: function (time) {\n var that = this\n var nextIndex =\n this.index + (this.options.slideshowDirection === 'rtl' ? -1 : 1)\n window.clearTimeout(this.timeout)\n this.interval = time || this.options.slideshowInterval\n if (this.elements[this.index] > 1) {\n this.timeout = this.setTimeout(\n (!this.requestAnimationFrame && this.slide) ||\n function (to, duration) {\n that.animationFrameId = that.requestAnimationFrame.call(\n window,\n function () {\n that.slide(to, duration)\n }\n )\n },\n [nextIndex, this.options.slideshowTransitionDuration],\n this.interval\n )\n }\n this.container.addClass(this.options.playingClass)\n },\n\n pause: function () {\n window.clearTimeout(this.timeout)\n this.interval = null\n if (this.cancelAnimationFrame) {\n this.cancelAnimationFrame.call(window, this.animationFrameId)\n this.animationFrameId = null\n }\n this.container.removeClass(this.options.playingClass)\n },\n\n add: function (list) {\n var i\n if (!list.concat) {\n // Make a real array out of the list to add:\n list = Array.prototype.slice.call(list)\n }\n if (!this.list.concat) {\n // Make a real array out of the Gallery list:\n this.list = Array.prototype.slice.call(this.list)\n }\n this.list = this.list.concat(list)\n this.num = this.list.length\n if (this.num > 2 && this.options.continuous === null) {\n this.options.continuous = true\n this.container.removeClass(this.options.leftEdgeClass)\n }\n this.container\n .removeClass(this.options.rightEdgeClass)\n .removeClass(this.options.singleClass)\n for (i = this.num - list.length; i < this.num; i += 1) {\n this.addSlide(i)\n this.positionSlide(i)\n }\n this.positions.length = this.num\n this.initSlides(true)\n },\n\n resetSlides: function () {\n this.slidesContainer.empty()\n this.unloadAllSlides()\n this.slides = []\n },\n\n handleClose: function () {\n var options = this.options\n this.destroyEventListeners()\n // Cancel the slideshow:\n this.pause()\n this.container[0].style.display = 'none'\n this.container\n .removeClass(options.displayClass)\n .removeClass(options.singleClass)\n .removeClass(options.leftEdgeClass)\n .removeClass(options.rightEdgeClass)\n if (options.hidePageScrollbars) {\n document.body.style.overflow = this.bodyOverflowStyle\n }\n if (this.options.clearSlides) {\n this.resetSlides()\n }\n if (this.options.onclosed) {\n this.options.onclosed.call(this)\n }\n },\n\n close: function () {\n var that = this\n /**\n * Close handler\n *\n * @param {event} event Close event\n */\n function closeHandler(event) {\n if (event.target === that.container[0]) {\n that.container.off(that.support.transition.end, closeHandler)\n that.handleClose()\n }\n }\n if (this.options.onclose) {\n this.options.onclose.call(this)\n }\n if (this.support.transition && this.options.displayTransition) {\n this.container.on(this.support.transition.end, closeHandler)\n this.container.removeClass(this.options.displayClass)\n } else {\n this.handleClose()\n }\n },\n\n circle: function (index) {\n // Always return a number inside of the slides index range:\n return (this.num + (index % this.num)) % this.num\n },\n\n move: function (index, dist, duration) {\n this.translateX(index, dist, duration)\n this.positions[index] = dist\n },\n\n translate: function (index, x, y, duration) {\n if (!this.slides[index]) return\n var style = this.slides[index].style\n var transition = this.support.transition\n var transform = this.support.transform\n style[transition.name + 'Duration'] = duration + 'ms'\n style[transform.name] =\n 'translate(' +\n x +\n 'px, ' +\n y +\n 'px)' +\n (transform.translateZ ? ' translateZ(0)' : '')\n },\n\n translateX: function (index, x, duration) {\n this.translate(index, x, 0, duration)\n },\n\n translateY: function (index, y, duration) {\n this.translate(index, 0, y, duration)\n },\n\n animate: function (from, to, duration) {\n if (!duration) {\n this.slidesContainer[0].style.left = to + 'px'\n return\n }\n var that = this\n var start = new Date().getTime()\n var timer = window.setInterval(function () {\n var timeElap = new Date().getTime() - start\n if (timeElap > duration) {\n that.slidesContainer[0].style.left = to + 'px'\n that.ontransitionend()\n window.clearInterval(timer)\n return\n }\n that.slidesContainer[0].style.left =\n (to - from) * (Math.floor((timeElap / duration) * 100) / 100) +\n from +\n 'px'\n }, 4)\n },\n\n preventDefault: function (event) {\n if (event.preventDefault) {\n event.preventDefault()\n } else {\n event.returnValue = false\n }\n },\n\n stopPropagation: function (event) {\n if (event.stopPropagation) {\n event.stopPropagation()\n } else {\n event.cancelBubble = true\n }\n },\n\n onresize: function () {\n this.initSlides(true)\n },\n\n onhashchange: function () {\n if (this.options.closeOnHashChange) {\n this.close()\n }\n },\n\n onmousedown: function (event) {\n // Trigger on clicks of the left mouse button only\n // and exclude video & audio elements:\n if (\n event.which &&\n event.which === 1 &&\n event.target.nodeName !== 'VIDEO' &&\n event.target.nodeName !== 'AUDIO'\n ) {\n // Preventing the default mousedown action is required\n // to make touch emulation work with Firefox:\n event.preventDefault()\n ;(event.originalEvent || event).touches = [\n {\n pageX: event.pageX,\n pageY: event.pageY\n }\n ]\n this.ontouchstart(event)\n }\n },\n\n onmousemove: function (event) {\n if (this.touchStart) {\n ;(event.originalEvent || event).touches = [\n {\n pageX: event.pageX,\n pageY: event.pageY\n }\n ]\n this.ontouchmove(event)\n }\n },\n\n onmouseup: function (event) {\n if (this.touchStart) {\n this.ontouchend(event)\n delete this.touchStart\n }\n },\n\n onmouseout: function (event) {\n if (this.touchStart) {\n var target = event.target\n var related = event.relatedTarget\n if (!related || (related !== target && !$.contains(target, related))) {\n this.onmouseup(event)\n }\n }\n },\n\n ontouchstart: function (event) {\n if (this.options.stopTouchEventsPropagation) {\n this.stopPropagation(event)\n }\n // jQuery doesn't copy touch event properties by default,\n // so we have to access the originalEvent object:\n var touch = (event.originalEvent || event).touches[0]\n this.touchStart = {\n // Remember the initial touch coordinates:\n x: touch.pageX,\n y: touch.pageY,\n // Store the time to determine touch duration:\n time: Date.now()\n }\n // Helper variable to detect scroll movement:\n this.isScrolling = undefined\n // Reset delta values:\n this.touchDelta = {}\n },\n\n ontouchmove: function (event) {\n if (this.options.stopTouchEventsPropagation) {\n this.stopPropagation(event)\n }\n // jQuery doesn't copy touch event properties by default,\n // so we have to access the originalEvent object:\n var touches = (event.originalEvent || event).touches\n var touch = touches[0]\n var scale = (event.originalEvent || event).scale\n var index = this.index\n var touchDeltaX\n var indices\n // Ensure this is a one touch swipe and not, e.g. a pinch:\n if (touches.length > 1 || (scale && scale !== 1)) {\n return\n }\n if (this.options.disableScroll) {\n event.preventDefault()\n }\n // Measure change in x and y coordinates:\n this.touchDelta = {\n x: touch.pageX - this.touchStart.x,\n y: touch.pageY - this.touchStart.y\n }\n touchDeltaX = this.touchDelta.x\n // Detect if this is a vertical scroll movement (run only once per touch):\n if (this.isScrolling === undefined) {\n this.isScrolling =\n this.isScrolling ||\n Math.abs(touchDeltaX) < Math.abs(this.touchDelta.y)\n }\n if (!this.isScrolling) {\n // Always prevent horizontal scroll:\n event.preventDefault()\n // Stop the slideshow:\n window.clearTimeout(this.timeout)\n if (this.options.continuous) {\n indices = [this.circle(index + 1), index, this.circle(index - 1)]\n } else {\n // Increase resistance if first slide and sliding left\n // or last slide and sliding right:\n this.touchDelta.x = touchDeltaX =\n touchDeltaX /\n ((!index && touchDeltaX > 0) ||\n (index === this.num - 1 && touchDeltaX < 0)\n ? Math.abs(touchDeltaX) / this.slideWidth + 1\n : 1)\n indices = [index]\n if (index) {\n indices.push(index - 1)\n }\n if (index < this.num - 1) {\n indices.unshift(index + 1)\n }\n }\n while (indices.length) {\n index = indices.pop()\n this.translateX(index, touchDeltaX + this.positions[index], 0)\n }\n } else if (!this.options.carousel) {\n this.translateY(index, this.touchDelta.y + this.positions[index], 0)\n }\n },\n\n ontouchend: function (event) {\n if (this.options.stopTouchEventsPropagation) {\n this.stopPropagation(event)\n }\n var index = this.index\n var absTouchDeltaX = Math.abs(this.touchDelta.x)\n var slideWidth = this.slideWidth\n var duration = Math.ceil(\n (this.options.transitionDuration * (1 - absTouchDeltaX / slideWidth)) /\n 2\n )\n // Determine if slide attempt triggers next/prev slide:\n var isValidSlide = absTouchDeltaX > 20\n // Determine if slide attempt is past start or end:\n var isPastBounds =\n (!index && this.touchDelta.x > 0) ||\n (index === this.num - 1 && this.touchDelta.x < 0)\n var isValidClose =\n !isValidSlide &&\n this.options.closeOnSwipeUpOrDown &&\n Math.abs(this.touchDelta.y) > 20\n var direction\n var indexForward\n var indexBackward\n var distanceForward\n var distanceBackward\n if (this.options.continuous) {\n isPastBounds = false\n }\n // Determine direction of swipe (true: right, false: left):\n direction = this.touchDelta.x < 0 ? -1 : 1\n if (!this.isScrolling) {\n if (isValidSlide && !isPastBounds) {\n indexForward = index + direction\n indexBackward = index - direction\n distanceForward = slideWidth * direction\n distanceBackward = -slideWidth * direction\n if (this.options.continuous) {\n this.move(this.circle(indexForward), distanceForward, 0)\n this.move(this.circle(index - 2 * direction), distanceBackward, 0)\n } else if (indexForward >= 0 && indexForward < this.num) {\n this.move(indexForward, distanceForward, 0)\n }\n this.move(index, this.positions[index] + distanceForward, duration)\n this.move(\n this.circle(indexBackward),\n this.positions[this.circle(indexBackward)] + distanceForward,\n duration\n )\n index = this.circle(indexBackward)\n this.onslide(index)\n } else {\n // Move back into position\n if (this.options.continuous) {\n this.move(this.circle(index - 1), -slideWidth, duration)\n this.move(index, 0, duration)\n this.move(this.circle(index + 1), slideWidth, duration)\n } else {\n if (index) {\n this.move(index - 1, -slideWidth, duration)\n }\n this.move(index, 0, duration)\n if (index < this.num - 1) {\n this.move(index + 1, slideWidth, duration)\n }\n }\n }\n } else {\n if (isValidClose) {\n this.close()\n } else {\n // Move back into position\n this.translateY(index, 0, duration)\n }\n }\n },\n\n ontouchcancel: function (event) {\n if (this.touchStart) {\n this.ontouchend(event)\n delete this.touchStart\n }\n },\n\n ontransitionend: function (event) {\n var slide = this.slides[this.index]\n if (!event || slide === event.target) {\n if (this.interval) {\n this.play()\n }\n this.setTimeout(this.options.onslideend, [this.index, slide])\n }\n },\n\n oncomplete: function (event) {\n var target = event.target || event.srcElement\n var parent = target && target.parentNode\n var index\n if (!target || !parent) {\n return\n }\n index = this.getNodeIndex(parent)\n $(parent).removeClass(this.options.slideLoadingClass)\n if (event.type === 'error') {\n $(parent).addClass(this.options.slideErrorClass)\n this.elements[index] = 3 // Fail\n } else {\n this.elements[index] = 2 // Done\n }\n // Fix for IE7's lack of support for percentage max-height:\n if (target.clientHeight > this.container[0].clientHeight) {\n target.style.maxHeight = this.container[0].clientHeight\n }\n if (this.interval && this.slides[this.index] === parent) {\n this.play()\n }\n this.setTimeout(this.options.onslidecomplete, [index, parent])\n },\n\n onload: function (event) {\n this.oncomplete(event)\n },\n\n onerror: function (event) {\n this.oncomplete(event)\n },\n\n onkeydown: function (event) {\n switch (event.which || event.keyCode) {\n case 13: // Return\n if (this.options.toggleControlsOnReturn) {\n this.preventDefault(event)\n this.toggleControls()\n }\n break\n case 27: // Esc\n if (this.options.closeOnEscape) {\n this.close()\n // prevent Esc from closing other things\n event.stopImmediatePropagation()\n }\n break\n case 32: // Space\n if (this.options.toggleSlideshowOnSpace) {\n this.preventDefault(event)\n this.toggleSlideshow()\n }\n break\n case 37: // Left\n if (this.options.enableKeyboardNavigation) {\n this.preventDefault(event)\n this.prev()\n }\n break\n case 39: // Right\n if (this.options.enableKeyboardNavigation) {\n this.preventDefault(event)\n this.next()\n }\n break\n }\n },\n\n handleClick: function (event) {\n var options = this.options\n var target = event.target || event.srcElement\n var parent = target.parentNode\n /**\n * Checks if the target from the close has the given class\n *\n * @param {string} className Class name\n * @returns {boolean} Returns true if the target has the class name\n */\n function isTarget(className) {\n return $(target).hasClass(className) || $(parent).hasClass(className)\n }\n if (isTarget(options.toggleClass)) {\n // Click on \"toggle\" control\n this.preventDefault(event)\n this.toggleControls()\n } else if (isTarget(options.prevClass)) {\n // Click on \"prev\" control\n this.preventDefault(event)\n this.prev()\n } else if (isTarget(options.nextClass)) {\n // Click on \"next\" control\n this.preventDefault(event)\n this.next()\n } else if (isTarget(options.closeClass)) {\n // Click on \"close\" control\n this.preventDefault(event)\n this.close()\n } else if (isTarget(options.playPauseClass)) {\n // Click on \"play-pause\" control\n this.preventDefault(event)\n this.toggleSlideshow()\n } else if (parent === this.slidesContainer[0]) {\n // Click on slide background\n if (options.closeOnSlideClick) {\n this.preventDefault(event)\n this.close()\n } else if (options.toggleControlsOnSlideClick) {\n this.preventDefault(event)\n this.toggleControls()\n }\n } else if (\n parent.parentNode &&\n parent.parentNode === this.slidesContainer[0]\n ) {\n // Click on displayed element\n if (options.toggleControlsOnSlideClick) {\n this.preventDefault(event)\n this.toggleControls()\n }\n }\n },\n\n onclick: function (event) {\n if (\n this.options.emulateTouchEvents &&\n this.touchDelta &&\n (Math.abs(this.touchDelta.x) > 20 || Math.abs(this.touchDelta.y) > 20)\n ) {\n delete this.touchDelta\n return\n }\n return this.handleClick(event)\n },\n\n updateEdgeClasses: function (index) {\n if (!index) {\n this.container.addClass(this.options.leftEdgeClass)\n } else {\n this.container.removeClass(this.options.leftEdgeClass)\n }\n if (index === this.num - 1) {\n this.container.addClass(this.options.rightEdgeClass)\n } else {\n this.container.removeClass(this.options.rightEdgeClass)\n }\n },\n\n handleSlide: function (index) {\n if (!this.options.continuous) {\n this.updateEdgeClasses(index)\n }\n this.loadElements(index)\n if (this.options.unloadElements) {\n this.unloadElements(index)\n }\n this.setTitle(index)\n },\n\n onslide: function (index) {\n this.index = index\n this.handleSlide(index)\n this.setTimeout(this.options.onslide, [index, this.slides[index]])\n },\n\n setTitle: function (index) {\n var firstChild = this.slides[index].firstChild\n var text = firstChild.title || firstChild.alt\n var titleElement = this.titleElement\n if (titleElement.length) {\n this.titleElement.empty()\n if (text) {\n titleElement[0].appendChild(document.createTextNode(text))\n }\n }\n },\n\n setTimeout: function (func, args, wait) {\n var that = this\n return (\n func &&\n window.setTimeout(function () {\n func.apply(that, args || [])\n }, wait || 0)\n )\n },\n\n imageFactory: function (obj, callback) {\n var that = this\n var img = this.imagePrototype.cloneNode(false)\n var url = obj\n var backgroundSize = this.options.stretchImages\n var called\n var element\n var title\n var altText\n /**\n * Wraps the callback function for the load/error event\n *\n * @param {event} event load/error event\n * @returns {number} timeout ID\n */\n function callbackWrapper(event) {\n if (!called) {\n event = {\n type: event.type,\n target: element\n }\n if (!element.parentNode) {\n // Fix for IE7 firing the load event for\n // cached images before the element could\n // be added to the DOM:\n return that.setTimeout(callbackWrapper, [event])\n }\n called = true\n $(img).off('load error', callbackWrapper)\n if (backgroundSize) {\n if (event.type === 'load') {\n element.style.background = 'url(\"' + url + '\") center no-repeat'\n element.style.backgroundSize = backgroundSize\n }\n }\n callback(event)\n }\n }\n if (typeof url !== 'string') {\n url = this.getItemProperty(obj, this.options.urlProperty)\n title = this.getItemProperty(obj, this.options.titleProperty)\n altText =\n this.getItemProperty(obj, this.options.altTextProperty) || title\n }\n if (backgroundSize === true) {\n backgroundSize = 'contain'\n }\n backgroundSize =\n this.support.backgroundSize &&\n this.support.backgroundSize[backgroundSize] &&\n backgroundSize\n if (backgroundSize) {\n element = this.elementPrototype.cloneNode(false)\n } else {\n element = img\n img.draggable = false\n }\n if (title) {\n element.title = title\n }\n if (altText) {\n element.alt = altText\n }\n $(img).on('load error', callbackWrapper)\n img.src = url\n return element\n },\n\n createElement: function (obj, callback) {\n var type = obj && this.getItemProperty(obj, this.options.typeProperty)\n var factory =\n (type && this[type.split('/')[0] + 'Factory']) || this.imageFactory\n var element = obj && factory.call(this, obj, callback)\n var srcset = this.getItemProperty(obj, this.options.srcsetProperty)\n if (!element) {\n element = this.elementPrototype.cloneNode(false)\n this.setTimeout(callback, [\n {\n type: 'error',\n target: element\n }\n ])\n }\n if (srcset) {\n element.setAttribute('srcset', srcset)\n }\n $(element).addClass(this.options.slideContentClass)\n return element\n },\n\n loadElement: function (index) {\n if (!this.elements[index]) {\n if (this.slides[index].firstChild) {\n this.elements[index] = $(this.slides[index]).hasClass(\n this.options.slideErrorClass\n )\n ? 3\n : 2\n } else {\n this.elements[index] = 1 // Loading\n $(this.slides[index]).addClass(this.options.slideLoadingClass)\n this.slides[index].appendChild(\n this.createElement(this.list[index], this.proxyListener)\n )\n }\n }\n },\n\n loadElements: function (index) {\n var limit = Math.min(this.num, this.options.preloadRange * 2 + 1)\n var j = index\n var i\n for (i = 0; i < limit; i += 1) {\n // First load the current slide element (0),\n // then the next one (+1),\n // then the previous one (-2),\n // then the next after next (+2), etc.:\n j += i * (i % 2 === 0 ? -1 : 1)\n // Connect the ends of the list to load slide elements for\n // continuous navigation:\n j = this.circle(j)\n this.loadElement(j)\n }\n },\n\n unloadElements: function (index) {\n var i, diff\n for (i in this.elements) {\n if (Object.prototype.hasOwnProperty.call(this.elements, i)) {\n diff = Math.abs(index - i)\n if (\n diff > this.options.preloadRange &&\n diff + this.options.preloadRange < this.num\n ) {\n this.unloadSlide(i)\n delete this.elements[i]\n }\n }\n }\n },\n\n addSlide: function (index) {\n var slide = this.slidePrototype.cloneNode(false)\n slide.setAttribute('data-index', index)\n this.slidesContainer[0].appendChild(slide)\n this.slides.push(slide)\n },\n\n positionSlide: function (index) {\n var slide = this.slides[index]\n slide.style.width = this.slideWidth + 'px'\n if (this.support.transform) {\n slide.style.left = index * -this.slideWidth + 'px'\n this.move(\n index,\n this.index > index\n ? -this.slideWidth\n : this.index < index\n ? this.slideWidth\n : 0,\n 0\n )\n }\n },\n\n initSlides: function (reload) {\n var clearSlides, i\n if (!reload) {\n this.positions = []\n this.positions.length = this.num\n this.elements = {}\n this.imagePrototype = document.createElement('img')\n this.elementPrototype = document.createElement('div')\n this.slidePrototype = document.createElement('div')\n $(this.slidePrototype).addClass(this.options.slideClass)\n this.slides = this.slidesContainer[0].children\n clearSlides =\n this.options.clearSlides || this.slides.length !== this.num\n }\n this.slideWidth = this.container[0].clientWidth\n this.slideHeight = this.container[0].clientHeight\n this.slidesContainer[0].style.width = this.num * this.slideWidth + 'px'\n if (clearSlides) {\n this.resetSlides()\n }\n for (i = 0; i < this.num; i += 1) {\n if (clearSlides) {\n this.addSlide(i)\n }\n this.positionSlide(i)\n }\n // Reposition the slides before and after the given index:\n if (this.options.continuous && this.support.transform) {\n this.move(this.circle(this.index - 1), -this.slideWidth, 0)\n this.move(this.circle(this.index + 1), this.slideWidth, 0)\n }\n if (!this.support.transform) {\n this.slidesContainer[0].style.left =\n this.index * -this.slideWidth + 'px'\n }\n },\n\n unloadSlide: function (index) {\n var slide, firstChild\n slide = this.slides[index]\n firstChild = slide.firstChild\n if (firstChild !== null) {\n slide.removeChild(firstChild)\n }\n },\n\n unloadAllSlides: function () {\n var i, len\n for (i = 0, len = this.slides.length; i < len; i++) {\n this.unloadSlide(i)\n }\n },\n\n toggleControls: function () {\n var controlsClass = this.options.controlsClass\n if (this.container.hasClass(controlsClass)) {\n this.container.removeClass(controlsClass)\n } else {\n this.container.addClass(controlsClass)\n }\n },\n\n toggleSlideshow: function () {\n if (!this.interval) {\n this.play()\n } else {\n this.pause()\n }\n },\n\n getNodeIndex: function (element) {\n return parseInt(element.getAttribute('data-index'), 10)\n },\n\n getNestedProperty: function (obj, property) {\n property.replace(\n // Matches native JavaScript notation in a String,\n // e.g. '[\"doubleQuoteProp\"].dotProp[2]'\n // eslint-disable-next-line no-useless-escape\n /\\[(?:'([^']+)'|\"([^\"]+)\"|(\\d+))\\]|(?:(?:^|\\.)([^\\.\\[]+))/g,\n function (str, singleQuoteProp, doubleQuoteProp, arrayIndex, dotProp) {\n var prop =\n dotProp ||\n singleQuoteProp ||\n doubleQuoteProp ||\n (arrayIndex && parseInt(arrayIndex, 10))\n if (str && obj) {\n obj = obj[prop]\n }\n }\n )\n return obj\n },\n\n getDataProperty: function (obj, property) {\n var key\n var prop\n if (obj.dataset) {\n key = property.replace(/-([a-z])/g, function (_, b) {\n return b.toUpperCase()\n })\n prop = obj.dataset[key]\n } else if (obj.getAttribute) {\n prop = obj.getAttribute(\n 'data-' + property.replace(/([A-Z])/g, '-$1').toLowerCase()\n )\n }\n if (typeof prop === 'string') {\n // eslint-disable-next-line no-useless-escape\n if (\n /^(true|false|null|-?\\d+(\\.\\d+)?|\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])$/.test(prop)\n ) {\n try {\n return $.parseJSON(prop)\n } catch (ignore) {\n // ignore JSON parsing errors\n }\n }\n return prop\n }\n },\n\n getItemProperty: function (obj, property) {\n var prop = this.getDataProperty(obj, property)\n if (prop === undefined) {\n prop = obj[property]\n }\n if (prop === undefined) {\n prop = this.getNestedProperty(obj, property)\n }\n return prop\n },\n\n initStartIndex: function () {\n var index = this.options.index\n var urlProperty = this.options.urlProperty\n var i\n // Check if the index is given as a list object:\n if (index && typeof index !== 'number') {\n for (i = 0; i < this.num; i += 1) {\n if (\n this.list[i] === index ||\n this.getItemProperty(this.list[i], urlProperty) ===\n this.getItemProperty(index, urlProperty)\n ) {\n index = i\n break\n }\n }\n }\n // Make sure the index is in the list range:\n this.index = this.circle(parseInt(index, 10) || 0)\n },\n\n initEventListeners: function () {\n var that = this\n var slidesContainer = this.slidesContainer\n /**\n * Proxy listener\n *\n * @param {event} event original event\n */\n function proxyListener(event) {\n var type =\n that.support.transition && that.support.transition.end === event.type\n ? 'transitionend'\n : event.type\n that['on' + type](event)\n }\n $(window).on('resize', proxyListener)\n $(window).on('hashchange', proxyListener)\n $(document.body).on('keydown', proxyListener)\n this.container.on('click', proxyListener)\n if (this.support.touch) {\n slidesContainer.on(\n 'touchstart touchmove touchend touchcancel',\n proxyListener\n )\n } else if (this.options.emulateTouchEvents && this.support.transition) {\n slidesContainer.on(\n 'mousedown mousemove mouseup mouseout',\n proxyListener\n )\n }\n if (this.support.transition) {\n slidesContainer.on(this.support.transition.end, proxyListener)\n }\n this.proxyListener = proxyListener\n },\n\n destroyEventListeners: function () {\n var slidesContainer = this.slidesContainer\n var proxyListener = this.proxyListener\n $(window).off('resize', proxyListener)\n $(document.body).off('keydown', proxyListener)\n this.container.off('click', proxyListener)\n if (this.support.touch) {\n slidesContainer.off(\n 'touchstart touchmove touchend touchcancel',\n proxyListener\n )\n } else if (this.options.emulateTouchEvents && this.support.transition) {\n slidesContainer.off(\n 'mousedown mousemove mouseup mouseout',\n proxyListener\n )\n }\n if (this.support.transition) {\n slidesContainer.off(this.support.transition.end, proxyListener)\n }\n },\n\n handleOpen: function () {\n if (this.options.onopened) {\n this.options.onopened.call(this)\n }\n },\n\n initWidget: function () {\n var that = this\n /**\n * Open handler\n *\n * @param {event} event Gallery open event\n */\n function openHandler(event) {\n if (event.target === that.container[0]) {\n that.container.off(that.support.transition.end, openHandler)\n that.handleOpen()\n }\n }\n this.container = $(this.options.container)\n if (!this.container.length) {\n this.console.log(\n 'blueimp Gallery: Widget container not found.',\n this.options.container\n )\n return false\n }\n this.slidesContainer = this.container\n .find(this.options.slidesContainer)\n .first()\n if (!this.slidesContainer.length) {\n this.console.log(\n 'blueimp Gallery: Slides container not found.',\n this.options.slidesContainer\n )\n return false\n }\n this.titleElement = this.container.find(this.options.titleElement).first()\n if (this.num === 1) {\n this.container.addClass(this.options.singleClass)\n }\n if (this.options.onopen) {\n this.options.onopen.call(this)\n }\n if (this.support.transition && this.options.displayTransition) {\n this.container.on(this.support.transition.end, openHandler)\n } else {\n this.handleOpen()\n }\n if (this.options.hidePageScrollbars) {\n // Hide the page scrollbars:\n this.bodyOverflowStyle = document.body.style.overflow\n document.body.style.overflow = 'hidden'\n }\n this.container[0].style.display = 'block'\n this.initSlides()\n this.container.addClass(this.options.displayClass)\n },\n\n initOptions: function (options) {\n // Create a copy of the prototype options:\n this.options = $.extend({}, this.options)\n // Check if carousel mode is enabled:\n if (\n (options && options.carousel) ||\n (this.options.carousel && (!options || options.carousel !== false))\n ) {\n $.extend(this.options, this.carouselOptions)\n }\n // Override any given options:\n $.extend(this.options, options)\n if (this.num < 3) {\n // 1 or 2 slides cannot be displayed continuous,\n // remember the original option by setting to null instead of false:\n this.options.continuous = this.options.continuous ? null : false\n }\n if (!this.support.transition) {\n this.options.emulateTouchEvents = false\n }\n if (this.options.event) {\n this.preventDefault(this.options.event)\n }\n }\n })\n\n return Gallery\n})\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","/*\n * blueimp Gallery Fullscreen JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper', './blueimp-gallery'], factory)\n } else {\n // Browser globals:\n factory(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)\n }\n})(function ($, Gallery) {\n 'use strict'\n\n var galleryPrototype = Gallery.prototype\n\n $.extend(galleryPrototype.options, {\n // Defines if the gallery should open in fullscreen mode:\n fullScreen: false\n })\n\n var initialize = galleryPrototype.initialize\n var close = galleryPrototype.close\n\n $.extend(galleryPrototype, {\n getFullScreenElement: function () {\n return (\n document.fullscreenElement ||\n document.webkitFullscreenElement ||\n document.mozFullScreenElement ||\n document.msFullscreenElement\n )\n },\n\n requestFullScreen: function (element) {\n if (element.requestFullscreen) {\n element.requestFullscreen()\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen()\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen()\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen()\n }\n },\n\n exitFullScreen: function () {\n if (document.exitFullscreen) {\n document.exitFullscreen()\n } else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen()\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n },\n\n initialize: function () {\n initialize.call(this)\n if (this.options.fullScreen && !this.getFullScreenElement()) {\n this.requestFullScreen(this.container[0])\n }\n },\n\n close: function () {\n if (this.getFullScreenElement() === this.container[0]) {\n this.exitFullScreen()\n }\n close.call(this)\n }\n })\n\n return Gallery\n})\n","/*\n * blueimp Gallery YouTube Video Factory JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define, YT */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper', './blueimp-gallery-video'], factory)\n } else {\n // Browser globals:\n factory(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)\n }\n})(function ($, Gallery) {\n 'use strict'\n\n if (!window.postMessage) {\n return Gallery\n }\n\n var galleryPrototype = Gallery.prototype\n\n $.extend(galleryPrototype.options, {\n // The list object property (or data attribute) with the YouTube video id:\n youTubeVideoIdProperty: 'youtube',\n // Optional object with parameters passed to the YouTube video player:\n // https://developers.google.com/youtube/player_parameters\n youTubePlayerVars: {\n wmode: 'transparent'\n },\n // Require a click on the native YouTube player for the initial playback:\n youTubeClickToPlay: true\n })\n\n var textFactory =\n galleryPrototype.textFactory || galleryPrototype.imageFactory\n var YouTubePlayer = function (videoId, playerVars, clickToPlay) {\n this.videoId = videoId\n this.playerVars = playerVars\n this.clickToPlay = clickToPlay\n this.element = document.createElement('div')\n this.listeners = {}\n }\n\n $.extend(YouTubePlayer.prototype, {\n canPlayType: function () {\n return true\n },\n\n on: function (type, func) {\n this.listeners[type] = func\n return this\n },\n\n loadAPI: function () {\n var that = this\n var onYouTubeIframeAPIReady = window.onYouTubeIframeAPIReady\n var apiUrl = '//www.youtube.com/iframe_api'\n var scriptTags = document.getElementsByTagName('script')\n var i = scriptTags.length\n var scriptTag\n window.onYouTubeIframeAPIReady = function () {\n if (onYouTubeIframeAPIReady) {\n onYouTubeIframeAPIReady.apply(this)\n }\n if (that.playOnReady) {\n that.play()\n }\n }\n while (i) {\n i -= 1\n if (scriptTags[i].src === apiUrl) {\n return\n }\n }\n scriptTag = document.createElement('script')\n scriptTag.src = apiUrl\n scriptTags[0].parentNode.insertBefore(scriptTag, scriptTags[0])\n },\n\n onReady: function () {\n this.ready = true\n if (this.playOnReady) {\n this.play()\n }\n },\n\n onPlaying: function () {\n if (this.playStatus < 2) {\n this.listeners.playing()\n this.playStatus = 2\n }\n },\n\n onPause: function () {\n galleryPrototype.setTimeout.call(this, this.checkSeek, null, 2000)\n },\n\n checkSeek: function () {\n if (\n this.stateChange === YT.PlayerState.PAUSED ||\n this.stateChange === YT.PlayerState.ENDED\n ) {\n // check if current state change is actually paused\n this.listeners.pause()\n delete this.playStatus\n }\n },\n\n onStateChange: function (event) {\n switch (event.data) {\n case YT.PlayerState.PLAYING:\n this.hasPlayed = true\n this.onPlaying()\n break\n case YT.PlayerState.PAUSED:\n case YT.PlayerState.ENDED:\n this.onPause()\n break\n }\n // Save most recent state change to this.stateChange\n this.stateChange = event.data\n },\n\n onError: function (event) {\n this.listeners.error(event)\n },\n\n play: function () {\n var that = this\n if (!this.playStatus) {\n this.listeners.play()\n this.playStatus = 1\n }\n if (this.ready) {\n if (\n !this.hasPlayed &&\n (this.clickToPlay ||\n (window.navigator &&\n /iP(hone|od|ad)/.test(window.navigator.platform)))\n ) {\n // Manually trigger the playing callback if clickToPlay\n // is enabled and to workaround a limitation in iOS,\n // which requires synchronous user interaction to start\n // the video playback:\n this.onPlaying()\n } else {\n this.player.playVideo()\n }\n } else {\n this.playOnReady = true\n if (!(window.YT && YT.Player)) {\n this.loadAPI()\n } else if (!this.player) {\n this.player = new YT.Player(this.element, {\n videoId: this.videoId,\n playerVars: this.playerVars,\n events: {\n onReady: function () {\n that.onReady()\n },\n onStateChange: function (event) {\n that.onStateChange(event)\n },\n onError: function (event) {\n that.onError(event)\n }\n }\n })\n }\n }\n },\n\n pause: function () {\n if (this.ready) {\n this.player.pauseVideo()\n } else if (this.playStatus) {\n delete this.playOnReady\n this.listeners.pause()\n delete this.playStatus\n }\n }\n })\n\n $.extend(galleryPrototype, {\n YouTubePlayer: YouTubePlayer,\n\n textFactory: function (obj, callback) {\n var options = this.options\n var videoId = this.getItemProperty(obj, options.youTubeVideoIdProperty)\n if (videoId) {\n if (this.getItemProperty(obj, options.urlProperty) === undefined) {\n obj[options.urlProperty] = '//www.youtube.com/watch?v=' + videoId\n }\n if (\n this.getItemProperty(obj, options.videoPosterProperty) === undefined\n ) {\n obj[options.videoPosterProperty] =\n '//img.youtube.com/vi/' + videoId + '/maxresdefault.jpg'\n }\n return this.videoFactory(\n obj,\n callback,\n new YouTubePlayer(\n videoId,\n options.youTubePlayerVars,\n options.youTubeClickToPlay\n )\n )\n }\n return textFactory.call(this, obj, callback)\n }\n })\n\n return Gallery\n})\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","/*\n * blueimp helper JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define */\n\n/* eslint-disable no-param-reassign */\n\n;(function () {\n 'use strict'\n\n /**\n * Object.assign polyfill\n *\n * @param {object} obj1 First object\n * @param {object} obj2 Second object\n * @returns {object} Merged object\n */\n function extend(obj1, obj2) {\n var prop\n for (prop in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, prop)) {\n obj1[prop] = obj2[prop]\n }\n }\n return obj1\n }\n /**\n * Helper constructor\n *\n * @class\n * @param {*} query jQuery type query argument\n */\n function Helper(query) {\n if (!this || this.find !== Helper.prototype.find) {\n // Called as function instead of as constructor,\n // so we simply return a new instance:\n return new Helper(query)\n }\n this.length = 0\n if (query) {\n if (typeof query === 'string') {\n query = this.find(query)\n }\n if (query.nodeType || query === query.window) {\n // Single HTML element\n this.length = 1\n this[0] = query\n } else {\n // HTML element collection\n var i = query.length\n this.length = i\n while (i) {\n i -= 1\n this[i] = query[i]\n }\n }\n }\n }\n\n Helper.extend = extend\n\n Helper.contains = function (container, element) {\n do {\n element = element.parentNode\n if (element === container) {\n return true\n }\n } while (element)\n return false\n }\n\n Helper.parseJSON = function (string) {\n return window.JSON && JSON.parse(string)\n }\n\n extend(Helper.prototype, {\n find: function (query) {\n var container = this[0] || document\n if (typeof query === 'string') {\n if (container.querySelectorAll) {\n query = container.querySelectorAll(query)\n } else if (query.charAt(0) === '#') {\n query = container.getElementById(query.slice(1))\n } else {\n query = container.getElementsByTagName(query)\n }\n }\n return new Helper(query)\n },\n\n hasClass: function (className) {\n if (!this[0]) {\n return false\n }\n return new RegExp('(^|\\\\s+)' + className + '(\\\\s+|$)').test(\n this[0].className\n )\n },\n\n addClass: function (className) {\n var i = this.length\n var element\n while (i) {\n i -= 1\n element = this[i]\n if (!element.className) {\n element.className = className\n return this\n }\n if (this.hasClass(className)) {\n return this\n }\n element.className += ' ' + className\n }\n return this\n },\n\n removeClass: function (className) {\n var regexp = new RegExp('(^|\\\\s+)' + className + '(\\\\s+|$)')\n var i = this.length\n var element\n while (i) {\n i -= 1\n element = this[i]\n element.className = element.className.replace(regexp, ' ')\n }\n return this\n },\n\n on: function (eventName, handler) {\n var eventNames = eventName.split(/\\s+/)\n var i\n var element\n while (eventNames.length) {\n eventName = eventNames.shift()\n i = this.length\n while (i) {\n i -= 1\n element = this[i]\n if (element.addEventListener) {\n element.addEventListener(eventName, handler, false)\n } else if (element.attachEvent) {\n element.attachEvent('on' + eventName, handler)\n }\n }\n }\n return this\n },\n\n off: function (eventName, handler) {\n var eventNames = eventName.split(/\\s+/)\n var i\n var element\n while (eventNames.length) {\n eventName = eventNames.shift()\n i = this.length\n while (i) {\n i -= 1\n element = this[i]\n if (element.removeEventListener) {\n element.removeEventListener(eventName, handler, false)\n } else if (element.detachEvent) {\n element.detachEvent('on' + eventName, handler)\n }\n }\n }\n return this\n },\n\n empty: function () {\n var i = this.length\n var element\n while (i) {\n i -= 1\n element = this[i]\n while (element.hasChildNodes()) {\n element.removeChild(element.lastChild)\n }\n }\n return this\n },\n\n first: function () {\n return new Helper(this[0])\n }\n })\n\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return Helper\n })\n } else {\n window.blueimp = window.blueimp || {}\n window.blueimp.helper = Helper\n }\n})()\n","/*\n * blueimp Gallery Video Factory JS\n * https://github.com/blueimp/Gallery\n *\n * Copyright 2013, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n */\n\n/* global define */\n\n;(function (factory) {\n 'use strict'\n if (typeof define === 'function' && define.amd) {\n // Register as an anonymous AMD module:\n define(['./blueimp-helper', './blueimp-gallery'], factory)\n } else {\n // Browser globals:\n factory(window.blueimp.helper || window.jQuery, window.blueimp.Gallery)\n }\n})(function ($, Gallery) {\n 'use strict'\n\n var galleryPrototype = Gallery.prototype\n\n $.extend(galleryPrototype.options, {\n // The class for video content elements:\n videoContentClass: 'video-content',\n // The class for video when it is loading:\n videoLoadingClass: 'video-loading',\n // The class for video when it is playing:\n videoPlayingClass: 'video-playing',\n // The list object property (or data attribute) for the video poster URL:\n videoPosterProperty: 'poster',\n // The list object property (or data attribute) for the video sources array:\n videoSourcesProperty: 'sources'\n })\n\n var handleSlide = galleryPrototype.handleSlide\n\n $.extend(galleryPrototype, {\n handleSlide: function (index) {\n handleSlide.call(this, index)\n if (this.playingVideo) {\n this.playingVideo.pause()\n }\n },\n\n videoFactory: function (obj, callback, videoInterface) {\n var that = this\n var options = this.options\n var videoContainerNode = this.elementPrototype.cloneNode(false)\n var videoContainer = $(videoContainerNode)\n var errorArgs = [\n {\n type: 'error',\n target: videoContainerNode\n }\n ]\n var video = videoInterface || document.createElement('video')\n var url = this.getItemProperty(obj, options.urlProperty)\n var type = this.getItemProperty(obj, options.typeProperty)\n var title = this.getItemProperty(obj, options.titleProperty)\n var altText =\n this.getItemProperty(obj, this.options.altTextProperty) || title\n var posterUrl = this.getItemProperty(obj, options.videoPosterProperty)\n var posterImage\n var sources = this.getItemProperty(obj, options.videoSourcesProperty)\n var source\n var playMediaControl\n var isLoading\n var hasControls\n videoContainer.addClass(options.videoContentClass)\n if (title) {\n videoContainerNode.title = title\n }\n if (video.canPlayType) {\n if (url && type && video.canPlayType(type)) {\n video.src = url\n } else if (sources) {\n while (sources.length) {\n source = sources.shift()\n url = this.getItemProperty(source, options.urlProperty)\n type = this.getItemProperty(source, options.typeProperty)\n if (url && type && video.canPlayType(type)) {\n video.src = url\n break\n }\n }\n }\n }\n if (posterUrl) {\n video.poster = posterUrl\n posterImage = this.imagePrototype.cloneNode(false)\n $(posterImage).addClass(options.toggleClass)\n posterImage.src = posterUrl\n posterImage.draggable = false\n posterImage.alt = altText\n videoContainerNode.appendChild(posterImage)\n }\n playMediaControl = document.createElement('a')\n playMediaControl.setAttribute('target', '_blank')\n if (!videoInterface) {\n playMediaControl.setAttribute('download', title)\n }\n playMediaControl.href = url\n if (video.src) {\n video.controls = true\n ;(videoInterface || $(video))\n .on('error', function () {\n that.setTimeout(callback, errorArgs)\n })\n .on('pause', function () {\n if (video.seeking) return\n isLoading = false\n videoContainer\n .removeClass(that.options.videoLoadingClass)\n .removeClass(that.options.videoPlayingClass)\n if (hasControls) {\n that.container.addClass(that.options.controlsClass)\n }\n delete that.playingVideo\n if (that.interval) {\n that.play()\n }\n })\n .on('playing', function () {\n isLoading = false\n videoContainer\n .removeClass(that.options.videoLoadingClass)\n .addClass(that.options.videoPlayingClass)\n if (that.container.hasClass(that.options.controlsClass)) {\n hasControls = true\n that.container.removeClass(that.options.controlsClass)\n } else {\n hasControls = false\n }\n })\n .on('play', function () {\n window.clearTimeout(that.timeout)\n isLoading = true\n videoContainer.addClass(that.options.videoLoadingClass)\n that.playingVideo = video\n })\n $(playMediaControl).on('click', function (event) {\n that.preventDefault(event)\n if (isLoading) {\n video.pause()\n } else {\n video.play()\n }\n })\n videoContainerNode.appendChild(\n (videoInterface && videoInterface.element) || video\n )\n }\n videoContainerNode.appendChild(playMediaControl)\n this.setTimeout(callback, [\n {\n type: 'load',\n target: videoContainerNode\n }\n ])\n return videoContainerNode\n }\n })\n\n return Gallery\n})\n"],"sourceRoot":""}